@chayns-components/core 5.0.0-beta.860 → 5.0.0-beta.866

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.
@@ -1,42 +1,44 @@
1
1
  import { setRefreshScrollEnabled } from 'chayns-api';
2
2
  import { AnimatePresence, useAnimate } from 'framer-motion';
3
3
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
- import { useTheme } from 'styled-components';
5
4
  import { useElementSize } from '../../hooks/useElementSize';
6
5
  import { calculateBiggestWidth } from '../../utils/calculate';
7
6
  import { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';
8
- import { StyledMotionSliderButtonThumb, StyledSliderButton, StyledSliderButtonButtonsWrapper, StyledSliderButtonItem, StyledSliderButtonWrapper } from './SliderButton.styles';
7
+ import Icon from '../icon/Icon';
8
+ import Popup from '../popup/Popup';
9
+ import { StyledMotionSliderButtonThumb, StyledSliderButton, StyledSliderButtonButtonsWrapper, StyledSliderButtonItem, StyledSliderButtonPopupContent, StyledSliderButtonPopupContentItem, StyledSliderButtonWrapper } from './SliderButton.styles';
9
10
  const SliderButton = _ref => {
10
11
  let {
11
12
  selectedButtonId,
12
13
  isDisabled,
13
14
  items,
14
- onChange,
15
- shouldUseFullWidth = false
15
+ onChange
16
16
  } = _ref;
17
- const [selectedButton, setSelectedButton] = useState(undefined);
18
17
  const [dragRange, setDragRange] = useState({
19
18
  left: 0,
20
19
  right: 0
21
20
  });
21
+ const [shownItemsCount, setShownItemsCount] = useState(items.length);
22
+ const [sliderSize, setSliderSize] = useState({
23
+ width: 0
24
+ });
22
25
  const sliderButtonRef = useRef(null);
23
26
  const sliderButtonWrapperRef = useRef(null);
24
- const timeout = useRef();
25
- const preventHandleScroll = useRef(false);
27
+ const popupRef = useRef(null);
26
28
  const [scope, animate] = useAnimate();
27
29
  const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);
28
- const sliderSize = useElementSize(sliderButtonRef);
29
- const theme = useTheme();
30
- const isSliderBigger = useMemo(() => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length, [initialItemWidth, items.length, sliderSize]);
30
+ const elementSize = useElementSize(sliderButtonRef);
31
+ useEffect(() => {
32
+ if (elementSize) setSliderSize(elementSize);
33
+ }, [elementSize]);
34
+ const isSliderBigger = useMemo(() => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1, [initialItemWidth, items.length, sliderSize]);
31
35
  const itemWidth = useMemo(() => {
32
- if (shouldUseFullWidth) {
33
- const sliderWidth = sliderSize?.width || 0;
34
- const maxShownItemsCount = Math.floor(sliderWidth / initialItemWidth);
35
- const itemCount = items.length || 1;
36
- return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);
37
- }
38
- return initialItemWidth;
39
- }, [initialItemWidth, isSliderBigger, items.length, shouldUseFullWidth, sliderSize?.width]);
36
+ const sliderWidth = sliderSize?.width || 0;
37
+ const maxShownItemsCount = Math.floor(sliderWidth / initialItemWidth);
38
+ const itemCount = items.length || 1;
39
+ setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);
40
+ return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);
41
+ }, [initialItemWidth, isSliderBigger, items.length, sliderSize?.width]);
40
42
  useEffect(() => {
41
43
  if (sliderSize) {
42
44
  const sliderWidth = itemWidth * (items.length - 1);
@@ -56,67 +58,125 @@ const SliderButton = _ref => {
56
58
  });
57
59
  }, [animate, scope]);
