@chayns-components/core 5.0.0-beta.592 → 5.0.0-beta.594

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 (71) hide show
  1. package/lib/cjs/components/combobox/ComboBox.js +14 -12
  2. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  3. package/lib/cjs/components/combobox/ComboBox.styles.js +2 -2
  4. package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
  5. package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +0 -4
  6. package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
  7. package/lib/cjs/utils/calculate.js +20 -6
  8. package/lib/cjs/utils/calculate.js.map +1 -1
  9. package/lib/esm/components/combobox/ComboBox.js +15 -13
  10. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  11. package/lib/esm/components/combobox/ComboBox.styles.js +2 -2
  12. package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
  13. package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +0 -4
  14. package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
  15. package/lib/esm/utils/calculate.js +18 -5
  16. package/lib/esm/utils/calculate.js.map +1 -1
  17. package/lib/types/components/accordion/Accordion.styles.d.ts +1 -1
  18. package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -2
  19. package/lib/types/components/accordion/accordion-content/AccordionContent.styles.d.ts +1 -1
  20. package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +21 -21
  21. package/lib/types/components/accordion/accordion-intro/AccordionIntro.styles.d.ts +1 -1
  22. package/lib/types/components/accordion/accordion-item/AccordionItem.styles.d.ts +1 -1
  23. package/lib/types/components/amount-control/AmountControl.styles.d.ts +5 -5
  24. package/lib/types/components/badge/Badge.styles.d.ts +1 -1
  25. package/lib/types/components/button/Button.styles.d.ts +7 -7
  26. package/lib/types/components/checkbox/Checkbox.styles.d.ts +3 -3
  27. package/lib/types/components/combobox/ComboBox.styles.d.ts +9 -9
  28. package/lib/types/components/combobox/combobox-item/ComboBoxItem.styles.d.ts +2 -2
  29. package/lib/types/components/content-card/ContentCard.styles.d.ts +1 -1
  30. package/lib/types/components/context-menu/ContextMenu.styles.d.ts +1 -1
  31. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +6 -6
  32. package/lib/types/components/file-input/FileInput.styles.d.ts +8 -8
  33. package/lib/types/components/file-input/file-list/FileListItem.styles.d.ts +1 -1
  34. package/lib/types/components/filter-buttons/FilterButtons.styles.d.ts +1 -1
  35. package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +9 -9
  36. package/lib/types/components/grid-image/GridImage.styles.d.ts +4 -4
  37. package/lib/types/components/icon/Icon.styles.d.ts +2 -2
  38. package/lib/types/components/input/Input.styles.d.ts +11 -11
  39. package/lib/types/components/list/list-item/ListItem.styles.d.ts +2 -2
  40. package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -2
  41. package/lib/types/components/list/list-item/list-item-content/ListItemContent.styles.d.ts +1 -1
  42. package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +20 -20
  43. package/lib/types/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.styles.d.ts +1 -1
  44. package/lib/types/components/list/list-item/list-item-head/list-item-image/ListItemImage.styles.d.ts +2 -2
  45. package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +3 -3
  46. package/lib/types/components/mention-finder/mention-finder-item/MentionFinderItem.styles.d.ts +5 -5
  47. package/lib/types/components/popup/Popup.styles.d.ts +3 -3
  48. package/lib/types/components/popup/popup-content/PopupContent.styles.d.ts +1 -1
  49. package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -2
  50. package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +8 -8
  51. package/lib/types/components/radio-button/RadioButton.styles.d.ts +9 -9
  52. package/lib/types/components/scroll-view/ScrollView.styles.d.ts +1 -1
  53. package/lib/types/components/search-box/SearchBox.styles.d.ts +3 -3
  54. package/lib/types/components/search-box/group-name/GroupName.styles.d.ts +1 -1
  55. package/lib/types/components/search-box/search-box-item/SearchBoxItem.styles.d.ts +5 -5
  56. package/lib/types/components/search-input/SearchInput.styles.d.ts +6 -6
  57. package/lib/types/components/select-button/SelectButton.styles.d.ts +1 -1
  58. package/lib/types/components/setup-wizard/SetupWizard.styles.d.ts +1 -1
  59. package/lib/types/components/setup-wizard/setup-wizard-item/SetupWizardItem.styles.d.ts +1 -1
  60. package/lib/types/components/sharing-bar/SharingBar.styles.d.ts +4 -4
  61. package/lib/types/components/signature/Signature.styles.d.ts +5 -5
  62. package/lib/types/components/slider/Slider.styles.d.ts +7 -7
  63. package/lib/types/components/slider-button/SliderButton.styles.d.ts +4 -4
  64. package/lib/types/components/small-wait-cursor/SmallWaitCursor.styles.d.ts +4 -4
  65. package/lib/types/components/tag-input/TagInput.styles.d.ts +6 -6
  66. package/lib/types/components/text-area/TextArea.styles.d.ts +5 -5
  67. package/lib/types/components/tooltip/Tooltip.styles.d.ts +1 -1
  68. package/lib/types/components/tooltip/tooltip-item/TooltipItem.styles.d.ts +7 -7
  69. package/lib/types/components/truncation/Truncation.styles.d.ts +6 -6
  70. package/lib/types/utils/calculate.d.ts +2 -0
  71. package/package.json +12 -12
