@chayns-components/core 5.0.0-beta.583 → 5.0.0-beta.588
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.styles.js +3 -0
- package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/cjs/components/checkbox/Checkbox.styles.js +7 -5
- 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 +10 -0
- package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
- package/lib/cjs/components/progress-bar/ProgressBar.js +2 -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/sharing-bar/SharingBar.js +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.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/components/text-area/TextArea.js +5 -1
- package/lib/cjs/components/text-area/TextArea.js.map +1 -1
- package/lib/cjs/components/text-area/TextArea.styles.js +3 -2
- package/lib/cjs/components/text-area/TextArea.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 +6 -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.styles.js +14 -8
- package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/esm/components/checkbox/Checkbox.styles.js +7 -5
- 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 +10 -0
- package/lib/esm/components/number-input/NumberInput.js.map +1 -1
- package/lib/esm/components/progress-bar/ProgressBar.js +2 -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/sharing-bar/SharingBar.js +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.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/components/text-area/TextArea.js +6 -2
- package/lib/esm/components/text-area/TextArea.js.map +1 -1
- package/lib/esm/components/text-area/TextArea.styles.js +3 -2
- package/lib/esm/components/text-area/TextArea.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 +6 -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/input/Input.d.ts +4 -0
- package/lib/types/components/input/Input.styles.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/components/text-area/TextArea.styles.d.ts +2 -1
- 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
|
@@ -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":[]}
|
|
@@ -35,14 +35,15 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
35
35
|
${({
|
|
36
36
|
$isChecked,
|
|
37
37
|
$shouldShowAsSwitch,
|
|
38
|
-
$lineHeight
|
|
38
|
+
$lineHeight,
|
|
39
|
+
theme
|
|
39
40
|
}) => $shouldShowAsSwitch ? (0, _styledComponents.css)`
|
|
40
41
|
background-color: white;
|
|
41
42
|
border-radius: 50%;
|
|
42
43
|
box-shadow: 0 1px 4px rgb(0 0 0 / 35%);
|
|
43
44
|
height: 16px;
|
|
44
45
|
left: 7px;
|
|
45
|
-
top: ${$lineHeight ? `${
|
|
46
|
+
top: ${$lineHeight ? `${Number(theme.fontSize) - 2}px` : '50%'};
|
|
46
47
|
transform: translateX(${$isChecked ? '18px' : 0}) translateY(-50%);
|
|
47
48
|
transition: transform 0.2s ease;
|
|
48
49
|
width: 16px;
|
|
@@ -52,7 +53,7 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
52
53
|
height: 10px;
|
|
53
54
|
left: 2px;
|
|
54
55
|
opacity: ${$isChecked ? 1 : 0};
|
|
55
|
-
top: ${$lineHeight ?
|
|
56
|
+
top: ${$lineHeight ? `${Number(theme.fontSize) - 4}px` : 'calc(50% - 2px)'};
|
|
56
57
|
transform: rotateZ(37deg) translateY(-50%);
|
|
57
58
|
transition: opacity 0.2s ease;
|
|
58
59
|
width: 5.5px;
|
|
@@ -99,9 +100,10 @@ const StyledCheckboxLabel = exports.StyledCheckboxLabel = _styledComponents.defa
|
|
|
99
100
|
$shouldShowAsSwitch
|
|
100
101
|
}) => $shouldShowAsSwitch ? '28px' : '15px'};
|
|
101
102
|
${({
|
|
102
|
-
$lineHeight
|
|
103
|
+
$lineHeight,
|
|
104
|
+
theme
|
|
103
105
|
}) => $lineHeight ? (0, _styledComponents.css)`
|
|
104
|
-
top: ${
|
|
106
|
+
top: ${Number(theme.fontSize) - 2}px;
|
|
105
107
|
transform: translateY(-50%);
|
|
106
108
|
` : (0, _styledComponents.css)`
|
|
107
109
|
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","css","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\nexport const StyledCheckbox = styled.div`\n align-items: center;\n display: flex;\n position: relative;\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}>;\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 ${({ $isChecked, $shouldShowAsSwitch, $lineHeight }) =>\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 ? `${
|
|
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","css","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\nexport const StyledCheckbox = styled.div`\n align-items: center;\n display: flex;\n position: relative;\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}>;\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 ${({ $isChecked, $shouldShowAsSwitch, $lineHeight, theme }: 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 ? `${Number(theme.fontSize) - 2}px` : '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 ? `${Number(theme.fontSize) - 4}px` : '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 }) =>\n !$shouldShowAsSwitch &&\n css`\n border: 1px solid\n rgba(${({ theme }: StyledCheckboxLabelProps) => 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 }: StyledCheckboxLabelProps) =>\n $lineHeight\n ? css`\n top: ${Number(theme.fontSize) - 2}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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBoxItem.js","names":["_react","_interopRequireWildcard","require","_ComboBoxItem","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBoxItem","imageUrl","isSelected","onSelect","shouldShowRoundImage","suffixElement","text","id","value","handleItemClick","useCallback","isMobile","
|
|
1
|
+
{"version":3,"file":"ComboBoxItem.js","names":["_react","_interopRequireWildcard","require","_environment","_ComboBoxItem","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ComboBoxItem","imageUrl","isSelected","onSelect","shouldShowRoundImage","suffixElement","text","id","value","handleItemClick","useCallback","isMobile","getIsMobile","useMemo","createElement","StyledComboBoxItem","String","onClick","$isMobile","$isSelected","StyledComboBoxItemImage","src","$shouldShowRoundImage","displayName","_default","exports"],"sources":["../../../../../src/components/combobox/combobox-item/ComboBoxItem.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback, useMemo } from 'react';\nimport { getIsMobile } from '../../../utils/environment';\nimport type { ComboBoxProps, IComboBoxItem } from '../ComboBox';\nimport { StyledComboBoxItem, StyledComboBoxItemImage } from './ComboBoxItem.styles';\n\nexport type ComboBoxItemProps = {\n imageUrl: IComboBoxItem['imageUrl'];\n isSelected: boolean;\n onSelect: (itemToSelect: IComboBoxItem) => void;\n shouldShowRoundImage: ComboBoxProps['shouldShowRoundImage'];\n suffixElement?: ReactNode;\n text: IComboBoxItem['text'];\n value: IComboBoxItem['value'];\n id: IComboBoxItem['value'];\n};\n\nconst ComboBoxItem: FC<ComboBoxItemProps> = ({\n imageUrl,\n isSelected,\n onSelect,\n shouldShowRoundImage,\n suffixElement,\n text,\n id,\n value,\n}) => {\n const handleItemClick = useCallback(() => {\n onSelect({ text, value, suffixElement, imageUrl });\n }, [onSelect, text, value]);\n\n const isMobile = getIsMobile();\n\n return useMemo(\n () => (\n <StyledComboBoxItem\n id={`combobox-item__${typeof id === 'number' ? String(id) : id}`}\n onClick={handleItemClick}\n $isMobile={isMobile}\n $isSelected={isSelected}\n >\n {imageUrl && (\n <StyledComboBoxItemImage\n src={imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n )}\n {text}\n {suffixElement}\n </StyledComboBoxItem>\n ),\n [\n handleItemClick,\n id,\n imageUrl,\n isMobile,\n isSelected,\n shouldShowRoundImage,\n suffixElement,\n text,\n ],\n );\n};\n\nComboBoxItem.displayName = 'ComboBoxItem';\n\nexport default ComboBoxItem;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAAoF,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,SAAAL,wBAAAK,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;AAapF,MAAMW,YAAmC,GAAGA,CAAC;EACzCC,QAAQ;EACRC,UAAU;EACVC,QAAQ;EACRC,oBAAoB;EACpBC,aAAa;EACbC,IAAI;EACJC,EAAE;EACFC;AACJ,CAAC,KAAK;EACF,MAAMC,eAAe,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACtCP,QAAQ,CAAC;MAAEG,IAAI;MAAEE,KAAK;MAAEH,aAAa;MAAEJ;IAAS,CAAC,CAAC;EACtD,CAAC,EAAE,CAACE,QAAQ,EAAEG,IAAI,EAAEE,KAAK,CAAC,CAAC;EAE3B,MAAMG,QAAQ,GAAG,IAAAC,wBAAW,EAAC,CAAC;EAE9B,OAAO,IAAAC,cAAO,EACV,mBACItC,MAAA,CAAAW,OAAA,CAAA4B,aAAA,CAACnC,aAAA,CAAAoC,kBAAkB;IACfR,EAAE,EAAG,kBAAiB,OAAOA,EAAE,KAAK,QAAQ,GAAGS,MAAM,CAACT,EAAE,CAAC,GAAGA,EAAG,EAAE;IACjEU,OAAO,EAAER,eAAgB;IACzBS,SAAS,EAAEP,QAAS;IACpBQ,WAAW,EAAEjB;EAAW,GAEvBD,QAAQ,iBACL1B,MAAA,CAAAW,OAAA,CAAA4B,aAAA,CAACnC,aAAA,CAAAyC,uBAAuB;IACpBC,GAAG,EAAEpB,QAAS;IACdqB,qBAAqB,EAAElB;EAAqB,CAC/C,CACJ,EACAE,IAAI,EACJD,aACe,CACvB,EACD,CACII,eAAe,EACfF,EAAE,EACFN,QAAQ,EACRU,QAAQ,EACRT,UAAU,EACVE,oBAAoB,EACpBC,aAAa,EACbC,IAAI,CAEZ,CAAC;AACL,CAAC;AAEDN,YAAY,CAACuB,WAAW,GAAG,cAAc;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAvC,OAAA,GAE3Bc,YAAY","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactDom = require("react-dom");
|
|
10
10
|
var _uuid = require("../../hooks/uuid");
|
|
11
11
|
var _contextMenu = require("../../types/contextMenu");
|
|
12
|
+
var _environment = require("../../utils/environment");
|
|
12
13
|
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
13
14
|
var _ContextMenuContent = _interopRequireDefault(require("./context-menu-content/ContextMenuContent"));
|
|
14
15
|
var _ContextMenu = require("./ContextMenu.styles");
|
|
@@ -44,11 +45,8 @@ const ContextMenu = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
44
45
|
setIsContentShown(false);
|
|
45
46
|
}, []);
|
|
46
47
|
const handleShow = (0, _react.useCallback)(async () => {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
isTablet
|
|
50
|
-
} = chayns.env;
|
|
51
|
-
if (isMobile || isTablet) {
|
|
48
|
+
const isMobile = (0, _environment.getIsMobile)();
|
|
49
|
+
if (isMobile) {
|
|
52
50
|
var _selection$;
|
|
53
51
|
// ToDo: Replace with new api function if new api is ready
|
|
54
52
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_reactDom","_uuid","_contextMenu","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","document","body","coordinates","items","onHide","onShow","shouldCloseOnPopupClick","ref","internalCoordinates","setInternalCoordinates","useState","x","y","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","handleHide","useCallback","handleShow","isMobile","isTablet","chayns","env","_selection$","buttonType","selection","dialog","select","buttons","list","map","text","index","name","value","icon","type","_items$selection$0$va","onClick","current","rootElement","querySelector","height","childrenHeight","width","childrenWidth","getBoundingClientRect","BottomRight","TopRight","BottomLeft","handleClick","event","preventDefault","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","useEffect","addEventListener","window","removeEventListener","createPortal","AnimatePresence","initial","key","Fragment","StyledContextMenu","className","displayName","_default","exports"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, {\n forwardRef,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { ContextMenuAlignment } from '../../types/contextMenu';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\n\nexport type ContextMenuCoordinates = {\n x: number;\n y: number;\n};\n\nexport type ContextMenuItem = {\n icons: string[];\n key: string;\n onClick: (event?: MouseEvent<HTMLDivElement>) => Promise<void> | void;\n text: string;\n};\n\nexport type ContextMenuRef = {\n hide: VoidFunction;\n show: VoidFunction;\n};\n\ntype ContextMenuProps = {\n /**\n * Optional custom alignment used instead of calculating it using the\n * alignment within the page. The available alignment can be taken from the\n * ContextMenuAlignment enum.\n */\n alignment?: ContextMenuAlignment;\n /**\n * The element over which the content of the `ContextMenu` should be displayed.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `ContextMenu` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * Optional own coordinates to be used instead of calculating the alignment\n * based on the alignment of the children.\n */\n coordinates?: ContextMenuCoordinates;\n /**\n * The items that will be displayed in the content of the `ContextMenu`.\n */\n items: ContextMenuItem[];\n /**\n * Function to be executed when the content of the Context menu has been hidden.\n */\n onHide?: VoidFunction;\n /**\n * Function to be executed when the content of the Context menu has been shown.\n */\n onShow?: VoidFunction;\n /**\n * Whether the popup should be closed if its clicked.\n */\n shouldCloseOnPopupClick?: boolean;\n};\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n children = <Icon icons={['ts-ellipsis_v']} size={20} />,\n container = document.body,\n coordinates,\n items,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n },\n ref,\n ) => {\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n\n const uuid = useUuid();\n\n // ToDo: Replace with hook if new chayns api is ready\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleShow = useCallback(async () => {\n const { isMobile, isTablet } = chayns.env;\n\n if (isMobile || isTablet) {\n // ToDo: Replace with new api function if new api is ready\n const { buttonType, selection } = await chayns.dialog.select({\n buttons: [],\n list: items.map(({ icons, text }, index) => ({\n name: text,\n value: index,\n icon: icons[0],\n })),\n type: 2,\n });\n\n if (buttonType === 1 && typeof selection[0]?.value === 'number') {\n void items[selection[0].value]?.onClick();\n }\n } else if (contextMenuRef.current) {\n const rootElement = document.querySelector('.tapp') || document.body;\n\n const {\n x,\n y,\n height: childrenHeight,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n setInternalCoordinates({ x: x + childrenWidth / 2, y: y + childrenHeight / 2 });\n\n const { height, width } = rootElement.getBoundingClientRect();\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [items]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow],\n );\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\n\n useEffect(() => {\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n />\n )}\n </AnimatePresence>,\n container,\n ),\n );\n }, [\n alignment,\n container,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n ]);\n\n return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n onClick={handleClick}\n ref={contextMenuRef}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_reactDom","_uuid","_contextMenu","_environment","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","document","body","coordinates","items","onHide","onShow","shouldCloseOnPopupClick","ref","internalCoordinates","setInternalCoordinates","useState","x","y","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","handleHide","useCallback","handleShow","isMobile","getIsMobile","_selection$","buttonType","selection","chayns","dialog","select","buttons","list","map","text","index","name","value","icon","type","_items$selection$0$va","onClick","current","rootElement","querySelector","height","childrenHeight","width","childrenWidth","getBoundingClientRect","BottomRight","TopRight","BottomLeft","handleClick","event","preventDefault","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","useEffect","addEventListener","window","removeEventListener","createPortal","AnimatePresence","initial","key","Fragment","StyledContextMenu","className","displayName","_default","exports"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, {\n forwardRef,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { ContextMenuAlignment } from '../../types/contextMenu';\nimport { getIsMobile } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\n\nexport type ContextMenuCoordinates = {\n x: number;\n y: number;\n};\n\nexport type ContextMenuItem = {\n icons: string[];\n key: string;\n onClick: (event?: MouseEvent<HTMLDivElement>) => Promise<void> | void;\n text: string;\n};\n\nexport type ContextMenuRef = {\n hide: VoidFunction;\n show: VoidFunction;\n};\n\ntype ContextMenuProps = {\n /**\n * Optional custom alignment used instead of calculating it using the\n * alignment within the page. The available alignment can be taken from the\n * ContextMenuAlignment enum.\n */\n alignment?: ContextMenuAlignment;\n /**\n * The element over which the content of the `ContextMenu` should be displayed.\n */\n children?: ReactNode;\n /**\n * The element where the content of the `ContextMenu` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * Optional own coordinates to be used instead of calculating the alignment\n * based on the alignment of the children.\n */\n coordinates?: ContextMenuCoordinates;\n /**\n * The items that will be displayed in the content of the `ContextMenu`.\n */\n items: ContextMenuItem[];\n /**\n * Function to be executed when the content of the Context menu has been hidden.\n */\n onHide?: VoidFunction;\n /**\n * Function to be executed when the content of the Context menu has been shown.\n */\n onShow?: VoidFunction;\n /**\n * Whether the popup should be closed if its clicked.\n */\n shouldCloseOnPopupClick?: boolean;\n};\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n children = <Icon icons={['ts-ellipsis_v']} size={20} />,\n container = document.body,\n coordinates,\n items,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n },\n ref,\n ) => {\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n\n const uuid = useUuid();\n\n // ToDo: Replace with hook if new chayns api is ready\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleShow = useCallback(async () => {\n const isMobile = getIsMobile();\n\n if (isMobile) {\n // ToDo: Replace with new api function if new api is ready\n const { buttonType, selection } = await chayns.dialog.select({\n buttons: [],\n list: items.map(({ icons, text }, index) => ({\n name: text,\n value: index,\n icon: icons[0],\n })),\n type: 2,\n });\n\n if (buttonType === 1 && typeof selection[0]?.value === 'number') {\n void items[selection[0].value]?.onClick();\n }\n } else if (contextMenuRef.current) {\n const rootElement = document.querySelector('.tapp') || document.body;\n\n const {\n x,\n y,\n height: childrenHeight,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n setInternalCoordinates({ x: x + childrenWidth / 2, y: y + childrenHeight / 2 });\n\n const { height, width } = rootElement.getBoundingClientRect();\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [items]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow],\n );\n\n const handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\n\n useEffect(() => {\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n />\n )}\n </AnimatePresence>,\n container,\n ),\n );\n }, [\n alignment,\n container,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n ]);\n\n return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n onClick={handleClick}\n ref={contextMenuRef}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _styledComponents = require("styled-components");
|
|
9
|
+
var _useElementSize = require("../../hooks/useElementSize");
|
|
9
10
|
var _AreaContextProvider = require("../area-provider/AreaContextProvider");
|
|
10
11
|
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
11
12
|
var _Input = require("./Input.styles");
|
|
@@ -24,6 +25,7 @@ const Input = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
24
25
|
placeholderElement,
|
|
25
26
|
rightElement,
|
|
26
27
|
shouldShowOnlyBottomBorder,
|
|
28
|
+
shouldRemainPlaceholder = false,
|
|
27
29
|
shouldShowClearIcon = false,
|
|
28
30
|
shouldShowCenteredContent = false,
|
|
29
31
|
type = 'text',
|
|
@@ -34,9 +36,17 @@ const Input = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
34
36
|
}, ref) => {
|
|
35
37
|
var _rightElement$props;
|
|
36
38
|
const [hasValue, setHasValue] = (0, _react.useState)(typeof value === 'string' && value !== '');
|
|
39
|
+
const [placeholderWidth, setPlaceholderWidth] = (0, _react.useState)(0);
|
|
37
40
|
const areaProvider = (0, _react.useContext)(_AreaContextProvider.AreaContext);
|
|
38
41
|
const theme = (0, _styledComponents.useTheme)();
|
|
39
42
|
const inputRef = (0, _react.useRef)(null);
|
|
43
|
+
const placeholderRef = (0, _react.useRef)(null);
|
|
44
|
+
const placeholderSize = (0, _useElementSize.useElementSize)(placeholderRef);
|
|
45
|
+
(0, _react.useEffect)(() => {
|
|
46
|
+
if (placeholderSize && shouldShowOnlyBottomBorder) {
|
|
47
|
+
setPlaceholderWidth(placeholderSize.width + 5);
|
|
48
|
+
}
|
|
49
|
+
}, [placeholderSize, shouldShowOnlyBottomBorder]);
|
|
40
50
|
const shouldChangeColor = (0, _react.useMemo)(() => areaProvider.shouldChangeColor ?? false, [areaProvider.shouldChangeColor]);
|
|
41
51
|
const handleClearIconClick = (0, _react.useCallback)(() => {
|
|
42
52
|
if (inputRef.current) {
|
|
@@ -70,20 +80,19 @@ const Input = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
70
80
|
}
|
|
71
81
|
}, [value]);
|
|
72
82
|
const labelPosition = (0, _react.useMemo)(() => {
|
|
73
|
-
if (hasValue) {
|
|
83
|
+
if (hasValue && !shouldRemainPlaceholder) {
|
|
74
84
|
return shouldShowOnlyBottomBorder ? {
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
right: 3,
|
|
86
|
+
top: -1.5
|
|
77
87
|
} : {
|
|
78
|
-
bottom: -
|
|
88
|
+
bottom: -10,
|
|
79
89
|
right: -6
|
|
80
90
|
};
|
|
81
91
|
}
|
|
82
92
|
return {
|
|
83
|
-
left: -1
|
|
84
|
-
top: -1.5
|
|
93
|
+
left: -1
|
|
85
94
|
};
|
|
86
|
-
}, [hasValue, shouldShowOnlyBottomBorder]);
|
|
95
|
+
}, [hasValue, shouldRemainPlaceholder, shouldShowOnlyBottomBorder]);
|
|
87
96
|
return /*#__PURE__*/_react.default.createElement(_Input.StyledInput, {
|
|
88
97
|
className: "beta-chayns-input",
|
|
89
98
|
$isDisabled: isDisabled
|
|
@@ -95,6 +104,7 @@ const Input = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
95
104
|
}, iconElement && /*#__PURE__*/_react.default.createElement(_Input.StyledInputIconWrapper, null, iconElement), /*#__PURE__*/_react.default.createElement(_Input.StyledInputContent, {
|
|
96
105
|
$shouldShowOnlyBottomBorder: shouldShowOnlyBottomBorder
|
|
97
106
|
}, /*#__PURE__*/_react.default.createElement(_Input.StyledInputField, {
|
|
107
|
+
$placeholderWidth: placeholderWidth,
|
|
98
108
|
id: id,
|
|
99
109
|
disabled: isDisabled,
|
|
100
110
|
onBlur: onBlur,
|
|
@@ -110,10 +120,11 @@ const Input = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
110
120
|
$shouldShowCenteredContent: shouldShowCenteredContent
|
|
111
121
|
}), /*#__PURE__*/_react.default.createElement(_Input.StyledMotionInputLabelWrapper, {
|
|
112
122
|
animate: {
|
|
113
|
-
fontSize: hasValue ? '
|
|
123
|
+
fontSize: hasValue && !shouldShowOnlyBottomBorder && !shouldRemainPlaceholder ? '9px' : '16px'
|
|
114
124
|
},
|
|
115
125
|
initial: false,
|
|
116
126
|
layout: true,
|
|
127
|
+
ref: placeholderRef,
|
|
117
128
|
style: {
|
|
118
129
|
...labelPosition
|
|
119
130
|
},
|