@chayns-components/core 5.0.0-beta.636 → 5.0.0-beta.638
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 -0
- package/lib/cjs/components/accordion/Accordion.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +23 -12
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/cjs/components/expandable-content/ExpandableContent.js.map +1 -1
- package/lib/esm/components/accordion/Accordion.js +1 -0
- package/lib/esm/components/accordion/Accordion.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js +23 -12
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/esm/components/expandable-content/ExpandableContent.js.map +1 -1
- package/lib/types/components/accordion/accordion-head/AccordionHead.d.ts +1 -0
- package/lib/types/components/expandable-content/ExpandableContent.d.ts +27 -3
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_uuid","_AreaContextProvider","_AccordionBody","_interopRequireDefault","_AccordionGroup","_AccordionHead","_Accordion","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccordionContext","exports","React","createContext","isWrapped","Accordion","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onOpen","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","title","titleElement","openAccordionUuid","updateOpenAccordionUuid","useContext","AccordionGroupContext","isParentWrapped","isAccordionOpen","setIsAccordionOpen","useState","uuid","useUuid","isInitialRenderRef","useRef","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","useEffect","current","handleHeadClick","useCallback","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","useMemo","createElement","StyledAccordion","className","$isOpen","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","Provider","value","MotionConfig","transition","type","onClick","AnimatePresence","initial","maxHeight","onScroll","shouldHideBody","AreaContext","shouldChangeColor","displayName","_default"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { StyledAccordion } from './Accordion.styles';\n\nexport const AccordionContext = React.createContext({ isWrapped: false });\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 that is executed when the accordion will be opened.\n */\n onOpen?: 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 * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * Icon to be displayed on the right side in the search input\n */\n searchIcon?: string[];\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 * 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 * 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\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 onOpen,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n title,\n titleElement,\n}) => {\n const { isWrapped, openAccordionUuid, updateOpenAccordionUuid } =\n useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const isInGroup = 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 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 return (\n <StyledAccordion\n className=\"beta-chayns-accordion\"\n $isOpen={isOpen}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n icon={icon}\n isOpen={isOpen}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchIcon={searchIcon}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {children}\n </AreaContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Accordion.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_uuid","_AreaContextProvider","_AccordionBody","_interopRequireDefault","_AccordionGroup","_AccordionHead","_Accordion","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccordionContext","exports","React","createContext","isWrapped","Accordion","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onOpen","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","title","titleElement","openAccordionUuid","updateOpenAccordionUuid","useContext","AccordionGroupContext","isParentWrapped","isAccordionOpen","setIsAccordionOpen","useState","uuid","useUuid","isInitialRenderRef","useRef","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","useEffect","current","handleHeadClick","useCallback","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","useMemo","createElement","StyledAccordion","className","$isOpen","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","Provider","value","MotionConfig","transition","type","onClick","AnimatePresence","initial","maxHeight","onScroll","shouldHideBody","AreaContext","shouldChangeColor","displayName","_default"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { StyledAccordion } from './Accordion.styles';\n\nexport const AccordionContext = React.createContext({ isWrapped: false });\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 that is executed when the accordion will be opened.\n */\n onOpen?: 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 * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * Icon to be displayed on the right side in the search input\n */\n searchIcon?: string[];\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 * 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 * 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\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 onOpen,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n title,\n titleElement,\n}) => {\n const { isWrapped, openAccordionUuid, updateOpenAccordionUuid } =\n useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const isInGroup = 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 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 return (\n <StyledAccordion\n className=\"beta-chayns-accordion\"\n $isOpen={isOpen}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n uuid={uuid}\n icon={icon}\n isOpen={isOpen}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchIcon={searchIcon}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {children}\n </AreaContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,8 @@ const AccordionHead = ({
|
|
|
27
27
|
searchValue,
|
|
28
28
|
shouldRotateIcon,
|
|
29
29
|
title,
|
|
30
|
-
titleElement
|
|
30
|
+
titleElement,
|
|
31
|
+
uuid
|
|
31
32
|
}) => {
|
|
32
33
|
const [headHeight, setHeadHeight] = (0, _react.useState)({
|
|
33
34
|
closed: isWrapped ? 40 : 33,
|
|
@@ -67,22 +68,30 @@ const AccordionHead = ({
|
|
|
67
68
|
height: isOpen ? headHeight.open : headHeight.closed
|
|
68
69
|
},
|
|
69
70
|
className: "beta-chayns-accordion-head",
|
|
70
|
-
initial: false
|
|
71
|
+
initial: false,
|
|
72
|
+
key: `accordionHead--${uuid}`
|
|
71
73
|
}, /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionIconWrapper, {
|
|
72
74
|
animate: {
|
|
73
75
|
rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0
|
|
74
76
|
},
|
|
75
77
|
initial: false,
|
|
76
|
-
onClick: !isFixed ? onClick : undefined
|
|
78
|
+
onClick: !isFixed ? onClick : undefined,
|
|
79
|
+
key: `accordionHeadIcon--${uuid}`
|
|
77
80
|
}, iconElement), /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionContentWrapper, {
|
|
78
81
|
animate: {
|
|
79
82
|
opacity: isTitleGreyed ? 0.5 : 1
|
|
80
83
|
},
|
|
81
84
|
initial: false,
|
|
82
85
|
onClick: !isFixed ? onClick : undefined,
|
|
83
|
-
ref: titleWrapperRef
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
ref: titleWrapperRef,
|
|
87
|
+
key: `accordionHeadContentWrapper--${uuid}`
|
|
88
|
+
}, /*#__PURE__*/_react.default.createElement(_framerMotion.LayoutGroup, {
|
|
89
|
+
key: `accordionHeadLayoutGroup--${uuid}`
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionTitleWrapper, {
|
|
91
|
+
key: `accordionHeadTitleWrapperWrapper--${uuid}`
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
|
|
93
|
+
initial: false,
|
|
94
|
+
key: `accordionHeadTitleWrapper--${uuid}`
|
|
86
95
|
}, /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionTitle, {
|
|
87
96
|
animate: {
|
|
88
97
|
scale: 1
|
|
@@ -100,11 +109,13 @@ const AccordionHead = ({
|
|
|
100
109
|
duration: 0
|
|
101
110
|
}
|
|
102
111
|
},
|
|
103
|
-
key: isOpen && !isWrapped ?
|
|
112
|
+
key: isOpen && !isWrapped ? `accordionHeadTitleBig--${uuid}` : `accordionHeadTitle--${uuid}`
|
|
104
113
|
}, title))), titleElement && /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionTitleElementWrapper, {
|
|
105
|
-
layout: true
|
|
114
|
+
layout: true,
|
|
115
|
+
key: `accordionTitleElement--${uuid}`
|
|
106
116
|
}, titleElement))), (typeof onSearchChange === 'function' || rightElement) && /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledRightWrapper, null, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
|
|
107
|
-
initial: false
|
|
117
|
+
initial: false,
|
|
118
|
+
key: `accordionRightWrapper--${uuid}`
|
|
108
119
|
}, typeof onSearchChange === 'function' && isOpen ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionRightInput, {
|
|
109
120
|
animate: {
|
|
110
121
|
opacity: 1,
|
|
@@ -120,7 +131,7 @@ const AccordionHead = ({
|
|
|
120
131
|
opacity: 0,
|
|
121
132
|
width: 0
|
|
122
133
|
},
|
|
123
|
-
key:
|
|
134
|
+
key: `rightInput--${uuid}`,
|
|
124
135
|
onChange: onSearchChange,
|
|
125
136
|
placeholder: searchPlaceholder,
|
|
126
137
|
type: "text",
|
|
@@ -135,7 +146,7 @@ const AccordionHead = ({
|
|
|
135
146
|
initial: {
|
|
136
147
|
opacity: 0
|
|
137
148
|
},
|
|
138
|
-
key:
|
|
149
|
+
key: `rightInputIcon-${uuid}`
|
|
139
150
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
140
151
|
icons: searchIcon
|
|
141
152
|
}))) : /*#__PURE__*/_react.default.createElement(_AccordionHead.StyledMotionRightElementWrapper, {
|
|
@@ -148,7 +159,7 @@ const AccordionHead = ({
|
|
|
148
159
|
initial: {
|
|
149
160
|
opacity: 0
|
|
150
161
|
},
|
|
151
|
-
key:
|
|
162
|
+
key: `rightElementWrapper--${uuid}`
|
|
152
163
|
}, rightElement))));
|
|
153
164
|
};
|
|
154
165
|
AccordionHead.displayName = 'AccordionHead';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionHead.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_styledComponents","_accordion","_Icon","_interopRequireDefault","_AccordionHead","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","headHeight","setHeadHeight","useState","closed","open","theme","useTheme","titleWrapperRef","useRef","hasSearchIcon","Array","isArray","useEffect","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","fontSize","iconElement","useMemo","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","StyledMotionAccordionHead","animate","height","initial","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$isWrapped","transition","duration","key","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","Fragment","StyledMotionRightInput","autoComplete","$hasIcon","onChange","placeholder","type","value","StyledMotionRightInputIconWrapper","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport Icon from '../../icon/Icon';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionRightInput,\n StyledMotionRightInputIconWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\ntype AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchIcon?: string[];\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const theme = useTheme();\n\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const hasSearchIcon = Array.isArray(searchIcon);\n\n useEffect(() => {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n }),\n );\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, title, theme.fontSize]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon icons={[isFixed ? 'fa fa-horizontal-rule' : icon ?? 'fa fa-chevron-right']} />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n theme.accordionIcon !== 110 &&\n theme.accordionIcon !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? (theme.iconStyle as string) : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: isOpen ? headHeight.open : headHeight.closed }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n >\n <LayoutGroup>\n <StyledMotionTitleWrapper>\n <AnimatePresence initial={false}>\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? 'accordionHeadTitleBig'\n : 'accordionHeadTitle'\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper layout>\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false}>\n {typeof onSearchChange === 'function' && isOpen ? (\n <>\n <StyledMotionRightInput\n animate={{ opacity: 1, width: '165px' }}\n autoComplete=\"off\"\n exit={{ opacity: 0, width: 0 }}\n $hasIcon={hasSearchIcon}\n initial={{ opacity: 0, width: 0 }}\n key=\"rightInput\"\n onChange={onSearchChange}\n placeholder={searchPlaceholder}\n type=\"text\"\n value={searchValue}\n />\n {hasSearchIcon && (\n <StyledMotionRightInputIconWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key=\"rightInputIcon\"\n >\n <Icon icons={searchIcon} />\n </StyledMotionRightInputIconWrapper>\n )}\n </>\n ) : (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key=\"rightElementWrapper\"\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AccordionHead.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_styledComponents","_accordion","_Icon","_interopRequireDefault","_AccordionHead","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","headHeight","setHeadHeight","useState","closed","open","theme","useTheme","titleWrapperRef","useRef","hasSearchIcon","Array","isArray","useEffect","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","fontSize","iconElement","useMemo","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","StyledMotionAccordionHead","animate","height","initial","key","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$isWrapped","transition","duration","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","Fragment","StyledMotionRightInput","autoComplete","$hasIcon","onChange","placeholder","type","value","StyledMotionRightInputIconWrapper","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport Icon from '../../icon/Icon';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionRightInput,\n StyledMotionRightInputIconWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\ntype AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchIcon?: string[];\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const theme = useTheme();\n\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const hasSearchIcon = Array.isArray(searchIcon);\n\n useEffect(() => {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n }),\n );\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, title, theme.fontSize]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon icons={[isFixed ? 'fa fa-horizontal-rule' : icon ?? 'fa fa-chevron-right']} />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n theme.accordionIcon !== 110 &&\n theme.accordionIcon !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? (theme.iconStyle as string) : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: isOpen ? headHeight.open : headHeight.closed }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence initial={false} key={`accordionHeadTitleWrapper--${uuid}`}>\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen ? (\n <>\n <StyledMotionRightInput\n animate={{ opacity: 1, width: '165px' }}\n autoComplete=\"off\"\n exit={{ opacity: 0, width: 0 }}\n $hasIcon={hasSearchIcon}\n initial={{ opacity: 0, width: 0 }}\n key={`rightInput--${uuid}`}\n onChange={onSearchChange}\n placeholder={searchPlaceholder}\n type=\"text\"\n value={searchValue}\n />\n {hasSearchIcon && (\n <StyledMotionRightInputIconWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightInputIcon-${uuid}`}\n >\n <Icon icons={searchIcon} />\n </StyledMotionRightInputIconWrapper>\n )}\n </>\n ) : (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableContent.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_ExpandableContent","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExpandableContent","children","id","exit","type","initial","animate","style","duration","useMemo","createElement","AnimatePresence","StyledMotionExpandableContent","transition","key","displayName","_default","exports"],"sources":["../../../../src/components/expandable-content/ExpandableContent.tsx"],"sourcesContent":["import {\n AnimatePresence,\n type AnimationControls,\n type TargetAndTransition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, { CSSProperties, FC, ReactNode, useMemo } from 'react';\nimport { StyledMotionExpandableContent } from './ExpandableContent.styles';\n\nexport type ExpandableContentProps = {\n
|
|
1
|
+
{"version":3,"file":"ExpandableContent.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_ExpandableContent","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExpandableContent","children","id","exit","type","initial","animate","style","duration","useMemo","createElement","AnimatePresence","StyledMotionExpandableContent","transition","key","displayName","_default","exports"],"sources":["../../../../src/components/expandable-content/ExpandableContent.tsx"],"sourcesContent":["import {\n AnimatePresence,\n type AnimationControls,\n type TargetAndTransition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, { CSSProperties, FC, ReactNode, useMemo } from 'react';\nimport { StyledMotionExpandableContent } from './ExpandableContent.styles';\n\nexport type ExpandableContentProps = {\n /**\n * The styles that should be animated.\n */\n animate?: boolean | AnimationControls | TargetAndTransition | VariantLabels;\n /**\n * The children that should be animated.\n */\n children: ReactNode;\n /**\n * How long the animation last.\n */\n duration?: number;\n /**\n * the exit animation.\n */\n exit?: TargetAndTransition | VariantLabels;\n /**\n * the id of the element.\n */\n id: string;\n /**\n * the initial animation.\n */\n initial?: boolean | VariantLabels;\n /**\n * The style of the wrapper.\n */\n style?: CSSProperties;\n /**\n * The type of the animation.\n */\n type?: 'just' | 'inertia' | 'tween' | 'spring' | 'keyframes';\n};\n\nconst ExpandableContent: FC<ExpandableContentProps> = ({\n children,\n id,\n exit,\n type = 'tween',\n initial,\n animate,\n style,\n duration = 0.2,\n}) =>\n useMemo(\n () => (\n <AnimatePresence initial={false}>\n <StyledMotionExpandableContent\n animate={animate}\n initial={initial}\n exit={exit}\n transition={{ duration, type }}\n key={id}\n style={{ ...style }}\n >\n {children}\n </StyledMotionExpandableContent>\n </AnimatePresence>\n ),\n [animate, children, duration, exit, id, initial, style, type],\n );\n\nExpandableContent.displayName = 'ExpandableContent';\n\nexport default ExpandableContent;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAMA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AAA2E,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAqC3E,MAAMW,iBAA6C,GAAGA,CAAC;EACnDC,QAAQ;EACRC,EAAE;EACFC,IAAI;EACJC,IAAI,GAAG,OAAO;EACdC,OAAO;EACPC,OAAO;EACPC,KAAK;EACLC,QAAQ,GAAG;AACf,CAAC,KACG,IAAAC,cAAO,EACH,mBACIhC,MAAA,CAAAS,OAAA,CAAAwB,aAAA,CAACnC,aAAA,CAAAoC,eAAe;EAACN,OAAO,EAAE;AAAM,gBAC5B5B,MAAA,CAAAS,OAAA,CAAAwB,aAAA,CAAC/B,kBAAA,CAAAiC,6BAA6B;EAC1BN,OAAO,EAAEA,OAAQ;EACjBD,OAAO,EAAEA,OAAQ;EACjBF,IAAI,EAAEA,IAAK;EACXU,UAAU,EAAE;IAAEL,QAAQ;IAAEJ;EAAK,CAAE;EAC/BU,GAAG,EAAEZ,EAAG;EACRK,KAAK,EAAE;IAAE,GAAGA;EAAM;AAAE,GAEnBN,QAC0B,CAClB,CACpB,EACD,CAACK,OAAO,EAAEL,QAAQ,EAAEO,QAAQ,EAAEL,IAAI,EAAED,EAAE,EAAEG,OAAO,EAAEE,KAAK,EAAEH,IAAI,CAChE,CAAC;AAELJ,iBAAiB,CAACe,WAAW,GAAG,mBAAmB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA/B,OAAA,GAErCc,iBAAiB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","names":["AnimatePresence","MotionConfig","React","useCallback","useContext","useEffect","useMemo","useRef","useState","useUuid","AreaContext","AccordionBody","AccordionGroupContext","AccordionHead","StyledAccordion","AccordionContext","createContext","isWrapped","Accordion","_ref","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onOpen","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","title","titleElement","openAccordionUuid","updateOpenAccordionUuid","isParentWrapped","isAccordionOpen","setIsAccordionOpen","uuid","isInitialRenderRef","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","current","handleHeadClick","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","createElement","className","$isOpen","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","Provider","value","transition","type","onClick","initial","maxHeight","onScroll","shouldHideBody","shouldChangeColor","displayName"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { StyledAccordion } from './Accordion.styles';\n\nexport const AccordionContext = React.createContext({ isWrapped: false });\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 that is executed when the accordion will be opened.\n */\n onOpen?: 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 * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * Icon to be displayed on the right side in the search input\n */\n searchIcon?: string[];\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 * 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 * 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\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 onOpen,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n title,\n titleElement,\n}) => {\n const { isWrapped, openAccordionUuid, updateOpenAccordionUuid } =\n useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const isInGroup = 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 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 return (\n <StyledAccordion\n className=\"beta-chayns-accordion\"\n $isOpen={isOpen}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n icon={icon}\n isOpen={isOpen}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchIcon={searchIcon}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {children}\n </AreaContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Accordion.js","names":["AnimatePresence","MotionConfig","React","useCallback","useContext","useEffect","useMemo","useRef","useState","useUuid","AreaContext","AccordionBody","AccordionGroupContext","AccordionHead","StyledAccordion","AccordionContext","createContext","isWrapped","Accordion","_ref","bodyMaxHeight","children","icon","isDefaultOpen","isDisabled","isFixed","isOpened","isTitleGreyed","onBodyScroll","onClose","onOpen","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldForceBackground","shouldHideBackground","shouldRenderClosed","shouldRotateIcon","title","titleElement","openAccordionUuid","updateOpenAccordionUuid","isParentWrapped","isAccordionOpen","setIsAccordionOpen","uuid","isInitialRenderRef","isInGroup","isOpen","isOpenRef","onCloseRef","onOpenRef","current","handleHeadClick","currentIsAccordionOpen","shouldOnlyOpen","accordionContextProviderValue","createElement","className","$isOpen","$isParentWrapped","$isWrapped","$shouldForceBackground","$shouldHideBackground","Provider","value","transition","type","onClick","initial","maxHeight","onScroll","shouldHideBody","shouldChangeColor","displayName"],"sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { AnimatePresence, MotionConfig } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n ReactNode,\n UIEvent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport AccordionBody from './accordion-body/AccordionBody';\nimport { AccordionGroupContext } from './accordion-group/AccordionGroup';\nimport AccordionHead from './accordion-head/AccordionHead';\nimport { StyledAccordion } from './Accordion.styles';\n\nexport const AccordionContext = React.createContext({ isWrapped: false });\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 that is executed when the accordion will be opened.\n */\n onOpen?: 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 * Content to be displayed on the right side in the head of the Accordion\n */\n rightElement?: ReactNode;\n /**\n * Icon to be displayed on the right side in the search input\n */\n searchIcon?: string[];\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 * 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 * 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\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 onOpen,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldForceBackground = false,\n shouldHideBackground = false,\n shouldRenderClosed = false,\n shouldRotateIcon = true,\n title,\n titleElement,\n}) => {\n const { isWrapped, openAccordionUuid, updateOpenAccordionUuid } =\n useContext(AccordionGroupContext);\n const { isWrapped: isParentWrapped } = useContext(AccordionContext);\n\n const [isAccordionOpen, setIsAccordionOpen] = useState<boolean>(isDefaultOpen ?? isOpened);\n\n const uuid = useUuid();\n\n const isInitialRenderRef = useRef(true);\n\n const isInGroup = 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 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 return (\n <StyledAccordion\n className=\"beta-chayns-accordion\"\n $isOpen={isOpen}\n $isParentWrapped={isParentWrapped}\n $isWrapped={isWrapped}\n $shouldForceBackground={shouldForceBackground}\n $shouldHideBackground={shouldHideBackground}\n >\n <AccordionContext.Provider value={accordionContextProviderValue}>\n <MotionConfig transition={{ type: 'tween' }}>\n <AccordionHead\n uuid={uuid}\n icon={icon}\n isOpen={isOpen}\n isFixed={isFixed}\n isTitleGreyed={isTitleGreyed || isDisabled}\n isWrapped={isWrapped === true}\n onClick={handleHeadClick}\n onSearchChange={onSearchChange}\n rightElement={rightElement}\n searchIcon={searchIcon}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n shouldRotateIcon={shouldRotateIcon}\n title={title}\n titleElement={titleElement}\n />\n <AnimatePresence initial={false}>\n {(isOpen || shouldRenderClosed) && (\n <AccordionBody\n maxHeight={bodyMaxHeight}\n onScroll={onBodyScroll}\n shouldHideBody={shouldRenderClosed && !isOpen}\n >\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {children}\n </AreaContext.Provider>\n </AccordionBody>\n )}\n </AnimatePresence>\n </MotionConfig>\n </AccordionContext.Provider>\n </StyledAccordion>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,7 +19,8 @@ const AccordionHead = _ref => {
|
|
|
19
19
|
searchValue,
|
|
20
20
|
shouldRotateIcon,
|
|
21
21
|
title,
|
|
22
|
-
titleElement
|
|
22
|
+
titleElement,
|
|
23
|
+
uuid
|
|
23
24
|
} = _ref;
|
|
24
25
|
const [headHeight, setHeadHeight] = useState({
|
|
25
26
|
closed: isWrapped ? 40 : 33,
|
|
@@ -58,22 +59,30 @@ const AccordionHead = _ref => {
|
|
|
58
59
|
height: isOpen ? headHeight.open : headHeight.closed
|
|
59
60
|
},
|
|
60
61
|
className: "beta-chayns-accordion-head",
|
|
61
|
-
initial: false
|
|
62
|
+
initial: false,
|
|
63
|
+
key: `accordionHead--${uuid}`
|
|
62
64
|
}, /*#__PURE__*/React.createElement(StyledMotionIconWrapper, {
|
|
63
65
|
animate: {
|
|
64
66
|
rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0
|
|
65
67
|
},
|
|
66
68
|
initial: false,
|
|
67
|
-
onClick: !isFixed ? onClick : undefined
|
|
69
|
+
onClick: !isFixed ? onClick : undefined,
|
|
70
|
+
key: `accordionHeadIcon--${uuid}`
|
|
68
71
|
}, iconElement), /*#__PURE__*/React.createElement(StyledMotionContentWrapper, {
|
|
69
72
|
animate: {
|
|
70
73
|
opacity: isTitleGreyed ? 0.5 : 1
|
|
71
74
|
},
|
|
72
75
|
initial: false,
|
|
73
76
|
onClick: !isFixed ? onClick : undefined,
|
|
74
|
-
ref: titleWrapperRef
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
ref: titleWrapperRef,
|
|
78
|
+
key: `accordionHeadContentWrapper--${uuid}`
|
|
79
|
+
}, /*#__PURE__*/React.createElement(LayoutGroup, {
|
|
80
|
+
key: `accordionHeadLayoutGroup--${uuid}`
|
|
81
|
+
}, /*#__PURE__*/React.createElement(StyledMotionTitleWrapper, {
|
|
82
|
+
key: `accordionHeadTitleWrapperWrapper--${uuid}`
|
|
83
|
+
}, /*#__PURE__*/React.createElement(AnimatePresence, {
|
|
84
|
+
initial: false,
|
|
85
|
+
key: `accordionHeadTitleWrapper--${uuid}`
|
|
77
86
|
}, /*#__PURE__*/React.createElement(StyledMotionTitle, {
|
|
78
87
|
animate: {
|
|
79
88
|
scale: 1
|
|
@@ -91,11 +100,13 @@ const AccordionHead = _ref => {
|
|
|
91
100
|
duration: 0
|
|
92
101
|
}
|
|
93
102
|
},
|
|
94
|
-
key: isOpen && !isWrapped ?
|
|
103
|
+
key: isOpen && !isWrapped ? `accordionHeadTitleBig--${uuid}` : `accordionHeadTitle--${uuid}`
|
|
95
104
|
}, title))), titleElement && /*#__PURE__*/React.createElement(StyledMotionTitleElementWrapper, {
|
|
96
|
-
layout: true
|
|
105
|
+
layout: true,
|
|
106
|
+
key: `accordionTitleElement--${uuid}`
|
|
97
107
|
}, titleElement))), (typeof onSearchChange === 'function' || rightElement) && /*#__PURE__*/React.createElement(StyledRightWrapper, null, /*#__PURE__*/React.createElement(AnimatePresence, {
|
|
98
|
-
initial: false
|
|
108
|
+
initial: false,
|
|
109
|
+
key: `accordionRightWrapper--${uuid}`
|
|
99
110
|
}, typeof onSearchChange === 'function' && isOpen ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledMotionRightInput, {
|
|
100
111
|
animate: {
|
|
101
112
|
opacity: 1,
|
|
@@ -111,7 +122,7 @@ const AccordionHead = _ref => {
|
|
|
111
122
|
opacity: 0,
|
|
112
123
|
width: 0
|
|
113
124
|
},
|
|
114
|
-
key:
|
|
125
|
+
key: `rightInput--${uuid}`,
|
|
115
126
|
onChange: onSearchChange,
|
|
116
127
|
placeholder: searchPlaceholder,
|
|
117
128
|
type: "text",
|
|
@@ -126,7 +137,7 @@ const AccordionHead = _ref => {
|
|
|
126
137
|
initial: {
|
|
127
138
|
opacity: 0
|
|
128
139
|
},
|
|
129
|
-
key:
|
|
140
|
+
key: `rightInputIcon-${uuid}`
|
|
130
141
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
131
142
|
icons: searchIcon
|
|
132
143
|
}))) : /*#__PURE__*/React.createElement(StyledMotionRightElementWrapper, {
|
|
@@ -139,7 +150,7 @@ const AccordionHead = _ref => {
|
|
|
139
150
|
initial: {
|
|
140
151
|
opacity: 0
|
|
141
152
|
},
|
|
142
|
-
key:
|
|
153
|
+
key: `rightElementWrapper--${uuid}`
|
|
143
154
|
}, rightElement))));
|
|
144
155
|
};
|
|
145
156
|
AccordionHead.displayName = 'AccordionHead';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionHead.js","names":["AnimatePresence","LayoutGroup","React","useEffect","useMemo","useRef","useState","useTheme","getAccordionHeadHeight","Icon","StyledAccordionIcon","StyledMotionAccordionHead","StyledMotionContentWrapper","StyledMotionIconWrapper","StyledMotionRightElementWrapper","StyledMotionRightInput","StyledMotionRightInputIconWrapper","StyledMotionTitle","StyledMotionTitleElementWrapper","StyledMotionTitleWrapper","StyledRightWrapper","AccordionHead","_ref","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","headHeight","setHeadHeight","closed","open","theme","titleWrapperRef","hasSearchIcon","Array","isArray","width","current","clientWidth","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","className","$icon","animate","height","initial","rotate","undefined","opacity","ref","scale","exit","$isOpen","$isWrapped","transition","duration","key","layout","Fragment","autoComplete","$hasIcon","onChange","placeholder","type","value","displayName"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport Icon from '../../icon/Icon';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionRightInput,\n StyledMotionRightInputIconWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\ntype AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchIcon?: string[];\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const theme = useTheme();\n\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const hasSearchIcon = Array.isArray(searchIcon);\n\n useEffect(() => {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n }),\n );\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, title, theme.fontSize]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon icons={[isFixed ? 'fa fa-horizontal-rule' : icon ?? 'fa fa-chevron-right']} />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n theme.accordionIcon !== 110 &&\n theme.accordionIcon !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? (theme.iconStyle as string) : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: isOpen ? headHeight.open : headHeight.closed }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n >\n <LayoutGroup>\n <StyledMotionTitleWrapper>\n <AnimatePresence initial={false}>\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? 'accordionHeadTitleBig'\n : 'accordionHeadTitle'\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper layout>\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false}>\n {typeof onSearchChange === 'function' && isOpen ? (\n <>\n <StyledMotionRightInput\n animate={{ opacity: 1, width: '165px' }}\n autoComplete=\"off\"\n exit={{ opacity: 0, width: 0 }}\n $hasIcon={hasSearchIcon}\n initial={{ opacity: 0, width: 0 }}\n key=\"rightInput\"\n onChange={onSearchChange}\n placeholder={searchPlaceholder}\n type=\"text\"\n value={searchValue}\n />\n {hasSearchIcon && (\n <StyledMotionRightInputIconWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key=\"rightInputIcon\"\n >\n <Icon icons={searchIcon} />\n </StyledMotionRightInputIconWrapper>\n )}\n </>\n ) : (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key=\"rightElementWrapper\"\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AccordionHead.js","names":["AnimatePresence","LayoutGroup","React","useEffect","useMemo","useRef","useState","useTheme","getAccordionHeadHeight","Icon","StyledAccordionIcon","StyledMotionAccordionHead","StyledMotionContentWrapper","StyledMotionIconWrapper","StyledMotionRightElementWrapper","StyledMotionRightInput","StyledMotionRightInputIconWrapper","StyledMotionTitle","StyledMotionTitleElementWrapper","StyledMotionTitleWrapper","StyledRightWrapper","AccordionHead","_ref","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchIcon","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","headHeight","setHeadHeight","closed","open","theme","titleWrapperRef","hasSearchIcon","Array","isArray","width","current","clientWidth","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","className","$icon","animate","height","initial","key","rotate","undefined","opacity","ref","scale","exit","$isOpen","$isWrapped","transition","duration","layout","Fragment","autoComplete","$hasIcon","onChange","placeholder","type","value","displayName"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport Icon from '../../icon/Icon';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionRightInput,\n StyledMotionRightInputIconWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\ntype AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchIcon?: string[];\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchIcon,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const theme = useTheme();\n\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const hasSearchIcon = Array.isArray(searchIcon);\n\n useEffect(() => {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n }),\n );\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, title, theme.fontSize]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon icons={[isFixed ? 'fa fa-horizontal-rule' : icon ?? 'fa fa-chevron-right']} />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n theme.accordionIcon !== 110 &&\n theme.accordionIcon !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? (theme.iconStyle as string) : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: isOpen ? headHeight.open : headHeight.closed }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence initial={false} key={`accordionHeadTitleWrapper--${uuid}`}>\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen ? (\n <>\n <StyledMotionRightInput\n animate={{ opacity: 1, width: '165px' }}\n autoComplete=\"off\"\n exit={{ opacity: 0, width: 0 }}\n $hasIcon={hasSearchIcon}\n initial={{ opacity: 0, width: 0 }}\n key={`rightInput--${uuid}`}\n onChange={onSearchChange}\n placeholder={searchPlaceholder}\n type=\"text\"\n value={searchValue}\n />\n {hasSearchIcon && (\n <StyledMotionRightInputIconWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightInputIcon-${uuid}`}\n >\n <Icon icons={searchIcon} />\n </StyledMotionRightInputIconWrapper>\n )}\n </>\n ) : (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,WAAW,QAAQ,eAAe;AAC5D,OAAOC,KAAK,IAKRC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,sBAAsB,QAAQ,0BAA0B;AACjE,OAAOC,IAAI,MAAM,iBAAiB;AAClC,SACIC,mBAAmB,EACnBC,yBAAyB,EACzBC,0BAA0B,EAC1BC,uBAAuB,EACvBC,+BAA+B,EAC/BC,sBAAsB,EACtBC,iCAAiC,EACjCC,iBAAiB,EACjBC,+BAA+B,EAC/BC,wBAAwB,EACxBC,kBAAkB,QACf,wBAAwB;AAyB/B,MAAMC,aAAqC,GAAGC,IAAA,IAgBxC;EAAA,IAhByC;IAC3CC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,aAAa;IACbC,SAAS;IACTC,OAAO;IACPC,cAAc;IACdC,YAAY;IACZC,UAAU;IACVC,iBAAiB;IACjBC,WAAW;IACXC,gBAAgB;IAChBC,KAAK;IACLC,YAAY;IACZC;EACJ,CAAC,GAAAf,IAAA;EACG,MAAM,CAACgB,UAAU,EAAEC,aAAa,CAAC,GAAGjC,QAAQ,CAAa;IACrDkC,MAAM,EAAEb,SAAS,GAAG,EAAE,GAAG,EAAE;IAC3Bc,IAAI,EAAEd,SAAS,GAAG,EAAE,GAAG;EAC3B,CAAC,CAAC;EAEF,MAAMe,KAAK,GAAGnC,QAAQ,CAAC,CAAC;EAExB,MAAMoC,eAAe,GAAGtC,MAAM,CAAiB,IAAI,CAAC;EAEpD,MAAMuC,aAAa,GAAGC,KAAK,CAACC,OAAO,CAACf,UAAU,CAAC;EAE/C5B,SAAS,CAAC,MAAM;IACZoC,aAAa,CACT/B,sBAAsB,CAAC;MACnBmB,SAAS;MACTQ,KAAK;MACLY,KAAK,EAAE,CAACJ,eAAe,CAACK,OAAO,EAAEC,WAAW,IAAI,CAAC,IAAI;IACzD,CAAC,CACL,CAAC;IACD;IACA;EACJ,CAAC,EAAE,CAACtB,SAAS,EAAEQ,KAAK,EAAEO,KAAK,CAACQ,QAAQ,CAAC,CAAC;EAEtC,MAAMC,WAAW,GAAG/C,OAAO,CAAC,MAAM;IAC9B,IAAImB,IAAI,IAAIE,OAAO,EAAE;MACjB,oBACIvB,KAAA,CAAAkD,aAAA,CAAC3C,IAAI;QAAC4C,KAAK,EAAE,CAAC5B,OAAO,GAAG,uBAAuB,GAAGF,IAAI,IAAI,qBAAqB;MAAE,CAAE,CAAC;IAE5F;IAEA,IAAI+B,YAAY,GAAG,MAAM;IAEzB,IACIZ,KAAK,EAAEa,aAAa,IACpBb,KAAK,CAACa,aAAa,KAAK,GAAG,IAC3Bb,KAAK,CAACa,aAAa,KAAK,OAAO,EACjC;MACED,YAAY,GAAIZ,KAAK,CAACa,aAAa,CAAYC,QAAQ,CAAC,EAAE,CAAC;IAC/D;IAEA,MAAMC,iBAAiB,GAAGf,KAAK,EAAEgB,SAAS,GAAIhB,KAAK,CAACgB,SAAS,GAAc,YAAY;IAEvF,oBAAOxD,KAAA,CAAAkD,aAAA,CAAC1C,mBAAmB;MAACiD,SAAS,EAAEF,iBAAkB;MAACG,KAAK,EAAEN;IAAa,CAAE,CAAC;EACrF,CAAC,EAAE,CAAC/B,IAAI,EAAEmB,KAAK,EAAEjB,OAAO,CAAC,CAAC;EAE1B,oBACIvB,KAAA,CAAAkD,aAAA,CAACzC,yBAAyB;IACtBkD,OAAO,EAAE;MAAEC,MAAM,EAAEtC,MAAM,GAAGc,UAAU,CAACG,IAAI,GAAGH,UAAU,CAACE;IAAO,CAAE;IAClEmB,SAAS,EAAC,4BAA4B;IACtCI,OAAO,EAAE,KAAM;IACfC,GAAG,EAAE,kBAAkB3B,IAAI;EAAG,gBAE9BnC,KAAA,CAAAkD,aAAA,CAACvC,uBAAuB;IACpBgD,OAAO,EAAE;MAAEI,MAAM,EAAE,CAACzC,MAAM,IAAIC,OAAO,KAAKS,gBAAgB,GAAG,EAAE,GAAG;IAAE,CAAE;IACtE6B,OAAO,EAAE,KAAM;IACfnC,OAAO,EAAE,CAACH,OAAO,GAAGG,OAAO,GAAGsC,SAAU;IACxCF,GAAG,EAAE,sBAAsB3B,IAAI;EAAG,GAEjCc,WACoB,CAAC,eAC1BjD,KAAA,CAAAkD,aAAA,CAACxC,0BAA0B;IACvBiD,OAAO,EAAE;MAAEM,OAAO,EAAEzC,aAAa,GAAG,GAAG,GAAG;IAAE,CAAE;IAC9CqC,OAAO,EAAE,KAAM;IACfnC,OAAO,EAAE,CAACH,OAAO,GAAGG,OAAO,GAAGsC,SAAU;IACxCE,GAAG,EAAEzB,eAAgB;IACrBqB,GAAG,EAAE,gCAAgC3B,IAAI;EAAG,gBAE5CnC,KAAA,CAAAkD,aAAA,CAACnD,WAAW;IAAC+D,GAAG,EAAE,6BAA6B3B,IAAI;EAAG,gBAClDnC,KAAA,CAAAkD,aAAA,CAACjC,wBAAwB;IAAC6C,GAAG,EAAE,qCAAqC3B,IAAI;EAAG,gBACvEnC,KAAA,CAAAkD,aAAA,CAACpD,eAAe;IAAC+D,OAAO,EAAE,KAAM;IAACC,GAAG,EAAE,8BAA8B3B,IAAI;EAAG,gBACvEnC,KAAA,CAAAkD,aAAA,CAACnC,iBAAiB;IACd4C,OAAO,EAAE;MAAEQ,KAAK,EAAE;IAAE,CAAE;IACtBN,OAAO,EAAE;MAAEM,KAAK,EAAE7C,MAAM,IAAI,CAACG,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG;IAAI,CAAE;IACzD2C,IAAI,EAAE;MAAEH,OAAO,EAAE;IAAE,CAAE;IACrBI,OAAO,EAAE/C,MAAO;IAChBgD,UAAU,EAAE7C,SAAU;IACtB8C,UAAU,EAAE;MACRN,OAAO,EAAE;QACLO,QAAQ,EAAE;MACd;IACJ,CAAE;IACFV,GAAG,EACCxC,MAAM,IAAI,CAACG,SAAS,GACd,0BAA0BU,IAAI,EAAE,GAChC,uBAAuBA,IAAI;EACpC,GAEAF,KACc,CACN,CACK,CAAC,EAC1BC,YAAY,iBACTlC,KAAA,CAAAkD,aAAA,CAAClC,+BAA+B;IAC5ByD,MAAM;IACNX,GAAG,EAAE,0BAA0B3B,IAAI;EAAG,GAErCD,YAC4B,CAE5B,CACW,CAAC,EAC5B,CAAC,OAAOP,cAAc,KAAK,UAAU,IAAIC,YAAY,kBAClD5B,KAAA,CAAAkD,aAAA,CAAChC,kBAAkB,qBACflB,KAAA,CAAAkD,aAAA,CAACpD,eAAe;IAAC+D,OAAO,EAAE,KAAM;IAACC,GAAG,EAAE,0BAA0B3B,IAAI;EAAG,GAClE,OAAOR,cAAc,KAAK,UAAU,IAAIL,MAAM,gBAC3CtB,KAAA,CAAAkD,aAAA,CAAAlD,KAAA,CAAA0E,QAAA,qBACI1E,KAAA,CAAAkD,aAAA,CAACrC,sBAAsB;IACnB8C,OAAO,EAAE;MAAEM,OAAO,EAAE,CAAC;MAAEpB,KAAK,EAAE;IAAQ,CAAE;IACxC8B,YAAY,EAAC,KAAK;IAClBP,IAAI,EAAE;MAAEH,OAAO,EAAE,CAAC;MAAEpB,KAAK,EAAE;IAAE,CAAE;IAC/B+B,QAAQ,EAAElC,aAAc;IACxBmB,OAAO,EAAE;MAAEI,OAAO,EAAE,CAAC;MAAEpB,KAAK,EAAE;IAAE,CAAE;IAClCiB,GAAG,EAAE,eAAe3B,IAAI,EAAG;IAC3B0C,QAAQ,EAAElD,cAAe;IACzBmD,WAAW,EAAEhD,iBAAkB;IAC/BiD,IAAI,EAAC,MAAM;IACXC,KAAK,EAAEjD;EAAY,CACtB,CAAC,EACDW,aAAa,iBACV1C,KAAA,CAAAkD,aAAA,CAACpC,iCAAiC;IAC9B6C,OAAO,EAAE;MAAEM,OAAO,EAAE;IAAE,CAAE;IACxBG,IAAI,EAAE;MAAEH,OAAO,EAAE;IAAE,CAAE;IACrBJ,OAAO,EAAE;MAAEI,OAAO,EAAE;IAAE,CAAE;IACxBH,GAAG,EAAE,kBAAkB3B,IAAI;EAAG,gBAE9BnC,KAAA,CAAAkD,aAAA,CAAC3C,IAAI;IAAC4C,KAAK,EAAEtB;EAAW,CAAE,CACK,CAEzC,CAAC,gBAEH7B,KAAA,CAAAkD,aAAA,CAACtC,+BAA+B;IAC5B+C,OAAO,EAAE;MAAEM,OAAO,EAAE;IAAE,CAAE;IACxBG,IAAI,EAAE;MAAEH,OAAO,EAAE;IAAE,CAAE;IACrBJ,OAAO,EAAE;MAAEI,OAAO,EAAE;IAAE,CAAE;IACxBH,GAAG,EAAE,wBAAwB3B,IAAI;EAAG,GAEnCP,YAC4B,CAExB,CACD,CAED,CAAC;AAEpC,CAAC;AAEDT,aAAa,CAAC8D,WAAW,GAAG,eAAe;AAE3C,eAAe9D,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableContent.js","names":["AnimatePresence","React","useMemo","StyledMotionExpandableContent","ExpandableContent","_ref","children","id","exit","type","initial","animate","style","duration","createElement","transition","key","displayName"],"sources":["../../../../src/components/expandable-content/ExpandableContent.tsx"],"sourcesContent":["import {\n AnimatePresence,\n type AnimationControls,\n type TargetAndTransition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, { CSSProperties, FC, ReactNode, useMemo } from 'react';\nimport { StyledMotionExpandableContent } from './ExpandableContent.styles';\n\nexport type ExpandableContentProps = {\n
|
|
1
|
+
{"version":3,"file":"ExpandableContent.js","names":["AnimatePresence","React","useMemo","StyledMotionExpandableContent","ExpandableContent","_ref","children","id","exit","type","initial","animate","style","duration","createElement","transition","key","displayName"],"sources":["../../../../src/components/expandable-content/ExpandableContent.tsx"],"sourcesContent":["import {\n AnimatePresence,\n type AnimationControls,\n type TargetAndTransition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, { CSSProperties, FC, ReactNode, useMemo } from 'react';\nimport { StyledMotionExpandableContent } from './ExpandableContent.styles';\n\nexport type ExpandableContentProps = {\n /**\n * The styles that should be animated.\n */\n animate?: boolean | AnimationControls | TargetAndTransition | VariantLabels;\n /**\n * The children that should be animated.\n */\n children: ReactNode;\n /**\n * How long the animation last.\n */\n duration?: number;\n /**\n * the exit animation.\n */\n exit?: TargetAndTransition | VariantLabels;\n /**\n * the id of the element.\n */\n id: string;\n /**\n * the initial animation.\n */\n initial?: boolean | VariantLabels;\n /**\n * The style of the wrapper.\n */\n style?: CSSProperties;\n /**\n * The type of the animation.\n */\n type?: 'just' | 'inertia' | 'tween' | 'spring' | 'keyframes';\n};\n\nconst ExpandableContent: FC<ExpandableContentProps> = ({\n children,\n id,\n exit,\n type = 'tween',\n initial,\n animate,\n style,\n duration = 0.2,\n}) =>\n useMemo(\n () => (\n <AnimatePresence initial={false}>\n <StyledMotionExpandableContent\n animate={animate}\n initial={initial}\n exit={exit}\n transition={{ duration, type }}\n key={id}\n style={{ ...style }}\n >\n {children}\n </StyledMotionExpandableContent>\n </AnimatePresence>\n ),\n [animate, children, duration, exit, id, initial, style, type],\n );\n\nExpandableContent.displayName = 'ExpandableContent';\n\nexport default ExpandableContent;\n"],"mappings":"AAAA,SACIA,eAAe,QAIZ,eAAe;AACtB,OAAOC,KAAK,IAAkCC,OAAO,QAAQ,OAAO;AACpE,SAASC,6BAA6B,QAAQ,4BAA4B;AAqC1E,MAAMC,iBAA6C,GAAGC,IAAA;EAAA,IAAC;IACnDC,QAAQ;IACRC,EAAE;IACFC,IAAI;IACJC,IAAI,GAAG,OAAO;IACdC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC,QAAQ,GAAG;EACf,CAAC,GAAAR,IAAA;EAAA,OACGH,OAAO,CACH,mBACID,KAAA,CAAAa,aAAA,CAACd,eAAe;IAACU,OAAO,EAAE;EAAM,gBAC5BT,KAAA,CAAAa,aAAA,CAACX,6BAA6B;IAC1BQ,OAAO,EAAEA,OAAQ;IACjBD,OAAO,EAAEA,OAAQ;IACjBF,IAAI,EAAEA,IAAK;IACXO,UAAU,EAAE;MAAEF,QAAQ;MAAEJ;IAAK,CAAE;IAC/BO,GAAG,EAAET,EAAG;IACRK,KAAK,EAAE;MAAE,GAAGA;IAAM;EAAE,GAEnBN,QAC0B,CAClB,CACpB,EACD,CAACK,OAAO,EAAEL,QAAQ,EAAEO,QAAQ,EAAEL,IAAI,EAAED,EAAE,EAAEG,OAAO,EAAEE,KAAK,EAAEH,IAAI,CAChE,CAAC;AAAA;AAELL,iBAAiB,CAACa,WAAW,GAAG,mBAAmB;AAEnD,eAAeb,iBAAiB","ignoreList":[]}
|
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
import { type AnimationControls, type TargetAndTransition, type VariantLabels } from 'framer-motion';
|
|
2
2
|
import { CSSProperties, FC, ReactNode } from 'react';
|
|
3
3
|
export type ExpandableContentProps = {
|
|
4
|
+
/**
|
|
5
|
+
* The styles that should be animated.
|
|
6
|
+
*/
|
|
7
|
+
animate?: boolean | AnimationControls | TargetAndTransition | VariantLabels;
|
|
8
|
+
/**
|
|
9
|
+
* The children that should be animated.
|
|
10
|
+
*/
|
|
4
11
|
children: ReactNode;
|
|
5
|
-
|
|
12
|
+
/**
|
|
13
|
+
* How long the animation last.
|
|
14
|
+
*/
|
|
6
15
|
duration?: number;
|
|
7
|
-
|
|
16
|
+
/**
|
|
17
|
+
* the exit animation.
|
|
18
|
+
*/
|
|
8
19
|
exit?: TargetAndTransition | VariantLabels;
|
|
9
|
-
|
|
20
|
+
/**
|
|
21
|
+
* the id of the element.
|
|
22
|
+
*/
|
|
10
23
|
id: string;
|
|
24
|
+
/**
|
|
25
|
+
* the initial animation.
|
|
26
|
+
*/
|
|
27
|
+
initial?: boolean | VariantLabels;
|
|
28
|
+
/**
|
|
29
|
+
* The style of the wrapper.
|
|
30
|
+
*/
|
|
31
|
+
style?: CSSProperties;
|
|
32
|
+
/**
|
|
33
|
+
* The type of the animation.
|
|
34
|
+
*/
|
|
11
35
|
type?: 'just' | 'inertia' | 'tween' | 'spring' | 'keyframes';
|
|
12
36
|
};
|
|
13
37
|
declare const ExpandableContent: FC<ExpandableContentProps>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/core",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.638",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "68842819715664187ebe986780ef6717ab7d52bb"
|
|
89
89
|
}
|