@@ -19,7 +19,7 @@ const ComboBox = ({
19
19
  direction = _comboBox.ComboBoxDirection.BOTTOM,
20
20
  isDisabled = false,
21
21
  list,
22
- maxHeight = '300px',
22
+ maxHeight = '280px',
23
23
  onSelect,
24
24
  placeholder,
25
25
  selectedItem,
@@ -28,19 +28,19 @@ const ComboBox = ({
28
28
  const [item, setItem] = (0, _react.useState)();
29
29
  const [isAnimating, setIsAnimating] = (0, _react.useState)(false);
30
30
  const [minWidth, setMinWidth] = (0, _react.useState)(0);
31
- const [height, setHeight] = (0, _react.useState)(0);
32
31
  const [focusedIndex, setFocusedIndex] = (0, _react.useState)(null);
33
- const ref = (0, _react.useRef)(null);
32
+ const [overflowY, setOverflowY] = (0, _react.useState)('hidden');
33
+ const styledComboBoxElementRef = (0, _react.useRef)(null);
34
34
  const contentRef = (0, _react.useRef)(null);
35
35
  const {
36
36
  browser
37
37
  } = (0, _chaynsApi.getDevice)();
38
38
  const isMobile = (0, _environment.getIsMobile)();
39
39
  const handleClick = (0, _react.useCallback)(event => {
40
- if (ref.current && !ref.current.contains(event.target)) {
40
+ if (styledComboBoxElementRef.current && !styledComboBoxElementRef.current.contains(event.target)) {
41
41
  setIsAnimating(false);
42
42
  }
43
- }, [ref]);
43
+ }, [styledComboBoxElementRef]);
44
44
 
45
45
  /**
46
46
  * This function adds an event listener to the document to close the combobox when the user clicks outside of it
@@ -50,7 +50,7 @@ const ComboBox = ({
50
50
  return () => {
51
51
  document.removeEventListener('click', handleClick);
52
52
  };
53
- }, [handleClick, ref]);
53
+ }, [handleClick, styledComboBoxElementRef]);
54
54
 
55
55
  /**
56
56
  * This function sets the selected item
@@ -113,7 +113,9 @@ const ComboBox = ({
113
113
  const textArray = list.map(({
114
114
  text
115
115
  }) => text);
116
- setHeight((0, _calculate.calculateContentHeight)(textArray));
116
+ const contentHeight = (0, _calculate.calculateContentHeight)(textArray);
117
+ const maxHeightInPixels = (0, _calculate.getMaxHeightInPixels)(maxHeight, styledComboBoxElementRef.current ?? document.body);
118
+ setOverflowY(contentHeight > maxHeightInPixels ? 'scroll' : 'hidden');
117
119
  textArray.push(placeholder);
118
120
 
119
121
  // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left
@@ -122,7 +124,7 @@ const ComboBox = ({
122
124
  text: placeholder,
123
125
  value: 'placeholder'
124
126
  }]) + 45 + (isAtLeastOneItemWithImageGiven ? 32 : 0));
125
- }, [list, placeholder]);
127
+ }, [list, maxHeight, placeholder]);
126
128
 
127
129
  /**
128
130
  * This function sets the external selected item
@@ -192,7 +194,7 @@ const ComboBox = ({
192
194
  return /*#__PURE__*/_react.default.createElement(_ComboBox.StyledMotionComboBoxBody, {
193
195
  $browser: browser === null || browser === void 0 ? void 0 : browser.name,
194
196
  animate: animate,
195
- $height: height,
197
+ $overflowY: overflowY,
196
198
  initial: {
197
199
  height: 0,
198
200
  opacity: 0
@@ -207,9 +209,9 @@ const ComboBox = ({
207
209
  tabIndex: 0,
208
210
  ref: contentRef
209
211
  }, items);
210
- }, [browser === null || browser === void 0 ? void 0 : browser.name, direction, handleSetSelectedItem, height, isAnimating, list, maxHeight, minWidth, selectedItem, shouldShowRoundImage]);
212
+ }, [browser === null || browser === void 0 ? void 0 : browser.name, direction, handleSetSelectedItem, isAnimating, list, maxHeight, minWidth, overflowY, selectedItem, shouldShowRoundImage]);
211
213
  return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBox, {
212
- ref: ref
214
+ ref: styledComboBoxElementRef
213
215
  }, direction === _comboBox.ComboBoxDirection.TOP && comboBoxBody, /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxHeader, {
214
216
  $direction: direction,
215
217
  $minWidth: minWidth,
@@ -222,7 +224,7 @@ const ComboBox = ({
222
224
  shouldShowRoundImage: shouldShowRoundImage
223
225
  }), placeholderText, item && item.suffixElement && item.suffixElement), /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
224
226
  icons: ['fa fa-chevron-down']
225
- }))), direction === _comboBox.ComboBoxDirection.BOTTOM && comboBoxBody), [comboBoxBody, direction, handleHeaderClick, isAnimating, isDisabled, isMobile, minWidth, placeholderImageUrl, placeholderText, shouldShowRoundImage]);
227
+ }))), direction === _comboBox.ComboBoxDirection.BOTTOM && comboBoxBody), [comboBoxBody, direction, handleHeaderClick, isAnimating, isDisabled, isMobile, item, minWidth, placeholderImageUrl, placeholderText, shouldShowRoundImage]);
226
228
  };
227
229
  ComboBox.displayName = 'ComboBox';
228
230
  var _default = exports.default = ComboBox;
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_comboBox","_calculate","_environment","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","direction","ComboBoxDirection","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","height","setHeight","focusedIndex","setFocusedIndex","ref","useRef","contentRef","browser","getDevice","isMobile","getIsMobile","handleClick","useCallback","event","current","contains","target","useEffect","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","key","_contentRef$current","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","element","id","newSelectedItem","find","value","String","replace","isAtLeastOneItemWithImageGiven","some","imageUrl","textArray","map","text","calculateContentHeight","push","calculateContentWidth","placeholderImageUrl","useMemo","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","suffixElement","createElement","isSelected","animate","opacity","style","TOP","transform","StyledMotionComboBoxBody","$browser","name","$height","initial","$maxHeight","$minWidth","$direction","transition","duration","StyledComboBox","StyledComboBoxHeader","onClick","$isOpen","$isMobile","$isDisabled","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","src","StyledComboBoxIconWrapper","icons","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentHeight, calculateContentWidth } from '../../utils/calculate';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '300px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const ref = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const isMobile = getIsMobile();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n setIsAnimating(false);\n }\n },\n [ref],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, ref]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n setHeight(calculateContentHeight(textArray));\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, 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 (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $height={height}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n height,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={ref}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n {item && item.suffixElement && item.suffixElement}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\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":["_chaynsApi","require","_react","_interopRequireWildcard","_comboBox","_calculate","_environment","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","direction","ComboBoxDirection","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","styledComboBoxElementRef","useRef","contentRef","browser","getDevice","isMobile","getIsMobile","handleClick","useCallback","event","current","contains","target","useEffect","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","key","_contentRef$current","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","element","id","newSelectedItem","find","value","String","replace","isAtLeastOneItemWithImageGiven","some","imageUrl","textArray","map","text","contentHeight","calculateContentHeight","maxHeightInPixels","getMaxHeightInPixels","body","push","calculateContentWidth","placeholderImageUrl","useMemo","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","suffixElement","createElement","isSelected","animate","height","opacity","style","TOP","transform","StyledMotionComboBoxBody","$browser","name","$overflowY","initial","$maxHeight","$minWidth","$direction","transition","duration","ref","StyledComboBox","StyledComboBoxHeader","onClick","$isOpen","$isMobile","$isDisabled","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","src","StyledComboBoxIconWrapper","icons","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport {\n calculateContentHeight,\n calculateContentWidth,\n getMaxHeightInPixels,\n} from '../../utils/calculate';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '280px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const isMobile = getIsMobile();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n const contentHeight = calculateContentHeight(textArray);\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(contentHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, maxHeight, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, 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 (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $overflowY={overflowY}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n overflowY,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={styledComboBoxElementRef}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n {item && item.suffixElement && item.suffixElement}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n item,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -108,8 +108,8 @@ const StyledMotionComboBoxBody = exports.StyledMotionComboBoxBody = (0, _styledC
108
108
  $maxHeight
109
109
  }) => $maxHeight};
110
110
  overflow-y: ${({
111
- $height
112
- }) => $height <= 300 ? 'hidden' : 'auto'};
111
+ $overflowY
112
+ }) => $overflowY};
113
113
 