58
60
  const setItemPosition = useCallback(index => {
59
- if (!isSliderBigger) {
60
- void animation(itemWidth * index);
61
- return;
62
- }
63
- const count = dragRange.right / itemWidth;
64
- if (items.length - count >= index) {
65
- void animation(0);
66
- } else {
67
- void animation(itemWidth * (count - (items.length - index)));
68
- }
69
- if (sliderButtonWrapperRef.current) {
70
- sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;
71
- }
72
- }, [animation, dragRange.right, isSliderBigger, itemWidth, items.length]);
61
+ void animation(itemWidth * index);
62
+ }, [animation, itemWidth]);
73
63
  useEffect(() => {
74
- if (selectedButtonId) {
75
- setSelectedButton(selectedButtonId);
76
- const index = items.findIndex(_ref2 => {
64
+ if (typeof selectedButtonId === 'string') {
65
+ let index = items.findIndex(_ref2 => {
77
66
  let {
78
67
  id
79
68
  } = _ref2;
80
69
  return id === selectedButtonId;
81
70
  });
71
+ if (items.length > shownItemsCount && index > shownItemsCount - 1) {
72
+ index = shownItemsCount - 1;
73
+ }
82
74
  if (index >= 0) {
83
75
  setItemPosition(index);
84
76
  }
85
- } else {
86
- setSelectedButton(items[0]?.id);
87
77
  }
88
- }, [animation, dragRange.right, isSliderBigger, itemWidth, items, selectedButtonId, setItemPosition]);
78
+ }, [animation, dragRange.right, isSliderBigger, itemWidth, items, selectedButtonId, setItemPosition, shownItemsCount]);
89
79
  const handleClick = useCallback((id, index) => {
90
80
  if (isDisabled) {
91
81
  return;
92
82
  }
93
- setSelectedButton(id);
94
- if (typeof onChange === 'function') {
83
+ if (typeof onChange === 'function' && id !== 'more') {
95
84
  onChange(id);
96
85
  }
86
+ if (popupRef.current) {
87
+ if (id === 'more') {
88
+ popupRef.current.show();
89
+ } else {
90
+ popupRef.current.hide();
91
+ }
92
+ }
97
93
  setItemPosition(index);
98
94
  }, [isDisabled, onChange, setItemPosition]);
99
- const buttons = useMemo(() => items.map((_ref3, index) => {
100
- let {
101
- id,
102
- text
103
- } = _ref3;
104
- return /*#__PURE__*/React.createElement(StyledSliderButtonItem, {
105
- $width: itemWidth,
106
- key: `slider-button-${id}`,
107
- onClick: () => handleClick(id, index),
108
- $isSelected: id === selectedButton
109
- }, text);
110
- }), [handleClick, itemWidth, items, selectedButton]);
111
- const thumbText = useMemo(() => {
112
- const selectedItem = items.find(_ref4 => {
95
+ const buttons = useMemo(() => {
96
+ if (items.length > shownItemsCount) {
97
+ const newItems = items.slice(0, shownItemsCount - 1);
98
+ const otherItems = items.slice(shownItemsCount - 1);
99
+ const elements = newItems.map((_ref3, index) => {
100
+ let {
101
+ id,
102
+ text
103
+ } = _ref3;
104
+ return /*#__PURE__*/React.createElement(StyledSliderButtonItem, {
105
+ $width: itemWidth,
106
+ key: `slider-button-${id}`,
107
+ onClick: () => handleClick(id, index)
108
+ }, text);
109
+ });
110
+ const popupContent = otherItems.map(_ref4 => {
111
+ let {
112
+ id,
113
+ text
114
+ } = _ref4;
115
+ return /*#__PURE__*/React.createElement(StyledSliderButtonPopupContentItem, {
116
+ key: `slider-button-${id}`,
117
+ onClick: () => handleClick(id, newItems.length)
118
+ }, text);
119
+ });
120
+ const id = 'more';
121
+ elements.push(/*#__PURE__*/React.createElement(StyledSliderButtonItem, {
122
+ $width: itemWidth,
123
+ key: `slider-button-${id}`
124
+ }, /*#__PURE__*/React.createElement(Popup, {
125
+ ref: popupRef,
126
+ content: /*#__PURE__*/React.createElement(StyledSliderButtonPopupContent, null, popupContent)
127
+ }, /*#__PURE__*/React.createElement(Icon, {
128
+ icons: ['fa fa-ellipsis'],
129
+ color: "white"
130
+ }))));
131
+ return elements;
132
+ }
133
+ return items.map(_ref5 => {
113
134
  let {
114
- id
115
- } = _ref4;
116
- return id === selectedButton;
135
+ id,
136
+ text
137
+ } = _ref5;
138
+ return /*#__PURE__*/React.createElement(StyledSliderButtonItem, {
139
+ $width: itemWidth,
140
+ key: `slider-button-${id}`
141
+ }, text);
117
142
  });
118
- return selectedItem ? selectedItem.text : items[0]?.text;
119
- }, [items, selectedButton]);
143
+ }, [handleClick, itemWidth, items, shownItemsCount]);
144
+ const pseudoButtons = useMemo(() => {
145
+ if (items.length > shownItemsCount) {
146
+ const newItems = items.slice(0, shownItemsCount - 1);
147
+ const elements = newItems.map((_ref6, index) => {
148
+ let {
149
+ id,
150
+ text
151
+ } = _ref6;
152
+ return /*#__PURE__*/React.createElement(StyledSliderButtonItem, {
153
+ $width: itemWidth,
154
+ key: `pseudo-slider-button-${id}`,
155
+ onClick: () => handleClick(id, index)
156
+ }, text);
157
+ });
158
+ const id = 'more';
159
+ elements.push(/*#__PURE__*/React.createElement(StyledSliderButtonItem, {
160
+ $width: itemWidth,
161
+ key: `pseudo-slider-button-${id}`,
162
+ onClick: () => handleClick(id, newItems.length)
163
+ }, /*#__PURE__*/React.createElement(Icon, {
164
+ icons: ['fa fa-ellipsis']
165
+ })));
166
+ return elements;
167
+ }
168
+ return items.map((_ref7, index) => {
169
+ let {
170
+ id,
171
+ text
172
+ } = _ref7;
173
+ return /*#__PURE__*/React.createElement(StyledSliderButtonItem, {
174
+ $width: itemWidth,
175
+ key: `pseudo-slider-button-${id}`,
176
+ onClick: () => handleClick(id, index)
177
+ }, text);
178
+ });
179
+ }, [handleClick, itemWidth, items, shownItemsCount]);
120
180
 
121
181
  /**
122
182
  * Creates an array with the snap points relative to the width of the items
@@ -166,96 +226,30 @@ const SliderButton = _ref => {
166
226
  });
167
227
  if (nearestPoint >= 0 && nearestIndex >= 0) {
168
228
  void animation(nearestPoint);
169
- const id = items[nearestIndex]?.id;
170
- setSelectedButton(id);
171
- if (typeof onChange === 'function' && id) {
172
- onChange(id);
229
+ let id;
230
+ if (nearestIndex === shownItemsCount - 1) {
231
+ id = 'more';
232
+ } else {
233
+ id = items[nearestIndex]?.id;
173
234
  }
174
- }
175
- preventHandleScroll.current = false;
176
- }, [animation, itemWidth, items, onChange, scope, snapPoints]);
177
- const handleWhileDrag = useCallback(() => {
178
- preventHandleScroll.current = true;
179
- void setRefreshScrollEnabled(false);
180
- const position = getThumbPosition({
181
- scope,
182
- itemWidth
183
- });
184
- if (!position) {
185
- return;
186
- }
187
- const {
188
- right,
189
- left,
190
- middle
191
- } = position;
192
- let scrollLeft = 0;
193
- const scrollSpeed = 3;
194
- if (sliderButtonWrapperRef.current) {
195
- if (right >= dragRange.right) {
196
- sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;
235
+ if (popupRef.current) {
236
+ if (id === 'more') {
237
+ popupRef.current.show();
238
+ } else {
239
+ popupRef.current.hide();
240
+ }
197
241
  }
198
- if (left <= dragRange.left) {
199
- sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;
242
+ if (typeof onChange === 'function' && id && id !== 'more') {
243
+ onChange(id);
200
244
  }
201
- scrollLeft = sliderButtonWrapperRef.current.scrollLeft;
202
- }
203
- const {
204
- nearestIndex
205
- } = getNearestPoint({
206
- snapPoints,
207
- position: middle,
208
- scrollLeft
209
- });
210
- if (nearestIndex >= 0) {
211
- setSelectedButton(items[nearestIndex]?.id);
212
245
  }
213
- }, [dragRange, itemWidth, items, scope, snapPoints]);
214
-
215
- // With this, the handleScroll works before the thumb is moved the first time.
216
- useEffect(() => {
217
- void animation(1);
218
- void animation(0);
219
- }, [animation]);
220
- const handleScroll = useCallback(event => {
221
- if (preventHandleScroll.current) {
222
- return;
223
- }
224
- void setRefreshScrollEnabled(false);
225
- const position = getThumbPosition({
226
- scope,
227
- itemWidth
228
- });
229
- if (!position) {
230
- return;
231
- }
232
- const {
233
- middle
234
- } = position;
235
- const {
236
- scrollLeft
237
- } = event.target;
238
- const {
239
- nearestIndex
240
- } = getNearestPoint({
241
- snapPoints,
242
- position: middle,
243
- scrollLeft
244
- });
245
- if (nearestIndex >= 0) {
246
- setSelectedButton(items[nearestIndex]?.id);
247
- }
248
- if (timeout.current) {
249
- clearTimeout(timeout.current);
250
- }
251
- timeout.current = window.setTimeout(() => {
252
- handleDragEnd();
253
- }, 200);
254
- }, [handleDragEnd, itemWidth, items, scope, snapPoints]);
246
+ }, [animation, itemWidth, items, onChange, scope, shownItemsCount, snapPoints]);
255
247
  return useMemo(() => /*#__PURE__*/React.createElement(StyledSliderButton, {
256
248
  $isDisabled: isDisabled,
257
249
  ref: sliderButtonRef
258
- }, /*#__PURE__*/React.createElement(StyledMotionSliderButtonThumb, {
250
+ }, /*#__PURE__*/React.createElement(StyledSliderButtonButtonsWrapper, {
251
+ $isInvisible: true
252
+ }, pseudoButtons), /*#__PURE__*/React.createElement(StyledMotionSliderButtonThumb, {
259
253
  ref: scope,
260
254
  drag: isDisabled ? false : 'x',
261
255
  dragElastic: 0,
@@ -266,20 +260,12 @@ const SliderButton = _ref => {
266
260
  ...dragRange
267
261
  },
268
262
  $width: itemWidth,
269
- onDrag: handleWhileDrag,
270
- onDragEnd: handleDragEnd,
271
- whileTap: isDisabled ? {} : {
272
- backgroundColor: theme['407']
273
- },
274
- whileHover: isDisabled ? {} : {
275
- backgroundColor: theme['409']
276
- }
277
- }, thumbText), /*#__PURE__*/React.createElement(StyledSliderButtonWrapper, {
263
+ onDragEnd: handleDragEnd
264
+ }), /*#__PURE__*/React.createElement(StyledSliderButtonWrapper, {
278
265
  $isDisabled: isDisabled,
279
266
  $width: !isSliderBigger ? dragRange.right + itemWidth : dragRange.right,
280
- ref: sliderButtonWrapperRef,
281
- onScroll: handleScroll
282
- }, /*#__PURE__*/React.createElement(AnimatePresence, null, /*#__PURE__*/React.createElement(StyledSliderButtonButtonsWrapper, null, buttons)))), [buttons, dragRange, handleDragEnd, handleScroll, handleWhileDrag, isDisabled, isSliderBigger, itemWidth, scope, theme, thumbText]);
267
+ ref: sliderButtonWrapperRef
268
+ }, /*#__PURE__*/React.createElement(AnimatePresence, null, /*#__PURE__*/React.createElement(StyledSliderButtonButtonsWrapper, null, buttons)))), [buttons, dragRange, handleDragEnd, isDisabled, isSliderBigger, itemWidth, pseudoButtons, scope]);
283
269
  };
