|
1 | 1 | import { Component } from '@angular/core';
|
2 |
| -import { DomSanitizer } from '@angular/platform-browser'; |
3 |
| -import { IconDirective } from '@coreui/icons-angular'; |
| 2 | +import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; |
4 | 3 | import { DocsExampleComponent } from '@docs-components/public-api';
|
5 |
| -import { RowComponent, ColComponent, TextColorDirective, CardComponent, CardHeaderComponent, CardBodyComponent, ThemeDirective, CarouselComponent, CarouselInnerComponent, CarouselItemComponent, CarouselControlComponent, CarouselIndicatorsComponent, CarouselCaptionComponent } from '@coreui/angular'; |
| 4 | +import { |
| 5 | + CardBodyComponent, |
| 6 | + CardComponent, |
| 7 | + CardHeaderComponent, |
| 8 | + CarouselCaptionComponent, |
| 9 | + CarouselComponent, |
| 10 | + CarouselControlComponent, |
| 11 | + CarouselIndicatorsComponent, |
| 12 | + CarouselInnerComponent, |
| 13 | + CarouselItemComponent, |
| 14 | + ColComponent, |
| 15 | + RowComponent, |
| 16 | + TemplateIdDirective, |
| 17 | + TextColorDirective, |
| 18 | + ThemeDirective |
| 19 | +} from '@coreui/angular'; |
| 20 | +import { IconDirective } from '@coreui/icons-angular'; |
| 21 | + |
| 22 | +export type Slide = { id: number, src: SafeUrl | string, title: string, subtitle: string }; |
6 | 23 |
|
7 | 24 | @Component({
|
8 |
| - selector: 'app-carousels', |
9 |
| - templateUrl: './carousels.component.html', |
10 |
| - styleUrls: ['./carousels.component.scss'], |
11 |
| - imports: [RowComponent, ColComponent, TextColorDirective, CardComponent, CardHeaderComponent, CardBodyComponent, DocsExampleComponent, ThemeDirective, CarouselComponent, CarouselInnerComponent, CarouselItemComponent, CarouselControlComponent, IconDirective, CarouselIndicatorsComponent, CarouselCaptionComponent] |
| 25 | + selector: 'app-carousels', |
| 26 | + templateUrl: './carousels.component.html', |
| 27 | + styleUrls: ['./carousels.component.scss'], |
| 28 | + imports: [RowComponent, ColComponent, TextColorDirective, CardComponent, CardHeaderComponent, CardBodyComponent, DocsExampleComponent, ThemeDirective, CarouselComponent, CarouselInnerComponent, CarouselItemComponent, CarouselControlComponent, IconDirective, CarouselIndicatorsComponent, CarouselCaptionComponent, TemplateIdDirective] |
| 29 | + // providers: [{ provide: CarouselConfig, useClass: CarouselCustomConfig }] |
12 | 30 | })
|
13 | 31 | export class CarouselsComponent {
|
14 | 32 |
|
15 |
| - readonly imageSrc: string[] = [ |
16 |
| - 'assets/images/angular.jpg', |
17 |
| - 'assets/images/react.jpg', |
18 |
| - 'assets/images/vue.jpg', |
19 |
| - 'https://picsum.photos/id/1/800/400', |
20 |
| - 'https://picsum.photos/id/1026/800/400', |
21 |
| - 'https://picsum.photos/id/1031/800/400' |
22 |
| - ]; |
23 |
| - |
24 |
| - readonly slidesLight: string[] = [ |
25 |
| - 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1607923e7e2%20text%20%7B%20fill%3A%23AAA%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1607923e7e2%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23F5F5F5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22285.9296875%22%20y%3D%22217.75625%22%3EFirst%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', |
26 |
| - 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa20%20text%20%7B%20fill%3A%23BBB%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa20%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23EEE%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22247.3203125%22%20y%3D%22218.3%22%3ESecond%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', |
27 |
| - 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa21%20text%20%7B%20fill%3A%23999%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa21%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23E5E5E5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22277%22%20y%3D%22218.3%22%3EThird%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E' |
28 |
| - ]; |
29 |
| - |
30 |
| - readonly slides: any[][] = []; |
31 | 33 |
|
32 |
| - constructor( |
33 |
| - private domSanitizer: DomSanitizer |
34 |
| - ) { |
35 |
| - this.slides[0] = [ |
36 |
| - { |
37 |
| - id: 0, |
38 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[0]), |
39 |
| - title: 'First slide', |
40 |
| - subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
41 |
| - }, |
42 |
| - { |
43 |
| - id: 1, |
44 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[1]), |
45 |
| - title: 'Second slide', |
46 |
| - subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
47 |
| - }, |
48 |
| - { |
49 |
| - id: 2, |
50 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[2]), |
51 |
| - title: 'Third slide', |
52 |
| - subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
53 |
| - } |
54 |
| - ]; |
| 34 | + readonly imageSrc: string[] = ['assets/images/angular.jpg', 'assets/images/react.jpg', 'assets/images/vue.jpg', 'https://picsum.photos/id/1/800/400', 'https://picsum.photos/id/1026/800/400', 'https://picsum.photos/id/1031/800/400']; |
| 35 | + readonly slidesLight: string[] = ['data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1607923e7e2%20text%20%7B%20fill%3A%23AAA%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1607923e7e2%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23F5F5F5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22285.9296875%22%20y%3D%22217.75625%22%3EFirst%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa20%20text%20%7B%20fill%3A%23BBB%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa20%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23EEE%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22247.3203125%22%20y%3D%22218.3%22%3ESecond%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E', 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa21%20text%20%7B%20fill%3A%23999%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa21%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23E5E5E5%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22277%22%20y%3D%22218.3%22%3EThird%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E']; |
| 36 | + readonly slides: Slide[][] = []; |
55 | 37 |
|
56 |
| - this.slides[1] = [ |
57 |
| - { |
58 |
| - id: 0, |
59 |
| - src: this.imageSrc[3], |
60 |
| - title: 'First slide', |
61 |
| - subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
62 |
| - }, |
63 |
| - { |
64 |
| - id: 1, |
65 |
| - src: this.imageSrc[4], |
66 |
| - title: 'Second slide', |
67 |
| - subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
68 |
| - }, |
69 |
| - { |
70 |
| - id: 2, |
71 |
| - src: this.imageSrc[5], |
72 |
| - title: 'Third slide', |
73 |
| - subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
74 |
| - } |
75 |
| - ]; |
| 38 | + constructor(private domSanitizer: DomSanitizer) { |
| 39 | + this.slides[0] = [{ |
| 40 | + id: 0, |
| 41 | + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[0]), |
| 42 | + title: 'First slide', |
| 43 | + subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
| 44 | + }, { |
| 45 | + id: 1, |
| 46 | + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[1]), |
| 47 | + title: 'Second slide', |
| 48 | + subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
| 49 | + }, { |
| 50 | + id: 2, |
| 51 | + src: domSanitizer.bypassSecurityTrustUrl(this.imageSrc[2]), |
| 52 | + title: 'Third slide', |
| 53 | + subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
| 54 | + }]; |
76 | 55 |
|
77 |
| - this.slides[2] = [ |
78 |
| - { |
79 |
| - id: 0, |
80 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[0]), |
81 |
| - title: 'First slide', |
82 |
| - subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
83 |
| - }, |
84 |
| - { |
85 |
| - id: 1, |
86 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[1]), |
87 |
| - title: 'Second slide', |
88 |
| - subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
89 |
| - }, |
90 |
| - { |
91 |
| - id: 2, |
92 |
| - src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[2]), |
93 |
| - title: 'Third slide', |
94 |
| - subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
95 |
| - } |
96 |
| - ]; |
| 56 | + this.slides[1] = [{ |
| 57 | + id: 0, src: this.imageSrc[3], title: 'First slide', subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
| 58 | + }, { |
| 59 | + id: 1, src: this.imageSrc[4], title: 'Second slide', subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
| 60 | + }, { |
| 61 | + id: 2, src: this.imageSrc[5], title: 'Third slide', subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
| 62 | + }]; |
97 | 63 |
|
| 64 | + this.slides[2] = [{ |
| 65 | + id: 0, |
| 66 | + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[0]), |
| 67 | + title: 'First slide', |
| 68 | + subtitle: 'Nulla vitae elit libero, a pharetra augue mollis interdum.' |
| 69 | + }, { |
| 70 | + id: 1, |
| 71 | + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[1]), |
| 72 | + title: 'Second slide', |
| 73 | + subtitle: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' |
| 74 | + }, { |
| 75 | + id: 2, |
| 76 | + src: domSanitizer.bypassSecurityTrustUrl(this.slidesLight[2]), |
| 77 | + title: 'Third slide', |
| 78 | + subtitle: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.' |
| 79 | + }]; |
98 | 80 | }
|
99 | 81 |
|
100 | 82 | onItemChange($event: any): void {
|
|
0 commit comments