@chayns-components/core 5.0.0-beta.1055 → 5.0.0-beta.1058
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 +2 -6
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/file-input/FileInput.js +1 -9
- package/lib/cjs/components/file-input/FileInput.js.map +1 -1
- package/lib/cjs/components/popup/Popup.js +4 -1
- package/lib/cjs/components/popup/Popup.js.map +1 -1
- package/lib/cjs/components/popup/Popup.styles.js +6 -0
- package/lib/cjs/components/popup/Popup.styles.js.map +1 -1
- package/lib/cjs/components/tooltip/Tooltip.js +12 -6
- package/lib/cjs/components/tooltip/Tooltip.js.map +1 -1
- package/lib/cjs/components/tooltip/Tooltip.styles.js +13 -6
- package/lib/cjs/components/tooltip/Tooltip.styles.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.js +2 -6
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/file-input/FileInput.js +1 -9
- package/lib/esm/components/file-input/FileInput.js.map +1 -1
- package/lib/esm/components/popup/Popup.js +4 -1
- package/lib/esm/components/popup/Popup.js.map +1 -1
- package/lib/esm/components/popup/Popup.styles.js +12 -3
- package/lib/esm/components/popup/Popup.styles.js.map +1 -1
- package/lib/esm/components/tooltip/Tooltip.js +12 -6
- package/lib/esm/components/tooltip/Tooltip.js.map +1 -1
- package/lib/esm/components/tooltip/Tooltip.styles.js +19 -6
- package/lib/esm/components/tooltip/Tooltip.styles.js.map +1 -1
- package/lib/types/components/popup/Popup.d.ts +4 -0
- package/lib/types/components/popup/Popup.styles.d.ts +1 -0
- package/lib/types/components/tooltip/Tooltip.d.ts +4 -0
- package/lib/types/components/tooltip/Tooltip.styles.d.ts +1 -0
- package/package.json +2 -2
|
@@ -96,12 +96,8 @@ const ComboBox = ({
|
|
|
96
96
|
top: comboBoxTop,
|
|
97
97
|
height
|
|
98
98
|
} = styledComboBoxElementRef.current.getBoundingClientRect();
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
top: containerTop
|
|
102
|
-
} = newContainer.getBoundingClientRect();
|
|
103
|
-
const x = comboBoxLeft - containerLeft + newContainer.scrollLeft;
|
|
104
|
-
const y = comboBoxTop - containerTop + newContainer.scrollTop;
|
|
99
|
+
const x = comboBoxLeft + newContainer.scrollLeft;
|
|
100
|
+
const y = comboBoxTop + newContainer.scrollTop;
|
|
105
101
|
setInternalCoordinates({
|
|
106
102
|
x,
|
|
107
103
|
y: [_comboBox.ComboBoxDirection.TOP, _comboBox.ComboBoxDirection.TOP_LEFT, _comboBox.ComboBoxDirection.TOP_RIGHT].includes(direction) ? y : y + height
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_comboBox","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","bodyWidth","direction","ComboBoxDirection","BOTTOM","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","isInputFocused","useRef","styledComboBoxElementRef","contentRef","functions","useFunctions","values","useValues","browser","useDevice","isTouch","getIsTouch","areaProvider","useContext","AreaContext","shouldChangeColor","useMemo","useEffect","current","el","element","closest","Element","handleInputFocus","useCallback","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","containerLeft","containerTop","scrollLeft","scrollTop","TOP","TOP_LEFT","TOP_RIGHT","includes","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","getMaxHeightInPixels","body","handleKeyDown","key","_contentRef$current","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","id","newSelectedItem","some","list","find","value","String","replace","_styledComboBoxElemen","allItems","flatMap","hasImage","item","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","calculateContentWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","BOTTOM_LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","comboBoxGroups","map","createElement","groupName","StyledComboBoxTopic","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","createPortal","AnimatePresence","initial","StyledMotionComboBoxBody","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","StyledComboBox","$shouldUseFullWidth","StyledComboBoxHeader","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\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 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?: ComboBoxDirection;\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?: CSSProperties['maxHeight'];\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 * 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 * 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\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n lists,\n maxHeight = '280px',\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 inputValue,\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 const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\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 isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.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 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 handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n const { left: containerLeft, top: containerTop } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - containerLeft + newContainer.scrollLeft;\n const y = comboBoxTop - containerTop + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction)\n ? y\n : y + height,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n 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 currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\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) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\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\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 = 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 ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [ComboBoxDirection.BOTTOM_LEFT, ComboBoxDirection.TOP_LEFT].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\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 const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction)\n ) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\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 $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 <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\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 portal,\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","_react2","_interopRequireWildcard","_reactDom","_comboBox","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","bodyWidth","direction","ComboBoxDirection","BOTTOM","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","isInputFocused","useRef","styledComboBoxElementRef","contentRef","functions","useFunctions","values","useValues","browser","useDevice","isTouch","getIsTouch","areaProvider","useContext","AreaContext","shouldChangeColor","useMemo","useEffect","current","el","element","closest","Element","handleInputFocus","useCallback","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","scrollLeft","scrollTop","TOP","TOP_LEFT","TOP_RIGHT","includes","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","getMaxHeightInPixels","body","handleKeyDown","key","_contentRef$current","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","id","newSelectedItem","some","list","find","value","String","replace","_styledComboBoxElemen","allItems","flatMap","hasImage","item","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","calculateContentWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","BOTTOM_LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","comboBoxGroups","map","createElement","groupName","StyledComboBoxTopic","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","createPortal","AnimatePresence","initial","StyledMotionComboBoxBody","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","StyledComboBox","$shouldUseFullWidth","StyledComboBoxHeader","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\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 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?: ComboBoxDirection;\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?: CSSProperties['maxHeight'];\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 * 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 * 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\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n lists,\n maxHeight = '280px',\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 inputValue,\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 const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\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 isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.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 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 handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n\n const x = comboBoxLeft + newContainer.scrollLeft;\n const y = comboBoxTop + newContainer.scrollTop;\n\n setInternalCoordinates({\n x,\n y: [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction)\n ? y\n : y + height,\n });\n\n setIsAnimating(true);\n }\n }, [newContainer, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n 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 currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\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) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\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\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 = 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 ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [ComboBoxDirection.BOTTOM_LEFT, ComboBoxDirection.TOP_LEFT].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\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 const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction)\n ) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\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 $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 <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\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 portal,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -139,15 +139,7 @@ const FileInput = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
|
139
139
|
result
|
|
140
140
|
} = await (0, _chaynsApi.createDialog)({
|
|
141
141
|
dialogInput: {
|
|
142
|
-
upload: true
|
|
143
|
-
buttons: [{
|
|
144
|
-
text: 'hello',
|
|
145
|
-
buttonType: 1
|
|
146
|
-
}, {
|
|
147
|
-
text: 'can',
|
|
148
|
-
buttonType: -1
|
|
149
|
-
}],
|
|
150
|
-
initialView: 'pixabay'
|
|
142
|
+
upload: true
|
|
151
143
|
},
|
|
152
144
|
type: _chaynsApi.DialogType.MODULE,
|
|
153
145
|
system: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileInput.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_file","_fileDialog","_Icon","_interopRequireDefault","_List","_FileListItem","_FileInput","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FileInput","forwardRef","fileSelectionIcons","imageSelectIcons","fileTypes","onMaxFilesReached","maxFiles","onRemove","files","isDisabled","maxFileSizeInMB","onAdd","fileSelectionPlaceholder","imageSelectPlaceholder","ref","internalFiles","setInternalFiles","useState","internalImages","setInternalImages","handleInputClear","useImperativeHandle","clear","handleAddImages","useCallback","images","newImages","forEach","image","filterDuplicateFileUrls","newFile","push","tmp","slice","length","prevState","handleAddFiles","newFiles","newFileItems","file","isValidFileType","types","filterDuplicateFile","handleDeleteFile","fileName","fileToDelete","filteredFiles","filter","name","filteredImages","url","internalIsDisabled","useMemo","handleImageSelectionClick","buttonType","result","createDialog","dialogInput","upload","buttons","text","initialView","type","DialogType","MODULE","system","scope","module","open","handleFileSelectionClick","selectFiles","multiple","handleDrop","preventDefault","draggedFiles","Array","from","dataTransfer","content","combinedFiles","items","map","createElement","StyledMotionFileInputList","animate","height","opacity","exit","key","transition","duration","fileType","undefined","fileSize","size","uploadedFiles","cutFiles","splice","id","StyledFileInput","StyledFileInputWrapper","$isDisabled","StyledFileInputContainer","onClick","onDragOver","onDrop","icons","StyledFileInputText","$isImageSelection","AnimatePresence","initial","StyledUploadedFilesList","$shouldShowBorder","displayName","_default","exports"],"sources":["../../../../src/components/file-input/FileInput.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n DragEvent,\n forwardRef,\n ReactElement,\n useCallback,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport type { FileInputFileItem, ImageDialogResult } from '../../types/fileInput';\nimport { filterDuplicateFile, filterDuplicateFileUrls, isValidFileType } from '../../utils/file';\nimport { selectFiles } from '../../utils/fileDialog';\nimport Icon from '../icon/Icon';\nimport List from '../list/List';\nimport FileListItem from './file-list/FileListItem';\nimport {\n StyledFileInput,\n StyledFileInputContainer,\n StyledFileInputText,\n StyledFileInputWrapper,\n StyledMotionFileInputList,\n StyledUploadedFilesList,\n} from './FileInput.styles';\n\nexport type FileInputProps = {\n /**\n * Already uploaded files to display.\n */\n files?: FileInputFileItem[];\n /**\n * An array of icons that should be displayed inside the FileInput\n */\n fileSelectionIcons?: string[];\n /**\n * The text that should be displayed inside the FileInput.\n */\n fileSelectionPlaceholder?: string;\n /**\n * The filetypes that could be selected. Example for multiple types: 'image/*, video/*'.\n */\n fileTypes?: string;\n /**\n * The icon of the image selection.\n */\n imageSelectIcons?: string[];\n /**\n * If set, pictures can be select via Pixabay.\n */\n imageSelectPlaceholder?: string;\n /**\n * Whether the FileInput is disabled.\n */\n isDisabled?: boolean;\n /**\n * The maximum amount of Files that can be uploaded.\n */\n maxFiles?: number;\n /**\n * The maximum size of a file in MB.\n */\n maxFileSizeInMB?: number;\n /**\n * A function to be executed when files are added.\n */\n onAdd?: (files: File[] | string[]) => void;\n /**\n * Function to be executed when the maximum amount of Files are reached.\n */\n onMaxFilesReached?: () => void;\n /**\n * A function to be executed when a file is removed.\n */\n onRemove?: (file: File | FileInputFileItem | string) => void;\n};\n\ntype DialogInput = {\n upload: boolean;\n buttons: {\n text: string;\n buttonType: number;\n }[];\n initialView: string;\n};\n\nexport type FileInputRef = {\n clear: () => void;\n};\n\nconst FileInput = forwardRef<FileInputRef, FileInputProps>(\n (\n {\n fileSelectionIcons = ['fa fa-upload'],\n imageSelectIcons = ['ts-image'],\n fileTypes,\n onMaxFilesReached,\n maxFiles,\n onRemove,\n files,\n isDisabled,\n maxFileSizeInMB,\n onAdd,\n fileSelectionPlaceholder = 'Dateien hochladen',\n imageSelectPlaceholder,\n },\n ref,\n ) => {\n const [internalFiles, setInternalFiles] = useState<File[]>([]);\n const [internalImages, setInternalImages] = useState<string[]>([]);\n\n const handleInputClear = () => {\n setInternalFiles([]);\n setInternalImages([]);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n clear: handleInputClear,\n }),\n [],\n );\n\n const handleAddImages = useCallback(\n (images: string[]) => {\n const newImages: string[] = [];\n\n images.forEach((image) => {\n if (!filterDuplicateFileUrls({ files: internalImages, newFile: image })) {\n newImages.push(image);\n }\n });\n\n let tmp = newImages;\n\n if (maxFiles) {\n tmp = newImages.slice(\n 0,\n maxFiles -\n (internalFiles.length + internalImages.length + (files?.length ?? 0)),\n );\n }\n\n if (tmp.length > 0 && typeof onAdd === 'function') {\n onAdd(tmp);\n }\n\n setInternalImages((prevState) => [...prevState, ...tmp]);\n },\n [files?.length, internalFiles.length, internalImages, maxFiles, onAdd],\n );\n\n const handleAddFiles = useCallback(\n (newFiles: File[]) => {\n const newFileItems: File[] = [];\n\n newFiles.forEach((file) => {\n if (fileTypes && !isValidFileType({ file, types: fileTypes })) {\n return;\n }\n\n if (file && !filterDuplicateFile({ files: internalFiles, newFile: file })) {\n newFileItems.push(file);\n }\n });\n\n let tmp = newFileItems;\n\n if (maxFiles) {\n tmp = newFileItems.slice(\n 0,\n maxFiles -\n (internalFiles.length + internalImages.length + (files?.length ?? 0)),\n );\n }\n\n if (tmp.length > 0 && typeof onAdd === 'function') {\n onAdd(tmp);\n }\n\n setInternalFiles((prevState) => [...prevState, ...tmp]);\n },\n [fileTypes, files?.length, internalFiles, internalImages.length, maxFiles, onAdd],\n );\n\n const handleDeleteFile = useCallback(\n (fileName?: string) => {\n let fileToDelete: File | FileInputFileItem | string | undefined;\n\n const filteredFiles = internalFiles.filter((file) => {\n const { name } = file;\n\n if (name === fileName) {\n fileToDelete = file;\n }\n\n return name !== fileName;\n });\n\n setInternalFiles(filteredFiles);\n\n if (!fileToDelete) {\n const filteredImages = internalImages.filter((image) => {\n if (image === fileName) {\n fileToDelete = image;\n }\n\n return image !== fileName;\n });\n\n setInternalImages(filteredImages);\n }\n\n if (!fileToDelete) {\n files?.forEach((file) => {\n if (file.url === fileName || file.name === fileName) {\n fileToDelete = file;\n }\n });\n }\n\n if (!fileToDelete || typeof onRemove !== 'function') {\n return;\n }\n\n onRemove(fileToDelete);\n },\n [files, internalFiles, internalImages, onRemove],\n );\n\n const internalIsDisabled = useMemo(() => {\n if (isDisabled) {\n return true;\n }\n\n if (maxFiles) {\n if (internalFiles.length + internalImages.length >= maxFiles) {\n if (typeof onMaxFilesReached === 'function') {\n onMaxFilesReached();\n }\n\n return true;\n }\n }\n\n return false;\n }, [internalFiles.length, internalImages.length, isDisabled, maxFiles, onMaxFilesReached]);\n\n const handleImageSelectionClick = useCallback(async () => {\n if (internalIsDisabled) {\n return;\n }\n\n const { buttonType, result } = (await createDialog<DialogInput>({\n dialogInput: {\n upload: true,\n buttons: [\n { text: 'hello', buttonType: 1 },\n { text: 'can', buttonType: -1 },\n ],\n initialView: 'pixabay',\n },\n type: DialogType.MODULE,\n system: {\n url: 'https://tapp.chayns-static.space/api/dialog-image-editor/v1/remoteEntry.js',\n scope: 'dialog_image_editor',\n module: './ImageEditorEntry',\n },\n buttons: [],\n }).open()) as ImageDialogResult;\n\n if (buttonType === 1 && result?.url) {\n handleAddImages([result.url]);\n }\n }, [handleAddImages, internalIsDisabled]);\n\n const handleFileSelectionClick = useCallback(async () => {\n if (internalIsDisabled) {\n return;\n }\n\n const newFiles = await selectFiles({\n multiple: true,\n type: fileTypes,\n maxFileSizeInMB,\n });\n\n handleAddFiles(newFiles);\n }, [fileTypes, handleAddFiles, internalIsDisabled, maxFileSizeInMB]);\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n const draggedFiles = Array.from(e.dataTransfer.files);\n\n handleAddFiles(draggedFiles);\n },\n [handleAddFiles],\n );\n\n const content = useMemo(() => {\n const combinedFiles = [...internalImages, ...internalFiles];\n\n const items: ReactElement[] = combinedFiles.map((file) => (\n <StyledMotionFileInputList\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n key={typeof file === 'string' ? file : file.name}\n transition={{ duration: 0.25, type: 'tween' }}\n >\n <FileListItem\n fileType={typeof file !== 'string' ? file.type : undefined}\n fileName={typeof file !== 'string' ? file.name : undefined}\n fileSize={typeof file !== 'string' ? file.size : undefined}\n url={typeof file === 'string' ? file : undefined}\n onRemove={handleDeleteFile}\n />\n </StyledMotionFileInputList>\n ));\n\n return items;\n }, [handleDeleteFile, internalFiles, internalImages]);\n\n const uploadedFiles = useMemo(() => {\n const items: ReactElement[] = [];\n\n const cutFiles = maxFiles ? files?.splice(0, maxFiles) : files;\n\n cutFiles?.forEach(({ url, id, name }) => {\n items.push(\n <StyledMotionFileInputList\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n key={id}\n transition={{ duration: 0.25, type: 'tween' }}\n >\n <FileListItem url={url} onRemove={handleDeleteFile} fileName={name} />\n </StyledMotionFileInputList>,\n );\n });\n\n return items;\n }, [files, handleDeleteFile, maxFiles]);\n\n return useMemo(\n () => (\n <StyledFileInput>\n <StyledFileInputWrapper $isDisabled={internalIsDisabled}>\n <StyledFileInputContainer\n onClick={() => void handleFileSelectionClick()}\n onDragOver={(e: DragEvent<HTMLDivElement>) => e.preventDefault()}\n onDrop={(e: DragEvent<HTMLDivElement>) => void handleDrop(e)}\n >\n <Icon icons={fileSelectionIcons} />\n <StyledFileInputText>{fileSelectionPlaceholder}</StyledFileInputText>\n </StyledFileInputContainer>\n {imageSelectPlaceholder && (\n <StyledFileInputContainer\n $isImageSelection\n onClick={() => void handleImageSelectionClick()}\n >\n <Icon icons={imageSelectIcons} />\n <StyledFileInputText>{imageSelectPlaceholder}</StyledFileInputText>\n </StyledFileInputContainer>\n )}\n </StyledFileInputWrapper>\n <List>\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </List>\n {uploadedFiles.length > 0 && (\n <StyledUploadedFilesList $shouldShowBorder={content.length > 0}>\n <List>\n <AnimatePresence initial={false}>{uploadedFiles}</AnimatePresence>\n </List>\n </StyledUploadedFilesList>\n )}\n </StyledFileInput>\n ),\n [\n internalIsDisabled,\n fileSelectionIcons,\n fileSelectionPlaceholder,\n imageSelectPlaceholder,\n imageSelectIcons,\n content,\n uploadedFiles,\n handleFileSelectionClick,\n handleDrop,\n handleImageSelectionClick,\n ],\n );\n },\n);\n\nFileInput.displayName = 'FileInput';\n\nexport default FileInput;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,uBAAA,CAAAH,OAAA;AAUA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,KAAA,GAAAD,sBAAA,CAAAP,OAAA;AACA,IAAAS,aAAA,GAAAF,sBAAA,CAAAP,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AAO4B,SAAAO,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAkE5B,MAAMW,SAAS,gBAAG,IAAAC,kBAAU,EACxB,CACI;EACIC,kBAAkB,GAAG,CAAC,cAAc,CAAC;EACrCC,gBAAgB,GAAG,CAAC,UAAU,CAAC;EAC/BC,SAAS;EACTC,iBAAiB;EACjBC,QAAQ;EACRC,QAAQ;EACRC,KAAK;EACLC,UAAU;EACVC,eAAe;EACfC,KAAK;EACLC,wBAAwB,GAAG,mBAAmB;EAC9CC;AACJ,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,gBAAQ,EAAS,EAAE,CAAC;EAC9D,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAF,gBAAQ,EAAW,EAAE,CAAC;EAElE,MAAMG,gBAAgB,GAAGA,CAAA,KAAM;IAC3BJ,gBAAgB,CAAC,EAAE,CAAC;IACpBG,iBAAiB,CAAC,EAAE,CAAC;EACzB,CAAC;EAED,IAAAE,2BAAmB,EACfP,GAAG,EACH,OAAO;IACHQ,KAAK,EAAEF;EACX,CAAC,CAAC,EACF,EACJ,CAAC;EAED,MAAMG,eAAe,GAAG,IAAAC,mBAAW,EAC9BC,MAAgB,IAAK;IAClB,MAAMC,SAAmB,GAAG,EAAE;IAE9BD,MAAM,CAACE,OAAO,CAAEC,KAAK,IAAK;MACtB,IAAI,CAAC,IAAAC,6BAAuB,EAAC;QAAErB,KAAK,EAAEU,cAAc;QAAEY,OAAO,EAAEF;MAAM,CAAC,CAAC,EAAE;QACrEF,SAAS,CAACK,IAAI,CAACH,KAAK,CAAC;MACzB;IACJ,CAAC,CAAC;IAEF,IAAII,GAAG,GAAGN,SAAS;IAEnB,IAAIpB,QAAQ,EAAE;MACV0B,GAAG,GAAGN,SAAS,CAACO,KAAK,CACjB,CAAC,EACD3B,QAAQ,IACHS,aAAa,CAACmB,MAAM,GAAGhB,cAAc,CAACgB,MAAM,IAAI,CAAA1B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE0B,MAAM,KAAI,CAAC,CAAC,CAC5E,CAAC;IACL;IAEA,IAAIF,GAAG,CAACE,MAAM,GAAG,CAAC,IAAI,OAAOvB,KAAK,KAAK,UAAU,EAAE;MAC/CA,KAAK,CAACqB,GAAG,CAAC;IACd;IAEAb,iBAAiB,CAAEgB,SAAS,IAAK,CAAC,GAAGA,SAAS,EAAE,GAAGH,GAAG,CAAC,CAAC;EAC5D,CAAC,EACD,CAACxB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE0B,MAAM,EAAEnB,aAAa,CAACmB,MAAM,EAAEhB,cAAc,EAAEZ,QAAQ,EAAEK,KAAK,CACzE,CAAC;EAED,MAAMyB,cAAc,GAAG,IAAAZ,mBAAW,EAC7Ba,QAAgB,IAAK;IAClB,MAAMC,YAAoB,GAAG,EAAE;IAE/BD,QAAQ,CAACV,OAAO,CAAEY,IAAI,IAAK;MACvB,IAAInC,SAAS,IAAI,CAAC,IAAAoC,qBAAe,EAAC;QAAED,IAAI;QAAEE,KAAK,EAAErC;MAAU,CAAC,CAAC,EAAE;QAC3D;MACJ;MAEA,IAAImC,IAAI,IAAI,CAAC,IAAAG,yBAAmB,EAAC;QAAElC,KAAK,EAAEO,aAAa;QAAEe,OAAO,EAAES;MAAK,CAAC,CAAC,EAAE;QACvED,YAAY,CAACP,IAAI,CAACQ,IAAI,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF,IAAIP,GAAG,GAAGM,YAAY;IAEtB,IAAIhC,QAAQ,EAAE;MACV0B,GAAG,GAAGM,YAAY,CAACL,KAAK,CACpB,CAAC,EACD3B,QAAQ,IACHS,aAAa,CAACmB,MAAM,GAAGhB,cAAc,CAACgB,MAAM,IAAI,CAAA1B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE0B,MAAM,KAAI,CAAC,CAAC,CAC5E,CAAC;IACL;IAEA,IAAIF,GAAG,CAACE,MAAM,GAAG,CAAC,IAAI,OAAOvB,KAAK,KAAK,UAAU,EAAE;MAC/CA,KAAK,CAACqB,GAAG,CAAC;IACd;IAEAhB,gBAAgB,CAAEmB,SAAS,IAAK,CAAC,GAAGA,SAAS,EAAE,GAAGH,GAAG,CAAC,CAAC;EAC3D,CAAC,EACD,CAAC5B,SAAS,EAAEI,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE0B,MAAM,EAAEnB,aAAa,EAAEG,cAAc,CAACgB,MAAM,EAAE5B,QAAQ,EAAEK,KAAK,CACpF,CAAC;EAED,MAAMgC,gBAAgB,GAAG,IAAAnB,mBAAW,EAC/BoB,QAAiB,IAAK;IACnB,IAAIC,YAA2D;IAE/D,MAAMC,aAAa,GAAG/B,aAAa,CAACgC,MAAM,CAAER,IAAI,IAAK;MACjD,MAAM;QAAES;MAAK,CAAC,GAAGT,IAAI;MAErB,IAAIS,IAAI,KAAKJ,QAAQ,EAAE;QACnBC,YAAY,GAAGN,IAAI;MACvB;MAEA,OAAOS,IAAI,KAAKJ,QAAQ;IAC5B,CAAC,CAAC;IAEF5B,gBAAgB,CAAC8B,aAAa,CAAC;IAE/B,IAAI,CAACD,YAAY,EAAE;MACf,MAAMI,cAAc,GAAG/B,cAAc,CAAC6B,MAAM,CAAEnB,KAAK,IAAK;QACpD,IAAIA,KAAK,KAAKgB,QAAQ,EAAE;UACpBC,YAAY,GAAGjB,KAAK;QACxB;QAEA,OAAOA,KAAK,KAAKgB,QAAQ;MAC7B,CAAC,CAAC;MAEFzB,iBAAiB,CAAC8B,cAAc,CAAC;IACrC;IAEA,IAAI,CAACJ,YAAY,EAAE;MACfrC,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEmB,OAAO,CAAEY,IAAI,IAAK;QACrB,IAAIA,IAAI,CAACW,GAAG,KAAKN,QAAQ,IAAIL,IAAI,CAACS,IAAI,KAAKJ,QAAQ,EAAE;UACjDC,YAAY,GAAGN,IAAI;QACvB;MACJ,CAAC,CAAC;IACN;IAEA,IAAI,CAACM,YAAY,IAAI,OAAOtC,QAAQ,KAAK,UAAU,EAAE;MACjD;IACJ;IAEAA,QAAQ,CAACsC,YAAY,CAAC;EAC1B,CAAC,EACD,CAACrC,KAAK,EAAEO,aAAa,EAAEG,cAAc,EAAEX,QAAQ,CACnD,CAAC;EAED,MAAM4C,kBAAkB,GAAG,IAAAC,eAAO,EAAC,MAAM;IACrC,IAAI3C,UAAU,EAAE;MACZ,OAAO,IAAI;IACf;IAEA,IAAIH,QAAQ,EAAE;MACV,IAAIS,aAAa,CAACmB,MAAM,GAAGhB,cAAc,CAACgB,MAAM,IAAI5B,QAAQ,EAAE;QAC1D,IAAI,OAAOD,iBAAiB,KAAK,UAAU,EAAE;UACzCA,iBAAiB,CAAC,CAAC;QACvB;QAEA,OAAO,IAAI;MACf;IACJ;IAEA,OAAO,KAAK;EAChB,CAAC,EAAE,CAACU,aAAa,CAACmB,MAAM,EAAEhB,cAAc,CAACgB,MAAM,EAAEzB,UAAU,EAAEH,QAAQ,EAAED,iBAAiB,CAAC,CAAC;EAE1F,MAAMgD,yBAAyB,GAAG,IAAA7B,mBAAW,EAAC,YAAY;IACtD,IAAI2B,kBAAkB,EAAE;MACpB;IACJ;IAEA,MAAM;MAAEG,UAAU;MAAEC;IAAO,CAAC,GAAI,MAAM,IAAAC,uBAAY,EAAc;MAC5DC,WAAW,EAAE;QACTC,MAAM,EAAE,IAAI;QACZC,OAAO,EAAE,CACL;UAAEC,IAAI,EAAE,OAAO;UAAEN,UAAU,EAAE;QAAE,CAAC,EAChC;UAAEM,IAAI,EAAE,KAAK;UAAEN,UAAU,EAAE,CAAC;QAAE,CAAC,CAClC;QACDO,WAAW,EAAE;MACjB,CAAC;MACDC,IAAI,EAAEC,qBAAU,CAACC,MAAM;MACvBC,MAAM,EAAE;QACJf,GAAG,EAAE,4EAA4E;QACjFgB,KAAK,EAAE,qBAAqB;QAC5BC,MAAM,EAAE;MACZ,CAAC;MACDR,OAAO,EAAE;IACb,CAAC,CAAC,CAACS,IAAI,CAAC,CAAuB;IAE/B,IAAId,UAAU,KAAK,CAAC,IAAIC,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEL,GAAG,EAAE;MACjC3B,eAAe,CAAC,CAACgC,MAAM,CAACL,GAAG,CAAC,CAAC;IACjC;EACJ,CAAC,EAAE,CAAC3B,eAAe,EAAE4B,kBAAkB,CAAC,CAAC;EAEzC,MAAMkB,wBAAwB,GAAG,IAAA7C,mBAAW,EAAC,YAAY;IACrD,IAAI2B,kBAAkB,EAAE;MACpB;IACJ;IAEA,MAAMd,QAAQ,GAAG,MAAM,IAAAiC,uBAAW,EAAC;MAC/BC,QAAQ,EAAE,IAAI;MACdT,IAAI,EAAE1D,SAAS;MACfM;IACJ,CAAC,CAAC;IAEF0B,cAAc,CAACC,QAAQ,CAAC;EAC5B,CAAC,EAAE,CAACjC,SAAS,EAAEgC,cAAc,EAAEe,kBAAkB,EAAEzC,eAAe,CAAC,CAAC;EAEpE,MAAM8D,UAAU,GAAG,IAAAhD,mBAAW,EACzB5C,CAA4B,IAAK;IAC9BA,CAAC,CAAC6F,cAAc,CAAC,CAAC;IAClB,MAAMC,YAAY,GAAGC,KAAK,CAACC,IAAI,CAAChG,CAAC,CAACiG,YAAY,CAACrE,KAAK,CAAC;IAErD4B,cAAc,CAACsC,YAAY,CAAC;EAChC,CAAC,EACD,CAACtC,cAAc,CACnB,CAAC;EAED,MAAM0C,OAAO,GAAG,IAAA1B,eAAO,EAAC,MAAM;IAC1B,MAAM2B,aAAa,GAAG,CAAC,GAAG7D,cAAc,EAAE,GAAGH,aAAa,CAAC;IAE3D,MAAMiE,KAAqB,GAAGD,aAAa,CAACE,GAAG,CAAE1C,IAAI,iBACjDpE,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAwG,yBAAyB;MACtBC,OAAO,EAAE;QAAEC,MAAM,EAAE,MAAM;QAAEC,OAAO,EAAE;MAAE,CAAE;MACxCC,IAAI,EAAE;QAAEF,MAAM,EAAE,CAAC;QAAEC,OAAO,EAAE;MAAE,CAAE;MAChCE,GAAG,EAAE,OAAOjD,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGA,IAAI,CAACS,IAAK;MACjDyC,UAAU,EAAE;QAAEC,QAAQ,EAAE,IAAI;QAAE5B,IAAI,EAAE;MAAQ;IAAE,gBAE9C3F,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACxG,aAAA,CAAAI,OAAY;MACT6G,QAAQ,EAAE,OAAOpD,IAAI,KAAK,QAAQ,GAAGA,IAAI,CAACuB,IAAI,GAAG8B,SAAU;MAC3DhD,QAAQ,EAAE,OAAOL,IAAI,KAAK,QAAQ,GAAGA,IAAI,CAACS,IAAI,GAAG4C,SAAU;MAC3DC,QAAQ,EAAE,OAAOtD,IAAI,KAAK,QAAQ,GAAGA,IAAI,CAACuD,IAAI,GAAGF,SAAU;MAC3D1C,GAAG,EAAE,OAAOX,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGqD,SAAU;MACjDrF,QAAQ,EAAEoC;IAAiB,CAC9B,CACsB,CAC9B,CAAC;IAEF,OAAOqC,KAAK;EAChB,CAAC,EAAE,CAACrC,gBAAgB,EAAE5B,aAAa,EAAEG,cAAc,CAAC,CAAC;EAErD,MAAM6E,aAAa,GAAG,IAAA3C,eAAO,EAAC,MAAM;IAChC,MAAM4B,KAAqB,GAAG,EAAE;IAEhC,MAAMgB,QAAQ,GAAG1F,QAAQ,GAAGE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEyF,MAAM,CAAC,CAAC,EAAE3F,QAAQ,CAAC,GAAGE,KAAK;IAE9DwF,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAErE,OAAO,CAAC,CAAC;MAAEuB,GAAG;MAAEgD,EAAE;MAAElD;IAAK,CAAC,KAAK;MACrCgC,KAAK,CAACjD,IAAI,cACN5D,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAwG,yBAAyB;QACtBC,OAAO,EAAE;UAAEC,MAAM,EAAE,MAAM;UAAEC,OAAO,EAAE;QAAE,CAAE;QACxCC,IAAI,EAAE;UAAEF,MAAM,EAAE,CAAC;UAAEC,OAAO,EAAE;QAAE,CAAE;QAChCE,GAAG,EAAEU,EAAG;QACRT,UAAU,EAAE;UAAEC,QAAQ,EAAE,IAAI;UAAE5B,IAAI,EAAE;QAAQ;MAAE,gBAE9C3F,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACxG,aAAA,CAAAI,OAAY;QAACoE,GAAG,EAAEA,GAAI;QAAC3C,QAAQ,EAAEoC,gBAAiB;QAACC,QAAQ,EAAEI;MAAK,CAAE,CAC9C,CAC/B,CAAC;IACL,CAAC,CAAC;IAEF,OAAOgC,KAAK;EAChB,CAAC,EAAE,CAACxE,KAAK,EAAEmC,gBAAgB,EAAErC,QAAQ,CAAC,CAAC;EAEvC,OAAO,IAAA8C,eAAO,EACV,mBACIjF,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAwH,eAAe,qBACZhI,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAyH,sBAAsB;IAACC,WAAW,EAAElD;EAAmB,gBACpDhF,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAA2H,wBAAwB;IACrBC,OAAO,EAAEA,CAAA,KAAM,KAAKlC,wBAAwB,CAAC,CAAE;IAC/CmC,UAAU,EAAG5H,CAA4B,IAAKA,CAAC,CAAC6F,cAAc,CAAC,CAAE;IACjEgC,MAAM,EAAG7H,CAA4B,IAAK,KAAK4F,UAAU,CAAC5F,CAAC;EAAE,gBAE7DT,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAAC3G,KAAA,CAAAO,OAAI;IAAC4H,KAAK,EAAExG;EAAmB,CAAE,CAAC,eACnC/B,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAgI,mBAAmB,QAAE/F,wBAA8C,CAC9C,CAAC,EAC1BC,sBAAsB,iBACnB1C,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAA2H,wBAAwB;IACrBM,iBAAiB;IACjBL,OAAO,EAAEA,CAAA,KAAM,KAAKlD,yBAAyB,CAAC;EAAE,gBAEhDlF,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAAC3G,KAAA,CAAAO,OAAI;IAAC4H,KAAK,EAAEvG;EAAiB,CAAE,CAAC,eACjChC,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAgI,mBAAmB,QAAE9F,sBAA4C,CAC5C,CAEV,CAAC,eACzB1C,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACzG,KAAA,CAAAK,OAAI,qBACDX,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAAChH,MAAA,CAAA2I,eAAe;IAACC,OAAO,EAAE;EAAM,GAAEhC,OAAyB,CACzD,CAAC,EACNiB,aAAa,CAAC7D,MAAM,GAAG,CAAC,iBACrB/D,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACvG,UAAA,CAAAoI,uBAAuB;IAACC,iBAAiB,EAAElC,OAAO,CAAC5C,MAAM,GAAG;EAAE,gBAC3D/D,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAACzG,KAAA,CAAAK,OAAI,qBACDX,OAAA,CAAAW,OAAA,CAAAoG,aAAA,CAAChH,MAAA,CAAA2I,eAAe;IAACC,OAAO,EAAE;EAAM,GAAEf,aAA+B,CAC/D,CACe,CAEhB,CACpB,EACD,CACI5C,kBAAkB,EAClBjD,kBAAkB,EAClBU,wBAAwB,EACxBC,sBAAsB,EACtBV,gBAAgB,EAChB2E,OAAO,EACPiB,aAAa,EACb1B,wBAAwB,EACxBG,UAAU,EACVnB,yBAAyB,CAEjC,CAAC;AACL,CACJ,CAAC;AAEDrD,SAAS,CAACiH,WAAW,GAAG,WAAW;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAArI,OAAA,GAErBkB,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FileInput.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_file","_fileDialog","_Icon","_interopRequireDefault","_List","_FileListItem","_FileInput","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","FileInput","forwardRef","fileSelectionIcons","imageSelectIcons","fileTypes","onMaxFilesReached","maxFiles","onRemove","files","isDisabled","maxFileSizeInMB","onAdd","fileSelectionPlaceholder","imageSelectPlaceholder","ref","internalFiles","setInternalFiles","useState","internalImages","setInternalImages","handleInputClear","useImperativeHandle","clear","handleAddImages","useCallback","images","newImages","forEach","image","filterDuplicateFileUrls","newFile","push","tmp","slice","length","prevState","handleAddFiles","newFiles","newFileItems","file","isValidFileType","types","filterDuplicateFile","handleDeleteFile","fileName","fileToDelete","filteredFiles","filter","name","filteredImages","url","internalIsDisabled","useMemo","handleImageSelectionClick","buttonType","result","createDialog","dialogInput","upload","type","DialogType","MODULE","system","scope","module","buttons","open","handleFileSelectionClick","selectFiles","multiple","handleDrop","preventDefault","draggedFiles","Array","from","dataTransfer","content","combinedFiles","items","map","createElement","StyledMotionFileInputList","animate","height","opacity","exit","key","transition","duration","fileType","undefined","fileSize","size","uploadedFiles","cutFiles","splice","id","StyledFileInput","StyledFileInputWrapper","$isDisabled","StyledFileInputContainer","onClick","onDragOver","onDrop","icons","StyledFileInputText","$isImageSelection","AnimatePresence","initial","StyledUploadedFilesList","$shouldShowBorder","displayName","_default","exports"],"sources":["../../../../src/components/file-input/FileInput.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n DragEvent,\n forwardRef,\n ReactElement,\n useCallback,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport type { FileInputFileItem, ImageDialogResult } from '../../types/fileInput';\nimport { filterDuplicateFile, filterDuplicateFileUrls, isValidFileType } from '../../utils/file';\nimport { selectFiles } from '../../utils/fileDialog';\nimport Icon from '../icon/Icon';\nimport List from '../list/List';\nimport FileListItem from './file-list/FileListItem';\nimport {\n StyledFileInput,\n StyledFileInputContainer,\n StyledFileInputText,\n StyledFileInputWrapper,\n StyledMotionFileInputList,\n StyledUploadedFilesList,\n} from './FileInput.styles';\n\nexport type FileInputProps = {\n /**\n * Already uploaded files to display.\n */\n files?: FileInputFileItem[];\n /**\n * An array of icons that should be displayed inside the FileInput\n */\n fileSelectionIcons?: string[];\n /**\n * The text that should be displayed inside the FileInput.\n */\n fileSelectionPlaceholder?: string;\n /**\n * The filetypes that could be selected. Example for multiple types: 'image/*, video/*'.\n */\n fileTypes?: string;\n /**\n * The icon of the image selection.\n */\n imageSelectIcons?: string[];\n /**\n * If set, pictures can be select via Pixabay.\n */\n imageSelectPlaceholder?: string;\n /**\n * Whether the FileInput is disabled.\n */\n isDisabled?: boolean;\n /**\n * The maximum amount of Files that can be uploaded.\n */\n maxFiles?: number;\n /**\n * The maximum size of a file in MB.\n */\n maxFileSizeInMB?: number;\n /**\n * A function to be executed when files are added.\n */\n onAdd?: (files: File[] | string[]) => void;\n /**\n * Function to be executed when the maximum amount of Files are reached.\n */\n onMaxFilesReached?: () => void;\n /**\n * A function to be executed when a file is removed.\n */\n onRemove?: (file: File | FileInputFileItem | string) => void;\n};\n\ntype DialogInput = {\n upload: boolean;\n};\n\nexport type FileInputRef = {\n clear: () => void;\n};\n\nconst FileInput = forwardRef<FileInputRef, FileInputProps>(\n (\n {\n fileSelectionIcons = ['fa fa-upload'],\n imageSelectIcons = ['ts-image'],\n fileTypes,\n onMaxFilesReached,\n maxFiles,\n onRemove,\n files,\n isDisabled,\n maxFileSizeInMB,\n onAdd,\n fileSelectionPlaceholder = 'Dateien hochladen',\n imageSelectPlaceholder,\n },\n ref,\n ) => {\n const [internalFiles, setInternalFiles] = useState<File[]>([]);\n const [internalImages, setInternalImages] = useState<string[]>([]);\n\n const handleInputClear = () => {\n setInternalFiles([]);\n setInternalImages([]);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n clear: handleInputClear,\n }),\n [],\n );\n\n const handleAddImages = useCallback(\n (images: string[]) => {\n const newImages: string[] = [];\n\n images.forEach((image) => {\n if (!filterDuplicateFileUrls({ files: internalImages, newFile: image })) {\n newImages.push(image);\n }\n });\n\n let tmp = newImages;\n\n if (maxFiles) {\n tmp = newImages.slice(\n 0,\n maxFiles -\n (internalFiles.length + internalImages.length + (files?.length ?? 0)),\n );\n }\n\n if (tmp.length > 0 && typeof onAdd === 'function') {\n onAdd(tmp);\n }\n\n setInternalImages((prevState) => [...prevState, ...tmp]);\n },\n [files?.length, internalFiles.length, internalImages, maxFiles, onAdd],\n );\n\n const handleAddFiles = useCallback(\n (newFiles: File[]) => {\n const newFileItems: File[] = [];\n\n newFiles.forEach((file) => {\n if (fileTypes && !isValidFileType({ file, types: fileTypes })) {\n return;\n }\n\n if (file && !filterDuplicateFile({ files: internalFiles, newFile: file })) {\n newFileItems.push(file);\n }\n });\n\n let tmp = newFileItems;\n\n if (maxFiles) {\n tmp = newFileItems.slice(\n 0,\n maxFiles -\n (internalFiles.length + internalImages.length + (files?.length ?? 0)),\n );\n }\n\n if (tmp.length > 0 && typeof onAdd === 'function') {\n onAdd(tmp);\n }\n\n setInternalFiles((prevState) => [...prevState, ...tmp]);\n },\n [fileTypes, files?.length, internalFiles, internalImages.length, maxFiles, onAdd],\n );\n\n const handleDeleteFile = useCallback(\n (fileName?: string) => {\n let fileToDelete: File | FileInputFileItem | string | undefined;\n\n const filteredFiles = internalFiles.filter((file) => {\n const { name } = file;\n\n if (name === fileName) {\n fileToDelete = file;\n }\n\n return name !== fileName;\n });\n\n setInternalFiles(filteredFiles);\n\n if (!fileToDelete) {\n const filteredImages = internalImages.filter((image) => {\n if (image === fileName) {\n fileToDelete = image;\n }\n\n return image !== fileName;\n });\n\n setInternalImages(filteredImages);\n }\n\n if (!fileToDelete) {\n files?.forEach((file) => {\n if (file.url === fileName || file.name === fileName) {\n fileToDelete = file;\n }\n });\n }\n\n if (!fileToDelete || typeof onRemove !== 'function') {\n return;\n }\n\n onRemove(fileToDelete);\n },\n [files, internalFiles, internalImages, onRemove],\n );\n\n const internalIsDisabled = useMemo(() => {\n if (isDisabled) {\n return true;\n }\n\n if (maxFiles) {\n if (internalFiles.length + internalImages.length >= maxFiles) {\n if (typeof onMaxFilesReached === 'function') {\n onMaxFilesReached();\n }\n\n return true;\n }\n }\n\n return false;\n }, [internalFiles.length, internalImages.length, isDisabled, maxFiles, onMaxFilesReached]);\n\n const handleImageSelectionClick = useCallback(async () => {\n if (internalIsDisabled) {\n return;\n }\n\n const { buttonType, result } = (await createDialog<DialogInput>({\n dialogInput: {\n upload: true,\n },\n type: DialogType.MODULE,\n system: {\n url: 'https://tapp.chayns-static.space/api/dialog-image-editor/v1/remoteEntry.js',\n scope: 'dialog_image_editor',\n module: './ImageEditorEntry',\n },\n buttons: [],\n }).open()) as ImageDialogResult;\n\n if (buttonType === 1 && result?.url) {\n handleAddImages([result.url]);\n }\n }, [handleAddImages, internalIsDisabled]);\n\n const handleFileSelectionClick = useCallback(async () => {\n if (internalIsDisabled) {\n return;\n }\n\n const newFiles = await selectFiles({\n multiple: true,\n type: fileTypes,\n maxFileSizeInMB,\n });\n\n handleAddFiles(newFiles);\n }, [fileTypes, handleAddFiles, internalIsDisabled, maxFileSizeInMB]);\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n const draggedFiles = Array.from(e.dataTransfer.files);\n\n handleAddFiles(draggedFiles);\n },\n [handleAddFiles],\n );\n\n const content = useMemo(() => {\n const combinedFiles = [...internalImages, ...internalFiles];\n\n const items: ReactElement[] = combinedFiles.map((file) => (\n <StyledMotionFileInputList\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n key={typeof file === 'string' ? file : file.name}\n transition={{ duration: 0.25, type: 'tween' }}\n >\n <FileListItem\n fileType={typeof file !== 'string' ? file.type : undefined}\n fileName={typeof file !== 'string' ? file.name : undefined}\n fileSize={typeof file !== 'string' ? file.size : undefined}\n url={typeof file === 'string' ? file : undefined}\n onRemove={handleDeleteFile}\n />\n </StyledMotionFileInputList>\n ));\n\n return items;\n }, [handleDeleteFile, internalFiles, internalImages]);\n\n const uploadedFiles = useMemo(() => {\n const items: ReactElement[] = [];\n\n const cutFiles = maxFiles ? files?.splice(0, maxFiles) : files;\n\n cutFiles?.forEach(({ url, id, name }) => {\n items.push(\n <StyledMotionFileInputList\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n key={id}\n transition={{ duration: 0.25, type: 'tween' }}\n >\n <FileListItem url={url} onRemove={handleDeleteFile} fileName={name} />\n </StyledMotionFileInputList>,\n );\n });\n\n return items;\n }, [files, handleDeleteFile, maxFiles]);\n\n return useMemo(\n () => (\n <StyledFileInput>\n <StyledFileInputWrapper $isDisabled={internalIsDisabled}>\n <StyledFileInputContainer\n onClick={() => void handleFileSelectionClick()}\n onDragOver={(e: DragEvent<HTMLDivElement>) => e.preventDefault()}\n onDrop={(e: DragEvent<HTMLDivElement>) => void handleDrop(e)}\n >\n <Icon icons={fileSelectionIcons} />\n <StyledFileInputText>{fileSelectionPlaceholder}</StyledFileInputText>\n </StyledFileInputContainer>\n {imageSelectPlaceholder && (\n <StyledFileInputContainer\n $isImageSelection\n onClick={() => void handleImageSelectionClick()}\n >\n <Icon icons={imageSelectIcons} />\n <StyledFileInputText>{imageSelectPlaceholder}</StyledFileInputText>\n </StyledFileInputContainer>\n )}\n </StyledFileInputWrapper>\n <List>\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </List>\n {uploadedFiles.length > 0 && (\n <StyledUploadedFilesList $shouldShowBorder={content.length > 0}>\n <List>\n <AnimatePresence initial={false}>{uploadedFiles}</AnimatePresence>\n </List>\n </StyledUploadedFilesList>\n )}\n </StyledFileInput>\n ),\n [\n internalIsDisabled,\n fileSelectionIcons,\n fileSelectionPlaceholder,\n imageSelectPlaceholder,\n imageSelectIcons,\n content,\n uploadedFiles,\n handleFileSelectionClick,\n handleDrop,\n handleImageSelectionClick,\n ],\n );\n },\n);\n\nFileInput.displayName = 'FileInput';\n\nexport default FileInput;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,6 +26,7 @@ const Popup = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
|
26
26
|
shouldShowOnHover = false,
|
|
27
27
|
shouldUseChildrenWidth = true,
|
|
28
28
|
shouldScrollWithContent = false,
|
|
29
|
+
shouldUseFullWidth = false,
|
|
29
30
|
yOffset = 0
|
|
30
31
|
}, ref) => {
|
|
31
32
|
const [coordinates, setCoordinates] = (0, _react2.useState)({
|
|
@@ -242,11 +243,13 @@ const Popup = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
|
242
243
|
ref: popupPseudoContentRef,
|
|
243
244
|
$menuHeight: menuHeight
|
|
244
245
|
}, content), /*#__PURE__*/_react2.default.createElement(_Popup.StyledPopup, {
|
|
246
|
+
className: "beta-chayns-popup",
|
|
245
247
|
ref: popupRef,
|
|
246
248
|
onClick: handleChildrenClick,
|
|
247
249
|
onMouseLeave: handleMouseLeave,
|
|
248
250
|
onMouseEnter: handleMouseEnter,
|
|
249
|
-
$shouldUseChildrenWidth: shouldUseChildrenWidth
|
|
251
|
+
$shouldUseChildrenWidth: shouldUseChildrenWidth,
|
|
252
|
+
$shouldUseFullWidth: shouldUseFullWidth
|
|
250
253
|
}, children), portal);
|
|
251
254
|
});
|
|
252
255
|
Popup.displayName = 'Popup';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popup.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_popup","_AreaContextProvider","_interopRequireDefault","_PopupContentWrapper","_Popup","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Popup","forwardRef","content","onShow","container","onHide","children","shouldHideOnChildrenLeave","shouldShowOnHover","shouldUseChildrenWidth","shouldScrollWithContent","yOffset","ref","coordinates","setCoordinates","useState","x","y","alignment","setAlignment","PopupAlignment","TopLeft","offset","setOffset","isOpen","setIsOpen","portal","setPortal","menuHeight","setMenuHeight","isMeasuring","setIsMeasuring","pseudoSize","setPseudoSize","newContainer","setNewContainer","timeout","useRef","uuid","useUuid","popupContentRef","popupPseudoContentRef","popupRef","useEffect","current","el","element","closest","Element","measureHeight","height","offsetHeight","width","offsetWidth","handleResize","setTimeout","window","addEventListener","removeEventListener","handleShow","useCallback","pseudoHeight","pseudoWidth","childrenHeight","left","childrenLeft","top","childrenTop","childrenWidth","getBoundingClientRect","zoomX","zoomY","isRight","BottomRight","BottomLeft","scrollLeft","scrollTop","newOffset","innerWidth","right","newX","TopRight","handleChildrenClick","handleHide","handleMouseEnter","clearTimeout","handleMouseLeave","handleDocumentClick","event","_popupContentRef$curr","contains","target","useImperativeHandle","hide","show","getWindowMetrics","then","result","topBarHeight","document","createPortal","createElement","AnimatePresence","initial","key","onMouseLeave","onMouseEnter","shouldChangeColor","Fragment","StyledPopupPseudo","$menuHeight","StyledPopup","onClick","$shouldUseChildrenWidth","displayName","_default","exports"],"sources":["../../../../src/components/popup/Popup.tsx"],"sourcesContent":["import { getWindowMetrics } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\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 { PopupAlignment, PopupCoordinates, PopupRef } from '../../types/popup';\nimport AreaContextProvider from '../area-provider/AreaContextProvider';\nimport PopupContentWrapper from './popup-content-wrapper/PopupContentWrapper';\nimport { StyledPopup, StyledPopupPseudo } from './Popup.styles';\n\nexport type PopupProps = {\n /**\n * The element over which the content of the `ContextMenu` should be displayed.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `Popup` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The content that should be displayed inside the popup.\n */\n content: ReactNode;\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 tooltip should be hidden after the children is not hovered.\n */\n shouldHideOnChildrenLeave?: boolean;\n /**\n * Whether the popup should scroll with the content.\n */\n shouldScrollWithContent?: boolean;\n /**\n * Whether the popup should be opened on hover. If not, the popup will be opened on click.\n */\n shouldShowOnHover?: boolean;\n /**\n * Whether the width of the children should be used.\n */\n shouldUseChildrenWidth?: boolean;\n /**\n * The Y offset of the popup to the children.\n */\n yOffset?: number;\n};\n\nconst Popup = forwardRef<PopupRef, PopupProps>(\n (\n {\n content,\n onShow,\n container,\n onHide,\n children,\n shouldHideOnChildrenLeave,\n shouldShowOnHover = false,\n shouldUseChildrenWidth = true,\n shouldScrollWithContent = false,\n yOffset = 0,\n },\n ref,\n ) => {\n const [coordinates, setCoordinates] = useState<PopupCoordinates>({\n x: 0,\n y: 0,\n });\n\n const [alignment, setAlignment] = useState<PopupAlignment>(PopupAlignment.TopLeft);\n const [offset, setOffset] = useState<number>(0);\n const [isOpen, setIsOpen] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n const [menuHeight, setMenuHeight] = useState(0);\n const [isMeasuring, setIsMeasuring] = useState(true);\n const [pseudoSize, setPseudoSize] = useState<{ height: number; width: number }>();\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const timeout = useRef<number>();\n\n const uuid = useUuid();\n\n // ToDo: Replace with hook if new chayns api is ready\n\n const popupContentRef = useRef<HTMLDivElement>(null);\n const popupPseudoContentRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (popupRef.current && !container) {\n const el = popupRef.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 measureHeight = () => {\n if (popupPseudoContentRef.current) {\n const height = popupPseudoContentRef.current.offsetHeight;\n const width = popupPseudoContentRef.current.offsetWidth + 1;\n\n setPseudoSize({ height, width });\n }\n };\n\n useEffect(() => {\n measureHeight();\n\n setIsMeasuring(false);\n }, []);\n\n useEffect(() => {\n const handleResize = () => {\n setIsMeasuring(true);\n\n setTimeout(() => {\n measureHeight();\n setIsMeasuring(false);\n }, 0);\n };\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const handleShow = useCallback(() => {\n if (popupRef.current && pseudoSize) {\n if (!newContainer) {\n return;\n }\n\n const { height: pseudoHeight, width: pseudoWidth } = pseudoSize;\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = popupRef.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 if (pseudoHeight > childrenTop - 25) {\n let isRight = false;\n\n if (pseudoWidth > childrenLeft + childrenWidth / 2 - 25) {\n setAlignment(PopupAlignment.BottomRight);\n\n isRight = true;\n } else {\n setAlignment(PopupAlignment.BottomLeft);\n }\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n let newOffset;\n\n if (isRight) {\n newOffset =\n x + pseudoWidth >= window.innerWidth\n ? x + pseudoWidth - window.innerWidth\n : 0;\n } else {\n newOffset = 0;\n\n const right = window.innerWidth - (childrenLeft + childrenWidth / 2);\n\n newOffset =\n right + pseudoWidth >= window.innerWidth\n ? right + pseudoWidth - window.innerWidth\n : 0;\n }\n\n setOffset(newOffset);\n\n const newX = x - newOffset;\n\n setCoordinates({\n x: newX < 23 ? 23 : newX,\n y,\n });\n } else {\n let isRight = false;\n\n if (pseudoWidth > childrenLeft + childrenWidth / 2 - 25) {\n setAlignment(PopupAlignment.TopRight);\n\n isRight = true;\n } else {\n setAlignment(PopupAlignment.TopLeft);\n }\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n let newOffset;\n\n if (isRight) {\n newOffset =\n x + pseudoWidth >= window.innerWidth\n ? x + pseudoWidth - window.innerWidth\n : 0;\n } else {\n newOffset = 0;\n\n const right = window.innerWidth - (childrenLeft + childrenWidth / 2);\n\n newOffset =\n right + pseudoWidth >= window.innerWidth\n ? right + pseudoWidth - window.innerWidth\n : 0;\n }\n\n setOffset(newOffset);\n\n const newX = x - newOffset;\n\n setCoordinates({\n x: newX < 23 ? 23 : newX,\n y,\n });\n }\n\n setIsOpen(true);\n }\n }, [newContainer, pseudoSize, yOffset]);\n\n const handleChildrenClick = () => {\n handleShow();\n };\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleMouseEnter = useCallback(() => {\n if (shouldShowOnHover) {\n window.clearTimeout(timeout.current);\n handleShow();\n }\n }, [handleShow, shouldShowOnHover]);\n\n const handleMouseLeave = useCallback(() => {\n if (!shouldShowOnHover) {\n return;\n }\n\n if (shouldHideOnChildrenLeave) {\n handleHide();\n\n return;\n }\n\n timeout.current = window.setTimeout(() => {\n handleHide();\n }, 500);\n }, [handleHide, shouldHideOnChildrenLeave, shouldShowOnHover]);\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (!popupContentRef.current?.contains(event.target as Node)) {\n handleHide();\n }\n },\n [handleHide],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n void getWindowMetrics().then((result) => {\n if (result.topBarHeight) {\n setMenuHeight(result.topBarHeight);\n }\n });\n }, []);\n\n useEffect(() => {\n if (isOpen) {\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, isOpen, onHide, onShow]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isOpen && (\n <PopupContentWrapper\n width={pseudoSize?.width ?? 0}\n offset={offset}\n shouldScrollWithContent={shouldScrollWithContent}\n coordinates={coordinates}\n key={`tooltip_${uuid}`}\n alignment={alignment}\n ref={popupContentRef}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n >\n <AreaContextProvider shouldChangeColor={false}>\n {content}\n </AreaContextProvider>\n </PopupContentWrapper>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n content,\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isOpen,\n offset,\n pseudoSize?.width,\n uuid,\n shouldScrollWithContent,\n ]);\n\n return (\n <>\n {isMeasuring && (\n <StyledPopupPseudo ref={popupPseudoContentRef} $menuHeight={menuHeight}>\n {content}\n </StyledPopupPseudo>\n )}\n <StyledPopup\n ref={popupRef}\n onClick={handleChildrenClick}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n $shouldUseChildrenWidth={shouldUseChildrenWidth}\n >\n {children}\n </StyledPopup>\n {portal}\n </>\n );\n },\n);\n\nPopup.displayName = 'Popup';\n\nexport default Popup;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Popup.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_popup","_AreaContextProvider","_interopRequireDefault","_PopupContentWrapper","_Popup","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Popup","forwardRef","content","onShow","container","onHide","children","shouldHideOnChildrenLeave","shouldShowOnHover","shouldUseChildrenWidth","shouldScrollWithContent","shouldUseFullWidth","yOffset","ref","coordinates","setCoordinates","useState","x","y","alignment","setAlignment","PopupAlignment","TopLeft","offset","setOffset","isOpen","setIsOpen","portal","setPortal","menuHeight","setMenuHeight","isMeasuring","setIsMeasuring","pseudoSize","setPseudoSize","newContainer","setNewContainer","timeout","useRef","uuid","useUuid","popupContentRef","popupPseudoContentRef","popupRef","useEffect","current","el","element","closest","Element","measureHeight","height","offsetHeight","width","offsetWidth","handleResize","setTimeout","window","addEventListener","removeEventListener","handleShow","useCallback","pseudoHeight","pseudoWidth","childrenHeight","left","childrenLeft","top","childrenTop","childrenWidth","getBoundingClientRect","zoomX","zoomY","isRight","BottomRight","BottomLeft","scrollLeft","scrollTop","newOffset","innerWidth","right","newX","TopRight","handleChildrenClick","handleHide","handleMouseEnter","clearTimeout","handleMouseLeave","handleDocumentClick","event","_popupContentRef$curr","contains","target","useImperativeHandle","hide","show","getWindowMetrics","then","result","topBarHeight","document","createPortal","createElement","AnimatePresence","initial","key","onMouseLeave","onMouseEnter","shouldChangeColor","Fragment","StyledPopupPseudo","$menuHeight","StyledPopup","className","onClick","$shouldUseChildrenWidth","$shouldUseFullWidth","displayName","_default","exports"],"sources":["../../../../src/components/popup/Popup.tsx"],"sourcesContent":["import { getWindowMetrics } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\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 { PopupAlignment, PopupCoordinates, PopupRef } from '../../types/popup';\nimport AreaContextProvider from '../area-provider/AreaContextProvider';\nimport PopupContentWrapper from './popup-content-wrapper/PopupContentWrapper';\nimport { StyledPopup, StyledPopupPseudo } from './Popup.styles';\n\nexport type PopupProps = {\n /**\n * The element over which the content of the `ContextMenu` should be displayed.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `Popup` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The content that should be displayed inside the popup.\n */\n content: ReactNode;\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 tooltip should be hidden after the children is not hovered.\n */\n shouldHideOnChildrenLeave?: boolean;\n /**\n * Whether the popup should scroll with the content.\n */\n shouldScrollWithContent?: boolean;\n /**\n * Whether the popup should be opened on hover. If not, the popup will be opened on click.\n */\n shouldShowOnHover?: boolean;\n /**\n * Whether the width of the children should be used.\n */\n shouldUseChildrenWidth?: boolean;\n /**\n * Whether the popup children should use the full width.\n */\n shouldUseFullWidth?: boolean;\n /**\n * The Y offset of the popup to the children.\n */\n yOffset?: number;\n};\n\nconst Popup = forwardRef<PopupRef, PopupProps>(\n (\n {\n content,\n onShow,\n container,\n onHide,\n children,\n shouldHideOnChildrenLeave,\n shouldShowOnHover = false,\n shouldUseChildrenWidth = true,\n shouldScrollWithContent = false,\n shouldUseFullWidth = false,\n yOffset = 0,\n },\n ref,\n ) => {\n const [coordinates, setCoordinates] = useState<PopupCoordinates>({\n x: 0,\n y: 0,\n });\n\n const [alignment, setAlignment] = useState<PopupAlignment>(PopupAlignment.TopLeft);\n const [offset, setOffset] = useState<number>(0);\n const [isOpen, setIsOpen] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n const [menuHeight, setMenuHeight] = useState(0);\n const [isMeasuring, setIsMeasuring] = useState(true);\n const [pseudoSize, setPseudoSize] = useState<{ height: number; width: number }>();\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const timeout = useRef<number>();\n\n const uuid = useUuid();\n\n // ToDo: Replace with hook if new chayns api is ready\n\n const popupContentRef = useRef<HTMLDivElement>(null);\n const popupPseudoContentRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (popupRef.current && !container) {\n const el = popupRef.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 measureHeight = () => {\n if (popupPseudoContentRef.current) {\n const height = popupPseudoContentRef.current.offsetHeight;\n const width = popupPseudoContentRef.current.offsetWidth + 1;\n\n setPseudoSize({ height, width });\n }\n };\n\n useEffect(() => {\n measureHeight();\n\n setIsMeasuring(false);\n }, []);\n\n useEffect(() => {\n const handleResize = () => {\n setIsMeasuring(true);\n\n setTimeout(() => {\n measureHeight();\n setIsMeasuring(false);\n }, 0);\n };\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const handleShow = useCallback(() => {\n if (popupRef.current && pseudoSize) {\n if (!newContainer) {\n return;\n }\n\n const { height: pseudoHeight, width: pseudoWidth } = pseudoSize;\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = popupRef.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 if (pseudoHeight > childrenTop - 25) {\n let isRight = false;\n\n if (pseudoWidth > childrenLeft + childrenWidth / 2 - 25) {\n setAlignment(PopupAlignment.BottomRight);\n\n isRight = true;\n } else {\n setAlignment(PopupAlignment.BottomLeft);\n }\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n let newOffset;\n\n if (isRight) {\n newOffset =\n x + pseudoWidth >= window.innerWidth\n ? x + pseudoWidth - window.innerWidth\n : 0;\n } else {\n newOffset = 0;\n\n const right = window.innerWidth - (childrenLeft + childrenWidth / 2);\n\n newOffset =\n right + pseudoWidth >= window.innerWidth\n ? right + pseudoWidth - window.innerWidth\n : 0;\n }\n\n setOffset(newOffset);\n\n const newX = x - newOffset;\n\n setCoordinates({\n x: newX < 23 ? 23 : newX,\n y,\n });\n } else {\n let isRight = false;\n\n if (pseudoWidth > childrenLeft + childrenWidth / 2 - 25) {\n setAlignment(PopupAlignment.TopRight);\n\n isRight = true;\n } else {\n setAlignment(PopupAlignment.TopLeft);\n }\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n let newOffset;\n\n if (isRight) {\n newOffset =\n x + pseudoWidth >= window.innerWidth\n ? x + pseudoWidth - window.innerWidth\n : 0;\n } else {\n newOffset = 0;\n\n const right = window.innerWidth - (childrenLeft + childrenWidth / 2);\n\n newOffset =\n right + pseudoWidth >= window.innerWidth\n ? right + pseudoWidth - window.innerWidth\n : 0;\n }\n\n setOffset(newOffset);\n\n const newX = x - newOffset;\n\n setCoordinates({\n x: newX < 23 ? 23 : newX,\n y,\n });\n }\n\n setIsOpen(true);\n }\n }, [newContainer, pseudoSize, yOffset]);\n\n const handleChildrenClick = () => {\n handleShow();\n };\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleMouseEnter = useCallback(() => {\n if (shouldShowOnHover) {\n window.clearTimeout(timeout.current);\n handleShow();\n }\n }, [handleShow, shouldShowOnHover]);\n\n const handleMouseLeave = useCallback(() => {\n if (!shouldShowOnHover) {\n return;\n }\n\n if (shouldHideOnChildrenLeave) {\n handleHide();\n\n return;\n }\n\n timeout.current = window.setTimeout(() => {\n handleHide();\n }, 500);\n }, [handleHide, shouldHideOnChildrenLeave, shouldShowOnHover]);\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (!popupContentRef.current?.contains(event.target as Node)) {\n handleHide();\n }\n },\n [handleHide],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n void getWindowMetrics().then((result) => {\n if (result.topBarHeight) {\n setMenuHeight(result.topBarHeight);\n }\n });\n }, []);\n\n useEffect(() => {\n if (isOpen) {\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, isOpen, onHide, onShow]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isOpen && (\n <PopupContentWrapper\n width={pseudoSize?.width ?? 0}\n offset={offset}\n shouldScrollWithContent={shouldScrollWithContent}\n coordinates={coordinates}\n key={`tooltip_${uuid}`}\n alignment={alignment}\n ref={popupContentRef}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n >\n <AreaContextProvider shouldChangeColor={false}>\n {content}\n </AreaContextProvider>\n </PopupContentWrapper>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n content,\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isOpen,\n offset,\n pseudoSize?.width,\n uuid,\n shouldScrollWithContent,\n ]);\n\n return (\n <>\n {isMeasuring && (\n <StyledPopupPseudo ref={popupPseudoContentRef} $menuHeight={menuHeight}>\n {content}\n </StyledPopupPseudo>\n )}\n <StyledPopup\n className=\"beta-chayns-popup\"\n ref={popupRef}\n onClick={handleChildrenClick}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n $shouldUseChildrenWidth={shouldUseChildrenWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n >\n {children}\n </StyledPopup>\n {portal}\n </>\n );\n },\n);\n\nPopup.displayName = 'Popup';\n\nexport default Popup;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,6 +11,12 @@ const StyledPopup = exports.StyledPopup = _styledComponents.default.span`
|
|
|
11
11
|
cursor: pointer;
|
|
12
12
|
position: relative;
|
|
13
13
|
|
|
14
|
+
${({
|
|
15
|
+
$shouldUseFullWidth
|
|
16
|
+
}) => $shouldUseFullWidth && (0, _styledComponents.css)`
|
|
17
|
+
width: 100%;
|
|
18
|
+
`};
|
|
19
|
+
|
|
14
20
|
${({
|
|
15
21
|
$shouldUseChildrenWidth
|
|
16
22
|
}) => $shouldUseChildrenWidth && (0, _styledComponents.css)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popup.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledPopup","exports","styled","span","$
|
|
1
|
+
{"version":3,"file":"Popup.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledPopup","exports","styled","span","$shouldUseFullWidth","css","$shouldUseChildrenWidth","StyledPopupPseudo","div","$menuHeight"],"sources":["../../../../src/components/popup/Popup.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledPopupProps = WithTheme<{\n $shouldUseChildrenWidth: boolean;\n $shouldUseFullWidth: boolean;\n}>;\n\nexport const StyledPopup = styled.span<StyledPopupProps>`\n cursor: pointer;\n position: relative;\n\n ${({ $shouldUseFullWidth }) =>\n $shouldUseFullWidth &&\n css`\n width: 100%;\n `};\n\n ${({ $shouldUseChildrenWidth }) =>\n $shouldUseChildrenWidth &&\n css`\n display: flex;\n width: fit-content;\n height: fit-content;\n `}\n`;\n\nexport const StyledPopupPseudo = styled.div<{\n $menuHeight: number;\n}>`\n top: ${({ $menuHeight }) => `${$menuHeight - 0}px`};\n left: 0;\n margin: 2px;\n pointer-events: none;\n opacity: 0;\n position: absolute;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAQzC,MAAMW,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGE,yBAAM,CAACC,IAAsB;AACxD;AACA;AACA;AACA,MAAM,CAAC;EAAEC;AAAoB,CAAC,KACtBA,mBAAmB,IACnB,IAAAC,qBAAG;AACX;AACA,SAAS;AACT;AACA,MAAM,CAAC;EAAEC;AAAwB,CAAC,KAC1BA,uBAAuB,IACvB,IAAAD,qBAAG;AACX;AACA;AACA;AACA,SAAS;AACT,CAAC;AAEM,MAAME,iBAAiB,GAAAN,OAAA,CAAAM,iBAAA,GAAGL,yBAAM,CAACM,GAEtC;AACF,WAAW,CAAC;EAAEC;AAAY,CAAC,KAAK,GAAGA,WAAW,GAAG,CAAC,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|