284
270
  SliderButton.displayName = 'SliderButton';
285
271
  export default SliderButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useTheme","useElementSize","calculateBiggestWidth","getNearestPoint","getThumbPosition","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonWrapper","SliderButton","_ref","selectedButtonId","isDisabled","items","onChange","shouldUseFullWidth","selectedButton","setSelectedButton","undefined","dragRange","setDragRange","left","right","sliderButtonRef","sliderButtonWrapperRef","timeout","preventHandleScroll","scope","animate","initialItemWidth","sliderSize","theme","isSliderBigger","Math","floor","width","length","itemWidth","sliderWidth","maxShownItemsCount","itemCount","count","animation","x","current","type","duration","setItemPosition","index","scrollLeft","findIndex","_ref2","id","handleClick","buttons","map","_ref3","text","createElement","$width","key","onClick","$isSelected","thumbText","selectedItem","find","_ref4","snapPoints","points","i","push","handleDragEnd","position","middle","nearestPoint","nearestIndex","handleWhileDrag","scrollSpeed","handleScroll","event","target","clearTimeout","window","setTimeout","$isDisabled","ref","drag","dragElastic","dragConstraints","onDrag","onDragEnd","whileTap","backgroundColor","whileHover","onScroll","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, UIEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n /**\n * Whether the full width should be used if the slider is smaller.\n */\n shouldUseFullWidth?: boolean;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({\n selectedButtonId,\n isDisabled,\n items,\n onChange,\n shouldUseFullWidth = false,\n}) => {\n const [selectedButton, setSelectedButton] = useState<string | undefined>(undefined);\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const timeout = useRef<number>();\n const preventHandleScroll = useRef(false);\n\n const [scope, animate] = useAnimate();\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const sliderSize = useElementSize(sliderButtonRef);\n\n const theme: Theme = useTheme();\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const itemWidth = useMemo(() => {\n if (shouldUseFullWidth) {\n const sliderWidth = sliderSize?.width || 0;\n const maxShownItemsCount = Math.floor(sliderWidth / initialItemWidth);\n const itemCount = items.length || 1;\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }\n\n return initialItemWidth;\n }, [initialItemWidth, isSliderBigger, items.length, shouldUseFullWidth, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n if (!isSliderBigger) {\n void animation(itemWidth * index);\n\n return;\n }\n\n const count = dragRange.right / itemWidth;\n\n if (items.length - count >= index) {\n void animation(0);\n } else {\n void animation(itemWidth * (count - (items.length - index)));\n }\n\n if (sliderButtonWrapperRef.current) {\n sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;\n }\n },\n [animation, dragRange.right, isSliderBigger, itemWidth, items.length],\n );\n\n useEffect(() => {\n if (selectedButtonId) {\n setSelectedButton(selectedButtonId);\n\n const index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (index >= 0) {\n setItemPosition(index);\n }\n } else {\n setSelectedButton(items[0]?.id);\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function') {\n onChange(id);\n }\n\n setItemPosition(index);\n },\n [isDisabled, onChange, setItemPosition],\n );\n\n const buttons = useMemo(\n () =>\n items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n $isSelected={id === selectedButton}\n >\n {text}\n </StyledSliderButtonItem>\n )),\n [handleClick, itemWidth, items, selectedButton],\n );\n\n const thumbText = useMemo(() => {\n const selectedItem = items.find(({ id }) => id === selectedButton);\n\n return selectedItem ? selectedItem.text : items[0]?.text;\n }, [items, selectedButton]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n const id = items[nearestIndex]?.id;\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function' && id) {\n onChange(id);\n }\n }\n\n preventHandleScroll.current = false;\n }, [animation, itemWidth, items, onChange, scope, snapPoints]);\n\n const handleWhileDrag = useCallback(() => {\n preventHandleScroll.current = true;\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { right, left, middle } = position;\n\n let scrollLeft = 0;\n\n const scrollSpeed = 3;\n\n if (sliderButtonWrapperRef.current) {\n if (right >= dragRange.right) {\n sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;\n }\n\n if (left <= dragRange.left) {\n sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;\n }\n\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n }\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n }, [dragRange, itemWidth, items, scope, snapPoints]);\n\n // With this, the handleScroll works before the thumb is moved the first time.\n useEffect(() => {\n void animation(1);\n void animation(0);\n }, [animation]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLElement>) => {\n if (preventHandleScroll.current) {\n return;\n }\n\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle } = position;\n\n const { scrollLeft } = event.target as HTMLDivElement;\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = window.setTimeout(() => {\n handleDragEnd();\n }, 200);\n },\n [handleDragEnd, itemWidth, items, scope, snapPoints],\n );\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDrag={handleWhileDrag}\n onDragEnd={handleDragEnd}\n whileTap={isDisabled ? {} : { backgroundColor: theme['407'] }}\n whileHover={isDisabled ? {} : { backgroundColor: theme['409'] }}\n >\n {thumbText}\n </StyledMotionSliderButtonThumb>\n <StyledSliderButtonWrapper\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n onScroll={handleScroll}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n handleScroll,\n handleWhileDrag,\n isDisabled,\n isSliderBigger,\n itemWidth,\n scope,\n theme,\n thumbText,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","calculateBiggestWidth","getNearestPoint","getThumbPosition","Icon","Popup","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonWrapper","SliderButton","_ref","selectedButtonId","isDisabled","items","onChange","dragRange","setDragRange","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","sliderButtonRef","sliderButtonWrapperRef","popupRef","scope","animate","initialItemWidth","elementSize","isSliderBigger","Math","floor","itemWidth","sliderWidth","maxShownItemsCount","itemCount","count","animation","x","current","type","duration","setItemPosition","index","findIndex","_ref2","id","handleClick","show","hide","buttons","newItems","slice","otherItems","elements","map","_ref3","text","createElement","$width","key","onClick","popupContent","_ref4","push","ref","content","icons","color","_ref5","pseudoButtons","_ref6","_ref7","snapPoints","points","i","handleDragEnd","position","middle","scrollLeft","nearestPoint","nearestIndex","$isDisabled","$isInvisible","drag","dragElastic","dragConstraints","onDragEnd","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({ selectedButtonId, isDisabled, items, onChange }) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n const [scope, animate] = useAnimate();\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const maxShownItemsCount = Math.floor(sliderWidth / initialItemWidth);\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [initialItemWidth, isSliderBigger, items.length, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [isDisabled, onChange, setItemPosition],\n );\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem $width={itemWidth} key={`slider-button-${id}`}>\n <Popup\n ref={popupRef}\n content={\n <StyledSliderButtonPopupContent>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem $width={itemWidth} key={`slider-button-${id}`}>\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, itemWidth, items, shownItemsCount]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id && id !== 'more') {\n onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n />\n <StyledSliderButtonWrapper\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n isDisabled,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const StyledSliderButtonWrapper = styled.div`
