@salt-ds/lab 1.0.0-alpha.65 → 1.0.0-alpha.67
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/CHANGELOG.md +65 -0
- package/css/salt-lab.css +111 -214
- package/dist-cjs/carousel/Carousel.css.js +1 -1
- package/dist-cjs/carousel/Carousel.js +30 -87
- package/dist-cjs/carousel/Carousel.js.map +1 -1
- package/dist-cjs/carousel/CarouselContext.js +62 -0
- package/dist-cjs/carousel/CarouselContext.js.map +1 -0
- package/dist-cjs/carousel/CarouselControls.css.js +6 -0
- package/dist-cjs/carousel/CarouselControls.css.js.map +1 -0
- package/dist-cjs/carousel/CarouselControls.js +122 -0
- package/dist-cjs/carousel/CarouselControls.js.map +1 -0
- package/dist-cjs/carousel/CarouselReducer.js +77 -0
- package/dist-cjs/carousel/CarouselReducer.js.map +1 -0
- package/dist-cjs/carousel/CarouselSlide.css.js +6 -0
- package/dist-cjs/carousel/CarouselSlide.css.js.map +1 -0
- package/dist-cjs/carousel/CarouselSlide.js +95 -45
- package/dist-cjs/carousel/CarouselSlide.js.map +1 -1
- package/dist-cjs/carousel/CarouselSlider.css.js +6 -0
- package/dist-cjs/carousel/CarouselSlider.css.js.map +1 -0
- package/dist-cjs/carousel/CarouselSlider.js +93 -0
- package/dist-cjs/carousel/CarouselSlider.js.map +1 -0
- package/dist-cjs/index.js +6 -8
- package/dist-cjs/index.js.map +1 -1
- package/dist-es/carousel/Carousel.css.js +1 -1
- package/dist-es/carousel/Carousel.js +32 -89
- package/dist-es/carousel/Carousel.js.map +1 -1
- package/dist-es/carousel/CarouselContext.js +58 -0
- package/dist-es/carousel/CarouselContext.js.map +1 -0
- package/dist-es/carousel/CarouselControls.css.js +4 -0
- package/dist-es/carousel/CarouselControls.css.js.map +1 -0
- package/dist-es/carousel/CarouselControls.js +120 -0
- package/dist-es/carousel/CarouselControls.js.map +1 -0
- package/dist-es/carousel/CarouselReducer.js +75 -0
- package/dist-es/carousel/CarouselReducer.js.map +1 -0
- package/dist-es/carousel/CarouselSlide.css.js +4 -0
- package/dist-es/carousel/CarouselSlide.css.js.map +1 -0
- package/dist-es/carousel/CarouselSlide.js +96 -46
- package/dist-es/carousel/CarouselSlide.js.map +1 -1
- package/dist-es/carousel/CarouselSlider.css.js +4 -0
- package/dist-es/carousel/CarouselSlider.css.js.map +1 -0
- package/dist-es/carousel/CarouselSlider.js +91 -0
- package/dist-es/carousel/CarouselSlider.js.map +1 -0
- package/dist-es/index.js +3 -4
- package/dist-es/index.js.map +1 -1
- package/dist-types/carousel/Carousel.d.ts +10 -23
- package/dist-types/carousel/CarouselContext.d.ts +11 -0
- package/dist-types/carousel/CarouselControls.d.ts +26 -0
- package/dist-types/carousel/CarouselReducer.d.ts +30 -0
- package/dist-types/carousel/CarouselSlide.d.ts +31 -8
- package/dist-types/carousel/CarouselSlider.d.ts +13 -0
- package/dist-types/carousel/index.d.ts +2 -0
- package/dist-types/index.d.ts +0 -1
- package/dist-types/utils/index.d.ts +1 -1
- package/package.json +2 -2
- package/dist-cjs/stepped-tracker/Step.Connector.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.Connector.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Connector.js +0 -21
- package/dist-cjs/stepped-tracker/Step.Connector.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Description.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.Description.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Description.js +0 -35
- package/dist-cjs/stepped-tracker/Step.Description.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js +0 -38
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Icon.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.Icon.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Icon.js +0 -57
- package/dist-cjs/stepped-tracker/Step.Icon.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Label.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.Label.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.Label.js +0 -37
- package/dist-cjs/stepped-tracker/Step.Label.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.SROnly.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.SROnly.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.SROnly.js +0 -21
- package/dist-cjs/stepped-tracker/Step.SROnly.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.css.js +0 -6
- package/dist-cjs/stepped-tracker/Step.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/Step.js +0 -161
- package/dist-cjs/stepped-tracker/Step.js.map +0 -1
- package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js +0 -19
- package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js.map +0 -1
- package/dist-cjs/stepped-tracker/SteppedTracker.css.js +0 -6
- package/dist-cjs/stepped-tracker/SteppedTracker.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/SteppedTracker.js +0 -36
- package/dist-cjs/stepped-tracker/SteppedTracker.js.map +0 -1
- package/dist-cjs/stepped-tracker/stepReducer.js +0 -155
- package/dist-cjs/stepped-tracker/stepReducer.js.map +0 -1
- package/dist-cjs/stepped-tracker/useStepReducer.js +0 -18
- package/dist-cjs/stepped-tracker/useStepReducer.js.map +0 -1
- package/dist-cjs/stepped-tracker/utils.js +0 -121
- package/dist-cjs/stepped-tracker/utils.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Connector.css.js +0 -4
- package/dist-es/stepped-tracker/Step.Connector.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Connector.js +0 -19
- package/dist-es/stepped-tracker/Step.Connector.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Description.css.js +0 -4
- package/dist-es/stepped-tracker/Step.Description.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Description.js +0 -33
- package/dist-es/stepped-tracker/Step.Description.js.map +0 -1
- package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js +0 -4
- package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.ExpandTrigger.js +0 -36
- package/dist-es/stepped-tracker/Step.ExpandTrigger.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Icon.css.js +0 -4
- package/dist-es/stepped-tracker/Step.Icon.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Icon.js +0 -55
- package/dist-es/stepped-tracker/Step.Icon.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Label.css.js +0 -4
- package/dist-es/stepped-tracker/Step.Label.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.Label.js +0 -35
- package/dist-es/stepped-tracker/Step.Label.js.map +0 -1
- package/dist-es/stepped-tracker/Step.SROnly.css.js +0 -4
- package/dist-es/stepped-tracker/Step.SROnly.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.SROnly.js +0 -19
- package/dist-es/stepped-tracker/Step.SROnly.js.map +0 -1
- package/dist-es/stepped-tracker/Step.css.js +0 -4
- package/dist-es/stepped-tracker/Step.css.js.map +0 -1
- package/dist-es/stepped-tracker/Step.js +0 -159
- package/dist-es/stepped-tracker/Step.js.map +0 -1
- package/dist-es/stepped-tracker/SteppedTracker.Provider.js +0 -15
- package/dist-es/stepped-tracker/SteppedTracker.Provider.js.map +0 -1
- package/dist-es/stepped-tracker/SteppedTracker.css.js +0 -4
- package/dist-es/stepped-tracker/SteppedTracker.css.js.map +0 -1
- package/dist-es/stepped-tracker/SteppedTracker.js +0 -34
- package/dist-es/stepped-tracker/SteppedTracker.js.map +0 -1
- package/dist-es/stepped-tracker/stepReducer.js +0 -153
- package/dist-es/stepped-tracker/stepReducer.js.map +0 -1
- package/dist-es/stepped-tracker/useStepReducer.js +0 -16
- package/dist-es/stepped-tracker/useStepReducer.js.map +0 -1
- package/dist-es/stepped-tracker/utils.js +0 -114
- package/dist-es/stepped-tracker/utils.js.map +0 -1
- package/dist-types/stepped-tracker/Step.Connector.d.ts +0 -1
- package/dist-types/stepped-tracker/Step.Description.d.ts +0 -4
- package/dist-types/stepped-tracker/Step.ExpandTrigger.d.ts +0 -5
- package/dist-types/stepped-tracker/Step.Icon.d.ts +0 -8
- package/dist-types/stepped-tracker/Step.Label.d.ts +0 -4
- package/dist-types/stepped-tracker/Step.SROnly.d.ts +0 -5
- package/dist-types/stepped-tracker/Step.d.ts +0 -2
- package/dist-types/stepped-tracker/Step.types.d.ts +0 -19
- package/dist-types/stepped-tracker/SteppedTracker.Provider.d.ts +0 -9
- package/dist-types/stepped-tracker/SteppedTracker.d.ts +0 -2
- package/dist-types/stepped-tracker/SteppedTracker.types.d.ts +0 -6
- package/dist-types/stepped-tracker/index.d.ts +0 -6
- package/dist-types/stepped-tracker/stepReducer.d.ts +0 -2
- package/dist-types/stepped-tracker/stepReducer.types.d.ts +0 -27
- package/dist-types/stepped-tracker/useStepReducer.d.ts +0 -3
- package/dist-types/stepped-tracker/utils.d.ts +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,70 @@
|
|
|
1
1
|
# @salt-ds/lab
|
|
2
2
|
|
|
3
|
+
## 1.0.0-alpha.67
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- c664e97: - Moved `SteppedTracker` component from labs to core, renamed as `Stepper`.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [c664e97]
|
|
12
|
+
- Updated dependencies [06232b0]
|
|
13
|
+
- @salt-ds/core@1.45.0
|
|
14
|
+
|
|
15
|
+
## 1.0.0-alpha.66
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 799cf41: Updated `Carousel` component
|
|
20
|
+
|
|
21
|
+
- Renamed `initialIndex` to `defaultActiveSlideIndex`
|
|
22
|
+
- Added controlled `activeSlideIndex`
|
|
23
|
+
- Added `visibleSlides` to control how many slides can be visible at a time.
|
|
24
|
+
- Added `CarouselSlider` and extracted the controls to its own component, `CarouselControls` to improve composition.
|
|
25
|
+
- Added appearance in `CarouselSlide` to allow for border items.
|
|
26
|
+
- Added keyboard navigation.
|
|
27
|
+
- Removed usage of `DeckLayout`.
|
|
28
|
+
|
|
29
|
+
before:
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Carousel>
|
|
33
|
+
{items.map((item, index) => (
|
|
34
|
+
<CarouselSlide
|
|
35
|
+
key={index}
|
|
36
|
+
ButtonBar={<Button variant="cta">Learn more</Button>}
|
|
37
|
+
description="Lorem ipsum"
|
|
38
|
+
title="Carousel slide title"
|
|
39
|
+
/>
|
|
40
|
+
))}
|
|
41
|
+
</Carousel>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
after:
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
<Carousel>
|
|
48
|
+
<CarouselControls />
|
|
49
|
+
<CarouselSlider>
|
|
50
|
+
{items.map((slide) => (
|
|
51
|
+
<CarouselSlide
|
|
52
|
+
key={slide.title}
|
|
53
|
+
header={<H3>{slide.title}</H3>}
|
|
54
|
+
actions={<Link href="#">{slide.link}</Link>}
|
|
55
|
+
>
|
|
56
|
+
<Text>{slide.content}</Text>
|
|
57
|
+
</CarouselSlide>
|
|
58
|
+
))}
|
|
59
|
+
</CarouselSlider>
|
|
60
|
+
</Carousel>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Patch Changes
|
|
64
|
+
|
|
65
|
+
- Updated dependencies [851b2eb]
|
|
66
|
+
- @salt-ds/core@1.44.1
|
|
67
|
+
|
|
3
68
|
## 1.0.0-alpha.65
|
|
4
69
|
|
|
5
70
|
### Minor Changes
|
package/css/salt-lab.css
CHANGED
|
@@ -252,27 +252,122 @@
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
/* src/carousel/Carousel.css */
|
|
255
|
-
.
|
|
256
|
-
|
|
257
|
-
grid-
|
|
255
|
+
.saltCarousel {
|
|
256
|
+
display: grid;
|
|
257
|
+
grid-row-gap: var(--salt-spacing-100);
|
|
258
|
+
grid-template-areas: "controls" "slider";
|
|
259
|
+
grid-template-rows: auto 1fr;
|
|
258
260
|
}
|
|
259
|
-
.saltCarousel.saltCarousel-
|
|
260
|
-
grid-template-areas: "slider
|
|
261
|
+
.saltCarousel.saltCarousel-bottom {
|
|
262
|
+
grid-template-areas: "slider" "controls";
|
|
263
|
+
grid-template-rows: 1fr auto;
|
|
261
264
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
+
|
|
266
|
+
/* src/carousel/CarouselControls.css */
|
|
267
|
+
.saltCarouselControls {
|
|
268
|
+
display: flex;
|
|
269
|
+
gap: var(--salt-spacing-100);
|
|
270
|
+
align-items: center;
|
|
271
|
+
grid-area: controls;
|
|
265
272
|
}
|
|
266
|
-
.
|
|
267
|
-
|
|
268
|
-
|
|
273
|
+
.saltCarouselControls-container {
|
|
274
|
+
display: flex;
|
|
275
|
+
flex-flow: wrap;
|
|
276
|
+
align-items: center;
|
|
277
|
+
gap: var(--salt-spacing-100);
|
|
278
|
+
justify-content: space-between;
|
|
279
|
+
}
|
|
280
|
+
.saltCarouselControls-container:last-child {
|
|
281
|
+
margin-left: auto;
|
|
282
|
+
}
|
|
283
|
+
.saltCarouselControls-container h2 {
|
|
284
|
+
margin: 0;
|
|
285
|
+
}
|
|
286
|
+
.saltCarouselControls-sr-only {
|
|
287
|
+
display: none;
|
|
288
|
+
}
|
|
289
|
+
.saltCarouselControls:focus-within .saltCarouselControls-sr-only {
|
|
290
|
+
display: block;
|
|
291
|
+
position: fixed;
|
|
292
|
+
top: 0;
|
|
293
|
+
left: 0;
|
|
294
|
+
transform: translate(-100%, -100%);
|
|
269
295
|
}
|
|
270
|
-
|
|
296
|
+
|
|
297
|
+
/* src/carousel/CarouselSlide.css */
|
|
298
|
+
.saltCarouselSlide {
|
|
299
|
+
scroll-snap-align: start;
|
|
300
|
+
display: flex;
|
|
301
|
+
flex-direction: column;
|
|
302
|
+
flex: 0 0 auto;
|
|
303
|
+
box-sizing: border-box;
|
|
304
|
+
width: var(--carousel-slide-width, 100%);
|
|
305
|
+
gap: var(--salt-spacing-200);
|
|
306
|
+
}
|
|
307
|
+
.saltCarouselSlide:focus-visible {
|
|
308
|
+
outline: var(--salt-focused-outline);
|
|
309
|
+
outline-offset: calc(0px - var(--salt-focused-outlineWidth));
|
|
310
|
+
}
|
|
311
|
+
.saltCarouselSlide-actions {
|
|
312
|
+
display: none;
|
|
313
|
+
}
|
|
314
|
+
.saltCarouselSlide-sr-only {
|
|
315
|
+
position: fixed;
|
|
316
|
+
top: 0;
|
|
317
|
+
left: 0;
|
|
318
|
+
transform: translate(-100%, -100%);
|
|
319
|
+
}
|
|
320
|
+
.saltCarouselSlide-actions.saltCarouselSlide-visible {
|
|
321
|
+
display: flex;
|
|
322
|
+
}
|
|
323
|
+
.saltCarouselSlide-container {
|
|
324
|
+
display: flex;
|
|
325
|
+
flex-direction: column;
|
|
326
|
+
box-sizing: border-box;
|
|
327
|
+
gap: var(--salt-spacing-200);
|
|
328
|
+
padding-left: var(--salt-spacing-25);
|
|
329
|
+
padding-bottom: var(--salt-spacing-25);
|
|
330
|
+
flex-grow: 1;
|
|
331
|
+
}
|
|
332
|
+
.saltCarouselSlide-content {
|
|
333
|
+
display: flex;
|
|
334
|
+
flex-direction: column;
|
|
335
|
+
flex-grow: 1;
|
|
336
|
+
gap: var(--salt-spacing-100);
|
|
337
|
+
}
|
|
338
|
+
.saltCarouselSlide-card {
|
|
339
|
+
padding: var(--salt-spacing-200);
|
|
340
|
+
padding-top: 0;
|
|
341
|
+
}
|
|
342
|
+
.saltCarouselSlide-content h2,
|
|
343
|
+
.saltCarouselSlide-content h3 {
|
|
344
|
+
margin: 0;
|
|
345
|
+
}
|
|
346
|
+
.saltCarouselSlide-bordered {
|
|
347
|
+
border: var(--salt-size-border) var(--salt-container-borderStyle) var(--salt-container-primary-borderColor);
|
|
348
|
+
border-radius: var(--salt-palette-corner, 0);
|
|
349
|
+
overflow: hidden;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/* src/carousel/CarouselSlider.css */
|
|
353
|
+
.saltCarouselSlider {
|
|
354
|
+
display: flex;
|
|
355
|
+
scroll-snap-type: x mandatory;
|
|
356
|
+
overflow-x: auto;
|
|
357
|
+
scroll-behavior: smooth;
|
|
358
|
+
width: 100%;
|
|
359
|
+
gap: var(--salt-spacing-100);
|
|
271
360
|
grid-area: slider;
|
|
272
361
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
362
|
+
@supports (scrollbar-width: none) {
|
|
363
|
+
.saltCarouselSlider {
|
|
364
|
+
scrollbar-width: none;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
@supports not (scrollbar-width: none) {
|
|
368
|
+
.saltCarouselSlider::-webkit-scrollbar {
|
|
369
|
+
display: none;
|
|
370
|
+
}
|
|
276
371
|
}
|
|
277
372
|
|
|
278
373
|
/* src/cascading-menu/CascadingMenuItem.css */
|
|
@@ -2892,204 +2987,6 @@
|
|
|
2892
2987
|
letter-spacing: var(--salt-text-letterSpacing);
|
|
2893
2988
|
}
|
|
2894
2989
|
|
|
2895
|
-
/* src/stepped-tracker/Step.Connector.css */
|
|
2896
|
-
.saltStepConnector {
|
|
2897
|
-
grid-area: connector;
|
|
2898
|
-
transition-duration: inherit;
|
|
2899
|
-
transition-timing-function: inherit;
|
|
2900
|
-
transition-property: opacity, min-height;
|
|
2901
|
-
}
|
|
2902
|
-
.saltSteppedTracker-horizontal .saltStepConnector {
|
|
2903
|
-
position: absolute;
|
|
2904
|
-
transform: translateY(-100%);
|
|
2905
|
-
top: calc(var(--step-icon-size) / 2);
|
|
2906
|
-
left: calc(50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));
|
|
2907
|
-
right: calc(-50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));
|
|
2908
|
-
border-top-width: var(--salt-size-border-strong);
|
|
2909
|
-
border-top-style: var(--salt-track-borderStyle-incomplete);
|
|
2910
|
-
border-top-color: var(--salt-track-borderColor);
|
|
2911
|
-
}
|
|
2912
|
-
.saltSteppedTracker-horizontal .saltStep-stage-completed > .saltStepConnector,
|
|
2913
|
-
.saltSteppedTracker-horizontal .saltStep-stage-inprogress > .saltStepConnector {
|
|
2914
|
-
border-top-style: var(--salt-track-borderStyle-complete);
|
|
2915
|
-
}
|
|
2916
|
-
.saltSteppedTracker-vertical .saltStepConnector {
|
|
2917
|
-
min-height: var(--salt-size-base);
|
|
2918
|
-
align-self: stretch;
|
|
2919
|
-
justify-self: center;
|
|
2920
|
-
border-left-width: var(--salt-size-border-strong);
|
|
2921
|
-
border-left-style: var(--salt-track-borderStyle-incomplete);
|
|
2922
|
-
border-left-color: var(--salt-track-borderColor);
|
|
2923
|
-
}
|
|
2924
|
-
.saltSteppedTracker-vertical .saltStep-stage-completed > .saltStepConnector,
|
|
2925
|
-
.saltSteppedTracker-vertical .saltStep-stage-inprogress > .saltStepConnector {
|
|
2926
|
-
border-left-style: var(--salt-track-borderStyle-complete);
|
|
2927
|
-
}
|
|
2928
|
-
.saltStep-depth-0.saltStep:not(.saltStep-expanded):last-child > .saltStepConnector {
|
|
2929
|
-
opacity: 0;
|
|
2930
|
-
min-height: 0;
|
|
2931
|
-
}
|
|
2932
|
-
.saltStep-depth-0.saltStep-expanded:last-child .saltStep:not(.saltStep-expanded):last-child .saltStepConnector {
|
|
2933
|
-
opacity: 0;
|
|
2934
|
-
min-height: 0;
|
|
2935
|
-
}
|
|
2936
|
-
|
|
2937
|
-
/* src/stepped-tracker/Step.Description.css */
|
|
2938
|
-
.saltStepDescription {
|
|
2939
|
-
grid-area: description;
|
|
2940
|
-
}
|
|
2941
|
-
.saltSteppedTracker-vertical .saltStepDescription {
|
|
2942
|
-
padding-bottom: var(--salt-spacing-300);
|
|
2943
|
-
padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));
|
|
2944
|
-
}
|
|
2945
|
-
.saltStep-status-warning > .saltStepDescription {
|
|
2946
|
-
color: var(--salt-status-warning-foreground-informative);
|
|
2947
|
-
}
|
|
2948
|
-
.saltStep-status-error > .saltStepDescription {
|
|
2949
|
-
color: var(--salt-status-error-foreground-informative);
|
|
2950
|
-
}
|
|
2951
|
-
|
|
2952
|
-
/* src/stepped-tracker/Step.ExpandTrigger.css */
|
|
2953
|
-
.saltStepExpandTrigger {
|
|
2954
|
-
grid-area: expand;
|
|
2955
|
-
}
|
|
2956
|
-
.saltButton.saltStepExpandTrigger:focus-visible {
|
|
2957
|
-
outline-offset: calc(-1 * var(--salt-focused-outlineWidth));
|
|
2958
|
-
}
|
|
2959
|
-
|
|
2960
|
-
/* src/stepped-tracker/Step.Icon.css */
|
|
2961
|
-
.saltStepIcon {
|
|
2962
|
-
grid-area: icon;
|
|
2963
|
-
display: flex;
|
|
2964
|
-
justify-content: center;
|
|
2965
|
-
align-items: center;
|
|
2966
|
-
justify-self: center;
|
|
2967
|
-
}
|
|
2968
|
-
.saltSteppedTracker-vertical .saltStepIcon {
|
|
2969
|
-
height: var(--salt-size-base);
|
|
2970
|
-
}
|
|
2971
|
-
.saltStep-stage-pending > .saltStepIcon {
|
|
2972
|
-
--saltIcon-color: var(--salt-status-static-foreground);
|
|
2973
|
-
}
|
|
2974
|
-
.saltStep-stage-locked > .saltStepIcon {
|
|
2975
|
-
--saltIcon-color: var(--salt-status-static-foreground);
|
|
2976
|
-
}
|
|
2977
|
-
.saltStep-stage-inprogress > .saltStepIcon {
|
|
2978
|
-
--saltIcon-color: var(--salt-status-info-foreground-decorative);
|
|
2979
|
-
}
|
|
2980
|
-
.saltStep-stage-active > .saltStepIcon {
|
|
2981
|
-
--saltIcon-color: var(--salt-status-info-foreground-decorative);
|
|
2982
|
-
}
|
|
2983
|
-
.saltStep-stage-completed > .saltStepIcon {
|
|
2984
|
-
--saltIcon-color: var(--salt-status-success-foreground-decorative);
|
|
2985
|
-
}
|
|
2986
|
-
.saltStep-status-warning > .saltStepIcon {
|
|
2987
|
-
--saltIcon-color: var(--salt-status-warning-foreground-decorative);
|
|
2988
|
-
}
|
|
2989
|
-
.saltStep-status-error > .saltStepIcon {
|
|
2990
|
-
--saltIcon-color: var(--salt-status-error-foreground-decorative);
|
|
2991
|
-
}
|
|
2992
|
-
|
|
2993
|
-
/* src/stepped-tracker/Step.Label.css */
|
|
2994
|
-
.saltStepLabel {
|
|
2995
|
-
grid-area: label;
|
|
2996
|
-
}
|
|
2997
|
-
.saltSteppedTracker-horizontal .saltStepLabel {
|
|
2998
|
-
margin-top: var(--salt-spacing-50);
|
|
2999
|
-
}
|
|
3000
|
-
.saltSteppedTracker-vertical .saltStepLabel {
|
|
3001
|
-
padding-top: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
|
|
3002
|
-
padding-bottom: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
|
|
3003
|
-
padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));
|
|
3004
|
-
}
|
|
3005
|
-
.saltStep-depth-0 > .saltText.saltStepLabel {
|
|
3006
|
-
font-weight: var(--salt-text-fontWeight-strong);
|
|
3007
|
-
}
|
|
3008
|
-
|
|
3009
|
-
/* src/stepped-tracker/Step.SROnly.css */
|
|
3010
|
-
.saltStepSROnly {
|
|
3011
|
-
position: fixed;
|
|
3012
|
-
top: 0;
|
|
3013
|
-
left: 0;
|
|
3014
|
-
transform: translate(-100%, -100%);
|
|
3015
|
-
}
|
|
3016
|
-
|
|
3017
|
-
/* src/stepped-tracker/Step.css */
|
|
3018
|
-
.saltStep {
|
|
3019
|
-
--step-icon-base-size: var(--salt-size-icon, 12px);
|
|
3020
|
-
--step-icon-size-multiplier: var(--saltIcon-size-multiplier, 1.5);
|
|
3021
|
-
--step-icon-size: calc(var(--step-icon-base-size) * var(--step-icon-size-multiplier));
|
|
3022
|
-
--step-depth: var(--saltStep-depth, 0);
|
|
3023
|
-
}
|
|
3024
|
-
.saltSteppedTracker-horizontal .saltStep {
|
|
3025
|
-
position: relative;
|
|
3026
|
-
display: grid;
|
|
3027
|
-
grid-template-columns: 1fr;
|
|
3028
|
-
grid-template-rows: repeat(3, min-content);
|
|
3029
|
-
grid-template-areas: "icon" "label" "description";
|
|
3030
|
-
justify-items: center;
|
|
3031
|
-
align-items: center;
|
|
3032
|
-
text-align: center;
|
|
3033
|
-
flex: 1;
|
|
3034
|
-
padding: 0 var(--salt-spacing-25);
|
|
3035
|
-
}
|
|
3036
|
-
.saltSteppedTracker-vertical .saltStep {
|
|
3037
|
-
display: grid;
|
|
3038
|
-
grid-template-columns: var(--step-icon-size) 1fr min-content;
|
|
3039
|
-
grid-template-areas: "icon label expand" "connector description ." "stepped-tracker stepped-tracker stepped-tracker";
|
|
3040
|
-
justify-items: start;
|
|
3041
|
-
align-items: start;
|
|
3042
|
-
gap: 0 var(--salt-spacing-100);
|
|
3043
|
-
width: 100%;
|
|
3044
|
-
transition-duration: inherit;
|
|
3045
|
-
transition-timing-function: inherit;
|
|
3046
|
-
transition-property: grid-template-rows;
|
|
3047
|
-
}
|
|
3048
|
-
.saltSteppedTracker-vertical .saltStep-terminal {
|
|
3049
|
-
grid-template-areas: "icon label label" "connector description description" "stepped-tracker stepped-tracker stepped-tracker";
|
|
3050
|
-
}
|
|
3051
|
-
.saltSteppedTracker-vertical > .saltStep.saltStep-expanded {
|
|
3052
|
-
grid-template-rows: var(--salt-size-base) min-content 1fr;
|
|
3053
|
-
}
|
|
3054
|
-
.saltSteppedTracker-vertical > .saltStep.saltStep-collapsed {
|
|
3055
|
-
grid-template-rows: var(--salt-size-base) min-content 0fr;
|
|
3056
|
-
}
|
|
3057
|
-
|
|
3058
|
-
/* src/stepped-tracker/SteppedTracker.css */
|
|
3059
|
-
.saltSteppedTracker {
|
|
3060
|
-
grid-area: stepped-tracker;
|
|
3061
|
-
width: 100%;
|
|
3062
|
-
height: 100%;
|
|
3063
|
-
margin: 0;
|
|
3064
|
-
padding: 0;
|
|
3065
|
-
list-style-type: none;
|
|
3066
|
-
transition-duration: var(--salt-duration-perceptible);
|
|
3067
|
-
transition-timing-function: ease-in-out;
|
|
3068
|
-
transition-property: opacity, visibility;
|
|
3069
|
-
}
|
|
3070
|
-
@media (prefers-reduced-motion) {
|
|
3071
|
-
.saltSteppedTracker {
|
|
3072
|
-
transition-duration: var(--salt-duration-instant);
|
|
3073
|
-
}
|
|
3074
|
-
}
|
|
3075
|
-
.saltSteppedTracker-horizontal {
|
|
3076
|
-
display: flex;
|
|
3077
|
-
flex-direction: row;
|
|
3078
|
-
}
|
|
3079
|
-
.saltSteppedTracker-vertical {
|
|
3080
|
-
display: flex;
|
|
3081
|
-
flex-direction: column;
|
|
3082
|
-
overflow: hidden;
|
|
3083
|
-
}
|
|
3084
|
-
.saltSteppedTracker-vertical > .saltStep.saltStep-expanded > .saltSteppedTracker {
|
|
3085
|
-
opacity: 1;
|
|
3086
|
-
visibility: visible;
|
|
3087
|
-
}
|
|
3088
|
-
.saltSteppedTracker-vertical > .saltStep.saltStep-collapsed > .saltSteppedTracker {
|
|
3089
|
-
opacity: 0;
|
|
3090
|
-
visibility: hidden;
|
|
3091
|
-
}
|
|
3092
|
-
|
|
3093
2990
|
/* src/system-status/SystemStatus.css */
|
|
3094
2991
|
.saltSystemStatus {
|
|
3095
2992
|
background: var(--saltSystemStatus-background, var(--systemStatus-background));
|
|
@@ -4597,4 +4494,4 @@
|
|
|
4597
4494
|
margin: calc(var(--salt-size-unit) / 2) 0;
|
|
4598
4495
|
}
|
|
4599
4496
|
|
|
4600
|
-
/* src/
|
|
4497
|
+
/* src/c73aefdf-62ff-4b8b-8ac0-ab77a4c4d85e.css */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".
|
|
3
|
+
var css_248z = ".saltCarousel {\n display: grid;\n grid-row-gap: var(--salt-spacing-100);\n grid-template-areas: \"controls\" \"slider\";\n grid-template-rows: auto 1fr;\n}\n\n.saltCarousel.saltCarousel-bottom {\n grid-template-areas: \"slider\" \"controls\";\n grid-template-rows: 1fr auto;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Carousel.css.js.map
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var react = require('react');
|
|
5
4
|
var core = require('@salt-ds/core');
|
|
6
5
|
var styles = require('@salt-ds/styles');
|
|
7
6
|
var window = require('@salt-ds/window');
|
|
8
7
|
var clsx = require('clsx');
|
|
9
|
-
var
|
|
10
|
-
var useSlideSelection = require('../utils/useSlideSelection.js');
|
|
8
|
+
var react = require('react');
|
|
11
9
|
var Carousel$1 = require('./Carousel.css.js');
|
|
10
|
+
var CarouselContext = require('./CarouselContext.js');
|
|
12
11
|
|
|
13
12
|
const withBaseName = core.makePrefixer("saltCarousel");
|
|
14
13
|
const Carousel = react.forwardRef(
|
|
15
14
|
function Carousel2({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
defaultActiveSlideIndex = 0,
|
|
16
|
+
activeSlideIndex,
|
|
17
|
+
visibleSlides: visibleSlidesProp = 1,
|
|
19
18
|
children,
|
|
20
|
-
|
|
21
|
-
compact,
|
|
19
|
+
controlsPlacement = "top",
|
|
22
20
|
id: idProp,
|
|
23
21
|
...rest
|
|
24
22
|
}, ref) {
|
|
@@ -28,88 +26,33 @@ const Carousel = react.forwardRef(
|
|
|
28
26
|
css: Carousel$1,
|
|
29
27
|
window: targetWindow
|
|
30
28
|
});
|
|
31
|
-
const {
|
|
29
|
+
const { matchedBreakpoints } = core.useBreakpoint();
|
|
30
|
+
const visibleSlides = core.resolveResponsiveValue(
|
|
31
|
+
visibleSlidesProp,
|
|
32
|
+
matchedBreakpoints
|
|
33
|
+
);
|
|
32
34
|
const id = core.useId(idProp);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const moveSlide = (direction) => {
|
|
36
|
-
const moveLeft = selectedSlide === 0 ? slidesCount - 1 : selectedSlide - 1;
|
|
37
|
-
const moveRight = selectedSlide === slidesCount - 1 ? 0 : selectedSlide + 1;
|
|
38
|
-
const newSelection = direction === "left" ? moveLeft : moveRight;
|
|
39
|
-
const newTransition = direction === "left" ? "decrease" : "increase";
|
|
40
|
-
handleSlideSelection(newSelection, newTransition);
|
|
41
|
-
};
|
|
42
|
-
const handleRadioChange = ({
|
|
43
|
-
target: { value }
|
|
44
|
-
}) => {
|
|
45
|
-
handleSlideSelection(Number(value));
|
|
46
|
-
};
|
|
47
|
-
react.useEffect(() => {
|
|
48
|
-
if (process.env.NODE_ENV !== "production") {
|
|
49
|
-
if (slidesCount < 1) {
|
|
50
|
-
console.warn(
|
|
51
|
-
"Carousel component requires more than one children to render. At least two elements should be provided."
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}, [slidesCount]);
|
|
56
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
57
|
-
core.GridLayout,
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
+
CarouselContext.CarouselProvider,
|
|
58
37
|
{
|
|
59
|
-
|
|
60
|
-
|
|
38
|
+
defaultActiveSlideIndex,
|
|
39
|
+
activeSlideIndex,
|
|
40
|
+
visibleSlides,
|
|
61
41
|
id,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
variant: "secondary",
|
|
77
|
-
className: withBaseName("prev-button"),
|
|
78
|
-
onClick: () => moveSlide("left"),
|
|
79
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(PreviousIcon, { size: 2 })
|
|
80
|
-
}
|
|
81
|
-
),
|
|
82
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
-
DeckLayout.DeckLayout,
|
|
84
|
-
{
|
|
85
|
-
activeIndex: selectedSlide,
|
|
86
|
-
animation,
|
|
87
|
-
className: withBaseName("slider"),
|
|
88
|
-
children
|
|
89
|
-
}
|
|
90
|
-
),
|
|
91
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
92
|
-
core.Button,
|
|
93
|
-
{
|
|
94
|
-
variant: "secondary",
|
|
95
|
-
className: withBaseName("next-button"),
|
|
96
|
-
onClick: () => moveSlide("right"),
|
|
97
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(NextIcon, { size: 2 })
|
|
98
|
-
}
|
|
99
|
-
),
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("dots"), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
-
core.RadioButtonGroup,
|
|
102
|
-
{
|
|
103
|
-
"aria-label": "Carousel buttons",
|
|
104
|
-
onChange: handleRadioChange,
|
|
105
|
-
value: `${selectedSlide}`,
|
|
106
|
-
direction: "horizontal",
|
|
107
|
-
children: Array.from({ length: slidesCount }, (_2, index) => ({
|
|
108
|
-
value: `${index}`
|
|
109
|
-
})).map((radio) => /* @__PURE__ */ react.createElement(core.RadioButton, { ...radio, key: radio.value }))
|
|
110
|
-
}
|
|
111
|
-
) })
|
|
112
|
-
]
|
|
42
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
+
"section",
|
|
44
|
+
{
|
|
45
|
+
role: "region",
|
|
46
|
+
className: clsx.clsx(withBaseName(), {
|
|
47
|
+
[withBaseName(controlsPlacement)]: controlsPlacement === "bottom"
|
|
48
|
+
}),
|
|
49
|
+
"aria-roledescription": "carousel",
|
|
50
|
+
id,
|
|
51
|
+
ref,
|
|
52
|
+
...rest,
|
|
53
|
+
children
|
|
54
|
+
}
|
|
55
|
+
)
|
|
113
56
|
}
|
|
114
57
|
);
|
|
115
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../src/carousel/Carousel.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../src/carousel/Carousel.tsx"],"sourcesContent":["import {\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n useBreakpoint,\n useId,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type HTMLAttributes, forwardRef } from \"react\";\nimport carouselCss from \"./Carousel.css\";\nimport { CarouselProvider } from \"./CarouselContext\";\n\nconst withBaseName = makePrefixer(\"saltCarousel\");\n\nexport interface CarouselProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The initial Index enables you to select the active slide in the carousel.\n * Optional, default 0.\n **/\n defaultActiveSlideIndex?: number;\n /**\n * Controlled index of active slide in the carousel.\n **/\n activeSlideIndex?: number;\n /**\n * Set the placement of the CarouselControls relative to the CarouselSlider element. Defaults to `top`.\n */\n controlsPlacement?: \"top\" | \"bottom\";\n /**\n * Number of slides visible at a time.\n * Optional, default 1.\n **/\n visibleSlides?: ResponsiveProp<number>;\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n function Carousel(\n {\n defaultActiveSlideIndex = 0,\n activeSlideIndex,\n visibleSlides: visibleSlidesProp = 1,\n children,\n controlsPlacement = \"top\",\n id: idProp,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-carousel\",\n css: carouselCss,\n window: targetWindow,\n });\n const { matchedBreakpoints } = useBreakpoint();\n\n const visibleSlides = resolveResponsiveValue(\n visibleSlidesProp,\n matchedBreakpoints,\n );\n const id = useId(idProp);\n return (\n <CarouselProvider\n defaultActiveSlideIndex={defaultActiveSlideIndex}\n activeSlideIndex={activeSlideIndex}\n visibleSlides={visibleSlides}\n id={id}\n >\n <section\n role=\"region\"\n className={clsx(withBaseName(), {\n [withBaseName(controlsPlacement)]: controlsPlacement === \"bottom\",\n })}\n aria-roledescription=\"carousel\"\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </section>\n </CarouselProvider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Carousel","useWindow","useComponentCssInjection","carouselCss","useBreakpoint","resolveResponsiveValue","useId","jsx","CarouselProvider","clsx"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA;AAuBzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SACP,CAAA;AAAA,IACE,uBAA0B,GAAA,CAAA;AAAA,IAC1B,gBAAA;AAAA,IACA,eAAe,iBAAoB,GAAA,CAAA;AAAA,IACnC,QAAA;AAAA,IACA,iBAAoB,GAAA,KAAA;AAAA,IACpB,EAAI,EAAA,MAAA;AAAA,IACJ,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,kBAAc,EAAA;AAE7C,IAAA,MAAM,aAAgB,GAAAC,2BAAA;AAAA,MACpB,iBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA;AACvB,IACE,uBAAAC,cAAA;AAAA,MAACC,gCAAA;AAAA,MAAA;AAAA,QACC,uBAAA;AAAA,QACA,gBAAA;AAAA,QACA,aAAA;AAAA,QACA,EAAA;AAAA,QAEA,QAAA,kBAAAD,cAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,QAAA;AAAA,YACL,SAAA,EAAWE,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,cAC9B,CAAC,YAAA,CAAa,iBAAiB,CAAC,GAAG,iBAAsB,KAAA;AAAA,aAC1D,CAAA;AAAA,YACD,sBAAqB,EAAA,UAAA;AAAA,YACrB,EAAA;AAAA,YACA,GAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA;AAGN;;;;"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var CarouselReducer = require('./CarouselReducer.js');
|
|
7
|
+
|
|
8
|
+
const CarouselStateContext = core.createContext(
|
|
9
|
+
"CarouselStateContext",
|
|
10
|
+
{
|
|
11
|
+
slides: /* @__PURE__ */ new Map(),
|
|
12
|
+
activeSlideIndex: 0,
|
|
13
|
+
visibleSlides: 1,
|
|
14
|
+
focusedSlideIndex: 0,
|
|
15
|
+
carouselId: void 0
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
const CarouselDispatchContext = core.createContext(
|
|
19
|
+
"CarouselDispatchContext",
|
|
20
|
+
() => {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
function CarouselProvider({
|
|
25
|
+
children,
|
|
26
|
+
activeSlideIndex: activeSlideIndexProp,
|
|
27
|
+
defaultActiveSlideIndex = 0,
|
|
28
|
+
visibleSlides = 1,
|
|
29
|
+
id
|
|
30
|
+
}) {
|
|
31
|
+
const [activeSlideIndex, setActiveSlideIndex] = core.useControlled({
|
|
32
|
+
controlled: activeSlideIndexProp,
|
|
33
|
+
default: defaultActiveSlideIndex,
|
|
34
|
+
name: "Carousel",
|
|
35
|
+
state: "activeSlideIndex"
|
|
36
|
+
});
|
|
37
|
+
const [state, dispatch] = react.useReducer(CarouselReducer.carouselReducer, {
|
|
38
|
+
slides: /* @__PURE__ */ new Map(),
|
|
39
|
+
focusedSlideIndex: activeSlideIndex,
|
|
40
|
+
activeSlideIndex,
|
|
41
|
+
visibleSlides,
|
|
42
|
+
carouselId: id
|
|
43
|
+
});
|
|
44
|
+
react.useEffect(() => {
|
|
45
|
+
dispatch({
|
|
46
|
+
type: "updateSlideCount",
|
|
47
|
+
payload: visibleSlides
|
|
48
|
+
});
|
|
49
|
+
}, [visibleSlides]);
|
|
50
|
+
react.useEffect(() => {
|
|
51
|
+
dispatch({
|
|
52
|
+
type: "moveToIndex",
|
|
53
|
+
payload: activeSlideIndex
|
|
54
|
+
});
|
|
55
|
+
}, [activeSlideIndex]);
|
|
56
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CarouselStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(CarouselDispatchContext.Provider, { value: dispatch, children }) });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
exports.CarouselDispatchContext = CarouselDispatchContext;
|
|
60
|
+
exports.CarouselProvider = CarouselProvider;
|
|
61
|
+
exports.CarouselStateContext = CarouselStateContext;
|
|
62
|
+
//# sourceMappingURL=CarouselContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CarouselContext.js","sources":["../src/carousel/CarouselContext.tsx"],"sourcesContent":["import { createContext, useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useEffect, useReducer } from \"react\";\nimport {\n type CarouselReducerDispatch,\n type CarouselReducerState,\n carouselReducer,\n} from \"./CarouselReducer\";\n\nexport const CarouselStateContext = createContext<CarouselReducerState>(\n \"CarouselStateContext\",\n {\n slides: new Map(),\n activeSlideIndex: 0,\n visibleSlides: 1,\n focusedSlideIndex: 0,\n carouselId: undefined,\n },\n);\nexport const CarouselDispatchContext = createContext<CarouselReducerDispatch>(\n \"CarouselDispatchContext\",\n () => {\n return;\n },\n);\n\nexport function CarouselProvider({\n children,\n activeSlideIndex: activeSlideIndexProp,\n defaultActiveSlideIndex = 0,\n visibleSlides = 1,\n id,\n}: {\n children: ReactNode;\n activeSlideIndex?: number;\n defaultActiveSlideIndex?: number;\n visibleSlides?: number;\n id?: string;\n}) {\n const [activeSlideIndex, setActiveSlideIndex] = useControlled({\n controlled: activeSlideIndexProp,\n default: defaultActiveSlideIndex,\n name: \"Carousel\",\n state: \"activeSlideIndex\",\n });\n const [state, dispatch] = useReducer(carouselReducer, {\n slides: new Map(),\n focusedSlideIndex: activeSlideIndex,\n activeSlideIndex,\n visibleSlides,\n carouselId: id,\n });\n\n useEffect(() => {\n dispatch({\n type: \"updateSlideCount\",\n payload: visibleSlides,\n });\n }, [visibleSlides]);\n\n useEffect(() => {\n dispatch({\n type: \"moveToIndex\",\n payload: activeSlideIndex,\n });\n }, [activeSlideIndex]);\n\n return (\n <CarouselStateContext.Provider value={state}>\n <CarouselDispatchContext.Provider value={dispatch}>\n {children}\n </CarouselDispatchContext.Provider>\n </CarouselStateContext.Provider>\n );\n}\n"],"names":["createContext","useControlled","useReducer","carouselReducer","useEffect","jsx"],"mappings":";;;;;;;AAQO,MAAM,oBAAuB,GAAAA,kBAAA;AAAA,EAClC,sBAAA;AAAA,EACA;AAAA,IACE,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,gBAAkB,EAAA,CAAA;AAAA,IAClB,aAAe,EAAA,CAAA;AAAA,IACf,iBAAmB,EAAA,CAAA;AAAA,IACnB,UAAY,EAAA,KAAA;AAAA;AAEhB;AACO,MAAM,uBAA0B,GAAAA,kBAAA;AAAA,EACrC,yBAAA;AAAA,EACA,MAAM;AACJ,IAAA;AAAA;AAEJ;AAEO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,QAAA;AAAA,EACA,gBAAkB,EAAA,oBAAA;AAAA,EAClB,uBAA0B,GAAA,CAAA;AAAA,EAC1B,aAAgB,GAAA,CAAA;AAAA,EAChB;AACF,CAMG,EAAA;AACD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IAC5D,UAAY,EAAA,oBAAA;AAAA,IACZ,OAAS,EAAA,uBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,iBAAWC,+BAAiB,EAAA;AAAA,IACpD,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,iBAAmB,EAAA,gBAAA;AAAA,IACnB,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAAC,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,kBAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,uBACGC,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,KAAA,EACpC,QAAC,kBAAAA,cAAA,CAAA,uBAAA,CAAwB,QAAxB,EAAA,EAAiC,KAAO,EAAA,QAAA,EACtC,UACH,CACF,EAAA,CAAA;AAEJ;;;;;;"}
|