@semantic-components/carousel 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/fesm2022/semantic-components-carousel.mjs +210 -0
- package/fesm2022/semantic-components-carousel.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/lib/carousel/carousel-container.d.ts +7 -0
- package/lib/carousel/carousel-item.d.ts +8 -0
- package/lib/carousel/carousel-items.d.ts +8 -0
- package/lib/carousel/carousel-next.d.ts +12 -0
- package/lib/carousel/carousel-previous.d.ts +12 -0
- package/lib/carousel/carousel.d.ts +24 -0
- package/lib/carousel/index.d.ts +6 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, input, computed, signal, afterNextRender, ChangeDetectionStrategy, ViewEncapsulation, Component, linkedSignal } from '@angular/core';
|
|
3
|
+
import { cn } from '@semantic-components/utils';
|
|
4
|
+
import EmblaCarousel from 'embla-carousel';
|
|
5
|
+
import { ScButtonBase, buttonVariants } from '@semantic-components/ui';
|
|
6
|
+
|
|
7
|
+
class ScCarousel {
|
|
8
|
+
host = inject(ElementRef);
|
|
9
|
+
classInput = input('', {
|
|
10
|
+
alias: 'class',
|
|
11
|
+
});
|
|
12
|
+
class = computed(() => cn('overflow-hidden', this.classInput()));
|
|
13
|
+
orientation = input('horizontal');
|
|
14
|
+
optionsInput = input({}, {
|
|
15
|
+
alias: 'options',
|
|
16
|
+
});
|
|
17
|
+
options = computed(() => {
|
|
18
|
+
const opts = this.optionsInput();
|
|
19
|
+
return {
|
|
20
|
+
...opts,
|
|
21
|
+
axis: this.orientation() === 'horizontal' ? 'x' : 'y',
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
plugins = input([]);
|
|
25
|
+
canScrollPrev = signal(false);
|
|
26
|
+
canScrollNext = signal(false);
|
|
27
|
+
emblaApi;
|
|
28
|
+
get api() {
|
|
29
|
+
return this.emblaApi;
|
|
30
|
+
}
|
|
31
|
+
constructor() {
|
|
32
|
+
afterNextRender(() => {
|
|
33
|
+
this.emblaApi = EmblaCarousel(this.host.nativeElement, this.options(), this.plugins());
|
|
34
|
+
this.emblaApi
|
|
35
|
+
.on('select', this.togglePrevNextBtnsState)
|
|
36
|
+
.on('init', this.togglePrevNextBtnsState)
|
|
37
|
+
.on('reInit', this.togglePrevNextBtnsState);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
togglePrevNextBtnsState = () => {
|
|
41
|
+
if (this.emblaApi.canScrollPrev()) {
|
|
42
|
+
this.canScrollPrev.set(true);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.canScrollPrev.set(false);
|
|
46
|
+
}
|
|
47
|
+
if (this.emblaApi.canScrollNext()) {
|
|
48
|
+
this.canScrollNext.set(true);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.canScrollNext.set(false);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
handleKeydown(event) {
|
|
55
|
+
if (event.key === 'ArrowLeft') {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
this.scrollPrev();
|
|
58
|
+
}
|
|
59
|
+
else if (event.key === 'ArrowRight') {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
this.scrollNext();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
scrollPrev() {
|
|
65
|
+
this.emblaApi.scrollPrev();
|
|
66
|
+
}
|
|
67
|
+
scrollNext() {
|
|
68
|
+
this.emblaApi.scrollNext();
|
|
69
|
+
}
|
|
70
|
+
ngOnDestroy() {
|
|
71
|
+
this.emblaApi.destroy();
|
|
72
|
+
}
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarousel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarousel, isStandalone: true, selector: "div[sc-carousel]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, optionsInput: { classPropertyName: "optionsInput", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, plugins: { classPropertyName: "plugins", publicName: "plugins", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "region", "aria-roledescription": "carousel" }, listeners: { "keydown": "handleKeydown($event)" }, properties: { "class": "class()" } }, ngImport: i0, template: `
|
|
75
|
+
<ng-content />
|
|
76
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarousel, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'div[sc-carousel]', imports: [], template: `
|
|
81
|
+
<ng-content />
|
|
82
|
+
`, host: {
|
|
83
|
+
role: 'region',
|
|
84
|
+
'aria-roledescription': 'carousel',
|
|
85
|
+
'[class]': 'class()',
|
|
86
|
+
'(keydown)': 'handleKeydown($event)',
|
|
87
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
88
|
+
}], ctorParameters: () => [] });
|
|
89
|
+
|
|
90
|
+
class ScCarouselContainer {
|
|
91
|
+
classInput = input('', {
|
|
92
|
+
alias: 'class',
|
|
93
|
+
});
|
|
94
|
+
class = computed(() => cn('relative', this.classInput()));
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarouselContainer, isStandalone: true, selector: "div[sc-carousel-container]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "class()" } }, ngImport: i0, template: `
|
|
97
|
+
<ng-content />
|
|
98
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselContainer, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'div[sc-carousel-container]', imports: [], template: `
|
|
103
|
+
<ng-content />
|
|
104
|
+
`, host: {
|
|
105
|
+
'[class]': 'class()',
|
|
106
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
107
|
+
}] });
|
|
108
|
+
|
|
109
|
+
class ScCarouselItems {
|
|
110
|
+
scCarousel = inject(ScCarousel);
|
|
111
|
+
classInput = input('', {
|
|
112
|
+
alias: 'class',
|
|
113
|
+
});
|
|
114
|
+
class = computed(() => cn('flex', this.scCarousel.orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this.classInput()));
|
|
115
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselItems, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarouselItems, isStandalone: true, selector: "div[sc-carousel-items]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "class()" } }, ngImport: i0, template: `
|
|
117
|
+
<ng-content />
|
|
118
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselItems, decorators: [{
|
|
121
|
+
type: Component,
|
|
122
|
+
args: [{ selector: 'div[sc-carousel-items]', imports: [], template: `
|
|
123
|
+
<ng-content />
|
|
124
|
+
`, host: {
|
|
125
|
+
'[class]': 'class()',
|
|
126
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
127
|
+
}] });
|
|
128
|
+
|
|
129
|
+
class ScCarouselItem {
|
|
130
|
+
scCarousel = inject(ScCarousel);
|
|
131
|
+
classInput = input('', {
|
|
132
|
+
alias: 'class',
|
|
133
|
+
});
|
|
134
|
+
class = computed(() => cn('min-w-0 shrink-0 grow-0 basis-full', this.scCarousel.orientation() === 'horizontal' ? 'pl-4' : 'pt-4', this.classInput()));
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarouselItem, isStandalone: true, selector: "div[sc-carousel-item]", inputs: { classInput: { classPropertyName: "classInput", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group", "aria-roledescription": "slide" }, properties: { "class": "class()" } }, ngImport: i0, template: `
|
|
137
|
+
<ng-content />
|
|
138
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
139
|
+
}
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselItem, decorators: [{
|
|
141
|
+
type: Component,
|
|
142
|
+
args: [{ selector: 'div[sc-carousel-item]', imports: [], template: `
|
|
143
|
+
<ng-content />
|
|
144
|
+
`, host: {
|
|
145
|
+
role: 'group',
|
|
146
|
+
'aria-roledescription': 'slide',
|
|
147
|
+
'[class]': 'class()',
|
|
148
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
149
|
+
}] });
|
|
150
|
+
|
|
151
|
+
class ScCarouselPrevious extends ScButtonBase {
|
|
152
|
+
scCarousel = inject(ScCarousel);
|
|
153
|
+
variantInput = input('outline');
|
|
154
|
+
sizeInput = input('icon');
|
|
155
|
+
class = computed(() => cn(buttonVariants({ variant: this.variant(), size: this.size() }), 'absolute h-8 w-8 rounded-full', this.scCarousel.orientation() === 'horizontal'
|
|
156
|
+
? '-left-12 top-1/2 -translate-y-1/2'
|
|
157
|
+
: '-top-12 left-1/2 -translate-x-1/2 rotate-90', this.classInput()));
|
|
158
|
+
disabled = linkedSignal(() => {
|
|
159
|
+
return !this.scCarousel.canScrollPrev();
|
|
160
|
+
});
|
|
161
|
+
scrollPrev() {
|
|
162
|
+
this.scCarousel.api.scrollPrev();
|
|
163
|
+
}
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselPrevious, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarouselPrevious, isStandalone: true, selector: "button[sc-carousel-previous]", inputs: { variantInput: { classPropertyName: "variantInput", publicName: "variantInput", isSignal: true, isRequired: false, transformFunction: null }, sizeInput: { classPropertyName: "sizeInput", publicName: "sizeInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "scrollPrev()" } }, usesInheritance: true, ngImport: i0, template: `
|
|
166
|
+
<ng-content />
|
|
167
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
168
|
+
}
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselPrevious, decorators: [{
|
|
170
|
+
type: Component,
|
|
171
|
+
args: [{ selector: 'button[sc-carousel-previous]', imports: [], template: `
|
|
172
|
+
<ng-content />
|
|
173
|
+
`, host: {
|
|
174
|
+
'(click)': 'scrollPrev()',
|
|
175
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
176
|
+
}] });
|
|
177
|
+
|
|
178
|
+
class ScCarouselNext extends ScButtonBase {
|
|
179
|
+
scCarousel = inject(ScCarousel);
|
|
180
|
+
variantInput = input('outline');
|
|
181
|
+
sizeInput = input('icon');
|
|
182
|
+
class = computed(() => cn(buttonVariants({ variant: this.variant(), size: this.size() }), 'absolute h-8 w-8 rounded-full', this.scCarousel.orientation() === 'horizontal'
|
|
183
|
+
? '-right-12 top-1/2 -translate-y-1/2'
|
|
184
|
+
: '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', this.classInput()));
|
|
185
|
+
disabled = linkedSignal(() => {
|
|
186
|
+
return !this.scCarousel.canScrollNext();
|
|
187
|
+
});
|
|
188
|
+
scrollNext() {
|
|
189
|
+
this.scCarousel.api.scrollNext();
|
|
190
|
+
}
|
|
191
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselNext, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
192
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ScCarouselNext, isStandalone: true, selector: "button[sc-carousel-next]", inputs: { variantInput: { classPropertyName: "variantInput", publicName: "variantInput", isSignal: true, isRequired: false, transformFunction: null }, sizeInput: { classPropertyName: "sizeInput", publicName: "sizeInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "scrollNext()" } }, usesInheritance: true, ngImport: i0, template: `
|
|
193
|
+
<ng-content />
|
|
194
|
+
`, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
195
|
+
}
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ScCarouselNext, decorators: [{
|
|
197
|
+
type: Component,
|
|
198
|
+
args: [{ selector: 'button[sc-carousel-next]', imports: [], template: `
|
|
199
|
+
<ng-content />
|
|
200
|
+
`, host: {
|
|
201
|
+
'(click)': 'scrollNext()',
|
|
202
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
203
|
+
}] });
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Generated bundle index. Do not edit.
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
export { ScCarousel, ScCarouselContainer, ScCarouselItem, ScCarouselItems, ScCarouselNext, ScCarouselPrevious };
|
|
210
|
+
//# sourceMappingURL=semantic-components-carousel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-components-carousel.mjs","sources":["../../../../libs/carousel/src/lib/carousel/carousel.ts","../../../../libs/carousel/src/lib/carousel/carousel-container.ts","../../../../libs/carousel/src/lib/carousel/carousel-items.ts","../../../../libs/carousel/src/lib/carousel/carousel-item.ts","../../../../libs/carousel/src/lib/carousel/carousel-previous.ts","../../../../libs/carousel/src/lib/carousel/carousel-next.ts","../../../../libs/carousel/src/semantic-components-carousel.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n afterNextRender,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { cn } from '@semantic-components/utils';\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType,\n} from 'embla-carousel';\n\n@Component({\n selector: 'div[sc-carousel]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n role: 'region',\n 'aria-roledescription': 'carousel',\n '[class]': 'class()',\n '(keydown)': 'handleKeydown($event)',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarousel implements OnDestroy {\n private readonly host = inject(ElementRef);\n\n readonly classInput = input<string>('', {\n alias: 'class',\n });\n\n protected readonly class = computed(() => cn('overflow-hidden', this.classInput()));\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly optionsInput = input<EmblaOptionsType>(\n {},\n {\n alias: 'options',\n },\n );\n\n readonly options = computed<EmblaOptionsType>(() => {\n const opts = this.optionsInput();\n\n return {\n ...opts,\n axis: this.orientation() === 'horizontal' ? 'x' : 'y',\n };\n });\n\n readonly plugins = input<EmblaPluginType[]>([]);\n\n readonly canScrollPrev = signal(false);\n\n readonly canScrollNext = signal(false);\n\n private emblaApi!: EmblaCarouselType;\n\n get api() {\n return this.emblaApi;\n }\n\n constructor() {\n afterNextRender(() => {\n this.emblaApi = EmblaCarousel(this.host.nativeElement, this.options(), this.plugins());\n\n this.emblaApi\n .on('select', this.togglePrevNextBtnsState)\n .on('init', this.togglePrevNextBtnsState)\n .on('reInit', this.togglePrevNextBtnsState);\n });\n }\n\n togglePrevNextBtnsState = (): void => {\n if (this.emblaApi.canScrollPrev()) {\n this.canScrollPrev.set(true);\n } else {\n this.canScrollPrev.set(false);\n }\n\n if (this.emblaApi.canScrollNext()) {\n this.canScrollNext.set(true);\n } else {\n this.canScrollNext.set(false);\n }\n };\n\n handleKeydown(event: KeyboardEvent) {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.scrollNext();\n }\n }\n\n private scrollPrev() {\n this.emblaApi.scrollPrev();\n }\n\n private scrollNext() {\n this.emblaApi.scrollNext();\n }\n\n ngOnDestroy() {\n this.emblaApi.destroy();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nimport { cn } from '@semantic-components/utils';\n\n@Component({\n selector: 'div[sc-carousel-container]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n '[class]': 'class()',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarouselContainer {\n readonly classInput = input<string>('', {\n alias: 'class',\n });\n\n protected readonly class = computed(() => cn('relative', this.classInput()));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nimport { cn } from '@semantic-components/utils';\n\nimport { ScCarousel } from './carousel';\n\n@Component({\n selector: 'div[sc-carousel-items]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n '[class]': 'class()',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarouselItems {\n private readonly scCarousel = inject(ScCarousel);\n\n readonly classInput = input<string>('', {\n alias: 'class',\n });\n\n protected readonly class = computed(() =>\n cn(\n 'flex',\n this.scCarousel.orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n this.classInput(),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nimport { cn } from '@semantic-components/utils';\n\nimport { ScCarousel } from './carousel';\n\n@Component({\n selector: 'div[sc-carousel-item]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n role: 'group',\n 'aria-roledescription': 'slide',\n '[class]': 'class()',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarouselItem {\n private readonly scCarousel = inject(ScCarousel);\n\n readonly classInput = input<string>('', {\n alias: 'class',\n });\n\n protected readonly class = computed(() =>\n cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n this.scCarousel.orientation() === 'horizontal' ? 'pl-4' : 'pt-4',\n this.classInput(),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\n\nimport { ButtonVariants, ScButtonBase, buttonVariants } from '@semantic-components/ui';\nimport { cn } from '@semantic-components/utils';\n\nimport { ScCarousel } from './carousel';\n\n@Component({\n selector: 'button[sc-carousel-previous]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n '(click)': 'scrollPrev()',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarouselPrevious extends ScButtonBase {\n private readonly scCarousel = inject(ScCarousel);\n\n override readonly variantInput = input<ButtonVariants['variant']>('outline');\n\n override readonly sizeInput = input<ButtonVariants['size']>('icon');\n\n protected override readonly class = computed(() =>\n cn(\n buttonVariants({ variant: this.variant(), size: this.size() }),\n 'absolute h-8 w-8 rounded-full',\n this.scCarousel.orientation() === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n this.classInput(),\n ),\n );\n\n protected override readonly disabled = linkedSignal(() => {\n return !this.scCarousel.canScrollPrev();\n });\n\n protected scrollPrev() {\n this.scCarousel.api.scrollPrev();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\n\nimport { ButtonVariants, ScButtonBase, buttonVariants } from '@semantic-components/ui';\nimport { cn } from '@semantic-components/utils';\n\nimport { ScCarousel } from './carousel';\n\n@Component({\n selector: 'button[sc-carousel-next]',\n imports: [],\n template: `\n <ng-content />\n `,\n host: {\n '(click)': 'scrollNext()',\n },\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCarouselNext extends ScButtonBase {\n private readonly scCarousel = inject(ScCarousel);\n\n override readonly variantInput = input<ButtonVariants['variant']>('outline');\n\n override readonly sizeInput = input<ButtonVariants['size']>('icon');\n\n protected override readonly class = computed(() =>\n cn(\n buttonVariants({ variant: this.variant(), size: this.size() }),\n 'absolute h-8 w-8 rounded-full',\n this.scCarousel.orientation() === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n this.classInput(),\n ),\n );\n\n protected override readonly disabled = linkedSignal(() => {\n return !this.scCarousel.canScrollNext();\n });\n\n protected scrollNext() {\n this.scCarousel.api.scrollNext();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/carousel';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ScCarouselContainer {
|
|
3
|
+
readonly classInput: import("@angular/core").InputSignal<string>;
|
|
4
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselContainer, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarouselContainer, "div[sc-carousel-container]", never, { "classInput": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ScCarouselItem {
|
|
3
|
+
private readonly scCarousel;
|
|
4
|
+
readonly classInput: import("@angular/core").InputSignal<string>;
|
|
5
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselItem, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarouselItem, "div[sc-carousel-item]", never, { "classInput": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ScCarouselItems {
|
|
3
|
+
private readonly scCarousel;
|
|
4
|
+
readonly classInput: import("@angular/core").InputSignal<string>;
|
|
5
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselItems, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarouselItems, "div[sc-carousel-items]", never, { "classInput": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ScButtonBase } from '@semantic-components/ui';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ScCarouselNext extends ScButtonBase {
|
|
4
|
+
private readonly scCarousel;
|
|
5
|
+
readonly variantInput: import("@angular/core").InputSignal<"primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined>;
|
|
6
|
+
readonly sizeInput: import("@angular/core").InputSignal<"default" | "sm" | "lg" | "icon" | null | undefined>;
|
|
7
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
8
|
+
protected readonly disabled: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
protected scrollNext(): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselNext, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarouselNext, "button[sc-carousel-next]", never, { "variantInput": { "alias": "variantInput"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "sizeInput"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ScButtonBase } from '@semantic-components/ui';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ScCarouselPrevious extends ScButtonBase {
|
|
4
|
+
private readonly scCarousel;
|
|
5
|
+
readonly variantInput: import("@angular/core").InputSignal<"primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined>;
|
|
6
|
+
readonly sizeInput: import("@angular/core").InputSignal<"default" | "sm" | "lg" | "icon" | null | undefined>;
|
|
7
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
8
|
+
protected readonly disabled: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
protected scrollPrev(): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselPrevious, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarouselPrevious, "button[sc-carousel-previous]", never, { "variantInput": { "alias": "variantInput"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "sizeInput"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { EmblaCarouselType } from 'embla-carousel';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ScCarousel implements OnDestroy {
|
|
5
|
+
private readonly host;
|
|
6
|
+
readonly classInput: import("@angular/core").InputSignal<string>;
|
|
7
|
+
protected readonly class: import("@angular/core").Signal<string>;
|
|
8
|
+
readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
9
|
+
readonly optionsInput: import("@angular/core").InputSignal<Partial<import("embla-carousel/components/Options").OptionsType>>;
|
|
10
|
+
readonly options: import("@angular/core").Signal<Partial<import("embla-carousel/components/Options").OptionsType>>;
|
|
11
|
+
readonly plugins: import("@angular/core").InputSignal<import("embla-carousel").CreatePluginType<import("embla-carousel/components/Plugins").LoosePluginType, {}>[]>;
|
|
12
|
+
readonly canScrollPrev: import("@angular/core").WritableSignal<boolean>;
|
|
13
|
+
readonly canScrollNext: import("@angular/core").WritableSignal<boolean>;
|
|
14
|
+
private emblaApi;
|
|
15
|
+
get api(): EmblaCarouselType;
|
|
16
|
+
constructor();
|
|
17
|
+
togglePrevNextBtnsState: () => void;
|
|
18
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
19
|
+
private scrollPrev;
|
|
20
|
+
private scrollNext;
|
|
21
|
+
ngOnDestroy(): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCarousel, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCarousel, "div[sc-carousel]", never, { "classInput": { "alias": "class"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "optionsInput": { "alias": "options"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@semantic-components/carousel",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"author": "Khalil LAGRIDA",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"peerDependencies": {
|
|
11
|
+
"@angular/core": ">=19.0.0",
|
|
12
|
+
"@semantic-components/utils": "0.39.0",
|
|
13
|
+
"embla-carousel": "^8.6.0",
|
|
14
|
+
"@semantic-components/ui": "0.50.0"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/khalilou88/semantic-components",
|
|
19
|
+
"directory": "libs/carousel"
|
|
20
|
+
},
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"module": "fesm2022/semantic-components-carousel.mjs",
|
|
23
|
+
"typings": "index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
"./package.json": {
|
|
26
|
+
"default": "./package.json"
|
|
27
|
+
},
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./index.d.ts",
|
|
30
|
+
"default": "./fesm2022/semantic-components-carousel.mjs"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"tslib": "^2.3.0"
|
|
35
|
+
}
|
|
36
|
+
}
|