@skbkontur/react-ui 4.1.1 → 4.2.0
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 +38 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +3 -0
- package/cjs/components/Autocomplete/Autocomplete.js +12 -3
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +3 -0
- package/cjs/components/Button/Button.js +8 -4
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.d.ts +1 -1
- package/cjs/components/Button/Button.styles.js +6 -6
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +3 -0
- package/cjs/components/Center/Center.js +8 -3
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +8 -0
- package/cjs/components/Checkbox/Checkbox.js +37 -3
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -0
- package/cjs/components/Checkbox/Checkbox.styles.js +23 -17
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js +23 -5
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.js +5 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
- package/cjs/components/DateInput/helpers/InternalDateMediator.js +7 -3
- package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
- package/cjs/components/DateInput/helpers/inputNumber.d.ts +1 -1
- package/cjs/components/DateInput/helpers/inputNumber.js +45 -12
- package/cjs/components/DateInput/helpers/inputNumber.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +5 -0
- package/cjs/components/DatePicker/DatePicker.js +14 -3
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/Picker.js +7 -2
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
- package/cjs/components/Dropdown/Dropdown.js +7 -2
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
- package/cjs/components/FileUploader/FileUploader.js +10 -4
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +3 -0
- package/cjs/components/FxInput/FxInput.js +7 -3
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +4 -0
- package/cjs/components/Gapped/Gapped.js +11 -5
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +5 -7
- package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
- package/cjs/components/Group/Group.d.ts +3 -0
- package/cjs/components/Group/Group.js +7 -3
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +3 -0
- package/cjs/components/Input/Input.js +7 -3
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +4 -1
- package/cjs/components/Link/Link.js +8 -4
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +4 -0
- package/cjs/components/Loader/Loader.js +8 -3
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
- package/cjs/components/MenuHeader/MenuHeader.js +7 -2
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +5 -1
- package/cjs/components/MenuItem/MenuItem.js +11 -5
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
- package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
- package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +5 -0
- package/cjs/components/Modal/Modal.js +9 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalClose.js +3 -2
- package/cjs/components/Modal/ModalClose.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.d.ts +3 -0
- package/cjs/components/Modal/ModalFooter.js +7 -2
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.d.ts +3 -0
- package/cjs/components/Modal/ModalHeader.js +8 -2
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +8 -1
- package/cjs/components/Paging/Paging.js +15 -7
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +6 -1
- package/cjs/components/PasswordInput/PasswordInput.js +21 -15
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInputIcon.js +5 -1
- package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +3 -0
- package/cjs/components/Radio/Radio.js +7 -3
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -0
- package/cjs/components/RadioGroup/RadioGroup.js +21 -4
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +14 -4
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +3 -0
- package/cjs/components/Select/Select.js +14 -6
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +4 -0
- package/cjs/components/SidePage/SidePage.js +7 -2
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
- package/cjs/components/SidePage/SidePageBody.js +10 -3
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
- package/cjs/components/SidePage/SidePageContainer.js +7 -2
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
- package/cjs/components/SidePage/SidePageFooter.js +11 -3
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
- package/cjs/components/SidePage/SidePageHeader.js +9 -4
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +3 -0
- package/cjs/components/Spinner/Spinner.js +7 -3
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +3 -0
- package/cjs/components/Sticky/Sticky.js +7 -3
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +3 -0
- package/cjs/components/Switcher/Switcher.js +7 -3
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Tabs/Indicator.js +4 -2
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +3 -0
- package/cjs/components/Tabs/Tab.js +7 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +4 -0
- package/cjs/components/Tabs/Tabs.js +12 -3
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +4 -0
- package/cjs/components/Textarea/Textarea.js +8 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/TextareaCounter.js +10 -9
- package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +6 -0
- package/cjs/components/Toast/Toast.js +9 -2
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastStatic.js +1 -1
- package/cjs/components/Toast/ToastStatic.js.map +1 -1
- package/cjs/components/Toast/ToastView.js +5 -4
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +3 -0
- package/cjs/components/Toggle/Toggle.js +7 -3
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +3 -0
- package/cjs/components/Token/Token.js +8 -3
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +14 -0
- package/cjs/components/TokenInput/TokenInput.js +23 -3
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +3 -0
- package/cjs/components/Tooltip/Tooltip.js +7 -2
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -0
- package/cjs/components/TooltipMenu/TooltipMenu.js +7 -2
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.d.ts +6 -0
- package/cjs/internal/Calendar/Calendar.js +9 -2
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/Calendar/MonthView.js +5 -4
- package/cjs/internal/Calendar/MonthView.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js +4 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +23 -5
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -2
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/DataTids/DATATIDS.md +12 -0
- package/cjs/internal/DataTids/DataTids.d.ts +12 -0
- package/cjs/internal/DataTids/DataTids.js +46 -0
- package/cjs/internal/DataTids/DataTids.js.map +1 -0
- package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/cjs/internal/DataTids/DataTids.styles.js +41 -0
- package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
- package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/cjs/internal/DataTids/componentsDataTids.js +16 -0
- package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
- package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
- package/cjs/internal/DateSelect/DateSelect.js +8 -3
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +14 -6
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
- package/cjs/internal/InternalMenu/InternalMenu.js +9 -8
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
- package/cjs/internal/MaskedInput/MaskedInput.js +11 -5
- package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +3 -0
- package/cjs/internal/Menu/Menu.js +10 -8
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +5 -0
- package/cjs/internal/Popup/Popup.js +10 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.js +2 -1
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +9 -4
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/icons/16px/index.js +1 -1
- package/cjs/internal/icons/16px/index.js.map +1 -1
- package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
- package/cjs/lib/date/InternalDateGetter.js +4 -1
- package/cjs/lib/date/InternalDateGetter.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +32 -22
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/date/types.d.ts +4 -0
- package/cjs/lib/date/types.js.map +1 -1
- package/cjs/lib/events/MouseDrag.js +5 -1
- package/cjs/lib/events/MouseDrag.js.map +1 -1
- package/cjs/lib/listenFocusOutside.js +1 -1
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -6
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +3 -0
- package/components/Button/Button/Button.js +5 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +3 -0
- package/components/Button/Button.styles/Button.styles.js +6 -6
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/Button.styles.d.ts +1 -1
- package/components/Center/Center/Center.js +10 -5
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +3 -0
- package/components/Checkbox/Checkbox/Checkbox.js +33 -2
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +8 -0
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +20 -17
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/Checkbox/Checkbox.styles.d.ts +1 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +27 -12
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +4 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
- package/components/DateInput/DateInput/DateInput.js +9 -1
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +9 -3
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
- package/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
- package/components/DateInput/helpers/inputNumber/inputNumber.js +53 -16
- package/components/DateInput/helpers/inputNumber/inputNumber.js.map +1 -1
- package/components/DateInput/helpers/inputNumber.d.ts +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +6 -0
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +5 -0
- package/components/DatePicker/Picker/Picker.js +3 -1
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +9 -5
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +3 -0
- package/components/FileUploader/FileUploader/FileUploader.js +9 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +5 -0
- package/components/FxInput/FxInput/FxInput.js +6 -2
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +3 -0
- package/components/Gapped/Gapped/Gapped.js +14 -6
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +4 -0
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
- package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +1 -2
- package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
- package/components/Group/Group/Group.js +4 -0
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Group/Group.d.ts +3 -0
- package/components/Input/Input/Input.js +11 -6
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +3 -0
- package/components/Link/Link/Link.js +11 -6
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +4 -1
- package/components/Loader/Loader/Loader.js +10 -6
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +4 -0
- package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +3 -0
- package/components/MenuItem/MenuItem/MenuItem.js +16 -10
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +5 -1
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
- package/components/Modal/Modal/Modal.js +7 -2
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +5 -0
- package/components/Modal/ModalClose/ModalClose.js +2 -1
- package/components/Modal/ModalClose/ModalClose.js.map +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +4 -0
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalFooter.d.ts +3 -0
- package/components/Modal/ModalHeader/ModalHeader.js +4 -0
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Modal/ModalHeader.d.ts +3 -0
- package/components/Paging/Paging/Paging.js +12 -5
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +8 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +24 -19
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +6 -1
- package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +8 -3
- package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -1
- package/components/Radio/Radio/Radio.js +10 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +3 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -11
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +9 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +6 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
- package/components/Select/Select/Select.js +9 -3
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -0
- package/components/SidePage/SidePage/SidePage.js +6 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +4 -0
- package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +3 -0
- package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +3 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js +10 -6
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +3 -0
- package/components/SidePage/SidePageHeader/SidePageHeader.js +12 -7
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +4 -0
- package/components/Spinner/Spinner/Spinner.js +8 -4
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +3 -0
- package/components/Sticky/Sticky/Sticky.js +4 -0
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +3 -0
- package/components/Switcher/Switcher/Switcher.js +4 -0
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +3 -0
- package/components/Tabs/Indicator/Indicator.js +2 -0
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Tab/Tab.js +4 -0
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +3 -0
- package/components/Tabs/Tabs/Tabs.js +11 -6
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +4 -0
- package/components/Textarea/Textarea/Textarea.js +15 -9
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +4 -0
- package/components/Textarea/TextareaCounter/TextareaCounter.js +8 -3
- package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
- package/components/Toast/Toast/Toast.js +16 -10
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +6 -0
- package/components/Toast/ToastStatic/ToastStatic.js +2 -2
- package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
- package/components/Toast/ToastView/ToastView.js +4 -3
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +8 -4
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +3 -0
- package/components/Token/Token/Token.js +4 -0
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +3 -0
- package/components/TokenInput/TokenInput/TokenInput.js +11 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +14 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +4 -0
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +3 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +16 -12
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +3 -0
- package/internal/Calendar/Calendar/Calendar.js +7 -1
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/Calendar/Calendar.d.ts +6 -0
- package/internal/Calendar/MonthView/MonthView.js +4 -3
- package/internal/Calendar/MonthView/MonthView.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +4 -5
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +12 -5
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
- package/internal/DataTids/DATATIDS.md +12 -0
- package/internal/DataTids/DataTids/DataTids.js +69 -0
- package/internal/DataTids/DataTids/DataTids.js.map +1 -0
- package/internal/DataTids/DataTids/package.json +6 -0
- package/internal/DataTids/DataTids.d.ts +12 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
- package/internal/DataTids/DataTids.styles/package.json +6 -0
- package/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
- package/internal/DataTids/componentsDataTids/package.json +6 -0
- package/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/internal/DateSelect/DateSelect/DateSelect.js +6 -2
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +4 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +12 -5
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +4 -0
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +6 -6
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.d.ts +3 -0
- package/internal/MaskedInput/MaskedInput/MaskedInput.js +8 -2
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/internal/MaskedInput/MaskedInput.d.ts +3 -0
- package/internal/Menu/Menu/Menu.js +6 -5
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +3 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/internal/Popup/Popup/Popup.js +7 -2
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +5 -0
- package/internal/Popup/PopupPin/PopupPin.js +2 -0
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +7 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +4 -0
- package/internal/icons/16px/index/index.js +1 -1
- package/internal/icons/16px/index/index.js.map +1 -1
- package/lib/date/InternalDateGetter/InternalDateGetter.js +3 -1
- package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
- package/lib/date/InternalDateGetter.d.ts +1 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js +55 -41
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/date/types/types.js.map +1 -1
- package/lib/date/types.d.ts +4 -0
- package/lib/events/MouseDrag/MouseDrag.js +5 -1
- package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
- package/lib/listenFocusOutside/listenFocusOutside.js +1 -1
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/package.json +4 -3
|
@@ -19,16 +19,19 @@ import { SelectionHelper } from "../SelectionHelper";
|
|
|
19
19
|
import { CurrencyHelper } from "../CurrencyHelper";
|
|
20
20
|
import { CurrencyInputHelper } from "../CurrencyInputHelper";
|
|
21
21
|
import { CURRENCY_INPUT_ACTIONS, extractAction } from "../CurrencyInputKeyboardActions";
|
|
22
|
-
export
|
|
22
|
+
export var CurrencyInputDataTids = {
|
|
23
|
+
root: 'CurrencyInput__root'
|
|
24
|
+
};
|
|
23
25
|
/**
|
|
24
|
-
* Поле для денежных сумм (и других числовых значений).
|
|
25
|
-
* Принимает любые свойства `Input`.
|
|
26
|
-
*
|
|
27
|
-
* Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).
|
|
28
|
-
* <br/>
|
|
29
|
-
* Если `fractionDigits=15`, то в целой части допускается **0**.
|
|
30
|
-
*/
|
|
31
|
-
|
|
26
|
+
* Поле для денежных сумм (и других числовых значений).
|
|
27
|
+
* Принимает любые свойства `Input`.
|
|
28
|
+
*
|
|
29
|
+
* Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).
|
|
30
|
+
* <br/>
|
|
31
|
+
* Если `fractionDigits=15`, то в целой части допускается **0**.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
export var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
|
|
32
35
|
_inheritsLoose(CurrencyInput, _React$PureComponent);
|
|
33
36
|
|
|
34
37
|
function CurrencyInput() {
|
|
@@ -52,7 +55,9 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
52
55
|
hideTrailingZeros = props.hideTrailingZeros,
|
|
53
56
|
rest = _objectWithoutPropertiesLoose(props, _excluded);
|
|
54
57
|
|
|
55
|
-
return /*#__PURE__*/React.createElement(Input, _extends({
|
|
58
|
+
return /*#__PURE__*/React.createElement(Input, _extends({
|
|
59
|
+
"data-tid": CurrencyInputDataTids.root
|
|
60
|
+
}, rest, {
|
|
56
61
|
value: _this.state.formatted,
|
|
57
62
|
onBlur: _this.handleBlur,
|
|
58
63
|
onFocus: _this.handleFocus,
|
|
@@ -427,7 +432,7 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
427
432
|
fractionDigits = _this$props2.fractionDigits,
|
|
428
433
|
hideTrailingZeros = _this$props2.hideTrailingZeros;
|
|
429
434
|
|
|
430
|
-
if (value !== CurrencyHelper.parse(prevState.formatted) || prevProps.fractionDigits !== fractionDigits) {
|
|
435
|
+
if (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted) || prevProps.fractionDigits !== fractionDigits) {
|
|
431
436
|
this.setState(this.getState(value, fractionDigits, hideTrailingZeros));
|
|
432
437
|
}
|
|
433
438
|
|
|
@@ -481,7 +486,9 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
481
486
|
placeholder: PropTypes.string,
|
|
482
487
|
signed: PropTypes.bool,
|
|
483
488
|
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
484
|
-
value:
|
|
489
|
+
value: function value(props) {
|
|
490
|
+
warning(isValidNumber(props.value), "[CurrencyInput]: Prop value is not a valid number");
|
|
491
|
+
},
|
|
485
492
|
warning: PropTypes.bool,
|
|
486
493
|
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
487
494
|
onBlur: PropTypes.func,
|
|
@@ -511,6 +518,14 @@ function getInputSelectionFromEvent(input) {
|
|
|
511
518
|
};
|
|
512
519
|
}
|
|
513
520
|
|
|
521
|
+
function isNumeric(value) {
|
|
522
|
+
return !isNaN(parseFloat(value)) && isFinite(value);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
function isValidNumber(value) {
|
|
526
|
+
return !isNaN(Number(value));
|
|
527
|
+
}
|
|
528
|
+
|
|
514
529
|
var getPlaceholder = function getPlaceholder(props) {
|
|
515
530
|
if (isNullable(props.placeholder)) {
|
|
516
531
|
return CurrencyHelper.format(0, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInput","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","signed","onSubmit","integerDigits","rest","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","align","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: PropTypes.number,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.props;\n if (value !== CurrencyHelper.parse(prevState.formatted) || prevProps.fractionDigits !== fractionDigits) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","signed","onSubmit","integerDigits","rest","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLength","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","align","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","placeholder","string","size","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после запятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.props;\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"]}
|
|
@@ -29,6 +29,9 @@ export interface CurrencyInputState {
|
|
|
29
29
|
selection: Selection;
|
|
30
30
|
focused: boolean;
|
|
31
31
|
}
|
|
32
|
+
export declare const CurrencyInputDataTids: {
|
|
33
|
+
readonly root: "CurrencyInput__root";
|
|
34
|
+
};
|
|
32
35
|
/**
|
|
33
36
|
* Поле для денежных сумм (и других числовых значений).
|
|
34
37
|
* Принимает любые свойства `Input`.
|
|
@@ -51,7 +54,7 @@ export declare class CurrencyInput extends React.PureComponent<CurrencyInputProp
|
|
|
51
54
|
placeholder: PropTypes.Requireable<string>;
|
|
52
55
|
signed: PropTypes.Requireable<boolean>;
|
|
53
56
|
size: PropTypes.Requireable<string>;
|
|
54
|
-
value:
|
|
57
|
+
value: (props: CurrencyInputProps) => void;
|
|
55
58
|
warning: PropTypes.Requireable<boolean>;
|
|
56
59
|
width: PropTypes.Requireable<string | number>;
|
|
57
60
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -5,11 +5,16 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
|
5
5
|
export var defaultProps = {
|
|
6
6
|
fractionDigits: 2
|
|
7
7
|
};
|
|
8
|
+
export var CurrencyLabelDataTids = {
|
|
9
|
+
root: 'CurrencyLabel__root'
|
|
10
|
+
};
|
|
8
11
|
export var CurrencyLabel = function CurrencyLabel(props) {
|
|
9
12
|
var value = props.value,
|
|
10
13
|
fractionDigits = props.fractionDigits,
|
|
11
14
|
currencySymbol = props.currencySymbol;
|
|
12
|
-
return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("span",
|
|
15
|
+
return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("span", {
|
|
16
|
+
"data-tid": CurrencyLabelDataTids.root
|
|
17
|
+
}, CurrencyHelper.format(value, {
|
|
13
18
|
fractionDigits: fractionDigits
|
|
14
19
|
}), currencySymbol && String.fromCharCode(0xa0)
|
|
15
20
|
/* */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyLabel.tsx"],"names":["React","MAX_SAFE_DIGITS","CurrencyHelper","CommonWrapper","defaultProps","fractionDigits","CurrencyLabel","props","value","currencySymbol","format","String","fromCharCode","__KONTUR_REACT_UI__","propTypes","Error","destructString","fraction","length","Number","isInteger"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,eAAT,QAAgC,4BAAhC;AACA,SAASC,cAAT,QAA+B,iCAA/B;AACA,SAASC,aAAT,QAA2C,8BAA3C;;;;;;;;;;;;AAYA,OAAO,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,cAAc,EAAE,CADU,EAArB;;;AAIP,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAA4C;AACvE,MAAQC,KAAR,GAAkDD,KAAlD,CAAQC,KAAR,
|
|
1
|
+
{"version":3,"sources":["CurrencyLabel.tsx"],"names":["React","MAX_SAFE_DIGITS","CurrencyHelper","CommonWrapper","defaultProps","fractionDigits","CurrencyLabelDataTids","root","CurrencyLabel","props","value","currencySymbol","format","String","fromCharCode","__KONTUR_REACT_UI__","propTypes","Error","destructString","fraction","length","Number","isInteger"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,eAAT,QAAgC,4BAAhC;AACA,SAASC,cAAT,QAA+B,iCAA/B;AACA,SAASC,aAAT,QAA2C,8BAA3C;;;;;;;;;;;;AAYA,OAAO,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,cAAc,EAAE,CADU,EAArB;;;AAIP,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;;AAIP,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAA4C;AACvE,MAAQC,KAAR,GAAkDD,KAAlD,CAAQC,KAAR,CAAeL,cAAf,GAAkDI,KAAlD,CAAeJ,cAAf,CAA+BM,cAA/B,GAAkDF,KAAlD,CAA+BE,cAA/B;AACA;AACE,wBAAC,aAAD,EAAmBF,KAAnB;AACE,kCAAM,YAAUH,qBAAqB,CAACC,IAAtC;AACGL,IAAAA,cAAc,CAACU,MAAf,CAAsBF,KAAtB,EAA6B,EAAEL,cAAc,EAAdA,cAAF,EAA7B,CADH;AAEGM,IAAAA,cAAc,IAAIE,MAAM,CAACC,YAAP,CAAoB,IAApB,CAFrB,CAE+C,YAF/C;AAGGH,IAAAA,cAHH,CADF,CADF;;;;AASD,CAXM;;AAaPH,aAAa,CAACO,mBAAd,GAAoC,eAApC;;AAEAP,aAAa,CAACJ,YAAd,GAA6BA,YAA7B;;AAEAI,aAAa,CAACQ,SAAd,GAA0B;AACxBX,EAAAA,cAAc,EAAE,wBAACI,KAAD,EAAqD;AACnE,QAAIA,KAAK,CAACJ,cAAN,GAAuBJ,eAA3B,EAA4C;AAC1C,aAAO,IAAIgB,KAAJ;AACL,0DAAkDhB,eAAlD,4EADK,CAAP;;;AAID;;AAED,eAAqBC,cAAc,CAACgB,cAAf,CAA8BL,MAAM,CAACJ,KAAK,CAACC,KAAP,CAApC,KAAsD,EAAES,QAAQ,EAAE,EAAZ,EAA3E,CAAQA,QAAR,QAAQA,QAAR;AACA,QAAIA,QAAQ,CAACC,MAAT,GAAkBX,KAAK,CAACJ,cAA5B,EAA4C;AAC1C,aAAO,IAAIY,KAAJ;AACL,gIADK,CAAP;;;AAID;;AAED,QAAI,CAACI,MAAM,CAACC,SAAP,CAAiBb,KAAK,CAACJ,cAAvB,CAAL,EAA6C;AAC3C,aAAO,IAAIY,KAAJ,2GAAP;;;AAGD;;AAED,WAAO,IAAP;AACD,GAxBuB,EAA1B","sourcesContent":["import React from 'react';\n\nimport { MAX_SAFE_DIGITS } from '../CurrencyInput/constants';\nimport { CurrencyHelper } from '../CurrencyInput/CurrencyHelper';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\n\nexport interface CurrencyLabelProps extends CommonProps {\n /**\n * Минимальное количество отображаемых знаков после запятой\n * @default 2\n */\n fractionDigits: number;\n value: number;\n currencySymbol?: React.ReactNode;\n}\n\nexport const defaultProps = {\n fractionDigits: 2,\n};\n\nexport const CurrencyLabelDataTids = {\n root: 'CurrencyLabel__root',\n} as const;\n\nexport const CurrencyLabel = (props: CurrencyLabelProps): JSX.Element => {\n const { value, fractionDigits, currencySymbol } = props;\n return (\n <CommonWrapper {...props}>\n <span data-tid={CurrencyLabelDataTids.root}>\n {CurrencyHelper.format(value, { fractionDigits })}\n {currencySymbol && String.fromCharCode(0xa0) /* */}\n {currencySymbol}\n </span>\n </CommonWrapper>\n );\n};\n\nCurrencyLabel.__KONTUR_REACT_UI__ = 'CurrencyLabel';\n\nCurrencyLabel.defaultProps = defaultProps;\n\nCurrencyLabel.propTypes = {\n fractionDigits: (props: CurrencyLabelProps & typeof defaultProps) => {\n if (props.fractionDigits > MAX_SAFE_DIGITS) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n const { fraction } = CurrencyHelper.destructString(String(props.value)) || { fraction: '' };\n if (fraction.length > props.fractionDigits) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' less than fractional part of the 'value' property,` +\n `'value' will not be cutted`,\n );\n }\n\n if (!Number.isInteger(props.fractionDigits)) {\n return new Error(\n `[CurrencyLabel]: Prop 'fractionDigits' is not integer, fraction part of these property will not be used`,\n );\n }\n\n return null;\n },\n};\n"]}
|
|
@@ -12,6 +12,9 @@ export interface CurrencyLabelProps extends CommonProps {
|
|
|
12
12
|
export declare const defaultProps: {
|
|
13
13
|
fractionDigits: number;
|
|
14
14
|
};
|
|
15
|
+
export declare const CurrencyLabelDataTids: {
|
|
16
|
+
readonly root: "CurrencyLabel__root";
|
|
17
|
+
};
|
|
15
18
|
export declare const CurrencyLabel: {
|
|
16
19
|
(props: CurrencyLabelProps): JSX.Element;
|
|
17
20
|
__KONTUR_REACT_UI__: string;
|
|
@@ -341,7 +341,15 @@ export var DateInput = (_dec = locale('DatePicker', DatePickerLocaleHelper), roo
|
|
|
341
341
|
});
|
|
342
342
|
}
|
|
343
343
|
|
|
344
|
-
var
|
|
344
|
+
var _this$iDateMediator$i = _this.iDateMediator.inputKey(event.key, selected, _this.state.inputMode),
|
|
345
|
+
inputMode = _this$iDateMediator$i.inputMode,
|
|
346
|
+
changed = _this$iDateMediator$i.changed;
|
|
347
|
+
|
|
348
|
+
if (!changed) {
|
|
349
|
+
_this.blink();
|
|
350
|
+
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
345
353
|
|
|
346
354
|
if (!inputMode) {
|
|
347
355
|
_this.ignoringDelimiter = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DateInput.tsx"],"names":["React","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInput","props","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","theme","iconStyles","icon","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","handleBlur","restored","restore","updateValue","inputMode","onBlur","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","setRootNode","width","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size: 'small' | 'large' | 'medium';\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n\n public static defaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps, prevState: DateInputState) {\n if (\n prevProps.value !== this.props.value ||\n prevProps.minDate !== this.props.minDate ||\n prevProps.maxDate !== this.props.maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps();\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps();\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <InputLikeText\n width={this.props.width}\n ref={this.inputLikeTextRef}\n size={this.props.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, size, disabled = false } = this.props;\n\n if (withIcon) {\n const theme = this.theme;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles}>\n <CalendarIcon />\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const restored = this.iDateMediator.restore();\n this.updateValue({ focused: false, selected: null, inputMode: false });\n\n if (this.props.onBlur) {\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = getSelection();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n };\n\n private updateFromProps = (): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue();\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const inputMode = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DateInput.tsx"],"names":["React","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInput","props","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","size","disabled","theme","iconStyles","icon","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","handleBlur","restored","restore","updateValue","inputMode","onBlur","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","valueFormatted","getString","emitChange","updateFromProps","update","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","setRootNode","width","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size: 'small' | 'large' | 'medium';\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n\n public static defaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps, prevState: DateInputState) {\n if (\n prevProps.value !== this.props.value ||\n prevProps.minDate !== this.props.minDate ||\n prevProps.maxDate !== this.props.maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps();\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps();\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <InputLikeText\n width={this.props.width}\n ref={this.inputLikeTextRef}\n size={this.props.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, size, disabled = false } = this.props;\n\n if (withIcon) {\n const theme = this.theme;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles}>\n <CalendarIcon />\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const restored = this.iDateMediator.restore();\n this.updateValue({ focused: false, selected: null, inputMode: false });\n\n if (this.props.onBlur) {\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = getSelection();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n };\n\n private updateFromProps = (): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue();\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
|
|
@@ -145,12 +145,17 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
145
145
|
this.iDate.restore(type);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
var
|
|
148
|
+
var maxValue = InternalDateGetter.getDefaultMax(type, this.iDate.getComponentsLikeNumber());
|
|
149
|
+
|
|
150
|
+
var _inputNumber = inputNumber(type, prevValue, key, inputMode, maxValue),
|
|
149
151
|
nextValue = _inputNumber.nextValue,
|
|
150
152
|
nextInputMode = _inputNumber.nextInputMode;
|
|
151
153
|
|
|
152
154
|
this.iDate.set(type, nextValue);
|
|
153
|
-
return
|
|
155
|
+
return {
|
|
156
|
+
inputMode: nextInputMode,
|
|
157
|
+
changed: nextValue !== prevValue
|
|
158
|
+
};
|
|
154
159
|
};
|
|
155
160
|
|
|
156
161
|
_proto.shiftDateComponent = function shiftDateComponent(type, step) {
|
|
@@ -172,7 +177,8 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
172
177
|
} else {
|
|
173
178
|
var clone = iDate.clone().shift(calculatedType, step, {
|
|
174
179
|
isRange: false,
|
|
175
|
-
isLoop: true
|
|
180
|
+
isLoop: true,
|
|
181
|
+
isCutFeb: true
|
|
176
182
|
});
|
|
177
183
|
|
|
178
184
|
if (clone.validate({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InternalDateMediator.ts"],"names":["InternalDate","InternalDateGetter","InternalDateTransformer","InternalDateComponentType","InternalDateValidateCheck","inputNumber","InternalDateMediator","iDate","update","props","locale","start","getRangeStart","min","toInternalString","end","getRangeEnd","max","order","separator","setOrder","setSeparator","minDate","setRangeStart","value","maxDate","setRangeEnd","parseInternalValue","paste","pasted","parseValue","restore","cutOffExcess","isIncomplete","restored","clone","isEqual","duplicateOf","getFragments","toFragments","withSeparator","withPad","deleteOneCharRight","type","inputMode","prev","get","String","padDateComponent","next","replace","set","isChangedLocale","getOrder","getSeparator","isNull","isEmpty","clear","validateString","parseValueToDate","getString","toString","getInternalString","getTypesOrder","map","getLeftmostType","getRightmostType","inputKey","key","prevValue","leftMostType","Year","nextValue","nextInputMode","shiftDateComponent","step","calculatedType","isValidRange","validate","checks","Range","shift","isRange","isLoop","changed","isEqualComponentDate","getShiftedType","typesOrder","index","indexOf","nextIndex","All","getYear","shiftedType"],"mappings":"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","sourcesContent":["import { InternalDate } from '../../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../../lib/date/InternalDateGetter';\nimport { InternalDateTransformer } from '../../../lib/date/InternalDateTransformer';\nimport { InternalDateComponentType, InternalDateTypesOrder, InternalDateValidateCheck } from '../../../lib/date/types';\nimport { DatePickerLocale } from '../../DatePicker/locale';\nimport { DateInputProps } from '../DateInput';\n\nimport { inputNumber } from './inputNumber';\n\nexport class InternalDateMediator {\n public iDate: InternalDate = new InternalDate();\n\n public update = (props: DateInputProps, locale: DatePickerLocale): InternalDateMediator => {\n const start = this.iDate.getRangeStart();\n const min = start && start.toInternalString();\n const end = this.iDate.getRangeEnd();\n const max = end && end.toInternalString();\n const { order, separator } = locale;\n this.iDate.setOrder(order).setSeparator(separator);\n if (props.minDate !== min) {\n this.iDate.setRangeStart(\n props.minDate\n ? new InternalDate({\n order,\n separator,\n value: props.minDate,\n })\n : null,\n );\n }\n if (props.maxDate !== max) {\n this.iDate.setRangeEnd(\n props.maxDate\n ? new InternalDate({\n order,\n separator,\n value: props.maxDate,\n })\n : null,\n );\n }\n if (!props.value || props.value !== this.iDate.toInternalString()) {\n this.iDate.parseInternalValue(props.value);\n }\n return this;\n };\n\n public inputKey(key: string, type: InternalDateComponentType | null, inputMode: boolean): boolean {\n const prevValue = this.iDate.get(type);\n if (type === null) {\n const leftMostType = this.getLeftmostType();\n this.clear(leftMostType);\n }\n\n if (type !== InternalDateComponentType.Year) {\n this.iDate.cutOffExcess(type);\n } else {\n this.iDate.restore(type);\n }\n\n const { nextValue, nextInputMode } = inputNumber(type, prevValue, key, inputMode);\n this.iDate.set(type, nextValue);\n\n return nextInputMode;\n }\n\n public paste = (pasted: string): InternalDateMediator => {\n this.iDate.parseValue(pasted).restore().cutOffExcess();\n return this;\n };\n\n public restore = (): boolean => {\n if (this.iDate.isIncomplete()) {\n const restored = this.iDate.clone().restore();\n if (!this.iDate.isEqual(restored)) {\n this.iDate.duplicateOf(restored);\n }\n return true;\n }\n return false;\n };\n\n public shiftDateComponent(type: InternalDateComponentType | null, step: number): boolean {\n const calculatedType = type ?? this.getLeftmostType();\n\n const iDate = this.iDate.clone();\n const start = iDate.getRangeStart();\n const end = iDate.getRangeEnd();\n\n const isValidRange = iDate.validate({ checks: [InternalDateValidateCheck.Range] });\n if (!isValidRange) {\n // Удерживаем дату в заданном диапазоне\n if (start && InternalDateGetter.max([iDate, start]) === start) {\n iDate.duplicateOf(start);\n } else if (end && InternalDateGetter.min([iDate, end]) === end) {\n iDate.duplicateOf(end);\n }\n } else {\n const clone = iDate.clone().shift(calculatedType, step, { isRange: false, isLoop: true });\n if (clone.validate({ checks: [InternalDateValidateCheck.Range] })) {\n iDate.duplicateOf(clone);\n }\n }\n\n const changed = !this.iDate.isEqualComponentDate(calculatedType, iDate);\n this.iDate = iDate;\n return changed;\n }\n\n public getShiftedType(type: InternalDateComponentType | null, step: number): InternalDateComponentType | null {\n const typesOrder = this.getTypesOrder();\n const index = type === null ? 0 : typesOrder.indexOf(type);\n const nextIndex = index + step;\n\n // Если выделено всё поле, то в завимости от направления перемещения, выделям крайний компонент\n if (type === InternalDateComponentType.All) {\n return step < 0 ? typesOrder[0] : typesOrder[2];\n }\n\n // Если текущий компонент \"год\", и он не пуст, то при перемещении выделения \"восстанавливаем\" значение года\n if (type === InternalDateComponentType.Year && this.iDate.getYear() !== null) {\n this.iDate.restore(type);\n }\n\n const shiftedType = typesOrder[nextIndex];\n return typeof shiftedType === 'number' ? shiftedType : type;\n }\n\n public getFragments = () =>\n this.iDate.toFragments({\n withSeparator: true,\n withPad: true,\n });\n\n public deleteOneCharRight = (type: InternalDateComponentType, inputMode: boolean) => {\n let prev = this.iDate.get(type);\n prev = String(inputMode ? prev : InternalDateTransformer.padDateComponent(type, prev));\n const next = prev.replace(/.$/, '') || null;\n this.iDate.set(type, next);\n };\n\n public isChangedLocale = (locale: DatePickerLocale): boolean =>\n locale.order !== this.iDate.getOrder() || locale.separator !== this.iDate.getSeparator();\n\n public isNull = (type: InternalDateComponentType | null): boolean => this.iDate.get(type) === null;\n\n public isEmpty = (): boolean => this.iDate.isEmpty();\n\n public get = (type: InternalDateComponentType | null) => this.iDate.get(type);\n\n public clear = (type: InternalDateComponentType | null): InternalDate => this.iDate.set(type, null);\n\n public validateString = (value: string): boolean =>\n InternalDateTransformer.parseValueToDate(value, this.iDate.getOrder()) !== null;\n\n public getString = (): string => (this.iDate.isEmpty() ? '' : this.iDate.toString());\n\n public getInternalString = (): string => (this.iDate.isEmpty() ? '' : this.iDate.toInternalString());\n\n public getTypesOrder = () => this.iDate.toFragments().map(({ type }) => type) as InternalDateTypesOrder;\n\n public getLeftmostType = (): InternalDateComponentType => this.getTypesOrder()[0];\n\n public getRightmostType = (): InternalDateComponentType => this.getTypesOrder()[2];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["InternalDateMediator.ts"],"names":["InternalDate","InternalDateGetter","InternalDateTransformer","InternalDateComponentType","InternalDateValidateCheck","inputNumber","InternalDateMediator","iDate","update","props","locale","start","getRangeStart","min","toInternalString","end","getRangeEnd","max","order","separator","setOrder","setSeparator","minDate","setRangeStart","value","maxDate","setRangeEnd","parseInternalValue","paste","pasted","parseValue","restore","cutOffExcess","isIncomplete","restored","clone","isEqual","duplicateOf","getFragments","toFragments","withSeparator","withPad","deleteOneCharRight","type","inputMode","prev","get","String","padDateComponent","next","replace","set","isChangedLocale","getOrder","getSeparator","isNull","isEmpty","clear","validateString","parseValueToDate","getString","toString","getInternalString","getTypesOrder","map","getLeftmostType","getRightmostType","inputKey","key","prevValue","leftMostType","Year","maxValue","getDefaultMax","getComponentsLikeNumber","nextValue","nextInputMode","changed","shiftDateComponent","step","calculatedType","isValidRange","validate","checks","Range","shift","isRange","isLoop","isCutFeb","isEqualComponentDate","getShiftedType","typesOrder","index","indexOf","nextIndex","All","getYear","shiftedType"],"mappings":"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","sourcesContent":["import { InternalDate } from '../../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../../lib/date/InternalDateGetter';\nimport { InternalDateTransformer } from '../../../lib/date/InternalDateTransformer';\nimport {\n InputKeyResult,\n InternalDateComponentType,\n InternalDateTypesOrder,\n InternalDateValidateCheck,\n} from '../../../lib/date/types';\nimport { DatePickerLocale } from '../../DatePicker/locale';\nimport { DateInputProps } from '../DateInput';\n\nimport { inputNumber } from './inputNumber';\n\nexport class InternalDateMediator {\n public iDate: InternalDate = new InternalDate();\n\n public update = (props: DateInputProps, locale: DatePickerLocale): InternalDateMediator => {\n const start = this.iDate.getRangeStart();\n const min = start && start.toInternalString();\n const end = this.iDate.getRangeEnd();\n const max = end && end.toInternalString();\n const { order, separator } = locale;\n this.iDate.setOrder(order).setSeparator(separator);\n if (props.minDate !== min) {\n this.iDate.setRangeStart(\n props.minDate\n ? new InternalDate({\n order,\n separator,\n value: props.minDate,\n })\n : null,\n );\n }\n if (props.maxDate !== max) {\n this.iDate.setRangeEnd(\n props.maxDate\n ? new InternalDate({\n order,\n separator,\n value: props.maxDate,\n })\n : null,\n );\n }\n if (!props.value || props.value !== this.iDate.toInternalString()) {\n this.iDate.parseInternalValue(props.value);\n }\n return this;\n };\n\n public inputKey(key: string, type: InternalDateComponentType | null, inputMode: boolean): InputKeyResult {\n const prevValue = this.iDate.get(type);\n if (type === null) {\n const leftMostType = this.getLeftmostType();\n this.clear(leftMostType);\n }\n\n if (type !== InternalDateComponentType.Year) {\n this.iDate.cutOffExcess(type);\n } else {\n this.iDate.restore(type);\n }\n const maxValue = InternalDateGetter.getDefaultMax(type, this.iDate.getComponentsLikeNumber());\n const { nextValue, nextInputMode } = inputNumber(type, prevValue, key, inputMode, maxValue);\n this.iDate.set(type, nextValue);\n return { inputMode: nextInputMode, changed: nextValue !== prevValue };\n }\n\n public paste = (pasted: string): InternalDateMediator => {\n this.iDate.parseValue(pasted).restore().cutOffExcess();\n return this;\n };\n\n public restore = (): boolean => {\n if (this.iDate.isIncomplete()) {\n const restored = this.iDate.clone().restore();\n if (!this.iDate.isEqual(restored)) {\n this.iDate.duplicateOf(restored);\n }\n return true;\n }\n return false;\n };\n\n public shiftDateComponent(type: InternalDateComponentType | null, step: number): boolean {\n const calculatedType = type ?? this.getLeftmostType();\n\n const iDate = this.iDate.clone();\n const start = iDate.getRangeStart();\n const end = iDate.getRangeEnd();\n\n const isValidRange = iDate.validate({ checks: [InternalDateValidateCheck.Range] });\n if (!isValidRange) {\n // Удерживаем дату в заданном диапазоне\n if (start && InternalDateGetter.max([iDate, start]) === start) {\n iDate.duplicateOf(start);\n } else if (end && InternalDateGetter.min([iDate, end]) === end) {\n iDate.duplicateOf(end);\n }\n } else {\n const clone = iDate.clone().shift(calculatedType, step, { isRange: false, isLoop: true, isCutFeb: true });\n if (clone.validate({ checks: [InternalDateValidateCheck.Range] })) {\n iDate.duplicateOf(clone);\n }\n }\n\n const changed = !this.iDate.isEqualComponentDate(calculatedType, iDate);\n this.iDate = iDate;\n return changed;\n }\n\n public getShiftedType(type: InternalDateComponentType | null, step: number): InternalDateComponentType | null {\n const typesOrder = this.getTypesOrder();\n const index = type === null ? 0 : typesOrder.indexOf(type);\n const nextIndex = index + step;\n\n // Если выделено всё поле, то в завимости от направления перемещения, выделям крайний компонент\n if (type === InternalDateComponentType.All) {\n return step < 0 ? typesOrder[0] : typesOrder[2];\n }\n\n // Если текущий компонент \"год\", и он не пуст, то при перемещении выделения \"восстанавливаем\" значение года\n if (type === InternalDateComponentType.Year && this.iDate.getYear() !== null) {\n this.iDate.restore(type);\n }\n\n const shiftedType = typesOrder[nextIndex];\n return typeof shiftedType === 'number' ? shiftedType : type;\n }\n\n public getFragments = () =>\n this.iDate.toFragments({\n withSeparator: true,\n withPad: true,\n });\n\n public deleteOneCharRight = (type: InternalDateComponentType, inputMode: boolean) => {\n let prev = this.iDate.get(type);\n prev = String(inputMode ? prev : InternalDateTransformer.padDateComponent(type, prev));\n const next = prev.replace(/.$/, '') || null;\n this.iDate.set(type, next);\n };\n\n public isChangedLocale = (locale: DatePickerLocale): boolean =>\n locale.order !== this.iDate.getOrder() || locale.separator !== this.iDate.getSeparator();\n\n public isNull = (type: InternalDateComponentType | null): boolean => this.iDate.get(type) === null;\n\n public isEmpty = (): boolean => this.iDate.isEmpty();\n\n public get = (type: InternalDateComponentType | null) => this.iDate.get(type);\n\n public clear = (type: InternalDateComponentType | null): InternalDate => this.iDate.set(type, null);\n\n public validateString = (value: string): boolean =>\n InternalDateTransformer.parseValueToDate(value, this.iDate.getOrder()) !== null;\n\n public getString = (): string => (this.iDate.isEmpty() ? '' : this.iDate.toString());\n\n public getInternalString = (): string => (this.iDate.isEmpty() ? '' : this.iDate.toInternalString());\n\n public getTypesOrder = () => this.iDate.toFragments().map(({ type }) => type) as InternalDateTypesOrder;\n\n public getLeftmostType = (): InternalDateComponentType => this.getTypesOrder()[0];\n\n public getRightmostType = (): InternalDateComponentType => this.getTypesOrder()[2];\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { InternalDate } from '../../../lib/date/InternalDate';
|
|
2
|
-
import { InternalDateComponentType, InternalDateTypesOrder } from '../../../lib/date/types';
|
|
2
|
+
import { InputKeyResult, InternalDateComponentType, InternalDateTypesOrder } from '../../../lib/date/types';
|
|
3
3
|
import { DatePickerLocale } from '../../DatePicker/locale';
|
|
4
4
|
import { DateInputProps } from '../DateInput';
|
|
5
5
|
export declare class InternalDateMediator {
|
|
6
6
|
iDate: InternalDate;
|
|
7
7
|
update: (props: DateInputProps, locale: DatePickerLocale) => InternalDateMediator;
|
|
8
|
-
inputKey(key: string, type: InternalDateComponentType | null, inputMode: boolean):
|
|
8
|
+
inputKey(key: string, type: InternalDateComponentType | null, inputMode: boolean): InputKeyResult;
|
|
9
9
|
paste: (pasted: string) => InternalDateMediator;
|
|
10
10
|
restore: () => boolean;
|
|
11
11
|
shiftDateComponent(type: InternalDateComponentType | null, step: number): boolean;
|