@chayns-components/core 5.0.0-beta.1075 → 5.0.0-beta.1077

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.
@@ -18,6 +18,7 @@ var _SearchBoxBody = _interopRequireDefault(require("./search-box-body/SearchBox
18
18
  var _SearchBoxItem = _interopRequireDefault(require("./search-box-item/SearchBoxItem"));
19
19
  var _SearchBoxItem2 = require("./search-box-item/SearchBoxItem.styles");
20
20
  var _SearchBox = require("./SearchBox.styles");
21
+ var _uuid = require("../../hooks/uuid");
21
22
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -57,6 +58,7 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
57
58
  y: 0
58
59
  });
59
60
  const [newContainer, setNewContainer] = (0, _react2.useState)(container ?? null);
61
+ const uuid = (0, _uuid.useUuid)();
60
62
  const boxRef = (0, _react2.useRef)(null);
61
63
  const contentRef = (0, _react2.useRef)(null);
62
64
  const inputRef = (0, _react2.useRef)(null);
@@ -242,7 +244,7 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
242
244
  * This hook calculates the width
243
245
  */
244
246
  (0, _react2.useEffect)(() => {
245
- const input = document.getElementById('search_box_input');
247
+ const input = document.getElementById(`search_box_input${uuid}`);
246
248
  const getInputWidth = () => {
247
249
  if (input) {
248
250
  setWidth(input.offsetWidth);
@@ -251,7 +253,7 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
251
253
  if (input) {
252
254
  new ResizeObserver(getInputWidth).observe(input);
253
255
  }
254
- }, []);
256
+ }, [uuid]);
255
257
  (0, _react2.useEffect)(() => {
256
258
  if (selectedId) {
257
259
  activeList.forEach(({
@@ -606,8 +608,10 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
606
608
  return;
607
609
  }
608
610
  setPortal(() => /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react2.default.createElement(_react.AnimatePresence, {
609
- initial: false
611
+ initial: false,
612
+ key: `search-box-body-animation-wrapper-${uuid}`
610
613
  }, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/_react2.default.createElement(_SearchBoxBody.default, {
614
+ key: `search-box-body-${uuid}`,
611
615
  filterButtons: filterButtons,
612
616
  selectedGroups: groups,
613
617
  width: width,
@@ -618,11 +622,12 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
618
622
  onGroupSelect: handleFilterButtonsGroupSelect,
619
623
  shouldHideFilterButtons: shouldHideFilterButtons
620
624
  }, content)), newContainer));
621
- }, [browser === null || browser === void 0 ? void 0 : browser.name, newContainer, content, filterButtons, groups, height, internalCoordinates, isAnimating, width, shouldHideFilterButtons, matchingListsItems.length, value, shouldShowContentOnEmptyInput]);
625
+ }, [browser === null || browser === void 0 ? void 0 : browser.name, newContainer, content, filterButtons, groups, height, internalCoordinates, isAnimating, width, shouldHideFilterButtons, matchingListsItems.length, value, shouldShowContentOnEmptyInput, uuid]);
622
626
  return (0, _react2.useMemo)(() => /*#__PURE__*/_react2.default.createElement(_SearchBox.StyledSearchBox, {
623
- ref: boxRef
627
+ ref: boxRef,
628
+ key: `search-box-${uuid}`
624
629
  }, /*#__PURE__*/_react2.default.createElement("div", {
625
- id: "search_box_input"
630
+ id: `search_box_input${uuid}`
626
631
  }, /*#__PURE__*/_react2.default.createElement(_Input.default, {
627
632
  isInvalid: isInvalid,
628
633
  ref: inputRef,
@@ -634,7 +639,7 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
634
639
  leftElement: leftElement,
635
640
  rightElement: rightElement,
636
641
  value: value
637
- })), portal), [handleBlur, handleChange, handleFocus, isInvalid, leftElement, onKeyDown, placeholder, portal, rightElement, value]);
642
+ })), portal), [handleBlur, handleChange, handleFocus, isInvalid, leftElement, onKeyDown, placeholder, portal, rightElement, uuid, value]);
638
643
  });
