@chayns-components/core 5.0.0-beta.1362 → 5.0.0-beta.1364
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/accordion/Accordion.js +1 -1
- package/lib/cjs/components/accordion/Accordion.js.map +1 -1
- 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 +19 -2
- package/lib/cjs/components/filter/Filter.js.map +1 -1
- package/lib/cjs/components/filter/filter-content/FIlterContent.js +10 -1
- package/lib/cjs/components/filter/filter-content/FIlterContent.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/components/search-input/SearchInput.js +13 -3
- package/lib/cjs/components/search-input/SearchInput.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/accordion/Accordion.js +1 -1
- package/lib/esm/components/accordion/Accordion.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 +18 -2
- package/lib/esm/components/filter/Filter.js.map +1 -1
- package/lib/esm/components/filter/filter-content/FIlterContent.js +9 -1
- package/lib/esm/components/filter/filter-content/FIlterContent.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/components/search-input/SearchInput.js +8 -4
- package/lib/esm/components/search-input/SearchInput.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/filter/Filter.d.ts +1 -0
- package/lib/types/components/filter/filter-content/FIlterContent.d.ts +1 -0
- package/lib/types/components/search-input/SearchInput.d.ts +3 -3
- package/package.json +2 -2
|
@@ -174,7 +174,7 @@ const Accordion = ({
|
|
|
174
174
|
$shouldHideBackground: shouldHideBackground,
|
|
175
175
|
$shouldHideBottomLine: shouldHideBottomLine,
|
|
176
176
|
onKeyDown: e => {
|
|
177
|
-
if (e.key === 'Enter') {
|
|
177
|
+
if (e.key === 'Enter' && e.target.className.includes('beta-chayns-accordion') && shouldIndex) {
|
|
178
178
|
e.preventDefault();
|
|
179
179
|
handleHeadClick();
|
|
180
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","names":["_react","require","_react2","_interopRequireWildcard","_uuid","_AreaContextProvider","_AccordionBody","_interopRequireDefault","_AccordionGroup","_AccordionHead","_AccordionContextProvider","_Accordion","_ref","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AccordionContext","exports","React","createContext","isWrapped","undefined","Accordion","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onHoverEnd","onHoverStart","onOpen","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","shouldHideBottomLine","title","titleElement","onTitleInputChange","titleInputProps","shouldSkipAnimation","shouldSkipAnimationProp","titleColor","shouldIndex","onBodyAnimationComplete","groupIsWrapped","openAccordionUuid","accordionGroupUuid","accordionUuids","updateOpenAccordionUuid","useContext","AccordionGroupContext","isParentWrapped","contextIsWrapped","AccordionWrappedContext","useMemo","isAccordionOpen","setIsAccordionOpen","useState","uuid","useUuid","isInitialRenderRef","useRef","initialRenderSkipRef","useInitialRenderRef","current","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","isLastAccordion","length","useEffect","handleHeadClick","useCallback","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","areaContextProviderValue","shouldChangeColor","accordionWrappedContextProviderValue","initialAnimation","height","opacity","createElement","StyledMotionAccordion","animate","className","exit","initial","$isOpen","tabIndex","$shouldShowLines","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","$shouldHideBottomLine","onKeyDown","key","preventDefault","onMouseEnter","onMouseLeave","transition","duration","Provider","value","MotionConfig","type","onClick","AnimatePresence","maxHeight","onScroll","onAnimationComplete","shouldHideBody","AreaContext","displayName","_default"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type MouseEventHandler,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { InputProps } from '../input/Input';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { AccordionWrappedContext } from './accordion-provider/AccordionContextProvider';\nimport { StyledMotionAccordion } from './Accordion.styles';\nimport { useInitialRenderRef } from '../../hooks/ref';\n\nexport const AccordionContext = React.createContext<{ isWrapped?: boolean }>({\n isWrapped: undefined,\n});\n\nexport type AccordionProps = {\n /**\n * Maximum height of the accordion body element. This automatically makes the content of the\n * body element scrollable.\n */\n bodyMaxHeight?: number;\n /**\n * The content of the accordion body\n */\n children: ReactNode;\n /**\n * The icon that is displayed in front of the title\n */\n icon?: string;\n /**\n * This can be used to automatically expand the Accordion during the first render.\n */\n isDefaultOpen?: boolean;\n /**\n * This will disable the Accordion so that it cannot be opened and will gray out the title. Does not work with isOpened.\n */\n isDisabled?: boolean;\n /**\n * This can be used so that the Accordion cannot be opened or closed.\n * In addition, in this case the icon is exchanged to mark the Accordions.\n */\n isFixed?: boolean;\n /**\n * This can be used to open the Accordion from the outside\n */\n isOpened?: boolean;\n /**\n * This will gray out the title of the Accordion to indicate hidden content, for example.\n */\n isTitleGreyed?: boolean;\n /**\n * Function that is executed when the accordion body will be scrolled\n */\n onBodyScroll?: (event: UIEvent<HTMLDivElement>) => void;\n /**\n * Function that is executed when the accordion will be closed.\n */\n onClose?: VoidFunction;\n /**\n * Function to be executed when the accordion is no longer hovered.\n */\n onHoverEnd?: MouseEventHandler<HTMLDivElement>;\n /**\n * Function to be executed when the accordion is hovered.\n */\n onHoverStart?: MouseEventHandler<HTMLDivElement>;\n /**\n * Function that is executed when the accordion will be opened.\n */\n onOpen?: VoidFunction;\n /**\n * Function that is executed when the accordion body is animated\n */\n onBodyAnimationComplete?: VoidFunction;\n /**\n * Function that is executed when the text of the search in the accordion\n * head changes. When this function is given, the search field is displayed\n * in the Accordion Head.\n */\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when the text of the search in the accordion\n * title changes. When this function is given, the search field is displayed\n * as the Accordion title.\n */\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * The placeholder to be used for the search\n */\n searchPlaceholder?: string;\n /**\n * The value that is displayed inside the search\n */\n searchValue?: string;\n /**\n * This will force the background color of the accordion to be used even if it is closed and not hovered.\n */\n shouldForceBackground?: boolean;\n /**\n * This will hide the background color of the accordion\n */\n shouldHideBackground?: boolean;\n /**\n * Whether the bottom line should be hidden.\n */\n shouldHideBottomLine?: boolean;\n /**\n * This will render the Accordion closed on the first render.\n */\n shouldRenderClosed?: boolean;\n /**\n * Whether the icon should be rotating.\n */\n shouldRotateIcon?: boolean;\n /**\n * Whether the animation should be skipped.\n * If 'isDefaultOpen' is true the initial animation will be skipped even this prop is false\n */\n shouldSkipAnimation?: boolean;\n /**\n * Title of the Accordion displayed in the head\n */\n title?: string;\n /**\n * Additional elements to be displayed in the header next to the title.\n */\n titleElement?: ReactNode;\n /**\n * The props of the title Input.\n */\n titleInputProps?: InputProps;\n /**\n * The title color.\n */\n titleColor?: CSSProperties['color'];\n /**\n * Whether the accordion should be indexed.\n */\n shouldIndex?: boolean;\n};\n\nconst Accordion: FC<AccordionProps> = ({\n bodyMaxHeight,\n children,\n icon,\n isDefaultOpen = false,\n isDisabled = false,\n isFixed = false,\n isOpened,\n isTitleGreyed = false,\n onBodyScroll,\n onClose,\n onHoverEnd,\n onHoverStart,\n onOpen,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n shouldHideBottomLine = false,\n title,\n titleElement,\n onTitleInputChange,\n titleInputProps,\n shouldSkipAnimation: shouldSkipAnimationProp = false,\n titleColor,\n shouldIndex = false,\n onBodyAnimationComplete,\n}) => {\n const {\n isWrapped: groupIsWrapped,\n openAccordionUuid,\n accordionGroupUuid,\n accordionUuids,\n updateOpenAccordionUuid,\n } = useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const { isWrapped: contextIsWrapped } = useContext(AccordionWrappedContext);\n const isWrapped = useMemo(\n () => groupIsWrapped ?? contextIsWrapped,\n [contextIsWrapped, groupIsWrapped],\n );\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const initialRenderSkipRef = useInitialRenderRef(true);\n\n const shouldSkipAnimation =\n shouldSkipAnimationProp ?? (initialRenderSkipRef.current && isDefaultOpen);\n\n const isInGroup = shouldSkipAnimation ? false : typeof updateOpenAccordionUuid === 'function';\n\n const isOpen = isInGroup ? openAccordionUuid === uuid : isAccordionOpen;\n\n const isOpenRef = useRef(isOpen);\n const onCloseRef = useRef(onClose);\n const onOpenRef = useRef(onOpen);\n\n const isLastAccordion = useMemo(\n () => (accordionUuids ? accordionUuids[accordionUuids.length - 1] === uuid : false),\n [accordionUuids, uuid],\n );\n\n useEffect(() => {\n isOpenRef.current = isOpen;\n onCloseRef.current = onClose;\n onOpenRef.current = onOpen;\n }, [isOpen, onClose, onOpen]);\n\n const handleHeadClick = useCallback(() => {\n if (isDisabled) {\n return;\n }\n\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid);\n }\n\n setIsAccordionOpen((currentIsAccordionOpen) => !currentIsAccordionOpen);\n }, [isDisabled, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (isDisabled && isOpen) {\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid);\n }\n\n setIsAccordionOpen((currentIsAccordionOpen) => !currentIsAccordionOpen);\n }\n }, [isDisabled, isOpen, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (isInitialRenderRef.current) {\n isInitialRenderRef.current = false;\n } else if (isOpen) {\n if (typeof onOpenRef.current === 'function') {\n onOpenRef.current();\n }\n } else if (typeof onCloseRef.current === 'function') {\n onCloseRef.current();\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (isDefaultOpen) {\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid, { shouldOnlyOpen: true });\n } else {\n setIsAccordionOpen(true);\n }\n }\n }, [isDefaultOpen, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (typeof isOpened === 'boolean') {\n if (typeof updateOpenAccordionUuid === 'function' && isOpened !== isOpenRef.current) {\n updateOpenAccordionUuid(uuid);\n } else {\n setIsAccordionOpen(isOpened);\n }\n }\n }, [isOpened, updateOpenAccordionUuid, uuid]);\n\n const accordionContextProviderValue = useMemo(\n () => ({ isWrapped: isWrapped === true }),\n [isWrapped],\n );\n\n const areaContextProviderValue = useMemo(\n () => ({ shouldChangeColor: !shouldHideBackground }),\n [shouldHideBackground],\n );\n\n const accordionWrappedContextProviderValue = useMemo(() => ({ isWrapped: true }), []);\n\n const initialAnimation = useMemo(() => {\n if (shouldSkipAnimation) {\n return { height: 'auto', opacity: 1 };\n }\n\n return isOpen ? { height: 'auto', opacity: 1 } : { height: 0, opacity: 0 };\n }, [isOpen, shouldSkipAnimation]);\n\n return (\n <StyledMotionAccordion\n animate={{ height: 'auto', opacity: 1 }}\n data-uuid={`${accordionGroupUuid ?? ''}---${uuid}`}\n className=\"beta-chayns-accordion\"\n exit={{ height: 0, opacity: 0 }}\n initial={initialAnimation}\n $isOpen={isOpen}\n tabIndex={shouldIndex ? 0 : -1}\n $shouldShowLines={!isLastAccordion || !isWrapped}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n $shouldHideBottomLine={shouldHideBottomLine}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleHeadClick();\n }\n }}\n onMouseEnter={onHoverStart}\n onMouseLeave={onHoverEnd}\n transition={{ duration: shouldSkipAnimation ? 0 : 0.25 }}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n uuid={uuid}\n icon={icon}\n isOpen={isOpen}\n shouldSkipAnimation={shouldSkipAnimation}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n onTitleInputChange={onTitleInputChange}\n titleInputProps={titleInputProps}\n titleColor={titleColor}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n shouldSkipAnimation={shouldSkipAnimation}\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n onAnimationComplete={onBodyAnimationComplete}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AccordionWrappedContext.Provider\n value={accordionWrappedContextProviderValue}\n >\n <AreaContext.Provider value={areaContextProviderValue}>\n {children}\n </AreaContext.Provider>\n </AccordionWrappedContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledMotionAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AAcA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAJ,OAAA;AAEA,IAAAK,cAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAF,sBAAA,CAAAN,OAAA;AACA,IAAAS,yBAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AACA,IAAAW,IAAA,GAAAX,OAAA;AAAsD,SAAAM,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAV,wBAAAU,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAU,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;AAE/C,MAAMgB,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,eAAK,CAACC,aAAa,CAA0B;EACzEC,SAAS,EAAEC;AACf,CAAC,CAAC;AAoIF,MAAMC,SAA6B,GAAGA,CAAC;EACnCC,aAAa;EACbC,QAAQ;EACRC,IAAI;EACJC,aAAa,GAAG,KAAK;EACrBC,UAAU,GAAG,KAAK;EAClBC,OAAO,GAAG,KAAK;EACfC,QAAQ;EACRC,aAAa,GAAG,KAAK;EACrBC,YAAY;EACZC,OAAO;EACPC,UAAU;EACVC,YAAY;EACZC,MAAM;EACNC,cAAc;EACdC,YAAY;EACZC,iBAAiB;EACjBC,WAAW;EACXC,qBAAqB,GAAG,KAAK;EAC7BC,oBAAoB,GAAG,KAAK;EAC5BC,kBAAkB,GAAG,KAAK;EAC1BC,gBAAgB,GAAG,IAAI;EACvBC,oBAAoB,GAAG,KAAK;EAC5BC,KAAK;EACLC,YAAY;EACZC,kBAAkB;EAClBC,eAAe;EACfC,mBAAmB,EAAEC,uBAAuB,GAAG,KAAK;EACpDC,UAAU;EACVC,WAAW,GAAG,KAAK;EACnBC;AACJ,CAAC,KAAK;EACF,MAAM;IACFjC,SAAS,EAAEkC,cAAc;IACzBC,iBAAiB;IACjBC,kBAAkB;IAClBC,cAAc;IACdC;EACJ,CAAC,GAAG,IAAAC,kBAAU,EAACC,qCAAqB,CAAC;EACrC,MAAM;IAAExC,SAAS,EAAEyC;EAAgB,CAAC,GAAG,IAAAF,kBAAU,EAAC3C,gBAAgB,CAAC;EAEnE,MAAM;IAAEI,SAAS,EAAE0C;EAAiB,CAAC,GAAG,IAAAH,kBAAU,EAACI,iDAAuB,CAAC;EAC3E,MAAM3C,SAAS,GAAG,IAAA4C,eAAO,EACrB,MAAMV,cAAc,IAAIQ,gBAAgB,EACxC,CAACA,gBAAgB,EAAER,cAAc,CACrC,CAAC;EAED,MAAM,CAACW,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,gBAAQ,EAAUzC,aAAa,IAAIG,QAAQ,CAAC;EAE1F,MAAMuC,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EAEtB,MAAMC,kBAAkB,GAAG,IAAAC,cAAM,EAAC,IAAI,CAAC;EAEvC,MAAMC,oBAAoB,GAAG,IAAAC,wBAAmB,EAAC,IAAI,CAAC;EAEtD,MAAMxB,mBAAmB,GACrBC,uBAAuB,KAAKsB,oBAAoB,CAACE,OAAO,IAAIhD,aAAa,CAAC;EAE9E,MAAMiD,SAAS,GAAG1B,mBAAmB,GAAG,KAAK,GAAG,OAAOS,uBAAuB,KAAK,UAAU;EAE7F,MAAMkB,MAAM,GAAGD,SAAS,GAAGpB,iBAAiB,KAAKa,IAAI,GAAGH,eAAe;EAEvE,MAAMY,SAAS,GAAG,IAAAN,cAAM,EAACK,MAAM,CAAC;EAChC,MAAME,UAAU,GAAG,IAAAP,cAAM,EAACvC,OAAO,CAAC;EAClC,MAAM+C,SAAS,GAAG,IAAAR,cAAM,EAACpC,MAAM,CAAC;EAEhC,MAAM6C,eAAe,GAAG,IAAAhB,eAAO,EAC3B,MAAOP,cAAc,GAAGA,cAAc,CAACA,cAAc,CAACwB,MAAM,GAAG,CAAC,CAAC,KAAKb,IAAI,GAAG,KAAM,EACnF,CAACX,cAAc,EAAEW,IAAI,CACzB,CAAC;EAED,IAAAc,iBAAS,EAAC,MAAM;IACZL,SAAS,CAACH,OAAO,GAAGE,MAAM;IAC1BE,UAAU,CAACJ,OAAO,GAAG1C,OAAO;IAC5B+C,SAAS,CAACL,OAAO,GAAGvC,MAAM;EAC9B,CAAC,EAAE,CAACyC,MAAM,EAAE5C,OAAO,EAAEG,MAAM,CAAC,CAAC;EAE7B,MAAMgD,eAAe,GAAG,IAAAC,mBAAW,EAAC,MAAM;IACtC,IAAIzD,UAAU,EAAE;MACZ;IACJ;IAEA,IAAI,OAAO+B,uBAAuB,KAAK,UAAU,EAAE;MAC/CA,uBAAuB,CAACU,IAAI,CAAC;IACjC;IAEAF,kBAAkB,CAAEmB,sBAAsB,IAAK,CAACA,sBAAsB,CAAC;EAC3E,CAAC,EAAE,CAAC1D,UAAU,EAAE+B,uBAAuB,EAAEU,IAAI,CAAC,CAAC;EAE/C,IAAAc,iBAAS,EAAC,MAAM;IACZ,IAAIvD,UAAU,IAAIiD,MAAM,EAAE;MACtB,IAAI,OAAOlB,uBAAuB,KAAK,UAAU,EAAE;QAC/CA,uBAAuB,CAACU,IAAI,CAAC;MACjC;MAEAF,kBAAkB,CAAEmB,sBAAsB,IAAK,CAACA,sBAAsB,CAAC;IAC3E;EACJ,CAAC,EAAE,CAAC1D,UAAU,EAAEiD,MAAM,EAAElB,uBAAuB,EAAEU,IAAI,CAAC,CAAC;EAEvD,IAAAc,iBAAS,EAAC,MAAM;IACZ,IAAIZ,kBAAkB,CAACI,OAAO,EAAE;MAC5BJ,kBAAkB,CAACI,OAAO,GAAG,KAAK;IACtC,CAAC,MAAM,IAAIE,MAAM,EAAE;MACf,IAAI,OAAOG,SAAS,CAACL,OAAO,KAAK,UAAU,EAAE;QACzCK,SAAS,CAACL,OAAO,CAAC,CAAC;MACvB;IACJ,CAAC,MAAM,IAAI,OAAOI,UAAU,CAACJ,OAAO,KAAK,UAAU,EAAE;MACjDI,UAAU,CAACJ,OAAO,CAAC,CAAC;IACxB;EACJ,CAAC,EAAE,CAACE,MAAM,CAAC,CAAC;EAEZ,IAAAM,iBAAS,EAAC,MAAM;IACZ,IAAIxD,aAAa,EAAE;MACf,IAAI,OAAOgC,uBAAuB,KAAK,UAAU,EAAE;QAC/CA,uBAAuB,CAACU,IAAI,EAAE;UAAEkB,cAAc,EAAE;QAAK,CAAC,CAAC;MAC3D,CAAC,MAAM;QACHpB,kBAAkB,CAAC,IAAI,CAAC;MAC5B;IACJ;EACJ,CAAC,EAAE,CAACxC,aAAa,EAAEgC,uBAAuB,EAAEU,IAAI,CAAC,CAAC;EAElD,IAAAc,iBAAS,EAAC,MAAM;IACZ,IAAI,OAAOrD,QAAQ,KAAK,SAAS,EAAE;MAC/B,IAAI,OAAO6B,uBAAuB,KAAK,UAAU,IAAI7B,QAAQ,KAAKgD,SAAS,CAACH,OAAO,EAAE;QACjFhB,uBAAuB,CAACU,IAAI,CAAC;MACjC,CAAC,MAAM;QACHF,kBAAkB,CAACrC,QAAQ,CAAC;MAChC;IACJ;EACJ,CAAC,EAAE,CAACA,QAAQ,EAAE6B,uBAAuB,EAAEU,IAAI,CAAC,CAAC;EAE7C,MAAMmB,6BAA6B,GAAG,IAAAvB,eAAO,EACzC,OAAO;IAAE5C,SAAS,EAAEA,SAAS,KAAK;EAAK,CAAC,CAAC,EACzC,CAACA,SAAS,CACd,CAAC;EAED,MAAMoE,wBAAwB,GAAG,IAAAxB,eAAO,EACpC,OAAO;IAAEyB,iBAAiB,EAAE,CAAChD;EAAqB,CAAC,CAAC,EACpD,CAACA,oBAAoB,CACzB,CAAC;EAED,MAAMiD,oCAAoC,GAAG,IAAA1B,eAAO,EAAC,OAAO;IAAE5C,SAAS,EAAE;EAAK,CAAC,CAAC,EAAE,EAAE,CAAC;EAErF,MAAMuE,gBAAgB,GAAG,IAAA3B,eAAO,EAAC,MAAM;IACnC,IAAIf,mBAAmB,EAAE;MACrB,OAAO;QAAE2C,MAAM,EAAE,MAAM;QAAEC,OAAO,EAAE;MAAE,CAAC;IACzC;IAEA,OAAOjB,MAAM,GAAG;MAAEgB,MAAM,EAAE,MAAM;MAAEC,OAAO,EAAE;IAAE,CAAC,GAAG;MAAED,MAAM,EAAE,CAAC;MAAEC,OAAO,EAAE;IAAE,CAAC;EAC9E,CAAC,EAAE,CAACjB,MAAM,EAAE3B,mBAAmB,CAAC,CAAC;EAEjC,oBACI/D,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAACnG,UAAA,CAAAoG,qBAAqB;IAClBC,OAAO,EAAE;MAAEJ,MAAM,EAAE,MAAM;MAAEC,OAAO,EAAE;IAAE,CAAE;IACxC,aAAW,GAAGrC,kBAAkB,IAAI,EAAE,MAAMY,IAAI,EAAG;IACnD6B,SAAS,EAAC,uBAAuB;IACjCC,IAAI,EAAE;MAAEN,MAAM,EAAE,CAAC;MAAEC,OAAO,EAAE;IAAE,CAAE;IAChCM,OAAO,EAAER,gBAAiB;IAC1BS,OAAO,EAAExB,MAAO;IAChByB,QAAQ,EAAEjD,WAAW,GAAG,CAAC,GAAG,CAAC,CAAE;IAC/BkD,gBAAgB,EAAE,CAACtB,eAAe,IAAI,CAAC5D,SAAU;IACjDmF,gBAAgB,EAAE1C,eAAgB;IAClC2C,UAAU,EAAEpF,SAAU;IACtBqF,sBAAsB,EAAEjE,qBAAsB;IAC9CkE,qBAAqB,EAAEjE,oBAAqB;IAC5CkE,qBAAqB,EAAE/D,oBAAqB;IAC5CgE,SAAS,EAAG/G,CAAC,IAAK;MACd,IAAIA,CAAC,CAACgH,GAAG,KAAK,OAAO,EAAE;QACnBhH,CAAC,CAACiH,cAAc,CAAC,CAAC;QAClB3B,eAAe,CAAC,CAAC;MACrB;IACJ,CAAE;IACF4B,YAAY,EAAE7E,YAAa;IAC3B8E,YAAY,EAAE/E,UAAW;IACzBgF,UAAU,EAAE;MAAEC,QAAQ,EAAEjE,mBAAmB,GAAG,CAAC,GAAG;IAAK;EAAE,gBAEzD/D,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAAC9E,gBAAgB,CAACmG,QAAQ;IAACC,KAAK,EAAE7B;EAA8B,gBAC5DrG,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAAC9G,MAAA,CAAAqI,YAAY;IAACJ,UAAU,EAAE;MAAEK,IAAI,EAAE;IAAQ;EAAE,gBACxCpI,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAACrG,cAAA,CAAAM,OAAa;IACVqE,IAAI,EAAEA,IAAK;IACX3C,IAAI,EAAEA,IAAK;IACXmD,MAAM,EAAEA,MAAO;IACf3B,mBAAmB,EAAEA,mBAAoB;IACzCrB,OAAO,EAAEA,OAAQ;IACjBE,aAAa,EAAEA,aAAa,IAAIH,UAAW;IAC3CP,SAAS,EAAEA,SAAS,KAAK,IAAK;IAC9BmG,OAAO,EAAEpC,eAAgB;IACzB/C,cAAc,EAAEA,cAAe;IAC/BC,YAAY,EAAEA,YAAa;IAC3BC,iBAAiB,EAAEA,iBAAkB;IACrCC,WAAW,EAAEA,WAAY;IACzBI,gBAAgB,EAAEA,gBAAiB;IACnCE,KAAK,EAAEA,KAAM;IACbC,YAAY,EAAEA,YAAa;IAC3BC,kBAAkB,EAAEA,kBAAmB;IACvCC,eAAe,EAAEA,eAAgB;IACjCG,UAAU,EAAEA;EAAW,CAC1B,CAAC,eACFjE,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAAC9G,MAAA,CAAAwI,eAAe;IAACrB,OAAO,EAAE;EAAM,GAC3B,CAACvB,MAAM,IAAIlC,kBAAkB,kBAC1BxD,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAACxG,cAAA,CAAAS,OAAa;IACVkD,mBAAmB,EAAEA,mBAAoB;IACzCwE,SAAS,EAAElG,aAAc;IACzBmG,QAAQ,EAAE3F,YAAa;IACvB4F,mBAAmB,EAAEtE,uBAAwB;IAC7CuE,cAAc,EAAElF,kBAAkB,IAAI,CAACkC;EAAO,gBAE9C1F,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAACpG,yBAAA,CAAAqE,uBAAuB,CAACoD,QAAQ;IAC7BC,KAAK,EAAE1B;EAAqC,gBAE5CxG,OAAA,CAAAa,OAAA,CAAA+F,aAAA,CAACzG,oBAAA,CAAAwI,WAAW,CAACV,QAAQ;IAACC,KAAK,EAAE5B;EAAyB,GACjDhE,QACiB,CACQ,CACvB,CAEN,CACP,CACS,CACR,CAAC;AAEhC,CAAC;AAEDF,SAAS,CAACwG,WAAW,GAAG,WAAW;AAAC,IAAAC,QAAA,GAAA9G,OAAA,CAAAlB,OAAA,GAErBuB,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Accordion.js","names":["_react","require","_react2","_interopRequireWildcard","_uuid","_AreaContextProvider","_AccordionBody","_interopRequireDefault","_AccordionGroup","_AccordionHead","_AccordionContextProvider","_Accordion","_ref","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AccordionContext","exports","React","createContext","isWrapped","undefined","Accordion","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onHoverEnd","onHoverStart","onOpen","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","shouldHideBottomLine","title","titleElement","onTitleInputChange","titleInputProps","shouldSkipAnimation","shouldSkipAnimationProp","titleColor","shouldIndex","onBodyAnimationComplete","groupIsWrapped","openAccordionUuid","accordionGroupUuid","accordionUuids","updateOpenAccordionUuid","useContext","AccordionGroupContext","isParentWrapped","contextIsWrapped","AccordionWrappedContext","useMemo","isAccordionOpen","setIsAccordionOpen","useState","uuid","useUuid","isInitialRenderRef","useRef","initialRenderSkipRef","useInitialRenderRef","current","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","isLastAccordion","length","useEffect","handleHeadClick","useCallback","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","areaContextProviderValue","shouldChangeColor","accordionWrappedContextProviderValue","initialAnimation","height","opacity","createElement","StyledMotionAccordion","animate","className","exit","initial","$isOpen","tabIndex","$shouldShowLines","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","$shouldHideBottomLine","onKeyDown","key","target","includes","preventDefault","onMouseEnter","onMouseLeave","transition","duration","Provider","value","MotionConfig","type","onClick","AnimatePresence","maxHeight","onScroll","onAnimationComplete","shouldHideBody","AreaContext","displayName","_default"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type MouseEventHandler,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { InputProps } from '../input/Input';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { AccordionWrappedContext } from './accordion-provider/AccordionContextProvider';\nimport { StyledMotionAccordion } from './Accordion.styles';\nimport { useInitialRenderRef } from '../../hooks/ref';\n\nexport const AccordionContext = React.createContext<{ isWrapped?: boolean }>({\n isWrapped: undefined,\n});\n\nexport type AccordionProps = {\n /**\n * Maximum height of the accordion body element. This automatically makes the content of the\n * body element scrollable.\n */\n bodyMaxHeight?: number;\n /**\n * The content of the accordion body\n */\n children: ReactNode;\n /**\n * The icon that is displayed in front of the title\n */\n icon?: string;\n /**\n * This can be used to automatically expand the Accordion during the first render.\n */\n isDefaultOpen?: boolean;\n /**\n * This will disable the Accordion so that it cannot be opened and will gray out the title. Does not work with isOpened.\n */\n isDisabled?: boolean;\n /**\n * This can be used so that the Accordion cannot be opened or closed.\n * In addition, in this case the icon is exchanged to mark the Accordions.\n */\n isFixed?: boolean;\n /**\n * This can be used to open the Accordion from the outside\n */\n isOpened?: boolean;\n /**\n * This will gray out the title of the Accordion to indicate hidden content, for example.\n */\n isTitleGreyed?: boolean;\n /**\n * Function that is executed when the accordion body will be scrolled\n */\n onBodyScroll?: (event: UIEvent<HTMLDivElement>) => void;\n /**\n * Function that is executed when the accordion will be closed.\n */\n onClose?: VoidFunction;\n /**\n * Function to be executed when the accordion is no longer hovered.\n */\n onHoverEnd?: MouseEventHandler<HTMLDivElement>;\n /**\n * Function to be executed when the accordion is hovered.\n */\n onHoverStart?: MouseEventHandler<HTMLDivElement>;\n /**\n * Function that is executed when the accordion will be opened.\n */\n onOpen?: VoidFunction;\n /**\n * Function that is executed when the accordion body is animated\n */\n onBodyAnimationComplete?: VoidFunction;\n /**\n * Function that is executed when the text of the search in the accordion\n * head changes. When this function is given, the search field is displayed\n * in the Accordion Head.\n */\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when the text of the search in the accordion\n * title changes. When this function is given, the search field is displayed\n * as the Accordion title.\n */\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * The placeholder to be used for the search\n */\n searchPlaceholder?: string;\n /**\n * The value that is displayed inside the search\n */\n searchValue?: string;\n /**\n * This will force the background color of the accordion to be used even if it is closed and not hovered.\n */\n shouldForceBackground?: boolean;\n /**\n * This will hide the background color of the accordion\n */\n shouldHideBackground?: boolean;\n /**\n * Whether the bottom line should be hidden.\n */\n shouldHideBottomLine?: boolean;\n /**\n * This will render the Accordion closed on the first render.\n */\n shouldRenderClosed?: boolean;\n /**\n * Whether the icon should be rotating.\n */\n shouldRotateIcon?: boolean;\n /**\n * Whether the animation should be skipped.\n * If 'isDefaultOpen' is true the initial animation will be skipped even this prop is false\n */\n shouldSkipAnimation?: boolean;\n /**\n * Title of the Accordion displayed in the head\n */\n title?: string;\n /**\n * Additional elements to be displayed in the header next to the title.\n */\n titleElement?: ReactNode;\n /**\n * The props of the title Input.\n */\n titleInputProps?: InputProps;\n /**\n * The title color.\n */\n titleColor?: CSSProperties['color'];\n /**\n * Whether the accordion should be indexed.\n */\n shouldIndex?: boolean;\n};\n\nconst Accordion: FC<AccordionProps> = ({\n bodyMaxHeight,\n children,\n icon,\n isDefaultOpen = false,\n isDisabled = false,\n isFixed = false,\n isOpened,\n isTitleGreyed = false,\n onBodyScroll,\n onClose,\n onHoverEnd,\n onHoverStart,\n onOpen,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n shouldHideBottomLine = false,\n title,\n titleElement,\n onTitleInputChange,\n titleInputProps,\n shouldSkipAnimation: shouldSkipAnimationProp = false,\n titleColor,\n shouldIndex = false,\n onBodyAnimationComplete,\n}) => {\n const {\n isWrapped: groupIsWrapped,\n openAccordionUuid,\n accordionGroupUuid,\n accordionUuids,\n updateOpenAccordionUuid,\n } = useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const { isWrapped: contextIsWrapped } = useContext(AccordionWrappedContext);\n const isWrapped = useMemo(\n () => groupIsWrapped ?? contextIsWrapped,\n [contextIsWrapped, groupIsWrapped],\n );\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const initialRenderSkipRef = useInitialRenderRef(true);\n\n const shouldSkipAnimation =\n shouldSkipAnimationProp ?? (initialRenderSkipRef.current && isDefaultOpen);\n\n const isInGroup = shouldSkipAnimation ? false : typeof updateOpenAccordionUuid === 'function';\n\n const isOpen = isInGroup ? openAccordionUuid === uuid : isAccordionOpen;\n\n const isOpenRef = useRef(isOpen);\n const onCloseRef = useRef(onClose);\n const onOpenRef = useRef(onOpen);\n\n const isLastAccordion = useMemo(\n () => (accordionUuids ? accordionUuids[accordionUuids.length - 1] === uuid : false),\n [accordionUuids, uuid],\n );\n\n useEffect(() => {\n isOpenRef.current = isOpen;\n onCloseRef.current = onClose;\n onOpenRef.current = onOpen;\n }, [isOpen, onClose, onOpen]);\n\n const handleHeadClick = useCallback(() => {\n if (isDisabled) {\n return;\n }\n\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid);\n }\n\n setIsAccordionOpen((currentIsAccordionOpen) => !currentIsAccordionOpen);\n }, [isDisabled, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (isDisabled && isOpen) {\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid);\n }\n\n setIsAccordionOpen((currentIsAccordionOpen) => !currentIsAccordionOpen);\n }\n }, [isDisabled, isOpen, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (isInitialRenderRef.current) {\n isInitialRenderRef.current = false;\n } else if (isOpen) {\n if (typeof onOpenRef.current === 'function') {\n onOpenRef.current();\n }\n } else if (typeof onCloseRef.current === 'function') {\n onCloseRef.current();\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (isDefaultOpen) {\n if (typeof updateOpenAccordionUuid === 'function') {\n updateOpenAccordionUuid(uuid, { shouldOnlyOpen: true });\n } else {\n setIsAccordionOpen(true);\n }\n }\n }, [isDefaultOpen, updateOpenAccordionUuid, uuid]);\n\n useEffect(() => {\n if (typeof isOpened === 'boolean') {\n if (typeof updateOpenAccordionUuid === 'function' && isOpened !== isOpenRef.current) {\n updateOpenAccordionUuid(uuid);\n } else {\n setIsAccordionOpen(isOpened);\n }\n }\n }, [isOpened, updateOpenAccordionUuid, uuid]);\n\n const accordionContextProviderValue = useMemo(\n () => ({ isWrapped: isWrapped === true }),\n [isWrapped],\n );\n\n const areaContextProviderValue = useMemo(\n () => ({ shouldChangeColor: !shouldHideBackground }),\n [shouldHideBackground],\n );\n\n const accordionWrappedContextProviderValue = useMemo(() => ({ isWrapped: true }), []);\n\n const initialAnimation = useMemo(() => {\n if (shouldSkipAnimation) {\n return { height: 'auto', opacity: 1 };\n }\n\n return isOpen ? { height: 'auto', opacity: 1 } : { height: 0, opacity: 0 };\n }, [isOpen, shouldSkipAnimation]);\n\n return (\n <StyledMotionAccordion\n animate={{ height: 'auto', opacity: 1 }}\n data-uuid={`${accordionGroupUuid ?? ''}---${uuid}`}\n className=\"beta-chayns-accordion\"\n exit={{ height: 0, opacity: 0 }}\n initial={initialAnimation}\n $isOpen={isOpen}\n tabIndex={shouldIndex ? 0 : -1}\n $shouldShowLines={!isLastAccordion || !isWrapped}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n $shouldHideBottomLine={shouldHideBottomLine}\n onKeyDown={(e) => {\n if (\n e.key === 'Enter' &&\n (e.target as HTMLDivElement).className.includes('beta-chayns-accordion') &&\n shouldIndex\n ) {\n e.preventDefault();\n handleHeadClick();\n }\n }}\n onMouseEnter={onHoverStart}\n onMouseLeave={onHoverEnd}\n transition={{ duration: shouldSkipAnimation ? 0 : 0.25 }}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n uuid={uuid}\n icon={icon}\n isOpen={isOpen}\n shouldSkipAnimation={shouldSkipAnimation}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n onTitleInputChange={onTitleInputChange}\n titleInputProps={titleInputProps}\n titleColor={titleColor}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n shouldSkipAnimation={shouldSkipAnimation}\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n onAnimationComplete={onBodyAnimationComplete}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AccordionWrappedContext.Provider\n value={accordionWrappedContextProviderValue}\n >\n <AreaContext.Provider value={areaContextProviderValue}>\n {children}\n </AreaContext.Provider>\n </AccordionWrappedContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledMotionAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/cjs/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.js
CHANGED
|
@@ -98,7 +98,7 @@ const DelayedDropdownContent = ({
|
|
|
98
98
|
duration: ANIMATION_DELAY_MS / 1000,
|
|
99
99
|
type: 'tween'
|
|
100
100
|
},
|
|
101
|
-
inert: !shouldShowContent
|
|
101
|
+
inert: !shouldShowContent ? 'true' : 'false'
|
|
102
102
|
}, children);
|
|
103
103
|
};
|
|
104
104
|
DelayedDropdownContent.displayName = 'DelayedDropdownContent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayedDropdownContent.js","names":["_react","_interopRequireWildcard","require","_DelayedDropdownContent","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ANIMATION_DELAY_MS","AnimationType","DelayedDropdownContent","children","shouldShowContent","onMeasure","coordinates","transform","animationState","setAnimationState","useState","None","ref","useRef","timeoutRef","measureElement","useCallback","current","height","width","x","y","getBoundingClientRect","scrollHeight","element","FadeIn","window","setTimeout","Visible","useEffect","observer","ResizeObserver","observe","disconnect","Hidden","clearTimeout","prevState","FadeOut","refCallback","reference","undefined","createElement","StyledMotionDelayedDropdownContent","$coordinates","$transform","$shouldHideContent","animate","opacity","includes","transition","duration","type","inert","displayName","_default","exports"],"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}\n >\n {children}\n </StyledMotionDelayedDropdownContent>\n );\n};\n\nDelayedDropdownContent.displayName = 'DelayedDropdownContent';\n\nexport default DelayedDropdownContent;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DelayedDropdownContent.js","names":["_react","_interopRequireWildcard","require","_DelayedDropdownContent","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ANIMATION_DELAY_MS","AnimationType","DelayedDropdownContent","children","shouldShowContent","onMeasure","coordinates","transform","animationState","setAnimationState","useState","None","ref","useRef","timeoutRef","measureElement","useCallback","current","height","width","x","y","getBoundingClientRect","scrollHeight","element","FadeIn","window","setTimeout","Visible","useEffect","observer","ResizeObserver","observe","disconnect","Hidden","clearTimeout","prevState","FadeOut","refCallback","reference","undefined","createElement","StyledMotionDelayedDropdownContent","$coordinates","$transform","$shouldHideContent","animate","opacity","includes","transition","duration","type","inert","displayName","_default","exports"],"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 ? 'true' : 'false'}\n >\n {children}\n </StyledMotionDelayedDropdownContent>\n );\n};\n\nDelayedDropdownContent.displayName = 'DelayedDropdownContent';\n\nexport default DelayedDropdownContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,6 +21,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
21
21
|
headline,
|
|
22
22
|
searchConfig,
|
|
23
23
|
sortConfig,
|
|
24
|
+
shouldAutoFocus = false,
|
|
24
25
|
shouldShowRoundedHoverEffect = false,
|
|
25
26
|
filterButtonConfig,
|
|
26
27
|
checkboxConfig,
|
|
@@ -29,6 +30,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
29
30
|
}, ref) => {
|
|
30
31
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
31
32
|
const [isSearchActive, setIsSearchActive] = (0, _react.useState)(false);
|
|
33
|
+
const [shouldFocus, setShouldFocus] = (0, _react.useState)(false);
|
|
32
34
|
const [backgroundDistance, setBackgroundDistance] = (0, _react.useState)(0);
|
|
33
35
|
const [backgroundCoordinates, setBackgroundCoordinates] = (0, _react.useState)({
|
|
34
36
|
top: 0,
|
|
@@ -37,6 +39,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
37
39
|
const contentRef = (0, _react.useRef)(null);
|
|
38
40
|
const iconRef = (0, _react.useRef)(null);
|
|
39
41
|
const filterRef = (0, _react.useRef)(null);
|
|
42
|
+
const searchRef = (0, _react.useRef)(null);
|
|
40
43
|
const contextMenuRef = (0, _react.useRef)(null);
|
|
41
44
|
const type = (0, _react.useMemo)(() => {
|
|
42
45
|
if (filterButtonConfig && !searchConfig && !sortConfig && !checkboxConfig) {
|
|
@@ -77,15 +80,27 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
77
80
|
setIsSearchActive(false);
|
|
78
81
|
}
|
|
79
82
|
}, [type]);
|
|
83
|
+
(0, _react.useEffect)(() => {
|
|
84
|
+
if (shouldFocus) {
|
|
85
|
+
var _searchRef$current;
|
|
86
|
+
(_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus();
|
|
87
|
+
window.setTimeout(() => {
|
|
88
|
+
setShouldFocus(false);
|
|
89
|
+
}, 200);
|
|
90
|
+
}
|
|
91
|
+
}, [shouldFocus]);
|
|
80
92
|
const handleShow = (0, _react.useCallback)(() => {
|
|
81
93
|
setIsOpen(true);
|
|
94
|
+
if (shouldAutoFocus) {
|
|
95
|
+
setShouldFocus(true);
|
|
96
|
+
}
|
|
82
97
|
if (type === _filter.FilterType.ONLY_SORT && contextMenuRef.current) {
|
|
83
98
|
contextMenuRef.current.hide();
|
|
84
99
|
}
|
|
85
100
|
if (type === _filter.FilterType.ONLY_SEARCH) {
|
|
86
101
|
setIsSearchActive(true);
|
|
87
102
|
}
|
|
88
|
-
}, [type]);
|
|
103
|
+
}, [shouldAutoFocus, type]);
|
|
89
104
|
(0, _react.useImperativeHandle)(ref, () => ({
|
|
90
105
|
hide: handleHide,
|
|
91
106
|
show: handleShow
|
|
@@ -180,6 +195,7 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
180
195
|
setIsSearchActive(isActive);
|
|
181
196
|
setIsOpen(isActive);
|
|
182
197
|
},
|
|
198
|
+
ref: searchRef,
|
|
183
199
|
isActive: isSearchActive,
|
|
184
200
|
value: searchConfig.searchValue,
|
|
185
201
|
onChange: ev => searchConfig.onSearchChange(ev.target.value)
|
|
@@ -195,11 +211,12 @@ const Filter = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
195
211
|
isOpen: isOpen,
|
|
196
212
|
startDelay: backgroundDistance > 0 ? 0.1 : 0
|
|
197
213
|
}, /*#__PURE__*/_react.default.createElement(_FIlterContent.default, {
|
|
214
|
+
shouldAutoFocus: shouldFocus,
|
|
198
215
|
searchConfig: searchConfig,
|
|
199
216
|
filterButtonConfig: filterButtonConfig,
|
|
200
217
|
sortConfig: sortConfig,
|
|
201
218
|
checkboxConfig: checkboxConfig
|
|
202
|
-
})))), [headline, isSearchActive, type, rightIcons, iconElement, backgroundDistance, backgroundElement, searchConfig, sortConfig, sortItems, checkboxConfig, isOpen, filterButtonConfig, shouldShowRoundedHoverEffect]);
|
|
219
|
+
})))), [headline, isSearchActive, type, rightIcons, iconElement, backgroundDistance, backgroundElement, searchConfig, sortConfig, sortItems, checkboxConfig, isOpen, shouldFocus, filterButtonConfig, shouldShowRoundedHoverEffect]);
|
|
203
220
|
});
|
|
204
221
|
Filter.displayName = 'Filter';
|
|
205
222
|
var _default = exports.default = Filter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","names":["_react","_interopRequireWildcard","require","_Filter","_ExpandableContent","_interopRequireDefault","_Icon","_FIlterContent","_filter","_SearchInput","_ContextMenu","_Checkbox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Filter","forwardRef","headline","searchConfig","sortConfig","shouldShowRoundedHoverEffect","filterButtonConfig","checkboxConfig","onActiveChange","rightIcons","ref","isOpen","setIsOpen","useState","isSearchActive","setIsSearchActive","backgroundDistance","setBackgroundDistance","backgroundCoordinates","setBackgroundCoordinates","top","left","contentRef","useRef","iconRef","filterRef","contextMenuRef","type","useMemo","FilterType","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","MULTIPLE","icons","useEffect","handleHide","useCallback","current","hide","handleShow","useImperativeHandle","show","handleIconClick","iconRect","getBoundingClientRect","filterRect","contentRect","relativeTop","bottom","relativeLeft","iconElement","createElement","StyledFilterIcon","onClick","$isOpen","$shouldShowRoundedHoverEffect","size","backgroundElement","StyledMotionFilterBackground","$top","$left","animate","height","transition","duration","delay","sortItems","selectedItem","onSortChange","items","map","id","text","key","toString","isSelected","StyledFilter","StyledFilterHead","isValidElement","StyledFilterHeadline","$isSearchActive","StyledFilterHeadlineElement","includes","Fragment","StyledFilterIconWrapper","rIcons","StyledFilterSearch","isActive","value","searchValue","onChange","ev","onSearchChange","target","StyledFilterContentWrapper","startDelay","displayName","_default","exports"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["import React, {\n forwardRef,\n isValidElement,\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 StyledMotionFilterBackground,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FIlterContent';\nimport {\n CheckboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu, { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu';\nimport Checkbox from '../checkbox/Checkbox';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n};\n\nconst Filter = forwardRef<FilterRef, FilterProps>(\n (\n {\n headline,\n searchConfig,\n sortConfig,\n shouldShowRoundedHoverEffect = false,\n filterButtonConfig,\n checkboxConfig,\n onActiveChange,\n rightIcons,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [backgroundDistance, setBackgroundDistance] = useState(0);\n const [backgroundCoordinates, setBackgroundCoordinates] = useState({ top: 0, left: 0 });\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const iconRef = useRef<HTMLDivElement | null>(null);\n const filterRef = useRef<HTMLDivElement | null>(null);\n\n const contextMenuRef = useRef<ContextMenuRef>(null);\n\n const type = useMemo(() => {\n if (filterButtonConfig && !searchConfig && !sortConfig && !checkboxConfig) {\n return FilterType.ONLY_FILTER;\n }\n\n if (!filterButtonConfig && !searchConfig && sortConfig && !checkboxConfig) {\n return FilterType.ONLY_SORT;\n }\n\n if (!filterButtonConfig && searchConfig && !sortConfig && !checkboxConfig) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (!filterButtonConfig && !searchConfig && !sortConfig && checkboxConfig) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, 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 contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(false);\n }\n }, [type]);\n\n const handleShow = useCallback(() => {\n setIsOpen(true);\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(true);\n }\n }, [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 useEffect(() => {\n if (headline && iconRef.current && contentRef.current && filterRef.current) {\n const iconRect = iconRef.current.getBoundingClientRect();\n const filterRect = filterRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const relativeTop = iconRect.bottom - filterRect.top;\n const relativeLeft = iconRect.left - filterRect.left;\n\n setBackgroundDistance(contentRect.top - iconRect.bottom);\n setBackgroundCoordinates({\n top: relativeTop,\n left: relativeLeft,\n });\n } else {\n setBackgroundDistance(0);\n setBackgroundCoordinates({ top: 0, left: 0 });\n }\n }, [headline]);\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n $isOpen={isOpen}\n ref={iconRef}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect],\n );\n\n const backgroundElement = useMemo(\n () => (\n <StyledMotionFilterBackground\n $top={backgroundCoordinates.top}\n $left={backgroundCoordinates.left}\n animate={{ height: isOpen ? `${backgroundDistance}px` : 0 }}\n transition={{ duration: 0.1, delay: isOpen ? 0 : 0.2 }}\n />\n ),\n [backgroundDistance, isOpen, backgroundCoordinates],\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 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 <>\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <StyledFilterIcon\n onClick={onClick}\n $isOpen={false}\n $shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n >\n <Icon icons={rIcons} size={18} />\n </StyledFilterIcon>\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n {backgroundDistance > 0 && backgroundElement}\n </>\n )}\n {type === FilterType.ONLY_SEARCH && searchConfig && (\n <StyledFilterSearch>\n <SearchInput\n onActiveChange={(isActive) => {\n setIsSearchActive(isActive);\n setIsOpen(isActive);\n }}\n isActive={isSearchActive}\n value={searchConfig.searchValue}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu ref={contextMenuRef} items={sortItems}>\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper ref={contentRef}>\n <ExpandableContent\n isOpen={isOpen}\n startDelay={backgroundDistance > 0 ? 0.1 : 0}\n >\n <FilterContent\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n backgroundDistance,\n backgroundElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n filterButtonConfig,\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","_interopRequireWildcard","require","_Filter","_ExpandableContent","_interopRequireDefault","_Icon","_FIlterContent","_filter","_SearchInput","_ContextMenu","_Checkbox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Filter","forwardRef","headline","searchConfig","sortConfig","shouldAutoFocus","shouldShowRoundedHoverEffect","filterButtonConfig","checkboxConfig","onActiveChange","rightIcons","ref","isOpen","setIsOpen","useState","isSearchActive","setIsSearchActive","shouldFocus","setShouldFocus","backgroundDistance","setBackgroundDistance","backgroundCoordinates","setBackgroundCoordinates","top","left","contentRef","useRef","iconRef","filterRef","searchRef","contextMenuRef","type","useMemo","FilterType","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","MULTIPLE","icons","useEffect","handleHide","useCallback","current","hide","_searchRef$current","focus","window","setTimeout","handleShow","useImperativeHandle","show","handleIconClick","iconRect","getBoundingClientRect","filterRect","contentRect","relativeTop","bottom","relativeLeft","iconElement","createElement","StyledFilterIcon","onClick","$isOpen","$shouldShowRoundedHoverEffect","size","backgroundElement","StyledMotionFilterBackground","$top","$left","animate","height","transition","duration","delay","sortItems","selectedItem","onSortChange","items","map","id","text","key","toString","isSelected","StyledFilter","StyledFilterHead","isValidElement","StyledFilterHeadline","$isSearchActive","StyledFilterHeadlineElement","includes","Fragment","StyledFilterIconWrapper","rIcons","StyledFilterSearch","isActive","value","searchValue","onChange","ev","onSearchChange","target","StyledFilterContentWrapper","startDelay","displayName","_default","exports"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["import React, {\n forwardRef,\n isValidElement,\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 StyledMotionFilterBackground,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FIlterContent';\nimport {\n CheckboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu, { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu';\nimport Checkbox from '../checkbox/Checkbox';\nimport { InputRef } from '../input/Input';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n shouldAutoFocus?: 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 onActiveChange,\n rightIcons,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [shouldFocus, setShouldFocus] = useState(false);\n const [backgroundDistance, setBackgroundDistance] = useState(0);\n const [backgroundCoordinates, setBackgroundCoordinates] = useState({ top: 0, left: 0 });\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 contextMenuRef = useRef<ContextMenuRef>(null);\n\n const type = useMemo(() => {\n if (filterButtonConfig && !searchConfig && !sortConfig && !checkboxConfig) {\n return FilterType.ONLY_FILTER;\n }\n\n if (!filterButtonConfig && !searchConfig && sortConfig && !checkboxConfig) {\n return FilterType.ONLY_SORT;\n }\n\n if (!filterButtonConfig && searchConfig && !sortConfig && !checkboxConfig) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (!filterButtonConfig && !searchConfig && !sortConfig && checkboxConfig) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, 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 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 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 useEffect(() => {\n if (headline && iconRef.current && contentRef.current && filterRef.current) {\n const iconRect = iconRef.current.getBoundingClientRect();\n const filterRect = filterRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const relativeTop = iconRect.bottom - filterRect.top;\n const relativeLeft = iconRect.left - filterRect.left;\n\n setBackgroundDistance(contentRect.top - iconRect.bottom);\n setBackgroundCoordinates({\n top: relativeTop,\n left: relativeLeft,\n });\n } else {\n setBackgroundDistance(0);\n setBackgroundCoordinates({ top: 0, left: 0 });\n }\n }, [headline]);\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n $isOpen={isOpen}\n ref={iconRef}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect],\n );\n\n const backgroundElement = useMemo(\n () => (\n <StyledMotionFilterBackground\n $top={backgroundCoordinates.top}\n $left={backgroundCoordinates.left}\n animate={{ height: isOpen ? `${backgroundDistance}px` : 0 }}\n transition={{ duration: 0.1, delay: isOpen ? 0 : 0.2 }}\n />\n ),\n [backgroundDistance, isOpen, backgroundCoordinates],\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 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 <>\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <StyledFilterIcon\n onClick={onClick}\n $isOpen={false}\n $shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n >\n <Icon icons={rIcons} size={18} />\n </StyledFilterIcon>\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n {backgroundDistance > 0 && backgroundElement}\n </>\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 />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu ref={contextMenuRef} items={sortItems}>\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper ref={contentRef}>\n <ExpandableContent\n isOpen={isOpen}\n startDelay={backgroundDistance > 0 ? 0.1 : 0}\n >\n <FilterContent\n shouldAutoFocus={shouldFocus}\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n backgroundDistance,\n backgroundElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n shouldFocus,\n filterButtonConfig,\n shouldShowRoundedHoverEffect,\n ],\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport default Filter;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,9 +17,11 @@ const FilterContent = ({
|
|
|
17
17
|
searchConfig,
|
|
18
18
|
sortConfig,
|
|
19
19
|
filterButtonConfig,
|
|
20
|
-
checkboxConfig
|
|
20
|
+
checkboxConfig,
|
|
21
|
+
shouldAutoFocus
|
|
21
22
|
}) => {
|
|
22
23
|
const sortTextRef = (0, _react.useRef)(null);
|
|
24
|
+
const searchRef = (0, _react.useRef)(null);
|
|
23
25
|
const [sortTextWidth, setSortTextWidth] = (0, _react.useState)(0);
|
|
24
26
|
const handleSelectSortItem = (0, _react.useCallback)(item => {
|
|
25
27
|
if (!item) {
|
|
@@ -41,7 +43,14 @@ const FilterContent = ({
|
|
|
41
43
|
setSortTextWidth(sortTextRef.current.clientWidth + 20);
|
|
42
44
|
}
|
|
43
45
|
}, []);
|
|
46
|
+
(0, _react.useEffect)(() => {
|
|
47
|
+
if (shouldAutoFocus) {
|
|
48
|
+
var _searchRef$current;
|
|
49
|
+
(_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus();
|
|
50
|
+
}
|
|
51
|
+
}, [shouldAutoFocus]);
|
|
44
52
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_FilterContent.StyledFilterContent, null, searchConfig && /*#__PURE__*/_react.default.createElement(_Input.default, {
|
|
53
|
+
ref: searchRef,
|
|
45
54
|
onChange: ev => searchConfig.onSearchChange(ev.target.value),
|
|
46
55
|
placeholder: "Suche",
|
|
47
56
|
value: searchConfig.searchValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FIlterContent.js","names":["_react","_interopRequireWildcard","require","_FilterContent","_Input","_interopRequireDefault","_Icon","_FilterButtons","_ComboBox","_Checkbox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FilterContent","searchConfig","sortConfig","filterButtonConfig","checkboxConfig","sortTextRef","useRef","sortTextWidth","setSortTextWidth","useState","handleSelectSortItem","useCallback","item","text","value","onSortChange","id","useEffect","current","clientWidth","useMemo","createElement","StyledFilterContent","onChange","ev","onSearchChange","target","placeholder","searchValue","shouldShowClearIcon","length","leftElement","icons","StyledFilterSort","StyledFilterSortText","
|
|
1
|
+
{"version":3,"file":"FIlterContent.js","names":["_react","_interopRequireWildcard","require","_FilterContent","_Input","_interopRequireDefault","_Icon","_FilterButtons","_ComboBox","_Checkbox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FilterContent","searchConfig","sortConfig","filterButtonConfig","checkboxConfig","shouldAutoFocus","sortTextRef","useRef","searchRef","sortTextWidth","setSortTextWidth","useState","handleSelectSortItem","useCallback","item","text","value","onSortChange","id","useEffect","current","clientWidth","_searchRef$current","focus","useMemo","createElement","StyledFilterContent","ref","onChange","ev","onSearchChange","target","placeholder","searchValue","shouldShowClearIcon","length","leftElement","icons","StyledFilterSort","StyledFilterSortText","StyledFilterComboboxWrapper","$textWidth","lists","list","items","map","selectedItem","onSelect","displayName","_default","exports"],"sources":["../../../../../src/components/filter/filter-content/FIlterContent.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n StyledFilterComboboxWrapper,\n StyledFilterContent,\n StyledFilterSort,\n StyledFilterSortText,\n} from './FilterContent.styles';\nimport Input, { InputRef } from '../../input/Input';\nimport Icon from '../../icon/Icon';\nimport FilterButtons from '../../filter-buttons/FilterButtons';\nimport {\n CheckboxConfig,\n FilterButtonConfig,\n SearchConfig,\n SortConfig,\n} from '../../../types/filter';\nimport ComboBox, { IComboBoxItem } from '../../combobox/ComboBox';\nimport Checkbox from '../../checkbox/Checkbox';\n\nexport type FilterContentProps = {\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n shouldAutoFocus: boolean;\n};\n\nconst FilterContent: FC<FilterContentProps> = ({\n searchConfig,\n sortConfig,\n filterButtonConfig,\n checkboxConfig,\n shouldAutoFocus,\n}) => {\n const sortTextRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<InputRef>(null);\n\n const [sortTextWidth, setSortTextWidth] = useState(0);\n\n const handleSelectSortItem = useCallback(\n (item: IComboBoxItem | undefined) => {\n if (!item) {\n return;\n }\n\n const { text, value } = item;\n\n if (sortConfig) {\n sortConfig.onSortChange({ text, id: value });\n }\n },\n [sortConfig],\n );\n\n useEffect(() => {\n if (sortTextRef.current) {\n setSortTextWidth(sortTextRef.current.clientWidth + 20);\n }\n }, []);\n\n useEffect(() => {\n if (shouldAutoFocus) {\n searchRef.current?.focus();\n }\n }, [shouldAutoFocus]);\n\n return useMemo(\n () => (\n <StyledFilterContent>\n {searchConfig && (\n <Input\n ref={searchRef}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n placeholder=\"Suche\"\n value={searchConfig.searchValue}\n shouldShowClearIcon={searchConfig.searchValue.length > 0}\n leftElement={<Icon icons={['fa fa-search']} />}\n />\n )}\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n {filterButtonConfig && <FilterButtons {...filterButtonConfig} />}\n {sortConfig && (\n <StyledFilterSort>\n <StyledFilterSortText ref={sortTextRef}>Sortierung</StyledFilterSortText>\n <StyledFilterComboboxWrapper $textWidth={sortTextWidth}>\n <ComboBox\n lists={[\n {\n list: sortConfig.items.map(({ text, id }) => ({\n text,\n value: id,\n })),\n },\n ]}\n placeholder=\"\"\n selectedItem={{\n text: sortConfig.selectedItem.text,\n value: sortConfig.selectedItem.id,\n }}\n onSelect={handleSelectSortItem}\n />\n </StyledFilterComboboxWrapper>\n </StyledFilterSort>\n )}\n {checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n </StyledFilterContent>\n ),\n [\n checkboxConfig,\n filterButtonConfig,\n handleSelectSortItem,\n searchConfig,\n sortConfig,\n sortTextWidth,\n ],\n );\n};\n\nFilterContent.displayName = 'FilterContent';\n\nexport default FilterContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,7 +55,7 @@ const SearchBoxBody = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
55
55
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_SearchBoxBody.StyledSearchBoxBody, {
|
|
56
56
|
onClick: handlePreventDefault,
|
|
57
57
|
ref: ref,
|
|
58
|
-
inert: !shouldShow
|
|
58
|
+
inert: !shouldShow ? 'true' : 'false'
|
|
59
59
|
}, filterButtons && (filterButtons === null || filterButtons === void 0 ? void 0 : filterButtons.length) > 1 && /*#__PURE__*/_react.default.createElement(_SearchBoxBody.StyledSearchBoxBodyHead, {
|
|
60
60
|
ref: headRef,
|
|
61
61
|
$hasScrolled: hasScrolled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBoxBody.js","names":["_react","_interopRequireWildcard","require","_element","_uuid","_searchBox","_FilterButtons","_interopRequireDefault","_SearchBoxBody","_chaynsApi","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBoxBody","forwardRef","filterButtons","selectedGroups","height","children","shouldShow","onGroupSelect","shouldHideFilterButtons","ref","hasScrolled","setHasScrolled","useState","currentGroupName","setCurrentGroupName","headRef","useRef","browser","useDevice","headSize","useElementSize","uuid","useUuid","headHeight","useMemo","useEffect","element","document","getElementById","length","getCurrentGroupName","handlePreventDefault","event","preventDefault","stopPropagation","handleScroll","useCallback","scrollTop","target","createElement","StyledSearchBoxBody","onClick","inert","StyledSearchBoxBodyHead","$hasScrolled","$hasGroupName","items","size","onSelect","selectedItemIds","StyledSearchBoxBodyHeadGroupName","replace","StyledSearchBoxBodyContent","$height","$headHeight","key","id","$browser","name","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';\nimport { useDevice } from 'chayns-api';\nimport { BrowserName } from '../../../types/chayns';\n\nexport type SearchBoxBodyProps = {\n children: ReactNode;\n filterButtons?: IFilterButtonItem[];\n selectedGroups?: string[];\n height: 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 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 { browser } = useDevice();\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 onClick={handlePreventDefault} ref={ref} inert={!shouldShow}>\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 key=\"content\"\n id={`searchBoxContent__${uuid}`}\n $browser={(browser as { name: BrowserName })?.name}\n tabIndex={0}\n onScroll={handleScroll}\n >\n {children}\n </StyledSearchBoxBodyContent>\n </StyledSearchBoxBody>\n ),\n [\n browser,\n children,\n currentGroupName,\n filterButtons,\n handleScroll,\n hasScrolled,\n headHeight,\n height,\n onGroupSelect,\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","_chaynsApi","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBoxBody","forwardRef","filterButtons","selectedGroups","height","children","shouldShow","onGroupSelect","shouldHideFilterButtons","ref","hasScrolled","setHasScrolled","useState","currentGroupName","setCurrentGroupName","headRef","useRef","browser","useDevice","headSize","useElementSize","uuid","useUuid","headHeight","useMemo","useEffect","element","document","getElementById","length","getCurrentGroupName","handlePreventDefault","event","preventDefault","stopPropagation","handleScroll","useCallback","scrollTop","target","createElement","StyledSearchBoxBody","onClick","inert","StyledSearchBoxBodyHead","$hasScrolled","$hasGroupName","items","size","onSelect","selectedItemIds","StyledSearchBoxBodyHeadGroupName","replace","StyledSearchBoxBodyContent","$height","$headHeight","key","id","$browser","name","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';\nimport { useDevice } from 'chayns-api';\nimport { BrowserName } from '../../../types/chayns';\n\nexport type SearchBoxBodyProps = {\n children: ReactNode;\n filterButtons?: IFilterButtonItem[];\n selectedGroups?: string[];\n height: 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 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 { browser } = useDevice();\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' : 'false'}\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 key=\"content\"\n id={`searchBoxContent__${uuid}`}\n $browser={(browser as { name: BrowserName })?.name}\n tabIndex={0}\n onScroll={handleScroll}\n >\n {children}\n </StyledSearchBoxBodyContent>\n </StyledSearchBoxBody>\n ),\n [\n browser,\n children,\n currentGroupName,\n filterButtons,\n handleScroll,\n hasScrolled,\n headHeight,\n height,\n onGroupSelect,\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":[]}
|
|
@@ -13,7 +13,7 @@ var _styledComponents = require("styled-components");
|
|
|
13
13
|
var _element = require("../../hooks/element");
|
|
14
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
|
-
const SearchInput = ({
|
|
16
|
+
const SearchInput = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
17
17
|
iconColor,
|
|
18
18
|
isActive,
|
|
19
19
|
onActiveChange,
|
|
@@ -24,7 +24,7 @@ const SearchInput = ({
|
|
|
24
24
|
size = _Input.InputSize.Medium,
|
|
25
25
|
value,
|
|
26
26
|
width: widthValue
|
|
27
|
-
}) => {
|
|
27
|
+
}, ref) => {
|
|
28
28
|
const [isSearchInputActive, setIsSearchInputActive] = (0, _react2.useState)(isActive ?? (typeof value === 'string' && value.trim() !== ''));
|
|
29
29
|
const inputRef = (0, _react2.useRef)(null);
|
|
30
30
|
const pseudoRef = (0, _react2.useRef)(null);
|
|
@@ -46,6 +46,16 @@ const SearchInput = ({
|
|
|
46
46
|
setIsSearchInputActive(isActive);
|
|
47
47
|
}
|
|
48
48
|
}, [isActive]);
|
|
49
|
+
(0, _react2.useImperativeHandle)(ref, () => ({
|
|
50
|
+
focus: () => {
|
|
51
|
+
var _inputRef$current2;
|
|
52
|
+
return (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
|
|
53
|
+
},
|
|
54
|
+
blur: () => {
|
|
55
|
+
var _inputRef$current3;
|
|
56
|
+
return (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.blur();
|
|
57
|
+
}
|
|
58
|
+
}), []);
|
|
49
59
|
const width = (0, _react2.useMemo)(() => widthValue ?? (parentWidth === null || parentWidth === void 0 ? void 0 : parentWidth.width), [parentWidth === null || parentWidth === void 0 ? void 0 : parentWidth.width, widthValue]);
|
|
50
60
|
return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement(_SearchInput.StyledSearchInput, {
|
|
51
61
|
className: "beta-chayns-search-input",
|
|
@@ -191,7 +201,7 @@ const SearchInput = ({
|
|
|
191
201
|
}))))), /*#__PURE__*/_react2.default.createElement(_SearchInput.StyledSearchInputPseudoElement, {
|
|
192
202
|
ref: pseudoRef
|
|
193
203
|
}));
|
|
194
|
-
};
|
|
204
|
+
});
|
|
195
205
|
SearchInput.displayName = 'SearchInput';
|
|
196
206
|
var _default = exports.default = SearchInput;
|
|
197
207
|
//# sourceMappingURL=SearchInput.js.map
|