@chayns-components/core 5.0.0-beta.1076 → 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.
@@ -608,8 +608,10 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
608
608
  return;
609
609
  }
610
610
  setPortal(() => /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react2.default.createElement(_react.AnimatePresence, {
611
- initial: false
611
+ initial: false,
612
+ key: `search-box-body-animation-wrapper-${uuid}`
612
613
  }, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/_react2.default.createElement(_SearchBoxBody.default, {
614
+ key: `search-box-body-${uuid}`,
613
615
  filterButtons: filterButtons,
614
616
  selectedGroups: groups,
615
617
  width: width,
@@ -620,9 +622,10 @@ const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
620
622
  onGroupSelect: handleFilterButtonsGroupSelect,
621
623
  shouldHideFilterButtons: shouldHideFilterButtons
622
624
  }, content)), newContainer));
623
- }, [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]);
624
626
  return (0, _react2.useMemo)(() => /*#__PURE__*/_react2.default.createElement(_SearchBox.StyledSearchBox, {
625
- ref: boxRef
627
+ ref: boxRef,
628
+ key: `search-box-${uuid}`
626
629
  }, /*#__PURE__*/_react2.default.createElement("div", {
627
630
  id: `search_box_input${uuid}`
628
631
  }, /*#__PURE__*/_react2.default.createElement(_Input.default, {
@@ -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","_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 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${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":[]}
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":[]}
@@ -620,8 +620,10 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
620
620
  return;
621
621
  }
622
622
  setPortal(() => /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(AnimatePresence, {
623
- initial: false
623
+ initial: false,
624
+ key: `search-box-body-animation-wrapper-${uuid}`
624
625
  }, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/React.createElement(SearchBoxBody, {
626
+ key: `search-box-body-${uuid}`,
625
627
  filterButtons: filterButtons,
626
628
  selectedGroups: groups,
627
629
  width: width,
@@ -632,9 +634,10 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
632
634
  onGroupSelect: handleFilterButtonsGroupSelect,
633
635
  shouldHideFilterButtons: shouldHideFilterButtons
634
636
  }, content)), newContainer));
635
- }, [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]);
636
638
  return useMemo(() => /*#__PURE__*/React.createElement(StyledSearchBox, {
637
- ref: boxRef
639
+ ref: boxRef,
640
+ key: `search-box-${uuid}`
638
641
  }, /*#__PURE__*/React.createElement("div", {
639
642
  id: `search_box_input${uuid}`
640
643
  }, /*#__PURE__*/React.createElement(Input, {
@@ -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","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 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${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":[]}
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.1076",
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": "a07ca19c8cdf0a10da0fb8daf2d7a7c5ac1af4d3"
89
+ "gitHead": "80f825a83b6b57051d8d5b65290dca4451623613"
90
90
  }