114
114
  ${({
115
115
  $direction,
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_comboBox","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledComboBox","exports","styled","div","StyledComboBoxHeader","$isDisabled","theme","$minWidth","$isOpen","$direction","ComboBoxDirection","BOTTOM","css","$isMobile","StyledComboBoxPlaceholder","text","StyledComboBoxPlaceholderImage","img","shouldShowRoundImage","StyledComboBoxIconWrapper","StyledMotionComboBoxBody","motion","$maxHeight","$height","$browser"],"sources":["../../../../src/components/combobox/ComboBox.styles.ts"],"sourcesContent":["import type { Browser } from 'detect-browser';\nimport { motion } from 'framer-motion';\nimport type { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport type { ComboBoxItemProps } from './combobox-item/ComboBoxItem';\n\nexport const StyledComboBox = styled.div`\n user-select: none;\n width: fit-content;\n`;\n\ntype StyledComboBoxHeaderProps = WithTheme<{\n $isMobile: boolean;\n $isOpen: boolean;\n $minWidth: number;\n $direction: ComboBoxDirection;\n $isDisabled?: boolean;\n}>;\n\nexport const StyledComboBoxHeader = styled.div<StyledComboBoxHeaderProps>`\n display: flex;\n justify-content: space-between;\n border: 1px solid rgba(160, 160, 160, 0.3);\n padding: 4px 10px;\n cursor: ${({ $isDisabled }) => (!$isDisabled ? 'pointer' : 'default')};\n background: ${({ theme }: StyledComboBoxHeaderProps) => theme['001']};\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n min-width: ${({ $minWidth }) => $minWidth}px;\n max-width: ${({ $minWidth }) => $minWidth}px;\n transition: background-color 0.2s ease-in-out;\n\n ${({ $isOpen, $direction }) => {\n if ($isOpen) {\n return $direction === ComboBoxDirection.BOTTOM\n ? css`\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n `\n : css`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n `;\n }\n\n return css`\n border-radius: 3px;\n `;\n }}\n\n ${({ $isMobile, $isDisabled, theme }: StyledComboBoxHeaderProps) =>\n !$isMobile &&\n !$isDisabled &&\n css`\n &:hover {\n background-color: ${theme['secondary-102']};\n }\n `}\n`;\n\ntype StyledComboBoxPlaceholderProps = WithTheme<unknown>;\n\nexport const StyledComboBoxPlaceholder = styled.div<StyledComboBoxPlaceholderProps>`\n align-items: center;\n color: ${({ theme }: StyledComboBoxPlaceholderProps) => theme.text};\n display: flex;\n gap: 10px;\n`;\n\ntype StyledComboBoxPlaceholderImageProps = WithTheme<\n Pick<ComboBoxItemProps, 'shouldShowRoundImage'>\n>;\n\nexport const StyledComboBoxPlaceholderImage = styled.img<StyledComboBoxPlaceholderImageProps>`\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledComboBoxPlaceholderImageProps) => theme['009-rgb']}, 0.15);\n height: 22px;\n width: 22px;\n\n ${({ shouldShowRoundImage }) =>\n shouldShowRoundImage &&\n css`\n border-radius: 50%;\n `}\n`;\n\nexport const StyledComboBoxIconWrapper = styled.div`\n margin-left: 5px;\n`;\n\ntype StyledComboBoxBodyProps = WithTheme<{\n $height: number;\n $minWidth: number;\n $maxHeight: CSSProperties['maxHeight'];\n $direction: ComboBoxDirection;\n $browser: Browser | 'bot' | null | undefined;\n}>;\n\nexport const StyledMotionComboBoxBody = styled(motion.div)<StyledComboBoxBodyProps>`\n background: ${({ theme }: StyledComboBoxBodyProps) => theme['101']};\n display: flex;\n position: absolute;\n z-index: 4;\n flex-direction: column;\n border: 1px solid rgba(160, 160, 160, 0.3);\n cursor: pointer;\n min-width: ${({ $minWidth }) => $minWidth}px;\n max-width: ${({ $minWidth }) => $minWidth}px;\n max-height: ${({ $maxHeight }) => $maxHeight};\n overflow-y: ${({ $height }) => ($height <= 300 ? 'hidden' : 'auto')};\n\n ${({ $direction, theme }) => {\n if ($direction === ComboBoxDirection.BOTTOM) {\n return css`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: 0 2px 8px 2px rgba(${theme['009-rgb']}, 0.15);\n `;\n }\n\n return css`\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n box-shadow: 0 -2px 8px 2px rgba(${theme['009-rgb']}, 0.15);\n `;\n }}\n\n // Styles for custom scrollbar\n ${({ $browser, theme }: StyledComboBoxBodyProps) =>\n $browser === 'firefox'\n ? css`\n scrollbar-color: rgba(${theme['text-rgb']}, 0.15) transparent;\n scrollbar-width: thin;\n `\n : css`\n &::-webkit-scrollbar {\n width: 5px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-button {\n background-color: transparent;\n height: 5px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: rgba(${theme['text-rgb']}, 0.15);\n border-radius: 20px;\n }\n `}\n`;\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAAyD,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAIlD,MAAMW,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,yBAAM,CAACC,GAAI;AACzC;AACA;AACA,CAAC;AAUM,MAAMC,oBAAoB,GAAAH,OAAA,CAAAG,oBAAA,GAAGF,yBAAM,CAACC,GAA+B;AAC1E;AACA;AACA;AACA;AACA,cAAc,CAAC;EAAEE;AAAY,CAAC,KAAM,CAACA,WAAW,GAAG,SAAS,GAAG,SAAW;AAC1E,kBAAkB,CAAC;EAAEC;AAAiC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACzE,eAAe,CAAC;EAAED;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAG;AAC5D,iBAAiB,CAAC;EAAEE;AAAU,CAAC,KAAKA,SAAU;AAC9C,iBAAiB,CAAC;EAAEA;AAAU,CAAC,KAAKA,SAAU;AAC9C;AACA;AACA,MAAM,CAAC;EAAEC,OAAO;EAAEC;AAAW,CAAC,KAAK;EAC3B,IAAID,OAAO,EAAE;IACT,OAAOC,UAAU,KAAKC,2BAAiB,CAACC,MAAM,GACxC,IAAAC,qBAAG,CAAC;AACtB;AACA;AACA,mBAAmB,GACD,IAAAA,qBAAG,CAAC;AACtB;AACA;AACA,mBAAmB;EACX;EAEA,OAAO,IAAAA,qBAAG,CAAC;AACnB;AACA,SAAS;AACL,CAAE;AACN;AACA,MAAM,CAAC;EAAEC,SAAS;EAAER,WAAW;EAAEC;AAAiC,CAAC,KAC3D,CAACO,SAAS,IACV,CAACR,WAAW,IACZ,IAAAO,qBAAG,CAAC;AACZ;AACA,oCAAoCN,KAAK,CAAC,eAAe,CAAE;AAC3D;AACA,SAAU;AACV,CAAC;AAIM,MAAMQ,yBAAyB,GAAAb,OAAA,CAAAa,yBAAA,GAAGZ,yBAAM,CAACC,GAAoC;AACpF;AACA,aAAa,CAAC;EAAEG;AAAsC,CAAC,KAAKA,KAAK,CAACS,IAAK;AACvE;AACA;AACA,CAAC;AAMM,MAAMC,8BAA8B,GAAAf,OAAA,CAAAe,8BAAA,GAAGd,yBAAM,CAACe,GAAyC;AAC9F;AACA,eAAe,CAAC;EAAEX;AAA2C,CAAC,KAAKA,KAAK,CAAC,SAAS,CAAE;AACpF;AACA;AACA;AACA,MAAM,CAAC;EAAEY;AAAqB,CAAC,KACvBA,oBAAoB,IACpB,IAAAN,qBAAG,CAAC;AACZ;AACA,SAAU;AACV,CAAC;AAEM,MAAMO,yBAAyB,GAAAlB,OAAA,CAAAkB,yBAAA,GAAGjB,yBAAM,CAACC,GAAI;AACpD;AACA,CAAC;AAUM,MAAMiB,wBAAwB,GAAAnB,OAAA,CAAAmB,wBAAA,GAAG,IAAAlB,yBAAM,EAACmB,oBAAM,CAAClB,GAAG,CAA2B;AACpF,kBAAkB,CAAC;EAAEG;AAA+B,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,CAAC;EAAEC;AAAU,CAAC,KAAKA,SAAU;AAC9C,iBAAiB,CAAC;EAAEA;AAAU,CAAC,KAAKA,SAAU;AAC9C,kBAAkB,CAAC;EAAEe;AAAW,CAAC,KAAKA,UAAW;AACjD,kBAAkB,CAAC;EAAEC;AAAQ,CAAC,KAAMA,OAAO,IAAI,GAAG,GAAG,QAAQ,GAAG,MAAQ;AACxE;AACA,MAAM,CAAC;EAAEd,UAAU;EAAEH;AAAM,CAAC,KAAK;EACzB,IAAIG,UAAU,KAAKC,2BAAiB,CAACC,MAAM,EAAE;IACzC,OAAO,IAAAC,qBAAG,CAAC;AACvB;AACA;AACA,iDAAiDN,KAAK,CAAC,SAAS,CAAE;AAClE,aAAa;EACL;EAEA,OAAO,IAAAM,qBAAG,CAAC;AACnB;AACA;AACA,8CAA8CN,KAAK,CAAC,SAAS,CAAE;AAC/D,SAAS;AACL,CAAE;AACN;AACA;AACA,MAAM,CAAC;EAAEkB,QAAQ;EAAElB;AAA+B,CAAC,KAC3CkB,QAAQ,KAAK,SAAS,GAChB,IAAAZ,qBAAG,CAAC;AAClB,0CAA0CN,KAAK,CAAC,UAAU,CAAE;AAC5D;AACA,eAAe,GACD,IAAAM,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+CN,KAAK,CAAC,UAAU,CAAE;AACjE;AACA;AACA,eAAgB;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_comboBox","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledComboBox","exports","styled","div","StyledComboBoxHeader","$isDisabled","theme","$minWidth","$isOpen","$direction","ComboBoxDirection","BOTTOM","css","$isMobile","StyledComboBoxPlaceholder","text","StyledComboBoxPlaceholderImage","img","shouldShowRoundImage","StyledComboBoxIconWrapper","StyledMotionComboBoxBody","motion","$maxHeight","$overflowY","$browser"],"sources":["../../../../src/components/combobox/ComboBox.styles.ts"],"sourcesContent":["import type { Browser } from 'detect-browser';\nimport { motion } from 'framer-motion';\nimport type { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport type { ComboBoxItemProps } from './combobox-item/ComboBoxItem';\n\nexport const StyledComboBox = styled.div`\n user-select: none;\n width: fit-content;\n`;\n\ntype StyledComboBoxHeaderProps = WithTheme<{\n $isMobile: boolean;\n $isOpen: boolean;\n $minWidth: number;\n $direction: ComboBoxDirection;\n $isDisabled?: boolean;\n}>;\n\nexport const StyledComboBoxHeader = styled.div<StyledComboBoxHeaderProps>`\n display: flex;\n justify-content: space-between;\n border: 1px solid rgba(160, 160, 160, 0.3);\n padding: 4px 10px;\n cursor: ${({ $isDisabled }) => (!$isDisabled ? 'pointer' : 'default')};\n background: ${({ theme }: StyledComboBoxHeaderProps) => theme['001']};\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n min-width: ${({ $minWidth }) => $minWidth}px;\n max-width: ${({ $minWidth }) => $minWidth}px;\n transition: background-color 0.2s ease-in-out;\n\n ${({ $isOpen, $direction }) => {\n if ($isOpen) {\n return $direction === ComboBoxDirection.BOTTOM\n ? css`\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n `\n : css`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n `;\n }\n\n return css`\n border-radius: 3px;\n `;\n }}\n\n ${({ $isMobile, $isDisabled, theme }: StyledComboBoxHeaderProps) =>\n !$isMobile &&\n !$isDisabled &&\n css`\n &:hover {\n background-color: ${theme['secondary-102']};\n }\n `}\n`;\n\ntype StyledComboBoxPlaceholderProps = WithTheme<unknown>;\n\nexport const StyledComboBoxPlaceholder = styled.div<StyledComboBoxPlaceholderProps>`\n align-items: center;\n color: ${({ theme }: StyledComboBoxPlaceholderProps) => theme.text};\n display: flex;\n gap: 10px;\n`;\n\ntype StyledComboBoxPlaceholderImageProps = WithTheme<\n Pick<ComboBoxItemProps, 'shouldShowRoundImage'>\n>;\n\nexport const StyledComboBoxPlaceholderImage = styled.img<StyledComboBoxPlaceholderImageProps>`\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledComboBoxPlaceholderImageProps) => theme['009-rgb']}, 0.15);\n height: 22px;\n width: 22px;\n\n ${({ shouldShowRoundImage }) =>\n shouldShowRoundImage &&\n css`\n border-radius: 50%;\n `}\n`;\n\nexport const StyledComboBoxIconWrapper = styled.div`\n margin-left: 5px;\n`;\n\ntype StyledComboBoxBodyProps = WithTheme<{\n $overflowY: CSSProperties['overflowY'];\n $minWidth: number;\n $maxHeight: CSSProperties['maxHeight'];\n $direction: ComboBoxDirection;\n $browser: Browser | 'bot' | null | undefined;\n}>;\n\nexport const StyledMotionComboBoxBody = styled(motion.div)<StyledComboBoxBodyProps>`\n background: ${({ theme }: StyledComboBoxBodyProps) => theme['101']};\n display: flex;\n position: absolute;\n z-index: 4;\n flex-direction: column;\n border: 1px solid rgba(160, 160, 160, 0.3);\n cursor: pointer;\n min-width: ${({ $minWidth }) => $minWidth}px;\n max-width: ${({ $minWidth }) => $minWidth}px;\n max-height: ${({ $maxHeight }) => $maxHeight};\n overflow-y: ${({ $overflowY }) => $overflowY};\n\n ${({ $direction, theme }) => {\n if ($direction === ComboBoxDirection.BOTTOM) {\n return css`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: 0 2px 8px 2px rgba(${theme['009-rgb']}, 0.15);\n `;\n }\n\n return css`\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n box-shadow: 0 -2px 8px 2px rgba(${theme['009-rgb']}, 0.15);\n `;\n }}\n\n // Styles for custom scrollbar\n ${({ $browser, theme }: StyledComboBoxBodyProps) =>\n $browser === 'firefox'\n ? css`\n scrollbar-color: rgba(${theme['text-rgb']}, 0.15) transparent;\n scrollbar-width: thin;\n `\n : css`\n &::-webkit-scrollbar {\n width: 5px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-button {\n background-color: transparent;\n height: 5px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: rgba(${theme['text-rgb']}, 0.15);\n border-radius: 20px;\n }\n `}\n`;\n"],"mappings":"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","ignoreList":[]}
@@ -23,10 +23,6 @@ const StyledMotionPopupContentWrapper = exports.StyledMotionPopupContentWrapper
23
23
  z-index: 100;
24
24
  position: fixed;
25
25
 
26
- & img {
27
- width: 100%;
28
- }
29
-
30
26
  &::after {
31
27
  background-color: inherit;
32
28
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
@@ -1 +1 @@
1
- {"version":3,"file":"PopupContentWrapper.styles.js","names":["_chaynsApi","require","_framerMotion","_styledComponents","_interopRequireWildcard","_popup","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledMotionPopupContentWrapper","exports","styled","motion","div","theme","$colorMode","ColorMode","Dark","text","$position","$offset","PopupAlignment","TopLeft","css","BottomLeft","TopRight","BottomRight","undefined"],"sources":["../../../../../src/components/popup/popup-content-wrapper/PopupContentWrapper.styles.ts"],"sourcesContent":["import { ColorMode } from 'chayns-api';\nimport { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport { PopupAlignment } from '../../../types/popup';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionPopupContentWrapperProps = WithTheme<{\n $position: PopupAlignment;\n $colorMode: ColorMode;\n $offset: number;\n}>;\n\nexport const StyledMotionPopupContentWrapper = styled(\n motion.div,\n)<StyledMotionPopupContentWrapperProps>`\n background-color: ${({ theme, $colorMode }: StyledMotionPopupContentWrapperProps) =>\n $colorMode === ColorMode.Dark ? theme['003'] : theme['001']};\n border-radius: 3px;\n box-shadow: 1px 3px 8px rgb(0 0 0 / 30%);\n color: ${({ theme }: StyledMotionPopupContentWrapperProps) => theme.text};\n z-index: 100;\n position: fixed;\n\n & img {\n width: 100%;\n }\n\n &::after {\n background-color: inherit;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 2px 2px 8px rgb(4 3 4 / 10%);\n content: '';\n height: 14px;\n position: absolute;\n width: 14px;\n z-index: -2;\n\n ${({ $position, $offset }) => {\n switch ($position) {\n case PopupAlignment.TopLeft:\n return css`\n bottom: -7px;\n right: ${13 + $offset}px;\n transform: rotate(45deg);\n `;\n case PopupAlignment.BottomLeft:\n return css`\n top: -7px;\n right: ${13 + $offset}px;\n transform: rotate(225deg);\n `;\n case PopupAlignment.TopRight:\n return css`\n transform: rotate(45deg);\n bottom: -7px;\n left: ${13 + $offset}px;\n `;\n case PopupAlignment.BottomRight:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: ${13 + $offset}px;\n `;\n default:\n return undefined;\n }\n }}\n }\n\n &::before {\n background-color: inherit;\n border-radius: 3px;\n bottom: 0;\n content: '';\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: -1;\n }\n`;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PopupContentWrapper.styles.js","names":["_chaynsApi","require","_framerMotion","_styledComponents","_interopRequireWildcard","_popup","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledMotionPopupContentWrapper","exports","styled","motion","div","theme","$colorMode","ColorMode","Dark","text","$position","$offset","PopupAlignment","TopLeft","css","BottomLeft","TopRight","BottomRight","undefined"],"sources":["../../../../../src/components/popup/popup-content-wrapper/PopupContentWrapper.styles.ts"],"sourcesContent":["import { ColorMode } from 'chayns-api';\nimport { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport { PopupAlignment } from '../../../types/popup';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionPopupContentWrapperProps = WithTheme<{\n $position: PopupAlignment;\n $colorMode: ColorMode;\n $offset: number;\n}>;\n\nexport const StyledMotionPopupContentWrapper = styled(\n motion.div,\n)<StyledMotionPopupContentWrapperProps>`\n background-color: ${({ theme, $colorMode }: StyledMotionPopupContentWrapperProps) =>\n $colorMode === ColorMode.Dark ? theme['003'] : theme['001']};\n border-radius: 3px;\n box-shadow: 1px 3px 8px rgb(0 0 0 / 30%);\n color: ${({ theme }: StyledMotionPopupContentWrapperProps) => theme.text};\n z-index: 100;\n position: fixed;\n\n &::after {\n background-color: inherit;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 2px 2px 8px rgb(4 3 4 / 10%);\n content: '';\n height: 14px;\n position: absolute;\n width: 14px;\n z-index: -2;\n\n ${({ $position, $offset }) => {\n switch ($position) {\n case PopupAlignment.TopLeft:\n return css`\n bottom: -7px;\n right: ${13 + $offset}px;\n transform: rotate(45deg);\n `;\n case PopupAlignment.BottomLeft:\n return css`\n top: -7px;\n right: ${13 + $offset}px;\n transform: rotate(225deg);\n `;\n case PopupAlignment.TopRight:\n return css`\n transform: rotate(45deg);\n bottom: -7px;\n left: ${13 + $offset}px;\n `;\n case PopupAlignment.BottomRight:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: ${13 + $offset}px;\n `;\n default:\n return undefined;\n }\n }}\n }\n\n &::before {\n background-color: inherit;\n border-radius: 3px;\n bottom: 0;\n content: '';\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: -1;\n }\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAsD,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAS/C,MAAMW,+BAA+B,GAAAC,OAAA,CAAAD,+BAAA,GAAG,IAAAE,yBAAM,EACjDC,oBAAM,CAACC,GACX,CAAwC;AACxC,wBAAwB,CAAC;EAAEC,KAAK;EAAEC;AAAiD,CAAC,KAC5EA,UAAU,KAAKC,oBAAS,CAACC,IAAI,GAAGH,KAAK,CAAC,KAAK,CAAC,GAAGA,KAAK,CAAC,KAAK,CAAE;AACpE;AACA;AACA,aAAa,CAAC;EAAEA;AAA4C,CAAC,KAAKA,KAAK,CAACI,IAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,CAAC;EAAEC,SAAS;EAAEC;AAAQ,CAAC,KAAK;EAC1B,QAAQD,SAAS;IACb,KAAKE,qBAAc,CAACC,OAAO;MACvB,OAAO,IAAAC,qBAAG,CAAC;AAC/B;AACA,iCAAiC,EAAE,GAAGH,OAAQ;AAC9C;AACA,qBAAqB;IACL,KAAKC,qBAAc,CAACG,UAAU;MAC1B,OAAO,IAAAD,qBAAG,CAAC;AAC/B;AACA,iCAAiC,EAAE,GAAGH,OAAQ;AAC9C;AACA,qBAAqB;IACL,KAAKC,qBAAc,CAACI,QAAQ;MACxB,OAAO,IAAAF,qBAAG,CAAC;AAC/B;AACA;AACA,gCAAgC,EAAE,GAAGH,OAAQ;AAC7C,qBAAqB;IACL,KAAKC,qBAAc,CAACK,WAAW;MAC3B,OAAO,IAAAH,qBAAG,CAAC;AAC/B;AACA;AACA,gCAAgC,EAAE,GAAGH,OAAQ;AAC7C,qBAAqB;IACL;MACI,OAAOO,SAAS;EACxB;AACJ,CAAE;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getHeightOfSingleTextLine = exports.calculateContentWidth = exports.calculateContentHeight = exports.calculateBiggestWidth = void 0;
6
+ exports.getMaxHeightInPixels = exports.getHeightOfSingleTextLine = exports.calculateContentWidth = exports.calculateContentHeight = exports.calculateBiggestWidth = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _server = require("react-dom/server");
9
9
  var _ColorSchemeProvider = _interopRequireDefault(require("../components/color-scheme-provider/ColorSchemeProvider"));
@@ -61,20 +61,20 @@ const calculateBiggestWidth = elements => {
61
61
  };
62
62
  exports.calculateBiggestWidth = calculateBiggestWidth;
63
63
  const calculateContentHeight = elements => {
64
- const length = [];
64
+ const heights = [];
65
65
  elements.forEach(element => {
66
- const div = document.createElement('p');
66
+ const div = document.createElement('div');
67
67
  div.style.visibility = 'hidden';
68
68
  div.style.position = 'absolute';
69
69
  div.style.width = 'auto';
70
- div.style.margin = '5px';
70
+ div.style.padding = '4px 10px';
71
71
  div.style.whiteSpace = 'nowrap';
72
72
  document.body.appendChild(div);
73
73
  div.innerText = element;
74
- length.push(div.offsetHeight);
74
+ heights.push(div.offsetHeight);
75
75
  document.body.removeChild(div);
76
76
  });
77
- return length.reduce((partialSum, a) => partialSum + a, 0);
77
+ return heights.reduce((partialSum, a) => partialSum + a, 0);
78
78
  };
79
79
  exports.calculateContentHeight = calculateContentHeight;
80
80
  const getHeightOfSingleTextLine = () => {
@@ -86,4 +86,18 @@ const getHeightOfSingleTextLine = () => {
86
86
  return height;
87
87
  };
88
88
  exports.getHeightOfSingleTextLine = getHeightOfSingleTextLine;
89
+ const getMaxHeightInPixels = (maxHeight, rootElement) => {
90
+ const tempElement = document.createElement('div');
91
+ tempElement.style.position = 'absolute';
92
+ tempElement.style.visibility = 'hidden';
93
+ tempElement.style.height = '100vh';
94
+ tempElement.style.maxHeight = maxHeight;
95
+ rootElement.appendChild(tempElement);
96
+ const {
97
+ height
98
+ } = tempElement.getBoundingClientRect();
99
+ rootElement.removeChild(tempElement);
100
+ return height;
101
+ };
102
+ exports.getMaxHeightInPixels = getMaxHeightInPixels;
89
103
  //# sourceMappingURL=calculate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.js","names":["_react","_interopRequireDefault","require","_server","_ColorSchemeProvider","obj","__esModule","default","calculateContentWidth","list","length","forEach","suffixElement","text","div","document","createElement","style","display","gap","position","visibility","whiteSpace","width","body","appendChild","innerText","innerHTML","renderToString","color","colorMode","push","offsetWidth","removeChild","Math","max","apply","exports","calculateBiggestWidth","elements","container","padding","id","element","accessKey","calculateContentHeight","margin","offsetHeight","reduce","partialSum","a","getHeightOfSingleTextLine","span","height"],"sources":["../../../src/utils/calculate.tsx"],"sourcesContent":["import React from 'react';\nimport { renderToString } from 'react-dom/server';\nimport ColorSchemeProvider from '../components/color-scheme-provider/ColorSchemeProvider';\nimport type { IComboBoxItem } from '../components/combobox/ComboBox';\nimport type { SliderButtonItem } from '../types/slider-button';\n\nexport const calculateContentWidth = (list: IComboBoxItem[]) => {\n const length: number[] = [];\n\n list.forEach(({ suffixElement, text }) => {\n const div = document.createElement('div');\n\n div.style.display = 'flex';\n div.style.gap = '10px';\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n div.style.whiteSpace = 'nowrap';\n div.style.width = 'auto';\n\n document.body.appendChild(div);\n\n div.innerText = text;\n\n if (suffixElement) {\n // ColorSchemeProvider is used to prevent missing scheme context error.\n // Due to the fact that the element is never rendered visible, the values are irrelevant.\n div.innerHTML += renderToString(\n <ColorSchemeProvider color=\"#005EB8\" colorMode={0}>\n {suffixElement}\n </ColorSchemeProvider>,\n );\n }\n\n length.push(div.offsetWidth);\n\n document.body.removeChild(div);\n });\n\n return Math.max.apply(null, length);\n};\n\nexport const calculateBiggestWidth = (elements: SliderButtonItem[]) => {\n const container = document.createElement('div');\n\n container.style.visibility = 'hidden';\n container.style.position = 'absolute';\n container.style.width = 'auto';\n container.style.whiteSpace = 'nowrap';\n container.style.padding = '7px 12px';\n container.style.display = 'block';\n\n elements.forEach(({ text, id }) => {\n const element = document.createElement('div');\n\n element.accessKey = `slider-button-pseudo--${id}`;\n element.innerText = text;\n\n container.appendChild(element);\n });\n\n document.body.appendChild(container);\n\n const width = container.offsetWidth;\n\n document.body.removeChild(container);\n\n return width;\n};\n\nexport const calculateContentHeight = (elements: string[]) => {\n const length: number[] = [];\n\n elements.forEach((element: string) => {\n const div = document.createElement('p');\n div.style.visibility = 'hidden';\n div.style.position = 'absolute';\n div.style.width = 'auto';\n div.style.margin = '5px';\n div.style.whiteSpace = 'nowrap';\n document.body.appendChild(div);\n div.innerText = element;\n\n length.push(div.offsetHeight);\n\n document.body.removeChild(div);\n });\n\n return length.reduce((partialSum, a) => partialSum + a, 0);\n};\n\nexport const getHeightOfSingleTextLine = () => {\n const span = document.createElement('span');\n\n span.innerText = 'A';\n\n document.body.appendChild(span);\n\n const height = span.offsetHeight;\n\n document.body.removeChild(span);\n\n return height;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"calculate.js","names":["_react","_interopRequireDefault","require","_server","_ColorSchemeProvider","obj","__esModule","default","calculateContentWidth","list","length","forEach","suffixElement","text","div","document","createElement","style","display","gap","position","visibility","whiteSpace","width","body","appendChild","innerText","innerHTML","renderToString","color","colorMode","push","offsetWidth","removeChild","Math","max","apply","exports","calculateBiggestWidth","elements","container","padding","id","element","accessKey","calculateContentHeight","heights","offsetHeight","reduce","partialSum","a","getHeightOfSingleTextLine","span","height","getMaxHeightInPixels","maxHeight","rootElement","tempElement","getBoundingClientRect"],"sources":["../../../src/utils/calculate.tsx"],"sourcesContent":["import React, { type CSSProperties } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport ColorSchemeProvider from '../components/color-scheme-provider/ColorSchemeProvider';\nimport type { IComboBoxItem } from '../components/combobox/ComboBox';\nimport type { SliderButtonItem } from '../types/slider-button';\n\nexport const calculateContentWidth = (list: IComboBoxItem[]) => {\n const length: number[] = [];\n\n list.forEach(({ suffixElement, text }) => {\n const div = document.createElement('div');\n\n div.style.display = 'flex';\n div.style.gap = '10px';\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n div.style.whiteSpace = 'nowrap';\n div.style.width = 'auto';\n\n document.body.appendChild(div);\n\n div.innerText = text;\n\n if (suffixElement) {\n // ColorSchemeProvider is used to prevent missing scheme context error.\n // Due to the fact that the element is never rendered visible, the values are irrelevant.\n div.innerHTML += renderToString(\n <ColorSchemeProvider color=\"#005EB8\" colorMode={0}>\n {suffixElement}\n </ColorSchemeProvider>,\n );\n }\n\n length.push(div.offsetWidth);\n\n document.body.removeChild(div);\n });\n\n return Math.max.apply(null, length);\n};\n\nexport const calculateBiggestWidth = (elements: SliderButtonItem[]) => {\n const container = document.createElement('div');\n\n container.style.visibility = 'hidden';\n container.style.position = 'absolute';\n container.style.width = 'auto';\n container.style.whiteSpace = 'nowrap';\n container.style.padding = '7px 12px';\n container.style.display = 'block';\n\n elements.forEach(({ text, id }) => {\n const element = document.createElement('div');\n\n element.accessKey = `slider-button-pseudo--${id}`;\n element.innerText = text;\n\n container.appendChild(element);\n });\n\n document.body.appendChild(container);\n\n const width = container.offsetWidth;\n\n document.body.removeChild(container);\n\n return width;\n};\n\nexport const calculateContentHeight = (elements: string[]) => {\n const heights: number[] = [];\n\n elements.forEach((element: string) => {\n const div = document.createElement('div');\n\n div.style.visibility = 'hidden';\n div.style.position = 'absolute';\n div.style.width = 'auto';\n div.style.padding = '4px 10px';\n div.style.whiteSpace = 'nowrap';\n\n document.body.appendChild(div);\n\n div.innerText = element;\n\n heights.push(div.offsetHeight);\n\n document.body.removeChild(div);\n });\n\n return heights.reduce((partialSum, a) => partialSum + a, 0);\n};\n\nexport const getHeightOfSingleTextLine = () => {\n const span = document.createElement('span');\n\n span.innerText = 'A';\n\n document.body.appendChild(span);\n\n const height = span.offsetHeight;\n\n document.body.removeChild(span);\n\n return height;\n};\n\nexport const getMaxHeightInPixels = (\n maxHeight: CSSProperties['maxHeight'],\n rootElement: HTMLElement,\n): number => {\n const tempElement = document.createElement('div');\n\n tempElement.style.position = 'absolute';\n tempElement.style.visibility = 'hidden';\n tempElement.style.height = '100vh';\n tempElement.style.maxHeight = maxHeight as string;\n\n rootElement.appendChild(tempElement);\n\n const { height } = tempElement.getBoundingClientRect();\n\n rootElement.removeChild(tempElement);\n\n return height;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { getDevice } from 'chayns-api';
2
2
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { ComboBoxDirection } from '../../types/comboBox';
4
- import { calculateContentHeight, calculateContentWidth } from '../../utils/calculate';
4
+ import { calculateContentHeight, calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';
5
5
  import { getIsMobile } from '../../utils/environment';
6
6
  import Icon from '../icon/Icon';
7
7
  import ComboBoxItem from './combobox-item/ComboBoxItem';
@@ -11,7 +11,7 @@ const ComboBox = _ref => {
11
11
  direction = ComboBoxDirection.BOTTOM,
12
12
  isDisabled = false,
13
13
  list,
14
- maxHeight = '300px',
14
+ maxHeight = '280px',
15
15
  onSelect,
16
16
  placeholder,
17
17
  selectedItem,
@@ -20,19 +20,19 @@ const ComboBox = _ref => {
20
20
  const [item, setItem] = useState();
21
21
  const [isAnimating, setIsAnimating] = useState(false);
22
22
  const [minWidth, setMinWidth] = useState(0);
23
- const [height, setHeight] = useState(0);
24
23
  const [focusedIndex, setFocusedIndex] = useState(null);
25
- const ref = useRef(null);
24
+ const [overflowY, setOverflowY] = useState('hidden');
25
+ const styledComboBoxElementRef = useRef(null);
26
26
  const contentRef = useRef(null);
27
27
  const {
28
28
  browser
29
29
  } = getDevice();
30
30
  const isMobile = getIsMobile();
31
31
  const handleClick = useCallback(event => {
32
- if (ref.current && !ref.current.contains(event.target)) {
32
+ if (styledComboBoxElementRef.current && !styledComboBoxElementRef.current.contains(event.target)) {
33
33
  setIsAnimating(false);
34
34
  }
35
- }, [ref]);
35
+ }, [styledComboBoxElementRef]);
36
36
 
37
37
  /**
38
38
  * This function adds an event listener to the document to close the combobox when the user clicks outside of it
@@ -42,7 +42,7 @@ const ComboBox = _ref => {
42
42
  return () => {
43
43
  document.removeEventListener('click', handleClick);
44
44
  };
45
- }, [handleClick, ref]);
45
+ }, [handleClick, styledComboBoxElementRef]);
46
46
 
47
47
  /**
48
48
  * This function sets the selected item
@@ -112,7 +112,9 @@ const ComboBox = _ref => {
112
112
  } = _ref4;
113
113
  return text;
114
114
  });
115
- setHeight(calculateContentHeight(textArray));
115
+ const contentHeight = calculateContentHeight(textArray);
116
+ const maxHeightInPixels = getMaxHeightInPixels(maxHeight, styledComboBoxElementRef.current ?? document.body);
117
+ setOverflowY(contentHeight > maxHeightInPixels ? 'scroll' : 'hidden');
116
118
  textArray.push(placeholder);
117
119
 
118
120
  // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left
@@ -121,7 +123,7 @@ const ComboBox = _ref => {
121
123
  text: placeholder,
122
124
  value: 'placeholder'
123
125
  }]) + 45 + (isAtLeastOneItemWithImageGiven ? 32 : 0));
124
- }, [list, placeholder]);
126
+ }, [list, maxHeight, placeholder]);
125
127
 
126
128
  /**
127
129
  * This function sets the external selected item
@@ -194,7 +196,7 @@ const ComboBox = _ref => {
194
196
  return /*#__PURE__*/React.createElement(StyledMotionComboBoxBody, {
195
197
  $browser: browser?.name,
196
198
  animate: animate,
197
- $height: height,
199
+ $overflowY: overflowY,
198
200
  initial: {
199
201
  height: 0,
200
202
  opacity: 0
@@ -209,9 +211,9 @@ const ComboBox = _ref => {
209
211
  tabIndex: 0,
210
212
  ref: contentRef
211
213
  }, items);
212
- }, [browser?.name, direction, handleSetSelectedItem, height, isAnimating, list, maxHeight, minWidth, selectedItem, shouldShowRoundImage]);
214
+ }, [browser?.name, direction, handleSetSelectedItem, isAnimating, list, maxHeight, minWidth, overflowY, selectedItem, shouldShowRoundImage]);
213
215
  return useMemo(() => /*#__PURE__*/React.createElement(StyledComboBox, {
214
- ref: ref
216
+ ref: styledComboBoxElementRef
215
217
  }, direction === ComboBoxDirection.TOP && comboBoxBody, /*#__PURE__*/React.createElement(StyledComboBoxHeader, {
216
218
  $direction: direction,
217
219
  $minWidth: minWidth,
@@ -224,7 +226,7 @@ const ComboBox = _ref => {
224
226
  shouldShowRoundImage: shouldShowRoundImage
225
227
  }), placeholderText, item && item.suffixElement && item.suffixElement), /*#__PURE__*/React.createElement(StyledComboBoxIconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
226
228
  icons: ['fa fa-chevron-down']
227
- }))), direction === ComboBoxDirection.BOTTOM && comboBoxBody), [comboBoxBody, direction, handleHeaderClick, isAnimating, isDisabled, isMobile, minWidth, placeholderImageUrl, placeholderText, shouldShowRoundImage]);
229
+ }))), direction === ComboBoxDirection.BOTTOM && comboBoxBody), [comboBoxBody, direction, handleHeaderClick, isAnimating, isDisabled, isMobile, item, minWidth, placeholderImageUrl, placeholderText, shouldShowRoundImage]);
228
230
  };
229
231
  ComboBox.displayName = 'ComboBox';
230
232
  export default ComboBox;
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["getDevice","React","useCallback","useEffect","useMemo","useRef","useState","ComboBoxDirection","calculateContentHeight","calculateContentWidth","getIsMobile","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledMotionComboBoxBody","ComboBox","_ref","direction","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","isAnimating","setIsAnimating","minWidth","setMinWidth","height","setHeight","focusedIndex","setFocusedIndex","ref","contentRef","browser","isMobile","handleClick","event","current","contains","target","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","e","key","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","element","id","newSelectedItem","find","_ref2","value","String","replace","isAtLeastOneItemWithImageGiven","some","_ref3","imageUrl","textArray","map","_ref4","text","push","placeholderImageUrl","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","_ref5","suffixElement","createElement","isSelected","animate","opacity","style","TOP","transform","$browser","name","$height","initial","$maxHeight","$minWidth","$direction","transition","duration","onClick","$isOpen","$isMobile","$isDisabled","src","icons","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentHeight, calculateContentWidth } from '../../utils/calculate';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '300px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const ref = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const isMobile = getIsMobile();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n setIsAnimating(false);\n }\n },\n [ref],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, ref]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n setHeight(calculateContentHeight(textArray));\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, 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 (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $height={height}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n height,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={ref}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n {item && item.suffixElement && item.suffixElement}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\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":["getDevice","React","useCallback","useEffect","useMemo","useRef","useState","ComboBoxDirection","calculateContentHeight","calculateContentWidth","getMaxHeightInPixels","getIsMobile","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledMotionComboBoxBody","ComboBox","_ref","direction","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","isAnimating","setIsAnimating","minWidth","setMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","styledComboBoxElementRef","contentRef","browser","isMobile","handleClick","event","current","contains","target","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","e","key","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","element","id","newSelectedItem","find","_ref2","value","String","replace","isAtLeastOneItemWithImageGiven","some","_ref3","imageUrl","textArray","map","_ref4","text","contentHeight","maxHeightInPixels","body","push","placeholderImageUrl","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","_ref5","suffixElement","createElement","isSelected","animate","height","opacity","style","TOP","transform","$browser","name","$overflowY","initial","$maxHeight","$minWidth","$direction","transition","duration","ref","onClick","$isOpen","$isMobile","$isDisabled","src","icons","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport {\n calculateContentHeight,\n calculateContentWidth,\n getMaxHeightInPixels,\n} from '../../utils/calculate';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '280px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const isMobile = getIsMobile();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n const contentHeight = calculateContentHeight(textArray);\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(contentHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, maxHeight, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, 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 (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $overflowY={overflowY}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n overflowY,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={styledComboBoxElementRef}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n {item && item.suffixElement && item.suffixElement}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n item,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -141,9 +141,9 @@ export const StyledMotionComboBoxBody = styled(motion.div)`
141
141
  }};
142
142
  overflow-y: ${_ref15 => {
143
143
  let {
144
- $height
144
+ $overflowY
145
145
  } = _ref15;
146
- return $height <= 300 ? 'hidden' : 'auto';
146
+ return $overflowY;
147
147
  }};
148
148
 
149
149
  ${_ref16 => {