639
644
  SearchBox.displayName = 'SearchBox';
640
645
  var _default = exports.default = SearchBox;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","browser","getDevice","useEffect","current","el","element","closest","Element","getBoundingClientRect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","left","comboBoxLeft","top","comboBoxTop","bodyHeight","scrollLeft","scrollTop","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","calculateContentHeight","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","filteredLists","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","textContent","attributes","_element$children$2","nodeValue","handleKeyPress","keyCode","useImperativeHandle","clear","createPortal","AnimatePresence","initial","trim","selectedGroups","coordinates","onGroupSelect","StyledSearchBox","onFocus","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height: bodyHeight,\n } = boxRef.current.getBoundingClientRect();\n\n const { left, top } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n isInvalid,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","uuid","useUuid","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","browser","getDevice","useEffect","current","el","element","closest","Element","getBoundingClientRect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","left","comboBoxLeft","top","comboBoxTop","bodyHeight","scrollLeft","scrollTop","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","calculateContentHeight","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","filteredLists","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","textContent","attributes","_element$children$2","nodeValue","handleKeyPress","keyCode","useImperativeHandle","clear","createPortal","AnimatePresence","initial","trim","selectedGroups","coordinates","onGroupSelect","StyledSearchBox","onFocus","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height: bodyHeight,\n } = boxRef.current.getBoundingClientRect();\n\n const { left, top } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById(`search_box_input${uuid}`);\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, [uuid]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence\n initial={false}\n key={`search-box-body-animation-wrapper-${uuid}`}\n >\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n uuid,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n isInvalid,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ import SearchBoxBody from './search-box-body/SearchBoxBody';
12
12
  import SearchBoxItem from './search-box-item/SearchBoxItem';
13
13
  import { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';
14
14
  import { StyledSearchBox, StyledSearchBoxIcon, StyledSearchBoxLeftWrapper } from './SearchBox.styles';
15
+ import { useUuid } from '../../hooks/uuid';
15
16
  const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
16
17
  let {
17
18
  isInvalid = false,
@@ -49,6 +50,7 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
49
50
  y: 0
50
51
  });
51
52
  const [newContainer, setNewContainer] = useState(container ?? null);
53
+ const uuid = useUuid();
52
54
  const boxRef = useRef(null);
53
55
  const contentRef = useRef(null);
54
56
  const inputRef = useRef(null);
@@ -243,7 +245,7 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
243
245
  * This hook calculates the width
244
246
  */
245
247
  useEffect(() => {
246
- const input = document.getElementById('search_box_input');
248
+ const input = document.getElementById(`search_box_input${uuid}`);
247
249
  const getInputWidth = () => {
248
250
  if (input) {
249
251
  setWidth(input.offsetWidth);
@@ -252,7 +254,7 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
252
254
  if (input) {
253
255
  new ResizeObserver(getInputWidth).observe(input);
254
256
  }
255
- }, []);
257
+ }, [uuid]);
256
258
  useEffect(() => {
257
259
  if (selectedId) {
258
260
  activeList.forEach(_ref7 => {
@@ -618,8 +620,10 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
618
620
  return;
619
621
  }
620
622
  setPortal(() => /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(AnimatePresence, {
621
- initial: false
623
+ initial: false,
624
+ key: `search-box-body-animation-wrapper-${uuid}`
622
625
  }, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/React.createElement(SearchBoxBody, {
626
+ key: `search-box-body-${uuid}`,
623
627
  filterButtons: filterButtons,
624
628
  selectedGroups: groups,
625
629
  width: width,
@@ -630,11 +634,12 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
630
634
  onGroupSelect: handleFilterButtonsGroupSelect,
631
635
  shouldHideFilterButtons: shouldHideFilterButtons
632
636
  }, content)), newContainer));
633
- }, [browser?.name, newContainer, content, filterButtons, groups, height, internalCoordinates, isAnimating, width, shouldHideFilterButtons, matchingListsItems.length, value, shouldShowContentOnEmptyInput]);
637
+ }, [browser?.name, newContainer, content, filterButtons, groups, height, internalCoordinates, isAnimating, width, shouldHideFilterButtons, matchingListsItems.length, value, shouldShowContentOnEmptyInput, uuid]);
634
638
  return useMemo(() => /*#__PURE__*/React.createElement(StyledSearchBox, {
635
- ref: boxRef
639
+ ref: boxRef,
640
+ key: `search-box-${uuid}`
636
641
  }, /*#__PURE__*/React.createElement("div", {
637
- id: "search_box_input"
642
+ id: `search_box_input${uuid}`
638
643
  }, /*#__PURE__*/React.createElement(Input, {
639
644
  isInvalid: isInvalid,
640
645
  ref: inputRef,
@@ -646,7 +651,7 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
646
651
  leftElement: leftElement,
647
652
  rightElement: rightElement,
648
653
  value: value
649
- })), portal), [handleBlur, handleChange, handleFocus, isInvalid, leftElement, onKeyDown, placeholder, portal, rightElement, value]);
654
+ })), portal), [handleBlur, handleChange, handleFocus, isInvalid, leftElement, onKeyDown, placeholder, portal, rightElement, uuid, value]);
650
655
  });
