@chayns-components/core 5.0.0-beta.585 → 5.0.0-beta.589
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/amount-control/AmountControl.js +11 -7
- package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
- package/lib/cjs/components/amount-control/AmountControl.styles.js +3 -0
- package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/cjs/components/checkbox/Checkbox.js +4 -1
- package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/lib/cjs/components/checkbox/Checkbox.styles.js +18 -10
- package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +1 -0
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.js +3 -4
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/combobox/combobox-item/ComboBoxItem.js +5 -4
- package/lib/cjs/components/combobox/combobox-item/ComboBoxItem.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.js +3 -5
- package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/cjs/components/input/Input.js +19 -8
- package/lib/cjs/components/input/Input.js.map +1 -1
- package/lib/cjs/components/input/Input.styles.js +4 -1
- package/lib/cjs/components/input/Input.styles.js.map +1 -1
- package/lib/cjs/components/number-input/NumberInput.js +18 -0
- package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
- package/lib/cjs/components/popup/Popup.js +15 -16
- package/lib/cjs/components/popup/Popup.js.map +1 -1
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.js +3 -1
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.js.map +1 -1
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +4 -0
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
- package/lib/cjs/components/progress-bar/ProgressBar.js +4 -2
- package/lib/cjs/components/progress-bar/ProgressBar.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.js +6 -7
- package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.styles.js +3 -0
- package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js +1 -8
- package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
- package/lib/cjs/components/scroll-view/ScrollView.styles.js +3 -1
- package/lib/cjs/components/scroll-view/ScrollView.styles.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.js +6 -1
- package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
- package/lib/cjs/components/search-box/group-name/GroupName.styles.js +4 -0
- package/lib/cjs/components/search-box/group-name/GroupName.styles.js.map +1 -1
- package/lib/cjs/components/search-input/SearchInput.styles.js +0 -1
- package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.js +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/cjs/components/signature/Signature.js +1 -0
- package/lib/cjs/components/signature/Signature.js.map +1 -1
- package/lib/cjs/components/signature/Signature.styles.js +10 -3
- package/lib/cjs/components/signature/Signature.styles.js.map +1 -1
- package/lib/cjs/components/slider/Slider.js +24 -8
- package/lib/cjs/components/slider/Slider.js.map +1 -1
- package/lib/cjs/components/slider/Slider.styles.js +4 -1
- package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js +5 -3
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/small-wait-cursor/SmallWaitCursor.styles.js +1 -1
- package/lib/cjs/components/small-wait-cursor/SmallWaitCursor.styles.js.map +1 -1
- package/lib/cjs/hooks/useElementSize.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/utils/environment.js +33 -0
- package/lib/cjs/utils/environment.js.map +1 -0
- package/lib/cjs/utils/font.js +14 -1
- package/lib/cjs/utils/font.js.map +1 -1
- package/lib/cjs/utils/numberInput.js +9 -1
- package/lib/cjs/utils/numberInput.js.map +1 -1
- package/lib/cjs/utils/searchBox.js +11 -0
- package/lib/cjs/utils/searchBox.js.map +1 -1
- package/lib/cjs/utils/slider.js +22 -1
- package/lib/cjs/utils/slider.js.map +1 -1
- package/lib/cjs/utils/sliderButton.js +2 -0
- package/lib/cjs/utils/sliderButton.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.js +11 -7
- package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.styles.js +14 -8
- package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/esm/components/checkbox/Checkbox.js +4 -1
- package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
- package/lib/esm/components/checkbox/Checkbox.styles.js +35 -27
- package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +2 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.js +3 -4
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/combobox/combobox-item/ComboBoxItem.js +5 -4
- package/lib/esm/components/combobox/combobox-item/ComboBoxItem.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js +3 -5
- package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/esm/components/input/Input.js +19 -8
- package/lib/esm/components/input/Input.js.map +1 -1
- package/lib/esm/components/input/Input.styles.js +13 -7
- package/lib/esm/components/input/Input.styles.js.map +1 -1
- package/lib/esm/components/number-input/NumberInput.js +18 -0
- package/lib/esm/components/number-input/NumberInput.js.map +1 -1
- package/lib/esm/components/popup/Popup.js +13 -13
- package/lib/esm/components/popup/Popup.js.map +1 -1
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.js +3 -1
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.js.map +1 -1
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +4 -0
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
- package/lib/esm/components/progress-bar/ProgressBar.js +4 -2
- package/lib/esm/components/progress-bar/ProgressBar.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.js +6 -7
- package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.styles.js +6 -0
- package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js +1 -8
- package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
- package/lib/esm/components/scroll-view/ScrollView.styles.js +3 -1
- package/lib/esm/components/scroll-view/ScrollView.styles.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.js +6 -1
- package/lib/esm/components/search-box/SearchBox.js.map +1 -1
- package/lib/esm/components/search-box/group-name/GroupName.styles.js +11 -4
- package/lib/esm/components/search-box/group-name/GroupName.styles.js.map +1 -1
- package/lib/esm/components/search-input/SearchInput.styles.js +0 -1
- package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.js +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/esm/components/signature/Signature.js +1 -0
- package/lib/esm/components/signature/Signature.js.map +1 -1
- package/lib/esm/components/signature/Signature.styles.js +11 -2
- package/lib/esm/components/signature/Signature.styles.js.map +1 -1
- package/lib/esm/components/slider/Slider.js +25 -9
- package/lib/esm/components/slider/Slider.js.map +1 -1
- package/lib/esm/components/slider/Slider.styles.js +4 -1
- package/lib/esm/components/slider/Slider.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +5 -3
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/small-wait-cursor/SmallWaitCursor.styles.js +1 -1
- package/lib/esm/components/small-wait-cursor/SmallWaitCursor.styles.js.map +1 -1
- package/lib/esm/hooks/useElementSize.js.map +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/utils/environment.js +24 -0
- package/lib/esm/utils/environment.js.map +1 -0
- package/lib/esm/utils/font.js +12 -0
- package/lib/esm/utils/font.js.map +1 -1
- package/lib/esm/utils/numberInput.js +9 -1
- package/lib/esm/utils/numberInput.js.map +1 -1
- package/lib/esm/utils/searchBox.js +11 -0
- package/lib/esm/utils/searchBox.js.map +1 -1
- package/lib/esm/utils/slider.js +21 -0
- package/lib/esm/utils/slider.js.map +1 -1
- package/lib/esm/utils/sliderButton.js +2 -0
- package/lib/esm/utils/sliderButton.js.map +1 -1
- package/lib/types/components/amount-control/AmountControl.d.ts +4 -0
- package/lib/types/components/checkbox/Checkbox.styles.d.ts +5 -1
- package/lib/types/components/input/Input.d.ts +4 -0
- package/lib/types/components/input/Input.styles.d.ts +1 -0
- package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.d.ts +1 -0
- package/lib/types/components/radio-button/RadioButton.styles.d.ts +4 -2
- package/lib/types/components/radio-button/radio-button-group/RadioButtonGroup.d.ts +1 -2
- package/lib/types/components/signature/Signature.styles.d.ts +3 -1
- package/lib/types/components/slider/Slider.styles.d.ts +5 -2
- package/lib/types/hooks/useElementSize.d.ts +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/utils/environment.d.ts +9 -0
- package/lib/types/utils/font.d.ts +1 -0
- package/lib/types/utils/slider.d.ts +6 -0
- package/package.json +2 -2
|
@@ -17,6 +17,7 @@ const AmountControl = ({
|
|
|
17
17
|
icon,
|
|
18
18
|
shouldShowIcon = true,
|
|
19
19
|
label,
|
|
20
|
+
iconColor,
|
|
20
21
|
maxAmount,
|
|
21
22
|
onChange
|
|
22
23
|
}) => {
|
|
@@ -94,11 +95,14 @@ const AmountControl = ({
|
|
|
94
95
|
}
|
|
95
96
|
}, [inputValue]);
|
|
96
97
|
const handleInputChange = (0, _react.useCallback)(event => {
|
|
97
|
-
const
|
|
98
|
+
const {
|
|
99
|
+
value
|
|
100
|
+
} = event.target;
|
|
101
|
+
const valueBeforeCheck = Number(value.replace(/\D/g, ''));
|
|
98
102
|
const checkedValue = (0, _amountControl.checkForValidAmount)({
|
|
99
103
|
minAmount,
|
|
100
104
|
maxAmount,
|
|
101
|
-
amount:
|
|
105
|
+
amount: valueBeforeCheck
|
|
102
106
|
});
|
|
103
107
|
if (valueBeforeCheck < minAmount && minAmount === 0) {
|
|
104
108
|
setInputValue('0');
|
|
@@ -112,7 +116,8 @@ const AmountControl = ({
|
|
|
112
116
|
case 'default':
|
|
113
117
|
item = /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
114
118
|
icons: [icon ?? 'fa fa-cart-shopping'],
|
|
115
|
-
size: 15
|
|
119
|
+
size: 15,
|
|
120
|
+
color: iconColor
|
|
116
121
|
});
|
|
117
122
|
break;
|
|
118
123
|
case 'delete':
|
|
@@ -139,7 +144,7 @@ const AmountControl = ({
|
|
|
139
144
|
break;
|
|
140
145
|
}
|
|
141
146
|
return item;
|
|
142
|
-
}, [displayState, icon]);
|
|
147
|
+
}, [displayState, icon, iconColor]);
|
|
143
148
|
const shouldShowLeftIcon = (0, _react.useMemo)(() => {
|
|
144
149
|
if (shouldShowIcon) {
|
|
145
150
|
return true;
|
|
@@ -180,8 +185,7 @@ const AmountControl = ({
|
|
|
180
185
|
$hasFocus: hasFocus,
|
|
181
186
|
onBlur: handleInputBlur,
|
|
182
187
|
onChange: handleInputChange,
|
|
183
|
-
value: displayState === 'default' && label ? label : inputValue
|
|
184
|
-
type: amountValue === 0 ? 'text' : 'number'
|
|
188
|
+
value: displayState === 'default' && label ? label : inputValue
|
|
185
189
|
}), /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
|
|
186
190
|
initial: false
|
|
187
191
|
}, displayState === 'normal' && /*#__PURE__*/_react.default.createElement(_AmountControl.StyledMotionAmountControlButton, {
|
|
@@ -212,7 +216,7 @@ const AmountControl = ({
|
|
|
212
216
|
icons: ['fa fa-plus'],
|
|
213
217
|
size: 15,
|
|
214
218
|
color: "green"
|
|
215
|
-
})))), [amountValue, displayState, handleFirstAmount, handleInputBlur, handleInputChange, inputValue, label, leftIcon, maxAmount, shouldShowIcon, shouldShowLeftIcon]);
|
|
219
|
+
})))), [amountValue, displayState, handleFirstAmount, handleInputBlur, handleInputChange, hasFocus, inputValue, label, leftIcon, maxAmount, shouldShowIcon, shouldShowLeftIcon]);
|
|
216
220
|
};
|
|
217
221
|
AmountControl.displayName = 'AmountControl';
|
|
218
222
|
var _default = exports.default = AmountControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountControl.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_amountControl","_Icon","_interopRequireDefault","_AmountControl","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AmountControl","amount","icon","shouldShowIcon","label","maxAmount","onChange","amountValue","setAmountValue","useState","inputValue","setInputValue","displayState","setDisplayState","minAmount","useEffect","hasFocus","useMemo","checkForValidAmount","toString","handleAmountAdd","prevState","Number","handleAmountRemove","handleFirstAmount","useCallback","handleInputBlur","handleInputChange","event","valueBeforeCheck","target","value","checkedValue","leftIcon","item","createElement","icons","size","color","shouldShowLeftIcon","StyledAmountControl","onClick","AnimatePresence","initial","StyledMotionAmountControlButton","key","width","opacity","padding","animate","exit","transition","duration","type","disabled","$isDisabled","StyledAmountControlInput","$displayState","$shouldShowIcon","$hasFocus","onBlur","displayName","_default","exports"],"sources":["../../../../src/components/amount-control/AmountControl.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, {\n ChangeEvent,\n FC,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { checkForValidAmount } from '../../utils/amountControl';\nimport Icon from '../icon/Icon';\nimport {\n StyledAmountControl,\n StyledAmountControlInput,\n StyledMotionAmountControlButton,\n} from './AmountControl.styles';\n\nexport type DisplayState = 'default' | 'delete' | 'normal' | 'maxAmount';\n\nexport type AmountControlProps = {\n /**\n * The amount that should be displayed.\n */\n amount?: number;\n /**\n * The icon that should be displayed if no amount is selected.\n */\n icon?: string;\n /**\n * A Text that should be displayed, if no amount is selected;\n */\n label?: string;\n /**\n * The maximum allowed amount. If the maxAmount is set to one, a delete button is displayed on the left side.\n */\n maxAmount?: number;\n /**\n * A Function that is executed when the amount is changed\n */\n onChange?: (amount: number) => void;\n /**\n * Whether the icon should be displayed if no amount is selected\n */\n shouldShowIcon?: boolean;\n};\n\nconst AmountControl: FC<AmountControlProps> = ({\n amount,\n icon,\n shouldShowIcon = true,\n label,\n maxAmount,\n onChange,\n}) => {\n const [amountValue, setAmountValue] = useState(0);\n const [inputValue, setInputValue] = useState('0');\n const [displayState, setDisplayState] = useState<DisplayState>('default');\n\n const minAmount = 0;\n\n /**\n * This function controls the displayState\n */\n useEffect(() => {\n switch (true) {\n case maxAmount === 1 && amountValue === 1:\n setDisplayState('delete');\n return;\n case maxAmount && amountValue >= maxAmount:\n setDisplayState('maxAmount');\n return;\n case amountValue > 0:\n setDisplayState('normal');\n return;\n default:\n setDisplayState('default');\n }\n }, [amountValue, maxAmount]);\n\n const hasFocus = useMemo(() => displayState !== 'default', [displayState]);\n\n /**\n * Function that sets the amountValue to the amount\n */\n useEffect(() => {\n if (!amount) {\n return;\n }\n\n setAmountValue(checkForValidAmount({ amount, maxAmount, minAmount }));\n setInputValue(checkForValidAmount({ amount, maxAmount, minAmount }).toString());\n }, [amount, maxAmount, minAmount]);\n\n /**\n * Function that updates the onChange event\n */\n useEffect(() => {\n if (onChange) {\n onChange(amountValue);\n }\n }, [amountValue, onChange]);\n\n const handleAmountAdd = () => {\n setAmountValue((prevState) => prevState + 1);\n setInputValue((prevState) => (Number(prevState) + 1).toString());\n };\n\n const handleAmountRemove = () => {\n setAmountValue((prevState) => prevState - 1);\n setInputValue((prevState) => (Number(prevState) - 1).toString());\n };\n\n const handleFirstAmount = useCallback(() => {\n if (amountValue !== 0) {\n return;\n }\n\n setAmountValue(1);\n setInputValue('1');\n }, [amountValue]);\n\n const handleInputBlur = useCallback(() => {\n setAmountValue(inputValue === '' ? 0 : Number(inputValue));\n\n if (inputValue === '') {\n setInputValue('0');\n }\n }, [inputValue]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const valueBeforeCheck = Number(event.target.value);\n\n const checkedValue = checkForValidAmount({\n minAmount,\n maxAmount,\n amount: Number(event.target.value),\n });\n\n if (valueBeforeCheck < minAmount && minAmount === 0) {\n setInputValue('0');\n\n return;\n }\n\n setInputValue(checkedValue === 0 ? '' : checkedValue.toString());\n },\n [maxAmount, minAmount],\n );\n\n const leftIcon = useMemo(() => {\n let item: ReactElement | null = null;\n\n switch (displayState) {\n case 'default':\n item = <Icon icons={[icon ?? 'fa fa-cart-shopping']} size={15} />;\n break;\n case 'delete':\n item = <Icon icons={['fa ts-trash']} size={25} />;\n break;\n case 'normal':\n item = <Icon icons={['fa fa-minus']} size={15} color=\"red\" />;\n break;\n case 'maxAmount':\n item = <Icon icons={['fa fa-minus']} size={15} color=\"red\" />;\n break;\n default:\n break;\n }\n\n return item;\n }, [displayState, icon]);\n\n const shouldShowLeftIcon = useMemo(() => {\n if (shouldShowIcon) {\n return true;\n }\n\n return !(displayState === 'default' && !shouldShowIcon);\n }, [displayState, shouldShowIcon]);\n\n return useMemo(\n () => (\n <StyledAmountControl onClick={handleFirstAmount}>\n <AnimatePresence initial={false}>\n {shouldShowLeftIcon && (\n <StyledMotionAmountControlButton\n key=\"right_button\"\n initial={{ width: 0, opacity: 0, padding: 0 }}\n animate={{ width: 40, opacity: 1, padding: 0 }}\n exit={{ width: 0, opacity: 0, padding: 0 }}\n transition={{ duration: 0.2, type: 'tween' }}\n onClick={handleAmountRemove}\n disabled={amountValue !== 0 && amountValue <= minAmount}\n $isDisabled={amountValue !== 0 && amountValue <= minAmount}\n >\n {leftIcon}\n </StyledMotionAmountControlButton>\n )}\n </AnimatePresence>\n <StyledAmountControlInput\n $displayState={displayState}\n $shouldShowIcon={shouldShowIcon}\n $hasFocus={hasFocus}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n value={displayState === 'default' && label ? label : inputValue}\n type={amountValue === 0 ? 'text' : 'number'}\n />\n <AnimatePresence initial={false}>\n {displayState === 'normal' && (\n <StyledMotionAmountControlButton\n key=\"right_button\"\n initial={{ width: 0, opacity: 0, padding: 0 }}\n animate={{ width: 40, opacity: 1, padding: 0 }}\n exit={{ width: 0, opacity: 0, padding: 0 }}\n transition={{ duration: 0.2, type: 'tween' }}\n onClick={handleAmountAdd}\n disabled={maxAmount ? amountValue >= maxAmount : false}\n $isDisabled={maxAmount ? amountValue >= maxAmount : false}\n >\n <Icon icons={['fa fa-plus']} size={15} color=\"green\" />\n </StyledMotionAmountControlButton>\n )}\n </AnimatePresence>\n </StyledAmountControl>\n ),\n [\n amountValue,\n displayState,\n handleFirstAmount,\n handleInputBlur,\n handleInputChange,\n inputValue,\n label,\n leftIcon,\n maxAmount,\n shouldShowIcon,\n shouldShowLeftIcon,\n ],\n );\n};\n\nAmountControl.displayName = 'AmountControl';\n\nexport default AmountControl;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AmountControl.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_amountControl","_Icon","_interopRequireDefault","_AmountControl","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AmountControl","amount","icon","shouldShowIcon","label","iconColor","maxAmount","onChange","amountValue","setAmountValue","useState","inputValue","setInputValue","displayState","setDisplayState","minAmount","useEffect","hasFocus","useMemo","checkForValidAmount","toString","handleAmountAdd","prevState","Number","handleAmountRemove","handleFirstAmount","useCallback","handleInputBlur","handleInputChange","event","value","target","valueBeforeCheck","replace","checkedValue","leftIcon","item","createElement","icons","size","color","shouldShowLeftIcon","StyledAmountControl","onClick","AnimatePresence","initial","StyledMotionAmountControlButton","key","width","opacity","padding","animate","exit","transition","duration","type","disabled","$isDisabled","StyledAmountControlInput","$displayState","$shouldShowIcon","$hasFocus","onBlur","displayName","_default","exports"],"sources":["../../../../src/components/amount-control/AmountControl.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, {\n ChangeEvent,\n FC,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { checkForValidAmount } from '../../utils/amountControl';\nimport Icon from '../icon/Icon';\nimport {\n StyledAmountControl,\n StyledAmountControlInput,\n StyledMotionAmountControlButton,\n} from './AmountControl.styles';\n\nexport type DisplayState = 'default' | 'delete' | 'normal' | 'maxAmount';\n\nexport type AmountControlProps = {\n /**\n * The amount that should be displayed.\n */\n amount?: number;\n /**\n * The icon that should be displayed if no amount is selected.\n */\n icon?: string;\n /**\n * The color of the icon.\n */\n iconColor?: string;\n /**\n * A Text that should be displayed, if no amount is selected;\n */\n label?: string;\n /**\n * The maximum allowed amount. If the maxAmount is set to one, a delete button is displayed on the left side.\n */\n maxAmount?: number;\n /**\n * A Function that is executed when the amount is changed\n */\n onChange?: (amount: number) => void;\n /**\n * Whether the icon should be displayed if no amount is selected\n */\n shouldShowIcon?: boolean;\n};\n\nconst AmountControl: FC<AmountControlProps> = ({\n amount,\n icon,\n shouldShowIcon = true,\n label,\n iconColor,\n maxAmount,\n onChange,\n}) => {\n const [amountValue, setAmountValue] = useState(0);\n const [inputValue, setInputValue] = useState('0');\n const [displayState, setDisplayState] = useState<DisplayState>('default');\n\n const minAmount = 0;\n\n /**\n * This function controls the displayState\n */\n useEffect(() => {\n switch (true) {\n case maxAmount === 1 && amountValue === 1:\n setDisplayState('delete');\n return;\n case maxAmount && amountValue >= maxAmount:\n setDisplayState('maxAmount');\n return;\n case amountValue > 0:\n setDisplayState('normal');\n return;\n default:\n setDisplayState('default');\n }\n }, [amountValue, maxAmount]);\n\n const hasFocus = useMemo(() => displayState !== 'default', [displayState]);\n\n /**\n * Function that sets the amountValue to the amount\n */\n useEffect(() => {\n if (!amount) {\n return;\n }\n\n setAmountValue(checkForValidAmount({ amount, maxAmount, minAmount }));\n setInputValue(checkForValidAmount({ amount, maxAmount, minAmount }).toString());\n }, [amount, maxAmount, minAmount]);\n\n /**\n * Function that updates the onChange event\n */\n useEffect(() => {\n if (onChange) {\n onChange(amountValue);\n }\n }, [amountValue, onChange]);\n\n const handleAmountAdd = () => {\n setAmountValue((prevState) => prevState + 1);\n setInputValue((prevState) => (Number(prevState) + 1).toString());\n };\n\n const handleAmountRemove = () => {\n setAmountValue((prevState) => prevState - 1);\n setInputValue((prevState) => (Number(prevState) - 1).toString());\n };\n\n const handleFirstAmount = useCallback(() => {\n if (amountValue !== 0) {\n return;\n }\n\n setAmountValue(1);\n setInputValue('1');\n }, [amountValue]);\n\n const handleInputBlur = useCallback(() => {\n setAmountValue(inputValue === '' ? 0 : Number(inputValue));\n\n if (inputValue === '') {\n setInputValue('0');\n }\n }, [inputValue]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target;\n\n const valueBeforeCheck = Number(value.replace(/\\D/g, ''));\n\n const checkedValue = checkForValidAmount({\n minAmount,\n maxAmount,\n amount: valueBeforeCheck,\n });\n\n if (valueBeforeCheck < minAmount && minAmount === 0) {\n setInputValue('0');\n\n return;\n }\n\n setInputValue(checkedValue === 0 ? '' : checkedValue.toString());\n },\n [maxAmount, minAmount],\n );\n\n const leftIcon = useMemo(() => {\n let item: ReactElement | null = null;\n\n switch (displayState) {\n case 'default':\n item = <Icon icons={[icon ?? 'fa fa-cart-shopping']} size={15} color={iconColor} />;\n break;\n case 'delete':\n item = <Icon icons={['fa ts-trash']} size={25} />;\n break;\n case 'normal':\n item = <Icon icons={['fa fa-minus']} size={15} color=\"red\" />;\n break;\n case 'maxAmount':\n item = <Icon icons={['fa fa-minus']} size={15} color=\"red\" />;\n break;\n default:\n break;\n }\n\n return item;\n }, [displayState, icon, iconColor]);\n\n const shouldShowLeftIcon = useMemo(() => {\n if (shouldShowIcon) {\n return true;\n }\n\n return !(displayState === 'default' && !shouldShowIcon);\n }, [displayState, shouldShowIcon]);\n\n return useMemo(\n () => (\n <StyledAmountControl onClick={handleFirstAmount}>\n <AnimatePresence initial={false}>\n {shouldShowLeftIcon && (\n <StyledMotionAmountControlButton\n key=\"right_button\"\n initial={{ width: 0, opacity: 0, padding: 0 }}\n animate={{ width: 40, opacity: 1, padding: 0 }}\n exit={{ width: 0, opacity: 0, padding: 0 }}\n transition={{ duration: 0.2, type: 'tween' }}\n onClick={handleAmountRemove}\n disabled={amountValue !== 0 && amountValue <= minAmount}\n $isDisabled={amountValue !== 0 && amountValue <= minAmount}\n >\n {leftIcon}\n </StyledMotionAmountControlButton>\n )}\n </AnimatePresence>\n <StyledAmountControlInput\n $displayState={displayState}\n $shouldShowIcon={shouldShowIcon}\n $hasFocus={hasFocus}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n value={displayState === 'default' && label ? label : inputValue}\n />\n <AnimatePresence initial={false}>\n {displayState === 'normal' && (\n <StyledMotionAmountControlButton\n key=\"right_button\"\n initial={{ width: 0, opacity: 0, padding: 0 }}\n animate={{ width: 40, opacity: 1, padding: 0 }}\n exit={{ width: 0, opacity: 0, padding: 0 }}\n transition={{ duration: 0.2, type: 'tween' }}\n onClick={handleAmountAdd}\n disabled={maxAmount ? amountValue >= maxAmount : false}\n $isDisabled={maxAmount ? amountValue >= maxAmount : false}\n >\n <Icon icons={['fa fa-plus']} size={15} color=\"green\" />\n </StyledMotionAmountControlButton>\n )}\n </AnimatePresence>\n </StyledAmountControl>\n ),\n [\n amountValue,\n displayState,\n handleFirstAmount,\n handleInputBlur,\n handleInputChange,\n hasFocus,\n inputValue,\n label,\n leftIcon,\n maxAmount,\n shouldShowIcon,\n shouldShowLeftIcon,\n ],\n );\n};\n\nAmountControl.displayName = 'AmountControl';\n\nexport default AmountControl;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountControl.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","StyledAmountControl","exports","styled","div","theme","StyledAmountControlInput","input","$hasFocus","$displayState","css","$shouldShowIcon","StyledMotionAmountControlButton","motion","button","$isDisabled"],"sources":["../../../../src/components/amount-control/AmountControl.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport type { DisplayState } from './AmountControl';\n\ntype StyledAmountControlProps = WithTheme<unknown>;\n\nexport const StyledAmountControl = styled.div<StyledAmountControlProps>`\n background-color: ${({ theme }: StyledAmountControlProps) => theme['202']};\n display: flex;\n width: fit-content;\n border-radius: 3px;\n`;\n\ntype StyledAmountControlInputProps = WithTheme<{\n $displayState: DisplayState;\n $shouldShowIcon: boolean;\n $hasFocus: boolean;\n}>;\n\nexport const StyledAmountControlInput = styled.input<StyledAmountControlInputProps>`\n background-color: ${({ theme }: StyledAmountControlInputProps) => theme['202']};\n border: none;\n height: 28px;\n width: 95px;\n text-align: center;\n cursor: ${({ $hasFocus }) => ($hasFocus ? 'text' : 'pointer')};\n\n ${({ $displayState }) =>\n $displayState !== 'normal' &&\n css`\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n `}\n ${({ $displayState, $shouldShowIcon }) =>\n $displayState === 'default' &&\n !$shouldShowIcon &&\n css`\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n `};\n`;\n\ntype StyledAmountControlButtonProps = WithTheme<{\n $isDisabled: boolean;\n}>;\n\nexport const StyledMotionAmountControlButton = styled(\n motion.button,\n)<StyledAmountControlButtonProps>`\n overflow: hidden;\n background-color: rgba(255, 255, 255, 0.2);\n height: 28px;\n width: 40px;\n\n ${({ $isDisabled }) =>\n $isDisabled &&\n css`\n opacity: 0.5;\n `}\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAMzC,MAAMW,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAA8B;AACxE,wBAAwB,CAAC;EAAEC;AAAgC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AAC9E;AACA;AACA;AACA,CAAC;AAQM,MAAMC,wBAAwB,GAAAJ,OAAA,CAAAI,wBAAA,GAAGH,yBAAM,CAACI,KAAqC;AACpF,wBAAwB,CAAC;EAAEF;AAAqC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACnF;AACA;AACA;AACA;AACA,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AmountControl.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","StyledAmountControl","exports","styled","div","theme","StyledAmountControlInput","input","text","$hasFocus","$displayState","css","$shouldShowIcon","StyledMotionAmountControlButton","motion","button","$isDisabled"],"sources":["../../../../src/components/amount-control/AmountControl.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport type { DisplayState } from './AmountControl';\n\ntype StyledAmountControlProps = WithTheme<unknown>;\n\nexport const StyledAmountControl = styled.div<StyledAmountControlProps>`\n background-color: ${({ theme }: StyledAmountControlProps) => theme['202']};\n display: flex;\n width: fit-content;\n border-radius: 3px;\n`;\n\ntype StyledAmountControlInputProps = WithTheme<{\n $displayState: DisplayState;\n $shouldShowIcon: boolean;\n $hasFocus: boolean;\n}>;\n\nexport const StyledAmountControlInput = styled.input<StyledAmountControlInputProps>`\n background-color: ${({ theme }: StyledAmountControlInputProps) => theme['202']};\n color: ${({ theme }: StyledAmountControlInputProps) => theme.text};\n border: none;\n height: 28px;\n width: 95px;\n text-align: center;\n cursor: ${({ $hasFocus }) => ($hasFocus ? 'text' : 'pointer')};\n\n ${({ $displayState }) =>\n $displayState !== 'normal' &&\n css`\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n `}\n ${({ $displayState, $shouldShowIcon }) =>\n $displayState === 'default' &&\n !$shouldShowIcon &&\n css`\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n `};\n`;\n\ntype StyledAmountControlButtonProps = WithTheme<{\n $isDisabled: boolean;\n}>;\n\nexport const StyledMotionAmountControlButton = styled(\n motion.button,\n)<StyledAmountControlButtonProps>`\n overflow: hidden;\n background-color: rgba(255, 255, 255, 0.2);\n height: 28px;\n width: 40px;\n\n ${({ $isDisabled }) =>\n $isDisabled &&\n css`\n opacity: 0.5;\n `}\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAMzC,MAAMW,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAA8B;AACxE,wBAAwB,CAAC;EAAEC;AAAgC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AAC9E;AACA;AACA;AACA,CAAC;AAQM,MAAMC,wBAAwB,GAAAJ,OAAA,CAAAI,wBAAA,GAAGH,yBAAM,CAACI,KAAqC;AACpF,wBAAwB,CAAC;EAAEF;AAAqC,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACnF,aAAa,CAAC;EAAEA;AAAqC,CAAC,KAAKA,KAAK,CAACG,IAAK;AACtE;AACA;AACA;AACA;AACA,cAAc,CAAC;EAAEC;AAAU,CAAC,KAAMA,SAAS,GAAG,MAAM,GAAG,SAAW;AAClE;AACA,MAAM,CAAC;EAAEC;AAAc,CAAC,KAChBA,aAAa,KAAK,QAAQ,IAC1B,IAAAC,qBAAG,CAAC;AACZ;AACA;AACA,SAAU;AACV,MAAM,CAAC;EAAED,aAAa;EAAEE;AAAgB,CAAC,KACjCF,aAAa,KAAK,SAAS,IAC3B,CAACE,eAAe,IAChB,IAAAD,qBAAG,CAAC;AACZ;AACA;AACA,SAAU;AACV,CAAC;AAMM,MAAME,+BAA+B,GAAAX,OAAA,CAAAW,+BAAA,GAAG,IAAAV,yBAAM,EACjDW,oBAAM,CAACC,MACX,CAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC;EAAEC;AAAY,CAAC,KACdA,WAAW,IACX,IAAAL,qBAAG,CAAC;AACZ;AACA,SAAU;AACV,CAAC","ignoreList":[]}
|
|
@@ -28,7 +28,9 @@ const Checkbox = ({
|
|
|
28
28
|
}, [onChange]);
|
|
29
29
|
const uuid = (0, _uuid.useUuid)();
|
|
30
30
|
const lineHeight = (0, _react.useMemo)(() => shouldShowCentered ? undefined : (0, _calculate.getHeightOfSingleTextLine)(), [shouldShowCentered]);
|
|
31
|
-
return /*#__PURE__*/_react.default.createElement(_Checkbox.StyledCheckbox,
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_Checkbox.StyledCheckbox, {
|
|
32
|
+
$hasLabel: !!children
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_Checkbox.StyledCheckboxInput, {
|
|
32
34
|
checked: isChecked,
|
|
33
35
|
disabled: isDisabled,
|
|
34
36
|
id: uuid,
|
|
@@ -37,6 +39,7 @@ const Checkbox = ({
|
|
|
37
39
|
}), /*#__PURE__*/_react.default.createElement(_Checkbox.StyledCheckboxLabel, {
|
|
38
40
|
className: labelClassName,
|
|
39
41
|
htmlFor: uuid,
|
|
42
|
+
$hasLabel: !!children,
|
|
40
43
|
$isChecked: isChecked ?? isActive,
|
|
41
44
|
$isDisabled: isDisabled,
|
|
42
45
|
$shouldShowAsSwitch: shouldShowAsSwitch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","names":["_react","_interopRequireWildcard","require","_uuid","_calculate","_Checkbox","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Checkbox","children","isChecked","isDisabled","labelClassName","onChange","shouldShowAsSwitch","shouldShowCentered","isActive","setIsActive","useState","handleChange","useCallback","event","target","checked","uuid","useUuid","lineHeight","useMemo","undefined","getHeightOfSingleTextLine","createElement","StyledCheckbox","StyledCheckboxInput","disabled","id","type","StyledCheckboxLabel","className","htmlFor","$isChecked","$isDisabled","$shouldShowAsSwitch","$lineHeight","displayName","_default","exports"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n ReactElement,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { getHeightOfSingleTextLine } from '../../utils/calculate';\nimport { StyledCheckbox, StyledCheckboxInput, StyledCheckboxLabel } from './Checkbox.styles';\n\nexport type CheckboxProps = {\n /**\n * Text for checkbox or switch\n */\n children?: ReactElement | string;\n /**\n * Indicates whether the checkbox or switch is selected\n */\n isChecked?: boolean;\n /**\n * Disables the checkbox or switch so it cannot be toggled\n */\n isDisabled?: boolean;\n /**\n * Classname for the label\n */\n labelClassName?: string;\n /**\n * Function to be executed if the checked value changes\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Changes the design to use switch instead of checkbox\n */\n shouldShowAsSwitch?: boolean;\n /**\n * Whether the Checkbox should be displayed centered to the label or at the top\n */\n shouldShowCentered?: boolean;\n};\n\nconst Checkbox: FC<CheckboxProps> = ({\n children,\n isChecked,\n isDisabled,\n labelClassName,\n onChange,\n shouldShowAsSwitch,\n shouldShowCentered = false,\n}) => {\n const [isActive, setIsActive] = useState(isChecked ?? false);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setIsActive(event.target.checked);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [onChange],\n );\n\n const uuid = useUuid();\n\n const lineHeight = useMemo(\n () => (shouldShowCentered ? undefined : getHeightOfSingleTextLine()),\n [shouldShowCentered],\n );\n\n return (\n <StyledCheckbox>\n <StyledCheckboxInput\n checked={isChecked}\n disabled={isDisabled}\n id={uuid}\n onChange={handleChange}\n type=\"checkbox\"\n />\n <StyledCheckboxLabel\n className={labelClassName}\n htmlFor={uuid}\n $isChecked={isChecked ?? isActive}\n $isDisabled={isDisabled}\n $shouldShowAsSwitch={shouldShowAsSwitch}\n $lineHeight={lineHeight}\n >\n {children}\n </StyledCheckboxLabel>\n </StyledCheckbox>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AASA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAA6F,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAiC7F,MAAMW,QAA2B,GAAGA,CAAC;EACjCC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,cAAc;EACdC,QAAQ;EACRC,kBAAkB;EAClBC,kBAAkB,GAAG;AACzB,CAAC,KAAK;EACF,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAACR,SAAS,IAAI,KAAK,CAAC;EAE5D,MAAMS,YAAY,GAAG,IAAAC,kBAAW,EAC3BC,KAAoC,IAAK;IACtCJ,WAAW,CAACI,KAAK,CAACC,MAAM,CAACC,OAAO,CAAC;IAEjC,IAAI,OAAOV,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACQ,KAAK,CAAC;IACnB;EACJ,CAAC,EACD,CAACR,QAAQ,CACb,CAAC;EAED,MAAMW,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EAEtB,MAAMC,UAAU,GAAG,IAAAC,cAAO,EACtB,MAAOZ,kBAAkB,GAAGa,SAAS,GAAG,IAAAC,oCAAyB,EAAC,CAAE,EACpE,CAACd,kBAAkB,CACvB,CAAC;EAED,oBACIjC,MAAA,CAAAY,OAAA,CAAAoC,aAAA,CAAC3C,SAAA,CAAA4C,cAAc,
|
|
1
|
+
{"version":3,"file":"Checkbox.js","names":["_react","_interopRequireWildcard","require","_uuid","_calculate","_Checkbox","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Checkbox","children","isChecked","isDisabled","labelClassName","onChange","shouldShowAsSwitch","shouldShowCentered","isActive","setIsActive","useState","handleChange","useCallback","event","target","checked","uuid","useUuid","lineHeight","useMemo","undefined","getHeightOfSingleTextLine","createElement","StyledCheckbox","$hasLabel","StyledCheckboxInput","disabled","id","type","StyledCheckboxLabel","className","htmlFor","$isChecked","$isDisabled","$shouldShowAsSwitch","$lineHeight","displayName","_default","exports"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n ReactElement,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { useUuid } from '../../hooks/uuid';\nimport { getHeightOfSingleTextLine } from '../../utils/calculate';\nimport { StyledCheckbox, StyledCheckboxInput, StyledCheckboxLabel } from './Checkbox.styles';\n\nexport type CheckboxProps = {\n /**\n * Text for checkbox or switch\n */\n children?: ReactElement | string;\n /**\n * Indicates whether the checkbox or switch is selected\n */\n isChecked?: boolean;\n /**\n * Disables the checkbox or switch so it cannot be toggled\n */\n isDisabled?: boolean;\n /**\n * Classname for the label\n */\n labelClassName?: string;\n /**\n * Function to be executed if the checked value changes\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Changes the design to use switch instead of checkbox\n */\n shouldShowAsSwitch?: boolean;\n /**\n * Whether the Checkbox should be displayed centered to the label or at the top\n */\n shouldShowCentered?: boolean;\n};\n\nconst Checkbox: FC<CheckboxProps> = ({\n children,\n isChecked,\n isDisabled,\n labelClassName,\n onChange,\n shouldShowAsSwitch,\n shouldShowCentered = false,\n}) => {\n const [isActive, setIsActive] = useState(isChecked ?? false);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setIsActive(event.target.checked);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [onChange],\n );\n\n const uuid = useUuid();\n\n const lineHeight = useMemo(\n () => (shouldShowCentered ? undefined : getHeightOfSingleTextLine()),\n [shouldShowCentered],\n );\n\n return (\n <StyledCheckbox $hasLabel={!!children}>\n <StyledCheckboxInput\n checked={isChecked}\n disabled={isDisabled}\n id={uuid}\n onChange={handleChange}\n type=\"checkbox\"\n />\n <StyledCheckboxLabel\n className={labelClassName}\n htmlFor={uuid}\n $hasLabel={!!children}\n $isChecked={isChecked ?? isActive}\n $isDisabled={isDisabled}\n $shouldShowAsSwitch={shouldShowAsSwitch}\n $lineHeight={lineHeight}\n >\n {children}\n </StyledCheckboxLabel>\n </StyledCheckbox>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,6 +11,12 @@ const StyledCheckbox = exports.StyledCheckbox = _styledComponents.default.div`
|
|
|
11
11
|
align-items: center;
|
|
12
12
|
display: flex;
|
|
13
13
|
position: relative;
|
|
14
|
+
|
|
15
|
+
${({
|
|
16
|
+
$hasLabel
|
|
17
|
+
}) => !$hasLabel && (0, _styledComponents.css)`
|
|
18
|
+
height: 15px;
|
|
19
|
+
`}
|
|
14
20
|
`;
|
|
15
21
|
const StyledCheckboxInput = exports.StyledCheckboxInput = _styledComponents.default.input`
|
|
16
22
|
display: none;
|
|
@@ -35,14 +41,16 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
35
41
|
${({
|
|
36
42
|
$isChecked,
|
|
37
43
|
$shouldShowAsSwitch,
|
|
38
|
-
$lineHeight
|
|
44
|
+
$lineHeight,
|
|
45
|
+
theme,
|
|
46
|
+
$hasLabel
|
|
39
47
|
}) => $shouldShowAsSwitch ? (0, _styledComponents.css)`
|
|
40
48
|
background-color: white;
|
|
41
49
|
border-radius: 50%;
|
|
42
50
|
box-shadow: 0 1px 4px rgb(0 0 0 / 35%);
|
|
43
51
|
height: 16px;
|
|
44
52
|
left: 7px;
|
|
45
|
-
top: ${$lineHeight ? `${$
|
|
53
|
+
top: ${$lineHeight ? `${Number(theme.fontSize) - ($hasLabel ? 2 : 6)}px` : '50%'};
|
|
46
54
|
transform: translateX(${$isChecked ? '18px' : 0}) translateY(-50%);
|
|
47
55
|
transition: transform 0.2s ease;
|
|
48
56
|
width: 16px;
|
|
@@ -52,7 +60,7 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
52
60
|
height: 10px;
|
|
53
61
|
left: 2px;
|
|
54
62
|
opacity: ${$isChecked ? 1 : 0};
|
|
55
|
-
top: ${$lineHeight ?
|
|
63
|
+
top: ${$lineHeight ? `${Number(theme.fontSize) - ($hasLabel ? 4 : 8)}px` : 'calc(50% - 2px)'};
|
|
56
64
|
transform: rotateZ(37deg) translateY(-50%);
|
|
57
65
|
transition: opacity 0.2s ease;
|
|
58
66
|
width: 5.5px;
|
|
@@ -75,12 +83,10 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
75
83
|
}};
|
|
76
84
|
|
|
77
85
|
${({
|
|
78
|
-
$shouldShowAsSwitch
|
|
79
|
-
}) => !$shouldShowAsSwitch && (0, _styledComponents.css)`
|
|
80
|
-
border: 1px solid
|
|
81
|
-
rgba(${({
|
|
86
|
+
$shouldShowAsSwitch,
|
|
82
87
|
theme
|
|
83
|
-
}) =>
|
|
88
|
+
}) => !$shouldShowAsSwitch && (0, _styledComponents.css)`
|
|
89
|
+
border: 1px solid rgba(${theme['409-rgb']}, 0.5);
|
|
84
90
|
`}
|
|
85
91
|
|
|
86
92
|
border-radius: ${({
|
|
@@ -99,9 +105,11 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
99
105
|
$shouldShowAsSwitch
|
|
100
106
|
}) => $shouldShowAsSwitch ? '28px' : '15px'};
|
|
101
107
|
${({
|
|
102
|
-
$lineHeight
|
|
108
|
+
$lineHeight,
|
|
109
|
+
theme,
|
|
110
|
+
$hasLabel
|
|
103
111
|
}) => $lineHeight ? (0, _styledComponents.css)`
|
|
104
|
-
top: ${$
|
|
112
|
+
top: ${Number(theme.fontSize) - ($hasLabel ? 2 : 6)}px;
|
|
105
113
|
transform: translateY(-50%);
|
|
106
114
|
` : (0, _styledComponents.css)`
|
|
107
115
|
top: 50%;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledCheckbox","exports","styled","div","StyledCheckboxInput","input","StyledCheckboxLabel","label","theme","text","$isDisabled","$shouldShowAsSwitch","$isChecked","$lineHeight","
|
|
1
|
+
{"version":3,"file":"Checkbox.styles.js","names":["_styledComponents","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledCheckbox","exports","styled","div","$hasLabel","css","StyledCheckboxInput","input","StyledCheckboxLabel","label","theme","text","$isDisabled","$shouldShowAsSwitch","$isChecked","$lineHeight","Number","fontSize","green","red"],"sources":["../../../../src/components/checkbox/Checkbox.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport type { CheckboxProps } from './Checkbox';\n\ntype StyledCheckboxProps = WithTheme<{\n $hasLabel: boolean;\n}>;\n\nexport const StyledCheckbox = styled.div<StyledCheckboxProps>`\n align-items: center;\n display: flex;\n position: relative;\n\n ${({ $hasLabel }) =>\n !$hasLabel &&\n css`\n height: 15px;\n `}\n`;\n\nexport const StyledCheckboxInput = styled.input`\n display: none;\n`;\n\ntype StyledCheckboxLabelProps = WithTheme<{\n $shouldShowAsSwitch?: CheckboxProps['shouldShowAsSwitch'];\n $isDisabled?: CheckboxProps['isDisabled'];\n $isChecked?: CheckboxProps['isChecked'];\n $lineHeight?: number;\n $hasLabel: boolean;\n}>;\n\nexport const StyledCheckboxLabel = styled.label<StyledCheckboxLabelProps>`\n color: ${({ theme }: StyledCheckboxLabelProps) => theme.text};\n cursor: ${({ $isDisabled }) => ($isDisabled ? 'default' : 'pointer')};\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n padding-left: ${({ $shouldShowAsSwitch }) => ($shouldShowAsSwitch ? '48px' : '20px')};\n transition: opacity 0.2s ease;\n user-select: none;\n\n &:after {\n ${({\n $isChecked,\n $shouldShowAsSwitch,\n $lineHeight,\n theme,\n $hasLabel,\n }: StyledCheckboxLabelProps) =>\n $shouldShowAsSwitch\n ? css`\n background-color: white;\n border-radius: 50%;\n box-shadow: 0 1px 4px rgb(0 0 0 / 35%);\n height: 16px;\n left: 7px;\n top: ${$lineHeight\n ? `${Number(theme.fontSize) - ($hasLabel ? 2 : 6)}px`\n : '50%'};\n transform: translateX(${$isChecked ? '18px' : 0}) translateY(-50%);\n transition: transform 0.2s ease;\n width: 16px;\n `\n : css`\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n height: 10px;\n left: 2px;\n opacity: ${$isChecked ? 1 : 0};\n top: ${$lineHeight\n ? `${Number(theme.fontSize) - ($hasLabel ? 4 : 8)}px`\n : 'calc(50% - 2px)'};\n transform: rotateZ(37deg) translateY(-50%);\n transition: opacity 0.2s ease;\n width: 5.5px;\n `}\n\n content: ' ';\n position: absolute;\n }\n\n &:before {\n background-color: ${({\n $isChecked,\n $shouldShowAsSwitch,\n theme,\n }: StyledCheckboxLabelProps) => {\n if ($shouldShowAsSwitch) {\n return $isChecked ? theme.green : theme.red;\n }\n\n return $isChecked ? theme['408'] : theme['403'];\n }};\n \n ${({ $shouldShowAsSwitch, theme }) =>\n !$shouldShowAsSwitch &&\n css`\n border: 1px solid rgba(${theme['409-rgb']}, 0.5);\n `}\n \n border-radius: ${({ $shouldShowAsSwitch }) => ($shouldShowAsSwitch ? '100px' : 0)};\n content: ' ';\n height: ${({ $shouldShowAsSwitch }) => ($shouldShowAsSwitch ? '13px' : '15px')};\n left: ${({ $shouldShowAsSwitch }) => ($shouldShowAsSwitch ? '10px' : 0)};\n position: absolute;\n transition: background-color 0.2s ease;\n width: ${({ $shouldShowAsSwitch }) => ($shouldShowAsSwitch ? '28px' : '15px')};\n ${({ $lineHeight, theme, $hasLabel }: StyledCheckboxLabelProps) =>\n $lineHeight\n ? css`\n top: ${Number(theme.fontSize) - ($hasLabel ? 2 : 6)}px;\n transform: translateY(-50%);\n `\n : css`\n top: 50%;\n transform: translateY(-50%);\n `}\n }\n }\n`;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -98,6 +98,7 @@ const ColorSchemeProvider = ({
|
|
|
98
98
|
newTheme[key] = internalDesignSettings[key];
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
|
+
newTheme.fontSize = (0, _font.getFontSize)();
|
|
101
102
|
setTheme(newTheme);
|
|
102
103
|
setColors(newColors);
|
|
103
104
|
}, [color, colorMode, internalColor, internalColorMode, internalDesignSettings, secondaryColor]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSchemeProvider.js","names":["_colors","require","_chaynsApi","_react","_interopRequireWildcard","_styledComponents","_get","_font","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ColorMode","GlobalStyle","createGlobalStyle","generateFontFaces","ColorSchemeProvider","children","color","colorMode","cssVariables","secondaryColor","style","designSettings","colors","setColors","useState","theme","setTheme","internalDesignSettings","setInternalDesignSettings","internalColor","internalColorMode","useSite","useEffect","getDesignSettings","then","result","availableColors","getAvailableColorList","newColors","newTheme","forEach","colorName","hexColor","getColorFromPalette","rgbColor","hexToRgb255","g","b","Light","Dark","keys","key","convertIconStyle","iconStyle","createElement","ThemeProvider","displayName","_default","exports"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.tsx"],"sourcesContent":["import { getAvailableColorList, getColorFromPalette, hexToRgb255 } from '@chayns/colors';\nimport { useSite } from 'chayns-api';\nimport React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { createGlobalStyle, ThemeProvider } from 'styled-components';\nimport { getDesignSettings } from '../../api/theme/get';\nimport type { DesignSettings } from '../../types/colorSchemeProvider';\nimport { convertIconStyle, generateFontFaces } from '../../utils/font';\n\nenum ColorMode {\n Classic,\n Dark,\n Light,\n}\n\ntype 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 * Css variables to be added in addition to the chayns variables\n */\n cssVariables?: { [key: string]: string | number };\n /**\n * The design settings of a page.\n */\n designSettings?: DesignSettings;\n /**\n * The secondary hex color to be used for the children\n */\n secondaryColor?: string;\n /**\n * Additional styles set on the root element\n */\n style?: { [key: string]: string | number };\n};\n\nexport interface Theme {\n [key: string]: string;\n}\n\nexport type WithTheme<T> = T & {\n theme: Theme;\n};\n\n// ToDo remove type after the framer-motion bug is Fixed\nexport type FramerMotionBugFix = WithTheme<unknown>;\n\nconst GlobalStyle = createGlobalStyle`\n ${generateFontFaces}\n .ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst ColorSchemeProvider: FC<ColorSchemeProviderProps> = ({\n children,\n color,\n colorMode,\n cssVariables = {},\n secondaryColor,\n style = {},\n designSettings,\n}) => {\n const [colors, setColors] = useState<Theme>({});\n const [theme, setTheme] = useState<Theme>({});\n const [internalDesignSettings, setInternalDesignSettings] = useState<DesignSettings>();\n\n // Empty object is used to prevent error if ColorSchemeProvider is rendered on server\n const { color: internalColor, colorMode: internalColorMode } = useSite() ?? {};\n\n useEffect(() => {\n if (designSettings) {\n setInternalDesignSettings(designSettings);\n\n return;\n }\n\n void getDesignSettings().then((result) => {\n setInternalDesignSettings(result);\n });\n }, [designSettings]);\n\n useEffect(() => {\n const availableColors = getAvailableColorList();\n\n const newColors: Theme = {};\n const newTheme: Theme = {};\n\n availableColors.forEach((colorName: string) => {\n const hexColor = getColorFromPalette(colorName, {\n color: color ?? internalColor,\n colorMode: colorMode ?? internalColorMode,\n secondaryColor,\n });\n\n if (hexColor) {\n const rgbColor = hexToRgb255(hexColor);\n\n newColors[`--chayns-color--${colorName}`] = hexColor;\n newTheme[colorName] = hexColor;\n\n if (rgbColor) {\n newColors[`--chayns-color-rgb--${colorName}`] =\n `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n newTheme[`${colorName}-rgb`] = `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n }\n }\n });\n\n switch (colorMode ?? internalColorMode) {\n case ColorMode.Light:\n newTheme.colorMode = 'light';\n break;\n case ColorMode.Dark:\n newTheme.colorMode = 'dark';\n break;\n default:\n newTheme.colorMode = 'classic';\n break;\n }\n\n if (internalDesignSettings) {\n Object.keys(internalDesignSettings).forEach((key) => {\n if (key === 'iconStyle') {\n newTheme[key] = convertIconStyle(internalDesignSettings.iconStyle);\n\n return;\n }\n\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = internalDesignSettings[key];\n });\n }\n\n setTheme(newTheme);\n setColors(newColors);\n }, [\n color,\n colorMode,\n internalColor,\n internalColorMode,\n internalDesignSettings,\n secondaryColor,\n ]);\n\n return (\n <ThemeProvider theme={theme}>\n <div style={{ ...colors, ...cssVariables, ...style }}>{children}</div>\n <GlobalStyle />\n </ThemeProvider>\n );\n};\n\nColorSchemeProvider.displayName = 'ColorSchemeProvider';\n\nexport default ColorSchemeProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ColorSchemeProvider.js","names":["_colors","require","_chaynsApi","_react","_interopRequireWildcard","_styledComponents","_get","_font","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ColorMode","GlobalStyle","createGlobalStyle","generateFontFaces","ColorSchemeProvider","children","color","colorMode","cssVariables","secondaryColor","style","designSettings","colors","setColors","useState","theme","setTheme","internalDesignSettings","setInternalDesignSettings","internalColor","internalColorMode","useSite","useEffect","getDesignSettings","then","result","availableColors","getAvailableColorList","newColors","newTheme","forEach","colorName","hexColor","getColorFromPalette","rgbColor","hexToRgb255","g","b","Light","Dark","keys","key","convertIconStyle","iconStyle","fontSize","getFontSize","createElement","ThemeProvider","displayName","_default","exports"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.tsx"],"sourcesContent":["import { getAvailableColorList, getColorFromPalette, hexToRgb255 } from '@chayns/colors';\nimport { useSite } from 'chayns-api';\nimport React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { createGlobalStyle, ThemeProvider } from 'styled-components';\nimport { getDesignSettings } from '../../api/theme/get';\nimport type { DesignSettings } from '../../types/colorSchemeProvider';\nimport { convertIconStyle, generateFontFaces, getFontSize } from '../../utils/font';\n\nenum ColorMode {\n Classic,\n Dark,\n Light,\n}\n\ntype 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 * Css variables to be added in addition to the chayns variables\n */\n cssVariables?: { [key: string]: string | number };\n /**\n * The design settings of a page.\n */\n designSettings?: DesignSettings;\n /**\n * The secondary hex color to be used for the children\n */\n secondaryColor?: string;\n /**\n * Additional styles set on the root element\n */\n style?: { [key: string]: string | number };\n};\n\nexport interface Theme {\n [key: string]: string;\n}\n\nexport type WithTheme<T> = T & {\n theme: Theme;\n};\n\n// ToDo remove type after the framer-motion bug is Fixed\nexport type FramerMotionBugFix = WithTheme<unknown>;\n\nconst GlobalStyle = createGlobalStyle`\n ${generateFontFaces}\n .ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst ColorSchemeProvider: FC<ColorSchemeProviderProps> = ({\n children,\n color,\n colorMode,\n cssVariables = {},\n secondaryColor,\n style = {},\n designSettings,\n}) => {\n const [colors, setColors] = useState<Theme>({});\n const [theme, setTheme] = useState<Theme>({});\n const [internalDesignSettings, setInternalDesignSettings] = useState<DesignSettings>();\n\n // Empty object is used to prevent error if ColorSchemeProvider is rendered on server\n const { color: internalColor, colorMode: internalColorMode } = useSite() ?? {};\n\n useEffect(() => {\n if (designSettings) {\n setInternalDesignSettings(designSettings);\n\n return;\n }\n\n void getDesignSettings().then((result) => {\n setInternalDesignSettings(result);\n });\n }, [designSettings]);\n\n useEffect(() => {\n const availableColors = getAvailableColorList();\n\n const newColors: Theme = {};\n const newTheme: Theme = {};\n\n availableColors.forEach((colorName: string) => {\n const hexColor = getColorFromPalette(colorName, {\n color: color ?? internalColor,\n colorMode: colorMode ?? internalColorMode,\n secondaryColor,\n });\n\n if (hexColor) {\n const rgbColor = hexToRgb255(hexColor);\n\n newColors[`--chayns-color--${colorName}`] = hexColor;\n newTheme[colorName] = hexColor;\n\n if (rgbColor) {\n newColors[`--chayns-color-rgb--${colorName}`] =\n `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n newTheme[`${colorName}-rgb`] = `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n }\n }\n });\n\n switch (colorMode ?? internalColorMode) {\n case ColorMode.Light:\n newTheme.colorMode = 'light';\n break;\n case ColorMode.Dark:\n newTheme.colorMode = 'dark';\n break;\n default:\n newTheme.colorMode = 'classic';\n break;\n }\n\n if (internalDesignSettings) {\n Object.keys(internalDesignSettings).forEach((key) => {\n if (key === 'iconStyle') {\n newTheme[key] = convertIconStyle(internalDesignSettings.iconStyle);\n\n return;\n }\n\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = internalDesignSettings[key];\n });\n }\n\n newTheme.fontSize = getFontSize();\n\n setTheme(newTheme);\n setColors(newColors);\n }, [\n color,\n colorMode,\n internalColor,\n internalColorMode,\n internalDesignSettings,\n secondaryColor,\n ]);\n\n return (\n <ThemeProvider theme={theme}>\n <div style={{ ...colors, ...cssVariables, ...style }}>{children}</div>\n <GlobalStyle />\n </ThemeProvider>\n );\n};\n\nColorSchemeProvider.displayName = 'ColorSchemeProvider';\n\nexport default ColorSchemeProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ var _chaynsApi = require("chayns-api");
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _comboBox = require("../../types/comboBox");
|
|
10
10
|
var _calculate = require("../../utils/calculate");
|
|
11
|
+
var _environment = require("../../utils/environment");
|
|
11
12
|
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
12
13
|
var _ComboBoxItem = _interopRequireDefault(require("./combobox-item/ComboBoxItem"));
|
|
13
14
|
var _ComboBox = require("./ComboBox.styles");
|
|
@@ -34,9 +35,7 @@ const ComboBox = ({
|
|
|
34
35
|
const {
|
|
35
36
|
browser
|
|
36
37
|
} = (0, _chaynsApi.getDevice)();
|
|
37
|
-
const
|
|
38
|
-
isMobile
|
|
39
|
-
} = chayns.env;
|
|
38
|
+
const isMobile = (0, _environment.getIsMobile)();
|
|
40
39
|
const handleClick = (0, _react.useCallback)(event => {
|
|
41
40
|
if (ref.current && !ref.current.contains(event.target)) {
|
|
42
41
|
setIsAnimating(false);
|
|
@@ -221,7 +220,7 @@ const ComboBox = ({
|
|
|
221
220
|
}, /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxPlaceholder, null, placeholderImageUrl && /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxPlaceholderImage, {
|
|
222
221
|
src: placeholderImageUrl,
|
|
223
222
|
shouldShowRoundImage: shouldShowRoundImage
|
|
224
|
-
}), placeholderText), /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
223
|
+
}), placeholderText, item && item.suffixElement && item.suffixElement), /*#__PURE__*/_react.default.createElement(_ComboBox.StyledComboBoxIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
225
224
|
icons: ['fa fa-chevron-down']
|
|
226
225
|
}))), direction === _comboBox.ComboBoxDirection.BOTTOM && comboBoxBody), [comboBoxBody, direction, handleHeaderClick, isAnimating, isDisabled, isMobile, minWidth, placeholderImageUrl, placeholderText, shouldShowRoundImage]);
|
|
227
226
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_comboBox","_calculate","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","direction","ComboBoxDirection","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","height","setHeight","focusedIndex","setFocusedIndex","ref","useRef","contentRef","browser","getDevice","isMobile","chayns","env","handleClick","useCallback","event","current","contains","target","useEffect","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","key","_contentRef$current","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","element","id","newSelectedItem","find","value","String","replace","isAtLeastOneItemWithImageGiven","some","imageUrl","textArray","map","text","calculateContentHeight","push","calculateContentWidth","placeholderImageUrl","useMemo","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","suffixElement","createElement","isSelected","animate","opacity","style","TOP","transform","StyledMotionComboBoxBody","$browser","name","$height","initial","$maxHeight","$minWidth","$direction","transition","duration","StyledComboBox","StyledComboBoxHeader","onClick","$isOpen","$isMobile","$isDisabled","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","src","StyledComboBoxIconWrapper","icons","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentHeight, calculateContentWidth } from '../../utils/calculate';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '300px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const ref = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const { isMobile } = chayns.env;\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n setIsAnimating(false);\n }\n },\n [ref],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, ref]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n setHeight(calculateContentHeight(textArray));\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $height={height}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n height,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={ref}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_comboBox","_calculate","_environment","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBox","direction","ComboBoxDirection","BOTTOM","isDisabled","list","maxHeight","onSelect","placeholder","selectedItem","shouldShowRoundImage","item","setItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","height","setHeight","focusedIndex","setFocusedIndex","ref","useRef","contentRef","browser","getDevice","isMobile","getIsMobile","handleClick","useCallback","event","current","contains","target","useEffect","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","handleKeyDown","key","_contentRef$current","preventDefault","children","length","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","element","id","newSelectedItem","find","value","String","replace","isAtLeastOneItemWithImageGiven","some","imageUrl","textArray","map","text","calculateContentHeight","push","calculateContentWidth","placeholderImageUrl","useMemo","undefined","placeholderText","handleHeaderClick","prevState","comboBoxBody","items","suffixElement","createElement","isSelected","animate","opacity","style","TOP","transform","StyledMotionComboBoxBody","$browser","name","$height","initial","$maxHeight","$minWidth","$direction","transition","duration","StyledComboBox","StyledComboBoxHeader","onClick","$isOpen","$isMobile","$isDisabled","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","src","StyledComboBoxIconWrapper","icons","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentHeight, calculateContentWidth } from '../../utils/calculate';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItem {\n imageUrl?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n}\n\nexport type ComboBoxProps = {\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n list: IComboBoxItem[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function that should be executed when an item is selected.\n */\n onSelect?: (comboboxItem: IComboBoxItem) => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n direction = ComboBoxDirection.BOTTOM,\n isDisabled = false,\n list,\n maxHeight = '300px',\n onSelect,\n placeholder,\n selectedItem,\n shouldShowRoundImage,\n}) => {\n const [item, setItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const ref = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const { browser } = getDevice();\n\n const isMobile = getIsMobile();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n setIsAnimating(false);\n }\n },\n [ref],\n );\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, ref]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect: IComboBoxItem) => {\n setItem(itemToSelect);\n setIsAnimating(false);\n\n if (onSelect) {\n onSelect(itemToSelect);\n }\n },\n [onSelect],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n const newSelectedItem = list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, list]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const isAtLeastOneItemWithImageGiven = list.some(({ imageUrl }) => imageUrl);\n\n const textArray = list.map(({ text }) => text);\n\n setHeight(calculateContentHeight(textArray));\n\n textArray.push(placeholder);\n\n // 45px = padding left + padding right + border left + border right + arrow icon width + arrow icon margin left\n // 32px = image width + flex gap\n setMinWidth(\n calculateContentWidth([...list, { text: placeholder, value: 'placeholder' }]) +\n 45 +\n (isAtLeastOneItemWithImageGiven ? 32 : 0),\n );\n }, [list, placeholder]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (item) {\n return item.imageUrl;\n }\n\n return undefined;\n }, [item, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (item) {\n text = item.text;\n }\n\n return text;\n }, [item, placeholder, selectedItem]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled) {\n setIsAnimating((prevState) => !prevState);\n }\n }, [isDisabled]);\n\n const comboBoxBody = useMemo(() => {\n const items = list.map(({ imageUrl, suffixElement, text, value }) => (\n <ComboBoxItem\n imageUrl={imageUrl}\n isSelected={selectedItem ? value === selectedItem.value : false}\n key={value}\n id={value}\n onSelect={handleSetSelectedItem}\n shouldShowRoundImage={shouldShowRoundImage}\n suffixElement={suffixElement}\n text={text}\n value={value}\n />\n ));\n\n const animate = isAnimating\n ? { height: 'fit-content', opacity: 1 }\n : { height: 0, opacity: 0 };\n\n const style =\n direction === ComboBoxDirection.TOP ? { transform: 'translateY(-100%)' } : undefined;\n\n return (\n <StyledMotionComboBoxBody\n $browser={browser?.name}\n animate={animate}\n $height={height}\n initial={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={minWidth}\n style={style}\n $direction={direction}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {items}\n </StyledMotionComboBoxBody>\n );\n }, [\n browser?.name,\n direction,\n handleSetSelectedItem,\n height,\n isAnimating,\n list,\n maxHeight,\n minWidth,\n selectedItem,\n shouldShowRoundImage,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox ref={ref}>\n {direction === ComboBoxDirection.TOP && comboBoxBody}\n <StyledComboBoxHeader\n $direction={direction}\n $minWidth={minWidth}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isMobile={isMobile}\n $isDisabled={isDisabled}\n >\n <StyledComboBoxPlaceholder>\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {placeholderText}\n {item && item.suffixElement && item.suffixElement}\n </StyledComboBoxPlaceholder>\n <StyledComboBoxIconWrapper>\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n </StyledComboBoxHeader>\n {direction === ComboBoxDirection.BOTTOM && comboBoxBody}\n </StyledComboBox>\n ),\n [\n comboBoxBody,\n direction,\n handleHeaderClick,\n isAnimating,\n isDisabled,\n isMobile,\n minWidth,\n placeholderImageUrl,\n placeholderText,\n shouldShowRoundImage,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _environment = require("../../../utils/environment");
|
|
8
9
|
var _ComboBoxItem = require("./ComboBoxItem.styles");
|
|
9
10
|
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); }
|
|
10
11
|
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; }
|
|
@@ -21,12 +22,12 @@ const ComboBoxItem = ({
|
|
|
21
22
|
const handleItemClick = (0, _react.useCallback)(() => {
|
|
22
23
|
onSelect({
|
|
23
24
|
text,
|
|
24
|
-
value
|
|
25
|
+
value,
|
|
26
|
+
suffixElement,
|
|
27
|
+
imageUrl
|
|
25
28
|
});
|
|
26
29
|
}, [onSelect, text, value]);
|
|
27
|
-
const
|
|
28
|
-
isMobile
|
|
29
|
-
} = chayns.env;
|
|
30
|
+
const isMobile = (0, _environment.getIsMobile)();
|
|
30
31
|
return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_ComboBoxItem.StyledComboBoxItem, {
|
|
31
32
|
id: `combobox-item__${typeof id === 'number' ? String(id) : id}`,
|
|
32
33
|
onClick: handleItemClick,
|