@chayns-components/core 5.0.48 → 5.0.50

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.
Files changed (29) hide show
  1. package/AGENTS.md +12 -0
  2. package/lib/cjs/components/combobox/ComboBox.js +4 -8
  3. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  4. package/lib/cjs/components/filter/Filter.js +4 -41
  5. package/lib/cjs/components/filter/Filter.js.map +1 -1
  6. package/lib/cjs/components/filter/filter-content/FIlterContent.js +4 -1
  7. package/lib/cjs/components/filter/filter-content/FIlterContent.js.map +1 -1
  8. package/lib/cjs/components/filter/filter-content/FilterContent.styles.js +11 -1
  9. package/lib/cjs/components/filter/filter-content/FilterContent.styles.js.map +1 -1
  10. package/lib/cjs/components/slider-button/SliderButton.js +5 -2
  11. package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
  12. package/lib/cjs/components/slider-button/SliderButton.styles.js +6 -2
  13. package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
  14. package/lib/esm/components/combobox/ComboBox.js +4 -8
  15. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  16. package/lib/esm/components/filter/Filter.js +5 -42
  17. package/lib/esm/components/filter/Filter.js.map +1 -1
  18. package/lib/esm/components/filter/filter-content/FIlterContent.js +5 -2
  19. package/lib/esm/components/filter/filter-content/FIlterContent.js.map +1 -1
  20. package/lib/esm/components/filter/filter-content/FilterContent.styles.js +10 -0
  21. package/lib/esm/components/filter/filter-content/FilterContent.styles.js.map +1 -1
  22. package/lib/esm/components/slider-button/SliderButton.js +5 -2
  23. package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
  24. package/lib/esm/components/slider-button/SliderButton.styles.js +6 -2
  25. package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
  26. package/lib/types/components/filter/filter-content/FilterContent.styles.d.ts +2 -0
  27. package/lib/types/components/slider-button/SliderButton.d.ts +4 -0
  28. package/lib/types/components/slider-button/SliderButton.styles.d.ts +2 -0
  29. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"FilterContent.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledFilterContent","exports","styled","div","theme","StyledFilterSort","StyledFilterSortText","StyledFilterComboboxWrapper","$textWidth","StyledFilterComboboxInline"],"sources":["../../../../../src/components/filter/filter-content/FilterContent.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledFilterContentProps = WithTheme<unknown>;\n\nexport const StyledFilterContent = styled.div<StyledFilterContentProps>`\n background-color: ${({ theme }) => theme['100']};\n\n padding: 12px;\n\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const StyledFilterSort = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n`;\n\nexport const StyledFilterSortText = styled.div`\n flex: 0 0 auto;\n`;\n\ntype StyledFilterComboboxWrapperProps = WithTheme<{\n $textWidth: number;\n}>;\n\nexport const StyledFilterComboboxWrapper = styled.div<StyledFilterComboboxWrapperProps>`\n display: flex;\n justify-content: end;\n \n width: ${({ $textWidth }) => `calc(100% - ${$textWidth}px)`}}\n`;\n\nexport const StyledFilterComboboxInline = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAKhC,MAAMG,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACvE,wBAAwB,CAAC;EAAEC;AAAM,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAGH,yBAAM,CAACC,GAAG;AAC1C;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMG,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,GAAGJ,yBAAM,CAACC,GAAG;AAC9C;AACA,CAAC;AAMM,MAAMI,2BAA2B,GAAAN,OAAA,CAAAM,2BAAA,GAAGL,yBAAM,CAACC,GAAqC;AACvF;AACA;AACA;AACA,aAAa,CAAC;EAAEK;AAAW,CAAC,KAAK,eAAeA,UAAU,KAAK;AAC/D,CAAC;AAEM,MAAMC,0BAA0B,GAAAR,OAAA,CAAAQ,0BAAA,GAAGP,yBAAM,CAACC,GAAG;AACpD;AACA;AACA;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"FilterContent.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledFilterContent","exports","styled","div","theme","StyledFilterSort","StyledFilterSortText","StyledFilterComboboxWrapper","$textWidth","StyledFilterComboboxInline","StyledFilterComboboxInlineLabel","StyledFilterComboboxInlineComboboxWrapper"],"sources":["../../../../../src/components/filter/filter-content/FilterContent.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledFilterContentProps = WithTheme<unknown>;\n\nexport const StyledFilterContent = styled.div<StyledFilterContentProps>`\n background-color: ${({ theme }) => theme['100']};\n\n padding: 12px;\n\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const StyledFilterSort = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n`;\n\nexport const StyledFilterSortText = styled.div`\n flex: 0 0 auto;\n`;\n\ntype StyledFilterComboboxWrapperProps = WithTheme<{\n $textWidth: number;\n}>;\n\nexport const StyledFilterComboboxWrapper = styled.div<StyledFilterComboboxWrapperProps>`\n display: flex;\n justify-content: end;\n \n width: ${({ $textWidth }) => `calc(100% - ${$textWidth}px)`}}\n`;\n\nexport const StyledFilterComboboxInline = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n`;\n\nexport const StyledFilterComboboxInlineLabel = styled.div`\n flex: 0 0 auto;\n`;\n\nexport const StyledFilterComboboxInlineComboboxWrapper = styled.div`\n display: flex;\n justify-content: end;\n flex: 1 1 auto;\n min-width: 0;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAKhC,MAAMG,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACvE,wBAAwB,CAAC;EAAEC;AAAM,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAGH,yBAAM,CAACC,GAAG;AAC1C;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMG,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,GAAGJ,yBAAM,CAACC,GAAG;AAC9C;AACA,CAAC;AAMM,MAAMI,2BAA2B,GAAAN,OAAA,CAAAM,2BAAA,GAAGL,yBAAM,CAACC,GAAqC;AACvF;AACA;AACA;AACA,aAAa,CAAC;EAAEK;AAAW,CAAC,KAAK,eAAeA,UAAU,KAAK;AAC/D,CAAC;AAEM,MAAMC,0BAA0B,GAAAR,OAAA,CAAAQ,0BAAA,GAAGP,yBAAM,CAACC,GAAG;AACpD;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMO,+BAA+B,GAAAT,OAAA,CAAAS,+BAAA,GAAGR,yBAAM,CAACC,GAAG;AACzD;AACA,CAAC;AAEM,MAAMQ,yCAAyC,GAAAV,OAAA,CAAAU,yCAAA,GAAGT,yBAAM,CAACC,GAAG;AACnE;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -21,7 +21,8 @@ const SliderButton = ({
21
21
  isSecondary,
22
22
  items,
23
23
  onChange,
24
- selectedButtonId
24
+ selectedButtonId,
25
+ isRounded = false
25
26
  }) => {
26
27
  const [dragRange, setDragRange] = (0, _react2.useState)({
27
28
  left: 0,
@@ -307,6 +308,7 @@ const SliderButton = ({
307
308
  }, /*#__PURE__*/_react2.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, {
308
309
  $isInvisible: true
309
310
  }, pseudoButtons), /*#__PURE__*/_react2.default.createElement(_SliderButton.StyledMotionSliderButtonThumb, {
311
+ $isRounded: isRounded,
310
312
  ref: scope,
311
313
  drag: isDisabled ? false : 'x',
312
314
  dragElastic: 0,
@@ -324,13 +326,14 @@ const SliderButton = ({
324
326
  backgroundColor: thumbBackgroundColor
325
327
  }
326
328
  }), /*#__PURE__*/_react2.default.createElement(_SliderButton.StyledSliderButtonWrapper, {
329
+ $isRounded: isRounded,
327
330
  $isDisabled: isDisabled,
328
331
  $width: !isSliderBigger ? dragRange.right + itemWidth : dragRange.right,
329
332
  ref: sliderButtonWrapperRef,
330
333
  style: {
331
334
  backgroundColor
332
335
  }
333
- }, /*#__PURE__*/_react2.default.createElement(_react.AnimatePresence, null, /*#__PURE__*/_react2.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, null, buttons)))), [backgroundColor, buttons, currentId, currentIndex, dragRange, handleClick, handleDragEnd, handleDragStart, isDisabled, isSliderBigger, itemWidth, pseudoButtons, scope, thumbBackgroundColor]);
336
+ }, /*#__PURE__*/_react2.default.createElement(_react.AnimatePresence, null, /*#__PURE__*/_react2.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, null, buttons)))), [backgroundColor, buttons, currentId, currentIndex, dragRange, handleClick, handleDragEnd, handleDragStart, isDisabled, isRounded, isSliderBigger, itemWidth, pseudoButtons, scope, thumbBackgroundColor]);
334
337
  };
