@skbkontur/react-ui 0.0.0-dad43298ae → 0.0.0-db9f11da2a
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 +280 -0
- package/README.md +7 -7
- package/cjs/components/Autocomplete/Autocomplete.d.ts +18 -26
- package/cjs/components/Autocomplete/Autocomplete.js +64 -46
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +4 -1
- package/cjs/components/Button/Button.js +47 -17
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.d.ts +6 -0
- package/cjs/components/Button/Button.styles.js +109 -76
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Button/ButtonArrow.js +13 -14
- package/cjs/components/Button/ButtonArrow.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +2 -0
- package/cjs/components/Calendar/Calendar.js +1 -0
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/CalendarDay.js +18 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +7 -15
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +2 -0
- package/cjs/components/Center/Center.js +1 -0
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +4 -16
- package/cjs/components/Checkbox/Checkbox.js +16 -32
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +22 -3
- package/cjs/components/ComboBox/ComboBox.js +26 -1
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
- package/cjs/components/CurrencyInput/CurrencyInput.js +6 -25
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyInput/constants.js +1 -2
- package/cjs/components/CurrencyInput/constants.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +6 -1
- package/cjs/components/DateInput/DateInput.js +45 -17
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +1 -1
- package/cjs/components/DateInput/helpers/InternalDateMediator.js +10 -1
- package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
- package/cjs/components/DatePicker/DatePicker.js +6 -60
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +3 -1
- package/cjs/components/DateRangePicker/DateRangePicker.js +61 -23
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePickerInput.js +4 -8
- package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
- package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js +17 -17
- package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
- package/cjs/components/Dropdown/Dropdown.js +2 -82
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
- package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +15 -2
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +13 -8
- package/cjs/components/FxInput/FxInput.js +137 -60
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/FxInput/FxInputRestoreBtn.js +2 -3
- package/cjs/components/FxInput/FxInputRestoreBtn.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +2 -15
- package/cjs/components/Gapped/Gapped.js +1 -24
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Group/Group.d.ts +5 -4
- package/cjs/components/Group/Group.js +91 -40
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Group/Group.styles.d.ts +1 -0
- package/cjs/components/Group/Group.styles.js +12 -6
- package/cjs/components/Group/Group.styles.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +2 -0
- package/cjs/components/Hint/Hint.js +1 -0
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +6 -5
- package/cjs/components/Input/Input.js +17 -47
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.d.ts +0 -1
- package/cjs/components/Input/Input.styles.js +8 -19
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
- package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +4 -2
- package/cjs/components/Kebab/Kebab.js +9 -29
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +2 -0
- package/cjs/components/Link/Link.js +15 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.mixins.js +1 -2
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/Link/Link.styles.js +3 -2
- package/cjs/components/Link/Link.styles.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +7 -36
- package/cjs/components/Loader/Loader.js +6 -56
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +107 -78
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -2
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +9 -0
- package/cjs/components/MaskedInput/MaskedInput.js +43 -4
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
- package/cjs/components/MenuItem/MenuItem.js +2 -22
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
- package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
- package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
- package/cjs/components/MiniModal/MiniModalBody.js +17 -2
- package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.d.ts +2 -1
- package/cjs/components/Modal/Modal.styles.js +40 -32
- package/cjs/components/Modal/Modal.styles.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +2 -0
- package/cjs/components/Modal/ModalBody.js +1 -0
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.d.ts +5 -0
- package/cjs/components/Modal/ModalHeader.js +8 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Modal/ModalSeparator.js +1 -1
- package/cjs/components/Modal/ModalSeparator.js.map +1 -1
- package/cjs/components/Paging/DotsIcon.d.ts +3 -0
- package/cjs/components/Paging/DotsIcon.js +13 -0
- package/cjs/components/Paging/DotsIcon.js.map +1 -0
- package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
- package/cjs/components/Paging/ForwardIcon.js +13 -1
- package/cjs/components/Paging/ForwardIcon.js.map +1 -1
- package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
- package/cjs/components/Paging/NavigationHelper.js +8 -6
- package/cjs/components/Paging/NavigationHelper.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +13 -2
- package/cjs/components/Paging/Paging.js +120 -50
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/Paging.styles.d.ts +24 -1
- package/cjs/components/Paging/Paging.styles.js +151 -22
- package/cjs/components/Paging/Paging.styles.js.map +1 -1
- package/cjs/components/Paging/PagingHelper.d.ts +1 -1
- package/cjs/components/Paging/PagingHelper.js +18 -11
- package/cjs/components/Paging/PagingHelper.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +5 -12
- package/cjs/components/PasswordInput/PasswordInput.js +21 -32
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +4 -1
- package/cjs/components/Radio/Radio.js +7 -4
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +3 -0
- package/cjs/components/RadioGroup/RadioGroup.js +19 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.styles.d.ts +1 -0
- package/cjs/components/RadioGroup/RadioGroup.styles.js +10 -4
- package/cjs/components/RadioGroup/RadioGroup.styles.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
- package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +7 -1
- package/cjs/components/Select/Select.js +13 -6
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +4 -2
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
- package/cjs/components/SidePage/SidePage.styles.js +52 -38
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
- package/cjs/components/SidePage/SidePageBody.js +1 -0
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
- package/cjs/components/SidePage/SidePageContainer.js +1 -0
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
- package/cjs/components/SidePage/SidePageFooter.js +1 -0
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
- package/cjs/components/SidePage/SidePageHeader.js +63 -19
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/SingleToast/SingleToast.d.ts +33 -3
- package/cjs/components/SingleToast/SingleToast.js +58 -3
- package/cjs/components/SingleToast/SingleToast.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +2 -18
- package/cjs/components/Spinner/Spinner.js +2 -32
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +5 -13
- package/cjs/components/Sticky/Sticky.js +12 -18
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +6 -21
- package/cjs/components/Switcher/Switcher.js +11 -20
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
- package/cjs/components/Switcher/Switcher.styles.js +17 -9
- package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
- package/cjs/components/Tabs/Indicator.d.ts +2 -0
- package/cjs/components/Tabs/Indicator.js +1 -0
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +2 -0
- package/cjs/components/Tabs/Tab.js +1 -0
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +2 -0
- package/cjs/components/Tabs/Tabs.js +1 -0
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +10 -46
- package/cjs/components/Textarea/Textarea.js +23 -60
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.styles.js +3 -2
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Textarea/TextareaCounter.js +2 -13
- package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +62 -13
- package/cjs/components/Toast/Toast.js +119 -12
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastStatic.d.ts +3 -2
- package/cjs/components/Toast/ToastStatic.js.map +1 -1
- package/cjs/components/Toast/ToastView.d.ts +8 -16
- package/cjs/components/Toast/ToastView.js +19 -22
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toast/ToastView.styles.d.ts +4 -0
- package/cjs/components/Toast/ToastView.styles.js +43 -9
- package/cjs/components/Toast/ToastView.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +4 -11
- package/cjs/components/Toggle/Toggle.js +4 -14
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +2 -0
- package/cjs/components/Token/Token.js +1 -0
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +8 -3
- package/cjs/components/TokenInput/TokenInput.js +44 -30
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.d.ts +12 -3
- package/cjs/components/TokenInput/TokenInputMenu.js +23 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +14 -8
- package/cjs/components/Tooltip/Tooltip.js +102 -17
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
- package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
- package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
- package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/ComponentTable.js +2 -3
- package/cjs/internal/ComponentTable.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +12 -4
- package/cjs/internal/CustomComboBox/ComboBoxView.js +50 -7
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +11 -4
- package/cjs/internal/CustomComboBox/CustomComboBox.js +20 -5
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
- package/cjs/internal/DateSelect/DateSelect.js +13 -19
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
- package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
- package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/cjs/internal/InputLikeText/InputLikeText.js +13 -14
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
- package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
- package/cjs/internal/Menu/Menu.d.ts +2 -0
- package/cjs/internal/Menu/Menu.js +1 -0
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +43 -60
- package/cjs/internal/Popup/Popup.js +41 -81
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.d.ts +23 -33
- package/cjs/internal/Popup/PopupPin.js +2 -35
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
- package/cjs/internal/Popup/PopupPinNew.js +180 -0
- package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
- package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
- package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
- package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
- package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +20 -16
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
- package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
- package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
- package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
- package/cjs/internal/ThemePlayground/SizesGroup.js +4 -4
- package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
- package/cjs/internal/ThemePlayground/VariableValue.js +4 -4
- package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
- package/cjs/internal/ZIndex/ZIndex.js +5 -1
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
- package/cjs/internal/themes/BasicTheme.d.ts +125 -20
- package/cjs/internal/themes/BasicTheme.js +172 -25
- package/cjs/internal/themes/BasicTheme.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_2.js +1 -1
- package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
- package/cjs/internal/themes/DarkTheme5_3.js +13 -0
- package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
- package/cjs/internal/themes/DarkTheme5_4.d.ts +1 -0
- package/cjs/internal/themes/DarkTheme5_4.js +18 -0
- package/cjs/internal/themes/DarkTheme5_4.js.map +1 -0
- package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
- package/cjs/internal/themes/LightTheme5_3.js +13 -0
- package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
- package/cjs/internal/themes/LightTheme5_4.d.ts +1 -0
- package/cjs/internal/themes/LightTheme5_4.js +18 -0
- package/cjs/internal/themes/LightTheme5_4.js.map +1 -0
- package/cjs/internal/themes/consts.d.ts +8 -0
- package/cjs/internal/themes/consts.js +8 -0
- package/cjs/internal/themes/consts.js.map +1 -0
- package/cjs/lib/__stories__/Blink.creevey.mts +90 -0
- package/cjs/lib/blink.d.ts +15 -0
- package/cjs/lib/blink.js +65 -0
- package/cjs/lib/blink.js.map +1 -0
- package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
- package/cjs/lib/date/InternalDateGetter.js +8 -1
- package/cjs/lib/date/InternalDateGetter.js.map +1 -1
- package/cjs/lib/delay.mts +3 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +11 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +11 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +23 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +1 -1
- package/cjs/lib/forwardRefAndName.js +0 -1
- package/cjs/lib/forwardRefAndName.js.map +1 -1
- package/cjs/lib/getMenuPositions.d.ts +21 -1
- package/cjs/lib/getMenuPositions.js +45 -8
- package/cjs/lib/getMenuPositions.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
- package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/lib/size/SizeControlContext.d.ts +6 -0
- package/cjs/lib/size/SizeControlContext.js +16 -0
- package/cjs/lib/size/SizeControlContext.js.map +1 -0
- package/cjs/lib/size/SizeDecorator.d.ts +33 -0
- package/cjs/lib/size/SizeDecorator.js +41 -0
- package/cjs/lib/size/SizeDecorator.js.map +1 -0
- package/cjs/lib/size/constants.d.ts +2 -0
- package/cjs/lib/size/constants.js +3 -0
- package/cjs/lib/size/constants.js.map +1 -0
- package/cjs/lib/size/index.d.ts +1 -0
- package/cjs/lib/size/index.js +1 -0
- package/cjs/lib/size/index.js.map +1 -0
- package/cjs/lib/size/useSizeControl.d.ts +2 -0
- package/cjs/lib/size/useSizeControl.js +10 -0
- package/cjs/lib/size/useSizeControl.js.map +1 -0
- package/cjs/lib/theming/ThemeHelpers.d.ts +1 -1
- package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
- package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
- package/cjs/lib/theming/ThemeVersions.js.map +1 -1
- package/cjs/lib/theming/themes/DarkTheme.d.ts +2 -0
- package/cjs/lib/theming/themes/DarkTheme.js +6 -2
- package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
- package/cjs/lib/theming/themes/LightTheme.d.ts +2 -0
- package/cjs/lib/theming/themes/LightTheme.js +6 -2
- package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
- package/cjs/lib/utils.d.ts +18 -1
- package/cjs/lib/utils.js +40 -4
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/test-setup.d.ts +1 -0
- package/cjs/vitest.config.d.ts +2 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +63 -51
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +18 -26
- package/components/Button/Button/Button.js +45 -24
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +4 -1
- package/components/Button/Button.styles/Button.styles.js +79 -61
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/Button.styles.d.ts +6 -0
- package/components/Button/ButtonArrow/ButtonArrow.js +1 -3
- package/components/Button/ButtonArrow/ButtonArrow.js.map +1 -1
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +2 -0
- package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView/DayCellView.js +6 -10
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +2 -0
- package/components/Checkbox/Checkbox/Checkbox.js +12 -24
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +4 -16
- package/components/ComboBox/ComboBox/ComboBox.js +2 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +22 -3
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +13 -36
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
- package/components/CurrencyInput/constants/constants.js +0 -1
- package/components/CurrencyInput/constants/constants.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +34 -24
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +6 -1
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +2 -2
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
- package/components/DateInput/helpers/InternalDateMediator.d.ts +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +1 -32
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -33
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +41 -22
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +3 -1
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js +5 -8
- package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
- package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js +16 -15
- package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +1 -47
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -47
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
- package/components/FileUploader/FileUploader/FileUploader.js +8 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FxInput/FxInput/FxInput.js +122 -70
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +13 -8
- package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js +2 -2
- package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js.map +1 -1
- package/components/Gapped/Gapped/Gapped.js +1 -15
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +2 -15
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/components/Group/Group/Group.js +64 -28
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Group/Group.d.ts +5 -4
- package/components/Group/Group.styles/Group.styles.js +9 -6
- package/components/Group/Group.styles/Group.styles.js.map +1 -1
- package/components/Group/Group.styles.d.ts +1 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +2 -0
- package/components/Input/Input/Input.js +23 -52
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +6 -5
- package/components/Input/Input.styles/Input.styles.js +9 -13
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Input/Input.styles.d.ts +0 -1
- package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/components/Kebab/Kebab/Kebab.js +8 -26
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +4 -2
- package/components/Link/Link/Link.js +8 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +2 -0
- package/components/Link/Link.mixins/Link.mixins.js +1 -1
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/Link/Link.styles/Link.styles.js +1 -1
- package/components/Link/Link.styles/Link.styles.js.map +1 -1
- package/components/Loader/Loader/Loader.js +2 -34
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +7 -36
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +81 -66
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +3 -2
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js +28 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +9 -0
- package/components/MenuItem/MenuItem/MenuItem.js +1 -12
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +2 -12
- package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
- package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.styles.d.ts +1 -0
- package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
- package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
- package/components/Modal/Modal.styles/Modal.styles.js +32 -29
- package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +2 -1
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +2 -0
- package/components/Modal/ModalHeader/ModalHeader.js +3 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Modal/ModalHeader.d.ts +5 -0
- package/components/Modal/ModalSeparator/ModalSeparator.js +1 -1
- package/components/Modal/ModalSeparator/ModalSeparator.js.map +1 -1
- package/components/Paging/DotsIcon/DotsIcon.js +14 -0
- package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
- package/components/Paging/DotsIcon/package.json +6 -0
- package/components/Paging/DotsIcon.d.ts +3 -0
- package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
- package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
- package/components/Paging/ForwardIcon.d.ts +3 -0
- package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
- package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
- package/components/Paging/NavigationHelper.d.ts +3 -2
- package/components/Paging/Paging/Paging.js +96 -47
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +13 -2
- package/components/Paging/Paging.styles/Paging.styles.js +77 -16
- package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
- package/components/Paging/Paging.styles.d.ts +24 -1
- package/components/Paging/PagingHelper/PagingHelper.js +16 -8
- package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
- package/components/Paging/PagingHelper.d.ts +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +13 -25
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +5 -12
- package/components/Radio/Radio/Radio.js +7 -7
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +4 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -17
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +3 -0
- package/components/RadioGroup/RadioGroup.styles/RadioGroup.styles.js +7 -4
- package/components/RadioGroup/RadioGroup.styles/RadioGroup.styles.js.map +1 -1
- package/components/RadioGroup/RadioGroup.styles.d.ts +1 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
- package/components/Select/Select/Select.js +17 -15
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +7 -1
- package/components/SidePage/SidePage/SidePage.js +3 -3
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +3 -1
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +2 -0
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +2 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +2 -0
- package/components/SidePage/SidePageHeader/SidePageHeader.js +62 -35
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +12 -2
- package/components/SingleToast/SingleToast/SingleToast.js +37 -12
- package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +33 -3
- package/components/Spinner/Spinner/Spinner.js +1 -18
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +2 -18
- package/components/Sticky/Sticky/Sticky.js +10 -14
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +5 -13
- package/components/Switcher/Switcher/Switcher.js +19 -16
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +6 -21
- package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
- package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
- package/components/Switcher/Switcher.styles.d.ts +1 -0
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Indicator.d.ts +2 -0
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +2 -0
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +2 -0
- package/components/Textarea/Textarea/Textarea.js +19 -52
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +10 -46
- package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
- package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
- package/components/Toast/Toast/Toast.js +93 -32
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +62 -13
- package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
- package/components/Toast/ToastStatic.d.ts +3 -2
- package/components/Toast/ToastView/ToastView.js +20 -22
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toast/ToastView.d.ts +8 -16
- package/components/Toast/ToastView.styles/ToastView.styles.js +17 -5
- package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
- package/components/Toast/ToastView.styles.d.ts +4 -0
- package/components/Toggle/Toggle/Toggle.js +11 -20
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +4 -11
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +2 -0
- package/components/TokenInput/TokenInput/TokenInput.js +49 -43
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +8 -3
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +16 -6
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/TokenInput/TokenInputMenu.d.ts +12 -3
- package/components/Tooltip/Tooltip/Tooltip.js +77 -26
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +14 -8
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.styles.d.ts +7 -1
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
- package/internal/ComponentTable/ComponentTable.js +0 -2
- package/internal/ComponentTable/ComponentTable.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +72 -41
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +12 -4
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +13 -7
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +11 -4
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
- package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +4 -11
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +0 -10
- package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +2 -0
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +17 -28
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +2 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +2 -0
- package/internal/Popup/Popup/Popup.js +23 -69
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +43 -60
- package/internal/Popup/PopupPin/PopupPin.js +1 -34
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +23 -33
- package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
- package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
- package/internal/Popup/PopupPinNew/package.json +6 -0
- package/internal/Popup/PopupPinNew.d.ts +31 -0
- package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
- package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
- package/internal/Popup/PopupPinNew.styles/package.json +6 -0
- package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +2 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -3
- package/internal/ThemePlayground/Playground/Playground.js +21 -18
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
- package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
- package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
- package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
- package/internal/ThemePlayground/SizesGroup/SizesGroup.js +4 -4
- package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +2 -2
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
- package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -4
- package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +3 -3
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
- package/internal/themes/BasicTheme/BasicTheme.js +185 -30
- package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +125 -20
- package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
- package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
- package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
- package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
- package/internal/themes/DarkTheme5_3/package.json +6 -0
- package/internal/themes/DarkTheme5_3.d.ts +1 -0
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +17 -0
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -0
- package/internal/themes/DarkTheme5_4/package.json +6 -0
- package/internal/themes/DarkTheme5_4.d.ts +1 -0
- package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
- package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
- package/internal/themes/LightTheme5_3/package.json +6 -0
- package/internal/themes/LightTheme5_3.d.ts +1 -0
- package/internal/themes/LightTheme5_4/LightTheme5_4.js +17 -0
- package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -0
- package/internal/themes/LightTheme5_4/package.json +6 -0
- package/internal/themes/LightTheme5_4.d.ts +1 -0
- package/internal/themes/consts/consts.js +9 -0
- package/internal/themes/consts/consts.js.map +1 -0
- package/internal/themes/consts/package.json +6 -0
- package/internal/themes/consts.d.ts +8 -0
- package/lib/__stories__/Blink.creevey.mts +90 -0
- package/lib/blink/blink.js +63 -0
- package/lib/blink/blink.js.map +1 -0
- package/lib/blink/package.json +6 -0
- package/lib/blink.d.ts +15 -0
- package/lib/date/InternalDateGetter/InternalDateGetter.js +4 -1
- package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
- package/lib/date/InternalDateGetter.d.ts +1 -1
- package/lib/delay.d.mts +1 -0
- package/lib/delay.mts +3 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +11 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +12 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +11 -0
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
- package/lib/forwardRefAndName.d.ts +1 -1
- package/lib/getMenuPositions/getMenuPositions.js +33 -4
- package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
- package/lib/getMenuPositions.d.ts +21 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
- package/lib/size/SizeControlContext/SizeControlContext.js +7 -0
- package/lib/size/SizeControlContext/SizeControlContext.js.map +1 -0
- package/lib/size/SizeControlContext/package.json +6 -0
- package/lib/size/SizeControlContext.d.ts +6 -0
- package/lib/size/SizeDecorator/SizeDecorator.js +41 -0
- package/lib/size/SizeDecorator/SizeDecorator.js.map +1 -0
- package/lib/size/SizeDecorator/package.json +6 -0
- package/lib/size/SizeDecorator.d.ts +33 -0
- package/lib/size/constants/constants.js +1 -0
- package/lib/size/constants/constants.js.map +1 -0
- package/lib/size/constants/package.json +6 -0
- package/lib/size/constants.d.ts +2 -0
- package/lib/size/index/index.js +1 -0
- package/lib/size/index/index.js.map +1 -0
- package/lib/size/index/package.json +6 -0
- package/lib/size/index.d.ts +1 -0
- package/lib/size/package.json +6 -0
- package/lib/size/useSizeControl/package.json +6 -0
- package/lib/size/useSizeControl/useSizeControl.js +7 -0
- package/lib/size/useSizeControl/useSizeControl.js.map +1 -0
- package/lib/size/useSizeControl.d.ts +2 -0
- package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
- package/lib/theming/ThemeHelpers.d.ts +1 -1
- package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
- package/lib/theming/ThemeVersions.d.ts +1 -1
- package/lib/theming/themes/DarkTheme/DarkTheme.js +5 -1
- package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
- package/lib/theming/themes/DarkTheme.d.ts +2 -0
- package/lib/theming/themes/LightTheme/LightTheme.js +5 -1
- package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
- package/lib/theming/themes/LightTheme.d.ts +2 -0
- package/lib/utils/utils.js +33 -2
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +18 -1
- package/package.json +19 -36
- package/test-setup.d.ts +1 -0
- package/vitest.config.d.ts +2 -0
- package/cjs/components/Autocomplete/Autocomplete.md +0 -113
- package/cjs/components/Button/Button.md +0 -261
- package/cjs/components/Calendar/Calendar.md +0 -276
- package/cjs/components/Calendar/CalendarDay.md +0 -70
- package/cjs/components/Center/Center.md +0 -26
- package/cjs/components/Checkbox/Checkbox.md +0 -171
- package/cjs/components/ComboBox/ComboBox.md +0 -574
- package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
- package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/cjs/components/DateInput/DateInput.md +0 -111
- package/cjs/components/DatePicker/DatePicker.md +0 -368
- package/cjs/components/Dropdown/Dropdown.md +0 -45
- package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
- package/cjs/components/FileUploader/FileUploader.md +0 -131
- package/cjs/components/FxInput/FxInput.md +0 -31
- package/cjs/components/Gapped/Gapped.md +0 -44
- package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
- package/cjs/components/Group/Group.md +0 -19
- package/cjs/components/Hint/Hint.md +0 -86
- package/cjs/components/Input/Input.md +0 -87
- package/cjs/components/Kebab/Kebab.md +0 -306
- package/cjs/components/Link/Link.md +0 -182
- package/cjs/components/Loader/Loader.md +0 -33
- package/cjs/components/MaskedInput/MaskedInput.md +0 -114
- package/cjs/components/MenuFooter/MenuFooter.md +0 -27
- package/cjs/components/MenuHeader/MenuHeader.md +0 -35
- package/cjs/components/MenuItem/MenuItem.md +0 -139
- package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
- package/cjs/components/MiniModal/MiniModal.md +0 -231
- package/cjs/components/Modal/Modal.md +0 -56
- package/cjs/components/Paging/Paging.md +0 -57
- package/cjs/components/PasswordInput/PasswordInput.md +0 -29
- package/cjs/components/Radio/Radio.md +0 -57
- package/cjs/components/RadioGroup/RadioGroup.md +0 -44
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
- package/cjs/components/Select/Select.md +0 -113
- package/cjs/components/SidePage/SidePage.md +0 -65
- package/cjs/components/SingleToast/SingleToast.md +0 -36
- package/cjs/components/Spinner/Spinner.md +0 -36
- package/cjs/components/Sticky/Sticky.md +0 -28
- package/cjs/components/Switcher/Switcher.md +0 -111
- package/cjs/components/Tabs/Tab.md +0 -73
- package/cjs/components/Tabs/Tabs.md +0 -54
- package/cjs/components/Textarea/Textarea.md +0 -58
- package/cjs/components/Toast/Toast.md +0 -69
- package/cjs/components/Toggle/Toggle.md +0 -110
- package/cjs/components/Token/Token.md +0 -131
- package/cjs/components/TokenInput/TokenInput.md +0 -308
- package/cjs/components/Tooltip/Tooltip.md +0 -322
- package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
- package/cjs/internal/DataTids/DATATIDS.md +0 -12
- package/cjs/internal/DataTids/DataTids.d.ts +0 -12
- package/cjs/internal/DataTids/DataTids.js +0 -50
- package/cjs/internal/DataTids/DataTids.js.map +0 -1
- package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/cjs/internal/DataTids/DataTids.styles.js +0 -42
- package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
- package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/cjs/internal/DataTids/componentsDataTids.js +0 -15
- package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
- package/cjs/internal/ThemePlayground/Playground.md +0 -7
- package/cjs/lib/SSRSafe.d.ts +0 -2
- package/cjs/lib/SSRSafe.js +0 -5
- package/cjs/lib/SSRSafe.js.map +0 -1
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
- package/cjs/lib/theming/ThemeContext.md +0 -265
- package/components/Autocomplete/Autocomplete.md +0 -113
- package/components/Button/Button.md +0 -261
- package/components/Calendar/Calendar.md +0 -276
- package/components/Calendar/CalendarDay.md +0 -70
- package/components/Center/Center.md +0 -26
- package/components/Checkbox/Checkbox.md +0 -171
- package/components/ComboBox/ComboBox.md +0 -574
- package/components/CurrencyInput/CurrencyInput.md +0 -39
- package/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/components/DateInput/DateInput.md +0 -111
- package/components/DatePicker/DatePicker.md +0 -368
- package/components/Dropdown/Dropdown.md +0 -45
- package/components/DropdownMenu/DropdownMenu.md +0 -290
- package/components/FileUploader/FileUploader.md +0 -131
- package/components/FxInput/FxInput.md +0 -31
- package/components/Gapped/Gapped.md +0 -44
- package/components/GlobalLoader/GlobalLoader.md +0 -97
- package/components/Group/Group.md +0 -19
- package/components/Hint/Hint.md +0 -86
- package/components/Input/Input.md +0 -87
- package/components/Kebab/Kebab.md +0 -306
- package/components/Link/Link.md +0 -182
- package/components/Loader/Loader.md +0 -33
- package/components/MaskedInput/MaskedInput.md +0 -114
- package/components/MenuFooter/MenuFooter.md +0 -27
- package/components/MenuHeader/MenuHeader.md +0 -35
- package/components/MenuItem/MenuItem.md +0 -139
- package/components/MenuSeparator/MenuSeparator.md +0 -14
- package/components/MiniModal/MiniModal.md +0 -231
- package/components/Modal/Modal.md +0 -56
- package/components/Paging/Paging.md +0 -57
- package/components/PasswordInput/PasswordInput.md +0 -29
- package/components/Radio/Radio.md +0 -57
- package/components/RadioGroup/RadioGroup.md +0 -44
- package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/components/ScrollContainer/ScrollContainer.md +0 -224
- package/components/Select/Select.md +0 -113
- package/components/SidePage/SidePage.md +0 -65
- package/components/SingleToast/SingleToast.md +0 -36
- package/components/Spinner/Spinner.md +0 -36
- package/components/Sticky/Sticky.md +0 -28
- package/components/Switcher/Switcher.md +0 -111
- package/components/Tabs/Tab.md +0 -73
- package/components/Tabs/Tabs.md +0 -54
- package/components/Textarea/Textarea.md +0 -58
- package/components/Toast/Toast.md +0 -69
- package/components/Toggle/Toggle.md +0 -110
- package/components/Token/Token.md +0 -131
- package/components/TokenInput/TokenInput.md +0 -308
- package/components/Tooltip/Tooltip.md +0 -322
- package/components/TooltipMenu/TooltipMenu.md +0 -241
- package/internal/DataTids/DATATIDS.md +0 -12
- package/internal/DataTids/DataTids/DataTids.js +0 -69
- package/internal/DataTids/DataTids/DataTids.js.map +0 -1
- package/internal/DataTids/DataTids/package.json +0 -6
- package/internal/DataTids/DataTids.d.ts +0 -12
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
- package/internal/DataTids/DataTids.styles/package.json +0 -6
- package/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
- package/internal/DataTids/componentsDataTids/package.json +0 -6
- package/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/internal/ThemePlayground/Playground.md +0 -7
- package/lib/SSRSafe/SSRSafe.js +0 -4
- package/lib/SSRSafe/SSRSafe.js.map +0 -1
- package/lib/SSRSafe/package.json +0 -6
- package/lib/SSRSafe.d.ts +0 -2
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/lib/locale/LOCALECONTEXT.md +0 -222
- package/lib/theming/ThemeContext.md +0 -265
package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus"]; /* eslint react-hooks/exhaustive-deps: 2 */
|
|
3
|
+
var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus", "alwaysShowMask"]; /* eslint react-hooks/exhaustive-deps: 2 */
|
|
4
4
|
|
|
5
|
-
import React, {
|
|
6
|
-
import { globalObject, isBrowser } from '@skbkontur/global-object';
|
|
5
|
+
import React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';
|
|
7
6
|
import debounce from 'lodash.debounce';
|
|
8
7
|
import { ThemeContext } from "../../../../lib/theming/ThemeContext";
|
|
9
8
|
import { forwardRefAndName } from "../../../../lib/forwardRefAndName";
|
|
10
9
|
import { cx } from "../../../../lib/theming/Emotion";
|
|
10
|
+
import { isDocument, isWindow, tryGetDocument, tryGetWindow } from "../../../../lib/utils";
|
|
11
11
|
import { globalClasses } from "../ColorableInputElement.styles";
|
|
12
12
|
|
|
13
13
|
// Возможно придётся включить.
|
|
@@ -16,12 +16,13 @@ import { globalClasses } from "../ColorableInputElement.styles";
|
|
|
16
16
|
// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);
|
|
17
17
|
|
|
18
18
|
export var ColorableInputElement = forwardRefAndName('ColorableInputElement', function ColorableInputElement(props, ref) {
|
|
19
|
+
var _props$style3;
|
|
19
20
|
var inputRef = useRef(null);
|
|
20
21
|
var spanRef = useRef(null);
|
|
21
22
|
var focused = useRef(false);
|
|
22
|
-
var
|
|
23
|
+
var updateActiveTimer = useRef();
|
|
23
24
|
var theme = useContext(ThemeContext);
|
|
24
|
-
var _useState = useState(
|
|
25
|
+
var _useState = useState(Boolean(props.alwaysShowMask || !props.placeholder && (props.value || props.defaultValue))),
|
|
25
26
|
active = _useState[0],
|
|
26
27
|
setActive = _useState[1];
|
|
27
28
|
var children = props.children,
|
|
@@ -29,40 +30,63 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
29
30
|
onFocus = props.onFocus,
|
|
30
31
|
onBlur = props.onBlur,
|
|
31
32
|
showOnFocus = props.showOnFocus,
|
|
33
|
+
alwaysShowMask = props.alwaysShowMask,
|
|
32
34
|
inputProps = _objectWithoutPropertiesLoose(props, _excluded);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
input: inputRef.current,
|
|
36
|
-
getRootNode: function getRootNode() {
|
|
37
|
-
return inputRef.current;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
35
|
+
var stopUpdateActive = useCallback(function () {
|
|
36
|
+
clearTimeout(updateActiveTimer.current);
|
|
40
37
|
}, []);
|
|
41
|
-
|
|
38
|
+
var updateActive = useCallback(function () {
|
|
39
|
+
stopUpdateActive();
|
|
40
|
+
updateActiveTimer.current = setTimeout(function () {
|
|
41
|
+
var nextActive = true;
|
|
42
|
+
if (inputRef.current) {
|
|
43
|
+
var _inputRef$current2;
|
|
44
|
+
var _inputRef$current = inputRef.current,
|
|
45
|
+
clientWidth = _inputRef$current.clientWidth,
|
|
46
|
+
scrollWidth = _inputRef$current.scrollWidth;
|
|
47
|
+
var scrollable = scrollWidth > clientWidth;
|
|
48
|
+
var placeholderShown = (_inputRef$current2 = inputRef.current) == null || (_inputRef$current2 = _inputRef$current2.parentElement) == null ? void 0 : _inputRef$current2.querySelector(':placeholder-shown');
|
|
49
|
+
nextActive = !(scrollable || placeholderShown);
|
|
50
|
+
}
|
|
51
|
+
setActive(nextActive);
|
|
52
|
+
}, 0);
|
|
53
|
+
}, [stopUpdateActive]);
|
|
42
54
|
var paintText = useCallback(function () {
|
|
43
|
-
var _inputRef$
|
|
44
|
-
|
|
55
|
+
var _inputRef$current4, _shadow, _shadow2, _props$style, _props$style2;
|
|
56
|
+
var win = tryGetWindow(inputRef.current);
|
|
57
|
+
var doc = tryGetDocument(inputRef.current);
|
|
58
|
+
if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {
|
|
59
|
+
var _inputRef$current3;
|
|
60
|
+
inputRef.current && (inputRef.current.style.backgroundImage = '');
|
|
61
|
+
(_inputRef$current3 = inputRef.current) == null || _inputRef$current3.classList.remove(globalClasses.input);
|
|
45
62
|
return;
|
|
46
63
|
}
|
|
47
|
-
(_inputRef$
|
|
64
|
+
(_inputRef$current4 = inputRef.current) == null || _inputRef$current4.classList.add(globalClasses.input);
|
|
48
65
|
var shadow = spanRef.current.shadowRoot;
|
|
49
|
-
var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('
|
|
50
|
-
|
|
66
|
+
var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('typed-value');
|
|
67
|
+
var fullValueElement = (_shadow2 = shadow) == null ? void 0 : _shadow2.getElementById('full-value');
|
|
68
|
+
if (!typedValueElement || !fullValueElement) {
|
|
51
69
|
shadow = spanRef.current.attachShadow({
|
|
52
70
|
mode: 'open'
|
|
53
71
|
});
|
|
54
|
-
typedValueElement =
|
|
55
|
-
|
|
56
|
-
|
|
72
|
+
typedValueElement = doc.createElement('span');
|
|
73
|
+
fullValueElement = doc.createElement('span');
|
|
74
|
+
typedValueElement.setAttribute('id', 'typed-value');
|
|
75
|
+
fullValueElement.setAttribute('id', 'full-value');
|
|
76
|
+
shadow.append(typedValueElement, fullValueElement);
|
|
57
77
|
}
|
|
58
|
-
var style =
|
|
78
|
+
var style = getComputedStyle(inputRef.current);
|
|
59
79
|
typedValueElement.textContent = (inputRef.current.getAttribute('data-unmasked-value') || focused.current) && inputRef.current.getAttribute('data-typed-value') || '';
|
|
80
|
+
fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';
|
|
60
81
|
var inputRect = inputRef.current.getBoundingClientRect();
|
|
61
|
-
var
|
|
62
|
-
var
|
|
82
|
+
var typedValueRect = typedValueElement.getBoundingClientRect();
|
|
83
|
+
var fullValueRect = fullValueElement.getBoundingClientRect();
|
|
84
|
+
var threshold = typedValueRect.width / (inputRect.width / 100);
|
|
63
85
|
var degree = style.fontStyle === 'italic' ? 100 : 90;
|
|
86
|
+
var restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);
|
|
64
87
|
var typedValueColor = theme.inputTextColor;
|
|
65
88
|
var maskColor = theme.inputPlaceholderColor;
|
|
89
|
+
var indent = 0;
|
|
66
90
|
if (props.disabled) {
|
|
67
91
|
typedValueColor = theme.inputTextColorDisabled;
|
|
68
92
|
maskColor = theme.inputTextColorDisabled;
|
|
@@ -70,30 +94,44 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
70
94
|
if (props.showOnFocus) {
|
|
71
95
|
maskColor = focused.current ? maskColor : 'transparent';
|
|
72
96
|
}
|
|
73
|
-
|
|
74
|
-
|
|
97
|
+
if (((_props$style = props.style) == null ? void 0 : _props$style.textAlign) === 'right') {
|
|
98
|
+
indent = 100 * restValueWidth;
|
|
99
|
+
}
|
|
100
|
+
if (((_props$style2 = props.style) == null ? void 0 : _props$style2.textAlign) === 'center') {
|
|
101
|
+
indent = 50 * restValueWidth;
|
|
102
|
+
}
|
|
103
|
+
inputRef.current.style.backgroundImage = "\n linear-gradient(\n " + degree + "deg,\n " + typedValueColor + " " + (threshold + indent) + "%,\n " + maskColor + " " + (threshold + indent) + "%\n )";
|
|
104
|
+
}, [active, props.showOnFocus, props.disabled, theme.inputTextColor, theme.inputPlaceholderColor, theme.inputTextColorDisabled, (_props$style3 = props.style) == null ? void 0 : _props$style3.textAlign]);
|
|
75
105
|
var debouncedPaintText = useCallback(function () {
|
|
76
106
|
return debounce(paintText);
|
|
77
107
|
}, [paintText])();
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
useEffect(function () {
|
|
89
|
-
activation();
|
|
108
|
+
var handleInput = useCallback(function (e) {
|
|
109
|
+
debouncedPaintText();
|
|
110
|
+
onInput == null || onInput(e);
|
|
111
|
+
}, [debouncedPaintText, onInput]);
|
|
112
|
+
var handleFocus = useCallback(function (e) {
|
|
113
|
+
updateActive();
|
|
114
|
+
focused.current = true;
|
|
115
|
+
onFocus == null || onFocus(e);
|
|
116
|
+
}, [onFocus, updateActive]);
|
|
117
|
+
var handleBlur = useCallback(function (e) {
|
|
90
118
|
updateActive();
|
|
91
|
-
|
|
119
|
+
focused.current = false;
|
|
120
|
+
onBlur == null || onBlur(e);
|
|
121
|
+
}, [onBlur, updateActive]);
|
|
122
|
+
useImperativeHandle(ref, function () {
|
|
123
|
+
return {
|
|
124
|
+
input: inputRef.current,
|
|
125
|
+
getRootNode: function getRootNode() {
|
|
126
|
+
return inputRef.current;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}, []);
|
|
92
130
|
useEffect(function () {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
});
|
|
131
|
+
debouncedPaintText();
|
|
132
|
+
updateActive();
|
|
133
|
+
return stopUpdateActive;
|
|
134
|
+
}, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);
|
|
97
135
|
return /*#__PURE__*/(
|
|
98
136
|
React.createElement(React.Fragment, null, /*#__PURE__*/
|
|
99
137
|
React.cloneElement(children, _extends({}, inputProps, {
|
|
@@ -111,27 +149,4 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
111
149
|
ref: spanRef
|
|
112
150
|
}))
|
|
113
151
|
);
|
|
114
|
-
function handleInput(e) {
|
|
115
|
-
var _inputRef$current3;
|
|
116
|
-
var isActive = !((_inputRef$current3 = inputRef.current) != null && (_inputRef$current3 = _inputRef$current3.parentElement) != null && _inputRef$current3.querySelector(':placeholder-shown'));
|
|
117
|
-
setActive(isActive);
|
|
118
|
-
activation();
|
|
119
|
-
onInput == null || onInput(e);
|
|
120
|
-
}
|
|
121
|
-
function handleFocus(e) {
|
|
122
|
-
setTimeout(updateActive);
|
|
123
|
-
focused.current = true;
|
|
124
|
-
onFocus == null || onFocus(e);
|
|
125
|
-
}
|
|
126
|
-
function handleBlur(e) {
|
|
127
|
-
updateActive();
|
|
128
|
-
focused.current = false;
|
|
129
|
-
onBlur == null || onBlur(e);
|
|
130
|
-
}
|
|
131
|
-
function updateActive() {
|
|
132
|
-
setTimeout(function () {
|
|
133
|
-
var _inputRef$current4;
|
|
134
|
-
setActive(!((_inputRef$current4 = inputRef.current) != null && (_inputRef$current4 = _inputRef$current4.parentElement) != null && _inputRef$current4.querySelector(':placeholder-shown')));
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
152
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useEffect","useImperativeHandle","useRef","useCallback","useState","globalObject","isBrowser","debounce","ThemeContext","forwardRefAndName","cx","globalClasses","ColorableInputElement","props","ref","inputRef","spanRef","focused","inputStyle","theme","_useState","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","input","current","getRootNode","updateActive","paintText","_inputRef$current","_shadow","classList","add","shadow","shadowRoot","typedValueElement","getElementById","attachShadow","mode","document","createElement","setAttribute","appendChild","style","textContent","getAttribute","inputRect","getBoundingClientRect","filledRect","threshold","width","degree","fontStyle","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","disabled","inputTextColorDisabled","backgroundImage","debouncedPaintText","activation","_inputRef$current2","cancel","remove","value","defaultValue","getComputedStyle","Fragment","cloneElement","_extends","handleInput","handleFocus","handleBlur","className","visibility","position","whiteSpace","e","_inputRef$current3","isActive","parentElement","querySelector","setTimeout","_inputRef$current4"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const inputStyle = React.useRef<CSSStyleDeclaration>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(true);\n\n const { children, onInput, onFocus, onBlur, showOnFocus, ...inputProps } = props;\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(updateActive, []);\n\n const paintText = useCallback(() => {\n if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('span');\n\n if (!typedValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'span');\n\n shadow.appendChild(typedValueElement);\n }\n\n const style = inputStyle.current;\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const filledRect = spanRef.current.getBoundingClientRect();\n\n const threshold = filledRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold}%,\n ${maskColor} ${threshold}%\n )`;\n }, [\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const activation = useCallback(() => {\n if (active) {\n debouncedPaintText();\n } else {\n debouncedPaintText.cancel();\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n }\n }, [debouncedPaintText, active]);\n\n useEffect(() => {\n activation();\n updateActive();\n }, [props.value, props.defaultValue, theme, activation]);\n\n useEffect(() => {\n if (inputRef.current) {\n inputStyle.current = getComputedStyle(inputRef.current);\n }\n });\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const isActive = !inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n setActive(isActive);\n\n activation();\n\n onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setTimeout(updateActive);\n\n focused.current = true;\n\n onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n }\n\n function updateActive() {\n setTimeout(() => {\n setActive(!inputRef.current?.parentElement?.querySelector(':placeholder-shown'));\n });\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useContext","useImperativeHandle","useRef","useCallback","useState","debounce","ThemeContext","forwardRefAndName","cx","isDocument","isWindow","tryGetDocument","tryGetWindow","globalClasses","ColorableInputElement","props","ref","_props$style3","inputRef","spanRef","focused","updateActiveTimer","theme","_useState","Boolean","alwaysShowMask","placeholder","value","defaultValue","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","stopUpdateActive","clearTimeout","current","updateActive","setTimeout","nextActive","_inputRef$current2","_inputRef$current","clientWidth","scrollWidth","scrollable","placeholderShown","parentElement","querySelector","paintText","_inputRef$current4","_shadow","_shadow2","_props$style","_props$style2","win","doc","_inputRef$current3","style","backgroundImage","classList","remove","input","add","shadow","shadowRoot","typedValueElement","getElementById","fullValueElement","attachShadow","mode","createElement","setAttribute","append","getComputedStyle","textContent","getAttribute","inputRect","getBoundingClientRect","typedValueRect","fullValueRect","threshold","width","degree","fontStyle","restValueWidth","Math","min","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","indent","disabled","inputTextColorDisabled","textAlign","debouncedPaintText","handleInput","e","handleFocus","handleBlur","getRootNode","Fragment","cloneElement","_extends","className","visibility","position","whiteSpace"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { isDocument, isWindow, tryGetDocument, tryGetWindow } from '../../../lib/utils';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout>>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n const win = tryGetWindow(inputRef.current);\n const doc = tryGetDocument(inputRef.current);\n if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = doc.createElement('span');\n fullValueElement = doc.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"],"mappings":"6PAAA;;AAEA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,UAAU,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AACxG,OAAOC,QAAQ,MAAM,iBAAiB;;AAEtC,SAASC,YAAY,QAAQ,mCAAmC;;AAEhE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,EAAE,QAAQ,8BAA8B;AACjD,SAASC,UAAU,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,YAAY,QAAQ,oBAAoB;;AAEvF,SAASC,aAAa,QAAQ,gCAAgC;;;;;;;;AAQ9D;AACA;AACA;AACA;;AAEA,OAAO,IAAMC,qBAAqB,GAAGP,iBAAiB;EACpD,uBAAuB;EACvB,SAASO,qBAAqBA,CAACC,KAAiC,EAAEC,GAA+B,EAAE,KAAAC,aAAA;IACjG,IAAMC,QAAQ,GAAGhB,MAAM,CAA0B,IAAI,CAAC;IACtD,IAAMiB,OAAO,GAAGjB,MAAM,CAAyB,IAAI,CAAC;IACpD,IAAMkB,OAAO,GAAGlB,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAMmB,iBAAiB,GAAGnB,MAAM,CAAgC,CAAC;IACjE,IAAMoB,KAAK,GAAGtB,UAAU,CAACM,YAAY,CAAC;IACtC,IAAAiB,SAAA,GAA4BnB,QAAQ;QAClCoB,OAAO,CAACT,KAAK,CAACU,cAAc,IAAK,CAACV,KAAK,CAACW,WAAW,KAAKX,KAAK,CAACY,KAAK,IAAIZ,KAAK,CAACa,YAAY,CAAE;MAC7F,CAAC,CAFMC,MAAM,GAAAN,SAAA,IAAEO,SAAS,GAAAP,SAAA;;IAIxB,IAAQQ,QAAQ,GAA2EhB,KAAK,CAAxFgB,QAAQ,CAAEC,OAAO,GAAkEjB,KAAK,CAA9EiB,OAAO,CAAEC,OAAO,GAAyDlB,KAAK,CAArEkB,OAAO,CAAEC,MAAM,GAAiDnB,KAAK,CAA5DmB,MAAM,CAAEC,WAAW,GAAoCpB,KAAK,CAApDoB,WAAW,CAAEV,cAAc,GAAoBV,KAAK,CAAvCU,cAAc,CAAKW,UAAU,GAAAC,6BAAA,CAAKtB,KAAK,EAAAuB,SAAA;;IAEhG,IAAMC,gBAAgB,GAAGpC,WAAW,CAAC,YAAM;MACzCqC,YAAY,CAACnB,iBAAiB,CAACoB,OAAO,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC;;IAEN,IAAMC,YAAY,GAAGvC,WAAW,CAAC,YAAM;MACrCoC,gBAAgB,CAAC,CAAC;MAClBlB,iBAAiB,CAACoB,OAAO,GAAGE,UAAU,CAAC,YAAM;QAC3C,IAAIC,UAAU,GAAG,IAAI;QACrB,IAAI1B,QAAQ,CAACuB,OAAO,EAAE,KAAAI,kBAAA;UACpB,IAAAC,iBAAA,GAAqC5B,QAAQ,CAACuB,OAAO,CAA7CM,WAAW,GAAAD,iBAAA,CAAXC,WAAW,CAAEC,WAAW,GAAAF,iBAAA,CAAXE,WAAW;UAChC,IAAMC,UAAU,GAAGD,WAAW,GAAGD,WAAW;;UAE5C,IAAMG,gBAAgB,IAAAL,kBAAA,GAAG3B,QAAQ,CAACuB,OAAO,cAAAI,kBAAA,GAAhBA,kBAAA,CAAkBM,aAAa,qBAA/BN,kBAAA,CAAiCO,aAAa,CAAC,oBAAoB,CAAC;;UAE7FR,UAAU,GAAG,EAAEK,UAAU,IAAIC,gBAAgB,CAAC;QAChD;QACApB,SAAS,CAACc,UAAU,CAAC;MACvB,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,EAAE,CAACL,gBAAgB,CAAC,CAAC;;IAEtB,IAAMc,SAAS,GAAGlD,WAAW,CAAC,YAAM,KAAAmD,kBAAA,EAAAC,OAAA,EAAAC,QAAA,EAAAC,YAAA,EAAAC,aAAA;MAClC,IAAMC,GAAG,GAAG/C,YAAY,CAACM,QAAQ,CAACuB,OAAO,CAAC;MAC1C,IAAMmB,GAAG,GAAGjD,cAAc,CAACO,QAAQ,CAACuB,OAAO,CAAC;MAC5C,IAAI,CAACtB,OAAO,CAACsB,OAAO,IAAI,CAACvB,QAAQ,CAACuB,OAAO,IAAI,CAAC/B,QAAQ,CAACiD,GAAG,CAAC,IAAI,CAAClD,UAAU,CAACmD,GAAG,CAAC,IAAI,CAAC/B,MAAM,EAAE,KAAAgC,kBAAA;QAC1F3C,QAAQ,CAACuB,OAAO,KAAKvB,QAAQ,CAACuB,OAAO,CAACqB,KAAK,CAACC,eAAe,GAAG,EAAE,CAAC;QACjE,CAAAF,kBAAA,GAAA3C,QAAQ,CAACuB,OAAO,aAAhBoB,kBAAA,CAAkBG,SAAS,CAACC,MAAM,CAACpD,aAAa,CAACqD,KAAK,CAAC;;QAEvD;MACF;;MAEA,CAAAZ,kBAAA,GAAApC,QAAQ,CAACuB,OAAO,aAAhBa,kBAAA,CAAkBU,SAAS,CAACG,GAAG,CAACtD,aAAa,CAACqD,KAAK,CAAC;;MAEpD,IAAIE,MAAM,GAAGjD,OAAO,CAACsB,OAAO,CAAC4B,UAAU;MACvC,IAAIC,iBAAiB,IAAAf,OAAA,GAAGa,MAAM,qBAANb,OAAA,CAAQgB,cAAc,CAAC,aAAa,CAAC;MAC7D,IAAIC,gBAAgB,IAAAhB,QAAA,GAAGY,MAAM,qBAANZ,QAAA,CAAQe,cAAc,CAAC,YAAY,CAAC;;MAE3D,IAAI,CAACD,iBAAiB,IAAI,CAACE,gBAAgB,EAAE;QAC3CJ,MAAM,GAAGjD,OAAO,CAACsB,OAAO,CAACgC,YAAY,CAAC,EAAEC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;;QAEvDJ,iBAAiB,GAAGV,GAAG,CAACe,aAAa,CAAC,MAAM,CAAC;QAC7CH,gBAAgB,GAAGZ,GAAG,CAACe,aAAa,CAAC,MAAM,CAAC;QAC5CL,iBAAiB,CAACM,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC;QACnDJ,gBAAgB,CAACI,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;;QAEjDR,MAAM,CAACS,MAAM,CAACP,iBAAiB,EAAEE,gBAAgB,CAAC;MACpD;;MAEA,IAAMV,KAAK,GAAGgB,gBAAgB,CAAC5D,QAAQ,CAACuB,OAAO,CAAC;;MAEhD6B,iBAAiB,CAACS,WAAW;MAC1B,CAAC7D,QAAQ,CAACuB,OAAO,CAACuC,YAAY,CAAC,qBAAqB,CAAC,IAAI5D,OAAO,CAACqB,OAAO;MACvEvB,QAAQ,CAACuB,OAAO,CAACuC,YAAY,CAAC,kBAAkB,CAAC;MACnD,EAAE;;MAEJR,gBAAgB,CAACO,WAAW,GAAG7D,QAAQ,CAACuB,OAAO,CAACd,KAAK,IAAIT,QAAQ,CAACuB,OAAO,CAACb,YAAY,IAAI,EAAE;;MAE5F,IAAMqD,SAAS,GAAG/D,QAAQ,CAACuB,OAAO,CAACyC,qBAAqB,CAAC,CAAC;MAC1D,IAAMC,cAAc,GAAGb,iBAAiB,CAACY,qBAAqB,CAAC,CAAC;MAChE,IAAME,aAAa,GAAGZ,gBAAgB,CAACU,qBAAqB,CAAC,CAAC;;MAE9D,IAAMG,SAAS,GAAGF,cAAc,CAACG,KAAK,IAAIL,SAAS,CAACK,KAAK,GAAG,GAAG,CAAC;MAChE,IAAMC,MAAM,GAAGzB,KAAK,CAAC0B,SAAS,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE;MACtD,IAAMC,cAAc,GAAG,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACP,aAAa,CAACE,KAAK,GAAGL,SAAS,CAACK,KAAK,EAAE,CAAC,CAAC;;MAE7E,IAAIM,eAAe,GAAGtE,KAAK,CAACuE,cAAc;MAC1C,IAAIC,SAAS,GAAGxE,KAAK,CAACyE,qBAAqB;MAC3C,IAAIC,MAAM,GAAG,CAAC;;MAEd,IAAIjF,KAAK,CAACkF,QAAQ,EAAE;QAClBL,eAAe,GAAGtE,KAAK,CAAC4E,sBAAsB;QAC9CJ,SAAS,GAAGxE,KAAK,CAAC4E,sBAAsB;MAC1C;MACA,IAAInF,KAAK,CAACoB,WAAW,EAAE;QACrB2D,SAAS,GAAG1E,OAAO,CAACqB,OAAO,GAAGqD,SAAS,GAAG,aAAa;MACzD;MACA,IAAI,EAAArC,YAAA,GAAA1C,KAAK,CAAC+C,KAAK,qBAAXL,YAAA,CAAa0C,SAAS,MAAK,OAAO,EAAE;QACtCH,MAAM,GAAG,GAAG,GAAGP,cAAc;MAC/B;MACA,IAAI,EAAA/B,aAAA,GAAA3C,KAAK,CAAC+C,KAAK,qBAAXJ,aAAA,CAAayC,SAAS,MAAK,QAAQ,EAAE;QACvCH,MAAM,GAAG,EAAE,GAAGP,cAAc;MAC9B;;MAEAvE,QAAQ,CAACuB,OAAO,CAACqB,KAAK,CAACC,eAAe;;MAEhCwB,MAAM;MACNK,eAAe,UAAIP,SAAS,GAAGW,MAAM;MACrCF,SAAS,UAAIT,SAAS,GAAGW,MAAM,gBACnC;;IACJ,CAAC,EAAE;IACDnE,MAAM;IACNd,KAAK,CAACoB,WAAW;IACjBpB,KAAK,CAACkF,QAAQ;IACd3E,KAAK,CAACuE,cAAc;IACpBvE,KAAK,CAACyE,qBAAqB;IAC3BzE,KAAK,CAAC4E,sBAAsB,GAAAjF,aAAA;IAC5BF,KAAK,CAAC+C,KAAK,qBAAX7C,aAAA,CAAakF,SAAS;IACvB,CAAC;;IAEF,IAAMC,kBAAkB,GAAGjG,WAAW,CAAC,oBAAME,QAAQ,CAACgD,SAAS,CAAC,IAAE,CAACA,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEhF,IAAMgD,WAAW,GAAGlG,WAAW;MAC7B,UAACmG,CAAsC,EAAK;QAC1CF,kBAAkB,CAAC,CAAC;;QAEpBpE,OAAO,YAAPA,OAAO,CAAGsE,CAAC,CAAC;MACd,CAAC;MACD,CAACF,kBAAkB,EAAEpE,OAAO;IAC9B,CAAC;;IAED,IAAMuE,WAAW,GAAGpG,WAAW;MAC7B,UAACmG,CAAqC,EAAK;QACzC5D,YAAY,CAAC,CAAC;;QAEdtB,OAAO,CAACqB,OAAO,GAAG,IAAI;;QAEtBR,OAAO,YAAPA,OAAO,CAAGqE,CAAC,CAAC;MACd,CAAC;MACD,CAACrE,OAAO,EAAES,YAAY;IACxB,CAAC;;IAED,IAAM8D,UAAU,GAAGrG,WAAW;MAC5B,UAACmG,CAAqC,EAAK;QACzC5D,YAAY,CAAC,CAAC;;QAEdtB,OAAO,CAACqB,OAAO,GAAG,KAAK;;QAEvBP,MAAM,YAANA,MAAM,CAAGoE,CAAC,CAAC;MACb,CAAC;MACD,CAACpE,MAAM,EAAEQ,YAAY;IACvB,CAAC;;IAEDzC,mBAAmB;MACjBe,GAAG;MACH,oBAAO;UACLkD,KAAK,EAAEhD,QAAQ,CAACuB,OAAO;UACvBgE,WAAW,EAAE,SAAAA,YAAA,UAAMvF,QAAQ,CAACuB,OAAO;QACrC,CAAC,EAAC;MACF;IACF,CAAC;;IAED1C,SAAS,CAAC,YAAM;MACdqG,kBAAkB,CAAC,CAAC;MACpB1D,YAAY,CAAC,CAAC;;MAEd,OAAOH,gBAAgB;IACzB,CAAC,EAAE,CAACG,YAAY,EAAE3B,KAAK,CAACY,KAAK,EAAEZ,KAAK,CAACa,YAAY,EAAEN,KAAK,EAAE8E,kBAAkB,EAAE7D,gBAAgB,CAAC,CAAC;;IAEhG;MACEzC,KAAA,CAAA6E,aAAA,CAAA7E,KAAA,CAAA4G,QAAA;MACG5G,KAAK,CAAC6G,YAAY,CAAC5E,QAAQ,EAAA6E,QAAA;MACvBxE,UAAU;QACbJ,OAAO,EAAEqE,WAAW;QACpBpE,OAAO,EAAEsE,WAAW;QACpBrE,MAAM,EAAEsE,UAAU;QAClBtF,QAAQ,EAARA,QAAQ;QACR2F,SAAS,EAAErG,EAAE,CAACO,KAAK,CAAC8F,SAAS,EAAEhF,MAAM,IAAIhB,aAAa,CAACqD,KAAK,CAAC;MAC9D,CAAC;MACDrC,MAAM,iBAAI/B,KAAA,CAAA6E,aAAA,WAAMb,KAAK,EAAE,EAAEgD,UAAU,EAAE,QAAQ,EAAEC,QAAQ,EAAE,UAAU,EAAEC,UAAU,EAAE,KAAK,CAAC,CAAE,EAAChG,GAAG,EAAEG,OAAQ,EAAE;MAC1G,CAAC;;EAEP;AACF,CAAC","ignoreList":[]}
|
|
@@ -173,8 +173,9 @@ export var FixedIMaskInput = forwardRefAndName('FixedIMaskInput', function Fixed
|
|
|
173
173
|
function handleInput(e) {
|
|
174
174
|
var _imaskRef$current10;
|
|
175
175
|
var maskRef = (_imaskRef$current10 = imaskRef.current) == null ? void 0 : _imaskRef$current10.maskRef;
|
|
176
|
-
if (
|
|
177
|
-
//
|
|
176
|
+
if (maskRef && maskRef.rawInputValue === '') {
|
|
177
|
+
// в случае, когда пользователь стер все из инпута, очищаем value полностью
|
|
178
|
+
// иначе в value остаются символы маски
|
|
178
179
|
props.onAccept == null || props.onAccept('', maskRef, e.nativeEvent);
|
|
179
180
|
}
|
|
180
181
|
props.onInput == null || props.onInput(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","unmask","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (restProps.unmask && maskRef && maskRef.rawInputValue === '' && maskRef.unmaskedValue !== '') {\n // Для случаев, когда в value остаются только зафиксированные - {} - очищаем value полностью\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "element", "className"];
|
|
3
|
+
var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "onBeforePasteValue", "element", "className", "maxLength"];
|
|
4
4
|
import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';
|
|
5
5
|
import { forwardRefAndName } from "../../../lib/forwardRefAndName";
|
|
6
6
|
import { cx } from "../../../lib/theming/Emotion";
|
|
@@ -11,6 +11,20 @@ import { globalClasses, styles } from "../MaskedInput.styles";
|
|
|
11
11
|
import { getDefinitions, getMaskChar } from "../MaskedInput.helpers";
|
|
12
12
|
import { ColorableInputElement } from "../ColorableInputElement";
|
|
13
13
|
import { FixedIMaskInput } from "../FixedIMaskInput";
|
|
14
|
+
export var getSafeMaskInputType = function getSafeMaskInputType(type) {
|
|
15
|
+
if (!type) {
|
|
16
|
+
return type;
|
|
17
|
+
}
|
|
18
|
+
switch (type) {
|
|
19
|
+
case 'number':
|
|
20
|
+
case 'date':
|
|
21
|
+
case 'time':
|
|
22
|
+
case 'password':
|
|
23
|
+
return 'text';
|
|
24
|
+
default:
|
|
25
|
+
return type;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
14
28
|
|
|
15
29
|
/**
|
|
16
30
|
* Интерфейс пропсов наследуется от `Input`.
|
|
@@ -31,8 +45,10 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
31
45
|
onValueChange = props.onValueChange,
|
|
32
46
|
onUnexpectedInput = props.onUnexpectedInput,
|
|
33
47
|
onChange = props.onChange,
|
|
48
|
+
onBeforePasteValue = props.onBeforePasteValue,
|
|
34
49
|
element = props.element,
|
|
35
50
|
className = props.className,
|
|
51
|
+
maxLength = props.maxLength,
|
|
36
52
|
inputProps = _objectWithoutPropertiesLoose(props, _excluded);
|
|
37
53
|
var theme = useContext(ThemeContext);
|
|
38
54
|
var inputRef = useRef(null);
|
|
@@ -73,10 +89,12 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
73
89
|
onBlur: handleBlur,
|
|
74
90
|
onInput: handleInput,
|
|
75
91
|
onKeyDown: handleKeyDown,
|
|
92
|
+
onPaste: handlePaste,
|
|
76
93
|
className: cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme)),
|
|
77
94
|
element: colored ? /*#__PURE__*/
|
|
78
95
|
React.createElement(ColorableInputElement, {
|
|
79
|
-
showOnFocus: false
|
|
96
|
+
showOnFocus: false,
|
|
97
|
+
alwaysShowMask: alwaysShowMask
|
|
80
98
|
}, /*#__PURE__*/
|
|
81
99
|
React.createElement(FixedIMaskInput, _extends({}, imaskProps, {
|
|
82
100
|
onAccept: handleAccept
|
|
@@ -87,6 +105,14 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
87
105
|
}))
|
|
88
106
|
}))
|
|
89
107
|
);
|
|
108
|
+
function handlePaste(event) {
|
|
109
|
+
if (onBeforePasteValue && onValueChange) {
|
|
110
|
+
var _event$clipboardData$, _event$clipboardData;
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
onValueChange == null || onValueChange(onBeforePasteValue((_event$clipboardData$ = (_event$clipboardData = event.clipboardData) == null ? void 0 : _event$clipboardData.getData('text')) != null ? _event$clipboardData$ : ''));
|
|
113
|
+
}
|
|
114
|
+
props.onPaste == null || props.onPaste(event);
|
|
115
|
+
}
|
|
90
116
|
function getCompatibleIMaskProps() {
|
|
91
117
|
return _extends({
|
|
92
118
|
mask: mask.replace(/0/g, '{\\0}'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","root","showOnFocus","onAccept","handleAccept","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","getSafeMaskInputType","type","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","onBeforePasteValue","element","className","maxLength","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","onPaste","handlePaste","root","showOnFocus","onAccept","handleAccept","event","_event$clipboardData$","_event$clipboardData","preventDefault","clipboardData","getData","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Задает обработчик вставки значения в инпут.\n * В value будет передано значение из буфера обмена.\n * Возвращаемое значение будет использовано как значение инпута.\n * Используется для фильтрации значения при вставке из буфера обмена.\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IMaskInputProps } from '@skbkontur/react-imask';
|
|
2
2
|
import type { InputProps, InputType } from '../Input';
|
|
3
3
|
import { Input } from '../Input';
|
|
4
|
+
export type MaskedInputOnBeforePasteValue = (value: string) => string;
|
|
4
5
|
export interface MaskedProps {
|
|
5
6
|
/** Паттерн маски */
|
|
6
7
|
mask: string;
|
|
@@ -21,6 +22,13 @@ export interface MaskedProps {
|
|
|
21
22
|
* @param blink вспыхнуть акцентным цвтетом.
|
|
22
23
|
*/
|
|
23
24
|
onUnexpectedInput?: (value: string, blink: () => void) => void;
|
|
25
|
+
/** Задает обработчик вставки значения в инпут.
|
|
26
|
+
* В value будет передано значение из буфера обмена.
|
|
27
|
+
* Возвращаемое значение будет использовано как значение инпута.
|
|
28
|
+
* Используется для фильтрации значения при вставке из буфера обмена.
|
|
29
|
+
* @param value значение вставки.
|
|
30
|
+
*/
|
|
31
|
+
onBeforePasteValue?: MaskedInputOnBeforePasteValue;
|
|
24
32
|
/** Убирает из value символы, не введённые пользователем
|
|
25
33
|
* @default false */
|
|
26
34
|
unmask?: boolean;
|
|
@@ -33,6 +41,7 @@ export interface MaskedProps {
|
|
|
33
41
|
imaskProps?: IMaskInputProps<HTMLInputElement>;
|
|
34
42
|
}
|
|
35
43
|
export type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;
|
|
44
|
+
export declare const getSafeMaskInputType: (type?: InputType) => MaskInputType | undefined;
|
|
36
45
|
export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {
|
|
37
46
|
type?: MaskInputType;
|
|
38
47
|
}
|
|
@@ -5,7 +5,6 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
|
5
5
|
var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", "data-tid"];
|
|
6
6
|
var _class, _MenuItem;
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import PropTypes from 'prop-types';
|
|
9
8
|
import { globalObject, isBrowser } from '@skbkontur/global-object';
|
|
10
9
|
import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
|
|
11
10
|
import { scrollYCenterIntoNearestScrollable } from "../../../lib/dom/scrollYCenterIntoNearestScrollable";
|
|
@@ -294,15 +293,5 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
|
|
|
294
293
|
return this.props.state === 'selected' && !this.state.highlighted;
|
|
295
294
|
}
|
|
296
295
|
}]);
|
|
297
|
-
}(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.
|
|
298
|
-
comment: PropTypes.node,
|
|
299
|
-
disabled: PropTypes.bool,
|
|
300
|
-
href: PropTypes.string,
|
|
301
|
-
icon: PropTypes.node,
|
|
302
|
-
loose: PropTypes.bool,
|
|
303
|
-
state: PropTypes.string,
|
|
304
|
-
target: PropTypes.string,
|
|
305
|
-
onClick: PropTypes.func,
|
|
306
|
-
size: PropTypes.string
|
|
307
|
-
}, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
|
|
296
|
+
}(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
|
|
308
297
|
export var isMenuItem = isReactUIComponent('MenuItem');
|