16
16
  let {
17
17
  theme
18
18
  } = _ref2;
19
- return theme['404'];
19
+ return theme['408'];
20
20
  }};
21
21
  border-radius: 3px;
22
22
  border: none;
@@ -28,7 +28,6 @@ export const StyledSliderButtonWrapper = styled.div`
28
28
  position: relative;
29
29
  user-select: none;
30
30
  transition: opacity 0.3s ease;
31
- z-index: 1;
32
31
 
33
32
  width: ${_ref3 => {
34
33
  let {
@@ -78,32 +77,63 @@ export const StyledSliderButtonItem = styled.div`
78
77
  justify-content: center;
79
78
  color: white;
80
79
  `;
80
+ export const StyledSliderButtonPopupContent = styled.div`
81
+ display: flex;
82
+ flex-direction: column;
83
+ padding: 7px 12px;
84
+ `;
85
+ export const StyledSliderButtonPopupContentItem = styled.div`
86
+ font-size: 110%;
87
+ font-family: 'Roboto Medium', serif;
88
+ cursor: pointer;
89
+ `;
81
90
  export const StyledSliderButtonButtonsWrapper = styled.div`
82
91
  position: absolute;
92
+ z-index: ${_ref7 => {
93
+ let {
94
+ $isInvisible
95
+ } = _ref7;
96
+ return $isInvisible ? '2' : '4';
97
+ }};
98
+ opacity: ${_ref8 => {
99
+ let {
100
+ $isInvisible
101
+ } = _ref8;
102
+ return $isInvisible ? 0 : 1;
103
+ }};
83
104
  display: flex;
