@salt-ds/lab 1.0.0-alpha.64 → 1.0.0-alpha.66
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 -269
- 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 -6
- 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 -3
- 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/slider/RangeSlider.js +0 -182
- package/dist-cjs/slider/RangeSlider.js.map +0 -1
- package/dist-cjs/slider/Slider.js +0 -145
- package/dist-cjs/slider/Slider.js.map +0 -1
- package/dist-cjs/slider/internal/SliderThumb.css.js +0 -6
- package/dist-cjs/slider/internal/SliderThumb.css.js.map +0 -1
- package/dist-cjs/slider/internal/SliderThumb.js +0 -141
- package/dist-cjs/slider/internal/SliderThumb.js.map +0 -1
- package/dist-cjs/slider/internal/SliderTooltip.css.js +0 -6
- package/dist-cjs/slider/internal/SliderTooltip.css.js.map +0 -1
- package/dist-cjs/slider/internal/SliderTooltip.js +0 -58
- package/dist-cjs/slider/internal/SliderTooltip.js.map +0 -1
- package/dist-cjs/slider/internal/SliderTrack.css.js +0 -6
- package/dist-cjs/slider/internal/SliderTrack.css.js.map +0 -1
- package/dist-cjs/slider/internal/SliderTrack.js +0 -168
- package/dist-cjs/slider/internal/SliderTrack.js.map +0 -1
- package/dist-cjs/slider/internal/useRangeSliderThumb.js +0 -233
- package/dist-cjs/slider/internal/useRangeSliderThumb.js.map +0 -1
- package/dist-cjs/slider/internal/useSliderThumb.js +0 -162
- package/dist-cjs/slider/internal/useSliderThumb.js.map +0 -1
- package/dist-cjs/slider/internal/utils.js +0 -113
- package/dist-cjs/slider/internal/utils.js.map +0 -1
- package/dist-es/slider/RangeSlider.js +0 -180
- package/dist-es/slider/RangeSlider.js.map +0 -1
- package/dist-es/slider/Slider.js +0 -143
- package/dist-es/slider/Slider.js.map +0 -1
- package/dist-es/slider/internal/SliderThumb.css.js +0 -4
- package/dist-es/slider/internal/SliderThumb.css.js.map +0 -1
- package/dist-es/slider/internal/SliderThumb.js +0 -139
- package/dist-es/slider/internal/SliderThumb.js.map +0 -1
- package/dist-es/slider/internal/SliderTooltip.css.js +0 -4
- package/dist-es/slider/internal/SliderTooltip.css.js.map +0 -1
- package/dist-es/slider/internal/SliderTooltip.js +0 -56
- package/dist-es/slider/internal/SliderTooltip.js.map +0 -1
- package/dist-es/slider/internal/SliderTrack.css.js +0 -4
- package/dist-es/slider/internal/SliderTrack.css.js.map +0 -1
- package/dist-es/slider/internal/SliderTrack.js +0 -166
- package/dist-es/slider/internal/SliderTrack.js.map +0 -1
- package/dist-es/slider/internal/useRangeSliderThumb.js +0 -231
- package/dist-es/slider/internal/useRangeSliderThumb.js.map +0 -1
- package/dist-es/slider/internal/useSliderThumb.js +0 -160
- package/dist-es/slider/internal/useSliderThumb.js.map +0 -1
- package/dist-es/slider/internal/utils.js +0 -105
- package/dist-es/slider/internal/utils.js.map +0 -1
- package/dist-types/slider/RangeSlider.d.ts +0 -99
- package/dist-types/slider/Slider.d.ts +0 -100
- package/dist-types/slider/index.d.ts +0 -2
- package/dist-types/slider/internal/SliderThumb.d.ts +0 -28
- package/dist-types/slider/internal/SliderTooltip.d.ts +0 -6
- package/dist-types/slider/internal/SliderTrack.d.ts +0 -24
- package/dist-types/slider/internal/useRangeSliderThumb.d.ts +0 -30
- package/dist-types/slider/internal/useSliderThumb.d.ts +0 -28
- package/dist-types/slider/internal/utils.d.ts +0 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,69 @@
|
|
|
1
1
|
# @salt-ds/lab
|
|
2
2
|
|
|
3
|
+
## 1.0.0-alpha.66
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 799cf41: Updated `Carousel` component
|
|
8
|
+
|
|
9
|
+
- Renamed `initialIndex` to `defaultActiveSlideIndex`
|
|
10
|
+
- Added controlled `activeSlideIndex`
|
|
11
|
+
- Added `visibleSlides` to control how many slides can be visible at a time.
|
|
12
|
+
- Added `CarouselSlider` and extracted the controls to its own component, `CarouselControls` to improve composition.
|
|
13
|
+
- Added appearance in `CarouselSlide` to allow for border items.
|
|
14
|
+
- Added keyboard navigation.
|
|
15
|
+
- Removed usage of `DeckLayout`.
|
|
16
|
+
|
|
17
|
+
before:
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
<Carousel>
|
|
21
|
+
{items.map((item, index) => (
|
|
22
|
+
<CarouselSlide
|
|
23
|
+
key={index}
|
|
24
|
+
ButtonBar={<Button variant="cta">Learn more</Button>}
|
|
25
|
+
description="Lorem ipsum"
|
|
26
|
+
title="Carousel slide title"
|
|
27
|
+
/>
|
|
28
|
+
))}
|
|
29
|
+
</Carousel>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
after:
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
<Carousel>
|
|
36
|
+
<CarouselControls />
|
|
37
|
+
<CarouselSlider>
|
|
38
|
+
{items.map((slide) => (
|
|
39
|
+
<CarouselSlide
|
|
40
|
+
key={slide.title}
|
|
41
|
+
header={<H3>{slide.title}</H3>}
|
|
42
|
+
actions={<Link href="#">{slide.link}</Link>}
|
|
43
|
+
>
|
|
44
|
+
<Text>{slide.content}</Text>
|
|
45
|
+
</CarouselSlide>
|
|
46
|
+
))}
|
|
47
|
+
</CarouselSlider>
|
|
48
|
+
</Carousel>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- Updated dependencies [851b2eb]
|
|
54
|
+
- @salt-ds/core@1.44.1
|
|
55
|
+
|
|
56
|
+
## 1.0.0-alpha.65
|
|
57
|
+
|
|
58
|
+
### Minor Changes
|
|
59
|
+
|
|
60
|
+
- 7fe2106: Removed `Slider` and `RangeSlider` from labs and promoted to core.
|
|
61
|
+
|
|
62
|
+
### Patch Changes
|
|
63
|
+
|
|
64
|
+
- Updated dependencies [7fe2106]
|
|
65
|
+
- @salt-ds/core@1.44.0
|
|
66
|
+
|
|
3
67
|
## 1.0.0-alpha.64
|
|
4
68
|
|
|
5
69
|
### Minor Changes
|
|
@@ -10,6 +74,7 @@
|
|
|
10
74
|
### Patch Changes
|
|
11
75
|
|
|
12
76
|
- 2bdfbfb: Fixed DateInput adornment size and spacing, to align with rest of form controls.
|
|
77
|
+
- 5725384: Fixed the focus visible behaviour of Slider and RangeSlider.
|
|
13
78
|
- Updated dependencies [78eaee3]
|
|
14
79
|
- Updated dependencies [20abfb6]
|
|
15
80
|
- Updated dependencies [c59472d]
|
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 */
|
|
@@ -4502,259 +4597,6 @@
|
|
|
4502
4597
|
font-weight: 700;
|
|
4503
4598
|
}
|
|
4504
4599
|
|
|
4505
|
-
/* src/slider/internal/SliderThumb.css */
|
|
4506
|
-
.saltSliderThumb {
|
|
4507
|
-
align-items: center;
|
|
4508
|
-
background: var(--salt-accent-borderColor);
|
|
4509
|
-
cursor: var(--salt-selectable-cursor-hover);
|
|
4510
|
-
display: flex;
|
|
4511
|
-
height: var(--salt-size-selectable);
|
|
4512
|
-
outline: none;
|
|
4513
|
-
position: absolute;
|
|
4514
|
-
top: calc(((var(--salt-size-selectable) - var(--salt-size-bar)) / 2) * -1);
|
|
4515
|
-
transform: translateX(-50%);
|
|
4516
|
-
width: var(--salt-size-border-strong);
|
|
4517
|
-
}
|
|
4518
|
-
.saltSliderThumb-disabled {
|
|
4519
|
-
background: var(--salt-accent-borderColor-disabled);
|
|
4520
|
-
pointer-events: none;
|
|
4521
|
-
}
|
|
4522
|
-
.saltSliderThumb-focusVisible {
|
|
4523
|
-
outline-style: var(--salt-focused-outlineStyle);
|
|
4524
|
-
outline-width: var(--salt-focused-outlineWidth);
|
|
4525
|
-
outline-offset: var(--salt-focused-outlineOffset);
|
|
4526
|
-
outline-color: var(--salt-focused-outlineColor);
|
|
4527
|
-
}
|
|
4528
|
-
.saltSliderThumb:active,
|
|
4529
|
-
.saltSliderThumb-dragging {
|
|
4530
|
-
cursor: var(--draggable-grab-cursor-active);
|
|
4531
|
-
}
|
|
4532
|
-
.saltSliderThumb-input {
|
|
4533
|
-
border: 0;
|
|
4534
|
-
appearance: none;
|
|
4535
|
-
cursor: var(--salt-selectable-cursor-hover);
|
|
4536
|
-
height: var(--salt-size-base);
|
|
4537
|
-
left: var(--slider-progressPercentage);
|
|
4538
|
-
margin: 0;
|
|
4539
|
-
opacity: 0.0001;
|
|
4540
|
-
overflow: hidden;
|
|
4541
|
-
-webkit-appearance: none;
|
|
4542
|
-
pointer-events: none;
|
|
4543
|
-
width: var(--salt-size-base);
|
|
4544
|
-
padding: 0;
|
|
4545
|
-
position: absolute;
|
|
4546
|
-
transform: translateX(-50%);
|
|
4547
|
-
}
|
|
4548
|
-
.saltSliderThumb-secondThumb {
|
|
4549
|
-
z-index: 2;
|
|
4550
|
-
}
|
|
4551
|
-
.saltSliderThumb-accessibleText {
|
|
4552
|
-
position: absolute;
|
|
4553
|
-
height: 1px;
|
|
4554
|
-
width: 1px;
|
|
4555
|
-
padding: 0;
|
|
4556
|
-
margin: -1px;
|
|
4557
|
-
overflow: hidden;
|
|
4558
|
-
clip: rect(0, 0, 0, 0);
|
|
4559
|
-
white-space: nowrap;
|
|
4560
|
-
border-width: 0;
|
|
4561
|
-
}
|
|
4562
|
-
|
|
4563
|
-
/* src/slider/internal/SliderTooltip.css */
|
|
4564
|
-
.saltSliderTooltip {
|
|
4565
|
-
background: var(--salt-container-primary-background);
|
|
4566
|
-
border-color: var(--salt-container-primary-borderColor);
|
|
4567
|
-
border-style: var(--saltTooltip-borderStyle, var(--salt-container-borderStyle));
|
|
4568
|
-
border-width: var(--saltTooltip-borderWidth, var(--salt-size-border));
|
|
4569
|
-
border-radius: var(--saltTooltip-borderRadius, var(--salt-palette-corner-weak, 0));
|
|
4570
|
-
box-shadow: var(--saltTooltip-shadow, var(--salt-overlayable-shadow-popout));
|
|
4571
|
-
bottom: 50%;
|
|
4572
|
-
left: 50%;
|
|
4573
|
-
padding: var(--salt-spacing-50) var(--salt-spacing-100);
|
|
4574
|
-
position: absolute;
|
|
4575
|
-
transform: translate(-50%, -50%);
|
|
4576
|
-
text-align: var(--saltTooltip-textAlign, left);
|
|
4577
|
-
user-select: none;
|
|
4578
|
-
visibility: hidden;
|
|
4579
|
-
z-index: var(--saltTooltip-zIndex, var(--salt-zIndex-flyover));
|
|
4580
|
-
}
|
|
4581
|
-
.saltSliderTooltip-visible,
|
|
4582
|
-
.saltSliderTooltip:hover {
|
|
4583
|
-
visibility: visible;
|
|
4584
|
-
}
|
|
4585
|
-
.saltSliderTooltip-arrow {
|
|
4586
|
-
fill: var(--salt-container-primary-background);
|
|
4587
|
-
height: var(--salt-size-icon);
|
|
4588
|
-
left: 50%;
|
|
4589
|
-
position: absolute;
|
|
4590
|
-
pointer-events: none;
|
|
4591
|
-
top: 100%;
|
|
4592
|
-
transform: translateX(-50%);
|
|
4593
|
-
stroke: var(--salt-container-primary-borderColor);
|
|
4594
|
-
stroke-width: var(--salt-size-border);
|
|
4595
|
-
width: var(--salt-size-icon);
|
|
4596
|
-
}
|
|
4597
|
-
.saltSliderTooltip-text {
|
|
4598
|
-
white-space: nowrap;
|
|
4599
|
-
}
|
|
4600
|
-
|
|
4601
|
-
/* src/slider/internal/SliderTrack.css */
|
|
4602
|
-
.saltSliderTrack {
|
|
4603
|
-
--slider-track-background: var(--salt-track-borderColor);
|
|
4604
|
-
--slider-track-fill: var(--salt-accent-borderColor);
|
|
4605
|
-
--slider-progressPercentage: 0%;
|
|
4606
|
-
--slider-tick-height: calc((var(--salt-size-selectable) - var(--salt-size-bar)) / 2);
|
|
4607
|
-
--slider-progressPercentageStart: 0%;
|
|
4608
|
-
--slider-progressPercentageEnd: 0%;
|
|
4609
|
-
display: flex;
|
|
4610
|
-
width: 100%;
|
|
4611
|
-
}
|
|
4612
|
-
.saltSliderTrack.saltSliderTrack-withMarks {
|
|
4613
|
-
margin-bottom: calc(var(--salt-size-base) / 2);
|
|
4614
|
-
}
|
|
4615
|
-
.saltSliderTrack-disabled {
|
|
4616
|
-
cursor: var(--salt-selectable-cursor-disabled);
|
|
4617
|
-
}
|
|
4618
|
-
.saltSliderTrack-container {
|
|
4619
|
-
align-items: center;
|
|
4620
|
-
display: flex;
|
|
4621
|
-
flex-direction: row;
|
|
4622
|
-
gap: var(--salt-spacing-100);
|
|
4623
|
-
width: 100%;
|
|
4624
|
-
}
|
|
4625
|
-
.saltSliderTrack-wrapper {
|
|
4626
|
-
align-items: center;
|
|
4627
|
-
cursor: var(--salt-selectable-cursor-hover);
|
|
4628
|
-
display: flex;
|
|
4629
|
-
flex: 1;
|
|
4630
|
-
height: var(--salt-size-selectable);
|
|
4631
|
-
position: relative;
|
|
4632
|
-
width: 100%;
|
|
4633
|
-
}
|
|
4634
|
-
.saltSliderTrack-disabled,
|
|
4635
|
-
.saltSliderTrack-disabled .saltSliderTrack-wrapper {
|
|
4636
|
-
cursor: var(--salt-selectable-cursor-disabled);
|
|
4637
|
-
}
|
|
4638
|
-
.saltSliderTrack-disabled .saltSliderTrack-wrapper {
|
|
4639
|
-
pointer-events: none;
|
|
4640
|
-
}
|
|
4641
|
-
.saltSliderTrack-rail {
|
|
4642
|
-
display: flex;
|
|
4643
|
-
flex: 100%;
|
|
4644
|
-
height: var(--salt-size-bar);
|
|
4645
|
-
justify-content: space-between;
|
|
4646
|
-
position: relative;
|
|
4647
|
-
}
|
|
4648
|
-
.saltSliderTrack-rail::before,
|
|
4649
|
-
.saltSliderTrack-rail::after {
|
|
4650
|
-
content: "";
|
|
4651
|
-
display: block;
|
|
4652
|
-
height: 100%;
|
|
4653
|
-
}
|
|
4654
|
-
.saltSliderTrack-rail::before {
|
|
4655
|
-
background: var(--slider-track-fill);
|
|
4656
|
-
border-top-left-radius: var(--salt-palette-corner-weaker);
|
|
4657
|
-
border-bottom-left-radius: var(--salt-palette-corner-weaker);
|
|
4658
|
-
width: calc(var(--slider-progressPercentage) - 1.5 * var(--salt-size-border-strong));
|
|
4659
|
-
}
|
|
4660
|
-
.saltSliderTrack-hasMinTick.saltSliderTrack-rail::before {
|
|
4661
|
-
border-bottom-left-radius: unset;
|
|
4662
|
-
}
|
|
4663
|
-
.saltSliderTrack-rail::after {
|
|
4664
|
-
background: var(--slider-track-background);
|
|
4665
|
-
border-top-right-radius: var(--salt-palette-corner-weaker);
|
|
4666
|
-
border-bottom-right-radius: var(--salt-palette-corner-weaker);
|
|
4667
|
-
width: calc(100% - var(--slider-progressPercentage) - 1.5 * var(--salt-size-border-strong));
|
|
4668
|
-
}
|
|
4669
|
-
.saltSliderTrack-hasMaxTick.saltSliderTrack-rail::after {
|
|
4670
|
-
border-bottom-right-radius: unset;
|
|
4671
|
-
}
|
|
4672
|
-
.saltSliderTrack-range .saltSliderTrack-rail::before {
|
|
4673
|
-
background: var(--slider-track-background);
|
|
4674
|
-
width: calc(var(--slider-progressPercentageStart) - (var(--salt-size-border-strong) * 1.5));
|
|
4675
|
-
}
|
|
4676
|
-
.saltSliderTrack-range .saltSliderTrack-rail::after {
|
|
4677
|
-
background: var(--slider-track-background);
|
|
4678
|
-
width: calc(100% - var(--slider-progressPercentageEnd) - (var(--salt-size-border-strong) * 1.5));
|
|
4679
|
-
}
|
|
4680
|
-
.saltSliderTrack-range .saltSliderTrack-rail .saltSliderTrack-fill {
|
|
4681
|
-
background: var(--slider-track-fill);
|
|
4682
|
-
height: 100%;
|
|
4683
|
-
left: calc(var(--slider-progressPercentageStart) + 1.5 * var(--salt-size-border-strong));
|
|
4684
|
-
position: absolute;
|
|
4685
|
-
width: calc(var(--slider-progressPercentageEnd) - var(--slider-progressPercentageStart) - var(--salt-size-border-strong) * 3);
|
|
4686
|
-
}
|
|
4687
|
-
.saltSliderTrack-minLabel,
|
|
4688
|
-
.saltSliderTrack-maxLabel {
|
|
4689
|
-
user-select: none;
|
|
4690
|
-
}
|
|
4691
|
-
.saltSliderTrack-dragging,
|
|
4692
|
-
.saltSliderTrack-dragging .saltSliderTrack-wrapper {
|
|
4693
|
-
cursor: var(--salt-draggable-grab-cursor-active);
|
|
4694
|
-
}
|
|
4695
|
-
.saltSliderTrack-disabled {
|
|
4696
|
-
--slider-track-fill: var(--salt-accent-borderColor-disabled);
|
|
4697
|
-
--slider-track-background: var(--salt-track-borderColor-disabled);
|
|
4698
|
-
}
|
|
4699
|
-
.saltSliderTrack-ticks {
|
|
4700
|
-
top: calc(var(--salt-size-bar) + var(--slider-tick-height));
|
|
4701
|
-
position: absolute;
|
|
4702
|
-
width: 100%;
|
|
4703
|
-
}
|
|
4704
|
-
.saltSliderTrack-tick {
|
|
4705
|
-
background: var(--slider-track-background);
|
|
4706
|
-
height: var(--slider-tick-height);
|
|
4707
|
-
position: absolute;
|
|
4708
|
-
transform: translate(-50%);
|
|
4709
|
-
width: var(--salt-size-border-strong);
|
|
4710
|
-
}
|
|
4711
|
-
.saltSliderTrack-withTicks .saltSliderTrack-tickHidden {
|
|
4712
|
-
visibility: hidden;
|
|
4713
|
-
}
|
|
4714
|
-
.saltSliderTrack-tickSelected {
|
|
4715
|
-
background: var(--slider-track-fill);
|
|
4716
|
-
}
|
|
4717
|
-
.saltSliderTrack-tick:first-of-type {
|
|
4718
|
-
transform: unset;
|
|
4719
|
-
}
|
|
4720
|
-
.saltSliderTrack-tick:last-of-type {
|
|
4721
|
-
transform: translateX(-100%);
|
|
4722
|
-
}
|
|
4723
|
-
.saltSliderTrack-marks {
|
|
4724
|
-
position: absolute;
|
|
4725
|
-
user-select: none;
|
|
4726
|
-
width: 100%;
|
|
4727
|
-
}
|
|
4728
|
-
.saltSliderTrack-markLabel {
|
|
4729
|
-
color: var(--salt-content-secondary-foreground);
|
|
4730
|
-
font-family: var(--salt-text-label-fontFamily);
|
|
4731
|
-
font-weight: var(--salt-text-label-fontWeight);
|
|
4732
|
-
font-size: var(--salt-text-label-fontSize);
|
|
4733
|
-
line-height: var(--salt-text-label-lineHeight);
|
|
4734
|
-
overflow: hidden;
|
|
4735
|
-
position: absolute;
|
|
4736
|
-
text-overflow: ellipsis;
|
|
4737
|
-
transform: translateX(-50%);
|
|
4738
|
-
top: calc(var(--slider-tick-height) + var(--salt-spacing-50));
|
|
4739
|
-
white-space: nowrap;
|
|
4740
|
-
}
|
|
4741
|
-
.saltSliderTrack-constrainLabelPosition .saltSliderTrack-markLabel:first-of-type {
|
|
4742
|
-
transform: translateX(0%);
|
|
4743
|
-
}
|
|
4744
|
-
.saltSliderTrack-constrainLabelPosition .saltSliderTrack-markLabel:last-of-type {
|
|
4745
|
-
transform: translateX(-100%);
|
|
4746
|
-
}
|
|
4747
|
-
.saltFormField .saltSliderTrack.saltSliderTrack-withMark {
|
|
4748
|
-
margin-bottom: 0;
|
|
4749
|
-
}
|
|
4750
|
-
.saltFormField .saltSliderTrack-container {
|
|
4751
|
-
--saltFormField-label-width: 10%;
|
|
4752
|
-
height: var(--salt-size-base);
|
|
4753
|
-
}
|
|
4754
|
-
.saltFormField .saltSliderTrack-markLabel {
|
|
4755
|
-
top: calc((var(--salt-size-base) - var(--salt-size-bar)) / 2);
|
|
4756
|
-
}
|
|
4757
|
-
|
|
4758
4600
|
/* src/tabs/drag-drop/Draggable.css */
|
|
4759
4601
|
.saltDraggable {
|
|
4760
4602
|
background: transparent;
|
|
@@ -4850,4 +4692,4 @@
|
|
|
4850
4692
|
margin: calc(var(--salt-size-unit) / 2) 0;
|
|
4851
4693
|
}
|
|
4852
4694
|
|
|
4853
|
-
/* src/
|
|
4695
|
+
/* src/89b851ef-eba4-4203-af10-5eb7e5bfc25b.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;;;;"}
|