@chayns-components/core 5.0.0-beta.1342 → 5.0.0-beta.1344
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.
- package/lib/cjs/components/combobox/ComboBox.js +1 -1
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/combobox/combobox-item/ComboBoxItem.js +1 -1
- package/lib/cjs/components/combobox/combobox-item/ComboBoxItem.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.js +2 -2
- package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
- package/lib/cjs/components/filter/Filter.js +5 -3
- package/lib/cjs/components/filter/Filter.js.map +1 -1
- package/lib/cjs/components/filter/Filter.styles.js +16 -2
- package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.js +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/cjs/index.js +6 -6
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/utils/environment.js +10 -3
- package/lib/cjs/utils/environment.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.js +2 -2
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/combobox/combobox-item/ComboBoxItem.js +2 -2
- package/lib/esm/components/combobox/combobox-item/ComboBoxItem.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js +4 -4
- package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js +2 -2
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
- package/lib/esm/components/filter/Filter.js +5 -3
- package/lib/esm/components/filter/Filter.js.map +1 -1
- package/lib/esm/components/filter/Filter.styles.js +16 -2
- package/lib/esm/components/filter/Filter.styles.js.map +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.js +2 -2
- package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/utils/environment.js +8 -1
- package/lib/esm/utils/environment.js.map +1 -1
- package/lib/types/components/context-menu/ContextMenu.d.ts +2 -2
- package/lib/types/components/filter/Filter.d.ts +1 -0
- package/lib/types/components/filter/Filter.styles.d.ts +1 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/utils/environment.d.ts +1 -1
- package/package.json +2 -2
|
@@ -53,7 +53,7 @@ const ComboBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
53
53
|
});
|
|
54
54
|
const functions = (0, _chaynsApi.useFunctions)();
|
|
55
55
|
const values = (0, _chaynsApi.useValues)();
|
|
56
|
-
const isTouch = (0, _environment.
|
|
56
|
+
const isTouch = (0, _environment.useIsTouch)();
|
|
57
57
|
const {
|
|
58
58
|
browser
|
|
59
59
|
} = (0, _chaynsApi.useDevice)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","_DropdownBodyWrapper","_dropdown","_element","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBox","forwardRef","bodyWidth","direction","DropdownDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","useRef","styledComboBoxElementRef","contentRef","parentSize","useElementSize","shouldUseParentElement","functions","useFunctions","values","useValues","isTouch","getIsTouch","browser","useDevice","areaProvider","useContext","AreaContext","useEffect","width","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","handleInputFocus","useCallback","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","key","_contentRef$current","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","_contentRef$current2","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","_styledComboBoxElemen","allItems","baseWidth","calculateContentWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","useImperativeHandle","hide","show","comboBoxGroups","map","createElement","Fragment","groupName","StyledComboBoxTopic","isSelected","StyledComboBox","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","StyledComboBoxHeader","$direction","onClick","$isOpen","$isTouch","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","suffixElement","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","StyledComboBoxBody","$maxHeight","$browser","name","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateContentWidth } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = getIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n if (maxHeight < result) {\n result = maxHeight;\n }\n\n return result;\n }, [lists, maxHeight]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n setIsAnimating(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n if (shouldDropDownUseMaxItemWidth) {\n baseWidth += 20 + 2; // 20px padding left and right and 2px border\n setBodyMinWidth(baseWidth);\n setMinWidth(baseWidth);\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) +\n 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n shouldDropDownUseMaxItemWidth,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","_DropdownBodyWrapper","_dropdown","_element","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBox","forwardRef","bodyWidth","direction","DropdownDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","useRef","styledComboBoxElementRef","contentRef","parentSize","useElementSize","shouldUseParentElement","functions","useFunctions","values","useValues","isTouch","useIsTouch","browser","useDevice","areaProvider","useContext","AreaContext","useEffect","width","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","handleInputFocus","useCallback","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","key","_contentRef$current","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","_contentRef$current2","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","_styledComboBoxElemen","allItems","baseWidth","calculateContentWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","useImperativeHandle","hide","show","comboBoxGroups","map","createElement","Fragment","groupName","StyledComboBoxTopic","isSelected","StyledComboBox","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","StyledComboBoxHeader","$direction","onClick","$isOpen","$isTouch","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","suffixElement","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","StyledComboBoxBody","$maxHeight","$browser","name","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateContentWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n if (maxHeight < result) {\n result = maxHeight;\n }\n\n return result;\n }, [lists, maxHeight]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n setIsAnimating(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n if (shouldDropDownUseMaxItemWidth) {\n baseWidth += 20 + 2; // 20px padding left and right and 2px border\n setBodyMinWidth(baseWidth);\n setMinWidth(baseWidth);\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) +\n 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n shouldDropDownUseMaxItemWidth,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,7 +41,7 @@ const ComboBoxItem = ({
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
}, [icons, imageUrl, isDisabled, onSelect, suffixElement, text, value]);
|
|
44
|
-
const isTouch = (0, _environment.
|
|
44
|
+
const isTouch = (0, _environment.useIsTouch)();
|
|
45
45
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_ComboBoxItem.StyledComboBoxItem, {
|
|
46
46
|
id: `combobox-item__${typeof id === 'number' ? String(id) : id}${isDisabled ? '--disabled-item' : ''}`,
|
|
47
47
|
onClick: handleItemClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBoxItem.js","names":["_react","_interopRequireWildcard","require","_environment","_Icon","_interopRequireDefault","_ComboBoxItem","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBoxItem","item","isSelected","onSelect","shouldShowBigImage","shouldShowRoundImage","icons","imageUrl","isDisabled","imageBackground","suffixElement","textStyles","rightElement","text","value","subtext","id","handleItemClick","useCallback","isTouch","
|
|
1
|
+
{"version":3,"file":"ComboBoxItem.js","names":["_react","_interopRequireWildcard","require","_environment","_Icon","_interopRequireDefault","_ComboBoxItem","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBoxItem","item","isSelected","onSelect","shouldShowBigImage","shouldShowRoundImage","icons","imageUrl","isDisabled","imageBackground","suffixElement","textStyles","rightElement","text","value","subtext","id","handleItemClick","useCallback","isTouch","useIsTouch","useMemo","createElement","StyledComboBoxItem","String","onClick","$isDisabled","$isSelected","$isTouch","StyledComboBoxItemImage","src","$background","$shouldShowBigImage","trim","$shouldShowRoundImage","StyledComboBoxItemContent","StyledComboBoxItemContentHeader","$text","$subtext","StyledComboBoxItemContentHeaderWrapper","as","tagName","style","styles","StyledComboBoxItemContentHeaderWrapperText","StyledComboBoxItemContentHeaderRightElement","StyledComboBoxItemContentSubtext","displayName","_default","exports"],"sources":["../../../../../src/components/combobox/combobox-item/ComboBoxItem.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport { useIsTouch } from '../../../utils/environment';\nimport Icon from '../../icon/Icon';\nimport type { ComboBoxProps, IComboBoxItem } from '../ComboBox';\nimport {\n StyledComboBoxItem,\n StyledComboBoxItemContent,\n StyledComboBoxItemContentHeader,\n StyledComboBoxItemContentHeaderRightElement,\n StyledComboBoxItemContentHeaderWrapper,\n StyledComboBoxItemContentHeaderWrapperText,\n StyledComboBoxItemContentSubtext,\n StyledComboBoxItemImage,\n} from './ComboBoxItem.styles';\n\nexport type ComboBoxItemProps = {\n item: IComboBoxItem;\n isSelected: boolean;\n onSelect: (itemToSelect: IComboBoxItem) => void;\n shouldShowBigImage: ComboBoxProps['shouldShowBigImage'];\n shouldShowRoundImage: ComboBoxProps['shouldShowRoundImage'];\n};\n\nconst ComboBoxItem: FC<ComboBoxItemProps> = ({\n item,\n isSelected,\n onSelect,\n shouldShowBigImage,\n shouldShowRoundImage,\n}) => {\n const {\n icons,\n imageUrl,\n isDisabled,\n imageBackground,\n suffixElement,\n textStyles,\n rightElement,\n text,\n value,\n subtext,\n } = item;\n const id = value;\n\n const handleItemClick = useCallback(() => {\n if (!isDisabled) {\n onSelect({ text, value, suffixElement, imageUrl, icons });\n }\n }, [icons, imageUrl, isDisabled, onSelect, suffixElement, text, value]);\n\n const isTouch = useIsTouch();\n\n return useMemo(\n () => (\n <StyledComboBoxItem\n id={`combobox-item__${typeof id === 'number' ? String(id) : id}${isDisabled ? '--disabled-item' : ''}`}\n onClick={handleItemClick}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isTouch={isTouch}\n >\n {imageUrl && (\n <StyledComboBoxItemImage\n src={imageUrl}\n $background={imageBackground}\n $shouldShowBigImage={\n shouldShowBigImage ||\n (typeof subtext === 'string' && subtext.trim() !== '')\n }\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {icons && <Icon icons={icons} />}\n <StyledComboBoxItemContent>\n <StyledComboBoxItemContentHeader $text={text} $subtext={subtext}>\n <StyledComboBoxItemContentHeaderWrapper\n as={textStyles?.tagName}\n style={textStyles?.styles}\n >\n <StyledComboBoxItemContentHeaderWrapperText>\n {text}\n </StyledComboBoxItemContentHeaderWrapperText>\n {suffixElement}\n </StyledComboBoxItemContentHeaderWrapper>\n {rightElement && (\n <StyledComboBoxItemContentHeaderRightElement>\n {rightElement}\n </StyledComboBoxItemContentHeaderRightElement>\n )}\n </StyledComboBoxItemContentHeader>\n {subtext && (\n <StyledComboBoxItemContentSubtext>\n {subtext}\n </StyledComboBoxItemContentSubtext>\n )}\n </StyledComboBoxItemContent>\n </StyledComboBoxItem>\n ),\n [\n handleItemClick,\n icons,\n id,\n imageBackground,\n imageUrl,\n isDisabled,\n isSelected,\n isTouch,\n rightElement,\n shouldShowBigImage,\n shouldShowRoundImage,\n subtext,\n suffixElement,\n text,\n textStyles?.styles,\n textStyles?.tagName,\n ],\n );\n};\n\nComboBoxItem.displayName = 'ComboBoxItem';\n\nexport default ComboBoxItem;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AAS+B,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAM,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAU/B,MAAMgB,YAAmC,GAAGA,CAAC;EACzCC,IAAI;EACJC,UAAU;EACVC,QAAQ;EACRC,kBAAkB;EAClBC;AACJ,CAAC,KAAK;EACF,MAAM;IACFC,KAAK;IACLC,QAAQ;IACRC,UAAU;IACVC,eAAe;IACfC,aAAa;IACbC,UAAU;IACVC,YAAY;IACZC,IAAI;IACJC,KAAK;IACLC;EACJ,CAAC,GAAGd,IAAI;EACR,MAAMe,EAAE,GAAGF,KAAK;EAEhB,MAAMG,eAAe,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACtC,IAAI,CAACV,UAAU,EAAE;MACbL,QAAQ,CAAC;QAAEU,IAAI;QAAEC,KAAK;QAAEJ,aAAa;QAAEH,QAAQ;QAAED;MAAM,CAAC,CAAC;IAC7D;EACJ,CAAC,EAAE,CAACA,KAAK,EAAEC,QAAQ,EAAEC,UAAU,EAAEL,QAAQ,EAAEO,aAAa,EAAEG,IAAI,EAAEC,KAAK,CAAC,CAAC;EAEvE,MAAMK,OAAO,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE5B,OAAO,IAAAC,cAAO,EACV,mBACI/C,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAA2C,kBAAkB;IACfP,EAAE,EAAE,kBAAkB,OAAOA,EAAE,KAAK,QAAQ,GAAGQ,MAAM,CAACR,EAAE,CAAC,GAAGA,EAAE,GAAGR,UAAU,GAAG,iBAAiB,GAAG,EAAE,EAAG;IACvGiB,OAAO,EAAER,eAAgB;IACzBS,WAAW,EAAElB,UAAW;IACxBmB,WAAW,EAAEzB,UAAW;IACxB0B,QAAQ,EAAET;EAAQ,GAEjBZ,QAAQ,iBACLjC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAiD,uBAAuB;IACpBC,GAAG,EAAEvB,QAAS;IACdwB,WAAW,EAAEtB,eAAgB;IAC7BuB,mBAAmB,EACf5B,kBAAkB,IACjB,OAAOW,OAAO,KAAK,QAAQ,IAAIA,OAAO,CAACkB,IAAI,CAAC,CAAC,KAAK,EACtD;IACDC,qBAAqB,EAAE7B;EAAqB,CAC/C,CACJ,EACAC,KAAK,iBAAIhC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC5C,KAAA,CAAAK,OAAI;IAACuB,KAAK,EAAEA;EAAM,CAAE,CAAC,eAChChC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAuD,yBAAyB,qBACtB7D,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAwD,+BAA+B;IAACC,KAAK,EAAExB,IAAK;IAACyB,QAAQ,EAAEvB;EAAQ,gBAC5DzC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAA2D,sCAAsC;IACnCC,EAAE,EAAE7B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE8B,OAAQ;IACxBC,KAAK,EAAE/B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgC;EAAO,gBAE1BrE,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAgE,0CAA0C,QACtC/B,IACuC,CAAC,EAC5CH,aACmC,CAAC,EACxCE,YAAY,iBACTtC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAiE,2CAA2C,QACvCjC,YACwC,CAEpB,CAAC,EACjCG,OAAO,iBACJzC,MAAA,CAAAS,OAAA,CAAAuC,aAAA,CAAC1C,aAAA,CAAAkE,gCAAgC,QAC5B/B,OAC6B,CAEf,CACX,CACvB,EACD,CACIE,eAAe,EACfX,KAAK,EACLU,EAAE,EACFP,eAAe,EACfF,QAAQ,EACRC,UAAU,EACVN,UAAU,EACViB,OAAO,EACPP,YAAY,EACZR,kBAAkB,EAClBC,oBAAoB,EACpBU,OAAO,EACPL,aAAa,EACbG,IAAI,EACJF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgC,MAAM,EAClBhC,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE8B,OAAO,CAE3B,CAAC;AACL,CAAC;AAEDzC,YAAY,CAAC+C,WAAW,GAAG,cAAc;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAlE,OAAA,GAE3BiB,YAAY","ignoreList":[]}
|
|
@@ -45,7 +45,7 @@ const ContextMenu = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
|
45
45
|
const uuid = (0, _uuid.useUuid)();
|
|
46
46
|
const contextMenuContentRef = (0, _react2.useRef)(null);
|
|
47
47
|
const contextMenuRef = (0, _react2.useRef)(null);
|
|
48
|
-
const isTouch = (0, _environment.
|
|
48
|
+
const isTouch = (0, _environment.useIsTouch)();
|
|
49
49
|
(0, _react2.useEffect)(() => {
|
|
50
50
|
if (contextMenuRef.current && !container) {
|
|
51
51
|
const el = contextMenuRef.current;
|
|
@@ -76,7 +76,7 @@ const ContextMenu = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
|
76
76
|
name: text,
|
|
77
77
|
id: index,
|
|
78
78
|
isSelected,
|
|
79
|
-
icon: icons[0]
|
|
79
|
+
icon: /*#__PURE__*/(0, _react2.isValidElement)(icons) ? undefined : icons[0]
|
|
80
80
|
}))
|
|
81
81
|
}).open();
|
|
82
82
|
if (result && typeof result[0] === 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_contextMenu","_environment","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","coordinates","shouldHidePopupArrow","items","headline","onHide","onShow","shouldCloseOnPopupClick","shouldSeparateLastItem","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","useState","x","y","newContainer","setNewContainer","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","isTouch","getIsTouch","useEffect","current","el","element","closest","Element","handleHide","useCallback","handleShow","result","createDialog","type","DialogType","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","open","_items$result$","onClick","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","preventDefault","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","document","addEventListener","window","removeEventListener","createPortal","AnimatePresence","initial","key","Fragment","StyledContextMenu","className","$isActive","$shouldAddHoverEffect","displayName","_default","exports"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { ContextMenuAlignment } from '../../types/contextMenu';\nimport { getIsTouch } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\n\nexport type ContextMenuCoordinates = {\n x: number;\n y: number;\n};\n\nexport type ContextMenuItem = {\n icons: string[];\n key: string;\n onClick: (event?: MouseEvent<HTMLDivElement>) => Promise<void> | void;\n isSelected?: boolean;\n text: string;\n shouldShowSpacer?: boolean;\n};\n\nexport interface ContextMenuRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\ntype ContextMenuProps = {\n /**\n * Optional custom alignment used instead of calculating it using the\n * alignment within the page. The available alignment can be taken from the\n * ContextMenuAlignment enum.\n */\n alignment?: ContextMenuAlignment;\n /**\n * The element over which the content of the `ContextMenu` should be displayed. The default is an ellipsis icon.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `ContextMenu` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * Optional own coordinates to be used instead of calculating the alignment\n * based on the alignment of the children.\n */\n coordinates?: ContextMenuCoordinates;\n /**\n * The headline of the contextmenu.\n */\n headline?: string;\n /**\n * The items that will be displayed in the content of the `ContextMenu`.\n */\n items: ContextMenuItem[];\n /**\n * Function to be executed when the content of the Context menu has been hidden.\n */\n onHide?: VoidFunction;\n /**\n * Function to be executed when the content of the Context menu has been shown.\n */\n onShow?: VoidFunction;\n /**\n * Whether the popup should be closed if its clicked.\n */\n shouldCloseOnPopupClick?: boolean;\n /**\n * Whether the arrow of the popup should be hidden.\n */\n shouldHidePopupArrow?: boolean;\n /**\n * Whether the last item should be separated.\n */\n shouldSeparateLastItem?: boolean;\n /**\n * Whether the hover effect should be shown.\n */\n shouldShowHoverEffect?: boolean;\n /**\n * The z-index of the popup.\n */\n zIndex?: number;\n};\n\ninterface SelectDialogResult {\n buttonType: number;\n result: number[];\n}\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n children = <Icon icons={['ts-ellipsis_v']} size={18} />,\n container,\n coordinates,\n shouldHidePopupArrow = false,\n items,\n headline,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n shouldSeparateLastItem = false,\n shouldShowHoverEffect = false,\n zIndex = 20,\n },\n ref,\n ) => {\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 [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = getIsTouch();\n\n useEffect(() => {\n if (contextMenuRef.current && !container) {\n const el = contextMenuRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner, .page-provider, .tapp, body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n buttons: [],\n list: items.map(({ icons, text, isSelected }, index) => ({\n name: text,\n id: index,\n isSelected,\n icon: icons[0],\n })),\n }).open()) as SelectDialogResult;\n\n if (result && typeof result[0] === 'number') {\n void items[result[0]]?.onClick();\n }\n } else if (contextMenuRef.current) {\n if (!newContainer) {\n return;\n }\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n const { height, width, top, left } = newContainer.getBoundingClientRect();\n\n const zoomX = width / (newContainer as HTMLElement).offsetWidth;\n const zoomY = height / (newContainer as HTMLElement).offsetHeight;\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\n\n setInternalCoordinates({ x, y });\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [isTouch, items, newContainer]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow],\n );\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n shouldSeparateLastItem={shouldSeparateLastItem}\n zIndex={zIndex}\n headline={headline}\n shouldHidePopupArrow={shouldHidePopupArrow}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n />\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n zIndex,\n shouldHidePopupArrow,\n headline,\n shouldSeparateLastItem,\n ]);\n\n return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_contextMenu","_environment","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","coordinates","shouldHidePopupArrow","items","headline","onHide","onShow","shouldCloseOnPopupClick","shouldSeparateLastItem","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","useState","x","y","newContainer","setNewContainer","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","isTouch","useIsTouch","useEffect","current","el","element","closest","Element","handleHide","useCallback","handleShow","result","createDialog","type","DialogType","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","isValidElement","undefined","open","_items$result$","onClick","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","preventDefault","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","document","addEventListener","window","removeEventListener","createPortal","AnimatePresence","initial","key","Fragment","StyledContextMenu","className","$isActive","$shouldAddHoverEffect","displayName","_default","exports"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\n isValidElement,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { ContextMenuAlignment } from '../../types/contextMenu';\nimport { useIsTouch } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\n\nexport type ContextMenuCoordinates = {\n x: number;\n y: number;\n};\n\nexport type ContextMenuItem = {\n icons: string[] | ReactNode;\n key: string;\n onClick: (event?: MouseEvent<HTMLDivElement>) => Promise<void> | void;\n isSelected?: boolean;\n text: string;\n shouldShowSpacer?: boolean;\n};\n\nexport interface ContextMenuRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\ntype ContextMenuProps = {\n /**\n * Optional custom alignment used instead of calculating it using the\n * alignment within the page. The available alignment can be taken from the\n * ContextMenuAlignment enum.\n */\n alignment?: ContextMenuAlignment;\n /**\n * The element over which the content of the `ContextMenu` should be displayed. The default is an ellipsis icon.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `ContextMenu` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * Optional own coordinates to be used instead of calculating the alignment\n * based on the alignment of the children.\n */\n coordinates?: ContextMenuCoordinates;\n /**\n * The headline of the contextmenu.\n */\n headline?: string;\n /**\n * The items that will be displayed in the content of the `ContextMenu`. Custom icon elements only works on desktop.\n */\n items: ContextMenuItem[];\n /**\n * Function to be executed when the content of the Context menu has been hidden.\n */\n onHide?: VoidFunction;\n /**\n * Function to be executed when the content of the Context menu has been shown.\n */\n onShow?: VoidFunction;\n /**\n * Whether the popup should be closed if its clicked.\n */\n shouldCloseOnPopupClick?: boolean;\n /**\n * Whether the arrow of the popup should be hidden.\n */\n shouldHidePopupArrow?: boolean;\n /**\n * Whether the last item should be separated.\n */\n shouldSeparateLastItem?: boolean;\n /**\n * Whether the hover effect should be shown.\n */\n shouldShowHoverEffect?: boolean;\n /**\n * The z-index of the popup.\n */\n zIndex?: number;\n};\n\ninterface SelectDialogResult {\n buttonType: number;\n result: number[];\n}\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n children = <Icon icons={['ts-ellipsis_v']} size={18} />,\n container,\n coordinates,\n shouldHidePopupArrow = false,\n items,\n headline,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n shouldSeparateLastItem = false,\n shouldShowHoverEffect = false,\n zIndex = 20,\n },\n ref,\n ) => {\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 [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = useIsTouch();\n\n useEffect(() => {\n if (contextMenuRef.current && !container) {\n const el = contextMenuRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner, .page-provider, .tapp, body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n buttons: [],\n list: items.map(({ icons, text, isSelected }, index) => ({\n name: text,\n id: index,\n isSelected,\n icon: isValidElement(icons) ? undefined : (icons as string)[0],\n })),\n }).open()) as SelectDialogResult;\n\n if (result && typeof result[0] === 'number') {\n void items[result[0]]?.onClick();\n }\n } else if (contextMenuRef.current) {\n if (!newContainer) {\n return;\n }\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n const { height, width, top, left } = newContainer.getBoundingClientRect();\n\n const zoomX = width / (newContainer as HTMLElement).offsetWidth;\n const zoomY = height / (newContainer as HTMLElement).offsetHeight;\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\n\n setInternalCoordinates({ x, y });\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [isTouch, items, newContainer]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow],\n );\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n shouldSeparateLastItem={shouldSeparateLastItem}\n zIndex={zIndex}\n headline={headline}\n shouldHidePopupArrow={shouldHidePopupArrow}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n />\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n zIndex,\n shouldHidePopupArrow,\n headline,\n shouldSeparateLastItem,\n ]);\n\n return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -62,7 +62,7 @@ const ContextMenuContent = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
62
62
|
void onClick(event);
|
|
63
63
|
},
|
|
64
64
|
$shouldHidePopupArrow: shouldHidePopupArrow
|
|
65
|
-
}, /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
65
|
+
}, /*#__PURE__*/(0, _react.isValidElement)(icons) ? icons : /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
66
66
|
icons: icons
|
|
67
67
|
})), /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemText, null, text)), shouldShowSpacer && /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemSpacer, null));
|
|
68
68
|
if (shouldSeparateLastItem && index + 1 === items.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuContent.js","names":["_react","_interopRequireWildcard","require","_contextMenu","_Icon","_interopRequireDefault","_ContextMenuContent","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenuContent","React","forwardRef","alignment","coordinates","items","zIndex","shouldHidePopupArrow","headline","shouldSeparateLastItem","ref","isBottomLeftAlignment","ContextMenuAlignment","BottomLeft","isTopLeftAlignment","TopLeft","isTopRightAlignment","TopRight","isTopCenterAlignment","TopCenter","isBottomCenterAlignment","BottomCenter","percentageOffsetX","useMemo","anchorOffsetX","percentageOffsetY","anchorOffsetY","exitAndInitialY","content","map","onClick","key","text","icons","shouldShowSpacer","index","item","createElement","StyledContextMenuContentItem","StyledContextMenuContentItemWrapper","event","preventDefault","stopPropagation","$shouldHidePopupArrow","StyledContextMenuContentItemIconWrapper","StyledContextMenuContentItemText","StyledContextMenuContentItemSpacer","length","Fragment","StyledContextMenuContentItemBorder","StyledMotionContextMenuContent","animate","opacity","y","exit","initial","$position","$zIndex","style","left","x","top","transition","ease","transformTemplate","StyledContextMenuContentHeadline","displayName","_default","exports"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { ContextMenuAlignment } from '../../../types/contextMenu';\nimport Icon from '../../icon/Icon';\nimport type { ContextMenuCoordinates, ContextMenuItem } from '../ContextMenu';\nimport {\n StyledContextMenuContentHeadline,\n StyledContextMenuContentItem,\n StyledContextMenuContentItemBorder,\n StyledContextMenuContentItemIconWrapper,\n StyledContextMenuContentItemSpacer,\n StyledContextMenuContentItemText,\n StyledContextMenuContentItemWrapper,\n StyledMotionContextMenuContent,\n} from './ContextMenuContent.styles';\n\ntype ContextMenuContentProps = {\n alignment: ContextMenuAlignment;\n coordinates: ContextMenuCoordinates;\n items: ContextMenuItem[];\n shouldHidePopupArrow: boolean;\n headline?: string;\n zIndex: number;\n shouldSeparateLastItem: boolean;\n};\n\nconst ContextMenuContent = React.forwardRef<HTMLDivElement, ContextMenuContentProps>(\n (\n {\n alignment,\n coordinates,\n items,\n zIndex,\n shouldHidePopupArrow,\n headline,\n shouldSeparateLastItem,\n },\n ref,\n ) => {\n const isBottomLeftAlignment = alignment === ContextMenuAlignment.BottomLeft;\n const isTopLeftAlignment = alignment === ContextMenuAlignment.TopLeft;\n const isTopRightAlignment = alignment === ContextMenuAlignment.TopRight;\n const isTopCenterAlignment = alignment === ContextMenuAlignment.TopCenter;\n const isBottomCenterAlignment = alignment === ContextMenuAlignment.BottomCenter;\n\n const percentageOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return -100;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return -50;\n }\n\n return 0;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const anchorOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return 15;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return 0;\n }\n\n return -15;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const percentageOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -100 : 0;\n\n const anchorOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -21 : 21;\n\n const exitAndInitialY = isTopLeftAlignment || isTopRightAlignment ? -16 : 16;\n\n const content = useMemo(\n () =>\n items.map(({ onClick, key, text, icons, shouldShowSpacer }, index) => {\n const item = (\n <StyledContextMenuContentItem key={`context-menu-item-${key}`}>\n <StyledContextMenuContentItemWrapper\n key={key}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void onClick(event);\n }}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n >\n <StyledContextMenuContentItemIconWrapper>\n <Icon icons={icons} />\n </StyledContextMenuContentItemIconWrapper>\n <StyledContextMenuContentItemText>\n {text}\n </StyledContextMenuContentItemText>\n </StyledContextMenuContentItemWrapper>\n {shouldShowSpacer && <StyledContextMenuContentItemSpacer />}\n </StyledContextMenuContentItem>\n );\n\n if (shouldSeparateLastItem && index + 1 === items.length) {\n return (\n <React.Fragment key={`context-menu-item-${key}`}>\n <StyledContextMenuContentItemBorder />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n }),\n [items, shouldHidePopupArrow, shouldSeparateLastItem],\n );\n\n return (\n <StyledMotionContextMenuContent\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n $position={alignment}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $zIndex={zIndex}\n ref={ref}\n style={{ left: coordinates.x, top: coordinates.y }}\n transition={{ ease: 'anticipate' }}\n transformTemplate={({ y = '0px' }) => `\n translateX(${percentageOffsetX}%)\n translateY(${percentageOffsetY}%)\n translateX(${anchorOffsetX}px)\n translateY(${anchorOffsetY}px)\n translateY(${y})\n `}\n >\n {headline && (\n <StyledContextMenuContentHeadline>{headline}</StyledContextMenuContentHeadline>\n )}\n {content}\n </StyledMotionContextMenuContent>\n );\n },\n);\n\nContextMenuContent.displayName = 'ContextMenuContent';\n\nexport default ContextMenuContent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContextMenuContent.js","names":["_react","_interopRequireWildcard","require","_contextMenu","_Icon","_interopRequireDefault","_ContextMenuContent","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenuContent","React","forwardRef","alignment","coordinates","items","zIndex","shouldHidePopupArrow","headline","shouldSeparateLastItem","ref","isBottomLeftAlignment","ContextMenuAlignment","BottomLeft","isTopLeftAlignment","TopLeft","isTopRightAlignment","TopRight","isTopCenterAlignment","TopCenter","isBottomCenterAlignment","BottomCenter","percentageOffsetX","useMemo","anchorOffsetX","percentageOffsetY","anchorOffsetY","exitAndInitialY","content","map","onClick","key","text","icons","shouldShowSpacer","index","item","createElement","StyledContextMenuContentItem","StyledContextMenuContentItemWrapper","event","preventDefault","stopPropagation","$shouldHidePopupArrow","isValidElement","StyledContextMenuContentItemIconWrapper","StyledContextMenuContentItemText","StyledContextMenuContentItemSpacer","length","Fragment","StyledContextMenuContentItemBorder","StyledMotionContextMenuContent","animate","opacity","y","exit","initial","$position","$zIndex","style","left","x","top","transition","ease","transformTemplate","StyledContextMenuContentHeadline","displayName","_default","exports"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.tsx"],"sourcesContent":["import React, { isValidElement, useMemo } from 'react';\nimport { ContextMenuAlignment } from '../../../types/contextMenu';\nimport Icon from '../../icon/Icon';\nimport type { ContextMenuCoordinates, ContextMenuItem } from '../ContextMenu';\nimport {\n StyledContextMenuContentHeadline,\n StyledContextMenuContentItem,\n StyledContextMenuContentItemBorder,\n StyledContextMenuContentItemIconWrapper,\n StyledContextMenuContentItemSpacer,\n StyledContextMenuContentItemText,\n StyledContextMenuContentItemWrapper,\n StyledMotionContextMenuContent,\n} from './ContextMenuContent.styles';\n\ntype ContextMenuContentProps = {\n alignment: ContextMenuAlignment;\n coordinates: ContextMenuCoordinates;\n items: ContextMenuItem[];\n shouldHidePopupArrow: boolean;\n headline?: string;\n zIndex: number;\n shouldSeparateLastItem: boolean;\n};\n\nconst ContextMenuContent = React.forwardRef<HTMLDivElement, ContextMenuContentProps>(\n (\n {\n alignment,\n coordinates,\n items,\n zIndex,\n shouldHidePopupArrow,\n headline,\n shouldSeparateLastItem,\n },\n ref,\n ) => {\n const isBottomLeftAlignment = alignment === ContextMenuAlignment.BottomLeft;\n const isTopLeftAlignment = alignment === ContextMenuAlignment.TopLeft;\n const isTopRightAlignment = alignment === ContextMenuAlignment.TopRight;\n const isTopCenterAlignment = alignment === ContextMenuAlignment.TopCenter;\n const isBottomCenterAlignment = alignment === ContextMenuAlignment.BottomCenter;\n\n const percentageOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return -100;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return -50;\n }\n\n return 0;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const anchorOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return 15;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return 0;\n }\n\n return -15;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const percentageOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -100 : 0;\n\n const anchorOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -21 : 21;\n\n const exitAndInitialY = isTopLeftAlignment || isTopRightAlignment ? -16 : 16;\n\n const content = useMemo(\n () =>\n items.map(({ onClick, key, text, icons, shouldShowSpacer }, index) => {\n const item = (\n <StyledContextMenuContentItem key={`context-menu-item-${key}`}>\n <StyledContextMenuContentItemWrapper\n key={key}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void onClick(event);\n }}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n >\n {isValidElement(icons) ? (\n icons\n ) : (\n <StyledContextMenuContentItemIconWrapper>\n <Icon icons={icons as string[]} />\n </StyledContextMenuContentItemIconWrapper>\n )}\n <StyledContextMenuContentItemText>\n {text}\n </StyledContextMenuContentItemText>\n </StyledContextMenuContentItemWrapper>\n {shouldShowSpacer && <StyledContextMenuContentItemSpacer />}\n </StyledContextMenuContentItem>\n );\n\n if (shouldSeparateLastItem && index + 1 === items.length) {\n return (\n <React.Fragment key={`context-menu-item-${key}`}>\n <StyledContextMenuContentItemBorder />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n }),\n [items, shouldHidePopupArrow, shouldSeparateLastItem],\n );\n\n return (\n <StyledMotionContextMenuContent\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n $position={alignment}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $zIndex={zIndex}\n ref={ref}\n style={{ left: coordinates.x, top: coordinates.y }}\n transition={{ ease: 'anticipate' }}\n transformTemplate={({ y = '0px' }) => `\n translateX(${percentageOffsetX}%)\n translateY(${percentageOffsetY}%)\n translateX(${anchorOffsetX}px)\n translateY(${anchorOffsetY}px)\n translateY(${y})\n `}\n >\n {headline && (\n <StyledContextMenuContentHeadline>{headline}</StyledContextMenuContentHeadline>\n )}\n {content}\n </StyledMotionContextMenuContent>\n );\n },\n);\n\nContextMenuContent.displayName = 'ContextMenuContent';\n\nexport default ContextMenuContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,6 +19,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
19
19
|
headline,
|
|
20
20
|
searchConfig,
|
|
21
21
|
sortConfig,
|
|
22
|
+
shouldShowRoundedHoverEffect = false,
|
|
22
23
|
filterButtonConfig,
|
|
23
24
|
checkboxConfig,
|
|
24
25
|
onActiveChange
|
|
@@ -116,11 +117,12 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
116
117
|
const iconElement = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_Filter.StyledFilterIcon, {
|
|
117
118
|
onClick: handleIconClick,
|
|
118
119
|
$isOpen: isOpen,
|
|
119
|
-
ref: iconRef
|
|
120
|
+
ref: iconRef,
|
|
121
|
+
$shouldShowRoundedHoverEffect: shouldShowRoundedHoverEffect
|
|
120
122
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
121
123
|
icons: icons,
|
|
122
124
|
size: 18
|
|
123
|
-
})), [handleIconClick, icons, isOpen]);
|
|
125
|
+
})), [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect]);
|
|
124
126
|
const backgroundElement = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_Filter.StyledMotionFilterBackground, {
|
|
125
127
|
$top: backgroundCoordinates.top,
|
|
126
128
|
$left: backgroundCoordinates.left,
|
|
@@ -184,7 +186,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
184
186
|
filterButtonConfig: filterButtonConfig,
|
|
185
187
|
sortConfig: sortConfig,
|
|
186
188
|
checkboxConfig: checkboxConfig
|
|
187
|
-
})))), [
|
|
189
|
+
})))), [headline, isSearchActive, type, iconElement, backgroundDistance, backgroundElement, searchConfig, sortConfig, sortItems, checkboxConfig, isOpen, filterButtonConfig]);
|
|
188
190
|
});
|
|
189
191
|
Filter.displayName = 'Filter';
|
|
190
192
|
var _default = exports.default = Filter;
|