@chayns-components/core 5.0.60 → 5.0.62
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/color-scheme-provider/ColorSchemeProvider.js +43 -5
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +0 -37
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
- package/lib/cjs/components/filter/Filter.js +2 -2
- package/lib/cjs/components/filter/Filter.js.map +1 -1
- package/lib/cjs/components/filter/filter-content/{FIlterContent.js → FilterContent.js} +14 -5
- package/lib/cjs/components/filter/filter-content/FilterContent.js.map +1 -0
- package/lib/cjs/components/filter-buttons/FilterButtons.js +7 -7
- package/lib/cjs/components/filter-buttons/FilterButtons.js.map +1 -1
- package/lib/cjs/components/filter-buttons/all-button/AllButton.js +27 -0
- package/lib/cjs/components/filter-buttons/all-button/AllButton.js.map +1 -0
- package/lib/cjs/components/truncation/Truncation.js +15 -3
- package/lib/cjs/components/truncation/Truncation.js.map +1 -1
- package/lib/cjs/constants/textStrings.js +41 -0
- package/lib/cjs/constants/textStrings.js.map +1 -0
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +45 -7
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +1 -38
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
- package/lib/esm/components/filter/Filter.js +1 -1
- package/lib/esm/components/filter/Filter.js.map +1 -1
- package/lib/esm/components/filter/filter-content/{FIlterContent.js → FilterContent.js} +14 -5
- package/lib/esm/components/filter/filter-content/FilterContent.js.map +1 -0
- package/lib/esm/components/filter-buttons/FilterButtons.js +7 -7
- package/lib/esm/components/filter-buttons/FilterButtons.js.map +1 -1
- package/lib/esm/components/filter-buttons/all-button/AllButton.js +19 -0
- package/lib/esm/components/filter-buttons/all-button/AllButton.js.map +1 -0
- package/lib/esm/components/truncation/Truncation.js +14 -3
- package/lib/esm/components/truncation/Truncation.js.map +1 -1
- package/lib/esm/constants/textStrings.js +35 -0
- package/lib/esm/constants/textStrings.js.map +1 -0
- package/lib/types/components/color-scheme-provider/ColorSchemeProvider.styles.d.ts +3 -7
- package/lib/types/components/filter-buttons/all-button/AllButton.d.ts +3 -0
- package/lib/types/constants/textStrings.d.ts +35 -0
- package/package.json +3 -2
- package/lib/cjs/components/filter/filter-content/FIlterContent.js.map +0 -1
- package/lib/esm/components/filter/filter-content/FIlterContent.js.map +0 -1
- /package/lib/types/components/filter/filter-content/{FIlterContent.d.ts → FilterContent.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncation.js","names":["_react","_interopRequireWildcard","require","_truncation","_debounce","_truncation2","_Truncation","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","Truncation","collapsedHeight","clampPosition","ClampPosition","Right","isOpen","moreLabel","lessLabel","onChange","children","internalIsOpen","setInternalIsOpen","useState","showClamp","setShowClamp","newCollapsedHeight","setNewCollapsedHeight","originalHeight","setOriginalHeight","shouldShowCollapsedElement","setShouldShowCollapsedElement","hasSizeChanged","setHasSizeChanged","initialRender","setInitialRender","shouldSkipChangeCheck","setShouldSkipChangeCheck","originalSmallHeight","setOriginalSmallHeight","originalBigHeight","setOriginalBigHeight","parentRef","useRef","pseudoChildrenRef","childrenRef","originalChildrenRef","hasCollapsed","isAnimating","hasSizeRecentlyChanged","canResetSizeChanged","handleClampClick","useCallback","event","current","setTimeout","handleAnimationEnd","offsetHeight","truncateElement","_parentRef$current","firstChild","removeChild","appendChild","style","visibility","resizeObserver","ResizeObserver","entries","observedHeight","contentRect","height","debounce","observe","disconnect","useMemo","createElement","StyledTruncation","className","ref","StyledTruncationPseudoContent","StyledMotionTruncationContent","animate","initial","transition","type","duration","onAnimationComplete","onAnimationStart","StyledTruncationClampWrapper","$position","StyledTruncationClamp","onClick","_default","exports"],"sources":["../../../../src/components/truncation/Truncation.tsx"],"sourcesContent":["import React, {\n FC,\n MouseEvent,\n MouseEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ClampPosition } from '../../types/truncation';\nimport { debounce } from '../../utils/debounce';\nimport { truncateElement } from '../../utils/truncation';\nimport {\n StyledMotionTruncationContent,\n StyledTruncation,\n StyledTruncationClamp,\n StyledTruncationClampWrapper,\n StyledTruncationPseudoContent,\n} from './Truncation.styles';\n\nexport type TruncationProps = {\n /**\n * The elements that should be expanding or collapsing.\n */\n children: ReactElement;\n /**\n * The position of the clamp.\n */\n clampPosition?: ClampPosition;\n /**\n * The height of the children Element in it`s collapsed state.\n */\n collapsedHeight?: number;\n /**\n * If set to true, the content is exposed.\n */\n isOpen?: boolean;\n /**\n * A text that should be displayed if the content is expanded.\n */\n lessLabel?: string;\n /**\n * A text that should be displayed if the content is collapsed.\n */\n moreLabel?: string;\n /**\n * Function to be executed when the component is expanding or collapsing.\n */\n onChange?: (event: MouseEvent<HTMLAnchorElement>, isOpen: boolean) => void;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nconst Truncation: FC<TruncationProps> = ({\n collapsedHeight = 150,\n clampPosition = ClampPosition.Right,\n isOpen,\n moreLabel = 'Mehr',\n lessLabel = 'Weniger',\n onChange,\n children,\n}) => {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [showClamp, setShowClamp] = useState(true);\n const [newCollapsedHeight, setNewCollapsedHeight] = useState(collapsedHeight);\n const [originalHeight, setOriginalHeight] = useState(0);\n const [shouldShowCollapsedElement, setShouldShowCollapsedElement] = useState(true);\n const [hasSizeChanged, setHasSizeChanged] = useState(false);\n const [initialRender, setInitialRender] = useState(true);\n const [shouldSkipChangeCheck, setShouldSkipChangeCheck] = useState(false);\n\n const [originalSmallHeight, setOriginalSmallHeight] = useState(0);\n const [originalBigHeight, setOriginalBigHeight] = useState(0);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n const parentRef = useRef<HTMLDivElement>(null);\n const pseudoChildrenRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const originalChildrenRef = useRef<HTMLDivElement>(null);\n const hasCollapsed = useRef(false);\n const isAnimating = useRef(false);\n const hasSizeRecentlyChanged = useRef(false);\n const canResetSizeChanged = useRef(true);\n\n useEffect(() => {\n if (typeof isOpen === 'boolean') {\n setInternalIsOpen(isOpen);\n setShowClamp(!isOpen);\n }\n }, [isOpen]);\n\n // Changes the state of the truncation\n const handleClampClick = useCallback<MouseEventHandler<HTMLAnchorElement>>(\n (event) => {\n setInternalIsOpen((current) => {\n if (typeof onChange === 'function') {\n onChange(event, !current);\n }\n\n return !current;\n });\n },\n [onChange],\n );\n\n useEffect(() => {\n if (children) {\n setShouldSkipChangeCheck(true);\n\n window.setTimeout(() => {\n setShouldSkipChangeCheck(false);\n }, 200);\n }\n }, [children]);\n\n const handleAnimationEnd = useCallback(() => {\n hasCollapsed.current = true;\n isAnimating.current = false;\n\n if (canResetSizeChanged.current) {\n setHasSizeChanged(false);\n canResetSizeChanged.current = false;\n }\n\n window.setTimeout(() => {\n hasSizeRecentlyChanged.current = false;\n }, 10);\n\n setShouldShowCollapsedElement(!internalIsOpen);\n\n window.setTimeout(() => {\n hasCollapsed.current = false;\n }, 30);\n }, [internalIsOpen]);\n\n useEffect(() => {\n if (!pseudoChildrenRef.current) {\n return;\n }\n\n setOriginalHeight(pseudoChildrenRef.current.offsetHeight);\n setOriginalBigHeight(pseudoChildrenRef.current.offsetHeight);\n\n truncateElement(pseudoChildrenRef.current, collapsedHeight);\n\n setNewCollapsedHeight(pseudoChildrenRef.current.offsetHeight);\n setOriginalSmallHeight(pseudoChildrenRef.current.offsetHeight);\n }, [collapsedHeight, pseudoChildrenRef, children]);\n\n // Checks if the clamp should be shown\n useEffect(() => {\n if (\n pseudoChildrenRef.current &&\n (!hasSizeChanged || shouldSkipChangeCheck) &&\n !initialRender\n ) {\n setShowClamp(originalHeight > newCollapsedHeight);\n }\n }, [\n shouldSkipChangeCheck,\n collapsedHeight,\n hasSizeChanged,\n initialRender,\n newCollapsedHeight,\n originalHeight,\n children,\n ]);\n\n useEffect(() => {\n if (childrenRef.current && pseudoChildrenRef.current && originalChildrenRef.current) {\n while (childrenRef.current.firstChild) {\n childrenRef.current.removeChild(childrenRef.current.firstChild);\n }\n\n childrenRef.current.appendChild(\n shouldShowCollapsedElement && !internalIsOpen\n ? pseudoChildrenRef.current\n : originalChildrenRef.current,\n );\n\n parentRef.current?.appendChild(\n shouldShowCollapsedElement && !internalIsOpen\n ? originalChildrenRef.current\n : pseudoChildrenRef.current,\n );\n\n (childrenRef.current.children[0] as HTMLDivElement).style.visibility = 'visible';\n }\n }, [children, internalIsOpen, shouldShowCollapsedElement]);\n\n useIsomorphicLayoutEffect(() => {\n if (originalChildrenRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedHeight = entries[0].contentRect.height;\n\n setOriginalHeight(\n observedHeight < originalBigHeight ? originalBigHeight : observedHeight,\n );\n\n if (\n !hasCollapsed.current &&\n !isAnimating.current &&\n !hasSizeRecentlyChanged.current\n ) {\n void debounce(() => {\n canResetSizeChanged.current = true;\n }, 250)();\n\n setHasSizeChanged(true);\n hasSizeRecentlyChanged.current = true;\n }\n }\n });\n\n resizeObserver.observe(originalChildrenRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, [originalBigHeight, children]);\n\n useIsomorphicLayoutEffect(() => {\n if (pseudoChildrenRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedHeight = entries[0].contentRect.height;\n\n setNewCollapsedHeight(\n observedHeight < originalSmallHeight ? originalSmallHeight : observedHeight,\n );\n\n if (\n !hasCollapsed.current &&\n !isAnimating.current &&\n !hasSizeRecentlyChanged.current\n ) {\n void debounce(() => {\n canResetSizeChanged.current = true;\n }, 250)();\n\n setHasSizeChanged(true);\n hasSizeRecentlyChanged.current = true;\n }\n }\n });\n\n resizeObserver.observe(pseudoChildrenRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, [originalSmallHeight, children]);\n\n return useMemo(\n () => (\n <StyledTruncation className=\"beta-chayns-truncation\" ref={parentRef}>\n <StyledTruncationPseudoContent ref={pseudoChildrenRef}>\n {children}\n </StyledTruncationPseudoContent>\n <StyledTruncationPseudoContent ref={originalChildrenRef}>\n {children}\n </StyledTruncationPseudoContent>\n <StyledMotionTruncationContent\n animate={{ height: internalIsOpen ? originalHeight : newCollapsedHeight }}\n initial={false}\n transition={{ type: 'tween', duration: hasSizeChanged ? 0 : 0.2 }}\n onAnimationComplete={handleAnimationEnd}\n onAnimationStart={() => {\n isAnimating.current = true;\n }}\n ref={childrenRef}\n />\n {showClamp && (\n <StyledTruncationClampWrapper $position={clampPosition}>\n <StyledTruncationClamp onClick={handleClampClick}>\n {internalIsOpen ? lessLabel : moreLabel}\n </StyledTruncationClamp>\n </StyledTruncationClampWrapper>\n )}\n </StyledTruncation>\n ),\n [\n children,\n clampPosition,\n handleAnimationEnd,\n handleClampClick,\n hasSizeChanged,\n internalIsOpen,\n lessLabel,\n moreLabel,\n newCollapsedHeight,\n originalHeight,\n showClamp,\n ],\n );\n};\n\nexport default Truncation;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Truncation.js","names":["_react","_interopRequireWildcard","require","_truncation","_debounce","_truncation2","_Truncation","_textstring","_textStrings","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","Truncation","collapsedHeight","clampPosition","ClampPosition","Right","isOpen","moreLabel","lessLabel","onChange","children","internalIsOpen","setInternalIsOpen","useState","showClamp","setShowClamp","newCollapsedHeight","setNewCollapsedHeight","originalHeight","setOriginalHeight","shouldShowCollapsedElement","setShouldShowCollapsedElement","hasSizeChanged","setHasSizeChanged","initialRender","setInitialRender","shouldSkipChangeCheck","setShouldSkipChangeCheck","originalSmallHeight","setOriginalSmallHeight","originalBigHeight","setOriginalBigHeight","parentRef","useRef","pseudoChildrenRef","childrenRef","originalChildrenRef","hasCollapsed","isAnimating","hasSizeRecentlyChanged","canResetSizeChanged","handleClampClick","useCallback","event","current","setTimeout","handleAnimationEnd","offsetHeight","truncateElement","_parentRef$current","firstChild","removeChild","appendChild","style","visibility","resizeObserver","ResizeObserver","entries","observedHeight","contentRect","height","debounce","observe","disconnect","ts","textStrings","components","truncation","internalMoreLabel","createElement","Textstring","textstring","ttsToITextString","more","internalLessLabel","less","useMemo","StyledTruncation","className","ref","StyledTruncationPseudoContent","StyledMotionTruncationContent","animate","initial","transition","type","duration","onAnimationComplete","onAnimationStart","StyledTruncationClampWrapper","$position","TextstringProvider","libraryName","StyledTruncationClamp","onClick","_default","exports"],"sources":["../../../../src/components/truncation/Truncation.tsx"],"sourcesContent":["import React, {\n FC,\n MouseEvent,\n MouseEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ClampPosition } from '../../types/truncation';\nimport { debounce } from '../../utils/debounce';\nimport { truncateElement } from '../../utils/truncation';\nimport {\n StyledMotionTruncationContent,\n StyledTruncation,\n StyledTruncationClamp,\n StyledTruncationClampWrapper,\n StyledTruncationPseudoContent,\n} from './Truncation.styles';\nimport { Textstring, TextstringProvider, ttsToITextString } from '@chayns-components/textstring';\nimport textStrings from '../../constants/textStrings';\n\nexport type TruncationProps = {\n /**\n * The elements that should be expanding or collapsing.\n */\n children: ReactElement;\n /**\n * The position of the clamp.\n */\n clampPosition?: ClampPosition;\n /**\n * The height of the children Element in it`s collapsed state.\n */\n collapsedHeight?: number;\n /**\n * If set to true, the content is exposed.\n */\n isOpen?: boolean;\n /**\n * A text that should be displayed if the content is expanded.\n */\n lessLabel?: string;\n /**\n * A text that should be displayed if the content is collapsed.\n */\n moreLabel?: string;\n /**\n * Function to be executed when the component is expanding or collapsing.\n */\n onChange?: (event: MouseEvent<HTMLAnchorElement>, isOpen: boolean) => void;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nconst Truncation: FC<TruncationProps> = ({\n collapsedHeight = 150,\n clampPosition = ClampPosition.Right,\n isOpen,\n moreLabel,\n lessLabel,\n onChange,\n children,\n}) => {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const [showClamp, setShowClamp] = useState(true);\n const [newCollapsedHeight, setNewCollapsedHeight] = useState(collapsedHeight);\n const [originalHeight, setOriginalHeight] = useState(0);\n const [shouldShowCollapsedElement, setShouldShowCollapsedElement] = useState(true);\n const [hasSizeChanged, setHasSizeChanged] = useState(false);\n const [initialRender, setInitialRender] = useState(true);\n const [shouldSkipChangeCheck, setShouldSkipChangeCheck] = useState(false);\n\n const [originalSmallHeight, setOriginalSmallHeight] = useState(0);\n const [originalBigHeight, setOriginalBigHeight] = useState(0);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n const parentRef = useRef<HTMLDivElement>(null);\n const pseudoChildrenRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const originalChildrenRef = useRef<HTMLDivElement>(null);\n const hasCollapsed = useRef(false);\n const isAnimating = useRef(false);\n const hasSizeRecentlyChanged = useRef(false);\n const canResetSizeChanged = useRef(true);\n\n useEffect(() => {\n if (typeof isOpen === 'boolean') {\n setInternalIsOpen(isOpen);\n setShowClamp(!isOpen);\n }\n }, [isOpen]);\n\n // Changes the state of the truncation\n const handleClampClick = useCallback<MouseEventHandler<HTMLAnchorElement>>(\n (event) => {\n setInternalIsOpen((current) => {\n if (typeof onChange === 'function') {\n onChange(event, !current);\n }\n\n return !current;\n });\n },\n [onChange],\n );\n\n useEffect(() => {\n if (children) {\n setShouldSkipChangeCheck(true);\n\n window.setTimeout(() => {\n setShouldSkipChangeCheck(false);\n }, 200);\n }\n }, [children]);\n\n const handleAnimationEnd = useCallback(() => {\n hasCollapsed.current = true;\n isAnimating.current = false;\n\n if (canResetSizeChanged.current) {\n setHasSizeChanged(false);\n canResetSizeChanged.current = false;\n }\n\n window.setTimeout(() => {\n hasSizeRecentlyChanged.current = false;\n }, 10);\n\n setShouldShowCollapsedElement(!internalIsOpen);\n\n window.setTimeout(() => {\n hasCollapsed.current = false;\n }, 30);\n }, [internalIsOpen]);\n\n useEffect(() => {\n if (!pseudoChildrenRef.current) {\n return;\n }\n\n setOriginalHeight(pseudoChildrenRef.current.offsetHeight);\n setOriginalBigHeight(pseudoChildrenRef.current.offsetHeight);\n\n truncateElement(pseudoChildrenRef.current, collapsedHeight);\n\n setNewCollapsedHeight(pseudoChildrenRef.current.offsetHeight);\n setOriginalSmallHeight(pseudoChildrenRef.current.offsetHeight);\n }, [collapsedHeight, pseudoChildrenRef, children]);\n\n // Checks if the clamp should be shown\n useEffect(() => {\n if (\n pseudoChildrenRef.current &&\n (!hasSizeChanged || shouldSkipChangeCheck) &&\n !initialRender\n ) {\n setShowClamp(originalHeight > newCollapsedHeight);\n }\n }, [\n shouldSkipChangeCheck,\n collapsedHeight,\n hasSizeChanged,\n initialRender,\n newCollapsedHeight,\n originalHeight,\n children,\n ]);\n\n useEffect(() => {\n if (childrenRef.current && pseudoChildrenRef.current && originalChildrenRef.current) {\n while (childrenRef.current.firstChild) {\n childrenRef.current.removeChild(childrenRef.current.firstChild);\n }\n\n childrenRef.current.appendChild(\n shouldShowCollapsedElement && !internalIsOpen\n ? pseudoChildrenRef.current\n : originalChildrenRef.current,\n );\n\n parentRef.current?.appendChild(\n shouldShowCollapsedElement && !internalIsOpen\n ? originalChildrenRef.current\n : pseudoChildrenRef.current,\n );\n\n (childrenRef.current.children[0] as HTMLDivElement).style.visibility = 'visible';\n }\n }, [children, internalIsOpen, shouldShowCollapsedElement]);\n\n useIsomorphicLayoutEffect(() => {\n if (originalChildrenRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedHeight = entries[0].contentRect.height;\n\n setOriginalHeight(\n observedHeight < originalBigHeight ? originalBigHeight : observedHeight,\n );\n\n if (\n !hasCollapsed.current &&\n !isAnimating.current &&\n !hasSizeRecentlyChanged.current\n ) {\n void debounce(() => {\n canResetSizeChanged.current = true;\n }, 250)();\n\n setHasSizeChanged(true);\n hasSizeRecentlyChanged.current = true;\n }\n }\n });\n\n resizeObserver.observe(originalChildrenRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, [originalBigHeight, children]);\n\n useIsomorphicLayoutEffect(() => {\n if (pseudoChildrenRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedHeight = entries[0].contentRect.height;\n\n setNewCollapsedHeight(\n observedHeight < originalSmallHeight ? originalSmallHeight : observedHeight,\n );\n\n if (\n !hasCollapsed.current &&\n !isAnimating.current &&\n !hasSizeRecentlyChanged.current\n ) {\n void debounce(() => {\n canResetSizeChanged.current = true;\n }, 250)();\n\n setHasSizeChanged(true);\n hasSizeRecentlyChanged.current = true;\n }\n }\n });\n\n resizeObserver.observe(pseudoChildrenRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, [originalSmallHeight, children]);\n\n const ts = textStrings.components.truncation;\n\n const internalMoreLabel = moreLabel ?? <Textstring textstring={ttsToITextString(ts.more)} />;\n const internalLessLabel = lessLabel ?? <Textstring textstring={ttsToITextString(ts.less)} />;\n\n return useMemo(\n () => (\n <StyledTruncation className=\"beta-chayns-truncation\" ref={parentRef}>\n <StyledTruncationPseudoContent ref={pseudoChildrenRef}>\n {children}\n </StyledTruncationPseudoContent>\n <StyledTruncationPseudoContent ref={originalChildrenRef}>\n {children}\n </StyledTruncationPseudoContent>\n <StyledMotionTruncationContent\n animate={{ height: internalIsOpen ? originalHeight : newCollapsedHeight }}\n initial={false}\n transition={{ type: 'tween', duration: hasSizeChanged ? 0 : 0.2 }}\n onAnimationComplete={handleAnimationEnd}\n onAnimationStart={() => {\n isAnimating.current = true;\n }}\n ref={childrenRef}\n />\n {showClamp && (\n <StyledTruncationClampWrapper $position={clampPosition}>\n <TextstringProvider libraryName=\"@chayns-components-core\">\n <StyledTruncationClamp onClick={handleClampClick}>\n {internalIsOpen ? internalLessLabel : internalMoreLabel}\n </StyledTruncationClamp>\n </TextstringProvider>\n </StyledTruncationClampWrapper>\n )}\n </StyledTruncation>\n ),\n [\n children,\n clampPosition,\n handleAnimationEnd,\n handleClampClick,\n hasSizeChanged,\n internalIsOpen,\n lessLabel,\n moreLabel,\n newCollapsedHeight,\n originalHeight,\n showClamp,\n ],\n );\n};\n\nexport default Truncation;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
components: {
|
|
9
|
+
filter: {
|
|
10
|
+
filterContent: {
|
|
11
|
+
input: {
|
|
12
|
+
placeholder: {
|
|
13
|
+
stringName: 'txt_chayns_components_core_components_filter_filterContent_input_placeholder',
|
|
14
|
+
fallback: 'Suche'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
sort: {
|
|
18
|
+
stringName: 'txt_chayns_components_core_components_filter_filterContent_sort',
|
|
19
|
+
fallback: 'Sortierung'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
filterButtons: {
|
|
24
|
+
all: {
|
|
25
|
+
stringName: 'txt_chayns_components_core_components_filterButtons_all',
|
|
26
|
+
fallback: 'Alle'
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
truncation: {
|
|
30
|
+
less: {
|
|
31
|
+
stringName: 'txt_chayns_components_core_components_truncation_less',
|
|
32
|
+
fallback: 'Weniger'
|
|
33
|
+
},
|
|
34
|
+
more: {
|
|
35
|
+
stringName: 'txt_chayns_components_core_components_truncation_more',
|
|
36
|
+
fallback: 'Mehr'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=textStrings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textStrings.js","names":["components","filter","filterContent","input","placeholder","stringName","fallback","sort","filterButtons","all","truncation","less","more"],"sources":["../../../src/constants/textStrings.ts"],"sourcesContent":["export default {\n components: {\n filter: {\n filterContent: {\n input: {\n placeholder: {\n stringName:\n 'txt_chayns_components_core_components_filter_filterContent_input_placeholder',\n fallback: 'Suche',\n },\n },\n sort: {\n stringName: 'txt_chayns_components_core_components_filter_filterContent_sort',\n fallback: 'Sortierung',\n },\n },\n },\n filterButtons: {\n all: {\n stringName: 'txt_chayns_components_core_components_filterButtons_all',\n fallback: 'Alle',\n },\n },\n truncation: {\n less: {\n stringName: 'txt_chayns_components_core_components_truncation_less',\n fallback: 'Weniger',\n },\n more: {\n stringName: 'txt_chayns_components_core_components_truncation_more',\n fallback: 'Mehr',\n },\n },\n },\n} as const;\n"],"mappings":";;;;;;iCAAe;EACXA,UAAU,EAAE;IACRC,MAAM,EAAE;MACJC,aAAa,EAAE;QACXC,KAAK,EAAE;UACHC,WAAW,EAAE;YACTC,UAAU,EACN,8EAA8E;YAClFC,QAAQ,EAAE;UACd;QACJ,CAAC;QACDC,IAAI,EAAE;UACFF,UAAU,EAAE,iEAAiE;UAC7EC,QAAQ,EAAE;QACd;MACJ;IACJ,CAAC;IACDE,aAAa,EAAE;MACXC,GAAG,EAAE;QACDJ,UAAU,EAAE,yDAAyD;QACrEC,QAAQ,EAAE;MACd;IACJ,CAAC;IACDI,UAAU,EAAE;MACRC,IAAI,EAAE;QACFN,UAAU,EAAE,uDAAuD;QACnEC,QAAQ,EAAE;MACd,CAAC;MACDM,IAAI,EAAE;QACFP,UAAU,EAAE,uDAAuD;QACnEC,QAAQ,EAAE;MACd;IACJ;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSite } from 'chayns-api';
|
|
2
2
|
import React, { createContext, useContext, useMemo } from 'react';
|
|
3
|
-
import { createGlobalStyle, ThemeProvider } from 'styled-components';
|
|
3
|
+
import { createGlobalStyle, css, ThemeProvider } from 'styled-components';
|
|
4
4
|
import { StyledColorSchemeProvider } from './ColorSchemeProvider.styles';
|
|
5
5
|
import { useChaynsTheme } from './hooks/useChaynsTheme';
|
|
6
6
|
const GlobalStyle = createGlobalStyle`
|
|
@@ -20,6 +20,48 @@ const GlobalStyle = createGlobalStyle`
|
|
|
20
20
|
letter-spacing: -0.3px;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
.chayns-scrollbar {
|
|
25
|
+
${({
|
|
26
|
+
theme
|
|
27
|
+
}) => {
|
|
28
|
+
const textRgb = theme['text-rgb'] ?? '';
|
|
29
|
+
return css`
|
|
30
|
+
@supports selector(::-webkit-scrollbar-button) {
|
|
31
|
+
&::-webkit-scrollbar {
|
|
32
|
+
width: 10px;
|
|
33
|
+
height: 10px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&::-webkit-scrollbar-thumb {
|
|
37
|
+
background-color: rgba(${textRgb}, 0.15);
|
|
38
|
+
border-radius: 20px;
|
|
39
|
+
background-clip: padding-box;
|
|
40
|
+
border: solid 3px transparent;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&::-webkit-scrollbar-track {
|
|
44
|
+
background-color: transparent;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&::-webkit-scrollbar-corner {
|
|
48
|
+
background-color: transparent;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&::-webkit-scrollbar-button {
|
|
52
|
+
background-color: transparent;
|
|
53
|
+
height: 5px;
|
|
54
|
+
width: 5px;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@supports not selector(::-webkit-scrollbar-button) {
|
|
59
|
+
scrollbar-color: rgba(${textRgb}, 0.15) transparent;
|
|
60
|
+
scrollbar-width: thin;
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
}}
|
|
64
|
+
}
|
|
23
65
|
`;
|
|
24
66
|
export const ColorSchemeContext = /*#__PURE__*/createContext(undefined);
|
|
25
67
|
export const useColorScheme = () => useContext(ColorSchemeContext);
|
|
@@ -38,9 +80,6 @@ const ColorSchemeProvider = ({
|
|
|
38
80
|
color: internalColor,
|
|
39
81
|
colorMode: internalColorMode
|
|
40
82
|
} = useSite();
|
|
41
|
-
const {
|
|
42
|
-
browser
|
|
43
|
-
} = useDevice();
|
|
44
83
|
const color = colorProp ?? context?.designSettings?.color ?? internalColor;
|
|
45
84
|
const colorMode = colorModeProp ?? context?.designSettings?.colorMode ?? internalColorMode;
|
|
46
85
|
const overrideParagraphFormat = color && color !== internalColor || colorMode !== internalColorMode;
|
|
@@ -61,8 +100,7 @@ const ColorSchemeProvider = ({
|
|
|
61
100
|
value: contextValue
|
|
62
101
|
}, /*#__PURE__*/React.createElement(StyledColorSchemeProvider, {
|
|
63
102
|
className: "color-scheme-provider",
|
|
64
|
-
style: style
|
|
65
|
-
$browser: browser?.name
|
|
103
|
+
style: style
|
|
66
104
|
}, children), /*#__PURE__*/React.createElement(GlobalStyle, null)));
|
|
67
105
|
};
|
|
68
106
|
ColorSchemeProvider.displayName = 'ColorSchemeProvider';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSchemeProvider.js","names":["
|
|
1
|
+
{"version":3,"file":"ColorSchemeProvider.js","names":["useSite","React","createContext","useContext","useMemo","createGlobalStyle","css","ThemeProvider","StyledColorSchemeProvider","useChaynsTheme","GlobalStyle","theme","textRgb","ColorSchemeContext","undefined","useColorScheme","ColorSchemeProvider","children","color","colorProp","colorMode","colorModeProp","secondaryColor","siteId","style","iconColor","customVariables","context","internalColor","internalColorMode","designSettings","overrideParagraphFormat","paragraphFormat","contextValue","createElement","Provider","value","className","displayName"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.tsx"],"sourcesContent":["import { ChaynsDesignSettings, ChaynsParagraphFormat, ColorMode, useSite } from 'chayns-api';\nimport React, { createContext, FC, ReactNode, useContext, useMemo } from 'react';\nimport { createGlobalStyle, css, ThemeProvider } from 'styled-components';\nimport { StyledColorSchemeProvider } from './ColorSchemeProvider.styles';\nimport { useChaynsTheme } from './hooks/useChaynsTheme';\n\nexport type ColorSchemeProviderProps = {\n /**\n * The content of the application or the components for which the styles should be set\n */\n children: ReactNode;\n /**\n * The hex color to be used for the children\n */\n color?: string;\n /**\n * The color mode to be used for the children\n */\n colorMode?: ColorMode;\n /**\n * The secondary hex color to be used for the children\n */\n secondaryColor?: string;\n /**\n * The site id of the page for which the design settings should be fetched\n */\n siteId?: string;\n /**\n * Additional styles set on the root element\n */\n style?: { [key: string]: string | number };\n /**\n * Additional variables to extend the theme\n */\n customVariables?: Record<string, string>;\n /**\n * An optional color for all icons\n */\n iconColor?: string;\n};\n\nexport interface Theme {\n [key: string]: string;\n}\n\nexport type WithTheme<T> = T & {\n theme: Theme;\n};\n\nconst GlobalStyle = createGlobalStyle`\n .ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n footer {\n font-size: 0.85rem;\n color: #888;\n margin: 10px 0 0;\n\n & a {\n color: #888;\n letter-spacing: -0.3px;\n }\n }\n\n .chayns-scrollbar {\n ${({ theme }: WithTheme<unknown>) => {\n const textRgb = theme['text-rgb'] ?? '';\n\n return css`\n @supports selector(::-webkit-scrollbar-button) {\n &::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: rgba(${textRgb}, 0.15);\n border-radius: 20px;\n background-clip: padding-box;\n border: solid 3px transparent;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-button {\n background-color: transparent;\n height: 5px;\n width: 5px;\n }\n }\n\n @supports not selector(::-webkit-scrollbar-button) {\n scrollbar-color: rgba(${textRgb}, 0.15) transparent;\n scrollbar-width: thin;\n }\n `;\n }}\n }\n`;\n\nexport interface ColorSchemeContextProps {\n designSettings?: ChaynsDesignSettings;\n paragraphFormat: ChaynsParagraphFormat[];\n theme: Theme;\n}\n\nexport const ColorSchemeContext = createContext<ColorSchemeContextProps | undefined>(undefined);\n\nexport const useColorScheme = () => useContext(ColorSchemeContext);\n\nconst ColorSchemeProvider: FC<ColorSchemeProviderProps> = ({\n children,\n color: colorProp,\n colorMode: colorModeProp,\n secondaryColor,\n siteId,\n style = {},\n iconColor,\n customVariables,\n}) => {\n const context = useContext(ColorSchemeContext);\n\n const { color: internalColor, colorMode: internalColorMode } = useSite();\n\n const color = colorProp ?? context?.designSettings?.color ?? internalColor;\n const colorMode = colorModeProp ?? context?.designSettings?.colorMode ?? internalColorMode;\n\n const overrideParagraphFormat =\n (color && color !== internalColor) || colorMode !== internalColorMode;\n\n const paragraphFormat = useMemo(\n () => (overrideParagraphFormat ? [] : undefined),\n [overrideParagraphFormat],\n );\n\n const contextValue = useChaynsTheme({\n color,\n iconColor,\n colorMode,\n secondaryColor,\n siteId,\n customVariables,\n // Overrides the paragraphFormat on changed color or colorMode\n paragraphFormat,\n });\n\n return (\n <ThemeProvider theme={contextValue.theme}>\n <ColorSchemeContext.Provider value={contextValue}>\n <StyledColorSchemeProvider className=\"color-scheme-provider\" style={style}>\n {children}\n </StyledColorSchemeProvider>\n <GlobalStyle />\n </ColorSchemeContext.Provider>\n </ThemeProvider>\n );\n};\n\nColorSchemeProvider.displayName = 'ColorSchemeProvider';\n\nexport default ColorSchemeProvider;\n"],"mappings":"AAAA,SAAiEA,OAAO,QAAQ,YAAY;AAC5F,OAAOC,KAAK,IAAIC,aAAa,EAAiBC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAChF,SAASC,iBAAiB,EAAEC,GAAG,EAAEC,aAAa,QAAQ,mBAAmB;AACzE,SAASC,yBAAyB,QAAQ,8BAA8B;AACxE,SAASC,cAAc,QAAQ,wBAAwB;AA6CvD,MAAMC,WAAW,GAAGL,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,CAAC;EAAEM;AAA0B,CAAC,KAAK;EACjC,MAAMC,OAAO,GAAGD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;EAEvC,OAAOL,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiDM,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4CA,OAAO;AACnD;AACA;AACA,aAAa;AACL,CAAC;AACT;AACA,CAAC;AAQD,OAAO,MAAMC,kBAAkB,gBAAGX,aAAa,CAAsCY,SAAS,CAAC;AAE/F,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAMZ,UAAU,CAACU,kBAAkB,CAAC;AAElE,MAAMG,mBAAiD,GAAGA,CAAC;EACvDC,QAAQ;EACRC,KAAK,EAAEC,SAAS;EAChBC,SAAS,EAAEC,aAAa;EACxBC,cAAc;EACdC,MAAM;EACNC,KAAK,GAAG,CAAC,CAAC;EACVC,SAAS;EACTC;AACJ,CAAC,KAAK;EACF,MAAMC,OAAO,GAAGxB,UAAU,CAACU,kBAAkB,CAAC;EAE9C,MAAM;IAAEK,KAAK,EAAEU,aAAa;IAAER,SAAS,EAAES;EAAkB,CAAC,GAAG7B,OAAO,CAAC,CAAC;EAExE,MAAMkB,KAAK,GAAGC,SAAS,IAAIQ,OAAO,EAAEG,cAAc,EAAEZ,KAAK,IAAIU,aAAa;EAC1E,MAAMR,SAAS,GAAGC,aAAa,IAAIM,OAAO,EAAEG,cAAc,EAAEV,SAAS,IAAIS,iBAAiB;EAE1F,MAAME,uBAAuB,GACxBb,KAAK,IAAIA,KAAK,KAAKU,aAAa,IAAKR,SAAS,KAAKS,iBAAiB;EAEzE,MAAMG,eAAe,GAAG5B,OAAO,CAC3B,MAAO2B,uBAAuB,GAAG,EAAE,GAAGjB,SAAU,EAChD,CAACiB,uBAAuB,CAC5B,CAAC;EAED,MAAME,YAAY,GAAGxB,cAAc,CAAC;IAChCS,KAAK;IACLO,SAAS;IACTL,SAAS;IACTE,cAAc;IACdC,MAAM;IACNG,eAAe;IACf;IACAM;EACJ,CAAC,CAAC;EAEF,oBACI/B,KAAA,CAAAiC,aAAA,CAAC3B,aAAa;IAACI,KAAK,EAAEsB,YAAY,CAACtB;EAAM,gBACrCV,KAAA,CAAAiC,aAAA,CAACrB,kBAAkB,CAACsB,QAAQ;IAACC,KAAK,EAAEH;EAAa,gBAC7ChC,KAAA,CAAAiC,aAAA,CAAC1B,yBAAyB;IAAC6B,SAAS,EAAC,uBAAuB;IAACb,KAAK,EAAEA;EAAM,GACrEP,QACsB,CAAC,eAC5BhB,KAAA,CAAAiC,aAAA,CAACxB,WAAW,MAAE,CACW,CAClB,CAAC;AAExB,CAAC;AAEDM,mBAAmB,CAACsB,WAAW,GAAG,qBAAqB;AAEvD,eAAetB,mBAAmB","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getAvailableColorList } from '@chayns/colors';
|
|
2
|
-
import {
|
|
2
|
+
import { styled } from 'styled-components';
|
|
3
3
|
// noinspection CssUnresolvedCustomProperty
|
|
4
4
|
export const StyledColorSchemeProvider = styled.div`
|
|
5
5
|
color: var(--chayns-color--text);
|
|
@@ -21,42 +21,5 @@ export const StyledColorSchemeProvider = styled.div`
|
|
|
21
21
|
.color-scheme-provider :is(h1,.h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6):first-child {
|
|
22
22
|
margin-top: 0;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
// Styles for custom scrollbar
|
|
26
|
-
.chayns-scrollbar {
|
|
27
|
-
${({
|
|
28
|
-
$browser,
|
|
29
|
-
theme
|
|
30
|
-
}) => $browser === 'firefox' ? css`
|
|
31
|
-
scrollbar-color: rgba(${theme['text-rgb']}, 0.15) transparent;
|
|
32
|
-
scrollbar-width: thin;
|
|
33
|
-
` : css`
|
|
34
|
-
&::-webkit-scrollbar {
|
|
35
|
-
width: 10px;
|
|
36
|
-
height: 10px;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&::-webkit-scrollbar-track {
|
|
40
|
-
background-color: transparent;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
&::-webkit-scrollbar-button {
|
|
44
|
-
background-color: transparent;
|
|
45
|
-
height: 5px;
|
|
46
|
-
width: 5px;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&::-webkit-scrollbar-thumb {
|
|
50
|
-
background-color: rgba(${theme['text-rgb']}, 0.15);
|
|
51
|
-
border-radius: 20px;
|
|
52
|
-
background-clip: padding-box;
|
|
53
|
-
border: solid 3px transparent;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&::-webkit-scrollbar-corner {
|
|
57
|
-
background-color: transparent;
|
|
58
|
-
}
|
|
59
|
-
`}
|
|
60
|
-
}
|
|
61
24
|
`;
|
|
62
25
|
//# sourceMappingURL=ColorSchemeProvider.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSchemeProvider.styles.js","names":["getAvailableColorList","
|
|
1
|
+
{"version":3,"file":"ColorSchemeProvider.styles.js","names":["getAvailableColorList","styled","StyledColorSchemeProvider","div","theme","map","colorName","colorNameRgb","primary"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.styles.ts"],"sourcesContent":["import { getAvailableColorList } from '@chayns/colors';\nimport { styled } from 'styled-components';\nimport type { WithTheme } from './ColorSchemeProvider';\n\ntype ColorSchemeProviderProps = WithTheme<unknown>;\n\n// noinspection CssUnresolvedCustomProperty\nexport const StyledColorSchemeProvider = styled.div<ColorSchemeProviderProps>`\n color: var(--chayns-color--text);\n\n ${({ theme }: ColorSchemeProviderProps) =>\n getAvailableColorList().map((colorName: string) => {\n const colorNameRgb = `${colorName}-rgb`;\n return [\n `--chayns-color--${colorName}: ${theme[colorName]};`,\n `--chayns-color-rgb--${colorName}: ${theme[colorNameRgb]};`,\n ];\n })}\n\n ${({ theme }: ColorSchemeProviderProps) =>\n `\n --chayns-color--header-bar: ${theme['header-bar'] ?? theme.primary};\n `}\n\n // ToDo: Remove .h1...\n .color-scheme-provider :is(h1,.h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6):first-child {\n margin-top: 0;\n }\n`;\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,MAAM,QAAQ,mBAAmB;AAK1C;AACA,OAAO,MAAMC,yBAAyB,GAAGD,MAAM,CAACE,GAA6B;AAC7E;AACA;AACA,MAAM,CAAC;EAAEC;AAAgC,CAAC,KAClCJ,qBAAqB,CAAC,CAAC,CAACK,GAAG,CAAEC,SAAiB,IAAK;EAC/C,MAAMC,YAAY,GAAG,GAAGD,SAAS,MAAM;EACvC,OAAO,CACH,mBAAmBA,SAAS,KAAKF,KAAK,CAACE,SAAS,CAAC,GAAG,EACpD,uBAAuBA,SAAS,KAAKF,KAAK,CAACG,YAAY,CAAC,GAAG,CAC9D;AACL,CAAC,CAAC;AACV;AACA,MAAM,CAAC;EAAEH;AAAgC,CAAC,KAClC;AACR,sCAAsCA,KAAK,CAAC,YAAY,CAAC,IAAIA,KAAK,CAACI,OAAO;AAC1E,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import React, { forwardRef, isValidElement, useCallback, useEffect, useImperativ
|
|
|
2
2
|
import { StyledFilter, StyledFilterContentWrapper, StyledFilterHead, StyledFilterHeadline, StyledFilterHeadlineElement, StyledFilterIcon, StyledFilterIconWrapper, StyledFilterSearch } from './Filter.styles';
|
|
3
3
|
import ExpandableContent from '../expandable-content/ExpandableContent';
|
|
4
4
|
import Icon from '../icon/Icon';
|
|
5
|
-
import FilterContent from './filter-content/
|
|
5
|
+
import FilterContent from './filter-content/FilterContent';
|
|
6
6
|
import ComboBox from '../combobox/ComboBox';
|
|
7
7
|
import { FilterType } from '../../types/filter';
|
|
8
8
|
import SearchInput from '../search-input/SearchInput';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","names":["React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","StyledFilter","StyledFilterContentWrapper","StyledFilterHead","StyledFilterHeadline","StyledFilterHeadlineElement","StyledFilterIcon","StyledFilterIconWrapper","StyledFilterSearch","ExpandableContent","Icon","FilterContent","ComboBox","FilterType","SearchInput","ContextMenu","Checkbox","Filter","headline","searchConfig","sortConfig","shouldAutoFocus","shouldShowRoundedHoverEffect","filterButtonConfig","checkboxConfig","comboboxConfig","onActiveChange","rightIcons","ref","isOpen","setIsOpen","isSearchActive","setIsSearchActive","shouldFocus","setShouldFocus","contentRef","iconRef","filterRef","searchRef","contextMenuRef","type","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","ONLY_COMBOBOX","MULTIPLE","icons","handleHide","current","hide","focus","window","setTimeout","handleShow","show","handleIconClick","iconElement","createElement","onClick","$isOpen","$shouldShowRoundedHoverEffect","size","sortItems","selectedItem","onSortChange","items","map","id","text","key","toString","isSelected","comboboxElement","$isSearchActive","includes","rIcons","isActive","value","searchValue","onChange","ev","onSearchChange","target","displayName"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["import React, {\n forwardRef,\n isValidElement,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n StyledFilter,\n StyledFilterContentWrapper,\n StyledFilterHead,\n StyledFilterHeadline,\n StyledFilterHeadlineElement,\n StyledFilterIcon,\n StyledFilterIconWrapper,\n StyledFilterSearch,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FIlterContent';\nimport ComboBox from '../combobox/ComboBox';\nimport {\n CheckboxConfig,\n ComboboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport Checkbox from '../checkbox/Checkbox';\nimport { InputRef } from '../input/Input';\nimport type { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu.types';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n comboboxConfig?: ComboboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n shouldAutoFocus?: boolean;\n};\n\nconst Filter = forwardRef<FilterRef, FilterProps>(\n (\n {\n headline,\n searchConfig,\n sortConfig,\n shouldAutoFocus = false,\n shouldShowRoundedHoverEffect = false,\n filterButtonConfig,\n checkboxConfig,\n comboboxConfig,\n onActiveChange,\n rightIcons,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [shouldFocus, setShouldFocus] = useState(false);\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const iconRef = useRef<HTMLDivElement | null>(null);\n const filterRef = useRef<HTMLDivElement | null>(null);\n const searchRef = useRef<InputRef | null>(null);\n\n const contextMenuRef = useRef<ContextMenuRef>(null);\n\n const type = useMemo(() => {\n if (\n filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_FILTER;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SORT;\n }\n\n if (\n !filterButtonConfig &&\n searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n comboboxConfig\n ) {\n return FilterType.ONLY_COMBOBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, comboboxConfig, filterButtonConfig, searchConfig, sortConfig]);\n\n const icons = useMemo(() => {\n switch (type) {\n case FilterType.ONLY_FILTER:\n return ['fa fa-filter'];\n case FilterType.ONLY_SORT:\n return ['fa fa-arrow-up-arrow-down'];\n default:\n return ['fa fa-search'];\n }\n }, [type]);\n\n useEffect(() => {\n if (typeof onActiveChange === 'function') {\n onActiveChange(isOpen);\n }\n }, [isOpen, onActiveChange]);\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(false);\n }\n }, [type]);\n\n useEffect(() => {\n if (shouldFocus) {\n searchRef.current?.focus();\n\n window.setTimeout(() => {\n setShouldFocus(false);\n }, 200);\n }\n }, [shouldFocus]);\n\n const handleShow = useCallback(() => {\n setIsOpen(true);\n\n if (shouldAutoFocus) {\n setShouldFocus(true);\n }\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(true);\n }\n }, [shouldAutoFocus, type]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n const handleIconClick = useCallback(() => {\n if (isOpen) {\n handleHide();\n } else {\n handleShow();\n }\n }, [handleHide, handleShow, isOpen]);\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n $isOpen={isOpen}\n ref={iconRef}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect],\n );\n\n const sortItems: ContextMenuItem[] = useMemo(() => {\n if (!sortConfig) {\n return [];\n }\n\n const { selectedItem, onSortChange } = sortConfig;\n\n return sortConfig.items.map(({ id, text }) => ({\n text,\n key: id.toString(),\n isSelected: id === selectedItem.id,\n icons: id === selectedItem.id ? ['fas fa-circle-small'] : [],\n onClick: () => onSortChange({ text, id }),\n }));\n }, [sortConfig]);\n\n const comboboxElement = useMemo(() => {\n if (!comboboxConfig) {\n return null;\n }\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <ComboBox {...comboboxConfig} />\n );\n }, [comboboxConfig]);\n\n return useMemo(\n () => (\n <StyledFilter ref={filterRef}>\n <StyledFilterHead>\n {!isValidElement(headline) ? (\n <StyledFilterHeadline $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadline>\n ) : (\n <StyledFilterHeadlineElement $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadlineElement>\n )}\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <StyledFilterIcon\n onClick={onClick}\n $isOpen={false}\n $shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n >\n <Icon icons={rIcons} size={18} />\n </StyledFilterIcon>\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n )}\n {type === FilterType.ONLY_SEARCH && searchConfig && (\n <StyledFilterSearch>\n <SearchInput\n onActiveChange={(isActive) => {\n setIsSearchActive(isActive);\n setIsOpen(isActive);\n }}\n ref={searchRef}\n isActive={isSearchActive}\n value={searchConfig.searchValue}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu ref={contextMenuRef} items={sortItems}>\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n {type === FilterType.ONLY_COMBOBOX && comboboxElement}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper ref={contentRef}>\n <ExpandableContent isOpen={isOpen}>\n <FilterContent\n shouldAutoFocus={shouldFocus}\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n comboboxConfig={comboboxConfig}\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n shouldFocus,\n filterButtonConfig,\n comboboxConfig,\n comboboxElement,\n shouldShowRoundedHoverEffect,\n ],\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport default Filter;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Filter.js","names":["React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","StyledFilter","StyledFilterContentWrapper","StyledFilterHead","StyledFilterHeadline","StyledFilterHeadlineElement","StyledFilterIcon","StyledFilterIconWrapper","StyledFilterSearch","ExpandableContent","Icon","FilterContent","ComboBox","FilterType","SearchInput","ContextMenu","Checkbox","Filter","headline","searchConfig","sortConfig","shouldAutoFocus","shouldShowRoundedHoverEffect","filterButtonConfig","checkboxConfig","comboboxConfig","onActiveChange","rightIcons","ref","isOpen","setIsOpen","isSearchActive","setIsSearchActive","shouldFocus","setShouldFocus","contentRef","iconRef","filterRef","searchRef","contextMenuRef","type","ONLY_FILTER","ONLY_SORT","ONLY_SEARCH","ONLY_CHECKBOX","ONLY_COMBOBOX","MULTIPLE","icons","handleHide","current","hide","focus","window","setTimeout","handleShow","show","handleIconClick","iconElement","createElement","onClick","$isOpen","$shouldShowRoundedHoverEffect","size","sortItems","selectedItem","onSortChange","items","map","id","text","key","toString","isSelected","comboboxElement","$isSearchActive","includes","rIcons","isActive","value","searchValue","onChange","ev","onSearchChange","target","displayName"],"sources":["../../../../src/components/filter/Filter.tsx"],"sourcesContent":["import React, {\n forwardRef,\n isValidElement,\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n StyledFilter,\n StyledFilterContentWrapper,\n StyledFilterHead,\n StyledFilterHeadline,\n StyledFilterHeadlineElement,\n StyledFilterIcon,\n StyledFilterIconWrapper,\n StyledFilterSearch,\n} from './Filter.styles';\nimport ExpandableContent from '../expandable-content/ExpandableContent';\nimport Icon from '../icon/Icon';\nimport FilterContent from './filter-content/FilterContent';\nimport ComboBox from '../combobox/ComboBox';\nimport {\n CheckboxConfig,\n ComboboxConfig,\n FilterButtonConfig,\n FilterRef,\n FilterType,\n SearchConfig,\n SortConfig,\n} from '../../types/filter';\nimport SearchInput from '../search-input/SearchInput';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport Checkbox from '../checkbox/Checkbox';\nimport { InputRef } from '../input/Input';\nimport type { ContextMenuItem, ContextMenuRef } from '../context-menu/ContextMenu.types';\n\nexport interface FilterRightIcon {\n icons: string[];\n onClick: VoidFunction;\n}\n\n//\nexport type FilterProps = {\n headline: ReactNode;\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n comboboxConfig?: ComboboxConfig;\n onActiveChange?: (isActive: boolean) => void;\n shouldShowRoundedHoverEffect?: boolean;\n rightIcons?: FilterRightIcon[];\n shouldAutoFocus?: boolean;\n};\n\nconst Filter = forwardRef<FilterRef, FilterProps>(\n (\n {\n headline,\n searchConfig,\n sortConfig,\n shouldAutoFocus = false,\n shouldShowRoundedHoverEffect = false,\n filterButtonConfig,\n checkboxConfig,\n comboboxConfig,\n onActiveChange,\n rightIcons,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isSearchActive, setIsSearchActive] = useState(false);\n const [shouldFocus, setShouldFocus] = useState(false);\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const iconRef = useRef<HTMLDivElement | null>(null);\n const filterRef = useRef<HTMLDivElement | null>(null);\n const searchRef = useRef<InputRef | null>(null);\n\n const contextMenuRef = useRef<ContextMenuRef>(null);\n\n const type = useMemo(() => {\n if (\n filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_FILTER;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SORT;\n }\n\n if (\n !filterButtonConfig &&\n searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_SEARCH;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n checkboxConfig &&\n !comboboxConfig\n ) {\n return FilterType.ONLY_CHECKBOX;\n }\n\n if (\n !filterButtonConfig &&\n !searchConfig &&\n !sortConfig &&\n !checkboxConfig &&\n comboboxConfig\n ) {\n return FilterType.ONLY_COMBOBOX;\n }\n\n return FilterType.MULTIPLE;\n }, [checkboxConfig, comboboxConfig, filterButtonConfig, searchConfig, sortConfig]);\n\n const icons = useMemo(() => {\n switch (type) {\n case FilterType.ONLY_FILTER:\n return ['fa fa-filter'];\n case FilterType.ONLY_SORT:\n return ['fa fa-arrow-up-arrow-down'];\n default:\n return ['fa fa-search'];\n }\n }, [type]);\n\n useEffect(() => {\n if (typeof onActiveChange === 'function') {\n onActiveChange(isOpen);\n }\n }, [isOpen, onActiveChange]);\n\n const handleHide = useCallback(() => {\n setIsOpen(false);\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(false);\n }\n }, [type]);\n\n useEffect(() => {\n if (shouldFocus) {\n searchRef.current?.focus();\n\n window.setTimeout(() => {\n setShouldFocus(false);\n }, 200);\n }\n }, [shouldFocus]);\n\n const handleShow = useCallback(() => {\n setIsOpen(true);\n\n if (shouldAutoFocus) {\n setShouldFocus(true);\n }\n\n if (type === FilterType.ONLY_SORT && contextMenuRef.current) {\n contextMenuRef.current.hide();\n }\n\n if (type === FilterType.ONLY_SEARCH) {\n setIsSearchActive(true);\n }\n }, [shouldAutoFocus, type]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n const handleIconClick = useCallback(() => {\n if (isOpen) {\n handleHide();\n } else {\n handleShow();\n }\n }, [handleHide, handleShow, isOpen]);\n\n const iconElement = useMemo(\n () => (\n <StyledFilterIcon\n onClick={handleIconClick}\n $isOpen={isOpen}\n ref={iconRef}\n $shouldShowRoundedHoverEffect={shouldShowRoundedHoverEffect}\n >\n <Icon icons={icons} size={18} />\n </StyledFilterIcon>\n ),\n [handleIconClick, icons, isOpen, shouldShowRoundedHoverEffect],\n );\n\n const sortItems: ContextMenuItem[] = useMemo(() => {\n if (!sortConfig) {\n return [];\n }\n\n const { selectedItem, onSortChange } = sortConfig;\n\n return sortConfig.items.map(({ id, text }) => ({\n text,\n key: id.toString(),\n isSelected: id === selectedItem.id,\n icons: id === selectedItem.id ? ['fas fa-circle-small'] : [],\n onClick: () => onSortChange({ text, id }),\n }));\n }, [sortConfig]);\n\n const comboboxElement = useMemo(() => {\n if (!comboboxConfig) {\n return null;\n }\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <ComboBox {...comboboxConfig} />\n );\n }, [comboboxConfig]);\n\n return useMemo(\n () => (\n <StyledFilter ref={filterRef}>\n <StyledFilterHead>\n {!isValidElement(headline) ? (\n <StyledFilterHeadline $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadline>\n ) : (\n <StyledFilterHeadlineElement $isSearchActive={isSearchActive}>\n {headline}\n </StyledFilterHeadlineElement>\n )}\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterIconWrapper>\n {rightIcons &&\n rightIcons.map(({ icons: rIcons, onClick }) => (\n <StyledFilterIcon\n onClick={onClick}\n $isOpen={false}\n $shouldShowRoundedHoverEffect={\n shouldShowRoundedHoverEffect\n }\n >\n <Icon icons={rIcons} size={18} />\n </StyledFilterIcon>\n ))}\n {iconElement}\n </StyledFilterIconWrapper>\n )}\n {type === FilterType.ONLY_SEARCH && searchConfig && (\n <StyledFilterSearch>\n <SearchInput\n onActiveChange={(isActive) => {\n setIsSearchActive(isActive);\n setIsOpen(isActive);\n }}\n ref={searchRef}\n isActive={isSearchActive}\n value={searchConfig.searchValue}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n />\n </StyledFilterSearch>\n )}\n {type === FilterType.ONLY_SORT && sortConfig && (\n <ContextMenu ref={contextMenuRef} items={sortItems}>\n {iconElement}\n </ContextMenu>\n )}\n {type === FilterType.ONLY_CHECKBOX && checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n {type === FilterType.ONLY_COMBOBOX && comboboxElement}\n </StyledFilterHead>\n {[FilterType.MULTIPLE, FilterType.ONLY_FILTER].includes(type) && (\n <StyledFilterContentWrapper ref={contentRef}>\n <ExpandableContent isOpen={isOpen}>\n <FilterContent\n shouldAutoFocus={shouldFocus}\n searchConfig={searchConfig}\n filterButtonConfig={filterButtonConfig}\n sortConfig={sortConfig}\n checkboxConfig={checkboxConfig}\n comboboxConfig={comboboxConfig}\n />\n </ExpandableContent>\n </StyledFilterContentWrapper>\n )}\n </StyledFilter>\n ),\n [\n headline,\n isSearchActive,\n type,\n rightIcons,\n iconElement,\n searchConfig,\n sortConfig,\n sortItems,\n checkboxConfig,\n isOpen,\n shouldFocus,\n filterButtonConfig,\n comboboxConfig,\n comboboxElement,\n shouldShowRoundedHoverEffect,\n ],\n );\n },\n);\n\nFilter.displayName = 'Filter';\n\nexport default Filter;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,8 @@ import Icon from '../../icon/Icon';
|
|
|
6
6
|
import FilterButtons from '../../filter-buttons/FilterButtons';
|
|
7
7
|
import ComboBox from '../../combobox/ComboBox';
|
|
8
8
|
import Checkbox from '../../checkbox/Checkbox';
|
|
9
|
+
import { Textstring, TextstringProvider, ttsToITextString } from '@chayns-components/textstring';
|
|
10
|
+
import textStrings from '../../../constants/textStrings';
|
|
9
11
|
const FilterContent = ({
|
|
10
12
|
searchConfig,
|
|
11
13
|
sortConfig,
|
|
@@ -17,6 +19,7 @@ const FilterContent = ({
|
|
|
17
19
|
const sortTextRef = useRef(null);
|
|
18
20
|
const searchRef = useRef(null);
|
|
19
21
|
const [sortTextWidth, setSortTextWidth] = useState(0);
|
|
22
|
+
const ts = textStrings.components.filter.filterContent;
|
|
20
23
|
const handleSelectSortItem = useCallback(item => {
|
|
21
24
|
if (!item) {
|
|
22
25
|
return;
|
|
@@ -42,10 +45,14 @@ const FilterContent = ({
|
|
|
42
45
|
searchRef.current?.focus();
|
|
43
46
|
}
|
|
44
47
|
}, [shouldAutoFocus]);
|
|
45
|
-
return useMemo(() => /*#__PURE__*/React.createElement(
|
|
48
|
+
return useMemo(() => /*#__PURE__*/React.createElement(TextstringProvider, {
|
|
49
|
+
libraryName: "@chayns-components-core"
|
|
50
|
+
}, /*#__PURE__*/React.createElement(StyledFilterContent, null, searchConfig && /*#__PURE__*/React.createElement(Input, {
|
|
46
51
|
ref: searchRef,
|
|
47
52
|
onChange: ev => searchConfig.onSearchChange(ev.target.value),
|
|
48
|
-
placeholder:
|
|
53
|
+
placeholder: /*#__PURE__*/React.createElement(Textstring, {
|
|
54
|
+
textstring: ttsToITextString(ts.input.placeholder)
|
|
55
|
+
}),
|
|
49
56
|
value: searchConfig.searchValue,
|
|
50
57
|
shouldShowClearIcon: searchConfig.searchValue.length > 0,
|
|
51
58
|
leftElement: /*#__PURE__*/React.createElement(Icon, {
|
|
@@ -53,7 +60,9 @@ const FilterContent = ({
|
|
|
53
60
|
})
|
|
54
61
|
}), filterButtonConfig && /*#__PURE__*/React.createElement(FilterButtons, filterButtonConfig), sortConfig && /*#__PURE__*/React.createElement(StyledFilterSort, null, /*#__PURE__*/React.createElement(StyledFilterSortText, {
|
|
55
62
|
ref: sortTextRef
|
|
56
|
-
},
|
|
63
|
+
}, /*#__PURE__*/React.createElement(Textstring, {
|
|
64
|
+
textstring: ttsToITextString(ts.sort)
|
|
65
|
+
})), /*#__PURE__*/React.createElement(StyledFilterComboboxWrapper, {
|
|
57
66
|
$textWidth: sortTextWidth
|
|
58
67
|
}, /*#__PURE__*/React.createElement(ComboBox, {
|
|
59
68
|
lists: [{
|
|
@@ -76,8 +85,8 @@ const FilterContent = ({
|
|
|
76
85
|
}, comboboxConfig)))), checkboxConfig &&
|
|
77
86
|
/*#__PURE__*/
|
|
78
87
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
79
|
-
React.createElement(Checkbox, checkboxConfig)), [checkboxConfig, comboboxConfig, filterButtonConfig, handleSelectSortItem, searchConfig, sortConfig, sortTextWidth]);
|
|
88
|
+
React.createElement(Checkbox, checkboxConfig))), [checkboxConfig, comboboxConfig, filterButtonConfig, handleSelectSortItem, searchConfig, sortConfig, sortTextWidth, ts.input.placeholder, ts.sort]);
|
|
80
89
|
};
|
|
81
90
|
FilterContent.displayName = 'FilterContent';
|
|
82
91
|
export default FilterContent;
|
|
83
|
-
//# sourceMappingURL=
|
|
92
|
+
//# sourceMappingURL=FilterContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterContent.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","StyledFilterComboboxInline","StyledFilterComboboxInlineComboboxWrapper","StyledFilterComboboxInlineLabel","StyledFilterComboboxWrapper","StyledFilterContent","StyledFilterSort","StyledFilterSortText","Input","Icon","FilterButtons","ComboBox","Checkbox","Textstring","TextstringProvider","ttsToITextString","textStrings","FilterContent","searchConfig","sortConfig","filterButtonConfig","checkboxConfig","comboboxConfig","shouldAutoFocus","sortTextRef","searchRef","sortTextWidth","setSortTextWidth","ts","components","filter","filterContent","handleSelectSortItem","item","text","value","onSortChange","id","current","clientWidth","focus","createElement","libraryName","ref","onChange","ev","onSearchChange","target","placeholder","textstring","input","searchValue","shouldShowClearIcon","length","leftElement","icons","sort","$textWidth","lists","list","items","map","selectedItem","onSelect","label","_extends","shouldUseCurrentItemWidth","displayName"],"sources":["../../../../../src/components/filter/filter-content/FilterContent.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n StyledFilterComboboxInline,\n StyledFilterComboboxInlineComboboxWrapper,\n StyledFilterComboboxInlineLabel,\n StyledFilterComboboxWrapper,\n StyledFilterContent,\n StyledFilterSort,\n StyledFilterSortText,\n} from './FilterContent.styles';\nimport Input, { InputRef } from '../../input/Input';\nimport Icon from '../../icon/Icon';\nimport FilterButtons from '../../filter-buttons/FilterButtons';\nimport {\n CheckboxConfig,\n ComboboxConfig,\n FilterButtonConfig,\n SearchConfig,\n SortConfig,\n} from '../../../types/filter';\nimport ComboBox from '../../combobox/ComboBox';\nimport Checkbox from '../../checkbox/Checkbox';\nimport { IComboBoxItem } from '../../combobox/ComboBox.types';\nimport { Textstring, TextstringProvider, ttsToITextString } from '@chayns-components/textstring';\nimport textStrings from '../../../constants/textStrings';\n\nexport type FilterContentProps = {\n searchConfig?: SearchConfig;\n filterButtonConfig?: FilterButtonConfig;\n sortConfig?: SortConfig;\n checkboxConfig?: CheckboxConfig;\n comboboxConfig?: ComboboxConfig;\n shouldAutoFocus: boolean;\n};\n\nconst FilterContent: FC<FilterContentProps> = ({\n searchConfig,\n sortConfig,\n filterButtonConfig,\n checkboxConfig,\n comboboxConfig,\n shouldAutoFocus,\n}) => {\n const sortTextRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<InputRef>(null);\n\n const [sortTextWidth, setSortTextWidth] = useState(0);\n\n const ts = textStrings.components.filter.filterContent;\n\n const handleSelectSortItem = useCallback(\n (item: IComboBoxItem | undefined) => {\n if (!item) {\n return;\n }\n\n const { text, value } = item;\n\n if (sortConfig) {\n sortConfig.onSortChange({ text, id: value });\n }\n },\n [sortConfig],\n );\n\n useEffect(() => {\n if (sortTextRef.current) {\n setSortTextWidth(sortTextRef.current.clientWidth + 20);\n }\n }, []);\n\n useEffect(() => {\n if (shouldAutoFocus) {\n searchRef.current?.focus();\n }\n }, [shouldAutoFocus]);\n\n return useMemo(\n () => (\n <TextstringProvider libraryName=\"@chayns-components-core\">\n <StyledFilterContent>\n {searchConfig && (\n <Input\n ref={searchRef}\n onChange={(ev) => searchConfig.onSearchChange(ev.target.value)}\n placeholder={\n <Textstring textstring={ttsToITextString(ts.input.placeholder)} />\n }\n value={searchConfig.searchValue}\n shouldShowClearIcon={searchConfig.searchValue.length > 0}\n leftElement={<Icon icons={['fa fa-search']} />}\n />\n )}\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n {filterButtonConfig && <FilterButtons {...filterButtonConfig} />}\n {sortConfig && (\n <StyledFilterSort>\n <StyledFilterSortText ref={sortTextRef}>\n <Textstring textstring={ttsToITextString(ts.sort)} />\n </StyledFilterSortText>\n <StyledFilterComboboxWrapper $textWidth={sortTextWidth}>\n <ComboBox\n lists={[\n {\n list: sortConfig.items.map(({ text, id }) => ({\n text,\n value: id,\n })),\n },\n ]}\n placeholder=\"\"\n selectedItem={{\n text: sortConfig.selectedItem.text,\n value: sortConfig.selectedItem.id,\n }}\n onSelect={handleSelectSortItem}\n />\n </StyledFilterComboboxWrapper>\n </StyledFilterSort>\n )}\n {comboboxConfig && (\n <StyledFilterComboboxInline>\n <StyledFilterComboboxInlineLabel>\n {comboboxConfig.label}\n </StyledFilterComboboxInlineLabel>\n <StyledFilterComboboxInlineComboboxWrapper>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <ComboBox shouldUseCurrentItemWidth {...comboboxConfig} />\n </StyledFilterComboboxInlineComboboxWrapper>\n </StyledFilterComboboxInline>\n )}\n {checkboxConfig && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Checkbox {...checkboxConfig} />\n )}\n </StyledFilterContent>\n </TextstringProvider>\n ),\n [\n checkboxConfig,\n comboboxConfig,\n filterButtonConfig,\n handleSelectSortItem,\n searchConfig,\n sortConfig,\n sortTextWidth,\n ts.input.placeholder,\n ts.sort,\n ],\n );\n};\n\nFilterContent.displayName = 'FilterContent';\n\nexport default FilterContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,8 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
2
2
|
import { FilterButtonItemShape, FilterButtonSize } from '../../types/filterButtons';
|
|
3
3
|
import FilterButton from './filter-button/FilterButton';
|
|
4
4
|
import { StyledFilterButton } from './FilterButtons.styles';
|
|
5
|
+
import { AllButton } from './all-button/AllButton';
|
|
6
|
+
import { TextstringProvider } from '@chayns-components/textstring';
|
|
5
7
|
const FilterButtons = ({
|
|
6
8
|
allCount,
|
|
7
9
|
selectedItemIds,
|
|
@@ -47,16 +49,14 @@ const FilterButtons = ({
|
|
|
47
49
|
if (typeof allButtonCount !== 'number' && shouldCalcCountForAll) {
|
|
48
50
|
allButtonCount = items.reduce((acc, item) => acc + (item.count || 0), 0);
|
|
49
51
|
}
|
|
50
|
-
const array = [/*#__PURE__*/React.createElement(
|
|
52
|
+
const array = [/*#__PURE__*/React.createElement(TextstringProvider, {
|
|
53
|
+
libraryName: "@chayns-components-core"
|
|
54
|
+
}, /*#__PURE__*/React.createElement(AllButton, {
|
|
51
55
|
count: allButtonCount,
|
|
52
|
-
id: "all",
|
|
53
|
-
key: "all",
|
|
54
|
-
onSelect: handleSelect,
|
|
55
56
|
isSelected: selectedIds.includes('all') || Array.isArray(selectedIds) && selectedIds.length === 0,
|
|
56
|
-
shape: FilterButtonItemShape.Rectangular,
|
|
57
57
|
size: size,
|
|
58
|
-
|
|
59
|
-
})];
|
|
58
|
+
onSelect: handleSelect
|
|
59
|
+
}))];
|
|
60
60
|
items.forEach(({
|
|
61
61
|
icons,
|
|
62
62
|
text,
|