651
656
  SearchBox.displayName = 'SearchBox';
652
657
  export default SearchBox;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["getDevice","AnimatePresence","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","createPortal","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","SearchBox","_ref","ref","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","browser","current","el","element","closest","Element","getBoundingClientRect","filterButtons","items","forEach","_ref2","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","_ref3","newList","searchString","undefined","filteredMatchingListItems","map","_ref4","filter","item","handleOpen","left","comboBoxLeft","top","comboBoxTop","bodyHeight","scrollLeft","scrollTop","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","_ref5","_ref6","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","_ref7","selectedItem","find","_ref8","imageUrl","createElement","src","$shouldShowRoundImage","handleFocus","_ref9","_ref10","_ref11","_ref12","_ref13","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","filteredLists","_ref14","handleBlur","handleSelect","newItem","replace","content","_ref15","index","key","name","_ref16","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","textContent","attributes","nodeValue","handleKeyPress","keyCode","clear","initial","trim","selectedGroups","coordinates","onGroupSelect","onFocus","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height: bodyHeight,\n } = boxRef.current.getBoundingClientRect();\n\n const { left, top } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n isInvalid,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["getDevice","AnimatePresence","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","createPortal","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","SearchBox","_ref","ref","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","uuid","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","browser","current","el","element","closest","Element","getBoundingClientRect","filterButtons","items","forEach","_ref2","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","_ref3","newList","searchString","undefined","filteredMatchingListItems","map","_ref4","filter","item","handleOpen","left","comboBoxLeft","top","comboBoxTop","bodyHeight","scrollLeft","scrollTop","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","_ref5","_ref6","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","_ref7","selectedItem","find","_ref8","imageUrl","createElement","src","$shouldShowRoundImage","handleFocus","_ref9","_ref10","_ref11","_ref12","_ref13","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","filteredLists","_ref14","handleBlur","handleSelect","newItem","replace","content","_ref15","index","key","name","_ref16","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","textContent","attributes","nodeValue","handleKeyPress","keyCode","clear","initial","trim","selectedGroups","coordinates","onGroupSelect","onFocus","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height: bodyHeight,\n } = boxRef.current.getBoundingClientRect();\n\n const { left, top } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById(`search_box_input${uuid}`);\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, [uuid]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence\n initial={false}\n key={`search-box-body-animation-wrapper-${uuid}`}\n >\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n uuid,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n isInvalid,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.1075",
3
+ "version": "5.0.0-beta.1077",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "00953e38e3469e4c29f7dccf1ba24a8e4779bf4d"
89
+ "gitHead": "80f825a83b6b57051d8d5b65290dca4451623613"
90
90
  }