335
338
  SliderButton.displayName = 'SliderButton';
336
339
  var _default = exports.default = SliderButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_element","_calculate","_sliderButton","_Icon","_interopRequireDefault","_Popup","_SliderButton","_styledComponents","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","dragRange","setDragRange","useState","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","sliderButtonRef","useRef","sliderButtonWrapperRef","popupRef","scope","animate","useAnimate","theme","useTheme","initialItemWidth","useMemo","calculateBiggestWidth","elementSize","useElementSize","useEffect","setPopupId","useCallback","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","buttons","newItems","otherItems","elements","text","createElement","StyledSliderButtonItem","$isSecondary","$width","key","onClick","popupContent","StyledSliderButtonPopupContentItem","$isSelected","push","ref","content","StyledSliderButtonPopupContent","icons","pseudoButtons","snapPoints","points","handleDragStart","setRefreshScrollEnabled","handleDragEnd","position","getThumbPosition","middle","scrollLeft","getNearestPoint","nearestPoint","nearestIndex","_items$nearestIndex","StyledSliderButton","$isDisabled","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","StyledSliderButtonWrapper","AnimatePresence","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\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';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled and cannot be clicked anymore.\n */\n isDisabled?: boolean;\n /**\n * Displays the button in the secondary style.\n */\n isSecondary?: boolean;\n /**\n * The items that should be displayed in the slider button.\n */\n items: SliderButtonItem[];\n /**\n * Function to be executed when a button is selected. The id of the selected button is passed as an argument.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The id of the button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(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 theme = useTheme() as Theme;\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 setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, 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 setCurrentIndex(index);\n\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 setCurrentId(selectedButtonId);\n\n setPopupId(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 setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setPopupId(id);\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, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\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 $isSecondary={isSecondary}\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 $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\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\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [currentPopupId, handleClick, isSecondary, 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 $isSecondary={isSecondary}\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 $isSecondary={isSecondary}\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 $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, 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 handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\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 onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n />\n <StyledSliderButtonWrapper\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n isDisabled,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n thumbBackgroundColor,\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":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_element","_calculate","_sliderButton","_Icon","_interopRequireDefault","_Popup","_SliderButton","_styledComponents","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","dragRange","setDragRange","useState","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","sliderButtonRef","useRef","sliderButtonWrapperRef","popupRef","scope","animate","useAnimate","theme","useTheme","initialItemWidth","useMemo","calculateBiggestWidth","elementSize","useElementSize","useEffect","setPopupId","useCallback","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","buttons","newItems","otherItems","elements","text","createElement","StyledSliderButtonItem","$isSecondary","$width","key","onClick","popupContent","StyledSliderButtonPopupContentItem","$isSelected","push","ref","content","StyledSliderButtonPopupContent","icons","pseudoButtons","snapPoints","points","handleDragStart","setRefreshScrollEnabled","handleDragEnd","position","getThumbPosition","middle","scrollLeft","getNearestPoint","nearestPoint","nearestIndex","_items$nearestIndex","StyledSliderButton","$isDisabled","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","StyledSliderButtonWrapper","AnimatePresence","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\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';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled and cannot be clicked anymore.\n */\n isDisabled?: boolean;\n /**\n * Displays the button in the secondary style.\n */\n isSecondary?: boolean;\n /**\n * The items that should be displayed in the slider button.\n */\n items: SliderButtonItem[];\n /**\n * Function to be executed when a button is selected. The id of the selected button is passed as an argument.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The id of the button that should be selected.\n */\n selectedButtonId?: string;\n /**\n *\n */\n isRounded?: boolean;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(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 theme = useTheme() as Theme;\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 setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, 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 setCurrentIndex(index);\n\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 setCurrentId(selectedButtonId);\n\n setPopupId(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 setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setPopupId(id);\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, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\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 $isSecondary={isSecondary}\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 $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\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\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [currentPopupId, handleClick, isSecondary, 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 $isSecondary={isSecondary}\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 $isSecondary={isSecondary}\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 $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, 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 handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\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 $isRounded={isRounded}\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 onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,9 @@ const StyledSliderButton = exports.StyledSliderButton = _styledComponents.defaul
17
17
  `;
18
18
  const StyledSliderButtonWrapper = exports.StyledSliderButtonWrapper = _styledComponents.default.div`
19
19
  align-items: center;
20
- border-radius: 3px;
20
+ border-radius: ${({
21
+ $isRounded
22
+ }) => $isRounded ? 32 : 3}px;
21
23
  border: none;
22
24
  color: white;
23
25
  cursor: pointer;
@@ -104,7 +106,9 @@ const StyledMotionSliderButtonThumb = exports.StyledMotionSliderButtonThumb = (0
104
106
  $width
105
107
  }) => $width - 8}px;
106
108
  position: absolute;
107
- border-radius: 2px;
109
+ border-radius: ${({
110
+ $isRounded
111
+ }) => $isRounded ? 24 : 3}px;
108
112
  top: 4px;
109
113
  left: 4px;
110
114
  white-space: nowrap;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.styles.js","names":["_react","require","_styledComponents","_interopRequireDefault","e","__esModule","default","StyledSliderButton","exports","styled","div","$isDisabled","StyledSliderButtonWrapper","$width","StyledSliderButtonItem","$isSecondary","theme","text","buttonColor","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","$isSelected","undefined","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","motion"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\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 position: relative;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number; $isDisabled?: boolean }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\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<{\n $isSecondary?: boolean;\n $width: number;\n}>;\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: ${({ $isSecondary, theme }: StyledSliderButtonItemProps) =>\n $isSecondary ? theme.text : (theme.buttonColor ?? 'white')};\n`;\n\nexport const StyledSliderButtonPopupContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ntype StyledSliderButtonPopupContentItemProps = WithTheme<{ $isSelected?: boolean }>;\n\nexport const StyledSliderButtonPopupContentItem = styled.div<StyledSliderButtonPopupContentItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n cursor: pointer;\n background-color: ${({ $isSelected, theme }: StyledSliderButtonPopupContentItemProps) =>\n $isSelected ? theme['secondary-102'] : undefined};\n padding: 4px 12px;\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 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,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAKhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA4B;AACrE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA;AACA;AACA,CAAC;AAIM,MAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAGH,yBAAM,CAACC,GAAmC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEG;AAAO,CAAC,KAAKA,MAAM;AACnC;AACA;AACA,kBAAkB,CAAC;EAAEF;AAAY,CAAC,KAAMA,WAAW,GAAG,QAAQ,GAAG,QAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOM,MAAMG,sBAAsB,GAAAN,OAAA,CAAAM,sBAAA,GAAGL,yBAAM,CAACC,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEG;AAAO,CAAC,KAAKA,MAAM;AACvC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAM;AACvC;AACA;AACA;AACA,aAAa,CAAC;EAAEE,YAAY;EAAEC;AAAmC,CAAC,KAC1DD,YAAY,GAAGC,KAAK,CAACC,IAAI,GAAID,KAAK,CAACE,WAAW,IAAI,OAAQ;AAClE,CAAC;AAEM,MAAMC,8BAA8B,GAAAX,OAAA,CAAAW,8BAAA,GAAGV,yBAAM,CAACC,GAAG;AACxD;AACA;AACA,CAAC;AAIM,MAAMU,kCAAkC,GAAAZ,OAAA,CAAAY,kCAAA,GAAGX,yBAAM,CAACC,GAA4C;AACrG;AACA;AACA;AACA,wBAAwB,CAAC;EAAEW,WAAW;EAAEL;AAA+C,CAAC,KAChFK,WAAW,GAAGL,KAAK,CAAC,eAAe,CAAC,GAAGM,SAAS;AACxD;AACA,CAAC;AAIM,MAAMC,gCAAgC,GAAAf,OAAA,CAAAe,gCAAA,GAAGd,yBAAM,CAACC,GAA0C;AACjG;AACA,eAAe,CAAC;EAAEc;AAAa,CAAC,KAAMA,YAAY,GAAG,GAAG,GAAG,GAAI;AAC/D,eAAe,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,CAAC,GAAG,CAAE;AAC3D;AACA;AACA;AACA,sBAAsB,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,MAAM,GAAG,MAAO;AAC5E,CAAC;AAIM,MAAMC,6BAA6B,GAAAjB,OAAA,CAAAiB,6BAAA,GAAG,IAAAhB,yBAAM,EAACiB,aAAM,CAAChB,GAAG,CAAqC;AACnG;AACA;AACA;AACA,aAAa,CAAC;EAAEG;AAAO,CAAC,KAAKA,MAAM,GAAG,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SliderButton.styles.js","names":["_react","require","_styledComponents","_interopRequireDefault","e","__esModule","default","StyledSliderButton","exports","styled","div","$isDisabled","StyledSliderButtonWrapper","$isRounded","$width","StyledSliderButtonItem","$isSecondary","theme","text","buttonColor","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","$isSelected","undefined","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","motion"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\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 position: relative;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{\n $width: number;\n $isDisabled?: boolean;\n $isRounded: boolean;\n}>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n border-radius: ${({ $isRounded }) => ($isRounded ? 32 : 3)}px;\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<{\n $isSecondary?: boolean;\n $width: number;\n}>;\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: ${({ $isSecondary, theme }: StyledSliderButtonItemProps) =>\n $isSecondary ? theme.text : (theme.buttonColor ?? 'white')};\n`;\n\nexport const StyledSliderButtonPopupContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ntype StyledSliderButtonPopupContentItemProps = WithTheme<{ $isSelected?: boolean }>;\n\nexport const StyledSliderButtonPopupContentItem = styled.div<StyledSliderButtonPopupContentItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n cursor: pointer;\n background-color: ${({ $isSelected, theme }: StyledSliderButtonPopupContentItemProps) =>\n $isSelected ? theme['secondary-102'] : undefined};\n padding: 4px 12px;\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; $isRounded: boolean }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n opacity: 1;\n width: ${({ $width }) => $width - 8}px;\n position: absolute;\n border-radius: ${({ $isRounded }) => ($isRounded ? 24 : 3)}px;\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,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAKhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA4B;AACrE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA;AACA;AACA,CAAC;AAQM,MAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAGH,yBAAM,CAACC,GAAmC;AACnF;AACA,qBAAqB,CAAC;EAAEG;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAM;AACnC;AACA;AACA,kBAAkB,CAAC;EAAEH;AAAY,CAAC,KAAMA,WAAW,GAAG,QAAQ,GAAG,QAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOM,MAAMI,sBAAsB,GAAAP,OAAA,CAAAO,sBAAA,GAAGN,yBAAM,CAACC,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM;AACvC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAM;AACvC;AACA;AACA;AACA,aAAa,CAAC;EAAEE,YAAY;EAAEC;AAAmC,CAAC,KAC1DD,YAAY,GAAGC,KAAK,CAACC,IAAI,GAAID,KAAK,CAACE,WAAW,IAAI,OAAQ;AAClE,CAAC;AAEM,MAAMC,8BAA8B,GAAAZ,OAAA,CAAAY,8BAAA,GAAGX,yBAAM,CAACC,GAAG;AACxD;AACA;AACA,CAAC;AAIM,MAAMW,kCAAkC,GAAAb,OAAA,CAAAa,kCAAA,GAAGZ,yBAAM,CAACC,GAA4C;AACrG;AACA;AACA;AACA,wBAAwB,CAAC;EAAEY,WAAW;EAAEL;AAA+C,CAAC,KAChFK,WAAW,GAAGL,KAAK,CAAC,eAAe,CAAC,GAAGM,SAAS;AACxD;AACA,CAAC;AAIM,MAAMC,gCAAgC,GAAAhB,OAAA,CAAAgB,gCAAA,GAAGf,yBAAM,CAACC,GAA0C;AACjG;AACA,eAAe,CAAC;EAAEe;AAAa,CAAC,KAAMA,YAAY,GAAG,GAAG,GAAG,GAAI;AAC/D,eAAe,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,CAAC,GAAG,CAAE;AAC3D;AACA;AACA;AACA,sBAAsB,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,MAAM,GAAG,MAAO;AAC5E,CAAC;AAIM,MAAMC,6BAA6B,GAAAlB,OAAA,CAAAkB,6BAAA,GAAG,IAAAjB,yBAAM,EAACkB,aAAM,CAACjB,GAAG,CAAqC;AACnG;AACA;AACA;AACA,aAAa,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM,GAAG,CAAC;AACvC;AACA,qBAAqB,CAAC;EAAED;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -198,12 +198,8 @@ const ComboBox = /*#__PURE__*/forwardRef(({
198
198
  setMinWidth(maxItemWidth);
199
199
  return;
200
200
  }
201
- const hasImage = [selectedItem, ...allItems].some(item => item?.imageUrl);
202
- const hasIcon = [selectedItem, ...allItems].some(item => item?.icons);
203
201
  const parentWidth = styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;
204
- const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon
205
- const imageWidth = hasImage ? 32 : 0; // image width + gap if images present
206
- const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present
202
+ const paddingWidth = 20 + 2 + 40 + (shouldShowClearIcon ? 40 : 0) + 1; // padding + border + arrow icon + optional clear icon + 1px puffer for rounding errors
207
203
 
208
204
  let prefixWidth = 0;
209
205
  if (prefix) {
@@ -217,7 +213,7 @@ const ComboBox = /*#__PURE__*/forwardRef(({
217
213
  });
218
214
  prefixWidth = Math.max(prefixTextWidth + 5, 32);
219
215
  }
220
- const calculatedWidth = maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;
216
+ const calculatedWidth = maxItemWidth + paddingWidth + prefixWidth;
221
217
  let tmpMinWidth = calculatedWidth;
222
218
  let tmpBodyMinWidth = calculatedWidth;
223
219
 
@@ -234,7 +230,7 @@ const ComboBox = /*#__PURE__*/forwardRef(({
234
230
  shouldShowBigImage,
235
231
  values
236
232
  });
237
- const itemWidth = internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;
233
+ const itemWidth = internalSelectedItemWidth + paddingWidth + prefixWidth;
238
234
  tmpMinWidth = itemWidth;
239
235
  tmpBodyMinWidth = itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;
240
236
  }
@@ -246,7 +242,7 @@ const ComboBox = /*#__PURE__*/forwardRef(({
246
242
  }
247
243
  setMinWidth(tmpMinWidth);
248
244
  setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);
249
- }, [functions, internalSelectedItem, lists, placeholder, prefix, selectedItem, shouldDropDownUseMaxItemWidth, shouldShowBigImage, shouldUseCurrentItemWidth, shouldUseFullWidth, values]);
245
+ }, [functions, internalSelectedItem, lists, placeholder, prefix, selectedItem, shouldDropDownUseMaxItemWidth, shouldShowBigImage, shouldShowClearIcon, shouldUseCurrentItemWidth, shouldUseFullWidth, values]);
250
246
 
251
247
  /**
252
248
  * This function sets the external selected item
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","calculateMaxComboBoxItemWidth","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","shouldCaptureEvents","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","styledComboBoxElementRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","areaProvider","width","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","allItems","maxItemWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","suffixElement","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","className","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useFunctions, useValues } from 'chayns-api';\nimport React, {\n FocusEventHandler,\n forwardRef,\n Fragment,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\nimport { ComboBoxProps, ComboBoxRef, ComboBoxSize, IComboBoxItem } from './ComboBox.types';\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n shouldCaptureEvents,\n selectedItem,\n onHide,\n onShow,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n if (typeof onShow === 'function') {\n onShow();\n }\n\n setIsAnimating(true);\n }, [onShow]);\n\n const handleClose = useCallback(() => {\n if (typeof onHide === 'function') {\n onHide();\n }\n\n setIsAnimating(false);\n }, [onHide]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n },\n [handleClose, onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth =\n maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth =\n internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n shouldCaptureEvents={shouldCaptureEvents}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n className=\"chayns-scrollbar\"\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n shouldCaptureEvents,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.js","names":["useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","calculateMaxComboBoxItemWidth","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","shouldCaptureEvents","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","styledComboBoxElementRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","areaProvider","width","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","allItems","maxItemWidth","text","parentWidth","parentElement","getBoundingClientRect","paddingWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","imageUrl","placeholderIcon","icons","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","suffixElement","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","className","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useFunctions, useValues } from 'chayns-api';\nimport React, {\n FocusEventHandler,\n forwardRef,\n Fragment,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\nimport { ComboBoxProps, ComboBoxRef, ComboBoxSize, IComboBoxItem } from './ComboBox.types';\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n shouldCaptureEvents,\n selectedItem,\n onHide,\n onShow,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n if (typeof onShow === 'function') {\n onShow();\n }\n\n setIsAnimating(true);\n }, [onShow]);\n\n const handleClose = useCallback(() => {\n if (typeof onHide === 'function') {\n onHide();\n }\n\n setIsAnimating(false);\n }, [onHide]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n },\n [handleClose, onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + (shouldShowClearIcon ? 40 : 0) + 1; // padding + border + arrow icon + optional clear icon + 1px puffer for rounding errors\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth = maxItemWidth + paddingWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth = internalSelectedItemWidth + paddingWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n shouldCaptureEvents={shouldCaptureEvents}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n className=\"chayns-scrollbar\"\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n shouldCaptureEvents,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React, { forwardRef, isValidElement, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
2
- import { StyledFilter, StyledFilterContentWrapper, StyledFilterHead, StyledFilterHeadline, StyledFilterHeadlineElement, StyledFilterIcon, StyledFilterIconWrapper, StyledFilterSearch, StyledMotionFilterBackground } from './Filter.styles';
2
+ import { StyledFilter, StyledFilterContentWrapper, StyledFilterHead, StyledFilterHeadline, StyledFilterHeadlineElement, StyledFilterIcon, StyledFilterIconWrapper, StyledFilterSearch } from './Filter.styles';
3
3
  import ExpandableContent from '../expandable-content/ExpandableContent';
4
4
  import Icon from '../icon/Icon';
5
5
  import FilterContent from './filter-content/FIlterContent';
@@ -26,11 +26,6 @@ const Filter = /*#__PURE__*/forwardRef(({
26
26
  const [isOpen, setIsOpen] = useState(false);
27
27
  const [isSearchActive, setIsSearchActive] = useState(false);
28
28
  const [shouldFocus, setShouldFocus] = useState(false);
29
- const [backgroundDistance, setBackgroundDistance] = useState(0);
30
- const [backgroundCoordinates, setBackgroundCoordinates] = useState({
31
- top: 0,
32
- left: 0
33
- });
34
29
  const contentRef = useRef(null);
35
30
  const iconRef = useRef(null);
36
31
  const filterRef = useRef(null);
@@ -109,26 +104,6 @@ const Filter = /*#__PURE__*/forwardRef(({
109
104
  handleShow();
110
105
  }
111
106
  }, [handleHide, handleShow, isOpen]);
112
- useEffect(() => {
113
- if (headline && iconRef.current && contentRef.current && filterRef.current) {
114
- const iconRect = iconRef.current.getBoundingClientRect();
115
- const filterRect = filterRef.current.getBoundingClientRect();
116
- const contentRect = contentRef.current.getBoundingClientRect();
117
- const relativeTop = iconRect.bottom - filterRect.top;
118
- const relativeLeft = iconRect.left - filterRect.left;
119
- setBackgroundDistance(contentRect.top - iconRect.bottom);
120
- setBackgroundCoordinates({
121
- top: relativeTop,
122
- left: relativeLeft
123
- });
124
- } else {
125
- setBackgroundDistance(0);
126
- setBackgroundCoordinates({
127
- top: 0,
128
- left: 0
129
- });
130
- }
131
- }, [headline]);
132
107
  const iconElement = useMemo(() => /*#__PURE__*/React.createElement(StyledFilterIcon, {
133
108
  onClick: handleIconClick,
134
109
  $isOpen: isOpen,
@@ -138,17 +113,6 @@ const Filter = /*#__PURE__*/forwardRef(({
138
113
  icons: icons,
139
114
  size: 18
140
115
  })), [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect]);
141
- const backgroundElement = useMemo(() => /*#__PURE__*/React.createElement(StyledMotionFilterBackground, {
142
- $top: backgroundCoordinates.top,
143
- $left: backgroundCoordinates.left,
144
- animate: {
145
- height: isOpen ? `${backgroundDistance}px` : 0
146
- },
147
- transition: {
148
- duration: 0.1,
149
- delay: isOpen ? 0 : 0.2
150
- }
151
- }), [backgroundDistance, isOpen, backgroundCoordinates]);
152
116
  const sortItems = useMemo(() => {
153
117
  if (!sortConfig) {
154
118
  return [];
@@ -187,7 +151,7 @@ const Filter = /*#__PURE__*/forwardRef(({
187
151
  $isSearchActive: isSearchActive
188
152
  }, headline) : /*#__PURE__*/React.createElement(StyledFilterHeadlineElement, {
189
153
  $isSearchActive: isSearchActive
190
- }, headline), [FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledFilterIconWrapper, null, rightIcons && rightIcons.map(({
154
+ }, headline), [FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && /*#__PURE__*/React.createElement(StyledFilterIconWrapper, null, rightIcons && rightIcons.map(({
191
155
  icons: rIcons,
192
156
  onClick
193
157
  }) => /*#__PURE__*/React.createElement(StyledFilterIcon, {
@@ -197,7 +161,7 @@ const Filter = /*#__PURE__*/forwardRef(({
197
161
  }, /*#__PURE__*/React.createElement(Icon, {
198
162
  icons: rIcons,
199
163
  size: 18
200
- }))), iconElement), backgroundDistance > 0 && backgroundElement), type === FilterType.ONLY_SEARCH && searchConfig && /*#__PURE__*/React.createElement(StyledFilterSearch, null, /*#__PURE__*/React.createElement(SearchInput, {
164
+ }))), iconElement), type === FilterType.ONLY_SEARCH && searchConfig && /*#__PURE__*/React.createElement(StyledFilterSearch, null, /*#__PURE__*/React.createElement(SearchInput, {
201
165
  onActiveChange: isActive => {
202
166
  setIsSearchActive(isActive);
203
167
  setIsOpen(isActive);
@@ -215,8 +179,7 @@ const Filter = /*#__PURE__*/forwardRef(({
215
179
  React.createElement(Checkbox, checkboxConfig), type === FilterType.ONLY_COMBOBOX && comboboxElement), [FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && /*#__PURE__*/React.createElement(StyledFilterContentWrapper, {
216
180
  ref: contentRef
217
181
  }, /*#__PURE__*/React.createElement(ExpandableContent, {
218
- isOpen: isOpen,
219
- startDelay: backgroundDistance > 0 ? 0.1 : 0
182
+ isOpen: isOpen
220
183
  }, /*#__PURE__*/React.createElement(FilterContent, {
221
184
  shouldAutoFocus: shouldFocus,
222
185
  searchConfig: searchConfig,
@@ -224,7 +187,7 @@ const Filter = /*#__PURE__*/forwardRef(({
224
187
  sortConfig: sortConfig,
225
188
  checkboxConfig: checkboxConfig,
226
189
  comboboxConfig: comboboxConfig
227
- })))), [headline, isSearchActive, type, rightIcons, iconElement, backgroundDistance, backgroundElement, searchConfig, sortConfig, sortItems, checkboxConfig, isOpen, shouldFocus, filterButtonConfig, comboboxConfig, comboboxElement, shouldShowRoundedHoverEffect]);
190
+ })))), [headline, isSearchActive, type, rightIcons, iconElement, searchConfig, sortConfig, sortItems, checkboxConfig, isOpen, shouldFocus, filterButtonConfig, comboboxConfig, comboboxElement, shouldShowRoundedHoverEffect]);
228
191
  });
229
192
  Filter.displayName = 'Filter';
230
193
  export default Filter;