105
+ cursor: pointer;
84
106
  align-items: center;
107
+ pointer-events: ${_ref9 => {
108
+ let {
109
+ $isInvisible
110
+ } = _ref9;
111
+ return $isInvisible ? 'auto' : 'none';
112
+ }};
85
113
  `;
86
114
  export const StyledMotionSliderButtonThumb = styled(motion.div)`
87
115
  font-size: 110%;
88
116
  font-family: 'Roboto Medium', serif;
89
- background-color: ${_ref7 => {
117
+ background-color: ${_ref10 => {
90
118
  let {
91
119
  theme
92
- } = _ref7;
93
- return theme['408'];
120
+ } = _ref10;
121
+ return theme['405'];
94
122
  }};
95
- width: ${_ref8 => {
123
+ opacity: 1;
124
+ width: ${_ref11 => {
96
125
  let {
97
126
  $width
98
- } = _ref8;
99
- return $width;
127
+ } = _ref11;
128
+ return $width - 8;
100
129
  }}px;
101
130
  position: absolute;
102
- border-radius: 3px;
103
- box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);
131
+ border-radius: 2px;
132
+ top: 4px;
133
+ left: 4px;
104
134
  white-space: nowrap;
105
135
  z-index: 3;
106
- height: 32px;
136
+ height: 24px;
107
137
  padding: 7px 12px;
108
138
  display: flex;
109
139
  color: white;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.styles.js","names":["motion","styled","StyledSliderButton","div","_ref","$isDisabled","StyledSliderButtonWrapper","_ref2","theme","_ref3","$width","_ref4","StyledSliderButtonItem","_ref5","_ref6","StyledSliderButtonButtonsWrapper","StyledMotionSliderButtonThumb","_ref7","_ref8"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number; $isDisabled?: boolean }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['404']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n z-index: 1;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: ${({ $isDisabled }) => ($isDisabled ? 'hidden' : 'scroll')};\n overflow-y: hidden;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $isSelected: boolean; $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n white-space: nowrap;\n justify-content: center;\n color: white;\n`;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n width: ${({ $width }) => $width}px;\n position: absolute;\n border-radius: 3px;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n white-space: nowrap;\n z-index: 3;\n height: 32px;\n padding: 7px 12px;\n display: flex;\n color: white;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAKtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA4B;AACrE,eAAeC,IAAA;EAAA,IAAC;IAAEC;EAAY,CAAC,GAAAD,IAAA;EAAA,OAAMC,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,CAAC;AAC3D;AACA;AACA,CAAC;AAID,OAAO,MAAMC,yBAAyB,GAAGL,MAAM,CAACE,GAAmC;AACnF;AACA,wBAAwBI,KAAA;EAAA,IAAC;IAAEC;EAA+B,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAAC,KAAK,CAAC;AAAA;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,KAAA;EAAA,OAAKC,MAAM;AAAA;AACnC;AACA;AACA,kBAAkBC,KAAA;EAAA,IAAC;IAAEN;EAAY,CAAC,GAAAM,KAAA;EAAA,OAAMN,WAAW,GAAG,QAAQ,GAAG,QAAQ;AAAA,CAAC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMO,sBAAsB,GAAGX,MAAM,CAACE,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiBU,KAAA;EAAA,IAAC;IAAEH;EAAO,CAAC,GAAAG,KAAA;EAAA,OAAKH,MAAM;AAAA;AACvC,iBAAiBI,KAAA;EAAA,IAAC;IAAEJ;EAAO,CAAC,GAAAI,KAAA;EAAA,OAAKJ,MAAM;AAAA;AACvC;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMK,gCAAgC,GAAGd,MAAM,CAACE,GAAG;AAC1D;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMa,6BAA6B,GAAGf,MAAM,CAACD,MAAM,CAACG,GAAG,CAAqC;AACnG;AACA;AACA,wBAAwBc,KAAA;EAAA,IAAC;IAAET;EAA0C,CAAC,GAAAS,KAAA;EAAA,OAAKT,KAAK,CAAC,KAAK,CAAC;AAAA;AACvF,aAAaU,KAAA;EAAA,IAAC;IAAER;EAAO,CAAC,GAAAQ,KAAA;EAAA,OAAKR,MAAM;AAAA;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SliderButton.styles.js","names":["motion","styled","StyledSliderButton","div","_ref","$isDisabled","StyledSliderButtonWrapper","_ref2","theme","_ref3","$width","_ref4","StyledSliderButtonItem","_ref5","_ref6","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonButtonsWrapper","_ref7","$isInvisible","_ref8","_ref9","StyledMotionSliderButtonThumb","_ref10","_ref11"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number; $isDisabled?: boolean }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: ${({ $isDisabled }) => ($isDisabled ? 'hidden' : 'scroll')};\n overflow-y: hidden;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n white-space: nowrap;\n justify-content: center;\n color: white;\n`;\n\nexport const StyledSliderButtonPopupContent = styled.div`\n display: flex;\n flex-direction: column;\n padding: 7px 12px;\n`;\n\nexport const StyledSliderButtonPopupContentItem = styled.div`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n cursor: pointer;\n`;\n\ntype StyledSliderButtonButtonsWrapperProps = WithTheme<{ $isInvisible?: boolean }>;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div<StyledSliderButtonButtonsWrapperProps>`\n position: absolute;\n z-index: ${({ $isInvisible }) => ($isInvisible ? '2' : '4')};\n opacity: ${({ $isInvisible }) => ($isInvisible ? 0 : 1)};\n display: flex;\n cursor: pointer;\n align-items: center;\n pointer-events: ${({ $isInvisible }) => ($isInvisible ? 'auto' : 'none')};\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['405']};\n opacity: 1;\n width: ${({ $width }) => $width - 8}px;\n position: absolute;\n border-radius: 2px;\n top: 4px;\n left: 4px;\n white-space: nowrap;\n z-index: 3;\n height: 24px;\n padding: 7px 12px;\n display: flex;\n color: white;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAKtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA4B;AACrE,eAAeC,IAAA;EAAA,IAAC;IAAEC;EAAY,CAAC,GAAAD,IAAA;EAAA,OAAMC,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,CAAC;AAC3D;AACA;AACA,CAAC;AAID,OAAO,MAAMC,yBAAyB,GAAGL,MAAM,CAACE,GAAmC;AACnF;AACA,wBAAwBI,KAAA;EAAA,IAAC;IAAEC;EAA0C,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAAC,KAAK,CAAC;AAAA;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,KAAA;EAAA,OAAKC,MAAM;AAAA;AACnC;AACA;AACA,kBAAkBC,KAAA;EAAA,IAAC;IAAEN;EAAY,CAAC,GAAAM,KAAA;EAAA,OAAMN,WAAW,GAAG,QAAQ,GAAG,QAAQ;AAAA,CAAC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMO,sBAAsB,GAAGX,MAAM,CAACE,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiBU,KAAA;EAAA,IAAC;IAAEH;EAAO,CAAC,GAAAG,KAAA;EAAA,OAAKH,MAAM;AAAA;AACvC,iBAAiBI,KAAA;EAAA,IAAC;IAAEJ;EAAO,CAAC,GAAAI,KAAA;EAAA,OAAKJ,MAAM;AAAA;AACvC;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMK,8BAA8B,GAAGd,MAAM,CAACE,GAAG;AACxD;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMa,kCAAkC,GAAGf,MAAM,CAACE,GAAG;AAC5D;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMc,gCAAgC,GAAGhB,MAAM,CAACE,GAA0C;AACjG;AACA,eAAee,KAAA;EAAA,IAAC;IAAEC;EAAa,CAAC,GAAAD,KAAA;EAAA,OAAMC,YAAY,GAAG,GAAG,GAAG,GAAG;AAAA,CAAC;AAC/D,eAAeC,KAAA;EAAA,IAAC;IAAED;EAAa,CAAC,GAAAC,KAAA;EAAA,OAAMD,YAAY,GAAG,CAAC,GAAG,CAAC;AAAA,CAAC;AAC3D;AACA;AACA;AACA,sBAAsBE,KAAA;EAAA,IAAC;IAAEF;EAAa,CAAC,GAAAE,KAAA;EAAA,OAAMF,YAAY,GAAG,MAAM,GAAG,MAAM;AAAA,CAAC;AAC5E,CAAC;AAID,OAAO,MAAMG,6BAA6B,GAAGrB,MAAM,CAACD,MAAM,CAACG,GAAG,CAAqC;AACnG;AACA;AACA,wBAAwBoB,MAAA;EAAA,IAAC;IAAEf;EAA+B,CAAC,GAAAe,MAAA;EAAA,OAAKf,KAAK,CAAC,KAAK,CAAC;AAAA;AAC5E;AACA,aAAagB,MAAA;EAAA,IAAC;IAAEd;EAAO,CAAC,GAAAc,MAAA;EAAA,OAAKd,MAAM,GAAG,CAAC;AAAA;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -536,6 +536,9 @@ type StyledAccordionIconProps = WithTheme<{
536
536
  $icon: string;
537
537
  }>;
