|
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