@oxy.so/bloom 4.28.0 → 4.29.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/docs/carousel.mdx +2 -0
- package/lib/commonjs/carousel/Carousel.js +60 -25
- package/lib/commonjs/carousel/Carousel.js.map +1 -1
- package/lib/module/carousel/Carousel.js +61 -26
- package/lib/module/carousel/Carousel.js.map +1 -1
- package/lib/typescript/commonjs/carousel/Carousel.d.ts +1 -1
- package/lib/typescript/commonjs/carousel/Carousel.d.ts.map +1 -1
- package/lib/typescript/commonjs/carousel/types.d.ts +13 -0
- package/lib/typescript/commonjs/carousel/types.d.ts.map +1 -1
- package/lib/typescript/module/carousel/Carousel.d.ts +1 -1
- package/lib/typescript/module/carousel/Carousel.d.ts.map +1 -1
- package/lib/typescript/module/carousel/types.d.ts +13 -0
- package/lib/typescript/module/carousel/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/carousel/Carousel.tsx +41 -8
- package/src/carousel/types.ts +13 -0
package/docs/carousel.mdx
CHANGED
|
@@ -26,10 +26,12 @@ import { Carousel, CarouselItem } from '@oxy.so/bloom/carousel';
|
|
|
26
26
|
|
|
27
27
|
| Prop | Default | |
|
|
28
28
|
| --- | --- | --- |
|
|
29
|
+
| `header` | | Leading content of the arrows row, e.g. a section title. Header at the start, arrows at the end — one row, not two. |
|
|
29
30
|
| `showArrows` | `true` | Prev/next buttons, right-aligned above the track. They disable at each end. |
|
|
30
31
|
| `showDots` | `true` | Position indicator; never shown for a single slide. Each dot is a button. |
|
|
31
32
|
| `align` | `'start'` | Where a slide rests when it snaps: `'start'` or `'center'`. |
|
|
32
33
|
| `gap` | `16` | Space between slides, px. |
|
|
34
|
+
| `inset` | `0` | Horizontal padding of the header row, the dots and the track's two ends. Slides scroll under it to the edges, and a start-aligned slide snaps to the inset rather than flush. |
|
|
33
35
|
| `onIndexChange` | | The slide in view changed. |
|
|
34
36
|
| `previousLabel` / `nextLabel` / `dotLabel` | English | Localised button names. |
|
|
35
37
|
|
|
@@ -25,6 +25,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
25
25
|
* prev/next buttons above and a position indicator below.
|
|
26
26
|
*
|
|
27
27
|
* column gap 16
|
|
28
|
+
* header optional leading content of the arrows row (a title)
|
|
28
29
|
* arrows right-aligned row, gap 8, small secondary icon buttons
|
|
29
30
|
* (Bloom's pill `Button`, sized to a 32px square icon button)
|
|
30
31
|
* track native horizontal scrolling that SNAPS to each slide — CSS
|
|
@@ -83,6 +84,7 @@ const DOT = '[data-bloom-carousel-dot]';
|
|
|
83
84
|
const BLOOM_CAROUSEL_CSS = `
|
|
84
85
|
${TRACK} {
|
|
85
86
|
scroll-snap-type: x mandatory;
|
|
87
|
+
scroll-padding-inline: var(--bloom-carousel-inset, 0px);
|
|
86
88
|
overscroll-behavior-x: contain;
|
|
87
89
|
scrollbar-width: none;
|
|
88
90
|
outline: none;
|
|
@@ -233,10 +235,12 @@ function CarouselDot({
|
|
|
233
235
|
const CarouselComponent = function Carousel({
|
|
234
236
|
children,
|
|
235
237
|
accessibilityLabel,
|
|
238
|
+
header,
|
|
236
239
|
showArrows = true,
|
|
237
240
|
showDots = true,
|
|
238
241
|
align = 'start',
|
|
239
242
|
gap = 16,
|
|
243
|
+
inset = 0,
|
|
240
244
|
onIndexChange,
|
|
241
245
|
previousLabel = 'Previous slide',
|
|
242
246
|
nextLabel = 'Next slide',
|
|
@@ -302,10 +306,10 @@ const CarouselComponent = function Carousel({
|
|
|
302
306
|
}
|
|
303
307
|
}, [count, trackWidth]);
|
|
304
308
|
const targetFor = (0, _react.useCallback)(item => {
|
|
305
|
-
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x;
|
|
309
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
306
310
|
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
307
311
|
return Math.min(Math.max(0, raw), max);
|
|
308
|
-
}, [align, trackWidth]);
|
|
312
|
+
}, [align, inset, trackWidth]);
|
|
309
313
|
const recomputeSnaps = (0, _react.useCallback)(() => {
|
|
310
314
|
if (IS_WEB) return; // CSS scroll-snap owns snapping on web.
|
|
311
315
|
const all = offsets.current.slice(0, count);
|
|
@@ -332,6 +336,25 @@ const CarouselComponent = function Carousel({
|
|
|
332
336
|
animated: !reducedMotion
|
|
333
337
|
});
|
|
334
338
|
};
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* The arrows step from where the track IS, not from the active index. Slides
|
|
342
|
+
* narrower than the track share the end offset — every one that cannot reach
|
|
343
|
+
* the start edge clamps to it — so near the end "the slide before the active
|
|
344
|
+
* one" is often where the track already rests, and an index step would scroll
|
|
345
|
+
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
346
|
+
* instead (1px of slack, as in `measure`).
|
|
347
|
+
*/
|
|
348
|
+
const step = direction => {
|
|
349
|
+
const x = scroll.current.x;
|
|
350
|
+
const targets = offsets.current.slice(0, count).filter(item => Boolean(item)).map(targetFor);
|
|
351
|
+
const next = direction === 1 ? targets.filter(t => t > x + 1).reduce((a, b) => Math.min(a, b), Number.POSITIVE_INFINITY) : targets.filter(t => t < x - 1).reduce((a, b) => Math.max(a, b), Number.NEGATIVE_INFINITY);
|
|
352
|
+
if (!Number.isFinite(next)) return;
|
|
353
|
+
scrollRef.current?.scrollTo({
|
|
354
|
+
x: next,
|
|
355
|
+
animated: !reducedMotion
|
|
356
|
+
});
|
|
357
|
+
};
|
|
335
358
|
const onScroll = event => {
|
|
336
359
|
const {
|
|
337
360
|
contentOffset,
|
|
@@ -359,7 +382,9 @@ const CarouselComponent = function Carousel({
|
|
|
359
382
|
const trackStyle = {
|
|
360
383
|
width: '100%',
|
|
361
384
|
// The `:focus-visible` ring colour, read by the adopted sheet.
|
|
362
|
-
'--bloom-carousel-ring': paint.ring
|
|
385
|
+
'--bloom-carousel-ring': paint.ring,
|
|
386
|
+
// Where a start-aligned slide snaps to on web, matching `inset` on native.
|
|
387
|
+
'--bloom-carousel-inset': `${inset}px`
|
|
363
388
|
};
|
|
364
389
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
365
390
|
role: "group",
|
|
@@ -373,30 +398,38 @@ const CarouselComponent = function Carousel({
|
|
|
373
398
|
gap: 16
|
|
374
399
|
}, style],
|
|
375
400
|
testID: testID,
|
|
376
|
-
children: [showArrows && count > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
401
|
+
children: [header != null || showArrows && count > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
377
402
|
style: {
|
|
378
403
|
flexDirection: 'row',
|
|
379
404
|
alignItems: 'center',
|
|
380
|
-
|
|
381
|
-
|
|
405
|
+
gap: 8,
|
|
406
|
+
paddingHorizontal: inset
|
|
382
407
|
},
|
|
383
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
408
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
409
|
+
style: {
|
|
410
|
+
flex: 1,
|
|
411
|
+
minWidth: 0
|
|
412
|
+
},
|
|
413
|
+
children: header
|
|
414
|
+
}), showArrows && count > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
415
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
|
|
416
|
+
size: "sm",
|
|
417
|
+
icon: _RiArrowLeftSLine.RiArrowLeftSLine,
|
|
418
|
+
accessibilityLabel: previousLabel,
|
|
419
|
+
disabled: atStart,
|
|
420
|
+
onPress: () => step(-1),
|
|
421
|
+
appearance: "subtle",
|
|
422
|
+
tone: "neutral"
|
|
423
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
|
|
424
|
+
size: "sm",
|
|
425
|
+
icon: _RiArrowRightSLine.RiArrowRightSLine,
|
|
426
|
+
accessibilityLabel: nextLabel,
|
|
427
|
+
disabled: atEnd,
|
|
428
|
+
onPress: () => step(1),
|
|
429
|
+
appearance: "subtle",
|
|
430
|
+
tone: "neutral"
|
|
431
|
+
})]
|
|
432
|
+
}) : null]
|
|
400
433
|
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.CarouselContext.Provider, {
|
|
401
434
|
value: contextValue,
|
|
402
435
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
|
|
@@ -418,7 +451,8 @@ const CarouselComponent = function Carousel({
|
|
|
418
451
|
disableIntervalMomentum: true,
|
|
419
452
|
style: trackStyle,
|
|
420
453
|
contentContainerStyle: {
|
|
421
|
-
gap
|
|
454
|
+
gap,
|
|
455
|
+
paddingHorizontal: inset
|
|
422
456
|
},
|
|
423
457
|
children: slides.map((child, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.CarouselItemIndexContext.Provider, {
|
|
424
458
|
value: index,
|
|
@@ -430,7 +464,8 @@ const CarouselComponent = function Carousel({
|
|
|
430
464
|
flexDirection: 'row',
|
|
431
465
|
alignItems: 'center',
|
|
432
466
|
justifyContent: 'center',
|
|
433
|
-
gap: 6
|
|
467
|
+
gap: 6,
|
|
468
|
+
paddingHorizontal: inset
|
|
434
469
|
},
|
|
435
470
|
children: Array.from({
|
|
436
471
|
length: count
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_button","_shared","_RiArrowLeftSLine","_RiArrowRightSLine","_useInteractionState","_interactiveWebCss","_tokens","_webData","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","resolveButtonRamps","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","useContext","CarouselContext","index","CarouselItemIndexContext","reportOffset","onLayout","useCallback","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","jsx","View","webDataSet","bloomCarouselItem","role","count","flexShrink","exports","memo","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","useInteractionState","useRef","Animated","Value","current","useEffect","to","setValue","timing","toValue","duration","useNativeDriver","start","background","Pressable","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","borderRadius","full","backgroundColor","CarouselComponent","Carousel","showArrows","showDots","align","gap","onIndexChange","previousLabel","nextLabel","dotLabel","useTheme","useInteractiveWebCss","useReducedMotion","useMemo","slides","Children","toArray","filter","isValidElement","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","useState","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","map","scrollToIndex","target","scrollTo","animated","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","jsxs","flexDirection","alignItems","justifyContent","Button","size","icon","RiArrowLeftSLine","disabled","appearance","tone","RiArrowRightSLine","Provider","value","ScrollView","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_button","_shared","_RiArrowLeftSLine","_RiArrowRightSLine","_useInteractionState","_interactiveWebCss","_tokens","_webData","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","resolveButtonRamps","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","useContext","CarouselContext","index","CarouselItemIndexContext","reportOffset","onLayout","useCallback","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","jsx","View","webDataSet","bloomCarouselItem","role","count","flexShrink","exports","memo","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","useInteractionState","useRef","Animated","Value","current","useEffect","to","setValue","timing","toValue","duration","useNativeDriver","start","background","Pressable","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","borderRadius","full","backgroundColor","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","useTheme","useInteractiveWebCss","useReducedMotion","useMemo","slides","Children","toArray","filter","isValidElement","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","useState","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","map","scrollToIndex","target","scrollTo","animated","step","direction","targets","Boolean","reduce","a","b","NEGATIVE_INFINITY","isFinite","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","jsxs","flexDirection","alignItems","paddingHorizontal","flex","minWidth","Fragment","Button","size","icon","RiArrowLeftSLine","disabled","appearance","tone","RiArrowRightSLine","Provider","value","ScrollView","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,12 +13,13 @@ import { borderRadius } from "../styles/tokens.js";
|
|
|
13
13
|
import { webDataSet } from "../styles/web-data.js";
|
|
14
14
|
import { useTheme } from "../theme/use-theme.js";
|
|
15
15
|
import { CarouselContext, CarouselItemIndexContext } from "./context.js";
|
|
16
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
17
|
/**
|
|
18
18
|
* A gallery carousel: a horizontal run of slides you scroll through, with
|
|
19
19
|
* prev/next buttons above and a position indicator below.
|
|
20
20
|
*
|
|
21
21
|
* column gap 16
|
|
22
|
+
* header optional leading content of the arrows row (a title)
|
|
22
23
|
* arrows right-aligned row, gap 8, small secondary icon buttons
|
|
23
24
|
* (Bloom's pill `Button`, sized to a 32px square icon button)
|
|
24
25
|
* track native horizontal scrolling that SNAPS to each slide — CSS
|
|
@@ -77,6 +78,7 @@ const DOT = '[data-bloom-carousel-dot]';
|
|
|
77
78
|
const BLOOM_CAROUSEL_CSS = `
|
|
78
79
|
${TRACK} {
|
|
79
80
|
scroll-snap-type: x mandatory;
|
|
81
|
+
scroll-padding-inline: var(--bloom-carousel-inset, 0px);
|
|
80
82
|
overscroll-behavior-x: contain;
|
|
81
83
|
scrollbar-width: none;
|
|
82
84
|
outline: none;
|
|
@@ -227,10 +229,12 @@ function CarouselDot({
|
|
|
227
229
|
const CarouselComponent = function Carousel({
|
|
228
230
|
children,
|
|
229
231
|
accessibilityLabel,
|
|
232
|
+
header,
|
|
230
233
|
showArrows = true,
|
|
231
234
|
showDots = true,
|
|
232
235
|
align = 'start',
|
|
233
236
|
gap = 16,
|
|
237
|
+
inset = 0,
|
|
234
238
|
onIndexChange,
|
|
235
239
|
previousLabel = 'Previous slide',
|
|
236
240
|
nextLabel = 'Next slide',
|
|
@@ -296,10 +300,10 @@ const CarouselComponent = function Carousel({
|
|
|
296
300
|
}
|
|
297
301
|
}, [count, trackWidth]);
|
|
298
302
|
const targetFor = useCallback(item => {
|
|
299
|
-
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x;
|
|
303
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
300
304
|
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
301
305
|
return Math.min(Math.max(0, raw), max);
|
|
302
|
-
}, [align, trackWidth]);
|
|
306
|
+
}, [align, inset, trackWidth]);
|
|
303
307
|
const recomputeSnaps = useCallback(() => {
|
|
304
308
|
if (IS_WEB) return; // CSS scroll-snap owns snapping on web.
|
|
305
309
|
const all = offsets.current.slice(0, count);
|
|
@@ -326,6 +330,25 @@ const CarouselComponent = function Carousel({
|
|
|
326
330
|
animated: !reducedMotion
|
|
327
331
|
});
|
|
328
332
|
};
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* The arrows step from where the track IS, not from the active index. Slides
|
|
336
|
+
* narrower than the track share the end offset — every one that cannot reach
|
|
337
|
+
* the start edge clamps to it — so near the end "the slide before the active
|
|
338
|
+
* one" is often where the track already rests, and an index step would scroll
|
|
339
|
+
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
340
|
+
* instead (1px of slack, as in `measure`).
|
|
341
|
+
*/
|
|
342
|
+
const step = direction => {
|
|
343
|
+
const x = scroll.current.x;
|
|
344
|
+
const targets = offsets.current.slice(0, count).filter(item => Boolean(item)).map(targetFor);
|
|
345
|
+
const next = direction === 1 ? targets.filter(t => t > x + 1).reduce((a, b) => Math.min(a, b), Number.POSITIVE_INFINITY) : targets.filter(t => t < x - 1).reduce((a, b) => Math.max(a, b), Number.NEGATIVE_INFINITY);
|
|
346
|
+
if (!Number.isFinite(next)) return;
|
|
347
|
+
scrollRef.current?.scrollTo({
|
|
348
|
+
x: next,
|
|
349
|
+
animated: !reducedMotion
|
|
350
|
+
});
|
|
351
|
+
};
|
|
329
352
|
const onScroll = event => {
|
|
330
353
|
const {
|
|
331
354
|
contentOffset,
|
|
@@ -353,7 +376,9 @@ const CarouselComponent = function Carousel({
|
|
|
353
376
|
const trackStyle = {
|
|
354
377
|
width: '100%',
|
|
355
378
|
// The `:focus-visible` ring colour, read by the adopted sheet.
|
|
356
|
-
'--bloom-carousel-ring': paint.ring
|
|
379
|
+
'--bloom-carousel-ring': paint.ring,
|
|
380
|
+
// Where a start-aligned slide snaps to on web, matching `inset` on native.
|
|
381
|
+
'--bloom-carousel-inset': `${inset}px`
|
|
357
382
|
};
|
|
358
383
|
return /*#__PURE__*/_jsxs(View, {
|
|
359
384
|
role: "group",
|
|
@@ -367,30 +392,38 @@ const CarouselComponent = function Carousel({
|
|
|
367
392
|
gap: 16
|
|
368
393
|
}, style],
|
|
369
394
|
testID: testID,
|
|
370
|
-
children: [showArrows && count > 0 ? /*#__PURE__*/_jsxs(View, {
|
|
395
|
+
children: [header != null || showArrows && count > 0 ? /*#__PURE__*/_jsxs(View, {
|
|
371
396
|
style: {
|
|
372
397
|
flexDirection: 'row',
|
|
373
398
|
alignItems: 'center',
|
|
374
|
-
|
|
375
|
-
|
|
399
|
+
gap: 8,
|
|
400
|
+
paddingHorizontal: inset
|
|
376
401
|
},
|
|
377
|
-
children: [/*#__PURE__*/_jsx(
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
402
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
403
|
+
style: {
|
|
404
|
+
flex: 1,
|
|
405
|
+
minWidth: 0
|
|
406
|
+
},
|
|
407
|
+
children: header
|
|
408
|
+
}), showArrows && count > 0 ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
409
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
410
|
+
size: "sm",
|
|
411
|
+
icon: RiArrowLeftSLine,
|
|
412
|
+
accessibilityLabel: previousLabel,
|
|
413
|
+
disabled: atStart,
|
|
414
|
+
onPress: () => step(-1),
|
|
415
|
+
appearance: "subtle",
|
|
416
|
+
tone: "neutral"
|
|
417
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
418
|
+
size: "sm",
|
|
419
|
+
icon: RiArrowRightSLine,
|
|
420
|
+
accessibilityLabel: nextLabel,
|
|
421
|
+
disabled: atEnd,
|
|
422
|
+
onPress: () => step(1),
|
|
423
|
+
appearance: "subtle",
|
|
424
|
+
tone: "neutral"
|
|
425
|
+
})]
|
|
426
|
+
}) : null]
|
|
394
427
|
}) : null, /*#__PURE__*/_jsx(CarouselContext.Provider, {
|
|
395
428
|
value: contextValue,
|
|
396
429
|
children: /*#__PURE__*/_jsx(ScrollView, {
|
|
@@ -412,7 +445,8 @@ const CarouselComponent = function Carousel({
|
|
|
412
445
|
disableIntervalMomentum: true,
|
|
413
446
|
style: trackStyle,
|
|
414
447
|
contentContainerStyle: {
|
|
415
|
-
gap
|
|
448
|
+
gap,
|
|
449
|
+
paddingHorizontal: inset
|
|
416
450
|
},
|
|
417
451
|
children: slides.map((child, index) => /*#__PURE__*/_jsx(CarouselItemIndexContext.Provider, {
|
|
418
452
|
value: index,
|
|
@@ -424,7 +458,8 @@ const CarouselComponent = function Carousel({
|
|
|
424
458
|
flexDirection: 'row',
|
|
425
459
|
alignItems: 'center',
|
|
426
460
|
justifyContent: 'center',
|
|
427
|
-
gap: 6
|
|
461
|
+
gap: 6,
|
|
462
|
+
paddingHorizontal: inset
|
|
428
463
|
},
|
|
429
464
|
children: Array.from({
|
|
430
465
|
length: count
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Children","isValidElement","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","Animated","Platform","Pressable","ScrollView","View","useReducedMotion","Button","resolveButtonRamps","RiArrowLeftSLine","RiArrowRightSLine","useInteractionState","useInteractiveWebCss","borderRadius","webDataSet","useTheme","CarouselContext","CarouselItemIndexContext","jsx","_jsx","jsxs","_jsxs","IS_WEB","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","index","reportOffset","onLayout","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","bloomCarouselItem","role","count","flexShrink","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","Value","current","to","setValue","timing","toValue","duration","useNativeDriver","start","background","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","full","backgroundColor","CarouselComponent","Carousel","showArrows","showDots","align","gap","onIndexChange","previousLabel","nextLabel","dotLabel","slides","toArray","filter","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","o","map","scrollToIndex","target","scrollTo","animated","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","flexDirection","alignItems","justifyContent","size","icon","disabled","appearance","tone","Provider","value","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Children","isValidElement","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","Animated","Platform","Pressable","ScrollView","View","useReducedMotion","Button","resolveButtonRamps","RiArrowLeftSLine","RiArrowRightSLine","useInteractionState","useInteractiveWebCss","borderRadius","webDataSet","useTheme","CarouselContext","CarouselItemIndexContext","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IS_WEB","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","index","reportOffset","onLayout","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","bloomCarouselItem","role","count","flexShrink","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","Value","current","to","setValue","timing","toValue","duration","useNativeDriver","start","background","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","full","backgroundColor","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","slides","toArray","filter","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","o","map","scrollToIndex","target","scrollTo","animated","step","direction","targets","Boolean","t","reduce","a","b","NEGATIVE_INFINITY","isFinite","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","flexDirection","alignItems","paddingHorizontal","flex","minWidth","size","icon","disabled","appearance","tone","Provider","value","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,6 @@ interface CarouselPaint {
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function resolveCarouselPaint(theme: Theme): CarouselPaint;
|
|
18
18
|
export declare const CarouselItem: React.MemoExoticComponent<({ children, width, accessibilityLabel, style, testID, }: CarouselItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
19
|
-
export declare const Carousel: React.MemoExoticComponent<({ children, accessibilityLabel, showArrows, showDots, align, gap, onIndexChange, previousLabel, nextLabel, dotLabel, style, testID, }: CarouselProps) => import("react/jsx-runtime").JSX.Element>;
|
|
19
|
+
export declare const Carousel: React.MemoExoticComponent<({ children, accessibilityLabel, header, showArrows, showDots, align, gap, inset, onIndexChange, previousLabel, nextLabel, dotLabel, style, testID, }: CarouselProps) => import("react/jsx-runtime").JSX.Element>;
|
|
20
20
|
export {};
|
|
21
21
|
//# sourceMappingURL=Carousel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;AAmTxD,eAAO,MAAM,QAAQ,mLA/MlB,aAAa,6CA+M+B,CAAC"}
|
|
@@ -8,6 +8,12 @@ export interface CarouselProps {
|
|
|
8
8
|
* `aria-label`). The region announces itself as a "carousel".
|
|
9
9
|
*/
|
|
10
10
|
accessibilityLabel: string;
|
|
11
|
+
/**
|
|
12
|
+
* Leading content of the row above the track — typically the section title
|
|
13
|
+
* and a "See all" link. It shares the row with the arrows (header at the
|
|
14
|
+
* start, arrows at the end), so a titled carousel costs one row, not two.
|
|
15
|
+
*/
|
|
16
|
+
header?: ReactNode;
|
|
11
17
|
/** Previous / next buttons above the track. Defaults to `true`. */
|
|
12
18
|
showArrows?: boolean;
|
|
13
19
|
/** Position indicator below the track. Defaults to `true`. */
|
|
@@ -16,6 +22,13 @@ export interface CarouselProps {
|
|
|
16
22
|
align?: 'start' | 'center';
|
|
17
23
|
/** Gap between slides, in px. Defaults to `16`. */
|
|
18
24
|
gap?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Horizontal inset, in px, of the header row, the dots and the first and
|
|
27
|
+
* last slide. Slides still scroll under it to the carousel's edges (it is
|
|
28
|
+
* padding INSIDE the track, not a margin around it), and a snapped slide
|
|
29
|
+
* rests at the inset, not flush. Defaults to `0`.
|
|
30
|
+
*/
|
|
31
|
+
inset?: number;
|
|
19
32
|
/** Called when the slide in view changes. */
|
|
20
33
|
onIndexChange?: (index: number) => void;
|
|
21
34
|
/** Accessible name of the previous button. Defaults to `'Previous slide'`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -16,6 +16,6 @@ interface CarouselPaint {
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function resolveCarouselPaint(theme: Theme): CarouselPaint;
|
|
18
18
|
export declare const CarouselItem: React.MemoExoticComponent<({ children, width, accessibilityLabel, style, testID, }: CarouselItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
19
|
-
export declare const Carousel: React.MemoExoticComponent<({ children, accessibilityLabel, showArrows, showDots, align, gap, onIndexChange, previousLabel, nextLabel, dotLabel, style, testID, }: CarouselProps) => import("react/jsx-runtime").JSX.Element>;
|
|
19
|
+
export declare const Carousel: React.MemoExoticComponent<({ children, accessibilityLabel, header, showArrows, showDots, align, gap, inset, onIndexChange, previousLabel, nextLabel, dotLabel, style, testID, }: CarouselProps) => import("react/jsx-runtime").JSX.Element>;
|
|
20
20
|
export {};
|
|
21
21
|
//# sourceMappingURL=Carousel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;AAmTxD,eAAO,MAAM,QAAQ,mLA/MlB,aAAa,6CA+M+B,CAAC"}
|
|
@@ -8,6 +8,12 @@ export interface CarouselProps {
|
|
|
8
8
|
* `aria-label`). The region announces itself as a "carousel".
|
|
9
9
|
*/
|
|
10
10
|
accessibilityLabel: string;
|
|
11
|
+
/**
|
|
12
|
+
* Leading content of the row above the track — typically the section title
|
|
13
|
+
* and a "See all" link. It shares the row with the arrows (header at the
|
|
14
|
+
* start, arrows at the end), so a titled carousel costs one row, not two.
|
|
15
|
+
*/
|
|
16
|
+
header?: ReactNode;
|
|
11
17
|
/** Previous / next buttons above the track. Defaults to `true`. */
|
|
12
18
|
showArrows?: boolean;
|
|
13
19
|
/** Position indicator below the track. Defaults to `true`. */
|
|
@@ -16,6 +22,13 @@ export interface CarouselProps {
|
|
|
16
22
|
align?: 'start' | 'center';
|
|
17
23
|
/** Gap between slides, in px. Defaults to `16`. */
|
|
18
24
|
gap?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Horizontal inset, in px, of the header row, the dots and the first and
|
|
27
|
+
* last slide. Slides still scroll under it to the carousel's edges (it is
|
|
28
|
+
* padding INSIDE the track, not a margin around it), and a snapped slide
|
|
29
|
+
* rests at the inset, not flush. Defaults to `0`.
|
|
30
|
+
*/
|
|
31
|
+
inset?: number;
|
|
19
32
|
/** Called when the slide in view changes. */
|
|
20
33
|
onIndexChange?: (index: number) => void;
|
|
21
34
|
/** Accessible name of the previous button. Defaults to `'Previous slide'`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -40,6 +40,7 @@ import type { CarouselItemProps, CarouselProps } from './types';
|
|
|
40
40
|
* prev/next buttons above and a position indicator below.
|
|
41
41
|
*
|
|
42
42
|
* column gap 16
|
|
43
|
+
* header optional leading content of the arrows row (a title)
|
|
43
44
|
* arrows right-aligned row, gap 8, small secondary icon buttons
|
|
44
45
|
* (Bloom's pill `Button`, sized to a 32px square icon button)
|
|
45
46
|
* track native horizontal scrolling that SNAPS to each slide — CSS
|
|
@@ -105,6 +106,7 @@ const DOT = '[data-bloom-carousel-dot]';
|
|
|
105
106
|
const BLOOM_CAROUSEL_CSS = `
|
|
106
107
|
${TRACK} {
|
|
107
108
|
scroll-snap-type: x mandatory;
|
|
109
|
+
scroll-padding-inline: var(--bloom-carousel-inset, 0px);
|
|
108
110
|
overscroll-behavior-x: contain;
|
|
109
111
|
scrollbar-width: none;
|
|
110
112
|
outline: none;
|
|
@@ -266,10 +268,12 @@ interface SlideOffset {
|
|
|
266
268
|
const CarouselComponent = function Carousel({
|
|
267
269
|
children,
|
|
268
270
|
accessibilityLabel,
|
|
271
|
+
header,
|
|
269
272
|
showArrows = true,
|
|
270
273
|
showDots = true,
|
|
271
274
|
align = 'start',
|
|
272
275
|
gap = 16,
|
|
276
|
+
inset = 0,
|
|
273
277
|
onIndexChange,
|
|
274
278
|
previousLabel = 'Previous slide',
|
|
275
279
|
nextLabel = 'Next slide',
|
|
@@ -337,11 +341,11 @@ const CarouselComponent = function Carousel({
|
|
|
337
341
|
|
|
338
342
|
const targetFor = useCallback(
|
|
339
343
|
(item: SlideOffset) => {
|
|
340
|
-
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x;
|
|
344
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
341
345
|
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
342
346
|
return Math.min(Math.max(0, raw), max);
|
|
343
347
|
},
|
|
344
|
-
[align, trackWidth],
|
|
348
|
+
[align, inset, trackWidth],
|
|
345
349
|
);
|
|
346
350
|
|
|
347
351
|
const recomputeSnaps = useCallback(() => {
|
|
@@ -371,6 +375,28 @@ const CarouselComponent = function Carousel({
|
|
|
371
375
|
scrollRef.current?.scrollTo({ x: targetFor(target), animated: !reducedMotion });
|
|
372
376
|
};
|
|
373
377
|
|
|
378
|
+
/**
|
|
379
|
+
* The arrows step from where the track IS, not from the active index. Slides
|
|
380
|
+
* narrower than the track share the end offset — every one that cannot reach
|
|
381
|
+
* the start edge clamps to it — so near the end "the slide before the active
|
|
382
|
+
* one" is often where the track already rests, and an index step would scroll
|
|
383
|
+
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
384
|
+
* instead (1px of slack, as in `measure`).
|
|
385
|
+
*/
|
|
386
|
+
const step = (direction: -1 | 1) => {
|
|
387
|
+
const x = scroll.current.x;
|
|
388
|
+
const targets = offsets.current
|
|
389
|
+
.slice(0, count)
|
|
390
|
+
.filter((item): item is SlideOffset => Boolean(item))
|
|
391
|
+
.map(targetFor);
|
|
392
|
+
const next =
|
|
393
|
+
direction === 1
|
|
394
|
+
? targets.filter((t) => t > x + 1).reduce((a, b) => Math.min(a, b), Number.POSITIVE_INFINITY)
|
|
395
|
+
: targets.filter((t) => t < x - 1).reduce((a, b) => Math.max(a, b), Number.NEGATIVE_INFINITY);
|
|
396
|
+
if (!Number.isFinite(next)) return;
|
|
397
|
+
scrollRef.current?.scrollTo({ x: next, animated: !reducedMotion });
|
|
398
|
+
};
|
|
399
|
+
|
|
374
400
|
const onScroll = (event: NativeSyntheticEvent<NativeScrollEvent>) => {
|
|
375
401
|
const { contentOffset, contentSize } = event.nativeEvent;
|
|
376
402
|
scroll.current = { x: contentOffset.x, contentWidth: contentSize.width };
|
|
@@ -392,6 +418,8 @@ const CarouselComponent = function Carousel({
|
|
|
392
418
|
width: '100%',
|
|
393
419
|
// The `:focus-visible` ring colour, read by the adopted sheet.
|
|
394
420
|
'--bloom-carousel-ring': paint.ring,
|
|
421
|
+
// Where a start-aligned slide snaps to on web, matching `inset` on native.
|
|
422
|
+
'--bloom-carousel-inset': `${inset}px`,
|
|
395
423
|
};
|
|
396
424
|
|
|
397
425
|
return (
|
|
@@ -402,10 +430,15 @@ const CarouselComponent = function Carousel({
|
|
|
402
430
|
style={[{ width: '100%', flexDirection: 'column', gap: 16 }, style]}
|
|
403
431
|
testID={testID}
|
|
404
432
|
>
|
|
405
|
-
{showArrows && count > 0 ? (
|
|
406
|
-
<View style={{ flexDirection: 'row', alignItems: 'center',
|
|
407
|
-
<
|
|
408
|
-
|
|
433
|
+
{header != null || (showArrows && count > 0) ? (
|
|
434
|
+
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8, paddingHorizontal: inset }}>
|
|
435
|
+
<View style={{ flex: 1, minWidth: 0 }}>{header}</View>
|
|
436
|
+
{showArrows && count > 0 ? (
|
|
437
|
+
<>
|
|
438
|
+
<Button size="sm" icon={RiArrowLeftSLine} accessibilityLabel={previousLabel} disabled={atStart} onPress={() => step(-1)} appearance="subtle" tone="neutral" />
|
|
439
|
+
<Button size="sm" icon={RiArrowRightSLine} accessibilityLabel={nextLabel} disabled={atEnd} onPress={() => step(1)} appearance="subtle" tone="neutral" />
|
|
440
|
+
</>
|
|
441
|
+
) : null}
|
|
409
442
|
</View>
|
|
410
443
|
) : null}
|
|
411
444
|
|
|
@@ -426,7 +459,7 @@ const CarouselComponent = function Carousel({
|
|
|
426
459
|
decelerationRate={IS_WEB ? undefined : 'fast'}
|
|
427
460
|
disableIntervalMomentum
|
|
428
461
|
style={trackStyle}
|
|
429
|
-
contentContainerStyle={{ gap }}
|
|
462
|
+
contentContainerStyle={{ gap, paddingHorizontal: inset }}
|
|
430
463
|
>
|
|
431
464
|
{slides.map((child, index) => (
|
|
432
465
|
<CarouselItemIndexContext.Provider key={child.key ?? index} value={index}>
|
|
@@ -437,7 +470,7 @@ const CarouselComponent = function Carousel({
|
|
|
437
470
|
</CarouselContext.Provider>
|
|
438
471
|
|
|
439
472
|
{showDots && count > 1 ? (
|
|
440
|
-
<View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 6 }}>
|
|
473
|
+
<View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 6, paddingHorizontal: inset }}>
|
|
441
474
|
{Array.from({ length: count }, (_, index) => (
|
|
442
475
|
<CarouselDot
|
|
443
476
|
key={index}
|
package/src/carousel/types.ts
CHANGED
|
@@ -9,6 +9,12 @@ export interface CarouselProps {
|
|
|
9
9
|
* `aria-label`). The region announces itself as a "carousel".
|
|
10
10
|
*/
|
|
11
11
|
accessibilityLabel: string;
|
|
12
|
+
/**
|
|
13
|
+
* Leading content of the row above the track — typically the section title
|
|
14
|
+
* and a "See all" link. It shares the row with the arrows (header at the
|
|
15
|
+
* start, arrows at the end), so a titled carousel costs one row, not two.
|
|
16
|
+
*/
|
|
17
|
+
header?: ReactNode;
|
|
12
18
|
/** Previous / next buttons above the track. Defaults to `true`. */
|
|
13
19
|
showArrows?: boolean;
|
|
14
20
|
/** Position indicator below the track. Defaults to `true`. */
|
|
@@ -17,6 +23,13 @@ export interface CarouselProps {
|
|
|
17
23
|
align?: 'start' | 'center';
|
|
18
24
|
/** Gap between slides, in px. Defaults to `16`. */
|
|
19
25
|
gap?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Horizontal inset, in px, of the header row, the dots and the first and
|
|
28
|
+
* last slide. Slides still scroll under it to the carousel's edges (it is
|
|
29
|
+
* padding INSIDE the track, not a margin around it), and a snapped slide
|
|
30
|
+
* rests at the inset, not flush. Defaults to `0`.
|
|
31
|
+
*/
|
|
32
|
+
inset?: number;
|
|
20
33
|
/** Called when the slide in view changes. */
|
|
21
34
|
onIndexChange?: (index: number) => void;
|
|
22
35
|
/** Accessible name of the previous button. Defaults to `'Previous slide'`. */
|