538
538
  export declare const StyledAccordionIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, StyledAccordionIconProps>> & string;
539
+ type StyledMotionContentWrapperProps = WithTheme<{
540
+ $isWrapped: boolean;
541
+ }>;
539
542
  export declare const StyledMotionContentWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<Omit<{
540
543
  slot?: string | undefined;
541
544
  title?: string | undefined;
@@ -799,9 +802,7 @@ export declare const StyledMotionContentWrapper: import("styled-components/dist/
799
802
  onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
800
803
  } & import("framer-motion").MotionProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
801
804
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
802
- }, {
803
- theme: import("../../color-scheme-provider/ColorSchemeProvider").Theme;
804
- }>> & string & Omit<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, keyof import("react").Component<any, {}, any>>;
805
+ }, StyledMotionContentWrapperProps>> & string & Omit<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, keyof import("react").Component<any, {}, any>>;
805
806
  export declare const StyledMotionTitleWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<Omit<{
806
807
  slot?: string | undefined;
807
808
  title?: string | undefined;
@@ -18,10 +18,6 @@ export type SliderButtonProps = {
18
18
  * The id of a button that should be selected.
19
19
  */
20
20
  selectedButtonId?: string;
21
- /**
22
- * Whether the full width should be used if the slider is smaller.
23
- */
24
- shouldUseFullWidth?: boolean;
25
21
  };
26
22
  declare const SliderButton: FC<SliderButtonProps>;
27
23
  export default SliderButton;