@skbkontur/react-ui 0.0.0-7feb61cdde → 0.0.0-80c5917afc
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/CHANGELOG.md +94 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +5 -0
- package/cjs/components/Autocomplete/Autocomplete.js +18 -4
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +1 -1
- package/cjs/components/Button/Button.js +7 -2
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +6 -4
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Button/getInnerLinkTheme.js +2 -3
- package/cjs/components/Button/getInnerLinkTheme.js.map +1 -1
- package/cjs/components/Calendar/Calendar.styles.js +1 -2
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +1 -1
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.styles.d.ts +1 -1
- package/cjs/components/Calendar/DayCellView.styles.js +4 -4
- package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +10 -0
- package/cjs/components/Checkbox/Checkbox.js +70 -15
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.md +18 -0
- package/cjs/components/Checkbox/Checkbox.mixins.d.ts +2 -0
- package/cjs/components/Checkbox/Checkbox.mixins.js +35 -0
- package/cjs/components/Checkbox/Checkbox.mixins.js.map +1 -0
- package/cjs/components/Checkbox/Checkbox.styles.d.ts +6 -0
- package/cjs/components/Checkbox/Checkbox.styles.js +95 -34
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.md +5 -3
- package/cjs/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
- package/cjs/components/CurrencyInput/CurrencyHelper.js +21 -6
- package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +3 -0
- package/cjs/components/DateInput/DateInput.js +11 -3
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/Dropdown/getDropdownTheme.js +3 -1
- package/cjs/components/Dropdown/getDropdownTheme.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +4 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +28 -0
- package/cjs/components/DropdownMenu/getDropdownMenuTheme.js +5 -1
- package/cjs/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.styles.js +3 -2
- package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +2 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.js +6 -4
- package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +1 -5
- package/cjs/components/Input/Input.js +4 -5
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.js +3 -2
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +1 -1
- package/cjs/components/Kebab/Kebab.js +6 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Kebab/Kebab.md +28 -0
- package/cjs/components/Link/Link.js +4 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.mixins.d.ts +1 -2
- package/cjs/components/Link/Link.mixins.js +5 -16
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/Link/Link.styles.d.ts +2 -0
- package/cjs/components/Link/Link.styles.js +58 -38
- package/cjs/components/Link/Link.styles.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.js +1 -1
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.js +1 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Radio/Radio.styles.js +6 -2
- package/cjs/components/Radio/Radio.styles.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +3 -2
- package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +7 -5
- package/cjs/components/Select/Select.js +15 -6
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/Select.styles.js +3 -2
- package/cjs/components/Select/Select.styles.js.map +1 -1
- package/cjs/components/Select/selectTheme.js +4 -1
- package/cjs/components/Select/selectTheme.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +1 -0
- package/cjs/components/Tabs/Tab.js +15 -1
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tab.styles.d.ts +9 -3
- package/cjs/components/Tabs/Tab.styles.js +106 -68
- package/cjs/components/Tabs/Tab.styles.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +8 -2
- package/cjs/components/Tabs/Tabs.js +15 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Tabs/Tabs.md +32 -0
- package/cjs/components/Tabs/Tabs.styles.d.ts +3 -1
- package/cjs/components/Tabs/Tabs.styles.js +23 -7
- package/cjs/components/Tabs/Tabs.styles.js.map +1 -1
- package/cjs/components/Tabs/TabsContext.d.ts +2 -1
- package/cjs/components/Tabs/TabsContext.js +2 -0
- package/cjs/components/Tabs/TabsContext.js.map +1 -1
- package/cjs/components/Tabs/helpers.d.ts +6 -0
- package/cjs/components/Tabs/helpers.js +30 -0
- package/cjs/components/Tabs/helpers.js.map +1 -0
- package/cjs/components/Textarea/Textarea.styles.js +2 -2
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Toast/ToastView.styles.js +2 -2
- package/cjs/components/Toast/ToastView.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +11 -1
- package/cjs/components/Toggle/Toggle.js +102 -2
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.md +16 -2
- package/cjs/components/Toggle/Toggle.mixins.d.ts +7 -0
- package/cjs/components/Toggle/Toggle.mixins.js +90 -0
- package/cjs/components/Toggle/Toggle.mixins.js.map +1 -0
- package/cjs/components/Toggle/Toggle.styles.d.ts +21 -1
- package/cjs/components/Toggle/Toggle.styles.js +172 -56
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
- package/cjs/components/TokenInput/TokenInput.js +8 -2
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.md +26 -35
- package/cjs/components/TokenInput/TokenInput.styles.js +2 -1
- package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.d.ts +7 -0
- package/cjs/components/TokenInput/TokenInputMenu.js +9 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js +8 -2
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.md +28 -0
- package/cjs/internal/CloseButtonIcon/CloseButtonIcon.styles.js +2 -1
- package/cjs/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +10 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js +11 -3
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js +13 -11
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.js +1 -1
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.styles.d.ts +3 -0
- package/cjs/internal/DateSelect/DateSelect.styles.js +15 -3
- package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -2
- package/cjs/internal/DropdownContainer/DropdownContainer.js +6 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -4
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +7 -5
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +16 -4
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.d.ts +13 -4
- package/cjs/internal/InternalMenu/InternalMenu.js +15 -5
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.styles.d.ts +1 -0
- package/cjs/internal/InternalMenu/InternalMenu.styles.js +13 -7
- package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
- package/cjs/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
- package/cjs/internal/InternalMenu/isIconPaddingEnabled.js +9 -0
- package/cjs/internal/InternalMenu/isIconPaddingEnabled.js.map +1 -0
- package/cjs/internal/Menu/Menu.d.ts +42 -8
- package/cjs/internal/Menu/Menu.js +272 -78
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Menu/Menu.styles.d.ts +6 -1
- package/cjs/internal/Menu/Menu.styles.js +42 -8
- package/cjs/internal/Menu/Menu.styles.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -2
- package/cjs/internal/MobilePopup/MobilePopup.js +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +7 -2
- package/cjs/internal/Popup/Popup.js +13 -3
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +29 -4
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +114 -17
- package/cjs/internal/themes/DefaultTheme.js +244 -68
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/Theme2022.d.ts +19 -3
- package/cjs/internal/themes/Theme2022.js +33 -13
- package/cjs/internal/themes/Theme2022.js.map +1 -1
- package/cjs/internal/themes/Theme2022Dark.d.ts +0 -4
- package/cjs/internal/themes/Theme2022Dark.js +3 -14
- package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
- package/cjs/typings/html.d.ts +0 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +13 -3
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +5 -0
- package/components/Button/Button/Button.js +2 -0
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -1
- package/components/Button/Button.styles/Button.styles.js +2 -2
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js +2 -3
- package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js.map +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
- package/components/Calendar/DayCellView/DayCellView.js +1 -1
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js +2 -2
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js +56 -8
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +10 -0
- package/components/Checkbox/Checkbox.md +18 -0
- package/components/Checkbox/Checkbox.mixins/Checkbox.mixins.js +17 -0
- package/components/Checkbox/Checkbox.mixins/Checkbox.mixins.js.map +1 -0
- package/components/Checkbox/Checkbox.mixins/package.json +6 -0
- package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +39 -25
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/Checkbox/Checkbox.styles.d.ts +6 -0
- package/components/ComboBox/ComboBox.md +5 -3
- package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +32 -4
- package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
- package/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
- package/components/DateInput/DateInput/DateInput.js +5 -1
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +3 -0
- package/components/Dropdown/getDropdownTheme/getDropdownTheme.js +3 -1
- package/components/Dropdown/getDropdownTheme/getDropdownTheme.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -0
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/components/DropdownMenu/DropdownMenu.md +28 -0
- package/components/DropdownMenu/getDropdownMenuTheme/getDropdownMenuTheme.js +5 -1
- package/components/DropdownMenu/getDropdownMenuTheme/getDropdownMenuTheme.js.map +1 -1
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +1 -1
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +6 -2
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.d.ts +2 -1
- package/components/Input/Input/Input.js +3 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +1 -5
- package/components/Input/Input.styles/Input.styles.js +2 -2
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +4 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +1 -1
- package/components/Kebab/Kebab.md +28 -0
- package/components/Link/Link/Link.js +4 -4
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.mixins/Link.mixins.js +2 -5
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/Link/Link.mixins.d.ts +1 -2
- package/components/Link/Link.styles/Link.styles.js +29 -21
- package/components/Link/Link.styles/Link.styles.js.map +1 -1
- package/components/Link/Link.styles.d.ts +2 -0
- package/components/Modal/ModalFooter/ModalFooter.js +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Radio/Radio.styles/Radio.styles.js +2 -2
- package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +3 -2
- package/components/Select/Select/Select.js +15 -7
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +7 -5
- package/components/Select/Select.styles/Select.styles.js +1 -1
- package/components/Select/Select.styles/Select.styles.js.map +1 -1
- package/components/Select/selectTheme/selectTheme.js +3 -1
- package/components/Select/selectTheme/selectTheme.js.map +1 -1
- package/components/Tabs/Tab/Tab.js +3 -3
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +1 -0
- package/components/Tabs/Tab.styles/Tab.styles.js +52 -23
- package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
- package/components/Tabs/Tab.styles.d.ts +9 -3
- package/components/Tabs/Tabs/Tabs.js +11 -3
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +8 -2
- package/components/Tabs/Tabs.md +32 -0
- package/components/Tabs/Tabs.styles/Tabs.styles.js +15 -4
- package/components/Tabs/Tabs.styles/Tabs.styles.js.map +1 -1
- package/components/Tabs/Tabs.styles.d.ts +3 -1
- package/components/Tabs/TabsContext/TabsContext.js +1 -0
- package/components/Tabs/TabsContext/TabsContext.js.map +1 -1
- package/components/Tabs/TabsContext.d.ts +2 -1
- package/components/Tabs/helpers/helpers.js +25 -0
- package/components/Tabs/helpers/helpers.js.map +1 -0
- package/components/Tabs/helpers/package.json +6 -0
- package/components/Tabs/helpers.d.ts +6 -0
- package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Toast/ToastView.styles/ToastView.styles.js +1 -1
- package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +112 -9
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +11 -1
- package/components/Toggle/Toggle.md +16 -2
- package/components/Toggle/Toggle.mixins/Toggle.mixins.js +35 -0
- package/components/Toggle/Toggle.mixins/Toggle.mixins.js.map +1 -0
- package/components/Toggle/Toggle.mixins/package.json +6 -0
- package/components/Toggle/Toggle.mixins.d.ts +7 -0
- package/components/Toggle/Toggle.styles/Toggle.styles.js +85 -31
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +21 -1
- package/components/TokenInput/TokenInput/TokenInput.js +9 -3
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +2 -0
- package/components/TokenInput/TokenInput.md +26 -35
- package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
- package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/TokenInput/TokenInputMenu.d.ts +7 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +7 -2
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +1 -1
- package/components/TooltipMenu/TooltipMenu.md +28 -0
- package/internal/CloseButtonIcon/CloseButtonIcon.styles/CloseButtonIcon.styles.js +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.styles/CloseButtonIcon.styles.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +10 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +4 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +23 -20
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +2 -1
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +5 -2
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles.d.ts +3 -0
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +2 -0
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +3 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +5 -4
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -4
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +20 -8
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +11 -6
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.d.ts +13 -4
- package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +10 -7
- package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.styles.d.ts +1 -0
- package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js +6 -0
- package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js.map +1 -0
- package/internal/InternalMenu/isIconPaddingEnabled/package.json +6 -0
- package/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
- package/internal/Menu/Menu/Menu.js +197 -42
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +42 -8
- package/internal/Menu/Menu.styles/Menu.styles.js +20 -5
- package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
- package/internal/Menu/Menu.styles.d.ts +6 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +1 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +2 -2
- package/internal/Popup/Popup/Popup.js +9 -3
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +7 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +27 -5
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +4 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +320 -88
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +114 -17
- package/internal/themes/Theme2022/Theme2022.js +59 -44
- package/internal/themes/Theme2022/Theme2022.js.map +1 -1
- package/internal/themes/Theme2022.d.ts +19 -3
- package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -18
- package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
- package/internal/themes/Theme2022Dark.d.ts +0 -4
- package/package.json +3 -3
- package/typings/html.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","ReactDOM","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","effects","nextState","flushSync","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n setTimeout(() => {\n this.dispatch({ type: 'Mount' });\n }, 0);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n setTimeout(() => {\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }, 0);\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n ReactDOM.flushSync(() => {\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n });\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CustomComboBox.tsx"],"names":["React","ReactDOM","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","responsiveLayout","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBoxDataTids","comboBoxView","CustomComboBox","state","requestId","cancelationToken","cancelLoaderDelay","focus","props","disabled","input","inputLikeText","selectInputText","selectAll","blur","handleBlur","dispatch","action","updateState","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","version","search","flushSync","effect","getState","getProps","handleValueChange","value","type","keepFocus","isMobileLayout","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","query","getItems","cancelPromise","Promise","_","reject","expectingId","loaderShowDelay","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","menuPos","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","itemWrapper","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","menu","refInputLikeText","setRootNode","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"0XAAA,OAAOA,KAAP,MAAsC,OAAtC;AACA,OAAOC,QAAP,MAAqB,WAArB;;;;;;;AAOA,SAASC,gBAAT,EAA2BC,aAA3B,QAAgD,iBAAhD;AACA,SAASC,eAAT,QAAgC,kCAAhC;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,gBAAT,QAAiC,6CAAjC;AACA,SAASC,QAAT,QAAuC,oBAAvC;;;AAGA,SAASC,qBAAT,QAAsC,uBAAtC;AACA,SAAqDC,OAArD,QAAoE,yBAApE;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,OAAO,IAAMC,wBAAwB,GAAG,GAAjC;AACP,OAAO,IAAMC,gBAAgB,GAAG,IAAzB;;AAEP,OAAO,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,YAAY,EAAE,KADY;AAE1BC,EAAAA,OAAO,EAAE,KAFiB;AAG1BC,EAAAA,KAAK,EAAE,IAHmB;AAI1BC,EAAAA,OAAO,EAAE,KAJiB;AAK1BC,EAAAA,MAAM,EAAE,KALkB;AAM1BC,EAAAA,OAAO,EAAE,KANiB;AAO1BC,EAAAA,SAAS,EAAE,EAPe;AAQ1BC,EAAAA,aAAa,EAAE,iCAAMC,SAAN,EARW;AAS1BC,EAAAA,aAAa,EAAEf,qBAAqB,CAACgB,OATX,EAArB;;;AAYP,OAAO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,YAAY,EAAE,oBADsB,EAA/B;;;;;AAMP,WAAaC,cAAb,GAFCrB,gBAED,UADCC,QACD;;;AAGSqB,IAAAA,KAHT,GAGyCf,YAHzC;;;;AAOSgB,IAAAA,SAPT,GAOqB,CAPrB;;AASUV,IAAAA,OATV,GASoB,KATpB;AAUUW,IAAAA,gBAVV,GAUiE,IAVjE;;;AAaUrB,IAAAA,OAbV,GAaoBA,OAbpB;AAcSsB,IAAAA,iBAdT,GAcyC,oBAAM,IAAN,EAdzC;;;;;AAmBSC,IAAAA,KAnBT,GAmBiB,YAAM;AACnB,UAAI,MAAKC,KAAL,CAAWC,QAAf,EAAyB;AACvB;AACD;;AAED,UAAI,MAAKC,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWH,KAAX;AACD,OAFD,MAEO,IAAI,MAAKI,aAAT,EAAwB;AAC7B,cAAKA,aAAL,CAAmBJ,KAAnB;AACD;AACF,KA7BH;;;;;AAkCSK,IAAAA,eAlCT,GAkC2B,YAAM;AAC7B,UAAI,MAAKJ,KAAL,CAAWC,QAAf,EAAyB;AACvB;AACD;AACD,UAAI,MAAKC,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWG,SAAX;AACD;AACF,KAzCH;;;;;AA8CSC,IAAAA,IA9CT,GA8CgB,YAAM;AAClB,UAAI,MAAKN,KAAL,CAAWC,QAAf,EAAyB;AACvB;AACD;;AAED,YAAKM,UAAL;AACD,KApDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuOUC,IAAAA,QAvOV,GAuOqB,UAACC,MAAD,EAAqC;AACtD,UAAMC,WAAW,GAAG,SAAdA,WAAc,CAACD,MAAD,EAAqC;AACvD,YAAIE,OAAJ;AACA,YAAIC,SAAJ;;AAEA,cAAKC,QAAL;AACE,kBAAClB,KAAD,EAAW;AACT,cAAMmB,cAAc,GAAG,MAAKtC,OAAL,CAAamB,KAAb,EAAoB,MAAKK,KAAzB,EAAgCS,MAAhC,CAAvB,CADS;AAEcK,UAAAA,cAAc,YAAYC,KAA1B,GAAkCD,cAAlC,GAAmD,CAACA,cAAD,EAAiB,EAAjB,CAFjE,CAERF,SAFQ,WAEGD,OAFH;AAGT,iBAAOC,SAAP;AACD,SALH;AAME,oBAAM;AACJD,UAAAA,OAAO,CAACK,OAAR,CAAgB,MAAKC,YAArB;AACD,SARH;;AAUD,OAdD;;AAgBA;AACA;AACA,UAAIlD,KAAK,CAACmD,OAAN,CAAcC,MAAd,CAAqB,IAArB,MAA+B,CAAnC,EAAsC;AACpCnD,QAAAA,QAAQ,CAACoD,SAAT,CAAmB,oBAAMV,WAAW,CAACD,MAAD,CAAjB,EAAnB;AACD,OAFD,MAEO;AACLC,QAAAA,WAAW,CAACD,MAAD,CAAX;AACD;AACF,KA/PH;;AAiQUQ,IAAAA,YAjQV,GAiQyB,UAACI,MAAD,EAAqC;AAC1DA,MAAAA,MAAM,CAAC,MAAKb,QAAN,EAAgB,MAAKc,QAArB,EAA+B,MAAKC,QAApC,EAA8C,mDAA9C,CAAN;AACD,KAnQH;;AAqQUA,IAAAA,QArQV,GAqQqB,oBAAM,MAAKvB,KAAX,EArQrB;;AAuQUsB,IAAAA,QAvQV,GAuQqB,oBAAM,MAAK3B,KAAX,EAvQrB;;AAyQU6B,IAAAA,iBAzQV,GAyQ8B,UAACC,KAAD,EAAc;AACxC,YAAKjB,QAAL,CAAc;AACZkB,QAAAA,IAAI,EAAE,aADM;AAEZD,QAAAA,KAAK,EAALA,KAFY;AAGZE,QAAAA,SAAS,EAAE,CAAC,MAAKC,cAHL,EAAd;;AAKD,KA/QH;;AAiRUC,IAAAA,WAjRV,GAiRwB,YAAM;AAC1B,UAAI,MAAK3C,OAAT,EAAkB;AAChB;AACD;AACD,YAAKA,OAAL,GAAe,IAAf;AACA,YAAKsB,QAAL,CAAc,EAAEkB,IAAI,EAAE,OAAR,EAAd;AACD,KAvRH;;AAyRUI,IAAAA,kBAzRV,GAyR+B,UAACC,CAAD,EAAc;AACzC5D,MAAAA,eAAe,CAAC4D,CAAD,CAAf;AACA,YAAKxB,UAAL;AACD,KA5RH;;AA8RUA,IAAAA,UA9RV,GA8RuB,YAAM;AACzB,UAAI,CAAC,MAAKrB,OAAV,EAAmB;AACjB,YAAI,MAAKS,KAAL,CAAWV,MAAf,EAAuB;AACrB,gBAAK+C,KAAL;AACD;AACD;AACD;;AAED,YAAK9C,OAAL,GAAe,KAAf;AACA;AACA;AACA;AACA+C,MAAAA,UAAU,CAAC,YAAM;AACf,cAAKzB,QAAL,CAAc,EAAEkB,IAAI,EAAE,MAAR,EAAd;AACD,OAFS,CAAV;AAGD,KA7SH;;AA+SUQ,IAAAA,eA/SV,GA+S4B,YAAM;AAC9B;AACA;AACA;;AAEA;;AAEA,UAAI,MAAKvC,KAAL,CAAWV,MAAf,EAAuB;AACrB;AACD;AACD,YAAKsB,UAAL;AACD,KA1TH;;AA4TU4B,IAAAA,gBA5TV,GA4T6B,YAAM;AAC/B,UAAI,CAAC,MAAKtC,gBAAV,EAA4B;AAC1B,cAAKW,QAAL,CAAc,EAAEkB,IAAI,EAAE,YAAR,EAAd;AACD;AACF,KAhUH,sDAuDE;AACF;AACA,KAzDA,OA0DeP,MA1Df,oGA0DE,iBAAoBiB,KAApB,gMAAoBA,KAApB,cAAoBA,KAApB,GAAoC,KAAKzC,KAAL,CAAWR,SAA/C,EACUkD,QADV,GACuB,KAAKrC,KAD5B,CACUqC,QADV,CAGQC,aAHR,GAGwC,IAAIC,OAAJ,CAAY,UAACC,CAAD,EAAIC,MAAJ,UAAgB,MAAI,CAAC5C,gBAAL,GAAwB4C,MAAxC,EAAZ,CAHxC,CAIE,KAAK7C,SAAL,IAAkB,CAAlB,CACM8C,WALR,GAKsB,KAAK9C,SAL3B,CAOE,IAAI,CAAC,KAAK+C,eAAV,EAA2B,CACzB,KAAKA,eAAL,GAAuB,IAAIJ,OAAJ,CAAkB,UAACK,OAAD,EAAa,CACpD,IAAMC,YAAY,GAAG3E,aAAa,CAAC,YAAM,CACvC,MAAI,CAACsC,QAAL,CAAc,EAAEkB,IAAI,EAAE,cAAR,EAAd,EACAO,UAAU,CAACW,OAAD,EAAUjE,gBAAV,CAAV,CACD,CAHiC,EAG/BD,wBAH+B,CAAlC,CAKA4D,aAAa,SAAb,CAAoB,oBAAMO,YAAY,EAAlB,EAApB,EAEA,MAAI,CAAC/C,iBAAL,GAAyB,YAAM,CAC7B+C,YAAY,GACZD,OAAO,GACR,CAHD,CAID,CAZsB,CAAvB,CAaD,CArBH,2CAwBwBL,OAAO,CAACO,IAAR,CAAa,CAACT,QAAQ,CAACD,KAAD,CAAT,EAAkBE,aAAlB,CAAb,CAxBxB,QAwBUvD,KAxBV,sBAyBQ,KAAKY,KAAL,CAAWX,OAzBnB,uDA0BYuD,OAAO,CAACO,IAAR,CAAa,CAAC,KAAKH,eAAN,EAAuBL,aAAvB,CAAb,CA1BZ,SA4BI,IAAII,WAAW,KAAK,KAAK9C,SAAzB,EAAoC,CAClC,KAAKY,QAAL,CAAc,EACZkB,IAAI,EAAE,cADM,EAEZ3C,KAAK,EAALA,KAFY,EAAd,EAID,CAjCL,uFAmCI,IAAI,eAAS,YAAMgE,IAAN,KAAe,kBAA5B,EAAgD,CAC9C,KAAKvC,QAAL,CAAc,EAAEkB,IAAI,EAAE,eAAR,EAAd,EACD,CAFD,MAEO,IAAIgB,WAAW,KAAK,KAAK9C,SAAzB,EAAoC,CACzC,KAAKY,QAAL,CAAc,EACZkB,IAAI,EAAE,gBADM,EAEZtC,aAAa,EAAE,yBAAM,CACnB,MAAI,CAAC+B,MAAL,CAAYiB,KAAZ,EACA,IAAI,MAAI,CAAClC,KAAT,EAAgB,CACd,MAAI,CAACA,KAAL,CAAWH,KAAX,GACD,CACF,CAPW,EAAd,EASD,CA/CL,2BAiDI,IAAI2C,WAAW,KAAK,KAAK9C,SAAzB,EAAoC,CAClC,IAAI,CAAC,KAAKD,KAAL,CAAWX,OAAhB,EAAyB,CACvB,KAAKc,iBAAL,GACD,CACD,KAAKD,gBAAL,GAAwB,IAAxB,CACA,KAAK8C,eAAL,GAAuB,IAAvB,CACD,CAvDL,6GA1DF,iFAqHE;AACF;AACA,KAvHA,QAwHSK,YAxHT,GAwHE,wBAAsB,CACpB,IAAI,KAAKnD,gBAAT,EAA2B,CACzB,KAAKA,gBAAL,CAAsB,IAAI5B,gBAAJ,EAAtB,EACD,CACF,CA5HH,CA8HE;AACF;AACA,KAhIA,QAiISgF,IAjIT,GAiIE,gBAAc,CACZ,KAAKzC,QAAL,CAAc,EAAEkB,IAAI,EAAE,MAAR,EAAd,EACD,CAnIH,CAqIE;AACF;AACA,KAvIA,QAwISM,KAxIT,GAwIE,iBAAe,CACb,KAAKxB,QAAL,CAAc,EAAEkB,IAAI,EAAE,OAAR,EAAd,EACD,CA1IH,QA4ISwB,MA5IT,GA4IE,kBAAgB,mBACd,IAAMC,SAAS,GAAG,EAChBC,KAAK,EAAE,KAAKpD,KAAL,CAAWoD,KADF,EAEhBC,UAAU,EAAE,KAAKrD,KAAL,CAAWqD,UAFP,EAGhBpD,QAAQ,EAAE,KAAKD,KAAL,CAAWC,QAHL,EAIhBqD,aAAa,EAAE,KAAKtD,KAAL,CAAWsD,aAJV,EAKhBxE,OAAO,EAAE,KAAKa,KAAL,CAAWb,OALJ,EAMhByE,KAAK,EAAE,KAAKvD,KAAL,CAAWuD,KANF,EAOhBxE,KAAK,EAAE,KAAKY,KAAL,CAAWZ,KAPF,EAQhBC,OAAO,EAAE,KAAKW,KAAL,CAAWX,OARJ,EAShBwE,SAAS,EAAE,KAAKxD,KAAL,CAAWwD,SATN,EAUhBvE,MAAM,EAAE,KAAKU,KAAL,CAAWV,MAVH,EAWhBwE,SAAS,EAAE,KAAKzD,KAAL,CAAWyD,SAXN,EAYhBC,OAAO,EAAE,KAAK1D,KAAL,CAAW0D,OAZJ,EAahBC,WAAW,EAAE,KAAK3D,KAAL,CAAW2D,WAbR,EAchBC,IAAI,EAAE,KAAK5D,KAAL,CAAW4D,IAdD,EAehBzE,SAAS,EAAE,KAAKQ,KAAL,CAAWR,SAfN,EAgBhB0E,UAAU,EAAE,KAAK7D,KAAL,CAAW6D,UAhBP,EAiBhBpC,KAAK,EAAE,KAAKzB,KAAL,CAAWyB,KAjBF,EAkBhBqC,OAAO,EAAE,KAAK9D,KAAL,CAAW8D,OAlBJ,EAmBhB,oBAAoB,KAAK9D,KAAL,CAAW,kBAAX,CAnBJ,EAoBhB+D,KAAK,EAAE,KAAK/D,KAAL,CAAW+D,KApBF,EAqBhBC,SAAS,EAAE,KAAKhE,KAAL,CAAWgE,SArBN,EAsBhBC,aAAa,EAAE,KAAKjE,KAAL,CAAWiE,aAtBV,EAuBhBC,QAAQ,EAAE,KAAKlE,KAAL,CAAWkE,QAvBL,EAwBhBC,SAAS,EAAE,KAAKnE,KAAL,CAAWmE,SAxBN,EAyBhBC,SAAS,EAAE,KAAKpE,KAAL,CAAWoE,SAzBN,EA2BhBC,aAAa,EAAE,KAAK7C,iBA3BJ,EA4BhB8C,cAAc,EAAE,KAAKxC,kBA5BL,EA6BhByC,OAAO,EAAE,KAAK1C,WA7BE,EA8BhB2C,cAAc,EAAE,KAAKjE,UA9BL,EA+BhBkE,WAAW,EAAE,KAAKvC,eA/BF,EAgChBwC,kBAAkB,EAAE,4BAACjD,KAAD,UAAmB,MAAI,CAACjB,QAAL,CAAc,EAAEkB,IAAI,EAAE,YAAR,EAAsBD,KAAK,EAALA,KAAtB,EAAd,CAAnB,EAhCJ,EAiChBkD,YAAY,EAAE,KAAK9C,WAjCH,EAkChB+C,YAAY,EAAE,KAAKzC,gBAlCH,EAmChB0C,cAAc,EAAE,wBAACC,KAAD,EAAgC,CAC9CA,KAAK,CAACC,OAAN,GACA,MAAI,CAACvE,QAAL,CAAc,EAAEkB,IAAI,EAAE,UAAR,EAAoBoD,KAAK,EAALA,KAApB,EAAd,EACD,CAtCe,EAuChBE,YAAY,EAAE,KAAKhF,KAAL,CAAWgF,YAvCT,EAwChBC,WAAW,EAAE,KAAKjF,KAAL,CAAWiF,WAxCR,EAyChBC,YAAY,EAAE,KAAKlF,KAAL,CAAWkF,YAzCT,EA0ChBC,UAAU,EAAE,KAAKnF,KAAL,CAAWmF,UA1CP,EA2ChBC,cAAc,EAAE,KAAKpF,KAAL,CAAWoF,cA3CX,EA4ChBC,WAAW,EAAE,KAAKrF,KAAL,CAAWqF,WA5CR,EA6ChBC,WAAW,EAAE,KAAKtF,KAAL,CAAWsF,WA7CR,EA8ChBC,gBAAgB,EAAE,KAAKvF,KAAL,CAAWuF,gBA9Cb,EA+ChBC,eAAe,EAAE,KAAKxF,KAAL,CAAWwF,eA/CZ,EAgDhBpG,aAAa,EAAE,KAAKO,KAAL,CAAWP,aAhDV,EAiDhBE,aAAa,EAAE,KAAKK,KAAL,CAAWL,aAjDV,EAmDhBmG,QAAQ,EAAE,kBAACvF,KAAD,EAA4B,CACpC,MAAI,CAACA,KAAL,GAAaA,KAAb,CACD,CArDe,EAsDhBwF,OAAO,EAAE,iBAACC,IAAD,EAA0B,CACjC,MAAI,CAACA,IAAL,GAAYA,IAAZ,CACD,CAxDe,EAyDhBC,gBAAgB,EAAE,0BAACzF,aAAD,EAA4C,CAC5D,MAAI,CAACA,aAAL,GAAqBA,aAArB,CACD,CA3De,EAAlB,CA8DA,oBACE,oBAAC,aAAD,EAAmB,KAAKH,KAAxB,eACE,oBAAC,YAAD,eAAkBmD,SAAlB,IAA6B,GAAG,EAAE,KAAK0C,WAAvC,IADF,CADF,CAKD,CAhNH,QAkNSC,iBAlNT,GAkNE,6BAA2B,CACzB,KAAKtF,QAAL,CAAc,EAAEkB,IAAI,EAAE,OAAR,EAAd,EACA,IAAI,KAAK1B,KAAL,CAAW+F,SAAf,EAA0B,CACxB,KAAKhG,KAAL,GACD,CACF,CAvNH,QAyNSiG,kBAzNT,GAyNE,4BAA0BC,SAA1B,EAA6DC,SAA7D,EAAgG,CAC9F,IAAIA,SAAS,CAACpH,OAAV,IAAqB,CAAC,KAAKa,KAAL,CAAWb,OAArC,EAA8C,CAC5C,KAAKyB,UAAL,GACD,CACD,KAAKC,QAAL,CAAc,EAAEkB,IAAI,EAAE,WAAR,EAAqBuE,SAAS,EAATA,SAArB,EAAgCC,SAAS,EAATA,SAAhC,EAAd,EACD,CA9NH,CAgOE;AACF;AACA,KAlOA,QAmOSC,KAnOT,GAmOE,iBAAe,CACb,KAAK3F,QAAL,CAAc,EAAEkB,IAAI,EAAE,OAAR,EAAd,EACD,CArOH,yBAAuC3D,KAAK,CAACqI,aAA7C,WACgBC,mBADhB,GACsC,gBADtC","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { DropdownContainerProps } from '../DropdownContainer';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport const CustomComboBoxDataTids = {\n comboBoxView: 'ComboBoxView__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n private isMobileLayout!: boolean;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n this.requestId += 1;\n const expectingId = this.requestId;\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n menuPos: this.props.menuPos,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n 'aria-describedby': this.props['aria-describedby'],\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n itemWrapper: this.props.itemWrapper,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n const updateState = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (React.version.search('18') === 0) {\n ReactDOM.flushSync(() => updateState(action));\n } else {\n updateState(action);\n }\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: !this.isMobileLayout,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n\n // TODO: add check for mobile layout, to call `handleBlur`\n\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
|
|
@@ -22,7 +22,7 @@ import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
|
22
22
|
import { ArrowCollapseCVOpenIcon16Regular } from "../../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular";
|
|
23
23
|
import { ArrowCUpIcon16Regular } from "../../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular";
|
|
24
24
|
import { ArrowCDownIcon16Regular } from "../../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular";
|
|
25
|
-
import { styles } from "../DateSelect.styles";
|
|
25
|
+
import { globalClasses, styles } from "../DateSelect.styles";
|
|
26
26
|
var itemHeight = 24;
|
|
27
27
|
var visibleYearsCount = 11;
|
|
28
28
|
var itemsToMoveCount = -5;
|
|
@@ -346,6 +346,7 @@ export var DateSelect = (_dec = locale('Calendar', DatePickerLocaleHelper), _dec
|
|
|
346
346
|
"data-tid": DateSelectDataTids.caption,
|
|
347
347
|
className: styles.caption()
|
|
348
348
|
}, this.getItem(0)), !disabled && /*#__PURE__*/React.createElement(ArrowCollapseCVOpenIcon16Regular, {
|
|
349
|
+
className: cx(globalClasses.arrow),
|
|
349
350
|
color: "#ADADAD"
|
|
350
351
|
}), this.state.opened && this.renderMenu());
|
|
351
352
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","rootProps","className","Boolean","style","ref","getItem","arrow","arrowDisabled","renderMenu","root2022","onClick","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menu","menuUp","itemsHolder","menuDown","type","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"iKAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,WAAT,QAA4B,uCAA5B;AACA,SAA2BC,sBAA3B,QAAyD,oCAAzD;AACA,SAASC,MAAT,QAAuB,6BAAvB;AACA,SAASC,WAAT,QAA4B,gBAA5B;AACA,SAASC,iBAAT,QAAkC,sBAAlC;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;;;AAGA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,uBAAT,EAAkCC,oBAAlC,EAAwDC,kBAAxD,QAAkF,eAAlF;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,UAAT,QAA2B,0BAA3B;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,WAAT,QAA4B,gCAA5B;AACA,SAASC,gCAAT,QAAiD,uEAAjD;AACA,SAASC,qBAAT,QAAsC,iDAAtC;AACA,SAASC,uBAAT,QAAwC,qDAAxC;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;AAEA,IAAMC,UAAU,GAAG,EAAnB;AACA,IAAMC,iBAAiB,GAAG,EAA1B;AACA,IAAMC,gBAAgB,GAAG,CAAC,CAA1B;AACA,IAAMC,WAAW,GAAG,EAApB;AACA,IAAMC,cAAc,GAAG,IAAvB;AACA,IAAMC,cAAc,GAAG,IAAvB;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAcC,MAAd,EAA8BC,MAA9B,EAAiD;AACpE,MAAIA,MAAM,IAAIF,GAAd,EAAmB;AACjB,WAAOE,MAAP;AACD;;AAED,MAAID,MAAM,IAAID,GAAd,EAAmB;AACjB,WAAOC,MAAP;AACD;;AAED,SAAOD,GAAP;AACD,CAVD;;AAYA,OAAO,IAAMG,kBAAkB,GAAG;AAChCC,EAAAA,OAAO,EAAE,qBADuB;AAEhCC,EAAAA,QAAQ,EAAE,sBAFsB,EAA3B;;;;;;AAQP,WAAaC,UAAb,WADC9B,MAAM,CAAC,UAAD,EAAaD,sBAAb,CACP;;;;;;;;;;;;;;;;;;;;;;;;AAwBUgC,IAAAA,QAxBV,GAwBqBpB,iBAAiB,CAACmB,UAAU,CAACE,YAAZ,CAxBtC;;AA0BSC,IAAAA,KA1BT,GA0BiB;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,OAAO,EAAE,CAFI;AAGbC,MAAAA,MAAM,EAAE,CAHK;AAIbC,MAAAA,MAAM,EAAE,KAJK;AAKbb,MAAAA,GAAG,EAAE,CALQ;AAMbc,MAAAA,GAAG,EAAE,CANQ;AAObC,MAAAA,SAAS,EAAE,KAPE;AAQbC,MAAAA,OAAO,EAAEC,QARI,EA1BjB;;;;;AAuCUC,IAAAA,IAvCV,GAuCqC,IAvCrC;AAwCUC,IAAAA,cAxCV,GAwC+C,IAxC/C;;;AA2CUC,IAAAA,cA3CV,GA2C2B,CA3C3B;AA4CUC,IAAAA,sBA5CV,GA4CmC,CA5CnC;AA6CUC,IAAAA,QA7CV,GA6CqB,CA7CrB;AA8CUC,IAAAA,WA9CV,GA8C0C,IA9C1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6ESC,IAAAA,IA7ET,GA6EgB,YAAM;AAClB,UAAI,MAAKC,KAAL,CAAWC,QAAf,EAAyB;AACvB;AACD;;AAED,UAAI,MAAKjB,KAAL,CAAWI,MAAf,EAAuB;AACrB;AACD;;AAED,YAAKc,WAAL,CAAiB,CAAjB;AACA,YAAKC,QAAL,CAAc;AACZf,QAAAA,MAAM,EAAE,IADI;AAEZF,QAAAA,OAAO,EAAE,CAFG,EAAd;;AAID,KA3FH;;;;;AAgGSkB,IAAAA,KAhGT,GAgGiB,YAAM;AACnB,UAAI,CAAC,MAAKpB,KAAL,CAAWI,MAAhB,EAAwB;AACtB;AACD;;AAED,YAAKe,QAAL,CAAc,EAAEf,MAAM,EAAE,KAAV,EAAd;AACD,KAtGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyKUiB,IAAAA,OAzKV,GAyKoB,UAACC,OAAD,EAAiC;AACjD,YAAKb,IAAL,GAAYa,OAAZ;AACD,KA3KH;;AA6KUC,IAAAA,UA7KV,GA6KuB,YAAM;AACzB,UAAMd,IAAI,GAAG,MAAKA,IAAlB;AACA,UAAI,CAACA,IAAL,EAAW;AACT;AACD;AACD,UAAI,MAAKe,OAAT,EAAkB;AAChBC,QAAAA,YAAY,CAAC,MAAKD,OAAN,CAAZ;AACD;AACD,YAAKA,OAAL,GAAeE,UAAU,CAAC;AACxB,gBAAKP,QAAL,CAAc;AACZZ,YAAAA,OAAO,EAAE9B,UAAU,CAACgC,IAAD,CAAV,CAAiBJ,GADd,EAAd,CADwB,GAAD,CAAzB;;;AAKD,KA1LH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2TUsB,IAAAA,iBA3TV,GA2T8B,UAACL,OAAD,EAAiC;AAC3D,UAAI,CAAC,MAAKZ,cAAN,IAAwBY,OAA5B,EAAqC;AACnCA,QAAAA,OAAO,CAACM,gBAAR,CAAyB,OAAzB,EAAkC,MAAKC,WAAvC,EAAoD,EAAEC,OAAO,EAAE,KAAX,EAApD;AACD;AACD,UAAI,MAAKpB,cAAL,IAAuB,CAACY,OAA5B,EAAqC;AACnC,cAAKZ,cAAL,CAAoBqB,mBAApB,CAAwC,OAAxC,EAAiD,MAAKF,WAAtD;AACD;;AAED,UAAItD,QAAJ,EAAc;AACZ,YAAI,CAAC,MAAKmC,cAAN,IAAwBY,OAA5B,EAAqC;AACnCA,UAAAA,OAAO,CAACM,gBAAR,CAAyB,YAAzB,EAAuC,MAAKI,gBAA5C;AACAV,UAAAA,OAAO,CAACM,gBAAR,CAAyB,WAAzB,EAAsC,MAAKK,eAA3C;AACD;AACD,YAAI,MAAKvB,cAAL,IAAuB,CAACY,OAA5B,EAAqC;AACnC,gBAAKZ,cAAL,CAAoBqB,mBAApB,CAAwC,YAAxC,EAAsD,MAAKC,gBAA3D;AACA,gBAAKtB,cAAL,CAAoBqB,mBAApB,CAAwC,WAAxC,EAAqD,MAAKE,eAA1D;AACD;AACF;;AAED,YAAKvB,cAAL,GAAsBY,OAAtB;AACD,KA/UH;;AAiVUY,IAAAA,iBAjVV,GAiV8B,UAACC,KAAD,EAAgD;AAC1EA,MAAAA,KAAK,CAACC,cAAN;AACA,YAAKzB,cAAL,GAAsB0B,MAAM,CAACX,UAAP,CAAkB,YAAM;AAC5C,cAAKd,sBAAL,GAA8ByB,MAAM,CAACC,WAAP,CAAmB,oBAAM,MAAKpB,WAAL,CAAiB,MAAKlB,KAAL,CAAWT,GAAX,GAAiBP,UAAlC,CAAN,EAAnB,EAAwE,GAAxE,CAA9B;AACD,OAFqB,EAEnB,GAFmB,CAAtB;AAGD,KAtVH;;AAwVUuD,IAAAA,mBAxVV,GAwVgC,UAACJ,KAAD,EAAgD;AAC5EA,MAAAA,KAAK,CAACC,cAAN;AACA,YAAKzB,cAAL,GAAsB0B,MAAM,CAACX,UAAP,CAAkB,YAAM;AAC5C,cAAKd,sBAAL,GAA8ByB,MAAM,CAACC,WAAP,CAAmB,oBAAM,MAAKpB,WAAL,CAAiB,MAAKlB,KAAL,CAAWT,GAAX,GAAiBP,UAAlC,CAAN,EAAnB,EAAwE,GAAxE,CAA9B;AACD,OAFqB,EAEnB,GAFmB,CAAtB;AAGD,KA7VH;;AA+VUwD,IAAAA,mBA/VV,GA+VgC,YAAM;AAClCf,MAAAA,YAAY,CAAC,MAAKd,cAAN,CAAZ;AACAc,MAAAA,YAAY,CAAC,MAAKb,sBAAN,CAAZ;AACD,KAlWH;;AAoWU6B,IAAAA,SApWV,GAoWsB,oBAAM,MAAKhC,IAAX,EApWtB;;AAsWUoB,IAAAA,WAtWV,GAsWwB,UAACM,KAAD,EAAkB;AACtC,UAAI,EAAEA,KAAK,YAAYO,UAAnB,CAAJ,EAAoC;AAClC;AACD;AACDP,MAAAA,KAAK,CAACC,cAAN;AACAD,MAAAA,KAAK,CAACQ,eAAN;;AAEA,UAAIC,MAAM,GAAGT,KAAK,CAACS,MAAnB;AACA,UAAIT,KAAK,CAACU,SAAN,KAAoB,CAAxB,EAA2B;AACzBD,QAAAA,MAAM,IAAI5D,UAAV;AACD,OAFD,MAEO,IAAImD,KAAK,CAACU,SAAN,KAAoB,CAAxB,EAA2B;AAChCD,QAAAA,MAAM,IAAI5D,UAAU,GAAG,CAAvB;AACD;AACD,UAAMO,GAAG,GAAG,MAAKS,KAAL,CAAWT,GAAX,GAAiBqD,MAA7B;AACA,YAAK1B,WAAL,CAAiB3B,GAAjB;AACD,KArXH;;AAuXUyC,IAAAA,gBAvXV,GAuX6B,UAACG,KAAD,EAAkB;AAC3C,UAAI,EAAEA,KAAK,YAAYW,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,YAAKhC,WAAL,GAAmBqB,KAAK,CAACY,aAAN,CAAoB,CAApB,EAAuBC,OAA1C;AACD,KA7XH;;AA+XUf,IAAAA,eA/XV,GA+X4B,UAACE,KAAD,EAAkB;AAC1C,UAAI,EAAEA,KAAK,YAAYW,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,UAAQE,OAAR,GAAoBb,KAAK,CAACc,cAAN,CAAqB,CAArB,CAApB,CAAQD,OAAR;AACA,UAAME,UAAU,GAAGb,MAAM,CAACc,gBAA1B;;AAEA,UAAMP,MAAM,GAAG,CAAC,CAAC,MAAK9B,WAAL,IAAoB,CAArB,IAA0BkC,OAA3B,IAAsCE,UAArD;AACA,UAAM3D,GAAG,GAAG,MAAKS,KAAL,CAAWT,GAAX,GAAiBqD,MAAjB,GAA0BA,MAAM,GAAG5D,UAA/C;;AAEA,YAAK8B,WAAL,GAAmBkC,OAAnB;;AAEA,YAAK9B,WAAL,CAAiB3B,GAAjB;AACD,KA7YH;;AA+YU6D,IAAAA,eA/YV,GA+Y4B,UAACC,KAAD,EAAmB;AAC3C,aAAO,YAAM;AACX,YAAMC,KAAK,GAAG,MAAKtC,KAAL,CAAWsC,KAAX,GAAmBD,KAAjC;AACA,YAAI,MAAKrC,KAAL,CAAWuC,aAAf,EAA8B;AAC5B,gBAAKvC,KAAL,CAAWuC,aAAX,CAAyBD,KAAzB;AACD;AACD,cAAKnC,QAAL,CAAc,EAAEf,MAAM,EAAE,KAAV,EAAd;AACD,OAND;AAOD,KAvZH;;AAyZUoD,IAAAA,SAzZV,GAyZsB,UAACC,CAAD,EAAsB;AACxC,UAAI,MAAKzD,KAAL,CAAWI,MAAX,IAAqBvC,WAAW,CAAC4F,CAAD,CAApC,EAAyC;AACvCA,QAAAA,CAAC,CAACrB,cAAF;AACA,cAAKhB,KAAL;AACAqC,QAAAA,CAAC,CAACd,eAAF;AACD;AACF,KA/ZH;;AAiaUe,IAAAA,QAjaV,GAiaqB,UAACvB,KAAD,EAA6B;AAC9CA,MAAAA,KAAK,CAACC,cAAN;AACA,YAAKlB,WAAL,CAAiB,MAAKlB,KAAL,CAAWT,GAAX,GAAiBP,UAAU,GAAG,MAAK6B,QAApD;AACD,KApaH;;AAsaU8C,IAAAA,UAtaV,GAsauB,UAACxB,KAAD,EAA6B;AAChDA,MAAAA,KAAK,CAACC,cAAN;AACA,YAAKlB,WAAL,CAAiB,MAAKlB,KAAL,CAAWT,GAAX,GAAiBP,UAAU,GAAG,MAAK6B,QAApD;AACD,KAzaH,wDAgDS+C,kBAhDT,GAgDE,8BAA4B,CAC1B,KAAKrC,UAAL,GACD,CAlDH,QAoDSsC,iBApDT,GAoDE,6BAA2B,CACzB,KAAKC,QAAL,GAAgB5F,YAAY,CAAC6F,WAAb,CAAyB,KAAKxC,UAA9B,CAAhB,CACA,KAAKA,UAAL,GACAc,MAAM,CAACT,gBAAP,CAAwB,SAAxB,EAAmC,KAAK4B,SAAxC,EACD,CAxDH,QA0DSQ,oBA1DT,GA0DE,gCAA8B,CAC5B,IAAI,KAAKF,QAAT,EAAmB,CACjB,KAAKA,QAAL,CAAcG,MAAd,GACD,CACD,IAAI,KAAKzC,OAAT,EAAkB,CAChBC,YAAY,CAAC,KAAKD,OAAN,CAAZ,CACD,CACD,IAAI,KAAKb,cAAT,EAAyB,CACvBc,YAAY,CAAC,KAAKd,cAAN,CAAZ,CACD,CACD,IAAI,KAAKC,sBAAT,EAAiC,CAC/Ba,YAAY,CAAC,KAAKb,sBAAN,CAAZ,CACD,CACDyB,MAAM,CAACN,mBAAP,CAA2B,SAA3B,EAAsC,KAAKyB,SAA3C,EACD,CAxEH,CA0EE;AACF;AACA,KA5EA,QAwGSU,MAxGT,GAwGE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAjHH,QAmHUA,UAnHV,GAmHE,sBAAqB,eACnB,IAAIzF,WAAW,CAAC,KAAKwF,KAAN,CAAf,EAA6B,CAC3B,OAAO,KAAKE,cAAL,EAAP,CACD,CAED,IAAQpD,QAAR,GAAqB,KAAKD,KAA1B,CAAQC,QAAR,CACA,IAAMqD,KAAK,GAAG,KAAKxE,QAAL,GAAgBwE,KAA9B,CACA,IAAMC,SAAS,GAAG,EAChBC,SAAS,EAAEhG,EAAE,gBACVO,MAAM,CAAC0B,IAAP,CAAY,KAAK0D,KAAjB,CADU,IACgB,IADhB,MAEVpF,MAAM,CAACkC,QAAP,EAFU,IAEUwD,OAAO,CAACxD,QAAD,CAFjB,OADG,EAKhByD,KAAK,EAAE,EAAEJ,KAAK,EAALA,KAAF,EALS,EAMhBK,GAAG,EAAE,KAAKtD,OANM,EAAlB,CAQA,oBACE,4BAAUkD,SAAV,eACE,6BAAK,YAAU7E,kBAAkB,CAACC,OAAlC,EAA2C,SAAS,EAAEZ,MAAM,CAACY,OAAP,EAAtD,EAAwE,OAAO,EAAE,KAAKoB,IAAtF,IACG,KAAK6D,OAAL,CAAa,CAAb,CADH,eAEE,6BACE,SAAS,EAAEpG,EAAE,kBACVO,MAAM,CAAC8F,KAAP,CAAa,KAAKV,KAAlB,CADU,IACiB,IADjB,OAEVpF,MAAM,CAAC+F,aAAP,EAFU,IAEeL,OAAO,CAACxD,QAAD,CAFtB,QADf,iBAME,oBAAC,uBAAD,IAAyB,IAAI,EAAE,EAA/B,GANF,CAFF,CADF,EAYG,KAAKjB,KAAL,CAAWI,MAAX,IAAqB,KAAK2E,UAAL,EAZxB,CADF,CAgBD,CAlJH,QAoJUV,cApJV,GAoJE,0BAAyB,CACvB,IAAQpD,QAAR,GAAqB,KAAKD,KAA1B,CAAQC,QAAR,CACA,IAAMqD,KAAK,GAAG,KAAKxE,QAAL,GAAgBwE,KAA9B,CACA,IAAMC,SAAS,GAAG,EAChBC,SAAS,EAAEhG,EAAE,CAACO,MAAM,CAAC0B,IAAP,CAAY,KAAK0D,KAAjB,CAAD,EAA0BpF,MAAM,CAACiG,QAAP,EAA1B,EAA6C/D,QAAQ,IAAIlC,MAAM,CAACkC,QAAP,EAAzD,CADG,EAEhByD,KAAK,EAAE,EAAEJ,KAAK,EAALA,KAAF,EAFS,EAGhBK,GAAG,EAAE,KAAKtD,OAHM,EAIhB4D,OAAO,EAAE,KAAKlE,IAJE,EAAlB,CAOA,oBACE,4BAAUwD,SAAV,eACE,6BAAK,YAAU7E,kBAAkB,CAACC,OAAlC,EAA2C,SAAS,EAAEZ,MAAM,CAACY,OAAP,EAAtD,IACG,KAAKiF,OAAL,CAAa,CAAb,CADH,CADF,EAIG,CAAC3D,QAAD,iBAAa,oBAAC,gCAAD,IAAkC,KAAK,EAAC,SAAxC,GAJhB,EAKG,KAAKjB,KAAL,CAAWI,MAAX,IAAqB,KAAK2E,UAAL,EALxB,CADF,CASD,CAvKH,QA4LUG,YA5LV,GA4LE,sBAAqBC,KAArB,EAAoC,CAClC,IAAM7B,KAAK,GAAG,KAAKtC,KAAL,CAAWsC,KAAX,GAAmB6B,KAAjC,CACA,IAAIvH,aAAa,CAAC,KAAKoD,KAAL,CAAWoE,QAAZ,CAAb,IAAsCxH,aAAa,CAAC,KAAKoD,KAAL,CAAWqE,QAAZ,CAAvD,EAA8E,CAC5E,OAAO/B,KAAK,GAAG,KAAKtC,KAAL,CAAWoE,QAAnB,IAA+B9B,KAAK,GAAG,KAAKtC,KAAL,CAAWqE,QAAzD,CACD,CAED,IAAIzH,aAAa,CAAC,KAAKoD,KAAL,CAAWqE,QAAZ,CAAjB,EAAwC,CACtC,OAAO/B,KAAK,GAAG,KAAKtC,KAAL,CAAWqE,QAA1B,CACD,CAED,IAAIzH,aAAa,CAAC,KAAKoD,KAAL,CAAWoE,QAAZ,CAAjB,EAAwC,CACtC,OAAO9B,KAAK,GAAG,KAAKtC,KAAL,CAAWoE,QAA1B,CACD,CACF,CAzMH,QA2MUL,UA3MV,GA2ME,sBAAsC,wBACpC,kBAAiC,KAAK/E,KAAtC,CAAQK,GAAR,eAAQA,GAAR,CAAaF,MAAb,eAAaA,MAAb,CAAqBI,OAArB,eAAqBA,OAArB,CAEA,IAAI8C,KAAK,GAAG,KAAKrD,KAAL,CAAWT,GAAX,GAAiBP,UAA7B,CACA,IAAIqE,KAAK,GAAG,CAAZ,EAAe,CACbA,KAAK,IAAIrE,UAAT,CACD,CAED,IAAMsG,IAAI,GAAG,CAAC,KAAKtF,KAAL,CAAWT,GAAX,GAAiB8D,KAAjB,GAAyBhD,GAA1B,IAAiCrB,UAA9C,CACA,IAAMuG,EAAE,GAAGD,IAAI,GAAGE,IAAI,CAACC,IAAL,CAAU,CAACtF,MAAM,GAAGkD,KAAV,IAAmBrE,UAA7B,CAAlB,CACA,IAAM0G,KAAK,GAAG,EAAd,CAVoC,2BAY3BC,CAZ2B,YAalC,IAAMT,YAAY,GAAG,MAAI,CAACA,YAAL,CAAkBS,CAAlB,KAAwB,KAA7C,CACA,IAAMnB,SAAS,GAAGhG,EAAE,kBACjBO,MAAM,CAACa,QAAP,CAAgB,MAAI,CAACuE,KAArB,CADiB,IACa,IADb,OAEjBpF,MAAM,CAAC6G,gBAAP,CAAwB,MAAI,CAACzB,KAA7B,CAFiB,IAEqBwB,CAAC,KAAK,CAF3B,OAGjB5G,MAAM,CAAC8G,cAAP,CAAsB,MAAI,CAAC1B,KAA3B,CAHiB,IAGmBwB,CAAC,KAAK,MAAI,CAAC3F,KAAL,CAAWE,OAHpC,OAIjBnB,MAAM,CAAC+G,gBAAP,CAAwB,MAAI,CAAC3B,KAA7B,CAJiB,IAIqBe,YAJrB,QAApB,CAMA,IAAMa,YAAY,GAAG,EACnBC,WAAW,EAAE5D,cADM,EAEnB6C,OAAO,EAAE,MAAI,CAAC7B,eAAL,CAAqBuC,CAArB,CAFU,EAArB,CAIAD,KAAK,CAACO,IAAN,eACE,sCACE,YAAUvG,kBAAkB,CAACE,QAD/B,EAEE,sBAAoBsF,YAFtB,EAGE,GAAG,EAAES,CAHP,EAIE,SAAS,EAAEnB,SAJb,EAKE,YAAY,EAAE,gCAAM,MAAI,CAACrD,QAAL,CAAc,EAAEjB,OAAO,EAAEyF,CAAX,EAAd,CAAN,EALhB,EAME,YAAY,EAAE,gCAAM,MAAI,CAACxE,QAAL,CAAc,EAAEjB,OAAO,EAAE,IAAX,EAAd,CAAN,EANhB,IAOM6F,YAPN,GASG,MAAI,CAACnB,OAAL,CAAae,CAAb,CATH,CADF,EAxBkC,EAYpC,KAAK,IAAIA,CAAC,GAAGL,IAAb,EAAmBK,CAAC,GAAGJ,EAAvB,EAA2B,EAAEI,CAA7B,EAAgC,OAAvBA,CAAuB,EAyB/B,CACD,IAAMjB,KAKL,GAAG,EACFrE,GAAG,EAAEA,GAAG,GAAG,CADT,EAEF6F,IAAI,EAAE,CAFJ,EAGFC,KAAK,EAAE,CAHL,EALJ,CAWA,IAAMC,UAA+B,GAAG,EACtCC,QAAQ,EAAE,UAD4B,EAEtChG,GAAG,EAAE,CAACgD,KAFgC,EAAxC,CAKA,IAAMiD,WAAW,GAAG9H,EAAE,kBACnBO,MAAM,CAACwH,UAAP,CAAkB,KAAKpC,KAAvB,CADmB,IACa,IADb,OAEnBpF,MAAM,CAACyH,WAAP,EAFmB,IAEI,KAAKxG,KAAL,CAAWM,SAFf,OAGnBvB,MAAM,CAAC0H,WAAP,EAHmB,IAGI,KAAKzG,KAAL,CAAWC,SAHf,QAAtB,CAMA,IAAIyG,cAAc,GAAG,CAAC1H,UAAtB,CACA,IAAIuB,OAAO,GAAG,CAACF,GAAf,EAAoB,CAClB,IAAMsG,mBAAmB,GAAG,KAAK3G,KAAL,CAAWM,SAAX,GAAuB,CAAvB,GAA2B,EAAvD,CACAoG,cAAc,IAAInG,OAAO,GAAGF,GAAV,GAAgBsG,mBAAlC,CACD,CAED,IAAMC,MAAM,GAAGjI,WAAW,CAAC,KAAKwF,KAAN,CAAX,gBAA0B,oBAAC,qBAAD,IAAuB,KAAK,EAAC,SAA7B,GAA1B,gBAAsE,oBAAC,kBAAD,OAArF,CACA,IAAM0C,QAAQ,GAAGlI,WAAW,CAAC,KAAKwF,KAAN,CAAX,gBAA0B,oBAAC,uBAAD,IAAyB,KAAK,EAAC,SAA/B,GAA1B,gBAAwE,oBAAC,oBAAD,OAAzF,CAEA,oBACE,oBAAC,WAAD,IAAa,cAAc,EAAE,KAAK/C,KAAlC,EAAyC,cAAc,EAAE,KAAKA,KAA9D,EAAqE,MAAM,MAA3E,iBACE,8CACE,oBAAC,iBAAD,IAAmB,SAAS,EAAE,KAAKqB,SAAnC,EAA8C,OAAO,EAAEiE,cAAvD,EAAuE,OAAO,EAAE,CAAC,EAAjF,iBACE,6BAAK,SAAS,EAAEJ,WAAhB,EAA6B,KAAK,EAAE5B,KAApC,IACG,CAAC,KAAK1E,KAAL,CAAWM,SAAZ,iBACC,6BACE,SAAS,EAAE9B,EAAE,CAACO,MAAM,CAAC+H,IAAP,CAAY,KAAK3C,KAAjB,CAAD,EAA0BpF,MAAM,CAACgI,MAAP,EAA1B,CADf,EAEE,OAAO,EAAE,KAAKrD,QAFhB,EAGE,WAAW,EAAE,KAAKxB,iBAHpB,EAIE,SAAS,EAAE,KAAKM,mBAJlB,EAKE,YAAY,EAAE,KAAKA,mBALrB,EAME,YAAY,EAAE,KAAKN,iBANrB,EAOE,UAAU,EAAE,KAAKM,mBAPnB,iBASE,kCAAOoE,MAAP,CATF,CAFJ,eAcE,6BAAK,SAAS,EAAE7H,MAAM,CAACiI,WAAP,EAAhB,EAAsC,KAAK,EAAE,EAAE7G,MAAM,EAANA,MAAF,EAA7C,iBACE,6BAAK,GAAG,EAAE,KAAKwB,iBAAf,EAAkC,KAAK,EAAEyE,UAAzC,IACGV,KADH,CADF,CAdF,EAmBG,CAAC,KAAK1F,KAAL,CAAWC,SAAZ,iBACC,6BACE,SAAS,EAAEzB,EAAE,CAACO,MAAM,CAAC+H,IAAP,CAAY,KAAK3C,KAAjB,CAAD,EAA0BpF,MAAM,CAACkI,QAAP,EAA1B,CADf,EAEE,OAAO,EAAE,KAAKtD,UAFhB,EAGE,WAAW,EAAE,KAAKpB,mBAHpB,EAIE,SAAS,EAAE,KAAKC,mBAJlB,EAKE,YAAY,EAAE,KAAKA,mBALrB,EAME,YAAY,EAAE,KAAKD,mBANrB,EAOE,UAAU,EAAE,KAAKC,mBAPnB,iBASE,kCAAOqE,QAAP,CATF,CApBJ,CADF,CADF,CADF,CADF,CAyCD,CAzTH,QA2aUjC,OA3aV,GA2aE,iBAAgBO,KAAhB,EAA+B;AAC7B,QAAM7B,KAAK,GAAG,KAAKtC,KAAL,CAAWsC,KAAX,GAAmB6B,KAAjC;AACA,QAAI,KAAKrF,QAAL,GAAgBoH,IAAhB,KAAyB,OAA7B,EAAsC;AACpC,oCAAO,KAAKnJ,MAAL,CAAYoJ,MAAnB,qBAAO,oBAAqB7D,KAArB,CAAP;AACD;AACD,WAAOA,KAAP;AACD,GAjbH;;AAmbUpC,EAAAA,WAnbV,GAmbE,qBAAoB3B,GAApB,EAAiC;AAC/B,QAAIc,GAAG,GAAGnB,gBAAgB,GAAGF,UAA7B;AACA,QAAImB,MAAM,GAAGlB,iBAAiB,GAAGD,UAAjC;AACA,QAAI,KAAKc,QAAL,GAAgBoH,IAAhB,KAAyB,OAA7B,EAAsC;AACpC7G,MAAAA,GAAG,GAAG,CAAC,KAAKW,KAAL,CAAWsC,KAAZ,GAAoBtE,UAA1B;AACAmB,MAAAA,MAAM,GAAGhB,WAAW,GAAGH,UAAvB;AACD;;AAED,QAAMQ,MAAM,GAAG,KAAK4H,SAAL,KAAmB/G,GAAlC;AACA,QAAMZ,MAAM,GAAG,KAAK4H,SAAL,KAAmBhH,GAAnB,GAAyBF,MAAzB,GAAkCnB,UAAjD;;AAEA,QAAMsI,aAAa,GAAGhI,YAAY,CAACC,GAAD,EAAMC,MAAN,EAAcC,MAAd,CAAlC;AACA,QAAMa,SAAS,GAAGgH,aAAa,IAAI9H,MAAnC;AACA,QAAMS,SAAS,GAAGqH,aAAa,IAAI7H,MAAnC;;AAEA,SAAK0B,QAAL,CAAc,EAAE5B,GAAG,EAAE+H,aAAP,EAAsBjH,GAAG,EAAHA,GAAtB,EAA2BF,MAAM,EAANA,MAA3B,EAAmCG,SAAS,EAATA,SAAnC,EAA8CL,SAAS,EAATA,SAA9C,EAAd;AACD,GAncH;;AAqcUmH,EAAAA,SArcV,GAqcE,qBAAoB;AAClB,QAAMF,IAAI,GAAG,KAAKpH,QAAL,GAAgBoH,IAA7B;AACA,QAAIA,IAAI,KAAK,OAAb,EAAsB;AACpB,aAAO,CAAC,KAAKlG,KAAL,CAAWsC,KAAZ,GAAoBtE,UAA3B;AACD,KAFD,MAEO,IAAIkI,IAAI,KAAK,MAAb,EAAqB;AAC1B,aAAO,CAAC,CAAC,KAAKlG,KAAL,CAAWqE,QAAX,IAAuBjG,cAAxB,IAA0C,KAAK4B,KAAL,CAAWsC,KAAtD,IAA+DtE,UAAtE;AACD;AACD,WAAO,CAACwB,QAAR,CAPkB,CAOA;AACnB,GA7cH;;AA+cU6G,EAAAA,SA/cV,GA+cE,qBAAoB;AAClB,QAAMH,IAAI,GAAG,KAAKpH,QAAL,GAAgBoH,IAA7B;AACA,QAAIA,IAAI,KAAK,OAAb,EAAsB;AACpB,aAAO,CAACjI,iBAAiB,GAAG,KAAK+B,KAAL,CAAWsC,KAAhC,IAAyCtE,UAAhD;AACD,KAFD,MAEO,IAAIkI,IAAI,KAAK,MAAb,EAAqB;AAC1B,aAAO,CAAC,CAAC,KAAKlG,KAAL,CAAWoE,QAAX,IAAuB/F,cAAxB,IAA0C,KAAK2B,KAAL,CAAWsC,KAAtD,IAA+DtE,UAAtE;AACD;AACD,WAAOwB,QAAP,CAPkB,CAOD;AAClB,GAvdH,qBAAgC9C,KAAK,CAAC6J,aAAtC,WACgBC,mBADhB,GACsC,YADtC,UAGgBC,SAHhB,GAG4B,EACxBxG,QAAQ,EAAEtD,SAAS,CAAC+J,IADI,EAGxBR,IAAI,EAAEvJ,SAAS,CAACgK,MAHQ,EAKxBrE,KAAK,EAAE3F,SAAS,CAACiK,MAAV,CAAiBC,UALA,EAOxBvD,KAAK,EAAE3G,SAAS,CAACmK,SAAV,CAAoB,CAACnK,SAAS,CAACiK,MAAX,EAAmBjK,SAAS,CAACgK,MAA7B,CAApB,CAPiB,EASxBpE,aAAa,EAAE5F,SAAS,CAACoK,IATD,EAWxB1C,QAAQ,EAAE1H,SAAS,CAACiK,MAXI,EAaxBxC,QAAQ,EAAEzH,SAAS,CAACiK,MAbI,EAH5B,UAmBgB7H,YAnBhB,GAmB6C,EACzCmH,IAAI,EAAE,MADmC,EAEzC5C,KAAK,EAAE,MAFkC,EAnB7C;;;AA0dA,SAASlC,cAAT,CAAwBqB,CAAxB,EAAiD;AAC/CA,EAAAA,CAAC,CAACrB,cAAF;AACD","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\n\nimport { styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n };\n\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {!disabled && <ArrowCollapseCVOpenIcon16Regular color=\"#ADADAD\" />}\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","globalClasses","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","rootProps","className","Boolean","style","ref","getItem","arrow","arrowDisabled","renderMenu","root2022","onClick","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menu","menuUp","itemsHolder","menuDown","type","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n };\n\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {!disabled && <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />}\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
|
|
@@ -2,10 +2,13 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
|
|
|
2
2
|
|
|
3
3
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
|
|
4
4
|
|
|
5
|
-
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
5
|
+
import { css, memoizeStyle, prefix } from "../../../lib/theming/Emotion";
|
|
6
|
+
export var globalClasses = prefix('select')({
|
|
7
|
+
arrow: 'arrow'
|
|
8
|
+
});
|
|
6
9
|
export var styles = memoizeStyle({
|
|
7
10
|
root: function root(t) {
|
|
8
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n color: ", ";\n cursor: pointer;\n display: inline-block;\n font-size: ", ";\n line-height: ", ";\n outline: 0;\n padding-right: 2px;\n position: relative;\n text-align: left;\n touch-action: none;\n\n &:hover {\n color: ", ";\n }\n "])), t.dateSelectTextColorDefault, t.dateSelectFontSize, t.dateSelectLineHeight, t.dateSelectLinkColor);
|
|
11
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n color: ", ";\n cursor: pointer;\n display: inline-block;\n font-size: ", ";\n line-height: ", ";\n outline: 0;\n padding-right: 2px;\n position: relative;\n text-align: left;\n touch-action: none;\n\n &:hover {\n color: ", ";\n }\n\n & .", " {\n transition: fill ", " ", ";\n }\n\n &:hover .", " {\n fill: ", " !important;\n }\n "])), t.dateSelectTextColorDefault, t.dateSelectFontSize, t.dateSelectLineHeight, t.dateSelectLinkColor, globalClasses.arrow, t.transitionDuration, t.transitionTimingFunction, globalClasses.arrow, t.dateSelectTextColorDefault);
|
|
9
12
|
},
|
|
10
13
|
root2022: function root2022() {
|
|
11
14
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n justify-content: space-between;\n "])));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateSelect.styles.ts"],"names":["css","memoizeStyle","styles","root","t","dateSelectTextColorDefault","dateSelectFontSize","dateSelectLineHeight","dateSelectLinkColor","root2022","disabled","caption","
|
|
1
|
+
{"version":3,"sources":["DateSelect.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","arrow","styles","root","t","dateSelectTextColorDefault","dateSelectFontSize","dateSelectLineHeight","dateSelectLinkColor","transitionDuration","transitionTimingFunction","root2022","disabled","caption","dateSelectTextColorDisabled","arrowDisabled","menuHolder","dateSelectMenuBg","dateSelectPopupBoxShadow","isTopCapped","isBotCapped","itemsHolder","menuItem","menuItemSelected","dateSelectMenuItemBgSelected","dateSelectMenuItemFontSelected","menuItemActive","dateSelectMenuItemBgActive","dateSelectMenuItemFontActive","menuItemDisabled","dateSelectMenuItemBgDisabled","menu","dateSelectTextColorInvert","menuUp","menuDown"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('select')({\n arrow: 'arrow',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n display: inline-block;\n font-size: ${t.dateSelectFontSize};\n line-height: ${t.dateSelectLineHeight};\n outline: 0;\n padding-right: 2px;\n position: relative;\n text-align: left;\n touch-action: none;\n\n &:hover {\n color: ${t.dateSelectLinkColor};\n }\n\n & .${globalClasses.arrow} {\n transition: fill ${t.transitionDuration} ${t.transitionTimingFunction};\n }\n\n &:hover .${globalClasses.arrow} {\n fill: ${t.dateSelectTextColorDefault} !important;\n }\n `;\n },\n\n root2022() {\n return css`\n display: inline-flex;\n justify-content: space-between;\n `;\n },\n\n disabled() {\n return css`\n color: inherit !important; // override root:hover style\n cursor: default;\n `;\n },\n\n caption() {\n return css`\n position: relative;\n `;\n },\n\n arrow(t: Theme) {\n return css`\n color: ${t.dateSelectTextColorDisabled};\n float: right;\n line-height: ${t.dateSelectLineHeight};\n opacity: 1;\n position: absolute;\n right: 4px;\n top: 0;\n transform: scaleX(0.7);\n transition: opacity 0.2s ease-out;\n `;\n },\n arrowDisabled() {\n return css`\n opacity: 0;\n `;\n },\n\n menuHolder(t: Theme) {\n return css`\n background: ${t.dateSelectMenuBg};\n box-shadow: ${t.dateSelectPopupBoxShadow};\n box-sizing: content-box;\n color: ${t.dateSelectTextColorDefault};\n font-size: ${t.dateSelectFontSize};\n margin-top: -11px;\n overflow: hidden;\n position: absolute;\n z-index: 1000;\n `;\n },\n\n isTopCapped() {\n return css`\n margin-top: 0;\n padding-top: 5px;\n `;\n },\n\n isBotCapped() {\n return css`\n padding-bottom: 5px;\n `;\n },\n\n itemsHolder() {\n return css`\n overflow: hidden;\n position: relative;\n `;\n },\n\n menuItem(t: Theme) {\n return css`\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n height: 24px;\n line-height: 24px;\n padding-left: 10px;\n user-select: none;\n white-space: nowrap;\n touch-action: none;\n `;\n },\n\n menuItemSelected(t: Theme) {\n return css`\n background: ${t.dateSelectMenuItemBgSelected};\n color: ${t.dateSelectMenuItemFontSelected};\n `;\n },\n\n menuItemActive(t: Theme) {\n return css`\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectMenuItemFontActive};\n `;\n },\n\n menuItemDisabled(t: Theme) {\n return css`\n background: ${t.dateSelectMenuItemBgDisabled};\n color: ${t.dateSelectTextColorDisabled};\n pointer-events: none;\n `;\n },\n\n menu(t: Theme) {\n return css`\n box-sizing: border-box;\n cursor: pointer;\n height: 16px;\n line-height: 0;\n padding-left: 18px;\n text-align: left;\n user-select: none;\n\n background: ${t.dateSelectMenuBg};\n color: ${t.dateSelectTextColorDefault};\n\n &:hover {\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectTextColorInvert};\n }\n `;\n },\n\n menuUp() {\n return css`\n span {\n position: relative;\n top: -0.5px;\n }\n `;\n },\n\n menuDown() {\n return css`\n span {\n position: relative;\n top: -1px;\n }\n `;\n },\n});\n"]}
|
|
@@ -183,6 +183,8 @@ export var DropdownContainer = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
var content = /*#__PURE__*/React.createElement(ZIndex, {
|
|
186
|
+
"data-tid": this.props['data-tid'],
|
|
187
|
+
id: this.props.id,
|
|
186
188
|
priority: 'DropdownContainer',
|
|
187
189
|
wrapperRef: this.ZIndexRef,
|
|
188
190
|
style: style,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","getManualPosition","getTopAlignment","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","menuPos","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './DropdownContainer.styles';\nimport { getManualPosition, getTopAlignment } from './getManualPosition';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps {\n align?: 'left' | 'right';\n getParent: () => Nullable<Element>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownContainerProps, 'align' | 'disablePortal' | 'offsetY' | 'offsetX'>>;\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.getProps().align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.getProps().align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const offsetY = this.getProps().offsetY || 0;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n top = null;\n bottom = getTopAlignment({ clientHeight, offsetY, scrollY, target });\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n ...getManualPosition({ menuPos: this.props.menuPos, target, offsetY, clientHeight, scrollY }),\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.getProps().disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const offsetX = this.getProps().offsetX || 0;\n const offsetY = this.getProps().offsetY || 0;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","getManualPosition","getTopAlignment","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","menuPos","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","id","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './DropdownContainer.styles';\nimport { getManualPosition, getTopAlignment } from './getManualPosition';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps\n extends Pick<CommonProps, 'data-tid'>,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n align?: 'left' | 'right';\n getParent: () => Nullable<Element>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownContainerProps, 'align' | 'disablePortal' | 'offsetY' | 'offsetX'>>;\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n data-tid={this.props['data-tid']}\n id={this.props.id}\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.getProps().align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.getProps().align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const offsetY = this.getProps().offsetY || 0;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n top = null;\n bottom = getTopAlignment({ clientHeight, offsetY, scrollY, target });\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n ...getManualPosition({ menuPos: this.props.menuPos, target, offsetY, clientHeight, scrollY }),\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.getProps().disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const offsetX = this.getProps().offsetX || 0;\n const offsetY = this.getProps().offsetY || 0;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { HTMLAttributes } from 'react';
|
|
2
2
|
import { Nullable } from '../../typings/utility-types';
|
|
3
|
+
import { CommonProps } from '../CommonWrapper';
|
|
3
4
|
export interface DropdownContainerPosition {
|
|
4
5
|
top: Nullable<number>;
|
|
5
6
|
bottom: Nullable<number>;
|
|
6
7
|
left: Nullable<number>;
|
|
7
8
|
right: Nullable<number>;
|
|
8
9
|
}
|
|
9
|
-
export interface DropdownContainerProps {
|
|
10
|
+
export interface DropdownContainerProps extends Pick<CommonProps, 'data-tid'>, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {
|
|
10
11
|
align?: 'left' | 'right';
|
|
11
12
|
getParent: () => Nullable<Element>;
|
|
12
13
|
children?: React.ReactNode;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { forwardRefAndName } from "../../../../lib/forwardRefAndName";
|
|
2
3
|
import { formatBytes } from "../../../../lib/utils";
|
|
3
4
|
import { TextWidthHelper } from "../../../../internal/TextWidthHelper/TextWidthHelper";
|
|
4
5
|
import { truncate } from "../../../../lib/stringUtils";
|
|
@@ -44,7 +45,7 @@ export var FileUploaderFileDataTids = {
|
|
|
44
45
|
fileSize: 'FileUploader__fileSize',
|
|
45
46
|
fileIcon: 'FileUploader__fileIcon'
|
|
46
47
|
};
|
|
47
|
-
export var FileUploaderFile = function
|
|
48
|
+
export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (props, ref) {
|
|
48
49
|
var _cx, _cx2;
|
|
49
50
|
|
|
50
51
|
var file = props.file,
|
|
@@ -149,7 +150,8 @@ export var FileUploaderFile = function FileUploaderFile(props) {
|
|
|
149
150
|
"data-tid": FileUploaderFileDataTids.file,
|
|
150
151
|
className: jsStyles.root(),
|
|
151
152
|
onMouseEnter: handleMouseEnter,
|
|
152
|
-
onMouseLeave: handleMouseLeave
|
|
153
|
+
onMouseLeave: handleMouseLeave,
|
|
154
|
+
ref: ref
|
|
153
155
|
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
154
156
|
"data-tid": FileUploaderFileDataTids.fileTooltip,
|
|
155
157
|
pos: "right middle",
|
|
@@ -184,5 +186,4 @@ export var FileUploaderFile = function FileUploaderFile(props) {
|
|
|
184
186
|
isInvalid: isInvalid,
|
|
185
187
|
size: size
|
|
186
188
|
})))));
|
|
187
|
-
};
|
|
188
|
-
FileUploaderFile.displayName = 'FileUploaderFile';
|
|
189
|
+
});
|
package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","formatBytes","TextWidthHelper","truncate","FileUploaderControlContext","cx","ThemeContext","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","useFileUploaderSize","jsStyles","FileUploaderFileStatusIcon","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","calcTruncatedName","textHelperRef","fileNameElementRef","current","getTextWidth","width","MIN_CHARS_LENGTH","FileUploaderFileDataTids","file","fileTooltip","fileName","fileSize","fileIcon","FileUploaderFile","props","showSize","error","multiple","size","id","originalFile","status","validationResult","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","removeFile","setIsMinLengthReached","isMinLengthReached","theme","formattedSize","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","sizeIconClass","small","iconSmall","medium","iconMedium","large","iconLarge","renderTooltipContent","sizeContentClass","contentSmall","contentMedium","contentLarge","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","icon","focusedIcon","iconMultiple","isTruncated","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { getDOMRect } from '../../../lib/dom/getDOMRect';\nimport { FileUploaderSize } from '../../../components/FileUploader';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\n\nimport { jsStyles } from './FileUploaderFile.styles';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n multiple?: boolean;\n size: FileUploaderSize;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper>,\n fileNameElementRef: React.RefObject<HTMLSpanElement>,\n name: string,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n};\n\nconst MIN_CHARS_LENGTH = 3;\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n} as const;\n\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize, error, multiple, size } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile, setIsMinLengthReached, isMinLengthReached } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n if (setIsMinLengthReached) {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setIsMinLengthReached((truncatedName?.length ?? 0) <= MIN_CHARS_LENGTH);\n }\n }, [name, isMinLengthReached]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setTruncatedFileName(truncatedName);\n });\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(),\n medium: jsStyles.iconMedium(),\n large: jsStyles.iconLarge(),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeContentClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const contentClassNames = cx(jsStyles.content(), {\n [sizeContentClass]: true,\n [jsStyles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n [sizeIconClass]: true,\n [jsStyles.iconMultiple()]: multiple,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid={FileUploaderFileDataTids.fileTooltip} pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid={FileUploaderFileDataTids.fileName} ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n status={status}\n hovered={hovered}\n focusedByTab={focusedByTab}\n isInvalid={isInvalid}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
|
|
1
|
+
{"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","forwardRefAndName","formatBytes","TextWidthHelper","truncate","FileUploaderControlContext","cx","ThemeContext","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","useFileUploaderSize","jsStyles","FileUploaderFileStatusIcon","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","calcTruncatedName","textHelperRef","fileNameElementRef","current","getTextWidth","width","MIN_CHARS_LENGTH","FileUploaderFileDataTids","file","fileTooltip","fileName","fileSize","fileIcon","FileUploaderFile","props","ref","showSize","error","multiple","size","id","originalFile","status","validationResult","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","removeFile","setIsMinLengthReached","isMinLengthReached","theme","formattedSize","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","sizeIconClass","small","iconSmall","medium","iconMedium","large","iconLarge","renderTooltipContent","sizeContentClass","contentSmall","contentMedium","contentLarge","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","icon","focusedIcon","iconMultiple","isTruncated","root"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { getDOMRect } from '../../../lib/dom/getDOMRect';\nimport { FileUploaderSize } from '../../../components/FileUploader';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\n\nimport { jsStyles } from './FileUploaderFile.styles';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n multiple?: boolean;\n size: FileUploaderSize;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper>,\n fileNameElementRef: React.RefObject<HTMLSpanElement>,\n name: string,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n};\n\nconst MIN_CHARS_LENGTH = 3;\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n} as const;\n\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const { file, showSize, error, multiple, size } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile, setIsMinLengthReached, isMinLengthReached } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n if (setIsMinLengthReached) {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setIsMinLengthReached((truncatedName?.length ?? 0) <= MIN_CHARS_LENGTH);\n }\n }, [name, isMinLengthReached]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setTruncatedFileName(truncatedName);\n });\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(),\n medium: jsStyles.iconMedium(),\n large: jsStyles.iconLarge(),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeContentClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const contentClassNames = cx(jsStyles.content(), {\n [sizeContentClass]: true,\n [jsStyles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n [sizeIconClass]: true,\n [jsStyles.iconMultiple()]: multiple,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip data-tid={FileUploaderFileDataTids.fileTooltip} pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid={FileUploaderFileDataTids.fileName} ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n status={status}\n hovered={hovered}\n focusedByTab={focusedByTab}\n isInvalid={isInvalid}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n );\n },\n);\n"]}
|