@chayns-components/core 5.5.51 → 5.5.53
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/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js +1 -1
- package/lib/cjs/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js.map +1 -1
- package/lib/cjs/components/filter/Filter.js +1 -1
- package/lib/cjs/components/filter/Filter.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.js +3 -1
- package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.test.js +137 -0
- package/lib/cjs/components/list/list-item/ListItem.test.js.map +1 -0
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js +2 -1
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
- package/lib/cjs/components/search-box/search-box-body/SearchBoxBody.js +1 -1
- package/lib/cjs/components/search-box/search-box-body/SearchBoxBody.js.map +1 -1
- package/lib/cjs/hooks/element.js +1 -1
- package/lib/cjs/hooks/element.js.map +1 -1
- package/lib/esm/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js +1 -1
- package/lib/esm/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js.map +1 -1
- package/lib/esm/components/filter/Filter.js +1 -1
- package/lib/esm/components/filter/Filter.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.js +3 -1
- package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.test.js +133 -0
- package/lib/esm/components/list/list-item/ListItem.test.js.map +1 -0
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +2 -1
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
- package/lib/esm/components/search-box/search-box-body/SearchBoxBody.js +1 -1
- package/lib/esm/components/search-box/search-box-body/SearchBoxBody.js.map +1 -1
- package/lib/esm/hooks/element.js +1 -1
- package/lib/esm/hooks/element.js.map +1 -1
- package/lib/types/components/list/list-item/ListItem.d.ts +17 -0
- package/lib/types/components/list/list-item/list-item-head/ListItemHead.d.ts +1 -0
- package/package.json +2 -2
|
@@ -45,6 +45,7 @@ const ListItemHead = ({
|
|
|
45
45
|
titleElement,
|
|
46
46
|
setShouldEnableTooltip,
|
|
47
47
|
shouldDisableAnimation = false,
|
|
48
|
+
shouldAnimateLayout = false,
|
|
48
49
|
cornerElement,
|
|
49
50
|
onTitleWidthChange,
|
|
50
51
|
onImageError,
|
|
@@ -165,7 +166,7 @@ const ListItemHead = ({
|
|
|
165
166
|
$isOpen: isOpen
|
|
166
167
|
}, /*#__PURE__*/_react2.default.createElement(_react.LayoutGroup, null, /*#__PURE__*/_react2.default.createElement(_ListItemHead.StyledListItemHeadTitle, {
|
|
167
168
|
as: shouldDisableAnimation ? undefined : _react.motion.div,
|
|
168
|
-
layout:
|
|
169
|
+
layout: shouldAnimateLayout ? 'position' : undefined
|
|
169
170
|
}, hasTitleInput ?
|
|
170
171
|
/*#__PURE__*/
|
|
171
172
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemHead.js","names":["_react","require","_react2","_interopRequireWildcard","_ListItemIcon","_interopRequireDefault","_ListItemImage","_ListItemHead","_ListItemTitle","_ListItemSubtitle","_ListItemRightElement","_styledComponents","_Icon","_icon","_Input","_AreaContextProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","ListItemHead","careOfLocationId","cornerImage","hoverItem","icons","imageBackground","images","isAnyItemExpandable","isExpandable","isOpen","isTitleGreyed","leftElements","onClick","onLongPress","rightElements","shouldHideImageOrIconBackground","shouldHideIndicator","shouldOpenImageOnClick","shouldShowRoundImageOrIcon","subtitle","shouldForceHover","title","titleElement","setShouldEnableTooltip","shouldDisableAnimation","cornerElement","onTitleWidthChange","onImageError","onTitleInputChange","titleInputProps","shouldShowHoverItem","setShouldShowHoverItem","useState","titleMaxWidth","setTitleMaxWidth","titleWidth","setTitleWidth","longPressTimeoutRef","useRef","resizeSkipRef","leftElementRef","theme","useTheme","areaProvider","useContext","AreaContext","hasTitleInput","shouldShowSubtitleRow","shouldShowMultilineTitle","useMemo","useEffect","window","setTimeout","current","handleShowTooltipResize","useCallback","entries","_entries$","_entries$2","target","clientWidth","el","scrollWidth","handleMouseEnter","handleMouseLeave","handleTouchStart","event","handleTouchEnd","clearTimeout","handleTitleWidthChange","width","shouldShowHoverItemContent","handleInputClick","stopPropagation","iconOrImageElement","createElement","shouldHideBackground","shouldShowRoundIcon","shouldShowRoundImage","undefined","expandIcon","internalIcon","getIsExpandableIcon","accordionIcon","internalIconStyle","iconStyle","StyledUnicodeIcon","$icon","className","StyledListItemHead","as","motion","div","animate","opacity","initial","transition","duration","type","$isClickable","$isAnyItemExpandable","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","StyledListItemHeadLeftWrapper","StyledListItemHeadIndicator","rotate","StyledListItemHeadLeftElements","ref","StyledListItemHeadContent","$isIconOrImageGiven","$isOpen","LayoutGroup","StyledListItemHeadTitle","layout","Provider","value","shouldChangeColor","StyledListItemHeadTitleInputWrapper","onChange","onResize","StyledListItemHeadSubtitle","StyledMotionListItemHeadHoverItemWrapper","marginLeft","StyledMotionListItemHeadHoverItem","displayName","_default","exports"],"sources":["../../../../../../src/components/list/list-item/list-item-head/ListItemHead.tsx"],"sourcesContent":["import { LayoutGroup, motion } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n CSSProperties,\n FC,\n MouseEventHandler,\n ReactNode,\n SyntheticEvent,\n TouchEventHandler,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { IListItemRightElements } from '../../../../types/list';\nimport type { InputProps } from '../../../input/Input';\nimport ListItemIcon from './list-item-icon/ListItemIcon';\nimport ListItemImage from './list-item-image/ListItemImage';\nimport {\n StyledListItemHead,\n StyledListItemHeadContent,\n StyledListItemHeadIndicator,\n StyledListItemHeadLeftElements,\n StyledListItemHeadLeftWrapper,\n StyledListItemHeadSubtitle,\n StyledListItemHeadTitle,\n StyledListItemHeadTitleInputWrapper,\n StyledMotionListItemHeadHoverItem,\n StyledMotionListItemHeadHoverItemWrapper,\n} from './ListItemHead.styles';\nimport ListItemTitle from './list-item-title/ListItemTitle';\nimport ListItemSubtitle from './list-item-subtitle/ListItemSubtitle';\nimport ListItemRightElement from './list-item-right-element/ListItemRightElement';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../../../color-scheme-provider/ColorSchemeProvider';\nimport { StyledUnicodeIcon } from '../../../icon/Icon.styles';\nimport { getIsExpandableIcon } from '../../../../utils/icon';\nimport Input from '../../../input/Input';\nimport { AreaContext } from '../../../area-provider/AreaContextProvider';\n\ntype ListItemHeadProps = {\n careOfLocationId?: number;\n cornerImage?: string;\n hoverItem?: ReactNode;\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n images?: string[];\n isAnyItemExpandable: boolean;\n isExpandable: boolean;\n isOpen: boolean;\n isTitleGreyed?: boolean;\n leftElements?: ReactNode;\n onClick?: MouseEventHandler<HTMLDivElement>;\n onLongPress?: TouchEventHandler<HTMLDivElement>;\n rightElements?: IListItemRightElements;\n shouldHideImageOrIconBackground?: boolean;\n shouldHideIndicator?: boolean;\n shouldOpenImageOnClick: boolean;\n shouldShowRoundImageOrIcon?: boolean;\n subtitle?: ReactNode;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldForceHover?: boolean;\n setShouldEnableTooltip: (value: boolean) => void;\n shouldDisableAnimation?: boolean;\n cornerElement?: ReactNode;\n onTitleWidthChange: (titleWidth: number, titleMaxWidth: number) => void;\n onImageError?: (event: SyntheticEvent<HTMLImageElement, Event>, index: number) => void;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n};\n\nconst ListItemHead: FC<ListItemHeadProps> = ({\n careOfLocationId,\n cornerImage,\n hoverItem,\n icons,\n imageBackground,\n images,\n isAnyItemExpandable,\n isExpandable,\n isOpen,\n isTitleGreyed,\n leftElements,\n onClick,\n onLongPress,\n rightElements,\n shouldHideImageOrIconBackground,\n shouldHideIndicator,\n shouldOpenImageOnClick,\n shouldShowRoundImageOrIcon,\n subtitle,\n shouldForceHover,\n title,\n titleElement,\n setShouldEnableTooltip,\n shouldDisableAnimation = false,\n cornerElement,\n onTitleWidthChange,\n onImageError,\n onTitleInputChange,\n titleInputProps,\n}) => {\n const [shouldShowHoverItem, setShouldShowHoverItem] = useState(false);\n const [titleMaxWidth, setTitleMaxWidth] = useState(0);\n const [titleWidth, setTitleWidth] = useState(0);\n\n const longPressTimeoutRef = useRef<number>();\n const resizeSkipRef = useRef(true);\n const leftElementRef = useRef<HTMLDivElement>(null);\n\n const theme = useTheme() as Theme;\n const areaProvider = useContext(AreaContext);\n\n const hasTitleInput = typeof onTitleInputChange === 'function';\n\n const shouldShowSubtitleRow =\n (!hasTitleInput && (subtitle || typeof subtitle === 'string')) ||\n (typeof rightElements === 'object' && rightElements && 'bottom' in rightElements);\n\n const shouldShowMultilineTitle = useMemo(\n () => !subtitle && !hasTitleInput,\n [hasTitleInput, subtitle],\n );\n\n useEffect(() => {\n window.setTimeout(() => {\n resizeSkipRef.current = false;\n }, 200);\n }, []);\n\n useEffect(() => {\n onTitleWidthChange(titleWidth, titleMaxWidth);\n }, [onTitleWidthChange, titleMaxWidth, titleWidth]);\n\n const handleShowTooltipResize = useCallback(\n (entries: ResizeObserverEntry[]) => {\n setTitleWidth(entries[0]?.target.clientWidth ?? 0);\n\n if (resizeSkipRef.current) {\n return;\n }\n\n const el = entries[0]?.target;\n if (!el) return;\n setShouldEnableTooltip(el.scrollWidth > el.clientWidth);\n },\n [setShouldEnableTooltip],\n );\n\n const handleMouseEnter = useCallback(() => setShouldShowHoverItem(true), []);\n\n const handleMouseLeave = useCallback(() => setShouldShowHoverItem(false), []);\n\n const handleTouchStart = useCallback<TouchEventHandler<HTMLDivElement>>(\n (event) => {\n longPressTimeoutRef.current = window.setTimeout(() => {\n if (typeof onLongPress === 'function') {\n onLongPress(event);\n }\n }, 400);\n },\n [onLongPress],\n );\n\n const handleTouchEnd = useCallback(() => {\n clearTimeout(longPressTimeoutRef.current);\n }, []);\n\n const handleTitleWidthChange = useCallback((width: number) => {\n setTitleMaxWidth(width);\n }, []);\n const shouldShowHoverItemContent = !!(shouldForceHover || shouldShowHoverItem);\n\n const handleInputClick = useCallback<MouseEventHandler<HTMLDivElement>>((event) => {\n event.stopPropagation();\n }, []);\n\n const iconOrImageElement = useMemo(() => {\n if (icons) {\n return (\n <ListItemIcon\n icons={icons}\n shouldHideBackground={!!shouldHideImageOrIconBackground}\n shouldShowRoundIcon={!!shouldShowRoundImageOrIcon}\n />\n );\n }\n\n if (images) {\n return (\n <ListItemImage\n cornerElement={cornerElement}\n imageBackground={imageBackground}\n careOfLocationId={careOfLocationId}\n cornerImage={cornerImage}\n images={images}\n onImageError={onImageError}\n shouldOpenImageOnClick={shouldOpenImageOnClick}\n shouldHideBackground={!!shouldHideImageOrIconBackground}\n shouldShowRoundImage={!!shouldShowRoundImageOrIcon}\n />\n );\n }\n\n return undefined;\n }, [\n careOfLocationId,\n cornerElement,\n cornerImage,\n icons,\n imageBackground,\n images,\n onImageError,\n shouldHideImageOrIconBackground,\n shouldOpenImageOnClick,\n shouldShowRoundImageOrIcon,\n ]);\n\n const expandIcon = useMemo(() => {\n const internalIcon = getIsExpandableIcon(theme.accordionIcon);\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n return <StyledUnicodeIcon $icon={internalIcon} className={internalIconStyle} />;\n }, [theme.accordionIcon, theme.iconStyle]);\n\n return (\n <StyledListItemHead\n as={shouldDisableAnimation ? undefined : motion.div}\n animate={\n shouldDisableAnimation\n ? undefined\n : {\n opacity: isTitleGreyed ? 0.5 : 1,\n }\n }\n initial={shouldDisableAnimation ? undefined : false}\n transition={shouldDisableAnimation ? undefined : { duration: 0.2, type: 'tween' }}\n className=\"beta-chayns-list-item-head\"\n $isClickable={typeof onClick === 'function' || isExpandable}\n $isAnyItemExpandable={isAnyItemExpandable}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onTouchStart={typeof onLongPress === 'function' ? handleTouchStart : undefined}\n onTouchEnd={typeof onLongPress === 'function' ? handleTouchEnd : undefined}\n >\n <StyledListItemHeadLeftWrapper>\n {isAnyItemExpandable && (\n <StyledListItemHeadIndicator\n as={shouldDisableAnimation ? undefined : motion.div}\n animate={shouldDisableAnimation ? undefined : { rotate: isOpen ? 90 : 0 }}\n initial={shouldDisableAnimation ? undefined : false}\n transition={shouldDisableAnimation ? undefined : { type: 'tween' }}\n >\n {isExpandable && !shouldHideIndicator && expandIcon}\n </StyledListItemHeadIndicator>\n )}\n {leftElements && (\n <StyledListItemHeadLeftElements ref={leftElementRef} data-left-element=\"true\">\n {leftElements}\n </StyledListItemHeadLeftElements>\n )}\n {iconOrImageElement}\n </StyledListItemHeadLeftWrapper>\n <StyledListItemHeadContent\n $isIconOrImageGiven={iconOrImageElement !== undefined}\n $isOpen={isOpen}\n >\n <LayoutGroup>\n <StyledListItemHeadTitle\n as={shouldDisableAnimation ? undefined : motion.div}\n layout=\"position\"\n >\n {hasTitleInput ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider\n value={{ ...areaProvider, shouldChangeColor: true }}\n >\n <StyledListItemHeadTitleInputWrapper onClick={handleInputClick}>\n <Input\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...titleInputProps}\n value={typeof title === 'string' ? title : undefined}\n onChange={onTitleInputChange}\n />\n </StyledListItemHeadTitleInputWrapper>\n </AreaContext.Provider>\n ) : (\n <ListItemTitle\n title={title}\n titleElement={titleElement}\n isOpen={isOpen}\n shouldShowMultilineTitle={shouldShowMultilineTitle}\n rightElements={rightElements}\n onTitleWidthChange={handleTitleWidthChange}\n onResize={handleShowTooltipResize}\n />\n )}\n </StyledListItemHeadTitle>\n {shouldShowSubtitleRow && (\n <StyledListItemHeadSubtitle>\n <ListItemSubtitle\n subtitle={subtitle}\n isOpen={isOpen}\n rightElements={rightElements}\n />\n </StyledListItemHeadSubtitle>\n )}\n </LayoutGroup>\n </StyledListItemHeadContent>\n <ListItemRightElement rightElements={rightElements} />\n {hoverItem && shouldShowHoverItemContent && (\n <StyledMotionListItemHeadHoverItemWrapper\n className=\"beta-chayns-list-item-hover-item\"\n animate={{\n marginLeft: 8,\n opacity: 1,\n width: 'auto',\n }}\n initial={false}\n transition={{ duration: 0.15, type: 'tween' }}\n >\n <StyledMotionListItemHeadHoverItem>\n {hoverItem}\n </StyledMotionListItemHeadHoverItem>\n </StyledMotionListItemHeadHoverItemWrapper>\n )}\n </StyledListItemHead>\n );\n};\n\nListItemHead.displayName = 'ListItemHead';\n\nexport default ListItemHead;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AAiBA,IAAAG,aAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AAYA,IAAAO,cAAA,GAAAH,sBAAA,CAAAJ,OAAA;AACA,IAAAQ,iBAAA,GAAAJ,sBAAA,CAAAJ,OAAA;AACA,IAAAS,qBAAA,GAAAL,sBAAA,CAAAJ,OAAA;AACA,IAAAU,iBAAA,GAAAV,OAAA;AAEA,IAAAW,KAAA,GAAAX,OAAA;AACA,IAAAY,KAAA,GAAAZ,OAAA;AACA,IAAAa,MAAA,GAAAT,sBAAA,CAAAJ,OAAA;AACA,IAAAc,oBAAA,GAAAd,OAAA;AAAyE,SAAAI,uBAAAW,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAb,wBAAAa,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAjB,uBAAA,YAAAA,CAAAa,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,SAAA,WAAAA,QAAA,GAAAH,MAAA,CAAAI,MAAA,GAAAJ,MAAA,CAAAI,MAAA,CAAAC,IAAA,eAAAf,CAAA,aAAAN,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAG,CAAA,GAAAmB,SAAA,CAAAtB,CAAA,YAAAK,CAAA,IAAAF,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAZ,CAAA,EAAAE,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAF,CAAA,CAAAE,CAAA,aAAAC,CAAA,KAAAa,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAkCzE,MAAMG,YAAmC,GAAGA,CAAC;EACzCC,gBAAgB;EAChBC,WAAW;EACXC,SAAS;EACTC,KAAK;EACLC,eAAe;EACfC,MAAM;EACNC,mBAAmB;EACnBC,YAAY;EACZC,MAAM;EACNC,aAAa;EACbC,YAAY;EACZC,OAAO;EACPC,WAAW;EACXC,aAAa;EACbC,+BAA+B;EAC/BC,mBAAmB;EACnBC,sBAAsB;EACtBC,0BAA0B;EAC1BC,QAAQ;EACRC,gBAAgB;EAChBC,KAAK;EACLC,YAAY;EACZC,sBAAsB;EACtBC,sBAAsB,GAAG,KAAK;EAC9BC,aAAa;EACbC,kBAAkB;EAClBC,YAAY;EACZC,kBAAkB;EAClBC;AACJ,CAAC,KAAK;EACF,MAAM,CAACC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAC,gBAAQ,EAAC,KAAK,CAAC;EACrE,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,gBAAQ,EAAC,CAAC,CAAC;EACrD,MAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAJ,gBAAQ,EAAC,CAAC,CAAC;EAE/C,MAAMK,mBAAmB,GAAG,IAAAC,cAAM,EAAS,CAAC;EAC5C,MAAMC,aAAa,GAAG,IAAAD,cAAM,EAAC,IAAI,CAAC;EAClC,MAAME,cAAc,GAAG,IAAAF,cAAM,EAAiB,IAAI,CAAC;EAEnD,MAAMG,KAAK,GAAG,IAAAC,0BAAQ,EAAC,CAAU;EACjC,MAAMC,YAAY,GAAG,IAAAC,kBAAU,EAACC,gCAAW,CAAC;EAE5C,MAAMC,aAAa,GAAG,OAAOlB,kBAAkB,KAAK,UAAU;EAE9D,MAAMmB,qBAAqB,GACtB,CAACD,aAAa,KAAK3B,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,CAAC,IAC5D,OAAOL,aAAa,KAAK,QAAQ,IAAIA,aAAa,IAAI,QAAQ,IAAIA,aAAc;EAErF,MAAMkC,wBAAwB,GAAG,IAAAC,eAAO,EACpC,MAAM,CAAC9B,QAAQ,IAAI,CAAC2B,aAAa,EACjC,CAACA,aAAa,EAAE3B,QAAQ,CAC5B,CAAC;EAED,IAAA+B,iBAAS,EAAC,MAAM;IACZC,MAAM,CAACC,UAAU,CAAC,MAAM;MACpBb,aAAa,CAACc,OAAO,GAAG,KAAK;IACjC,CAAC,EAAE,GAAG,CAAC;EACX,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAH,iBAAS,EAAC,MAAM;IACZxB,kBAAkB,CAACS,UAAU,EAAEF,aAAa,CAAC;EACjD,CAAC,EAAE,CAACP,kBAAkB,EAAEO,aAAa,EAAEE,UAAU,CAAC,CAAC;EAEnD,MAAMmB,uBAAuB,GAAG,IAAAC,mBAAW,EACtCC,OAA8B,IAAK;IAAA,IAAAC,SAAA,EAAAC,UAAA;IAChCtB,aAAa,CAAC,EAAAqB,SAAA,GAAAD,OAAO,CAAC,CAAC,CAAC,cAAAC,SAAA,uBAAVA,SAAA,CAAYE,MAAM,CAACC,WAAW,KAAI,CAAC,CAAC;IAElD,IAAIrB,aAAa,CAACc,OAAO,EAAE;MACvB;IACJ;IAEA,MAAMQ,EAAE,IAAAH,UAAA,GAAGF,OAAO,CAAC,CAAC,CAAC,cAAAE,UAAA,uBAAVA,UAAA,CAAYC,MAAM;IAC7B,IAAI,CAACE,EAAE,EAAE;IACTtC,sBAAsB,CAACsC,EAAE,CAACC,WAAW,GAAGD,EAAE,CAACD,WAAW,CAAC;EAC3D,CAAC,EACD,CAACrC,sBAAsB,CAC3B,CAAC;EAED,MAAMwC,gBAAgB,GAAG,IAAAR,mBAAW,EAAC,MAAMxB,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EAE5E,MAAMiC,gBAAgB,GAAG,IAAAT,mBAAW,EAAC,MAAMxB,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EAE7E,MAAMkC,gBAAgB,GAAG,IAAAV,mBAAW,EAC/BW,KAAK,IAAK;IACP7B,mBAAmB,CAACgB,OAAO,GAAGF,MAAM,CAACC,UAAU,CAAC,MAAM;MAClD,IAAI,OAAOvC,WAAW,KAAK,UAAU,EAAE;QACnCA,WAAW,CAACqD,KAAK,CAAC;MACtB;IACJ,CAAC,EAAE,GAAG,CAAC;EACX,CAAC,EACD,CAACrD,WAAW,CAChB,CAAC;EAED,MAAMsD,cAAc,GAAG,IAAAZ,mBAAW,EAAC,MAAM;IACrCa,YAAY,CAAC/B,mBAAmB,CAACgB,OAAO,CAAC;EAC7C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMgB,sBAAsB,GAAG,IAAAd,mBAAW,EAAEe,KAAa,IAAK;IAC1DpC,gBAAgB,CAACoC,KAAK,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EACN,MAAMC,0BAA0B,GAAG,CAAC,EAAEnD,gBAAgB,IAAIU,mBAAmB,CAAC;EAE9E,MAAM0C,gBAAgB,GAAG,IAAAjB,mBAAW,EAAqCW,KAAK,IAAK;IAC/EA,KAAK,CAACO,eAAe,CAAC,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,kBAAkB,GAAG,IAAAzB,eAAO,EAAC,MAAM;IACrC,IAAI7C,KAAK,EAAE;MACP,oBACI3C,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAChH,aAAA,CAAAc,OAAY;QACT2B,KAAK,EAAEA,KAAM;QACbwE,oBAAoB,EAAE,CAAC,CAAC7D,+BAAgC;QACxD8D,mBAAmB,EAAE,CAAC,CAAC3D;MAA2B,CACrD,CAAC;IAEV;IAEA,IAAIZ,MAAM,EAAE;MACR,oBACI7C,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC9G,cAAA,CAAAY,OAAa;QACVgD,aAAa,EAAEA,aAAc;QAC7BpB,eAAe,EAAEA,eAAgB;QACjCJ,gBAAgB,EAAEA,gBAAiB;QACnCC,WAAW,EAAEA,WAAY;QACzBI,MAAM,EAAEA,MAAO;QACfqB,YAAY,EAAEA,YAAa;QAC3BV,sBAAsB,EAAEA,sBAAuB;QAC/C2D,oBAAoB,EAAE,CAAC,CAAC7D,+BAAgC;QACxD+D,oBAAoB,EAAE,CAAC,CAAC5D;MAA2B,CACtD,CAAC;IAEV;IAEA,OAAO6D,SAAS;EACpB,CAAC,EAAE,CACC9E,gBAAgB,EAChBwB,aAAa,EACbvB,WAAW,EACXE,KAAK,EACLC,eAAe,EACfC,MAAM,EACNqB,YAAY,EACZZ,+BAA+B,EAC/BE,sBAAsB,EACtBC,0BAA0B,CAC7B,CAAC;EAEF,MAAM8D,UAAU,GAAG,IAAA/B,eAAO,EAAC,MAAM;IAC7B,MAAMgC,YAAY,GAAG,IAAAC,yBAAmB,EAACzC,KAAK,CAAC0C,aAAa,CAAC;IAC7D,MAAMC,iBAAiB,GAAG3C,KAAK,aAALA,KAAK,eAALA,KAAK,CAAE4C,SAAS,GAAG5C,KAAK,CAAC4C,SAAS,GAAG,YAAY;IAC3E,oBAAO5H,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAACxG,KAAA,CAAAmH,iBAAiB;MAACC,KAAK,EAAEN,YAAa;MAACO,SAAS,EAAEJ;IAAkB,CAAE,CAAC;EACnF,CAAC,EAAE,CAAC3C,KAAK,CAAC0C,aAAa,EAAE1C,KAAK,CAAC4C,SAAS,CAAC,CAAC;EAE1C,oBACI5H,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA2H,kBAAkB;IACfC,EAAE,EAAElE,sBAAsB,GAAGuD,SAAS,GAAGY,aAAM,CAACC,GAAI;IACpDC,OAAO,EACHrE,sBAAsB,GAChBuD,SAAS,GACT;MACIe,OAAO,EAAEpF,aAAa,GAAG,GAAG,GAAG;IACnC,CACT;IACDqF,OAAO,EAAEvE,sBAAsB,GAAGuD,SAAS,GAAG,KAAM;IACpDiB,UAAU,EAAExE,sBAAsB,GAAGuD,SAAS,GAAG;MAAEkB,QAAQ,EAAE,GAAG;MAAEC,IAAI,EAAE;IAAQ,CAAE;IAClFV,SAAS,EAAC,4BAA4B;IACtCW,YAAY,EAAE,OAAOvF,OAAO,KAAK,UAAU,IAAIJ,YAAa;IAC5D4F,oBAAoB,EAAE7F,mBAAoB;IAC1CK,OAAO,EAAEA,OAAQ;IACjByF,YAAY,EAAEtC,gBAAiB;IAC/BuC,YAAY,EAAEtC,gBAAiB;IAC/BuC,YAAY,EAAE,OAAO1F,WAAW,KAAK,UAAU,GAAGoD,gBAAgB,GAAGc,SAAU;IAC/EyB,UAAU,EAAE,OAAO3F,WAAW,KAAK,UAAU,GAAGsD,cAAc,GAAGY;EAAU,gBAE3EtH,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA2I,6BAA6B,QACzBlG,mBAAmB,iBAChB9C,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA4I,2BAA2B;IACxBhB,EAAE,EAAElE,sBAAsB,GAAGuD,SAAS,GAAGY,aAAM,CAACC,GAAI;IACpDC,OAAO,EAAErE,sBAAsB,GAAGuD,SAAS,GAAG;MAAE4B,MAAM,EAAElG,MAAM,GAAG,EAAE,GAAG;IAAE,CAAE;IAC1EsF,OAAO,EAAEvE,sBAAsB,GAAGuD,SAAS,GAAG,KAAM;IACpDiB,UAAU,EAAExE,sBAAsB,GAAGuD,SAAS,GAAG;MAAEmB,IAAI,EAAE;IAAQ;EAAE,GAElE1F,YAAY,IAAI,CAACQ,mBAAmB,IAAIgE,UAChB,CAChC,EACArE,YAAY,iBACTlD,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA8I,8BAA8B;IAACC,GAAG,EAAErE,cAAe;IAAC,qBAAkB;EAAM,GACxE7B,YAC2B,CACnC,EACA+D,kBAC0B,CAAC,eAChCjH,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAAgJ,yBAAyB;IACtBC,mBAAmB,EAAErC,kBAAkB,KAAKK,SAAU;IACtDiC,OAAO,EAAEvG;EAAO,gBAEhBhD,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAACpH,MAAA,CAAA0J,WAAW,qBACRxJ,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAAoJ,uBAAuB;IACpBxB,EAAE,EAAElE,sBAAsB,GAAGuD,SAAS,GAAGY,aAAM,CAACC,GAAI;IACpDuB,MAAM,EAAC;EAAU,GAEhBrE,aAAa;EAAA;EACV;EACArF,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAACrG,oBAAA,CAAAuE,WAAW,CAACuE,QAAQ;IACjBC,KAAK,EAAE;MAAE,GAAG1E,YAAY;MAAE2E,iBAAiB,EAAE;IAAK;EAAE,gBAEpD7J,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAAyJ,mCAAmC;IAAC3G,OAAO,EAAE4D;EAAiB,gBAC3D/G,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAACtG,MAAA,CAAAI;EACG,6DAAAiB,QAAA,KACImC,eAAe;IACnBwF,KAAK,EAAE,OAAOhG,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG0D,SAAU;IACrDyC,QAAQ,EAAE5F;EAAmB,EAChC,CACgC,CACnB,CAAC,gBAEvBnE,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC5G,cAAA,CAAAU,OAAa;IACV4C,KAAK,EAAEA,KAAM;IACbC,YAAY,EAAEA,YAAa;IAC3Bb,MAAM,EAAEA,MAAO;IACfuC,wBAAwB,EAAEA,wBAAyB;IACnDlC,aAAa,EAAEA,aAAc;IAC7BY,kBAAkB,EAAE2C,sBAAuB;IAC3CoD,QAAQ,EAAEnE;EAAwB,CACrC,CAEgB,CAAC,EACzBP,qBAAqB,iBAClBtF,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA4J,0BAA0B,qBACvBjK,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC3G,iBAAA,CAAAS,OAAgB;IACb0C,QAAQ,EAAEA,QAAS;IACnBV,MAAM,EAAEA,MAAO;IACfK,aAAa,EAAEA;EAAc,CAChC,CACuB,CAEvB,CACU,CAAC,eAC5BrD,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC1G,qBAAA,CAAAQ,OAAoB;IAACqC,aAAa,EAAEA;EAAc,CAAE,CAAC,EACrDX,SAAS,IAAIoE,0BAA0B,iBACpC9G,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA6J,wCAAwC;IACrCnC,SAAS,EAAC,kCAAkC;IAC5CK,OAAO,EAAE;MACL+B,UAAU,EAAE,CAAC;MACb9B,OAAO,EAAE,CAAC;MACVxB,KAAK,EAAE;IACX,CAAE;IACFyB,OAAO,EAAE,KAAM;IACfC,UAAU,EAAE;MAAEC,QAAQ,EAAE,IAAI;MAAEC,IAAI,EAAE;IAAQ;EAAE,gBAE9CzI,OAAA,CAAAgB,OAAA,CAAAkG,aAAA,CAAC7G,aAAA,CAAA+J,iCAAiC,QAC7B1H,SAC8B,CACG,CAE9B,CAAC;AAE7B,CAAC;AAEDH,YAAY,CAAC8H,WAAW,GAAG,cAAc;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAvJ,OAAA,GAE3BuB,YAAY","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ListItemHead.js","names":["_react","require","_react2","_interopRequireWildcard","_ListItemIcon","_interopRequireDefault","_ListItemImage","_ListItemHead","_ListItemTitle","_ListItemSubtitle","_ListItemRightElement","_styledComponents","_Icon","_icon","_Input","_AreaContextProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","ListItemHead","careOfLocationId","cornerImage","hoverItem","icons","imageBackground","images","isAnyItemExpandable","isExpandable","isOpen","isTitleGreyed","leftElements","onClick","onLongPress","rightElements","shouldHideImageOrIconBackground","shouldHideIndicator","shouldOpenImageOnClick","shouldShowRoundImageOrIcon","subtitle","shouldForceHover","title","titleElement","setShouldEnableTooltip","shouldDisableAnimation","shouldAnimateLayout","cornerElement","onTitleWidthChange","onImageError","onTitleInputChange","titleInputProps","shouldShowHoverItem","setShouldShowHoverItem","useState","titleMaxWidth","setTitleMaxWidth","titleWidth","setTitleWidth","longPressTimeoutRef","useRef","resizeSkipRef","leftElementRef","theme","useTheme","areaProvider","useContext","AreaContext","hasTitleInput","shouldShowSubtitleRow","shouldShowMultilineTitle","useMemo","useEffect","window","setTimeout","current","handleShowTooltipResize","useCallback","entries","_entries$","_entries$2","target","clientWidth","el","scrollWidth","handleMouseEnter","handleMouseLeave","handleTouchStart","event","handleTouchEnd","clearTimeout","handleTitleWidthChange","width","shouldShowHoverItemContent","handleInputClick","stopPropagation","iconOrImageElement","createElement","shouldHideBackground","shouldShowRoundIcon","shouldShowRoundImage","undefined","expandIcon","internalIcon","getIsExpandableIcon","accordionIcon","internalIconStyle","iconStyle","StyledUnicodeIcon","$icon","className","StyledListItemHead","as","motion","div","animate","opacity","initial","transition","duration","type","$isClickable","$isAnyItemExpandable","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","StyledListItemHeadLeftWrapper","StyledListItemHeadIndicator","rotate","StyledListItemHeadLeftElements","ref","StyledListItemHeadContent","$isIconOrImageGiven","$isOpen","LayoutGroup","StyledListItemHeadTitle","layout","Provider","value","shouldChangeColor","StyledListItemHeadTitleInputWrapper","onChange","onResize","StyledListItemHeadSubtitle","StyledMotionListItemHeadHoverItemWrapper","marginLeft","StyledMotionListItemHeadHoverItem","displayName","_default","exports"],"sources":["../../../../../../src/components/list/list-item/list-item-head/ListItemHead.tsx"],"sourcesContent":["import { LayoutGroup, motion } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n CSSProperties,\n FC,\n MouseEventHandler,\n ReactNode,\n SyntheticEvent,\n TouchEventHandler,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { IListItemRightElements } from '../../../../types/list';\nimport type { InputProps } from '../../../input/Input';\nimport ListItemIcon from './list-item-icon/ListItemIcon';\nimport ListItemImage from './list-item-image/ListItemImage';\nimport {\n StyledListItemHead,\n StyledListItemHeadContent,\n StyledListItemHeadIndicator,\n StyledListItemHeadLeftElements,\n StyledListItemHeadLeftWrapper,\n StyledListItemHeadSubtitle,\n StyledListItemHeadTitle,\n StyledListItemHeadTitleInputWrapper,\n StyledMotionListItemHeadHoverItem,\n StyledMotionListItemHeadHoverItemWrapper,\n} from './ListItemHead.styles';\nimport ListItemTitle from './list-item-title/ListItemTitle';\nimport ListItemSubtitle from './list-item-subtitle/ListItemSubtitle';\nimport ListItemRightElement from './list-item-right-element/ListItemRightElement';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../../../color-scheme-provider/ColorSchemeProvider';\nimport { StyledUnicodeIcon } from '../../../icon/Icon.styles';\nimport { getIsExpandableIcon } from '../../../../utils/icon';\nimport Input from '../../../input/Input';\nimport { AreaContext } from '../../../area-provider/AreaContextProvider';\n\ntype ListItemHeadProps = {\n careOfLocationId?: number;\n cornerImage?: string;\n hoverItem?: ReactNode;\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n images?: string[];\n isAnyItemExpandable: boolean;\n isExpandable: boolean;\n isOpen: boolean;\n isTitleGreyed?: boolean;\n leftElements?: ReactNode;\n onClick?: MouseEventHandler<HTMLDivElement>;\n onLongPress?: TouchEventHandler<HTMLDivElement>;\n rightElements?: IListItemRightElements;\n shouldHideImageOrIconBackground?: boolean;\n shouldHideIndicator?: boolean;\n shouldOpenImageOnClick: boolean;\n shouldShowRoundImageOrIcon?: boolean;\n subtitle?: ReactNode;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldForceHover?: boolean;\n setShouldEnableTooltip: (value: boolean) => void;\n shouldDisableAnimation?: boolean;\n shouldAnimateLayout?: boolean;\n cornerElement?: ReactNode;\n onTitleWidthChange: (titleWidth: number, titleMaxWidth: number) => void;\n onImageError?: (event: SyntheticEvent<HTMLImageElement, Event>, index: number) => void;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n};\n\nconst ListItemHead: FC<ListItemHeadProps> = ({\n careOfLocationId,\n cornerImage,\n hoverItem,\n icons,\n imageBackground,\n images,\n isAnyItemExpandable,\n isExpandable,\n isOpen,\n isTitleGreyed,\n leftElements,\n onClick,\n onLongPress,\n rightElements,\n shouldHideImageOrIconBackground,\n shouldHideIndicator,\n shouldOpenImageOnClick,\n shouldShowRoundImageOrIcon,\n subtitle,\n shouldForceHover,\n title,\n titleElement,\n setShouldEnableTooltip,\n shouldDisableAnimation = false,\n shouldAnimateLayout = false,\n cornerElement,\n onTitleWidthChange,\n onImageError,\n onTitleInputChange,\n titleInputProps,\n}) => {\n const [shouldShowHoverItem, setShouldShowHoverItem] = useState(false);\n const [titleMaxWidth, setTitleMaxWidth] = useState(0);\n const [titleWidth, setTitleWidth] = useState(0);\n\n const longPressTimeoutRef = useRef<number>();\n const resizeSkipRef = useRef(true);\n const leftElementRef = useRef<HTMLDivElement>(null);\n\n const theme = useTheme() as Theme;\n const areaProvider = useContext(AreaContext);\n\n const hasTitleInput = typeof onTitleInputChange === 'function';\n\n const shouldShowSubtitleRow =\n (!hasTitleInput && (subtitle || typeof subtitle === 'string')) ||\n (typeof rightElements === 'object' && rightElements && 'bottom' in rightElements);\n\n const shouldShowMultilineTitle = useMemo(\n () => !subtitle && !hasTitleInput,\n [hasTitleInput, subtitle],\n );\n\n useEffect(() => {\n window.setTimeout(() => {\n resizeSkipRef.current = false;\n }, 200);\n }, []);\n\n useEffect(() => {\n onTitleWidthChange(titleWidth, titleMaxWidth);\n }, [onTitleWidthChange, titleMaxWidth, titleWidth]);\n\n const handleShowTooltipResize = useCallback(\n (entries: ResizeObserverEntry[]) => {\n setTitleWidth(entries[0]?.target.clientWidth ?? 0);\n\n if (resizeSkipRef.current) {\n return;\n }\n\n const el = entries[0]?.target;\n if (!el) return;\n setShouldEnableTooltip(el.scrollWidth > el.clientWidth);\n },\n [setShouldEnableTooltip],\n );\n\n const handleMouseEnter = useCallback(() => setShouldShowHoverItem(true), []);\n\n const handleMouseLeave = useCallback(() => setShouldShowHoverItem(false), []);\n\n const handleTouchStart = useCallback<TouchEventHandler<HTMLDivElement>>(\n (event) => {\n longPressTimeoutRef.current = window.setTimeout(() => {\n if (typeof onLongPress === 'function') {\n onLongPress(event);\n }\n }, 400);\n },\n [onLongPress],\n );\n\n const handleTouchEnd = useCallback(() => {\n clearTimeout(longPressTimeoutRef.current);\n }, []);\n\n const handleTitleWidthChange = useCallback((width: number) => {\n setTitleMaxWidth(width);\n }, []);\n const shouldShowHoverItemContent = !!(shouldForceHover || shouldShowHoverItem);\n\n const handleInputClick = useCallback<MouseEventHandler<HTMLDivElement>>((event) => {\n event.stopPropagation();\n }, []);\n\n const iconOrImageElement = useMemo(() => {\n if (icons) {\n return (\n <ListItemIcon\n icons={icons}\n shouldHideBackground={!!shouldHideImageOrIconBackground}\n shouldShowRoundIcon={!!shouldShowRoundImageOrIcon}\n />\n );\n }\n\n if (images) {\n return (\n <ListItemImage\n cornerElement={cornerElement}\n imageBackground={imageBackground}\n careOfLocationId={careOfLocationId}\n cornerImage={cornerImage}\n images={images}\n onImageError={onImageError}\n shouldOpenImageOnClick={shouldOpenImageOnClick}\n shouldHideBackground={!!shouldHideImageOrIconBackground}\n shouldShowRoundImage={!!shouldShowRoundImageOrIcon}\n />\n );\n }\n\n return undefined;\n }, [\n careOfLocationId,\n cornerElement,\n cornerImage,\n icons,\n imageBackground,\n images,\n onImageError,\n shouldHideImageOrIconBackground,\n shouldOpenImageOnClick,\n shouldShowRoundImageOrIcon,\n ]);\n\n const expandIcon = useMemo(() => {\n const internalIcon = getIsExpandableIcon(theme.accordionIcon);\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n return <StyledUnicodeIcon $icon={internalIcon} className={internalIconStyle} />;\n }, [theme.accordionIcon, theme.iconStyle]);\n\n return (\n <StyledListItemHead\n as={shouldDisableAnimation ? undefined : motion.div}\n animate={\n shouldDisableAnimation\n ? undefined\n : {\n opacity: isTitleGreyed ? 0.5 : 1,\n }\n }\n initial={shouldDisableAnimation ? undefined : false}\n transition={shouldDisableAnimation ? undefined : { duration: 0.2, type: 'tween' }}\n className=\"beta-chayns-list-item-head\"\n $isClickable={typeof onClick === 'function' || isExpandable}\n $isAnyItemExpandable={isAnyItemExpandable}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onTouchStart={typeof onLongPress === 'function' ? handleTouchStart : undefined}\n onTouchEnd={typeof onLongPress === 'function' ? handleTouchEnd : undefined}\n >\n <StyledListItemHeadLeftWrapper>\n {isAnyItemExpandable && (\n <StyledListItemHeadIndicator\n as={shouldDisableAnimation ? undefined : motion.div}\n animate={shouldDisableAnimation ? undefined : { rotate: isOpen ? 90 : 0 }}\n initial={shouldDisableAnimation ? undefined : false}\n transition={shouldDisableAnimation ? undefined : { type: 'tween' }}\n >\n {isExpandable && !shouldHideIndicator && expandIcon}\n </StyledListItemHeadIndicator>\n )}\n {leftElements && (\n <StyledListItemHeadLeftElements ref={leftElementRef} data-left-element=\"true\">\n {leftElements}\n </StyledListItemHeadLeftElements>\n )}\n {iconOrImageElement}\n </StyledListItemHeadLeftWrapper>\n <StyledListItemHeadContent\n $isIconOrImageGiven={iconOrImageElement !== undefined}\n $isOpen={isOpen}\n >\n <LayoutGroup>\n <StyledListItemHeadTitle\n as={shouldDisableAnimation ? undefined : motion.div}\n layout={shouldAnimateLayout ? 'position' : undefined}\n >\n {hasTitleInput ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider\n value={{ ...areaProvider, shouldChangeColor: true }}\n >\n <StyledListItemHeadTitleInputWrapper onClick={handleInputClick}>\n <Input\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...titleInputProps}\n value={typeof title === 'string' ? title : undefined}\n onChange={onTitleInputChange}\n />\n </StyledListItemHeadTitleInputWrapper>\n </AreaContext.Provider>\n ) : (\n <ListItemTitle\n title={title}\n titleElement={titleElement}\n isOpen={isOpen}\n shouldShowMultilineTitle={shouldShowMultilineTitle}\n rightElements={rightElements}\n onTitleWidthChange={handleTitleWidthChange}\n onResize={handleShowTooltipResize}\n />\n )}\n </StyledListItemHeadTitle>\n {shouldShowSubtitleRow && (\n <StyledListItemHeadSubtitle>\n <ListItemSubtitle\n subtitle={subtitle}\n isOpen={isOpen}\n rightElements={rightElements}\n />\n </StyledListItemHeadSubtitle>\n )}\n </LayoutGroup>\n </StyledListItemHeadContent>\n <ListItemRightElement rightElements={rightElements} />\n {hoverItem && shouldShowHoverItemContent && (\n <StyledMotionListItemHeadHoverItemWrapper\n className=\"beta-chayns-list-item-hover-item\"\n animate={{\n marginLeft: 8,\n opacity: 1,\n width: 'auto',\n }}\n initial={false}\n transition={{ duration: 0.15, type: 'tween' }}\n >\n <StyledMotionListItemHeadHoverItem>\n {hoverItem}\n </StyledMotionListItemHeadHoverItem>\n </StyledMotionListItemHeadHoverItemWrapper>\n )}\n </StyledListItemHead>\n );\n};\n\nListItemHead.displayName = 'ListItemHead';\n\nexport default ListItemHead;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -52,7 +52,7 @@ const SearchBoxBody = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
52
52
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_SearchBoxBody.StyledSearchBoxBody, {
|
|
53
53
|
onClick: handlePreventDefault,
|
|
54
54
|
ref: ref,
|
|
55
|
-
inert: !shouldShow
|
|
55
|
+
inert: !shouldShow || undefined
|
|
56
56
|
}, filterButtons && (filterButtons === null || filterButtons === void 0 ? void 0 : filterButtons.length) > 1 && /*#__PURE__*/_react.default.createElement(_SearchBoxBody.StyledSearchBoxBodyHead, {
|
|
57
57
|
ref: headRef,
|
|
58
58
|
$hasScrolled: hasScrolled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBoxBody.js","names":["_react","_interopRequireWildcard","require","_element","_uuid","_searchBox","_FilterButtons","_interopRequireDefault","_SearchBoxBody","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBoxBody","forwardRef","filterButtons","selectedGroups","height","maxHeight","children","shouldShow","onGroupSelect","shouldHideFilterButtons","ref","hasScrolled","setHasScrolled","useState","currentGroupName","setCurrentGroupName","headRef","useRef","headSize","useElementSize","uuid","useUuid","headHeight","useMemo","useEffect","element","document","getElementById","length","getCurrentGroupName","handlePreventDefault","event","preventDefault","stopPropagation","handleScroll","useCallback","scrollTop","target","createElement","StyledSearchBoxBody","onClick","inert","undefined","StyledSearchBoxBodyHead","$hasScrolled","$hasGroupName","items","size","onSelect","selectedItemIds","StyledSearchBoxBodyHeadGroupName","replace","StyledSearchBoxBodyContent","$height","$headHeight","$maxHeight","key","id","className","tabIndex","onScroll","displayName","_default","exports"],"sources":["../../../../../src/components/search-box/search-box-body/SearchBoxBody.tsx"],"sourcesContent":["import React, {\n forwardRef,\n MouseEvent,\n UIEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { useElementSize } from '../../../hooks/element';\nimport { useUuid } from '../../../hooks/uuid';\nimport type { IFilterButtonItem } from '../../../types/filterButtons';\nimport { getCurrentGroupName } from '../../../utils/searchBox';\nimport FilterButtons from '../../filter-buttons/FilterButtons';\nimport {\n StyledSearchBoxBody,\n StyledSearchBoxBodyContent,\n StyledSearchBoxBodyHead,\n StyledSearchBoxBodyHeadGroupName,\n} from './SearchBoxBody.styles';\n\nexport type SearchBoxBodyProps = {\n children: ReactNode;\n filterButtons?: IFilterButtonItem[];\n selectedGroups?: string[];\n height: number;\n maxHeight?: number;\n onGroupSelect?: (keys: string[]) => void;\n shouldHideFilterButtons?: boolean;\n shouldShow: boolean;\n};\n\nconst SearchBoxBody = forwardRef<HTMLDivElement, SearchBoxBodyProps>(\n (\n {\n filterButtons,\n selectedGroups,\n height,\n maxHeight = 300,\n children,\n shouldShow,\n onGroupSelect,\n shouldHideFilterButtons,\n },\n ref,\n ) => {\n const [hasScrolled, setHasScrolled] = useState(false);\n const [currentGroupName, setCurrentGroupName] = useState('');\n\n const headRef = useRef<HTMLDivElement>(null);\n\n const headSize = useElementSize(headRef);\n\n const uuid = useUuid();\n\n const headHeight = useMemo(\n () => (headSize?.height ? headSize.height + 15 : 0),\n [headSize?.height],\n );\n\n useEffect(() => {\n const element = document.getElementById(`searchBoxContent__${uuid}`);\n\n if (\n element &&\n ((selectedGroups?.length === 1 && selectedGroups[0] === 'all') ||\n selectedGroups?.length !== 1)\n ) {\n setCurrentGroupName(getCurrentGroupName(element));\n } else {\n setCurrentGroupName('');\n }\n }, [uuid, children, selectedGroups]);\n\n const handlePreventDefault = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleScroll = useCallback(\n (event: UIEvent) => {\n const { scrollTop } = event.target as HTMLDivElement;\n\n setHasScrolled(scrollTop > 1);\n\n if (\n (selectedGroups?.length === 1 && selectedGroups[0] === 'all') ||\n selectedGroups?.length !== 1\n ) {\n setCurrentGroupName(getCurrentGroupName(event.target as HTMLDivElement));\n }\n },\n [selectedGroups],\n );\n\n return useMemo(\n () => (\n <StyledSearchBoxBody\n onClick={handlePreventDefault}\n ref={ref}\n inert={!shouldShow ? 'true' : undefined}\n >\n {filterButtons && filterButtons?.length > 1 && (\n <StyledSearchBoxBodyHead\n ref={headRef}\n $hasScrolled={hasScrolled}\n $hasGroupName={!!currentGroupName}\n >\n {!shouldHideFilterButtons && (\n <FilterButtons\n items={filterButtons}\n size={0}\n onSelect={onGroupSelect}\n selectedItemIds={selectedGroups}\n />\n )}\n <StyledSearchBoxBodyHeadGroupName>\n {currentGroupName.replace('_', '')}\n </StyledSearchBoxBodyHeadGroupName>\n </StyledSearchBoxBodyHead>\n )}\n <StyledSearchBoxBodyContent\n $height={height}\n $headHeight={headHeight}\n $maxHeight={maxHeight}\n key=\"content\"\n id={`searchBoxContent__${uuid}`}\n className=\"chayns-scrollbar\"\n tabIndex={0}\n onScroll={handleScroll}\n >\n {children}\n </StyledSearchBoxBodyContent>\n </StyledSearchBoxBody>\n ),\n [\n children,\n currentGroupName,\n filterButtons,\n handleScroll,\n hasScrolled,\n headHeight,\n height,\n onGroupSelect,\n maxHeight,\n ref,\n selectedGroups,\n shouldHideFilterButtons,\n shouldShow,\n uuid,\n ],\n );\n },\n);\n\nSearchBoxBody.displayName = 'SearchBoxBody';\n\nexport default SearchBoxBody;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchBoxBody.js","names":["_react","_interopRequireWildcard","require","_element","_uuid","_searchBox","_FilterButtons","_interopRequireDefault","_SearchBoxBody","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBoxBody","forwardRef","filterButtons","selectedGroups","height","maxHeight","children","shouldShow","onGroupSelect","shouldHideFilterButtons","ref","hasScrolled","setHasScrolled","useState","currentGroupName","setCurrentGroupName","headRef","useRef","headSize","useElementSize","uuid","useUuid","headHeight","useMemo","useEffect","element","document","getElementById","length","getCurrentGroupName","handlePreventDefault","event","preventDefault","stopPropagation","handleScroll","useCallback","scrollTop","target","createElement","StyledSearchBoxBody","onClick","inert","undefined","StyledSearchBoxBodyHead","$hasScrolled","$hasGroupName","items","size","onSelect","selectedItemIds","StyledSearchBoxBodyHeadGroupName","replace","StyledSearchBoxBodyContent","$height","$headHeight","$maxHeight","key","id","className","tabIndex","onScroll","displayName","_default","exports"],"sources":["../../../../../src/components/search-box/search-box-body/SearchBoxBody.tsx"],"sourcesContent":["import React, {\n forwardRef,\n MouseEvent,\n UIEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { useElementSize } from '../../../hooks/element';\nimport { useUuid } from '../../../hooks/uuid';\nimport type { IFilterButtonItem } from '../../../types/filterButtons';\nimport { getCurrentGroupName } from '../../../utils/searchBox';\nimport FilterButtons from '../../filter-buttons/FilterButtons';\nimport {\n StyledSearchBoxBody,\n StyledSearchBoxBodyContent,\n StyledSearchBoxBodyHead,\n StyledSearchBoxBodyHeadGroupName,\n} from './SearchBoxBody.styles';\n\nexport type SearchBoxBodyProps = {\n children: ReactNode;\n filterButtons?: IFilterButtonItem[];\n selectedGroups?: string[];\n height: number;\n maxHeight?: number;\n onGroupSelect?: (keys: string[]) => void;\n shouldHideFilterButtons?: boolean;\n shouldShow: boolean;\n};\n\nconst SearchBoxBody = forwardRef<HTMLDivElement, SearchBoxBodyProps>(\n (\n {\n filterButtons,\n selectedGroups,\n height,\n maxHeight = 300,\n children,\n shouldShow,\n onGroupSelect,\n shouldHideFilterButtons,\n },\n ref,\n ) => {\n const [hasScrolled, setHasScrolled] = useState(false);\n const [currentGroupName, setCurrentGroupName] = useState('');\n\n const headRef = useRef<HTMLDivElement>(null);\n\n const headSize = useElementSize(headRef);\n\n const uuid = useUuid();\n\n const headHeight = useMemo(\n () => (headSize?.height ? headSize.height + 15 : 0),\n [headSize?.height],\n );\n\n useEffect(() => {\n const element = document.getElementById(`searchBoxContent__${uuid}`);\n\n if (\n element &&\n ((selectedGroups?.length === 1 && selectedGroups[0] === 'all') ||\n selectedGroups?.length !== 1)\n ) {\n setCurrentGroupName(getCurrentGroupName(element));\n } else {\n setCurrentGroupName('');\n }\n }, [uuid, children, selectedGroups]);\n\n const handlePreventDefault = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleScroll = useCallback(\n (event: UIEvent) => {\n const { scrollTop } = event.target as HTMLDivElement;\n\n setHasScrolled(scrollTop > 1);\n\n if (\n (selectedGroups?.length === 1 && selectedGroups[0] === 'all') ||\n selectedGroups?.length !== 1\n ) {\n setCurrentGroupName(getCurrentGroupName(event.target as HTMLDivElement));\n }\n },\n [selectedGroups],\n );\n\n return useMemo(\n () => (\n <StyledSearchBoxBody\n onClick={handlePreventDefault}\n ref={ref}\n inert={!shouldShow || undefined}\n >\n {filterButtons && filterButtons?.length > 1 && (\n <StyledSearchBoxBodyHead\n ref={headRef}\n $hasScrolled={hasScrolled}\n $hasGroupName={!!currentGroupName}\n >\n {!shouldHideFilterButtons && (\n <FilterButtons\n items={filterButtons}\n size={0}\n onSelect={onGroupSelect}\n selectedItemIds={selectedGroups}\n />\n )}\n <StyledSearchBoxBodyHeadGroupName>\n {currentGroupName.replace('_', '')}\n </StyledSearchBoxBodyHeadGroupName>\n </StyledSearchBoxBodyHead>\n )}\n <StyledSearchBoxBodyContent\n $height={height}\n $headHeight={headHeight}\n $maxHeight={maxHeight}\n key=\"content\"\n id={`searchBoxContent__${uuid}`}\n className=\"chayns-scrollbar\"\n tabIndex={0}\n onScroll={handleScroll}\n >\n {children}\n </StyledSearchBoxBodyContent>\n </StyledSearchBoxBody>\n ),\n [\n children,\n currentGroupName,\n filterButtons,\n handleScroll,\n hasScrolled,\n headHeight,\n height,\n onGroupSelect,\n maxHeight,\n ref,\n selectedGroups,\n shouldHideFilterButtons,\n shouldShow,\n uuid,\n ],\n );\n },\n);\n\nSearchBoxBody.displayName = 'SearchBoxBody';\n\nexport default SearchBoxBody;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/cjs/hooks/element.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":["_react","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isSameRect","a","b","width","height","x","y","useElementSize","ref","shouldUseChildElement","shouldUseParentElement","size","setSize","useState","useEffect","target","current","_ref$current","parentElement","_ref$current2","firstElementChild","undefined","frameId","updateSize","nextSize","window","cancelAnimationFrame","requestAnimationFrame","currentSize","getBoundingClientRect","observer","ResizeObserver","entry","contentRect","observe","disconnect","exports","cloneWithTabIndex","node","isValidElement","element","type","React","Fragment","children","Children","map","props","cloneElement","displayName","createElement","tabIndex","getClonedElement","content","preventEvents","onClick","stopPropagation","onMouseDown","onMouseUp","onKeyDown","onKeyUp","onFocus","onBlur","useMeasuredClone","shouldPreventTextWrapping","useRef","clonedElement","measure","offsetWidth","offsetHeight","measuredElement","style","position","opacity","pointerEvents","userSelect","zIndex","visibility","inert","useIsMeasuredClone","isClone","setIsClone","el","hasAttribute","useIsInsideDialog","isInsideDialog","setIsInsideDialog","closest"],"sources":["../../../src/hooks/element.tsx"],"sourcesContent":["import React, {\n Children,\n cloneElement,\n HTMLAttributes,\n isValidElement,\n MutableRefObject,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\ninterface UseElementSizeOptions {\n shouldUseChildElement?: boolean;\n shouldUseParentElement?: boolean;\n}\n\nconst isSameRect = (a?: DOMRectReadOnly, b?: DOMRectReadOnly) => {\n if (!a || !b) return false;\n\n return a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;\n};\n\nexport const useElementSize = (\n ref: MutableRefObject<HTMLDivElement | HTMLLabelElement | null>,\n { shouldUseChildElement = false, shouldUseParentElement = false }: UseElementSizeOptions = {},\n): DOMRectReadOnly | undefined => {\n const [size, setSize] = useState<DOMRectReadOnly>();\n\n useEffect(() => {\n let target: HTMLElement | null = ref.current;\n\n if (shouldUseParentElement) {\n target = ref.current?.parentElement ?? null;\n }\n\n if (shouldUseChildElement) {\n target = ref.current?.firstElementChild as HTMLElement | null;\n }\n\n if (!target) return undefined;\n\n let frameId: number | undefined;\n\n const updateSize = (nextSize: DOMRectReadOnly) => {\n if (frameId) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n setSize((currentSize) =>\n isSameRect(currentSize, nextSize) ? currentSize : nextSize,\n );\n });\n };\n\n updateSize(target.getBoundingClientRect());\n\n const observer = new ResizeObserver(([entry]) => {\n if (!entry || entry.target !== target) return;\n\n updateSize(entry.contentRect);\n });\n\n observer.observe(target);\n\n return () => {\n if (frameId) {\n window.cancelAnimationFrame(frameId);\n }\n\n observer.disconnect();\n };\n }, [ref, shouldUseChildElement, shouldUseParentElement]);\n\n return size;\n};\n\nconst cloneWithTabIndex = (node: ReactNode): ReactNode => {\n if (!isValidElement(node)) return node;\n\n const element = node as ReactElement;\n\n if (element.type === React.Fragment) {\n const children = Children.map(element.props.children, cloneWithTabIndex);\n\n return cloneElement(element, {\n ...element.props,\n children,\n });\n }\n\n const children = element.props.children\n ? Children.map(element.props.children, cloneWithTabIndex)\n : element.props.children;\n\n if ((element.type as any).displayName === 'Button') {\n return (\n // eslint-disable-next-line react/button-has-type\n <button tabIndex={-1}>{children}</button>\n );\n }\n\n return cloneElement(element, {\n ...element.props,\n tabIndex: -1,\n children,\n });\n};\n\nconst getClonedElement = (content: ReactNode) => {\n const preventEvents: Partial<HTMLAttributes<never>> = {\n onClick: (e) => e.stopPropagation(),\n onMouseDown: (e) => e.stopPropagation(),\n onMouseUp: (e) => e.stopPropagation(),\n onKeyDown: (e) => e.stopPropagation(),\n onKeyUp: (e) => e.stopPropagation(),\n onFocus: (e) => e.stopPropagation(),\n onBlur: (e) => e.stopPropagation(),\n };\n\n if (typeof content === 'string') {\n return (\n <span tabIndex={-1} data-measured-clone>\n {content}\n </span>\n );\n }\n\n if (isValidElement(content)) {\n return cloneWithTabIndex(\n cloneElement(content, {\n ...preventEvents,\n 'data-measured-clone': true,\n }),\n );\n }\n\n return content;\n};\n\ninterface UseMeasuredCloneOptions {\n content: ReactNode;\n shouldPreventTextWrapping?: boolean;\n}\n\nexport const useMeasuredClone = ({\n content,\n shouldPreventTextWrapping = true,\n}: UseMeasuredCloneOptions) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n const clonedElement = getClonedElement(content);\n\n useEffect(() => {\n const measure = () => {\n if (!ref.current) return;\n\n const { offsetWidth: width, offsetHeight: height } = ref.current;\n\n setSize({ width: width + (shouldPreventTextWrapping ? 10 : 0), height });\n };\n\n measure();\n\n const observer = new ResizeObserver(measure);\n\n if (ref.current) observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, [shouldPreventTextWrapping]);\n\n const measuredElement = (\n <div\n data-measured-clone=\"true\"\n ref={ref}\n style={{\n position: 'fixed',\n opacity: 0,\n pointerEvents: 'none',\n userSelect: 'none',\n zIndex: -1,\n height: 'auto',\n width: 'auto',\n visibility: 'hidden',\n }}\n inert=\"true\"\n tabIndex={-1}\n >\n {clonedElement}\n </div>\n );\n\n return {\n measuredElement,\n width: size.width,\n height: size.height,\n };\n};\n\nexport const useIsMeasuredClone = <T extends HTMLElement>() => {\n const ref = useRef<T | null>(null);\n\n const [isClone, setIsClone] = useState(false);\n\n useEffect(() => {\n if (!ref.current) return;\n\n let el: HTMLElement | null = ref.current;\n\n while (el) {\n if (el.hasAttribute('data-measured-clone')) {\n setIsClone(true);\n\n return;\n }\n\n el = el.parentElement;\n }\n\n setIsClone(false);\n }, []);\n\n return [isClone, ref] as const;\n};\n\nexport const useIsInsideDialog = <T extends HTMLElement>(ref: MutableRefObject<T | null>) => {\n const [isInsideDialog, setIsInsideDialog] = useState(false);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n setIsInsideDialog(ref.current.closest('.dialog-inner') !== null);\n }, [ref]);\n\n return isInsideDialog;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"element.js","names":["_react","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isSameRect","a","b","width","height","x","y","useElementSize","ref","shouldUseChildElement","shouldUseParentElement","size","setSize","useState","useEffect","target","current","_ref$current","parentElement","_ref$current2","firstElementChild","undefined","frameId","updateSize","nextSize","window","cancelAnimationFrame","requestAnimationFrame","currentSize","getBoundingClientRect","observer","ResizeObserver","entry","contentRect","observe","disconnect","exports","cloneWithTabIndex","node","isValidElement","element","type","React","Fragment","children","Children","map","props","cloneElement","displayName","createElement","tabIndex","getClonedElement","content","preventEvents","onClick","stopPropagation","onMouseDown","onMouseUp","onKeyDown","onKeyUp","onFocus","onBlur","useMeasuredClone","shouldPreventTextWrapping","useRef","clonedElement","measure","offsetWidth","offsetHeight","measuredElement","style","position","opacity","pointerEvents","userSelect","zIndex","visibility","inert","useIsMeasuredClone","isClone","setIsClone","el","hasAttribute","useIsInsideDialog","isInsideDialog","setIsInsideDialog","closest"],"sources":["../../../src/hooks/element.tsx"],"sourcesContent":["import React, {\n Children,\n cloneElement,\n HTMLAttributes,\n isValidElement,\n MutableRefObject,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\ninterface UseElementSizeOptions {\n shouldUseChildElement?: boolean;\n shouldUseParentElement?: boolean;\n}\n\nconst isSameRect = (a?: DOMRectReadOnly, b?: DOMRectReadOnly) => {\n if (!a || !b) return false;\n\n return a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;\n};\n\nexport const useElementSize = (\n ref: MutableRefObject<HTMLDivElement | HTMLLabelElement | null>,\n { shouldUseChildElement = false, shouldUseParentElement = false }: UseElementSizeOptions = {},\n): DOMRectReadOnly | undefined => {\n const [size, setSize] = useState<DOMRectReadOnly>();\n\n useEffect(() => {\n let target: HTMLElement | null = ref.current;\n\n if (shouldUseParentElement) {\n target = ref.current?.parentElement ?? null;\n }\n\n if (shouldUseChildElement) {\n target = ref.current?.firstElementChild as HTMLElement | null;\n }\n\n if (!target) return undefined;\n\n let frameId: number | undefined;\n\n const updateSize = (nextSize: DOMRectReadOnly) => {\n if (frameId) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n setSize((currentSize) =>\n isSameRect(currentSize, nextSize) ? currentSize : nextSize,\n );\n });\n };\n\n updateSize(target.getBoundingClientRect());\n\n const observer = new ResizeObserver(([entry]) => {\n if (!entry || entry.target !== target) return;\n\n updateSize(entry.contentRect);\n });\n\n observer.observe(target);\n\n return () => {\n if (frameId) {\n window.cancelAnimationFrame(frameId);\n }\n\n observer.disconnect();\n };\n }, [ref, shouldUseChildElement, shouldUseParentElement]);\n\n return size;\n};\n\nconst cloneWithTabIndex = (node: ReactNode): ReactNode => {\n if (!isValidElement(node)) return node;\n\n const element = node as ReactElement;\n\n if (element.type === React.Fragment) {\n const children = Children.map(element.props.children, cloneWithTabIndex);\n\n return cloneElement(element, {\n ...element.props,\n children,\n });\n }\n\n const children = element.props.children\n ? Children.map(element.props.children, cloneWithTabIndex)\n : element.props.children;\n\n if ((element.type as any).displayName === 'Button') {\n return (\n // eslint-disable-next-line react/button-has-type\n <button tabIndex={-1}>{children}</button>\n );\n }\n\n return cloneElement(element, {\n ...element.props,\n tabIndex: -1,\n children,\n });\n};\n\nconst getClonedElement = (content: ReactNode) => {\n const preventEvents: Partial<HTMLAttributes<never>> = {\n onClick: (e) => e.stopPropagation(),\n onMouseDown: (e) => e.stopPropagation(),\n onMouseUp: (e) => e.stopPropagation(),\n onKeyDown: (e) => e.stopPropagation(),\n onKeyUp: (e) => e.stopPropagation(),\n onFocus: (e) => e.stopPropagation(),\n onBlur: (e) => e.stopPropagation(),\n };\n\n if (typeof content === 'string') {\n return (\n <span tabIndex={-1} data-measured-clone>\n {content}\n </span>\n );\n }\n\n if (isValidElement(content)) {\n return cloneWithTabIndex(\n cloneElement(content, {\n ...preventEvents,\n 'data-measured-clone': true,\n }),\n );\n }\n\n return content;\n};\n\ninterface UseMeasuredCloneOptions {\n content: ReactNode;\n shouldPreventTextWrapping?: boolean;\n}\n\nexport const useMeasuredClone = ({\n content,\n shouldPreventTextWrapping = true,\n}: UseMeasuredCloneOptions) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n const clonedElement = getClonedElement(content);\n\n useEffect(() => {\n const measure = () => {\n if (!ref.current) return;\n\n const { offsetWidth: width, offsetHeight: height } = ref.current;\n\n setSize({ width: width + (shouldPreventTextWrapping ? 10 : 0), height });\n };\n\n measure();\n\n const observer = new ResizeObserver(measure);\n\n if (ref.current) observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, [shouldPreventTextWrapping]);\n\n const measuredElement = (\n <div\n data-measured-clone=\"true\"\n ref={ref}\n style={{\n position: 'fixed',\n opacity: 0,\n pointerEvents: 'none',\n userSelect: 'none',\n zIndex: -1,\n height: 'auto',\n width: 'auto',\n visibility: 'hidden',\n }}\n inert={true}\n tabIndex={-1}\n >\n {clonedElement}\n </div>\n );\n\n return {\n measuredElement,\n width: size.width,\n height: size.height,\n };\n};\n\nexport const useIsMeasuredClone = <T extends HTMLElement>() => {\n const ref = useRef<T | null>(null);\n\n const [isClone, setIsClone] = useState(false);\n\n useEffect(() => {\n if (!ref.current) return;\n\n let el: HTMLElement | null = ref.current;\n\n while (el) {\n if (el.hasAttribute('data-measured-clone')) {\n setIsClone(true);\n\n return;\n }\n\n el = el.parentElement;\n }\n\n setIsClone(false);\n }, []);\n\n return [isClone, ref] as const;\n};\n\nexport const useIsInsideDialog = <T extends HTMLElement>(ref: MutableRefObject<T | null>) => {\n const [isInsideDialog, setIsInsideDialog] = useState(false);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n setIsInsideDialog(ref.current.closest('.dialog-inner') !== null);\n }, [ref]);\n\n return isInsideDialog;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/esm/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js
CHANGED
|
@@ -91,7 +91,7 @@ const DelayedDropdownContent = ({
|
|
|
91
91
|
duration: ANIMATION_DELAY_MS / 1000,
|
|
92
92
|
type: 'tween'
|
|
93
93
|
},
|
|
94
|
-
inert: !shouldShowContent
|
|
94
|
+
inert: !shouldShowContent || undefined
|
|
95
95
|
}, children);
|
|
96
96
|
};
|
|
97
97
|
DelayedDropdownContent.displayName = 'DelayedDropdownContent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayedDropdownContent.js","names":["React","useCallback","useEffect","useRef","useState","StyledMotionDelayedDropdownContent","ANIMATION_DELAY_MS","AnimationType","DelayedDropdownContent","children","shouldShowContent","onMeasure","coordinates","transform","animationState","setAnimationState","None","ref","timeoutRef","measureElement","current","height","width","x","y","getBoundingClientRect","scrollHeight","element","FadeIn","window","setTimeout","Visible","observer","ResizeObserver","observe","disconnect","Hidden","clearTimeout","prevState","FadeOut","refCallback","reference","undefined","createElement","$coordinates","$transform","$shouldHideContent","animate","opacity","includes","transition","duration","type","inert","displayName"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { StyledMotionDelayedDropdownContent } from './DelayedDropdownContent.styles';\nimport {\n DropdownCoordinates,\n DropdownMeasurements,\n DropdownTransform,\n} from '../../../types/dropdown';\n\nconst ANIMATION_DELAY_MS = 200;\n\nenum AnimationType {\n None,\n Hidden,\n Visible,\n FadeIn,\n FadeOut,\n}\n\nexport type DelayedDropdownContentProps = {\n /**\n * The content to be rendered inside the dropdown.\n */\n children: ReactNode;\n /**\n * The absolute coordinates used to position the dropdown.\n */\n coordinates: DropdownCoordinates;\n /**\n * Callback that returns the dimensions of the dropdown after measuring.\n */\n onMeasure?: (measurements: DropdownMeasurements) => void;\n /**\n * Whether the dropdown should be rendered and animated in.\n */\n shouldShowContent: boolean;\n /**\n * CSS transform data (e.g. translate offsets) to apply for positioning.\n */\n transform: DropdownTransform;\n};\n\nconst DelayedDropdownContent: FC<DelayedDropdownContentProps> = ({\n children,\n shouldShowContent,\n onMeasure,\n coordinates,\n transform,\n}) => {\n const [animationState, setAnimationState] = useState<AnimationType>(AnimationType.None);\n\n const ref = useRef<HTMLDivElement>();\n const timeoutRef = useRef<number>();\n\n const measureElement = useCallback(() => {\n if (ref.current) {\n const { height, width, x, y } = ref.current.getBoundingClientRect();\n const { scrollHeight } = ref.current;\n\n if (typeof onMeasure === 'function') {\n onMeasure({\n x,\n y,\n height,\n scrollHeight,\n width,\n element: ref.current,\n });\n }\n\n setAnimationState(AnimationType.FadeIn);\n\n timeoutRef.current = window.setTimeout(() => {\n setAnimationState(AnimationType.Visible);\n }, ANIMATION_DELAY_MS);\n }\n }, [onMeasure]);\n\n useEffect(() => {\n if (!shouldShowContent) return () => {};\n\n const observer = new ResizeObserver(() => {\n measureElement();\n });\n\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => observer.disconnect();\n }, [measureElement, shouldShowContent]);\n\n useEffect(() => {\n if (shouldShowContent) {\n setAnimationState(AnimationType.Hidden);\n } else {\n clearTimeout(timeoutRef.current);\n\n setAnimationState((prevState) => {\n if (prevState === AnimationType.None) {\n return prevState;\n }\n\n return AnimationType.FadeOut;\n });\n\n window.setTimeout(() => {\n setAnimationState(AnimationType.None);\n }, ANIMATION_DELAY_MS);\n }\n }, [measureElement, shouldShowContent]);\n\n const refCallback = useCallback(\n (reference: HTMLDivElement | null) => {\n ref.current = reference ?? undefined;\n measureElement();\n },\n [measureElement],\n );\n\n if (animationState === AnimationType.None) {\n return null;\n }\n\n return (\n <StyledMotionDelayedDropdownContent\n ref={refCallback}\n $coordinates={coordinates}\n $transform={transform}\n $shouldHideContent={animationState === AnimationType.Hidden}\n animate={{\n opacity: [AnimationType.FadeIn, AnimationType.Visible].includes(animationState)\n ? 1\n : 0,\n }}\n transition={{ duration: ANIMATION_DELAY_MS / 1000, type: 'tween' }}\n inert={!shouldShowContent
|
|
1
|
+
{"version":3,"file":"DelayedDropdownContent.js","names":["React","useCallback","useEffect","useRef","useState","StyledMotionDelayedDropdownContent","ANIMATION_DELAY_MS","AnimationType","DelayedDropdownContent","children","shouldShowContent","onMeasure","coordinates","transform","animationState","setAnimationState","None","ref","timeoutRef","measureElement","current","height","width","x","y","getBoundingClientRect","scrollHeight","element","FadeIn","window","setTimeout","Visible","observer","ResizeObserver","observe","disconnect","Hidden","clearTimeout","prevState","FadeOut","refCallback","reference","undefined","createElement","$coordinates","$transform","$shouldHideContent","animate","opacity","includes","transition","duration","type","inert","displayName"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { StyledMotionDelayedDropdownContent } from './DelayedDropdownContent.styles';\nimport {\n DropdownCoordinates,\n DropdownMeasurements,\n DropdownTransform,\n} from '../../../types/dropdown';\n\nconst ANIMATION_DELAY_MS = 200;\n\nenum AnimationType {\n None,\n Hidden,\n Visible,\n FadeIn,\n FadeOut,\n}\n\nexport type DelayedDropdownContentProps = {\n /**\n * The content to be rendered inside the dropdown.\n */\n children: ReactNode;\n /**\n * The absolute coordinates used to position the dropdown.\n */\n coordinates: DropdownCoordinates;\n /**\n * Callback that returns the dimensions of the dropdown after measuring.\n */\n onMeasure?: (measurements: DropdownMeasurements) => void;\n /**\n * Whether the dropdown should be rendered and animated in.\n */\n shouldShowContent: boolean;\n /**\n * CSS transform data (e.g. translate offsets) to apply for positioning.\n */\n transform: DropdownTransform;\n};\n\nconst DelayedDropdownContent: FC<DelayedDropdownContentProps> = ({\n children,\n shouldShowContent,\n onMeasure,\n coordinates,\n transform,\n}) => {\n const [animationState, setAnimationState] = useState<AnimationType>(AnimationType.None);\n\n const ref = useRef<HTMLDivElement>();\n const timeoutRef = useRef<number>();\n\n const measureElement = useCallback(() => {\n if (ref.current) {\n const { height, width, x, y } = ref.current.getBoundingClientRect();\n const { scrollHeight } = ref.current;\n\n if (typeof onMeasure === 'function') {\n onMeasure({\n x,\n y,\n height,\n scrollHeight,\n width,\n element: ref.current,\n });\n }\n\n setAnimationState(AnimationType.FadeIn);\n\n timeoutRef.current = window.setTimeout(() => {\n setAnimationState(AnimationType.Visible);\n }, ANIMATION_DELAY_MS);\n }\n }, [onMeasure]);\n\n useEffect(() => {\n if (!shouldShowContent) return () => {};\n\n const observer = new ResizeObserver(() => {\n measureElement();\n });\n\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => observer.disconnect();\n }, [measureElement, shouldShowContent]);\n\n useEffect(() => {\n if (shouldShowContent) {\n setAnimationState(AnimationType.Hidden);\n } else {\n clearTimeout(timeoutRef.current);\n\n setAnimationState((prevState) => {\n if (prevState === AnimationType.None) {\n return prevState;\n }\n\n return AnimationType.FadeOut;\n });\n\n window.setTimeout(() => {\n setAnimationState(AnimationType.None);\n }, ANIMATION_DELAY_MS);\n }\n }, [measureElement, shouldShowContent]);\n\n const refCallback = useCallback(\n (reference: HTMLDivElement | null) => {\n ref.current = reference ?? undefined;\n measureElement();\n },\n [measureElement],\n );\n\n if (animationState === AnimationType.None) {\n return null;\n }\n\n return (\n <StyledMotionDelayedDropdownContent\n ref={refCallback}\n $coordinates={coordinates}\n $transform={transform}\n $shouldHideContent={animationState === AnimationType.Hidden}\n animate={{\n opacity: [AnimationType.FadeIn, AnimationType.Visible].includes(animationState)\n ? 1\n : 0,\n }}\n transition={{ duration: ANIMATION_DELAY_MS / 1000, type: 'tween' }}\n inert={!shouldShowContent || undefined}\n >\n {children}\n </StyledMotionDelayedDropdownContent>\n );\n};\n\nDelayedDropdownContent.displayName = 'DelayedDropdownContent';\n\nexport default DelayedDropdownContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -238,7 +238,7 @@ const Filter = /*#__PURE__*/forwardRef(({
|
|
|
238
238
|
shouldEnableKeyboardHighlighting: checkboxConfig.shouldEnableKeyboardHighlighting ?? shouldEnableKeyboardHighlightingEffective
|
|
239
239
|
})), type === FilterType.ONLY_COMBOBOX && comboboxElement), [FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && /*#__PURE__*/React.createElement(StyledFilterContentWrapper, {
|
|
240
240
|
ref: contentRef,
|
|
241
|
-
inert: !isOpen
|
|
241
|
+
inert: !isOpen || undefined,
|
|
242
242
|
"aria-hidden": !isOpen
|
|
243
243
|
}, /*#__PURE__*/React.createElement(ExpandableContent, {
|
|
244
244
|
isOpen: isOpen
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","names":["React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","StyledFilter","StyledFilterContentWrapper","StyledFilterHead","StyledFilterHeadline","StyledFilterHeadlineElement","StyledFilterIcon","StyledFilterIconWrapper","StyledFilterSearch","ExpandableContent","Icon","FilterContent","ComboBox","FilterType","SearchInput","ContextMenu","Checkbox","useFocusRingPortal","useKeyboardFocusHighlighting","useColorScheme","FilterIconButton","icons","onClick","isOpen","shouldEnableKeyboardHighlighting","shouldShowKeyboardHighlighting","shouldShowRoundedHoverEffect","iconRef","isEnabled","handleKeyDown","event","key","preventDefault","createElement","ref","onKeyDown","$isOpen","role","undefined","tabIndex","$shouldShowKeyboardHighlighting","$shouldShowRoundedHoverEffect","size","Filter","headline","searchConfig","sortConfig","shouldAutoFocus","filterButtonConfig","checkboxConfig","comboboxConfig","onActiveChange","rightIcons","setIsOpen","isSearchActive","setIsSearchActive","shouldFocus","setShouldFocus","contentRef","filterRef","searchRef","colorScheme","shouldEnableKeyboardHighlightingEffective","contextMenuRef","type","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","ONLY_COMBOBOX","MULTIPLE","handleHide","current","hide","focus","window","setTimeout","handleShow","show","handleIconClick","handleIconKeyDown","iconElement","sortItems","selectedItem","onSortChange","items","map","id","text","toString","isSelected","comboboxElement","_extends","$isSearchActive","includes","rIcons","join","isActive","value","searchValue","onChange","ev","onSearchChange","target","inert","displayName"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, react/jsx-props-no-spreading */\nimport React, {\n forwardRef,\n isValidElement,\n KeyboardEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n StyledFilter,\n StyledFilterContentWrapper,\n StyledFilterHead,\n StyledFilterHeadline,\n StyledFilterHeadlineElement,\n StyledFilterIcon,\n StyledFilterIconWrapper,\n StyledFilterSearch,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FilterContent';\nimport ComboBox from '../combobox/ComboBox';\nimport {\n CheckboxConfig,\n ComboboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport type { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport Checkbox from '../checkbox/Checkbox';\nimport { InputRef } from '../input/Input';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\ntype FilterIconButtonProps = FilterRightIcon & {\n isOpen: boolean;\n shouldEnableKeyboardHighlighting: boolean;\n shouldShowKeyboardHighlighting: boolean;\n shouldShowRoundedHoverEffect: boolean;\n};\n\nconst FilterIconButton: React.FC<FilterIconButtonProps> = ({\n icons,\n onClick,\n isOpen,\n shouldEnableKeyboardHighlighting,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n}) => {\n const iconRef = useRef<HTMLDivElement | null>(null);\n\n useFocusRingPortal(iconRef, { isEnabled: shouldShowKeyboardHighlighting });\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick();\n }\n },\n [onClick],\n );\n\n return (\n <StyledFilterIcon\n ref={iconRef}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n $isOpen={isOpen}\n role={shouldEnableKeyboardHighlighting ? 'button' : undefined}\n tabIndex={shouldEnableKeyboardHighlighting ? 0 : -1}\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n );\n};\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n comboboxConfig?: ComboboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n shouldAutoFocus?: boolean;\n shouldEnableKeyboardHighlighting?: boolean;\n};\n\nconst Filter = forwardRef<FilterRef, FilterProps>(\n (\n {\n headline,\n searchConfig,\n sortConfig,\n shouldAutoFocus = false,\n shouldShowRoundedHoverEffect = false,\n filterButtonConfig,\n checkboxConfig,\n comboboxConfig,\n onActiveChange,\n rightIcons,\n shouldEnableKeyboardHighlighting,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [shouldFocus, setShouldFocus] = useState(false);\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const iconRef = useRef<HTMLDivElement | null>(null);\n const filterRef = useRef<HTMLDivElement | null>(null);\n const searchRef = useRef<InputRef | null>(null);\n\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ??\n colorScheme?.shouldEnableKeyboardHighlighting ??\n false;\n\n const contextMenuRef = useRef<ContextMenuRef>(null);\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective,\n );\n useFocusRingPortal(iconRef, { isEnabled: shouldShowKeyboardHighlighting });\n\n const type = useMemo(() => {\n if (\n filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_FILTER;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SORT;\n }\n\n if (\n !filterButtonConfig &&\n searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n comboboxConfig\n ) {\n return FilterType.ONLY_COMBOBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, comboboxConfig, filterButtonConfig, searchConfig, sortConfig]);\n\n const icons = useMemo(() => {\n switch (type) {\n case FilterType.ONLY_FILTER:\n return ['fa fa-filter'];\n case FilterType.ONLY_SORT:\n return ['fa fa-arrow-up-arrow-down'];\n default:\n return ['fa fa-search'];\n }\n }, [type]);\n\n useEffect(() => {\n if (typeof onActiveChange === 'function') {\n onActiveChange(isOpen);\n }\n }, [isOpen, onActiveChange]);\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(false);\n }\n }, [type]);\n\n useEffect(() => {\n if (shouldFocus) {\n searchRef.current?.focus();\n\n window.setTimeout(() => {\n setShouldFocus(false);\n }, 200);\n }\n }, [shouldFocus]);\n\n const handleShow = useCallback(() => {\n setIsOpen(true);\n\n if (shouldAutoFocus) {\n setShouldFocus(true);\n }\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(true);\n }\n }, [shouldAutoFocus, type]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n const handleIconClick = useCallback(() => {\n if (isOpen) {\n handleHide();\n } else {\n handleShow();\n }\n }, [handleHide, handleShow, isOpen]);\n\n const handleIconKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleIconClick();\n }\n },\n [handleIconClick],\n );\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n onKeyDown={handleIconKeyDown}\n $isOpen={isOpen}\n ref={iconRef}\n role={shouldEnableKeyboardHighlightingEffective ? 'button' : undefined}\n tabIndex={shouldEnableKeyboardHighlightingEffective ? 0 : -1}\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [\n handleIconClick,\n handleIconKeyDown,\n icons,\n isOpen,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n ],\n );\n\n const sortItems: ContextMenuItem[] = useMemo(() => {\n if (!sortConfig) {\n return [];\n }\n\n const { selectedItem, onSortChange } = sortConfig;\n\n return sortConfig.items.map(({ id, text }) => ({\n text,\n key: id.toString(),\n isSelected: id === selectedItem.id,\n icons: id === selectedItem.id ? ['fas fa-circle-small'] : [],\n onClick: () => onSortChange({ text, id }),\n }));\n }, [sortConfig]);\n\n const comboboxElement = useMemo(() => {\n if (!comboboxConfig) {\n return null;\n }\n\n return (\n <ComboBox\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...comboboxConfig}\n shouldEnableKeyboardHighlighting={\n comboboxConfig.shouldEnableKeyboardHighlighting ??\n shouldEnableKeyboardHighlightingEffective\n }\n />\n );\n }, [comboboxConfig, shouldEnableKeyboardHighlightingEffective]);\n\n return useMemo(\n () => (\n <StyledFilter ref={filterRef}>\n <StyledFilterHead>\n {!isValidElement(headline) ? (\n <StyledFilterHeadline $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadline>\n ) : (\n <StyledFilterHeadlineElement $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadlineElement>\n )}\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <FilterIconButton\n key={rIcons.join('-')}\n icons={rIcons}\n onClick={onClick}\n isOpen={false}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n shouldShowKeyboardHighlighting={\n shouldShowKeyboardHighlighting\n }\n shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n />\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n )}\n {type === FilterType.ONLY_SEARCH && searchConfig && (\n <StyledFilterSearch>\n <SearchInput\n onActiveChange={(isActive) => {\n setIsSearchActive(isActive);\n setIsOpen(isActive);\n }}\n ref={searchRef}\n isActive={isSearchActive}\n value={searchConfig.searchValue}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu\n ref={contextMenuRef}\n items={sortItems}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n >\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n <Checkbox\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...checkboxConfig}\n shouldEnableKeyboardHighlighting={\n checkboxConfig.shouldEnableKeyboardHighlighting ??\n shouldEnableKeyboardHighlightingEffective\n }\n />\n )}\n {type === FilterType.ONLY_COMBOBOX && comboboxElement}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper\n ref={contentRef}\n inert={!isOpen ? 'true' : undefined}\n aria-hidden={!isOpen}\n >\n <ExpandableContent isOpen={isOpen}>\n <FilterContent\n shouldAutoFocus={shouldFocus}\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n comboboxConfig={comboboxConfig}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n shouldFocus,\n shouldEnableKeyboardHighlightingEffective,\n filterButtonConfig,\n comboboxConfig,\n comboboxElement,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n ],\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport default Filter;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Filter.js","names":["React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","StyledFilter","StyledFilterContentWrapper","StyledFilterHead","StyledFilterHeadline","StyledFilterHeadlineElement","StyledFilterIcon","StyledFilterIconWrapper","StyledFilterSearch","ExpandableContent","Icon","FilterContent","ComboBox","FilterType","SearchInput","ContextMenu","Checkbox","useFocusRingPortal","useKeyboardFocusHighlighting","useColorScheme","FilterIconButton","icons","onClick","isOpen","shouldEnableKeyboardHighlighting","shouldShowKeyboardHighlighting","shouldShowRoundedHoverEffect","iconRef","isEnabled","handleKeyDown","event","key","preventDefault","createElement","ref","onKeyDown","$isOpen","role","undefined","tabIndex","$shouldShowKeyboardHighlighting","$shouldShowRoundedHoverEffect","size","Filter","headline","searchConfig","sortConfig","shouldAutoFocus","filterButtonConfig","checkboxConfig","comboboxConfig","onActiveChange","rightIcons","setIsOpen","isSearchActive","setIsSearchActive","shouldFocus","setShouldFocus","contentRef","filterRef","searchRef","colorScheme","shouldEnableKeyboardHighlightingEffective","contextMenuRef","type","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","ONLY_COMBOBOX","MULTIPLE","handleHide","current","hide","focus","window","setTimeout","handleShow","show","handleIconClick","handleIconKeyDown","iconElement","sortItems","selectedItem","onSortChange","items","map","id","text","toString","isSelected","comboboxElement","_extends","$isSearchActive","includes","rIcons","join","isActive","value","searchValue","onChange","ev","onSearchChange","target","inert","displayName"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, react/jsx-props-no-spreading */\nimport React, {\n forwardRef,\n isValidElement,\n KeyboardEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n StyledFilter,\n StyledFilterContentWrapper,\n StyledFilterHead,\n StyledFilterHeadline,\n StyledFilterHeadlineElement,\n StyledFilterIcon,\n StyledFilterIconWrapper,\n StyledFilterSearch,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FilterContent';\nimport ComboBox from '../combobox/ComboBox';\nimport {\n CheckboxConfig,\n ComboboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport type { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport Checkbox from '../checkbox/Checkbox';\nimport { InputRef } from '../input/Input';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\ntype FilterIconButtonProps = FilterRightIcon & {\n isOpen: boolean;\n shouldEnableKeyboardHighlighting: boolean;\n shouldShowKeyboardHighlighting: boolean;\n shouldShowRoundedHoverEffect: boolean;\n};\n\nconst FilterIconButton: React.FC<FilterIconButtonProps> = ({\n icons,\n onClick,\n isOpen,\n shouldEnableKeyboardHighlighting,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n}) => {\n const iconRef = useRef<HTMLDivElement | null>(null);\n\n useFocusRingPortal(iconRef, { isEnabled: shouldShowKeyboardHighlighting });\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick();\n }\n },\n [onClick],\n );\n\n return (\n <StyledFilterIcon\n ref={iconRef}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n $isOpen={isOpen}\n role={shouldEnableKeyboardHighlighting ? 'button' : undefined}\n tabIndex={shouldEnableKeyboardHighlighting ? 0 : -1}\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n );\n};\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n comboboxConfig?: ComboboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n shouldAutoFocus?: boolean;\n shouldEnableKeyboardHighlighting?: boolean;\n};\n\nconst Filter = forwardRef<FilterRef, FilterProps>(\n (\n {\n headline,\n searchConfig,\n sortConfig,\n shouldAutoFocus = false,\n shouldShowRoundedHoverEffect = false,\n filterButtonConfig,\n checkboxConfig,\n comboboxConfig,\n onActiveChange,\n rightIcons,\n shouldEnableKeyboardHighlighting,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [shouldFocus, setShouldFocus] = useState(false);\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const iconRef = useRef<HTMLDivElement | null>(null);\n const filterRef = useRef<HTMLDivElement | null>(null);\n const searchRef = useRef<InputRef | null>(null);\n\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ??\n colorScheme?.shouldEnableKeyboardHighlighting ??\n false;\n\n const contextMenuRef = useRef<ContextMenuRef>(null);\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective,\n );\n useFocusRingPortal(iconRef, { isEnabled: shouldShowKeyboardHighlighting });\n\n const type = useMemo(() => {\n if (\n filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_FILTER;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SORT;\n }\n\n if (\n !filterButtonConfig &&\n searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n comboboxConfig\n ) {\n return FilterType.ONLY_COMBOBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, comboboxConfig, filterButtonConfig, searchConfig, sortConfig]);\n\n const icons = useMemo(() => {\n switch (type) {\n case FilterType.ONLY_FILTER:\n return ['fa fa-filter'];\n case FilterType.ONLY_SORT:\n return ['fa fa-arrow-up-arrow-down'];\n default:\n return ['fa fa-search'];\n }\n }, [type]);\n\n useEffect(() => {\n if (typeof onActiveChange === 'function') {\n onActiveChange(isOpen);\n }\n }, [isOpen, onActiveChange]);\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(false);\n }\n }, [type]);\n\n useEffect(() => {\n if (shouldFocus) {\n searchRef.current?.focus();\n\n window.setTimeout(() => {\n setShouldFocus(false);\n }, 200);\n }\n }, [shouldFocus]);\n\n const handleShow = useCallback(() => {\n setIsOpen(true);\n\n if (shouldAutoFocus) {\n setShouldFocus(true);\n }\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(true);\n }\n }, [shouldAutoFocus, type]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n const handleIconClick = useCallback(() => {\n if (isOpen) {\n handleHide();\n } else {\n handleShow();\n }\n }, [handleHide, handleShow, isOpen]);\n\n const handleIconKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleIconClick();\n }\n },\n [handleIconClick],\n );\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n onKeyDown={handleIconKeyDown}\n $isOpen={isOpen}\n ref={iconRef}\n role={shouldEnableKeyboardHighlightingEffective ? 'button' : undefined}\n tabIndex={shouldEnableKeyboardHighlightingEffective ? 0 : -1}\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [\n handleIconClick,\n handleIconKeyDown,\n icons,\n isOpen,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n ],\n );\n\n const sortItems: ContextMenuItem[] = useMemo(() => {\n if (!sortConfig) {\n return [];\n }\n\n const { selectedItem, onSortChange } = sortConfig;\n\n return sortConfig.items.map(({ id, text }) => ({\n text,\n key: id.toString(),\n isSelected: id === selectedItem.id,\n icons: id === selectedItem.id ? ['fas fa-circle-small'] : [],\n onClick: () => onSortChange({ text, id }),\n }));\n }, [sortConfig]);\n\n const comboboxElement = useMemo(() => {\n if (!comboboxConfig) {\n return null;\n }\n\n return (\n <ComboBox\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...comboboxConfig}\n shouldEnableKeyboardHighlighting={\n comboboxConfig.shouldEnableKeyboardHighlighting ??\n shouldEnableKeyboardHighlightingEffective\n }\n />\n );\n }, [comboboxConfig, shouldEnableKeyboardHighlightingEffective]);\n\n return useMemo(\n () => (\n <StyledFilter ref={filterRef}>\n <StyledFilterHead>\n {!isValidElement(headline) ? (\n <StyledFilterHeadline $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadline>\n ) : (\n <StyledFilterHeadlineElement $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadlineElement>\n )}\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <FilterIconButton\n key={rIcons.join('-')}\n icons={rIcons}\n onClick={onClick}\n isOpen={false}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n shouldShowKeyboardHighlighting={\n shouldShowKeyboardHighlighting\n }\n shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n />\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n )}\n {type === FilterType.ONLY_SEARCH && searchConfig && (\n <StyledFilterSearch>\n <SearchInput\n onActiveChange={(isActive) => {\n setIsSearchActive(isActive);\n setIsOpen(isActive);\n }}\n ref={searchRef}\n isActive={isSearchActive}\n value={searchConfig.searchValue}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu\n ref={contextMenuRef}\n items={sortItems}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n >\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n <Checkbox\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...checkboxConfig}\n shouldEnableKeyboardHighlighting={\n checkboxConfig.shouldEnableKeyboardHighlighting ??\n shouldEnableKeyboardHighlightingEffective\n }\n />\n )}\n {type === FilterType.ONLY_COMBOBOX && comboboxElement}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper\n ref={contentRef}\n inert={!isOpen || undefined}\n aria-hidden={!isOpen}\n >\n <ExpandableContent isOpen={isOpen}>\n <FilterContent\n shouldAutoFocus={shouldFocus}\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n comboboxConfig={comboboxConfig}\n shouldEnableKeyboardHighlighting={\n shouldEnableKeyboardHighlightingEffective\n }\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n shouldFocus,\n shouldEnableKeyboardHighlightingEffective,\n filterButtonConfig,\n comboboxConfig,\n comboboxElement,\n shouldShowKeyboardHighlighting,\n shouldShowRoundedHoverEffect,\n ],\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport default Filter;\n"],"mappings":";AAAA;AACA,OAAOA,KAAK,IACRC,UAAU,EACVC,cAAc,EAGdC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SACIC,YAAY,EACZC,0BAA0B,EAC1BC,gBAAgB,EAChBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,gBAAgB,EAChBC,uBAAuB,EACvBC,kBAAkB,QACf,iBAAiB;AACxB,OAAOC,iBAAiB,MAAM,yCAAyC;AACvE,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,aAAa,MAAM,gCAAgC;AAC1D,OAAOC,QAAQ,MAAM,sBAAsB;AAC3C,SAKIC,UAAU,QAGP,oBAAoB;AAC3B,OAAOC,WAAW,MAAM,6BAA6B;AACrD,OAAOC,WAAW,MAAM,6BAA6B;AAErD,OAAOC,QAAQ,MAAM,sBAAsB;AAE3C,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,4BAA4B,QAAQ,0CAA0C;AACvF,SAASC,cAAc,QAAQ,8CAA8C;AAc7E,MAAMC,gBAAiD,GAAGA,CAAC;EACvDC,KAAK;EACLC,OAAO;EACPC,MAAM;EACNC,gCAAgC;EAChCC,8BAA8B;EAC9BC;AACJ,CAAC,KAAK;EACF,MAAMC,OAAO,GAAG5B,MAAM,CAAwB,IAAI,CAAC;EAEnDkB,kBAAkB,CAACU,OAAO,EAAE;IAAEC,SAAS,EAAEH;EAA+B,CAAC,CAAC;EAE1E,MAAMI,aAAa,GAAGlC,WAAW,CAC5BmC,KAAK,IAAK;IACP,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,IAAID,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MAC5CD,KAAK,CAACE,cAAc,CAAC,CAAC;MACtBV,OAAO,CAAC,CAAC;IACb;EACJ,CAAC,EACD,CAACA,OAAO,CACZ,CAAC;EAED,oBACI9B,KAAA,CAAAyC,aAAA,CAAC3B,gBAAgB;IACb4B,GAAG,EAAEP,OAAQ;IACbL,OAAO,EAAEA,OAAQ;IACjBa,SAAS,EAAEN,aAAc;IACzBO,OAAO,EAAEb,MAAO;IAChBc,IAAI,EAAEb,gCAAgC,GAAG,QAAQ,GAAGc,SAAU;IAC9DC,QAAQ,EAAEf,gCAAgC,GAAG,CAAC,GAAG,CAAC,CAAE;IACpDgB,+BAA+B,EAAEf,8BAA+B;IAChEgB,6BAA6B,EAAEf;EAA6B,gBAE5DlC,KAAA,CAAAyC,aAAA,CAACvB,IAAI;IAACW,KAAK,EAAEA,KAAM;IAACqB,IAAI,EAAE;EAAG,CAAE,CACjB,CAAC;AAE3B,CAAC;;AAED;;AAeA,MAAMC,MAAM,gBAAGlD,UAAU,CACrB,CACI;EACImD,QAAQ;EACRC,YAAY;EACZC,UAAU;EACVC,eAAe,GAAG,KAAK;EACvBrB,4BAA4B,GAAG,KAAK;EACpCsB,kBAAkB;EAClBC,cAAc;EACdC,cAAc;EACdC,cAAc;EACdC,UAAU;EACV5B;AACJ,CAAC,EACDU,GAAG,KACF;EACD,MAAM,CAACX,MAAM,EAAE8B,SAAS,CAAC,GAAGrD,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM,CAACsD,cAAc,EAAEC,iBAAiB,CAAC,GAAGvD,QAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAACwD,WAAW,EAAEC,cAAc,CAAC,GAAGzD,QAAQ,CAAC,KAAK,CAAC;EAErD,MAAM0D,UAAU,GAAG3D,MAAM,CAAwB,IAAI,CAAC;EACtD,MAAM4B,OAAO,GAAG5B,MAAM,CAAwB,IAAI,CAAC;EACnD,MAAM4D,SAAS,GAAG5D,MAAM,CAAwB,IAAI,CAAC;EACrD,MAAM6D,SAAS,GAAG7D,MAAM,CAAkB,IAAI,CAAC;EAE/C,MAAM8D,WAAW,GAAG1C,cAAc,CAAC,CAAC;EACpC,MAAM2C,yCAAyC,GAC3CtC,gCAAgC,IAChCqC,WAAW,EAAErC,gCAAgC,IAC7C,KAAK;EAET,MAAMuC,cAAc,GAAGhE,MAAM,CAAiB,IAAI,CAAC;EACnD,MAAM0B,8BAA8B,GAAGP,4BAA4B,CAC/D4C,yCACJ,CAAC;EACD7C,kBAAkB,CAACU,OAAO,EAAE;IAAEC,SAAS,EAAEH;EAA+B,CAAC,CAAC;EAE1E,MAAMuC,IAAI,GAAGlE,OAAO,CAAC,MAAM;IACvB,IACIkD,kBAAkB,IAClB,CAACH,YAAY,IACb,CAACC,UAAU,IACX,CAACG,cAAc,IACf,CAACC,cAAc,EACjB;MACE,OAAOrC,UAAU,CAACoD,WAAW;IACjC;IAEA,IACI,CAACjB,kBAAkB,IACnB,CAACH,YAAY,IACbC,UAAU,IACV,CAACG,cAAc,IACf,CAACC,cAAc,EACjB;MACE,OAAOrC,UAAU,CAACqD,SAAS;IAC/B;IAEA,IACI,CAAClB,kBAAkB,IACnBH,YAAY,IACZ,CAACC,UAAU,IACX,CAACG,cAAc,IACf,CAACC,cAAc,EACjB;MACE,OAAOrC,UAAU,CAACsD,WAAW;IACjC;IAEA,IACI,CAACnB,kBAAkB,IACnB,CAACH,YAAY,IACb,CAACC,UAAU,IACXG,cAAc,IACd,CAACC,cAAc,EACjB;MACE,OAAOrC,UAAU,CAACuD,aAAa;IACnC;IAEA,IACI,CAACpB,kBAAkB,IACnB,CAACH,YAAY,IACb,CAACC,UAAU,IACX,CAACG,cAAc,IACfC,cAAc,EAChB;MACE,OAAOrC,UAAU,CAACwD,aAAa;IACnC;IAEA,OAAOxD,UAAU,CAACyD,QAAQ;EAC9B,CAAC,EAAE,CAACrB,cAAc,EAAEC,cAAc,EAAEF,kBAAkB,EAAEH,YAAY,EAAEC,UAAU,CAAC,CAAC;EAElF,MAAMzB,KAAK,GAAGvB,OAAO,CAAC,MAAM;IACxB,QAAQkE,IAAI;MACR,KAAKnD,UAAU,CAACoD,WAAW;QACvB,OAAO,CAAC,cAAc,CAAC;MAC3B,KAAKpD,UAAU,CAACqD,SAAS;QACrB,OAAO,CAAC,2BAA2B,CAAC;MACxC;QACI,OAAO,CAAC,cAAc,CAAC;IAC/B;EACJ,CAAC,EAAE,CAACF,IAAI,CAAC,CAAC;EAEVpE,SAAS,CAAC,MAAM;IACZ,IAAI,OAAOuD,cAAc,KAAK,UAAU,EAAE;MACtCA,cAAc,CAAC5B,MAAM,CAAC;IAC1B;EACJ,CAAC,EAAE,CAACA,MAAM,EAAE4B,cAAc,CAAC,CAAC;EAE5B,MAAMoB,UAAU,GAAG5E,WAAW,CAAC,MAAM;IACjC0D,SAAS,CAAC,KAAK,CAAC;IAEhB,IAAIW,IAAI,KAAKnD,UAAU,CAACqD,SAAS,IAAIH,cAAc,CAACS,OAAO,EAAE;MACzD;MACAT,cAAc,CAACS,OAAO,CAACC,IAAI,CAAC,CAAC;IACjC;IAEA,IAAIT,IAAI,KAAKnD,UAAU,CAACsD,WAAW,EAAE;MACjCZ,iBAAiB,CAAC,KAAK,CAAC;IAC5B;EACJ,CAAC,EAAE,CAACS,IAAI,CAAC,CAAC;EAEVpE,SAAS,CAAC,MAAM;IACZ,IAAI4D,WAAW,EAAE;MACbI,SAAS,CAACY,OAAO,EAAEE,KAAK,CAAC,CAAC;MAE1BC,MAAM,CAACC,UAAU,CAAC,MAAM;QACpBnB,cAAc,CAAC,KAAK,CAAC;MACzB,CAAC,EAAE,GAAG,CAAC;IACX;EACJ,CAAC,EAAE,CAACD,WAAW,CAAC,CAAC;EAEjB,MAAMqB,UAAU,GAAGlF,WAAW,CAAC,MAAM;IACjC0D,SAAS,CAAC,IAAI,CAAC;IAEf,IAAIN,eAAe,EAAE;MACjBU,cAAc,CAAC,IAAI,CAAC;IACxB;IAEA,IAAIO,IAAI,KAAKnD,UAAU,CAACqD,SAAS,IAAIH,cAAc,CAACS,OAAO,EAAE;MACzD;MACAT,cAAc,CAACS,OAAO,CAACC,IAAI,CAAC,CAAC;IACjC;IAEA,IAAIT,IAAI,KAAKnD,UAAU,CAACsD,WAAW,EAAE;MACjCZ,iBAAiB,CAAC,IAAI,CAAC;IAC3B;EACJ,CAAC,EAAE,CAACR,eAAe,EAAEiB,IAAI,CAAC,CAAC;EAE3BnE,mBAAmB,CACfqC,GAAG,EACH,OAAO;IACHuC,IAAI,EAAEF,UAAU;IAChBO,IAAI,EAAED;EACV,CAAC,CAAC,EACF,CAACN,UAAU,EAAEM,UAAU,CAC3B,CAAC;EAED,MAAME,eAAe,GAAGpF,WAAW,CAAC,MAAM;IACtC,IAAI4B,MAAM,EAAE;MACRgD,UAAU,CAAC,CAAC;IAChB,CAAC,MAAM;MACHM,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACN,UAAU,EAAEM,UAAU,EAAEtD,MAAM,CAAC,CAAC;EAEpC,MAAMyD,iBAAiB,GAAGrF,WAAW,CAChCmC,KAAK,IAAK;IACP,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,IAAID,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;MAC5CD,KAAK,CAACE,cAAc,CAAC,CAAC;MACtB+C,eAAe,CAAC,CAAC;IACrB;EACJ,CAAC,EACD,CAACA,eAAe,CACpB,CAAC;EAED,MAAME,WAAW,GAAGnF,OAAO,CACvB,mBACIN,KAAA,CAAAyC,aAAA,CAAC3B,gBAAgB;IACbgB,OAAO,EAAEyD,eAAgB;IACzB5C,SAAS,EAAE6C,iBAAkB;IAC7B5C,OAAO,EAAEb,MAAO;IAChBW,GAAG,EAAEP,OAAQ;IACbU,IAAI,EAAEyB,yCAAyC,GAAG,QAAQ,GAAGxB,SAAU;IACvEC,QAAQ,EAAEuB,yCAAyC,GAAG,CAAC,GAAG,CAAC,CAAE;IAC7DtB,+BAA+B,EAAEf,8BAA+B;IAChEgB,6BAA6B,EAAEf;EAA6B,gBAE5DlC,KAAA,CAAAyC,aAAA,CAACvB,IAAI;IAACW,KAAK,EAAEA,KAAM;IAACqB,IAAI,EAAE;EAAG,CAAE,CACjB,CACrB,EACD,CACIqC,eAAe,EACfC,iBAAiB,EACjB3D,KAAK,EACLE,MAAM,EACNuC,yCAAyC,EACzCrC,8BAA8B,EAC9BC,4BAA4B,CAEpC,CAAC;EAED,MAAMwD,SAA4B,GAAGpF,OAAO,CAAC,MAAM;IAC/C,IAAI,CAACgD,UAAU,EAAE;MACb,OAAO,EAAE;IACb;IAEA,MAAM;MAAEqC,YAAY;MAAEC;IAAa,CAAC,GAAGtC,UAAU;IAEjD,OAAOA,UAAU,CAACuC,KAAK,CAACC,GAAG,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,MAAM;MAC3CA,IAAI;MACJzD,GAAG,EAAEwD,EAAE,CAACE,QAAQ,CAAC,CAAC;MAClBC,UAAU,EAAEH,EAAE,KAAKJ,YAAY,CAACI,EAAE;MAClClE,KAAK,EAAEkE,EAAE,KAAKJ,YAAY,CAACI,EAAE,GAAG,CAAC,qBAAqB,CAAC,GAAG,EAAE;MAC5DjE,OAAO,EAAEA,CAAA,KAAM8D,YAAY,CAAC;QAAEI,IAAI;QAAED;MAAG,CAAC;IAC5C,CAAC,CAAC,CAAC;EACP,CAAC,EAAE,CAACzC,UAAU,CAAC,CAAC;EAEhB,MAAM6C,eAAe,GAAG7F,OAAO,CAAC,MAAM;IAClC,IAAI,CAACoD,cAAc,EAAE;MACjB,OAAO,IAAI;IACf;IAEA,oBACI1D,KAAA,CAAAyC,aAAA,CAACrB;IACG;IAAA,EAAAgF,QAAA,KACI1C,cAAc;MAClB1B,gCAAgC,EAC5B0B,cAAc,CAAC1B,gCAAgC,IAC/CsC;IACH,EACJ,CAAC;EAEV,CAAC,EAAE,CAACZ,cAAc,EAAEY,yCAAyC,CAAC,CAAC;EAE/D,OAAOhE,OAAO,CACV,mBACIN,KAAA,CAAAyC,aAAA,CAAChC,YAAY;IAACiC,GAAG,EAAEyB;EAAU,gBACzBnE,KAAA,CAAAyC,aAAA,CAAC9B,gBAAgB,QACZ,eAACT,cAAc,CAACkD,QAAQ,CAAC,gBACtBpD,KAAA,CAAAyC,aAAA,CAAC7B,oBAAoB;IAACyF,eAAe,EAAEvC;EAAe,GACjDV,QACiB,CAAC,gBAEvBpD,KAAA,CAAAyC,aAAA,CAAC5B,2BAA2B;IAACwF,eAAe,EAAEvC;EAAe,GACxDV,QACwB,CAChC,EACA,CAAC/B,UAAU,CAACyD,QAAQ,EAAEzD,UAAU,CAACoD,WAAW,CAAC,CAAC6B,QAAQ,CAAC9B,IAAI,CAAC,iBACzDxE,KAAA,CAAAyC,aAAA,CAAC1B,uBAAuB,QACnB6C,UAAU,IACPA,UAAU,CAACkC,GAAG,CAAC,CAAC;IAAEjE,KAAK,EAAE0E,MAAM;IAAEzE;EAAQ,CAAC,kBACtC9B,KAAA,CAAAyC,aAAA,CAACb,gBAAgB;IACbW,GAAG,EAAEgE,MAAM,CAACC,IAAI,CAAC,GAAG,CAAE;IACtB3E,KAAK,EAAE0E,MAAO;IACdzE,OAAO,EAAEA,OAAQ;IACjBC,MAAM,EAAE,KAAM;IACdC,gCAAgC,EAC5BsC,yCACH;IACDrC,8BAA8B,EAC1BA,8BACH;IACDC,4BAA4B,EACxBA;EACH,CACJ,CACJ,CAAC,EACLuD,WACoB,CAC5B,EACAjB,IAAI,KAAKnD,UAAU,CAACsD,WAAW,IAAItB,YAAY,iBAC5CrD,KAAA,CAAAyC,aAAA,CAACzB,kBAAkB,qBACfhB,KAAA,CAAAyC,aAAA,CAACnB,WAAW;IACRqC,cAAc,EAAG8C,QAAQ,IAAK;MAC1B1C,iBAAiB,CAAC0C,QAAQ,CAAC;MAC3B5C,SAAS,CAAC4C,QAAQ,CAAC;IACvB,CAAE;IACF/D,GAAG,EAAE0B,SAAU;IACfqC,QAAQ,EAAE3C,cAAe;IACzB4C,KAAK,EAAErD,YAAY,CAACsD,WAAY;IAChCC,QAAQ,EAAGC,EAAE,IAAKxD,YAAY,CAACyD,cAAc,CAACD,EAAE,CAACE,MAAM,CAACL,KAAK,CAAE;IAC/D1E,gCAAgC,EAC5BsC;EACH,CACJ,CACe,CACvB,EACAE,IAAI,KAAKnD,UAAU,CAACqD,SAAS,IAAIpB,UAAU,iBACxCtD,KAAA,CAAAyC,aAAA,CAAClB,WAAW;IACRmB,GAAG,EAAE6B,cAAe;IACpBsB,KAAK,EAAEH,SAAU;IACjB1D,gCAAgC,EAC5BsC;EACH,GAEAmB,WACQ,CAChB,EACAjB,IAAI,KAAKnD,UAAU,CAACuD,aAAa,IAAInB,cAAc,iBAChDzD,KAAA,CAAAyC,aAAA,CAACjB;EACG;EAAA,EAAA4E,QAAA,KACI3C,cAAc;IAClBzB,gCAAgC,EAC5ByB,cAAc,CAACzB,gCAAgC,IAC/CsC;EACH,EACJ,CACJ,EACAE,IAAI,KAAKnD,UAAU,CAACwD,aAAa,IAAIsB,eACxB,CAAC,EAClB,CAAC9E,UAAU,CAACyD,QAAQ,EAAEzD,UAAU,CAACoD,WAAW,CAAC,CAAC6B,QAAQ,CAAC9B,IAAI,CAAC,iBACzDxE,KAAA,CAAAyC,aAAA,CAAC/B,0BAA0B;IACvBgC,GAAG,EAAEwB,UAAW;IAChB8C,KAAK,EAAE,CAACjF,MAAM,IAAIe,SAAU;IAC5B,eAAa,CAACf;EAAO,gBAErB/B,KAAA,CAAAyC,aAAA,CAACxB,iBAAiB;IAACc,MAAM,EAAEA;EAAO,gBAC9B/B,KAAA,CAAAyC,aAAA,CAACtB,aAAa;IACVoC,eAAe,EAAES,WAAY;IAC7BX,YAAY,EAAEA,YAAa;IAC3BG,kBAAkB,EAAEA,kBAAmB;IACvCF,UAAU,EAAEA,UAAW;IACvBG,cAAc,EAAEA,cAAe;IAC/BC,cAAc,EAAEA,cAAe;IAC/B1B,gCAAgC,EAC5BsC;EACH,CACJ,CACc,CACK,CAEtB,CACjB,EACD,CACIlB,QAAQ,EACRU,cAAc,EACdU,IAAI,EACJZ,UAAU,EACV6B,WAAW,EACXpC,YAAY,EACZC,UAAU,EACVoC,SAAS,EACTjC,cAAc,EACd1B,MAAM,EACNiC,WAAW,EACXM,yCAAyC,EACzCd,kBAAkB,EAClBE,cAAc,EACdyC,eAAe,EACflE,8BAA8B,EAC9BC,4BAA4B,CAEpC,CAAC;AACL,CACJ,CAAC;AAEDiB,MAAM,CAAC8D,WAAW,GAAG,QAAQ;AAE7B,eAAe9D,MAAM","ignoreList":[]}
|
|
@@ -41,6 +41,7 @@ const ListItem = /*#__PURE__*/forwardRef(({
|
|
|
41
41
|
shouldOpenImageOnClick = false,
|
|
42
42
|
shouldHideImageOrIconBackground,
|
|
43
43
|
shouldHideIndicator = false,
|
|
44
|
+
shouldAnimateLayout = false,
|
|
44
45
|
shouldPreventLayoutAnimation = false,
|
|
45
46
|
shouldRenderClosed = false,
|
|
46
47
|
shouldShowRoundImageOrIcon,
|
|
@@ -222,7 +223,7 @@ const ListItem = /*#__PURE__*/forwardRef(({
|
|
|
222
223
|
key: `list-item-${uuid}`,
|
|
223
224
|
ref: listItemRef,
|
|
224
225
|
"data-uuid": `${listGroupUuid ?? ''}---${uuid}`,
|
|
225
|
-
layout: shouldPreventLayoutAnimation
|
|
226
|
+
layout: shouldAnimateLayout && !shouldPreventLayoutAnimation && !shouldDisableAnimation ? 'position' : undefined,
|
|
226
227
|
$backgroundColor: backgroundColor,
|
|
227
228
|
$isClickable: isClickable,
|
|
228
229
|
$isInAccordion: typeof isParentAccordionWrapped === 'boolean' && !areaProvider.shouldDisableListItemPadding,
|
|
@@ -279,6 +280,7 @@ const ListItem = /*#__PURE__*/forwardRef(({
|
|
|
279
280
|
titleElement: titleElement,
|
|
280
281
|
setShouldEnableTooltip: setShouldEnableTooltip,
|
|
281
282
|
shouldDisableAnimation: shouldDisableAnimation,
|
|
283
|
+
shouldAnimateLayout: shouldAnimateLayout && !shouldPreventLayoutAnimation && !shouldDisableAnimation,
|
|
282
284
|
onImageError: onImageError
|
|
283
285
|
})), /*#__PURE__*/React.createElement(AnimatePresence, {
|
|
284
286
|
initial: false
|