@chayns-components/core 5.0.0-beta.860 → 5.0.0-beta.866
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-head/AccordionHead.js +1 -0
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +6 -0
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js +128 -154
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.styles.js +29 -8
- package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js +1 -0
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +27 -18
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +140 -154
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js +41 -11
- package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +4 -3
- package/lib/types/components/slider-button/SliderButton.d.ts +0 -4
- package/lib/types/components/slider-button/SliderButton.styles.d.ts +6 -2
- package/package.json +2 -2
|
@@ -119,6 +119,7 @@ const AccordionHead = ({
|
|
|
119
119
|
initial: false,
|
|
120
120
|
onClick: !isFixed && tmp ? onClick : undefined,
|
|
121
121
|
ref: titleWrapperRef,
|
|
122
|
+
$isWrapped: isWrapped,
|
|
122
123
|
key: `accordionHeadContentWrapper--${uuid}`
|
|
123
124
|
}, typeof onTitleInputChange === 'function' ?
|
|
124
125
|
/*#__PURE__*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionHead.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_styledComponents","_useElementSize","_accordion","_AreaContextProvider","_Icon","_interopRequireDefault","_Input","_SearchInput","_AccordionHead","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","useState","closed","open","theme","useTheme","titleElementWrapperRef","useRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","useEffect","handleOnSearchChance","event","target","value","titleElementChildrenSize","useElementSize","shouldUseChildElement","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","hasSearch","fontSize","iconElement","useMemo","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","accordionHeadHeight","height","tmp","setTmp","StyledMotionAccordionHead","animate","initial","key","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","AreaContext","Provider","shouldChangeColor","onFocus","onBlur","onChange","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$isWrapped","$color","$hasSearch","transition","duration","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","StyledMotionSearchWrapper","placeholder","size","InputSize","Small","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type 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 searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\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 searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\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 titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\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, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\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 let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n const [tmp, setTmp] = useState(true);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\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 && tmp ? onClick : undefined}\n ref={titleWrapperRef}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n <Input\n {...titleInputProps}\n value={title}\n onFocus={(event) => {\n setTmp(false);\n\n if (titleInputProps?.onFocus) {\n titleInputProps.onFocus(event);\n }\n }}\n onBlur={(event) => {\n setTmp(true);\n\n if (titleInputProps?.onBlur) {\n titleInputProps.onBlur(event);\n }\n }}\n onChange={onTitleInputChange}\n />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\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 $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\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 ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\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
|
+
{"version":3,"file":"AccordionHead.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_styledComponents","_useElementSize","_accordion","_AreaContextProvider","_Icon","_interopRequireDefault","_Input","_SearchInput","_AccordionHead","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","useState","closed","open","theme","useTheme","titleElementWrapperRef","useRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","useEffect","handleOnSearchChance","event","target","value","titleElementChildrenSize","useElementSize","shouldUseChildElement","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","hasSearch","fontSize","iconElement","useMemo","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","accordionHeadHeight","height","tmp","setTmp","StyledMotionAccordionHead","animate","initial","key","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","$isWrapped","AreaContext","Provider","shouldChangeColor","onFocus","onBlur","onChange","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$color","$hasSearch","transition","duration","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","StyledMotionSearchWrapper","placeholder","size","InputSize","Small","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'framer-motion';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type 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 searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\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 searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\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 titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) - 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\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, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\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 let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n const [tmp, setTmp] = useState(true);\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\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 && tmp ? onClick : undefined}\n ref={titleWrapperRef}\n $isWrapped={isWrapped}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n <Input\n {...titleInputProps}\n value={title}\n onFocus={(event) => {\n setTmp(false);\n\n if (titleInputProps?.onFocus) {\n titleInputProps.onFocus(event);\n }\n }}\n onBlur={(event) => {\n setTmp(true);\n\n if (titleInputProps?.onBlur) {\n titleInputProps.onBlur(event);\n }\n }}\n onChange={onTitleInputChange}\n />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\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 $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\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 ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\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":[]}
|
|
@@ -53,6 +53,12 @@ const StyledMotionContentWrapper = exports.StyledMotionContentWrapper = (0, _sty
|
|
|
53
53
|
height: 100%;
|
|
54
54
|
overflow: hidden;
|
|
55
55
|
margin-right: 10px;
|
|
56
|
+
|
|
57
|
+
${({
|
|
58
|
+
$isWrapped
|
|
59
|
+
}) => $isWrapped && (0, _styledComponents.css)`
|
|
60
|
+
align-items: center;
|
|
61
|
+
`}
|
|
56
62
|
`;
|
|
57
63
|
const StyledMotionTitleWrapper = exports.StyledMotionTitleWrapper = (0, _styledComponents.default)(_framerMotion.motion.div)`
|
|
58
64
|
display: grid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionHead.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledMotionAccordionHead","exports","styled","motion","div","theme","text","StyledMotionIconWrapper","onClick","StyledAccordionIcon","headline","$icon","StyledMotionContentWrapper","StyledMotionTitleWrapper","StyledMotionTitle","$isOpen","
|
|
1
|
+
{"version":3,"file":"AccordionHead.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledMotionAccordionHead","exports","styled","motion","div","theme","text","StyledMotionIconWrapper","onClick","StyledAccordionIcon","headline","$icon","StyledMotionContentWrapper","$isWrapped","css","StyledMotionTitleWrapper","StyledMotionTitle","$isOpen","undefined","$hasSearch","$color","StyledMotionTitleElementWrapper","StyledRightWrapper","StyledMotionSearchWrapper","StyledMotionRightElementWrapper","StyledMotionRightInput","input","$hasIcon","StyledMotionRightInputIconWrapper"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport type { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport type {\n FramerMotionBugFix,\n WithTheme,\n} from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionAccordionHeadProps = WithTheme<unknown>;\n\nexport const StyledMotionAccordionHead = styled(motion.div)<StyledMotionAccordionHeadProps>`\n align-items: center;\n color: ${({ theme }: StyledMotionAccordionHeadProps) => theme.text};\n display: flex;\n overflow: hidden;\n padding: 4px 0;\n`;\n\nexport const StyledMotionIconWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n cursor: ${({ onClick }) => (typeof onClick === 'function' ? 'pointer' : 'default')};\n display: flex;\n flex: 0 0 auto;\n height: 25px;\n justify-content: center;\n width: 25px;\n`;\n\ntype StyledAccordionIconProps = WithTheme<{ $icon: string }>;\n\nexport const StyledAccordionIcon = styled.i<StyledAccordionIconProps>`\n align-items: center;\n justify-content: center;\n display: flex;\n color: ${({ theme }: StyledAccordionIconProps) => theme.headline};\n\n &:before {\n content: ${({ $icon }) => `\"\\\\${$icon}\"`};\n font-family: 'Font Awesome 6 Pro', Fontawesome !important;\n }\n`;\n\ntype StyledMotionContentWrapperProps = WithTheme<{ $isWrapped: boolean }>;\n\nexport const StyledMotionContentWrapper = styled(motion.div)<StyledMotionContentWrapperProps>`\n align-self: flex-start;\n cursor: ${({ onClick }) => (typeof onClick === 'function' ? 'pointer' : 'default')};\n display: flex;\n flex: 1 1 auto;\n height: 100%;\n overflow: hidden;\n margin-right: 10px;\n\n ${({ $isWrapped }) =>\n $isWrapped &&\n css`\n align-items: center;\n `}\n`;\n\nexport const StyledMotionTitleWrapper = styled(motion.div)<FramerMotionBugFix>`\n display: grid;\n flex: 0 1 auto;\n grid-template-areas: 'header';\n`;\n\ntype StyledMotionTitleProps = WithTheme<{\n $isOpen: boolean;\n $isWrapped: boolean;\n $color?: CSSProperties['color'];\n $hasSearch: boolean;\n}>;\n\nexport const StyledMotionTitle = styled(motion.div)<StyledMotionTitleProps>`\n font-size: ${({ $isOpen, $isWrapped }) => ($isOpen && !$isWrapped ? '1.3rem' : undefined)};\n font-weight: ${({ $isOpen, $isWrapped }) => ($isOpen && $isWrapped ? 700 : 'normal')};\n grid-area: header;\n height: ${({ $isWrapped, $hasSearch }) => ($isWrapped || $hasSearch ? '100%' : undefined)};\n overflow: hidden;\n text-overflow: ellipsis;\n transform-origin: top left;\n user-select: none;\n color: ${({ $color, theme }: StyledMotionTitleProps) => $color ?? theme.text};\n white-space: ${({ $isOpen, $isWrapped, $hasSearch }) =>\n $isOpen && !$isWrapped && !$hasSearch ? 'normal' : 'nowrap'};\n\n will-change: unset !important;\n\n ${({ $isWrapped }) =>\n $isWrapped &&\n css`\n align-content: center;\n `}\n`;\n\nexport const StyledMotionTitleElementWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n margin-left: 8px;\n`;\n\nexport const StyledRightWrapper = styled.div`\n display: flex;\n flex: 0 0 auto;\n gap: 8px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n`;\n\nexport const StyledMotionSearchWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n`;\n\nexport const StyledMotionRightElementWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n\n will-change: unset !important;\n`;\n\ntype StyledMotionRightInputProps = WithTheme<{\n $hasIcon: boolean;\n}>;\n\nexport const StyledMotionRightInput = styled(motion.input)<StyledMotionRightInputProps>`\n background-color: transparent;\n border: 1px solid transparent;\n border-bottom-color: rgba(\n ${({ theme }: StyledMotionRightInputProps) => theme['headline-rgb']},\n 0.45\n );\n color: ${({ theme }: StyledMotionRightInputProps) => theme.text};\n grid-area: header;\n padding: ${({ $hasIcon }) => ($hasIcon ? '5px 23px 5px 1px' : '5px 1px')};\n`;\n\nexport const StyledMotionRightInputIconWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n position: absolute;\n right: 4px;\n top: 0;\n`;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,43 +7,46 @@ exports.default = void 0;
|
|
|
7
7
|
var _chaynsApi = require("chayns-api");
|
|
8
8
|
var _framerMotion = require("framer-motion");
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _styledComponents = require("styled-components");
|
|
11
10
|
var _useElementSize = require("../../hooks/useElementSize");
|
|
12
11
|
var _calculate = require("../../utils/calculate");
|
|
13
12
|
var _sliderButton = require("../../utils/sliderButton");
|
|
13
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
14
|
+
var _Popup = _interopRequireDefault(require("../popup/Popup"));
|
|
14
15
|
var _SliderButton = require("./SliderButton.styles");
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
19
|
const SliderButton = ({
|
|
18
20
|
selectedButtonId,
|
|
19
21
|
isDisabled,
|
|
20
22
|
items,
|
|
21
|
-
onChange
|
|
22
|
-
shouldUseFullWidth = false
|
|
23
|
+
onChange
|
|
23
24
|
}) => {
|
|
24
|
-
const [selectedButton, setSelectedButton] = (0, _react.useState)(undefined);
|
|
25
25
|
const [dragRange, setDragRange] = (0, _react.useState)({
|
|
26
26
|
left: 0,
|
|
27
27
|
right: 0
|
|
28
28
|
});
|
|
29
|
+
const [shownItemsCount, setShownItemsCount] = (0, _react.useState)(items.length);
|
|
30
|
+
const [sliderSize, setSliderSize] = (0, _react.useState)({
|
|
31
|
+
width: 0
|
|
32
|
+
});
|
|
29
33
|
const sliderButtonRef = (0, _react.useRef)(null);
|
|
30
34
|
const sliderButtonWrapperRef = (0, _react.useRef)(null);
|
|
31
|
-
const
|
|
32
|
-
const preventHandleScroll = (0, _react.useRef)(false);
|
|
35
|
+
const popupRef = (0, _react.useRef)(null);
|
|
33
36
|
const [scope, animate] = (0, _framerMotion.useAnimate)();
|
|
34
37
|
const initialItemWidth = (0, _react.useMemo)(() => (0, _calculate.calculateBiggestWidth)(items), [items]);
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
const elementSize = (0, _useElementSize.useElementSize)(sliderButtonRef);
|
|
39
|
+
(0, _react.useEffect)(() => {
|
|
40
|
+
if (elementSize) setSliderSize(elementSize);
|
|
41
|
+
}, [elementSize]);
|
|
42
|
+
const isSliderBigger = (0, _react.useMemo)(() => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1, [initialItemWidth, items.length, sliderSize]);
|
|
38
43
|
const itemWidth = (0, _react.useMemo)(() => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return initialItemWidth;
|
|
46
|
-
}, [initialItemWidth, isSliderBigger, items.length, shouldUseFullWidth, sliderSize === null || sliderSize === void 0 ? void 0 : sliderSize.width]);
|
|
44
|
+
const sliderWidth = (sliderSize === null || sliderSize === void 0 ? void 0 : sliderSize.width) || 0;
|
|
45
|
+
const maxShownItemsCount = Math.floor(sliderWidth / initialItemWidth);
|
|
46
|
+
const itemCount = items.length || 1;
|
|
47
|
+
setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);
|
|
48
|
+
return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);
|
|
49
|
+
}, [initialItemWidth, isSliderBigger, items.length, sliderSize === null || sliderSize === void 0 ? void 0 : sliderSize.width]);
|
|
47
50
|
(0, _react.useEffect)(() => {
|
|
48
51
|
if (sliderSize) {
|
|
49
52
|
const sliderWidth = itemWidth * (items.length - 1);
|
|
@@ -63,60 +66,107 @@ const SliderButton = ({
|
|
|
63
66
|
});
|
|
64
67
|
}, [animate, scope]);
|
|
65
68
|
const setItemPosition = (0, _react.useCallback)(index => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const count = dragRange.right / itemWidth;
|
|
71
|
-
if (items.length - count >= index) {
|
|
72
|
-
void animation(0);
|
|
73
|
-
} else {
|
|
74
|
-
void animation(itemWidth * (count - (items.length - index)));
|
|
75
|
-
}
|
|
76
|
-
if (sliderButtonWrapperRef.current) {
|
|
77
|
-
sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;
|
|
78
|
-
}
|
|
79
|
-
}, [animation, dragRange.right, isSliderBigger, itemWidth, items.length]);
|
|
69
|
+
void animation(itemWidth * index);
|
|
70
|
+
}, [animation, itemWidth]);
|
|
80
71
|
(0, _react.useEffect)(() => {
|
|
81
|
-
if (selectedButtonId) {
|
|
82
|
-
|
|
83
|
-
const index = items.findIndex(({
|
|
72
|
+
if (typeof selectedButtonId === 'string') {
|
|
73
|
+
let index = items.findIndex(({
|
|
84
74
|
id
|
|
85
75
|
}) => id === selectedButtonId);
|
|
76
|
+
if (items.length > shownItemsCount && index > shownItemsCount - 1) {
|
|
77
|
+
index = shownItemsCount - 1;
|
|
78
|
+
}
|
|
86
79
|
if (index >= 0) {
|
|
87
80
|
setItemPosition(index);
|
|
88
81
|
}
|
|
89
|
-
} else {
|
|
90
|
-
var _items$;
|
|
91
|
-
setSelectedButton((_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.id);
|
|
92
82
|
}
|
|
93
|
-
}, [animation, dragRange.right, isSliderBigger, itemWidth, items, selectedButtonId, setItemPosition]);
|
|
83
|
+
}, [animation, dragRange.right, isSliderBigger, itemWidth, items, selectedButtonId, setItemPosition, shownItemsCount]);
|
|
94
84
|
const handleClick = (0, _react.useCallback)((id, index) => {
|
|
95
85
|
if (isDisabled) {
|
|
96
86
|
return;
|
|
97
87
|
}
|
|
98
|
-
|
|
99
|
-
if (typeof onChange === 'function') {
|
|
88
|
+
if (typeof onChange === 'function' && id !== 'more') {
|
|
100
89
|
onChange(id);
|
|
101
90
|
}
|
|
91
|
+
if (popupRef.current) {
|
|
92
|
+
if (id === 'more') {
|
|
93
|
+
popupRef.current.show();
|
|
94
|
+
} else {
|
|
95
|
+
popupRef.current.hide();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
102
98
|
setItemPosition(index);
|
|
103
99
|
}, [isDisabled, onChange, setItemPosition]);
|
|
104
|
-
const buttons = (0, _react.useMemo)(() =>
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
100
|
+
const buttons = (0, _react.useMemo)(() => {
|
|
101
|
+
if (items.length > shownItemsCount) {
|
|
102
|
+
const newItems = items.slice(0, shownItemsCount - 1);
|
|
103
|
+
const otherItems = items.slice(shownItemsCount - 1);
|
|
104
|
+
const elements = newItems.map(({
|
|
105
|
+
id,
|
|
106
|
+
text
|
|
107
|
+
}, index) => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
108
|
+
$width: itemWidth,
|
|
109
|
+
key: `slider-button-${id}`,
|
|
110
|
+
onClick: () => handleClick(id, index)
|
|
111
|
+
}, text));
|
|
112
|
+
const popupContent = otherItems.map(({
|
|
113
|
+
id,
|
|
114
|
+
text
|
|
115
|
+
}) => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonPopupContentItem, {
|
|
116
|
+
key: `slider-button-${id}`,
|
|
117
|
+
onClick: () => handleClick(id, newItems.length)
|
|
118
|
+
}, text));
|
|
119
|
+
const id = 'more';
|
|
120
|
+
elements.push(/*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
121
|
+
$width: itemWidth,
|
|
122
|
+
key: `slider-button-${id}`
|
|
123
|
+
}, /*#__PURE__*/_react.default.createElement(_Popup.default, {
|
|
124
|
+
ref: popupRef,
|
|
125
|
+
content: /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonPopupContent, null, popupContent)
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
127
|
+
icons: ['fa fa-ellipsis'],
|
|
128
|
+
color: "white"
|
|
129
|
+
}))));
|
|
130
|
+
return elements;
|
|
131
|
+
}
|
|
132
|
+
return items.map(({
|
|
133
|
+
id,
|
|
134
|
+
text
|
|
135
|
+
}) => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
136
|
+
$width: itemWidth,
|
|
137
|
+
key: `slider-button-${id}`
|
|
138
|
+
}, text));
|
|
139
|
+
}, [handleClick, itemWidth, items, shownItemsCount]);
|
|
140
|
+
const pseudoButtons = (0, _react.useMemo)(() => {
|
|
141
|
+
if (items.length > shownItemsCount) {
|
|
142
|
+
const newItems = items.slice(0, shownItemsCount - 1);
|
|
143
|
+
const elements = newItems.map(({
|
|
144
|
+
id,
|
|
145
|
+
text
|
|
146
|
+
}, index) => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
147
|
+
$width: itemWidth,
|
|
148
|
+
key: `pseudo-slider-button-${id}`,
|
|
149
|
+
onClick: () => handleClick(id, index)
|
|
150
|
+
}, text));
|
|
151
|
+
const id = 'more';
|
|
152
|
+
elements.push(/*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
153
|
+
$width: itemWidth,
|
|
154
|
+
key: `pseudo-slider-button-${id}`,
|
|
155
|
+
onClick: () => handleClick(id, newItems.length)
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
157
|
+
icons: ['fa fa-ellipsis']
|
|
158
|
+
})));
|
|
159
|
+
return elements;
|
|
160
|
+
}
|
|
161
|
+
return items.map(({
|
|
162
|
+
id,
|
|
163
|
+
text
|
|
164
|
+
}, index) => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonItem, {
|
|
165
|
+
$width: itemWidth,
|
|
166
|
+
key: `pseudo-slider-button-${id}`,
|
|
167
|
+
onClick: () => handleClick(id, index)
|
|
168
|
+
}, text));
|
|
169
|
+
}, [handleClick, itemWidth, items, shownItemsCount]);
|
|
120
170
|
|
|
121
171
|
/**
|
|
122
172
|
* Creates an array with the snap points relative to the width of the items
|
|
@@ -165,100 +215,32 @@ const SliderButton = ({
|
|
|
165
215
|
scrollLeft: 0
|
|
166
216
|
});
|
|
167
217
|
if (nearestPoint >= 0 && nearestIndex >= 0) {
|
|
168
|
-
var _items$nearestIndex;
|
|
169
218
|
void animation(nearestPoint);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
219
|
+
let id;
|
|
220
|
+
if (nearestIndex === shownItemsCount - 1) {
|
|
221
|
+
id = 'more';
|
|
222
|
+
} else {
|
|
223
|
+
var _items$nearestIndex;
|
|
224
|
+
id = (_items$nearestIndex = items[nearestIndex]) === null || _items$nearestIndex === void 0 ? void 0 : _items$nearestIndex.id;
|
|
174
225
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
const position = (0, _sliderButton.getThumbPosition)({
|
|
182
|
-
scope,
|
|
183
|
-
itemWidth
|
|
184
|
-
});
|
|
185
|
-
if (!position) {
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
const {
|
|
189
|
-
right,
|
|
190
|
-
left,
|
|
191
|
-
middle
|
|
192
|
-
} = position;
|
|
193
|
-
let scrollLeft = 0;
|
|
194
|
-
const scrollSpeed = 3;
|
|
195
|
-
if (sliderButtonWrapperRef.current) {
|
|
196
|
-
if (right >= dragRange.right) {
|
|
197
|
-
sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;
|
|
226
|
+
if (popupRef.current) {
|
|
227
|
+
if (id === 'more') {
|
|
228
|
+
popupRef.current.show();
|
|
229
|
+
} else {
|
|
230
|
+
popupRef.current.hide();
|
|
231
|
+
}
|
|
198
232
|
}
|
|
199
|
-
if (
|
|
200
|
-
|
|
233
|
+
if (typeof onChange === 'function' && id && id !== 'more') {
|
|
234
|
+
onChange(id);
|
|
201
235
|
}
|
|
202
|
-
scrollLeft = sliderButtonWrapperRef.current.scrollLeft;
|
|
203
236
|
}
|
|
204
|
-
|
|
205
|
-
nearestIndex
|
|
206
|
-
} = (0, _sliderButton.getNearestPoint)({
|
|
207
|
-
snapPoints,
|
|
208
|
-
position: middle,
|
|
209
|
-
scrollLeft
|
|
210
|
-
});
|
|
211
|
-
if (nearestIndex >= 0) {
|
|
212
|
-
var _items$nearestIndex2;
|
|
213
|
-
setSelectedButton((_items$nearestIndex2 = items[nearestIndex]) === null || _items$nearestIndex2 === void 0 ? void 0 : _items$nearestIndex2.id);
|
|
214
|
-
}
|
|
215
|
-
}, [dragRange, itemWidth, items, scope, snapPoints]);
|
|
216
|
-
|
|
217
|
-
// With this, the handleScroll works before the thumb is moved the first time.
|
|
218
|
-
(0, _react.useEffect)(() => {
|
|
219
|
-
void animation(1);
|
|
220
|
-
void animation(0);
|
|
221
|
-
}, [animation]);
|
|
222
|
-
const handleScroll = (0, _react.useCallback)(event => {
|
|
223
|
-
if (preventHandleScroll.current) {
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
void (0, _chaynsApi.setRefreshScrollEnabled)(false);
|
|
227
|
-
const position = (0, _sliderButton.getThumbPosition)({
|
|
228
|
-
scope,
|
|
229
|
-
itemWidth
|
|
230
|
-
});
|
|
231
|
-
if (!position) {
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
const {
|
|
235
|
-
middle
|
|
236
|
-
} = position;
|
|
237
|
-
const {
|
|
238
|
-
scrollLeft
|
|
239
|
-
} = event.target;
|
|
240
|
-
const {
|
|
241
|
-
nearestIndex
|
|
242
|
-
} = (0, _sliderButton.getNearestPoint)({
|
|
243
|
-
snapPoints,
|
|
244
|
-
position: middle,
|
|
245
|
-
scrollLeft
|
|
246
|
-
});
|
|
247
|
-
if (nearestIndex >= 0) {
|
|
248
|
-
var _items$nearestIndex3;
|
|
249
|
-
setSelectedButton((_items$nearestIndex3 = items[nearestIndex]) === null || _items$nearestIndex3 === void 0 ? void 0 : _items$nearestIndex3.id);
|
|
250
|
-
}
|
|
251
|
-
if (timeout.current) {
|
|
252
|
-
clearTimeout(timeout.current);
|
|
253
|
-
}
|
|
254
|
-
timeout.current = window.setTimeout(() => {
|
|
255
|
-
handleDragEnd();
|
|
256
|
-
}, 200);
|
|
257
|
-
}, [handleDragEnd, itemWidth, items, scope, snapPoints]);
|
|
237
|
+
}, [animation, itemWidth, items, onChange, scope, shownItemsCount, snapPoints]);
|
|
258
238
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButton, {
|
|
259
239
|
$isDisabled: isDisabled,
|
|
260
240
|
ref: sliderButtonRef
|
|
261
|
-
}, /*#__PURE__*/_react.default.createElement(_SliderButton.
|
|
241
|
+
}, /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, {
|
|
242
|
+
$isInvisible: true
|
|
243
|
+
}, pseudoButtons), /*#__PURE__*/_react.default.createElement(_SliderButton.StyledMotionSliderButtonThumb, {
|
|
262
244
|
ref: scope,
|
|
263
245
|
drag: isDisabled ? false : 'x',
|
|
264
246
|
dragElastic: 0,
|
|
@@ -269,20 +251,12 @@ const SliderButton = ({
|
|
|
269
251
|
...dragRange
|
|
270
252
|
},
|
|
271
253
|
$width: itemWidth,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
whileTap: isDisabled ? {} : {
|
|
275
|
-
backgroundColor: theme['407']
|
|
276
|
-
},
|
|
277
|
-
whileHover: isDisabled ? {} : {
|
|
278
|
-
backgroundColor: theme['409']
|
|
279
|
-
}
|
|
280
|
-
}, thumbText), /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonWrapper, {
|
|
254
|
+
onDragEnd: handleDragEnd
|
|
255
|
+
}), /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonWrapper, {
|
|
281
256
|
$isDisabled: isDisabled,
|
|
282
257
|
$width: !isSliderBigger ? dragRange.right + itemWidth : dragRange.right,
|
|
283
|
-
ref: sliderButtonWrapperRef
|
|
284
|
-
|
|
285
|
-
}, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, null, /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, null, buttons)))), [buttons, dragRange, handleDragEnd, handleScroll, handleWhileDrag, isDisabled, isSliderBigger, itemWidth, scope, theme, thumbText]);
|
|
258
|
+
ref: sliderButtonWrapperRef
|
|
259
|
+
}, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, null, /*#__PURE__*/_react.default.createElement(_SliderButton.StyledSliderButtonButtonsWrapper, null, buttons)))), [buttons, dragRange, handleDragEnd, isDisabled, isSliderBigger, itemWidth, pseudoButtons, scope]);
|
|
286
260
|
};
|
|
287
261
|
SliderButton.displayName = 'SliderButton';
|
|
288
262
|
var _default = exports.default = SliderButton;
|