@salutejs/plasma-new-hope 0.326.0-canary.2013.15538813402.0 → 0.326.0-canary.2013.15555525626.0
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/cjs/components/Carousel/CarouselNew/Carousel.css +5 -7
- package/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/cjs/components/Carousel/CarouselNew/Carousel.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js +4 -13
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/{Carousel.styles_1fs4wwn.css → Carousel.styles_a2t6qm.css} +2 -2
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -61
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
- package/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/cjs/components/Carousel/CarouselOld/CarouselItem.js.map +1 -1
- package/{es/components/Carousel/CarouselOld/CarouselItem_uvoxfy.css → cjs/components/Carousel/CarouselOld/CarouselItem_1meatnt.css} +1 -1
- package/cjs/index.css +6 -8
- package/cjs/index.js +1 -1
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.styles.js +17 -12
- package/emotion/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
- package/emotion/cjs/components/Carousel/CarouselNew/ui/index.js +0 -11
- package/emotion/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/emotion/cjs/components/Carousel/index.js +4 -4
- package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +3 -3
- package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
- package/emotion/es/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/emotion/es/components/Carousel/CarouselNew/Carousel.styles.js +17 -12
- package/emotion/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
- package/emotion/es/components/Carousel/CarouselNew/ui/index.js +0 -1
- package/emotion/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/emotion/es/components/Carousel/index.js +1 -1
- package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +4 -4
- package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
- package/es/components/Carousel/CarouselNew/Carousel.css +5 -7
- package/es/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/es/components/Carousel/CarouselNew/Carousel.js.map +1 -1
- package/es/components/Carousel/CarouselNew/Carousel.styles.js +4 -13
- package/es/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
- package/es/components/Carousel/CarouselNew/{Carousel.styles_1fs4wwn.css → Carousel.styles_a2t6qm.css} +2 -2
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -61
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
- package/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/es/components/Carousel/CarouselOld/CarouselItem.js.map +1 -1
- package/{cjs/components/Carousel/CarouselOld/CarouselItem_uvoxfy.css → es/components/Carousel/CarouselOld/CarouselItem_1meatnt.css} +1 -1
- package/es/index.css +6 -8
- package/es/index.js +1 -1
- package/package.json +5 -5
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.styles.js +2 -5
- package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/index.js +0 -11
- package/styled-components/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/styled-components/cjs/components/Carousel/index.js +4 -4
- package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +2 -2
- package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.js +6 -11
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.styles.js +2 -5
- package/styled-components/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
- package/styled-components/es/components/Carousel/CarouselNew/ui/index.js +0 -1
- package/styled-components/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
- package/styled-components/es/components/Carousel/index.js +1 -1
- package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +2 -2
- package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
- package/types/components/Carousel/CarouselNew/Carousel.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts +1 -4
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts +6 -67
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts +4 -6
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/ui/index.d.ts +0 -1
- package/types/components/Carousel/CarouselNew/ui/index.d.ts.map +1 -1
- package/types/components/Carousel/CarouselOld/CarouselItem.d.ts.map +1 -1
- package/types/components/Carousel/index.d.ts +1 -1
- package/types/components/Carousel/index.d.ts.map +1 -1
- package/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -62
- package/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js.map +0 -1
- package/emotion/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -65
- package/emotion/cjs/components/Carousel/CarouselNew/ui/Item/Item.js +0 -38
- package/emotion/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -59
- package/emotion/es/components/Carousel/CarouselNew/ui/Item/Item.js +0 -31
- package/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -58
- package/es/components/Carousel/CarouselNew/hooks/useDragScroll.js.map +0 -1
- package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -65
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Item/Item.js +0 -37
- package/styled-components/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -59
- package/styled-components/es/components/Carousel/CarouselNew/ui/Item/Item.js +0 -30
- package/types/components/Carousel/CarouselNew/hooks/useDragScroll.d.ts +0 -2
- package/types/components/Carousel/CarouselNew/hooks/useDragScroll.d.ts.map +0 -1
- package/types/components/Carousel/CarouselNew/ui/Item/Item.d.ts +0 -4
- package/types/components/Carousel/CarouselNew/ui/Item/Item.d.ts.map +0 -1
@@ -3,8 +3,8 @@ import throttle from 'lodash.throttle';
|
|
3
3
|
/**
|
4
4
|
* Подсчет смещения из-за паддингов.
|
5
5
|
*/
|
6
|
-
export var getCalculatedOffset = function getCalculatedOffset(scrollEl, trackEl
|
7
|
-
var paddingProp =
|
6
|
+
export var getCalculatedOffset = function getCalculatedOffset(scrollEl, trackEl) {
|
7
|
+
var paddingProp = 'paddingLeft';
|
8
8
|
return parseInt(getComputedStyle(scrollEl)[paddingProp], 10) + parseInt(getComputedStyle(trackEl)[paddingProp], 10);
|
9
9
|
};
|
10
10
|
var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
|
@@ -13,11 +13,9 @@ var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
|
|
13
13
|
carouselSize = _ref.carouselSize,
|
14
14
|
itemSize = _ref.itemSize,
|
15
15
|
offset = _ref.offset,
|
16
|
-
scrollStart = _ref.scrollStart
|
17
|
-
axis = _ref.axis;
|
16
|
+
scrollStart = _ref.scrollStart;
|
18
17
|
if (scrollAlign === 'start') {
|
19
|
-
var
|
20
|
-
var paddingOffset = axis === 'y' ? offset - itemSize / 2 + inaccuracy : 0;
|
18
|
+
var paddingOffset = 0;
|
21
19
|
return position + paddingOffset;
|
22
20
|
}
|
23
21
|
if (scrollAlign === 'center') {
|
@@ -41,47 +39,30 @@ var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
|
|
41
39
|
* Подсчет скролла до переданного индекса.
|
42
40
|
*/
|
43
41
|
export var getCalculatedPos = function getCalculatedPos(_ref2) {
|
42
|
+
var _items$item$offsetWid2, _items$item2;
|
44
43
|
var scrollEl = _ref2.scrollEl,
|
45
44
|
items = _ref2.items,
|
46
|
-
axis = _ref2.axis,
|
47
45
|
index = _ref2.index,
|
48
46
|
offset = _ref2.offset,
|
49
47
|
scrollAlign = _ref2.scrollAlign;
|
50
48
|
var position = scrollAlign === 'center' ? offset : 0;
|
51
|
-
var carouselSize;
|
52
|
-
var itemSize;
|
53
|
-
var scrollStart;
|
54
49
|
if (items.item(index) === null) {
|
55
50
|
return position;
|
56
51
|
}
|
57
52
|
for (var i = 0; i < index; i++) {
|
58
|
-
|
59
|
-
|
60
|
-
position += (_items$item$offsetWid = (_items$item = items.item(i)) === null || _items$item === void 0 ? void 0 : _items$item.offsetWidth) !== null && _items$item$offsetWid !== void 0 ? _items$item$offsetWid : 0;
|
61
|
-
} else {
|
62
|
-
var _items$item$offsetHei, _items$item2;
|
63
|
-
position += (_items$item$offsetHei = (_items$item2 = items.item(i)) === null || _items$item2 === void 0 ? void 0 : _items$item2.offsetHeight) !== null && _items$item$offsetHei !== void 0 ? _items$item$offsetHei : 0;
|
64
|
-
}
|
65
|
-
}
|
66
|
-
if (axis === 'x') {
|
67
|
-
var _items$item$offsetWid2, _items$item3;
|
68
|
-
carouselSize = scrollEl.offsetWidth;
|
69
|
-
itemSize = (_items$item$offsetWid2 = (_items$item3 = items.item(index)) === null || _items$item3 === void 0 ? void 0 : _items$item3.offsetWidth) !== null && _items$item$offsetWid2 !== void 0 ? _items$item$offsetWid2 : 0;
|
70
|
-
scrollStart = scrollEl.scrollLeft;
|
71
|
-
} else {
|
72
|
-
var _items$item$offsetHei2, _items$item4;
|
73
|
-
carouselSize = scrollEl.offsetHeight;
|
74
|
-
itemSize = (_items$item$offsetHei2 = (_items$item4 = items.item(index)) === null || _items$item4 === void 0 ? void 0 : _items$item4.offsetHeight) !== null && _items$item$offsetHei2 !== void 0 ? _items$item$offsetHei2 : 0;
|
75
|
-
scrollStart = scrollEl.scrollTop;
|
53
|
+
var _items$item$offsetWid, _items$item;
|
54
|
+
position += (_items$item$offsetWid = (_items$item = items.item(i)) === null || _items$item === void 0 ? void 0 : _items$item.offsetWidth) !== null && _items$item$offsetWid !== void 0 ? _items$item$offsetWid : 0;
|
76
55
|
}
|
56
|
+
var carouselSize = scrollEl.offsetWidth;
|
57
|
+
var itemSize = (_items$item$offsetWid2 = (_items$item2 = items.item(index)) === null || _items$item2 === void 0 ? void 0 : _items$item2.offsetWidth) !== null && _items$item$offsetWid2 !== void 0 ? _items$item$offsetWid2 : 0;
|
58
|
+
var scrollStart = scrollEl.scrollLeft;
|
77
59
|
return positionModByScrollAlign({
|
78
60
|
scrollAlign: scrollAlign,
|
79
61
|
position: position,
|
80
62
|
carouselSize: carouselSize,
|
81
63
|
itemSize: itemSize,
|
82
64
|
offset: offset,
|
83
|
-
scrollStart: scrollStart
|
84
|
-
axis: axis
|
65
|
+
scrollStart: scrollStart
|
85
66
|
});
|
86
67
|
};
|
87
68
|
var DEFAULT_DURATION = 300;
|
@@ -135,11 +116,10 @@ export var animatedScrollToX = function animatedScrollToX(elem, pos) {
|
|
135
116
|
export var scrollToPos = function scrollToPos(_ref3) {
|
136
117
|
var scrollEl = _ref3.scrollEl,
|
137
118
|
pos = _ref3.pos,
|
138
|
-
axis = _ref3.axis,
|
139
119
|
animated = _ref3.animated,
|
140
120
|
duration = _ref3.duration,
|
141
121
|
timingFunction = _ref3.timingFunction;
|
142
|
-
if (
|
122
|
+
if (Math.abs(pos - scrollEl.scrollLeft) > 1) {
|
143
123
|
if (animated) {
|
144
124
|
animatedScrollToX(scrollEl, pos, duration, timingFunction);
|
145
125
|
} else {
|
@@ -327,7 +307,7 @@ export var useCarousel = function useCarousel(_ref4) {
|
|
327
307
|
}
|
328
308
|
}
|
329
309
|
}, throttleMs);
|
330
|
-
}, [
|
310
|
+
}, [debouncedOnIndexChange, detectActive, detectThreshold, scrollAlign, throttleMs]);
|
331
311
|
|
332
312
|
/**
|
333
313
|
* Прокрутка до нужной позиции индекса.
|
@@ -341,21 +321,19 @@ export var useCarousel = function useCarousel(_ref4) {
|
|
341
321
|
pos: getCalculatedPos({
|
342
322
|
scrollEl: scrollEl,
|
343
323
|
items: items,
|
344
|
-
axis: axis,
|
345
324
|
index: i,
|
346
325
|
offset: offset.current,
|
347
326
|
scrollAlign: scrollAlign
|
348
|
-
})
|
349
|
-
axis: axis
|
327
|
+
})
|
350
328
|
});
|
351
329
|
prevIndex.current = i;
|
352
330
|
}
|
353
|
-
}, [
|
331
|
+
}, [scrollAlign]);
|
354
332
|
useEffect(function () {
|
355
333
|
if (scrollRef.current && trackRef.current) {
|
356
|
-
offset.current = getCalculatedOffset(scrollRef.current, trackRef.current
|
334
|
+
offset.current = getCalculatedOffset(scrollRef.current, trackRef.current);
|
357
335
|
}
|
358
|
-
}, [
|
336
|
+
}, []);
|
359
337
|
|
360
338
|
/**
|
361
339
|
* Операции на маунте/анмаунте компонента.
|
@@ -373,27 +351,6 @@ export var useCarousel = function useCarousel(_ref4) {
|
|
373
351
|
};
|
374
352
|
}, [throttledDetectActiveItem]);
|
375
353
|
|
376
|
-
/**
|
377
|
-
* Нужно вызвать только при первом рендере
|
378
|
-
*/
|
379
|
-
// useEffect(() => {
|
380
|
-
// requestAnimationFrame(() => {
|
381
|
-
// /**
|
382
|
-
// * Прокрутка до начального индекса.
|
383
|
-
// */
|
384
|
-
// toIndex(index);
|
385
|
-
//
|
386
|
-
// /**
|
387
|
-
// * Если на момент запуска карусель уже находится на нужной позиции,
|
388
|
-
// * событие скролла не произойдет, не сработает и определение центра,
|
389
|
-
// * необходимо вызвать его вручную.
|
390
|
-
// */
|
391
|
-
// throttledDetectActiveItem();
|
392
|
-
// });
|
393
|
-
//
|
394
|
-
// // eslint-disable-next-line react-hooks/exhaustive-deps
|
395
|
-
// }, []);
|
396
|
-
|
397
354
|
/**
|
398
355
|
* Прокрутка до нужной позиции индекса, если индекс изменился.
|
399
356
|
*/
|
@@ -6,7 +6,7 @@ import React from 'react';
|
|
6
6
|
import styled from 'styled-components';
|
7
7
|
var StyledItem = /*#__PURE__*/styled.div.withConfig({
|
8
8
|
componentId: "plasma-new-hope__sc-1b1k2uh-0"
|
9
|
-
})(["scroll-snap-align:", ";scroll-snap-stop:", ";"], function (_ref) {
|
9
|
+
})(["scroll-snap-align:", ";scroll-snap-stop:", ";padding:0 var(--temporary-carousel-padding);"], function (_ref) {
|
10
10
|
var scrollSnapAlign = _ref.scrollSnapAlign;
|
11
11
|
return scrollSnapAlign || 'none';
|
12
12
|
}, function (_ref2) {
|
@@ -4,4 +4,4 @@ export { CarouselItem } from "./CarouselOld/CarouselItem";
|
|
4
4
|
|
5
5
|
// New Carousel
|
6
6
|
export { carouselNewConfig, carouselNewRoot } from "./CarouselNew/Carousel";
|
7
|
-
export { tokens as
|
7
|
+
export { tokens as carouselNewTokens } from "./CarouselNew/Carousel.tokens";
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { css } from 'styled-components';
|
2
|
-
import {
|
2
|
+
import { carouselNewTokens as tokens } from "../../../../components/Carousel";
|
3
3
|
export var config = {
|
4
4
|
defaults: {
|
5
5
|
view: 'default',
|
6
|
-
size: '
|
6
|
+
size: 's'
|
7
7
|
},
|
8
8
|
variations: {
|
9
9
|
view: {
|
@@ -12,6 +12,7 @@ import { Carousel, CarouselItem } from './Carousel';
|
|
12
12
|
type StoryCarouselProps = ComponentProps<typeof Carousel> & {
|
13
13
|
slides: number;
|
14
14
|
visibleDots: number;
|
15
|
+
paginationDisabled: boolean;
|
15
16
|
paginationCentered: boolean;
|
16
17
|
};
|
17
18
|
|
@@ -35,40 +36,48 @@ const meta: Meta<StoryCarouselProps> = {
|
|
35
36
|
},
|
36
37
|
},
|
37
38
|
align: {
|
38
|
-
options: ['start', 'center', 'end'],
|
39
|
+
options: ['start', 'center', 'end', 'activeDirection'],
|
39
40
|
control: {
|
40
41
|
type: 'inline-radio',
|
41
42
|
},
|
42
43
|
},
|
43
|
-
isDragScrollDisabled: {
|
44
|
-
control: 'boolean',
|
45
|
-
},
|
46
44
|
slides: {
|
47
45
|
control: 'number',
|
48
46
|
},
|
49
47
|
visibleDots: {
|
50
48
|
control: 'number',
|
51
49
|
},
|
52
|
-
|
50
|
+
controlArrowsDisabled: {
|
53
51
|
control: 'boolean',
|
54
52
|
},
|
55
|
-
|
56
|
-
control: '
|
53
|
+
paginationDisabled: {
|
54
|
+
control: 'boolean',
|
55
|
+
},
|
56
|
+
paginationCentered: {
|
57
|
+
control: 'boolean',
|
57
58
|
},
|
58
59
|
},
|
59
60
|
args: {
|
60
61
|
view: 'default',
|
61
62
|
size: 's',
|
62
63
|
align: 'center',
|
63
|
-
isDragScrollDisabled: false,
|
64
64
|
visibleDots: 6,
|
65
65
|
slides: 10,
|
66
|
+
controlArrowsDisabled: false,
|
67
|
+
paginationDisabled: false,
|
66
68
|
paginationCentered: false,
|
67
|
-
gap: '20px',
|
68
69
|
},
|
69
70
|
parameters: {
|
70
71
|
controls: {
|
71
|
-
include: [
|
72
|
+
include: [
|
73
|
+
'align',
|
74
|
+
'visibleDots',
|
75
|
+
'slides',
|
76
|
+
'controlArrowsDisabled',
|
77
|
+
'paginationDisabled',
|
78
|
+
'paginationCentered',
|
79
|
+
'gap',
|
80
|
+
],
|
72
81
|
},
|
73
82
|
},
|
74
83
|
};
|
@@ -81,7 +90,7 @@ const StyledCard = styled.div`
|
|
81
90
|
justify-content: center;
|
82
91
|
position: relative;
|
83
92
|
border-radius: 8px;
|
84
|
-
width:
|
93
|
+
width: 400px;
|
85
94
|
height: 370px;
|
86
95
|
background-color: #add8e6;
|
87
96
|
font-size: 30px;
|
@@ -91,9 +100,8 @@ const StoryDefault = ({
|
|
91
100
|
align,
|
92
101
|
visibleDots,
|
93
102
|
slides,
|
103
|
+
paginationDisabled,
|
94
104
|
paginationCentered,
|
95
|
-
isDragScrollDisabled,
|
96
|
-
gap,
|
97
105
|
...rest
|
98
106
|
}: StoryCarouselProps) => {
|
99
107
|
const items = Array(slides)
|
@@ -109,9 +117,8 @@ const StoryDefault = ({
|
|
109
117
|
<Carousel
|
110
118
|
detectActive
|
111
119
|
scrollAlign={align}
|
112
|
-
isDragScrollDisabled={isDragScrollDisabled}
|
113
|
-
gap={gap}
|
114
120
|
paginationOptions={{
|
121
|
+
disabled: paginationDisabled,
|
115
122
|
visibleDots,
|
116
123
|
centered: paginationCentered,
|
117
124
|
}}
|
@@ -1,4 +1,16 @@
|
|
1
|
+
import { css } from 'styled-components';
|
2
|
+
import { carouselNewTokens as tokens } from "../../../../components/Carousel";
|
1
3
|
export var config = {
|
2
|
-
defaults: {
|
3
|
-
|
4
|
+
defaults: {
|
5
|
+
view: 'default',
|
6
|
+
size: 's'
|
7
|
+
},
|
8
|
+
variations: {
|
9
|
+
view: {
|
10
|
+
"default": /*#__PURE__*/css(["", ":var(--surface-transparent-tertiary);", ":var(--surface-solid-default);"], tokens.paginationDotBackground, tokens.paginationDotActiveBackground)
|
11
|
+
},
|
12
|
+
size: {
|
13
|
+
s: /*#__PURE__*/css([""])
|
14
|
+
}
|
15
|
+
}
|
4
16
|
};
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { carouselNewConfig, CarouselItem } from "../../../../components/Carousel";
|
2
2
|
import { component, mergeConfig } from "../../../../engines";
|
3
3
|
import { config } from "./Carousel.config";
|
4
|
-
export var mergedConfig = /*#__PURE__*/mergeConfig(
|
4
|
+
export var mergedConfig = /*#__PURE__*/mergeConfig(carouselNewConfig, config);
|
5
5
|
export var Carousel = /*#__PURE__*/component(mergedConfig);
|
6
6
|
export { CarouselItem };
|
@@ -2,76 +2,136 @@ import * as React from 'react';
|
|
2
2
|
import type { ComponentProps } from 'react';
|
3
3
|
import type { Meta, StoryObj } from '@storybook/react';
|
4
4
|
import styled from 'styled-components';
|
5
|
+
import { getConfigVariations } from '@salutejs/plasma-sb-utils';
|
5
6
|
|
6
7
|
import { WithTheme } from '../../../_helpers';
|
7
8
|
|
9
|
+
import { config } from './Carousel.config';
|
8
10
|
import { Carousel, CarouselItem } from './Carousel';
|
9
11
|
|
10
|
-
type StoryCarouselProps = ComponentProps<typeof Carousel
|
12
|
+
type StoryCarouselProps = ComponentProps<typeof Carousel> & {
|
13
|
+
slides: number;
|
14
|
+
visibleDots: number;
|
15
|
+
paginationDisabled: boolean;
|
16
|
+
paginationCentered: boolean;
|
17
|
+
};
|
18
|
+
|
19
|
+
const { views, sizes } = getConfigVariations(config);
|
11
20
|
|
12
21
|
const meta: Meta<StoryCarouselProps> = {
|
13
22
|
title: 'web/Navigation/Carousel',
|
14
23
|
component: Carousel,
|
15
24
|
decorators: [WithTheme],
|
16
25
|
argTypes: {
|
26
|
+
view: {
|
27
|
+
options: views,
|
28
|
+
control: {
|
29
|
+
type: 'select',
|
30
|
+
},
|
31
|
+
},
|
32
|
+
size: {
|
33
|
+
options: sizes,
|
34
|
+
control: {
|
35
|
+
type: 'inline-radio',
|
36
|
+
},
|
37
|
+
},
|
17
38
|
align: {
|
18
|
-
options: ['
|
39
|
+
options: ['start', 'center', 'end', 'activeDirection'],
|
19
40
|
control: {
|
20
41
|
type: 'inline-radio',
|
21
42
|
},
|
22
43
|
},
|
23
|
-
|
44
|
+
slides: {
|
45
|
+
control: 'number',
|
46
|
+
},
|
47
|
+
visibleDots: {
|
48
|
+
control: 'number',
|
49
|
+
},
|
50
|
+
controlArrowsDisabled: {
|
51
|
+
control: 'boolean',
|
52
|
+
},
|
53
|
+
paginationDisabled: {
|
54
|
+
control: 'boolean',
|
55
|
+
},
|
56
|
+
paginationCentered: {
|
24
57
|
control: 'boolean',
|
25
58
|
},
|
26
59
|
},
|
27
60
|
args: {
|
61
|
+
view: 'default',
|
62
|
+
size: 's',
|
28
63
|
align: 'center',
|
29
|
-
|
64
|
+
visibleDots: 6,
|
65
|
+
slides: 10,
|
66
|
+
controlArrowsDisabled: false,
|
67
|
+
paginationDisabled: false,
|
68
|
+
paginationCentered: false,
|
30
69
|
},
|
31
70
|
parameters: {
|
32
71
|
controls: {
|
33
|
-
include: [
|
72
|
+
include: [
|
73
|
+
'align',
|
74
|
+
'visibleDots',
|
75
|
+
'slides',
|
76
|
+
'controlArrowsDisabled',
|
77
|
+
'paginationDisabled',
|
78
|
+
'paginationCentered',
|
79
|
+
'gap',
|
80
|
+
],
|
34
81
|
},
|
35
82
|
},
|
36
83
|
};
|
37
84
|
|
38
85
|
export default meta;
|
39
86
|
|
40
|
-
const items = Array(25)
|
41
|
-
.fill({
|
42
|
-
title: 'Заголовок',
|
43
|
-
})
|
44
|
-
.map(({ title }, i) => ({
|
45
|
-
id: i,
|
46
|
-
title: `${title} ${i}`,
|
47
|
-
}));
|
48
|
-
|
49
87
|
const StyledCard = styled.div`
|
88
|
+
display: flex;
|
89
|
+
align-items: center;
|
90
|
+
justify-content: center;
|
50
91
|
position: relative;
|
51
92
|
border-radius: 8px;
|
52
|
-
width:
|
53
|
-
height:
|
54
|
-
padding: 8px;
|
93
|
+
width: 400px;
|
94
|
+
height: 370px;
|
55
95
|
background-color: #add8e6;
|
96
|
+
font-size: 30px;
|
56
97
|
`;
|
57
98
|
|
58
|
-
const StoryDefault = ({
|
59
|
-
|
99
|
+
const StoryDefault = ({
|
100
|
+
align,
|
101
|
+
visibleDots,
|
102
|
+
slides,
|
103
|
+
paginationDisabled,
|
104
|
+
paginationCentered,
|
105
|
+
...rest
|
106
|
+
}: StoryCarouselProps) => {
|
107
|
+
const items = Array(slides)
|
108
|
+
.fill(1)
|
109
|
+
.map((_, i) => ({
|
110
|
+
id: i,
|
111
|
+
title: i,
|
112
|
+
}));
|
60
113
|
|
61
114
|
return (
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
115
|
+
<>
|
116
|
+
<div style={{ width: '600px' }}>
|
117
|
+
<Carousel
|
118
|
+
detectActive
|
119
|
+
scrollAlign={align}
|
120
|
+
paginationOptions={{
|
121
|
+
disabled: paginationDisabled,
|
122
|
+
visibleDots,
|
123
|
+
centered: paginationCentered,
|
124
|
+
}}
|
125
|
+
{...rest}
|
126
|
+
>
|
127
|
+
{items.map((item, i) => (
|
128
|
+
<CarouselItem key={i} scrollSnapAlign={align}>
|
129
|
+
<StyledCard>{item.title}</StyledCard>
|
130
|
+
</CarouselItem>
|
131
|
+
))}
|
132
|
+
</Carousel>
|
133
|
+
</div>
|
134
|
+
</>
|
75
135
|
);
|
76
136
|
};
|
77
137
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAyC,MAAM,OAAO,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAyC,MAAM,OAAO,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,4FAqE5E,CAAC;AAEN,eAAO,MAAM,iBAAiB;;;mBAvEQ,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC;;;;;;;;;;;;;;CAwFhF,CAAC"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { CSSProperties } from 'react';
|
2
1
|
export declare const IconButtonComponent: import("react").FunctionComponent<import("../../../engines/types").PropsType<import("../../../engines/types").Variants> & ((Omit<import("react").ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<import("react").AnchorHTMLAttributes<HTMLElement>, "type"> & import("../../..").AsProps & {
|
3
2
|
text?: string;
|
4
3
|
contentLeft?: import("react").ReactNode;
|
@@ -44,9 +43,7 @@ export declare const IconButtonComponent: import("react").FunctionComponent<impo
|
|
44
43
|
} & import("react").RefAttributes<HTMLButtonElement>))>;
|
45
44
|
export declare const base: import("@linaria/core").LinariaClassName;
|
46
45
|
export declare const CarouselWrapper: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Record<never, unknown>>;
|
47
|
-
export declare const CarouselTrack: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> &
|
48
|
-
gap?: CSSProperties["gap"];
|
49
|
-
}>;
|
46
|
+
export declare const CarouselTrack: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Record<never, unknown>>;
|
50
47
|
export declare const IconButton: import("@linaria/react").StyledMeta & import("react").FunctionComponent<import("../../../engines/types").PropsType<import("../../../engines/types").Variants> & ((Omit<import("react").ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<import("react").AnchorHTMLAttributes<HTMLElement>, "type"> & import("../../..").AsProps & {
|
51
48
|
text?: string;
|
52
49
|
contentLeft?: import("react").ReactNode;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Carousel.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.styles.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Carousel.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAA0B,CAAC;AAE3D,eAAO,MAAM,IAAI,0CAEhB,CAAC;AAEF,eAAO,MAAM,eAAe,qKAuB3B,CAAC;AAEF,eAAO,MAAM,aAAa,qKAGzB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAsBtB,CAAC;AAEF,eAAO,MAAM,eAAe,qKAE3B,CAAC"}
|
@@ -1,38 +1,24 @@
|
|
1
|
-
import type { HTMLAttributes
|
2
|
-
import { AsProps } from '../../../../src/types';
|
3
|
-
import type { HTMLAttributesWithoutOnChange } from '../../../engines/types';
|
4
|
-
export type SnapType = 'mandatory' | 'proximity' | 'none';
|
5
|
-
export type SnapAlign = 'start' | 'center' | 'end';
|
6
|
-
export type SnapStop = 'normal' | 'always';
|
7
|
-
export type ScrollAxis = 'x' | 'y';
|
1
|
+
import type { HTMLAttributes } from 'react';
|
8
2
|
export type ScrollAlign = 'start' | 'center' | 'end' | 'activeDirection';
|
9
3
|
export interface CarouselNewProps extends HTMLAttributes<HTMLDivElement> {
|
10
4
|
/**
|
11
5
|
* Центрирование активного элемента при скролле.
|
6
|
+
* @default center
|
12
7
|
*/
|
13
8
|
scrollAlign?: ScrollAlign;
|
14
9
|
/**
|
15
|
-
*
|
10
|
+
* Опции управления пагинацией.
|
16
11
|
*/
|
17
|
-
listRole?: string;
|
18
|
-
/**
|
19
|
-
* Сменить WAI-ARIA Label списка.
|
20
|
-
*/
|
21
|
-
listAriaLabel?: string;
|
22
|
-
/**
|
23
|
-
* Внутренний отступ между слайдами.
|
24
|
-
*/
|
25
|
-
gap?: CSSProperties['gap'];
|
26
12
|
paginationOptions?: {
|
27
13
|
disabled?: boolean;
|
28
14
|
visibleDots?: number;
|
29
15
|
centered?: boolean;
|
30
16
|
};
|
31
17
|
/**
|
32
|
-
*
|
18
|
+
* Включение/выключение стрелок управления слайдами.
|
33
19
|
* @default false
|
34
20
|
*/
|
35
|
-
|
21
|
+
controlArrowsDisabled?: boolean;
|
36
22
|
/**
|
37
23
|
* Размер контрола.
|
38
24
|
*/
|
@@ -43,53 +29,7 @@ export interface CarouselNewProps extends HTMLAttributes<HTMLDivElement> {
|
|
43
29
|
*/
|
44
30
|
view?: string;
|
45
31
|
}
|
46
|
-
export type CarouselItemProps =
|
47
|
-
scrollSnapAlign?: SnapAlign;
|
48
|
-
scrollSnapStop?: SnapStop;
|
49
|
-
} & AsProps & HTMLAttributes<HTMLDivElement>;
|
50
|
-
interface CustomPaginationDots {
|
51
|
-
/**
|
52
|
-
* Размер контрола.
|
53
|
-
*/
|
54
|
-
size?: string;
|
55
|
-
/**
|
56
|
-
* Вид контрола.
|
57
|
-
* @default default
|
58
|
-
*/
|
59
|
-
view?: string;
|
60
|
-
/**
|
61
|
-
* Отображение активного элемента
|
62
|
-
* @default 'dot'
|
63
|
-
*/
|
64
|
-
activeElementView?: 'dot' | 'line';
|
65
|
-
/**
|
66
|
-
* Ориентация элементов
|
67
|
-
*/
|
68
|
-
orientation?: 'horizontal' | 'vertical';
|
69
|
-
/**
|
70
|
-
* Центрирует элемент по горизонтали на всю ширину контейнера
|
71
|
-
* @default false
|
72
|
-
*/
|
73
|
-
centered?: boolean;
|
74
|
-
/**
|
75
|
-
* Выбранная страница
|
76
|
-
*/
|
77
|
-
value?: number;
|
78
|
-
/**
|
79
|
-
* Количество страниц
|
80
|
-
*/
|
81
|
-
count?: number;
|
82
|
-
/**
|
83
|
-
* Максимальное количество видимых точек, для условий count > visibleCount
|
84
|
-
*/
|
85
|
-
visibleCount?: number;
|
86
|
-
/**
|
87
|
-
* Обработчик клика по точке
|
88
|
-
*/
|
89
|
-
onChange?: (index: number) => void;
|
90
|
-
}
|
91
|
-
export interface PaginationDotsProps extends HTMLAttributesWithoutOnChange<HTMLDivElement>, CustomPaginationDots {
|
92
|
-
}
|
32
|
+
export type CarouselItemProps = HTMLAttributes<HTMLDivElement>;
|
93
33
|
export interface DotsProps {
|
94
34
|
/**
|
95
35
|
* Выбранная страница
|
@@ -118,5 +58,4 @@ export interface DotsProps {
|
|
118
58
|
*/
|
119
59
|
centered?: boolean;
|
120
60
|
}
|
121
|
-
export {};
|
122
61
|
//# sourceMappingURL=Carousel.types.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Carousel.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,
|
1
|
+
{"version":3,"file":"Carousel.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAEzE,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAE/D,MAAM,WAAW,SAAS;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
@@ -1,16 +1,15 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import { CarouselNewProps as CarouselProps, ScrollAlign
|
2
|
+
import { CarouselNewProps as CarouselProps, ScrollAlign } from '../Carousel.types';
|
3
3
|
/**
|
4
4
|
* Подсчет смещения из-за паддингов.
|
5
5
|
*/
|
6
|
-
export declare const getCalculatedOffset: (scrollEl: Element, trackEl: Element
|
6
|
+
export declare const getCalculatedOffset: (scrollEl: Element, trackEl: Element) => number;
|
7
7
|
/**
|
8
8
|
* Подсчет скролла до переданного индекса.
|
9
9
|
*/
|
10
|
-
export declare const getCalculatedPos: ({ scrollEl, items,
|
10
|
+
export declare const getCalculatedPos: ({ scrollEl, items, index, offset, scrollAlign, }: {
|
11
11
|
scrollEl: HTMLElement;
|
12
12
|
items: HTMLCollectionOf<HTMLElement>;
|
13
|
-
axis: ScrollAxis;
|
14
13
|
index: number;
|
15
14
|
offset: number;
|
16
15
|
scrollAlign: ScrollAlign;
|
@@ -33,10 +32,9 @@ export declare const animatedScrollToX: (elem: Element, pos: number, duration?:
|
|
33
32
|
/**
|
34
33
|
* Прокрутка к указанной позиции с анимацией или без.
|
35
34
|
*/
|
36
|
-
export declare const scrollToPos: ({ scrollEl, pos,
|
35
|
+
export declare const scrollToPos: ({ scrollEl, pos, animated, duration, timingFunction, }: {
|
37
36
|
scrollEl: HTMLElement;
|
38
37
|
pos: number;
|
39
|
-
axis: ScrollAxis;
|
40
38
|
animated?: boolean;
|
41
39
|
duration?: number;
|
42
40
|
timingFunction?: TimingFunction;
|