@skbkontur/react-ui 4.1.0 → 4.1.1
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 +15 -0
- package/README.md +1 -1
- package/cjs/components/Autocomplete/Autocomplete.js +8 -4
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +1 -5
- package/cjs/components/Button/Button.js +4 -12
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.styles.js +4 -7
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyHelper.js +18 -12
- package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js +15 -7
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInputHelper.js +7 -5
- package/cjs/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
- package/cjs/components/CurrencyInput/CursorHelper.js +19 -16
- package/cjs/components/CurrencyInput/CursorHelper.js.map +1 -1
- package/cjs/components/DateInput/helpers/InternalDateMediator.js +8 -2
- package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -4
- package/cjs/components/DropdownMenu/DropdownMenu.js +2 -16
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +3 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/Gapped/Gapped.js +2 -2
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.js +3 -5
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Group/Group.js +74 -31
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +2 -13
- package/cjs/components/Kebab/Kebab.js +5 -29
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Modal/Modal.js +2 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.js +1 -1
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.js +1 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +1 -1
- package/cjs/components/Paging/Paging.js +3 -3
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +2 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.styles.js +4 -7
- package/cjs/components/Radio/Radio.styles.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +1 -1
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
- package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +3 -4
- package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
- package/cjs/components/Select/Select.js +30 -12
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +2 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +0 -1
- package/cjs/components/Spinner/Spinner.js +1 -5
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Spinner/SpinnerFallbackAnimation.js +16 -5
- package/cjs/components/Spinner/SpinnerFallbackAnimation.js.map +1 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/TextareaCounter.d.ts +1 -2
- package/cjs/components/Textarea/TextareaCounter.js +5 -4
- package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +1 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.js +14 -2
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/Token/Token.styles.js +13 -6
- package/cjs/components/Token/Token.styles.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +13 -10
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.js +5 -2
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js +2 -0
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/hooks/useDrop.js +3 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.js +3 -3
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/Calendar/CalendarDateShape.d.ts +1 -1
- package/cjs/internal/Calendar/MonthViewModel.js +36 -17
- package/cjs/internal/Calendar/MonthViewModel.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +3 -3
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +6 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js +3 -2
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +35 -35
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.js +22 -11
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +3 -1
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +4 -7
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
- package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js +16 -0
- package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
- package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
- package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +12 -13
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +1 -0
- package/cjs/internal/Popup/Popup.js +8 -9
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +13 -0
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/PopupMenu/validatePositions.js +6 -6
- package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +4 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeEditor.js +6 -1
- package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
- package/cjs/internal/ThemePlayground/VariableValue.js +18 -6
- package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js +4 -7
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.js +5 -6
- package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
- package/cjs/internal/ZIndex/ZIndexStorage.d.ts +2 -1
- package/cjs/internal/ZIndex/ZIndexStorage.js +13 -6
- package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
- package/cjs/internal/icons/16px/index.d.ts +19 -19
- package/cjs/internal/icons/16px/index.js +37 -38
- package/cjs/internal/icons/16px/index.js.map +1 -1
- package/cjs/lib/animation/index.d.ts +1 -1
- package/cjs/lib/animation/index.js +3 -3
- package/cjs/lib/animation/index.js.map +1 -1
- package/cjs/lib/date/InternalDate.js +23 -9
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/date/InternalDateCalculator.js +16 -2
- package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
- package/cjs/lib/date/InternalDateGetter.js +23 -6
- package/cjs/lib/date/InternalDateGetter.js.map +1 -1
- package/cjs/lib/date/InternalDateTransformer.js +11 -2
- package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +31 -6
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/events/keyboard/extractCode.js +7 -5
- package/cjs/lib/events/keyboard/extractCode.js.map +1 -1
- package/cjs/lib/rootNode/getRootNode.d.ts +9 -0
- package/cjs/lib/rootNode/getRootNode.js +34 -6
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +9 -1
- package/cjs/lib/rootNode/rootNodeDecorator.js +9 -1
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/lib/stringUtils.js +3 -1
- package/cjs/lib/stringUtils.js.map +1 -1
- package/cjs/lib/styles/ColorFactory.js +9 -9
- package/cjs/lib/styles/ColorFactory.js.map +1 -1
- package/cjs/lib/styles/ColorHelpers.d.ts +1 -0
- package/cjs/lib/styles/ColorHelpers.js +33 -10
- package/cjs/lib/styles/ColorHelpers.js.map +1 -1
- package/cjs/lib/styles/ColorObject.js +3 -2
- package/cjs/lib/styles/ColorObject.js.map +1 -1
- package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
- package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js +9 -0
- package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -0
- package/cjs/lib/taskWithDelayAndMinimalDuration.js +3 -1
- package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/cjs/lib/theming/Emotion.js +5 -2
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeFactory.js +5 -1
- package/cjs/lib/theming/ThemeFactory.js.map +1 -1
- package/cjs/lib/theming/ThemeHelpers.js +7 -2
- package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
- package/cjs/lib/utils.d.ts +15 -0
- package/cjs/lib/utils.js +45 -9
- package/cjs/lib/utils.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +6 -5
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Button/Button/Button.js +4 -10
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -5
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +12 -11
- package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +15 -7
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js +7 -1
- package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js.map +1 -1
- package/components/CurrencyInput/CursorHelper/CursorHelper.js +18 -11
- package/components/CurrencyInput/CursorHelper/CursorHelper.js.map +1 -1
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +7 -7
- package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -16
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +1 -4
- package/components/FileUploader/FileUploader/FileUploader.js +4 -1
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/Gapped/Gapped/Gapped.js +2 -2
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -7
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/Group/Group/Group.js +62 -30
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +3 -13
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +2 -13
- package/components/Modal/Modal/Modal.js +2 -1
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Paging/Paging/Paging.js +6 -5
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/Radio/Radio.styles/Radio.styles.js +2 -1
- package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js +2 -2
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +1 -1
- package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
- package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +3 -3
- package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
- package/components/Select/Select/Select.js +26 -12
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +2 -1
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/Spinner/Spinner/Spinner.js +6 -2
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +0 -1
- package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js +18 -4
- package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -1
- package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
- package/components/Textarea/TextareaCounter.d.ts +1 -2
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +1 -1
- package/components/Token/Token/Token.js +12 -1
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.styles/Token.styles.js +11 -4
- package/components/Token/Token.styles/Token.styles.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +19 -14
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +5 -2
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +2 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +1 -1
- package/hooks/useDrop/useDrop.js +5 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/internal/Calendar/Calendar/Calendar.js +6 -4
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/Calendar/CalendarDateShape.d.ts +1 -1
- package/internal/Calendar/MonthViewModel/MonthViewModel.js +35 -18
- package/internal/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -3
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +23 -15
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +18 -17
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +35 -35
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
- package/internal/DateSelect/DateSelect/DateSelect.js +21 -15
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +5 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +13 -16
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js +14 -0
- package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
- package/internal/InternalMenu/addIconPaddingIfPartOfMenu/package.json +6 -0
- package/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
- package/internal/MaskedInput/MaskedInput/MaskedInput.js +8 -3
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +9 -14
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +8 -7
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +1 -0
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +8 -0
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +4 -0
- package/internal/PopupMenu/validatePositions/validatePositions.js +6 -6
- package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +5 -2
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer.d.ts +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +5 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js +5 -1
- package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
- package/internal/ThemePlayground/VariableValue/VariableValue.js +16 -5
- package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +3 -6
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +4 -6
- package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +12 -6
- package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
- package/internal/ZIndex/ZIndexStorage.d.ts +2 -1
- package/internal/icons/16px/index/index.js +21 -20
- package/internal/icons/16px/index/index.js.map +1 -1
- package/internal/icons/16px/index.d.ts +19 -19
- package/lib/animation/index/index.js +1 -1
- package/lib/animation/index/index.js.map +1 -1
- package/lib/animation/index.d.ts +1 -1
- package/lib/date/InternalDate/InternalDate.js +16 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDateCalculator/InternalDateCalculator.js +14 -2
- package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
- package/lib/date/InternalDateGetter/InternalDateGetter.js +20 -6
- package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js +11 -1
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js +31 -4
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/events/keyboard/extractCode/extractCode.js +5 -5
- package/lib/events/keyboard/extractCode/extractCode.js.map +1 -1
- package/lib/rootNode/getRootNode/getRootNode.js +35 -8
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/lib/rootNode/getRootNode.d.ts +9 -0
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +1 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +9 -1
- package/lib/stringUtils/stringUtils.js +4 -1
- package/lib/stringUtils/stringUtils.js.map +1 -1
- package/lib/styles/ColorFactory/ColorFactory.js +9 -9
- package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
- package/lib/styles/ColorHelpers/ColorHelpers.js +26 -9
- package/lib/styles/ColorHelpers/ColorHelpers.js.map +1 -1
- package/lib/styles/ColorHelpers.d.ts +1 -0
- package/lib/styles/ColorObject/ColorObject.js +2 -2
- package/lib/styles/ColorObject/ColorObject.js.map +1 -1
- package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js +9 -0
- package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js.map +1 -0
- package/lib/styles/getLabGrotesqueBaselineCompensation/package.json +6 -0
- package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +4 -1
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +5 -2
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/ThemeFactory/ThemeFactory.js +5 -2
- package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
- package/lib/theming/ThemeHelpers/ThemeHelpers.js +5 -1
- package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
- package/lib/utils/utils.js +42 -6
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +15 -0
- package/package.json +4 -3
- package/cjs/components/Button/Corners.d.ts +0 -6
- package/cjs/components/Button/Corners.js +0 -5
- package/cjs/components/Button/Corners.js.map +0 -1
- package/components/Button/Corners/Corners.js +0 -6
- package/components/Button/Corners/Corners.js.map +0 -1
- package/components/Button/Corners/package.json +0 -6
- package/components/Button/Corners.d.ts +0 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import { isNonNullable, isNullable } from "../../../lib/utils";
|
|
2
3
|
import { isSafari } from "../../../lib/client";
|
|
3
4
|
import { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS } from "../constants";
|
|
4
5
|
export var CurrencyHelper = /*#__PURE__*/function () {
|
|
@@ -45,7 +46,7 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
CurrencyHelper.format = function format(value, options) {
|
|
48
|
-
if (value
|
|
49
|
+
if (isNullable(value)) {
|
|
49
50
|
return '';
|
|
50
51
|
}
|
|
51
52
|
|
|
@@ -78,9 +79,8 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
78
79
|
};
|
|
79
80
|
|
|
80
81
|
CurrencyHelper.formatString = function formatString(value, formattingOptions) {
|
|
81
|
-
var
|
|
82
|
-
|
|
83
|
-
var destructed = CurrencyHelper.destructString(value) || {
|
|
82
|
+
var unformattedValue = CurrencyHelper.unformatString(value);
|
|
83
|
+
var destructed = CurrencyHelper.destructString(unformattedValue) || {
|
|
84
84
|
sign: '',
|
|
85
85
|
integer: '',
|
|
86
86
|
delimiter: '',
|
|
@@ -91,6 +91,7 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
91
91
|
delimiter = destructed.delimiter;
|
|
92
92
|
var fraction = destructed.fraction;
|
|
93
93
|
var fractionDigits = fraction.length;
|
|
94
|
+
var options = CurrencyHelper.getOptions(formattingOptions);
|
|
94
95
|
|
|
95
96
|
if (options.hideTrailingZeros) {
|
|
96
97
|
fraction = fraction.replace(/0+$/, '');
|
|
@@ -122,8 +123,8 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
122
123
|
};
|
|
123
124
|
|
|
124
125
|
CurrencyHelper.isValidString = function isValidString(value, options) {
|
|
125
|
-
|
|
126
|
-
var destructed = CurrencyHelper.destructString(
|
|
126
|
+
var unformattedValue = CurrencyHelper.unformatString(value);
|
|
127
|
+
var destructed = CurrencyHelper.destructString(unformattedValue);
|
|
127
128
|
|
|
128
129
|
if (!destructed) {
|
|
129
130
|
return false;
|
|
@@ -145,15 +146,15 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
145
146
|
var integerDigits = integer === '0' ? 0 : integer.length;
|
|
146
147
|
var fractionDigits = fraction.length;
|
|
147
148
|
|
|
148
|
-
if (options.integerDigits
|
|
149
|
+
if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {
|
|
149
150
|
return false;
|
|
150
151
|
}
|
|
151
152
|
|
|
152
|
-
if (options.integerDigits
|
|
153
|
+
if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {
|
|
153
154
|
return false;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
if (options.fractionDigits
|
|
157
|
+
if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {
|
|
157
158
|
return false;
|
|
158
159
|
}
|
|
159
160
|
|
|
@@ -161,8 +162,8 @@ export var CurrencyHelper = /*#__PURE__*/function () {
|
|
|
161
162
|
};
|
|
162
163
|
|
|
163
164
|
CurrencyHelper.extractValid = function extractValid(value, options) {
|
|
164
|
-
|
|
165
|
-
var match = /[-.\d]+/.exec(
|
|
165
|
+
var unformattedValue = CurrencyHelper.unformatString(value);
|
|
166
|
+
var match = /[-.\d]+/.exec(unformattedValue);
|
|
166
167
|
|
|
167
168
|
if (!match) {
|
|
168
169
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyHelper.tsx"],"names":["isSafari","MAX_ALLOWED_CHARS","MAX_SAFE_DIGITS","CurrencyHelper","getOptions","options","defaultOptions","getInfo","value","raw","unformatString","formatted","formatString","cursorMap","getCursorMap","formattingOptions","regexp","RegExp","thousandsDelimiter","index","length","cursor","skip","ignoredSymbol","exec","format","toString","parse","cleaned","destructed","destructString","result","sign","integer","delimiter","fraction","parseFloat","replace","formatForClipboard","fractionDigits","hideTrailingZeros","parts","blockSize","start","i","push","substring","Math","max","join","padEnd","min","minusSign","isValidString","unsigned","integerDigits","extractValid","match","token","substr","String","fromCharCode"],"mappings":"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","sourcesContent":["import { Nullable } from '../../typings/utility-types';\nimport { isSafari } from '../../lib/client';\n\nimport { DecimalOptions } from './CurrencyInputHelper';\nimport { CursorMap } from './CursorHelper';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS } from './constants';\n\nexport interface DecimalFormattingOptions {\n fractionDigits?: Nullable<number>;\n hideTrailingZeros?: boolean;\n thousandsDelimiter?: string;\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: String.fromCharCode(isSafari ? 0x0020 : 0x2009),\n minusSign: String.fromCharCode(0x2212),\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (value == null) {\n return '';\n }\n\n return CurrencyHelper.formatString(value.toString(), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const options = CurrencyHelper.getOptions(formattingOptions);\n value = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(value) || { sign: '', integer: '', delimiter: '', fraction: '' };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions) {\n value = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(value);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (options.integerDigits != null && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (options.integerDigits == null && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (options.fractionDigits != null && fractionDigits > options.fractionDigits) {\n return false;\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n value = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(value);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string) {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = ''] = match;\n return { sign, integer, delimiter, fraction };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CurrencyHelper.tsx"],"names":["isNonNullable","isNullable","isSafari","MAX_ALLOWED_CHARS","MAX_SAFE_DIGITS","CurrencyHelper","getOptions","options","defaultOptions","getInfo","value","raw","unformatString","formatted","formatString","cursorMap","getCursorMap","formattingOptions","regexp","RegExp","thousandsDelimiter","index","length","cursor","skip","ignoredSymbol","exec","format","toString","parse","cleaned","destructed","destructString","result","sign","integer","delimiter","fraction","parseFloat","replace","formatForClipboard","unformattedValue","fractionDigits","hideTrailingZeros","parts","blockSize","start","i","push","substring","Math","max","join","padEnd","min","minusSign","isValidString","unsigned","integerDigits","extractValid","match","token","substr","String","fromCharCode"],"mappings":"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","sourcesContent":["import { isNonNullable, isNullable } from '../../lib/utils';\nimport { Nullable } from '../../typings/utility-types';\nimport { isSafari } from '../../lib/client';\n\nimport { DecimalOptions } from './CurrencyInputHelper';\nimport { CursorMap } from './CursorHelper';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS } from './constants';\n\nexport interface DecimalFormattingOptions {\n fractionDigits?: Nullable<number>;\n hideTrailingZeros?: boolean;\n thousandsDelimiter?: string;\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: String.fromCharCode(isSafari ? 0x0020 : 0x2009),\n minusSign: String.fromCharCode(0x2212),\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (isNullable(value)) {\n return '';\n }\n\n return CurrencyHelper.formatString(value.toString(), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue) || {\n sign: '',\n integer: '',\n delimiter: '',\n fraction: '',\n };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n const options = CurrencyHelper.getOptions(formattingOptions);\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions) {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {\n return false;\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(unformattedValue);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string) {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = ''] = match;\n return { sign, integer, delimiter, fraction };\n }\n}\n"]}
|
|
@@ -9,6 +9,7 @@ import React from 'react';
|
|
|
9
9
|
import PropTypes from 'prop-types';
|
|
10
10
|
import warning from 'warning';
|
|
11
11
|
import debounce from 'lodash.debounce';
|
|
12
|
+
import { isNonNullable, isNullable } from "../../../lib/utils";
|
|
12
13
|
import { isIE11 } from "../../../lib/client";
|
|
13
14
|
import { Input } from "../../Input";
|
|
14
15
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
@@ -51,10 +52,6 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
51
52
|
hideTrailingZeros = props.hideTrailingZeros,
|
|
52
53
|
rest = _objectWithoutPropertiesLoose(props, _excluded);
|
|
53
54
|
|
|
54
|
-
var placeholder = _this.props.placeholder == null ? CurrencyHelper.format(0, {
|
|
55
|
-
fractionDigits: fractionDigits,
|
|
56
|
-
hideTrailingZeros: hideTrailingZeros
|
|
57
|
-
}) : _this.props.placeholder;
|
|
58
55
|
return /*#__PURE__*/React.createElement(Input, _extends({}, rest, {
|
|
59
56
|
value: _this.state.formatted,
|
|
60
57
|
onBlur: _this.handleBlur,
|
|
@@ -69,7 +66,7 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
69
66
|
onMouseLeave: _this.props.onMouseLeave,
|
|
70
67
|
onMouseOver: _this.props.onMouseOver,
|
|
71
68
|
ref: _this.refInput,
|
|
72
|
-
placeholder: _this.state.focused ? '' :
|
|
69
|
+
placeholder: _this.state.focused ? '' : getPlaceholder(props)
|
|
73
70
|
}));
|
|
74
71
|
};
|
|
75
72
|
|
|
@@ -327,7 +324,7 @@ var CurrencyInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
327
324
|
|
|
328
325
|
var delta = _this.getOnChangeDelta(value);
|
|
329
326
|
|
|
330
|
-
if (delta
|
|
327
|
+
if (isNonNullable(delta) && !_this.inputValue(selection.start, selection.end, delta)) {
|
|
331
328
|
_this.setState({
|
|
332
329
|
selection: selection
|
|
333
330
|
});
|
|
@@ -512,4 +509,15 @@ function getInputSelectionFromEvent(input) {
|
|
|
512
509
|
end: input.selectionEnd,
|
|
513
510
|
direction: input.selectionDirection
|
|
514
511
|
};
|
|
515
|
-
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
var getPlaceholder = function getPlaceholder(props) {
|
|
515
|
+
if (isNullable(props.placeholder)) {
|
|
516
|
+
return CurrencyHelper.format(0, {
|
|
517
|
+
fractionDigits: props.fractionDigits,
|
|
518
|
+
hideTrailingZeros: props.hideTrailingZeros
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
return props.placeholder;
|
|
523
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","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","placeholder","format","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","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","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","align","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","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 { 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 const placeholder =\n this.props.placeholder == null\n ? CurrencyHelper.format(0, { fractionDigits, hideTrailingZeros })\n : this.props.placeholder;\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 ? '' : placeholder}\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 (delta != null && !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"]}
|
|
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"]}
|
|
@@ -4,7 +4,13 @@ export var CurrencyInputHelper = /*#__PURE__*/function () {
|
|
|
4
4
|
function CurrencyInputHelper() {}
|
|
5
5
|
|
|
6
6
|
CurrencyInputHelper.moveCursor = function moveCursor(value, selection, step) {
|
|
7
|
-
|
|
7
|
+
if (selection.start === selection.end) {
|
|
8
|
+
return CursorHelper.calculatePosition(CurrencyHelper.getInfo(value).cursorMap, selection.start, step);
|
|
9
|
+
} else if (step < 0) {
|
|
10
|
+
return selection.start;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return selection.end;
|
|
8
14
|
};
|
|
9
15
|
|
|
10
16
|
CurrencyInputHelper.extendSelection = function extendSelection(value, selection, step) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInputHelper.tsx"],"names":["CurrencyHelper","CursorHelper","CurrencyInputHelper","moveCursor","value","selection","step","start","end","calculatePosition","getInfo","cursorMap","extendSelection","info","normalizeSelection","safeInsert","input","options","length","extracted","extractValid","insert","prefix","substring","suffix","combined","isValidString","raw","toRawPosition","info2","formattedPosition","toFormattedPosition","formatted","position"],"mappings":";;;AAGA,SAASA,cAAT,QAA+B,kBAA/B;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;;;AAQA,WAAaC,mBAAb;AACgBC,EAAAA,UADhB,GACE,oBAAyBC,KAAzB,EAAwCC,SAAxC,EAA8DC,IAA9D,EAAoF;AAClF,
|
|
1
|
+
{"version":3,"sources":["CurrencyInputHelper.tsx"],"names":["CurrencyHelper","CursorHelper","CurrencyInputHelper","moveCursor","value","selection","step","start","end","calculatePosition","getInfo","cursorMap","extendSelection","info","normalizeSelection","safeInsert","input","options","length","extracted","extractValid","insert","prefix","substring","suffix","combined","isValidString","raw","toRawPosition","info2","formattedPosition","toFormattedPosition","formatted","position"],"mappings":"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","sourcesContent":["import { Nullable } from '../../typings/utility-types';\n\nimport { Selection } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CursorHelper } from './CursorHelper';\n\nexport interface DecimalOptions {\n integerDigits?: Nullable<number>;\n fractionDigits?: Nullable<number>;\n unsigned?: boolean;\n}\n\nexport class CurrencyInputHelper {\n public static moveCursor(value: string, selection: Selection, step: number): number {\n if (selection.start === selection.end) {\n return CursorHelper.calculatePosition(CurrencyHelper.getInfo(value).cursorMap, selection.start, step);\n } else if (step < 0) {\n return selection.start;\n }\n\n return selection.end;\n }\n\n public static extendSelection(value: string, selection: Selection, step: number) {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.extendSelection(info.cursorMap, selection, step);\n }\n\n public static normalizeSelection(value: string, selection: Selection): Selection {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.normalizeSelection(info.cursorMap, selection);\n }\n\n public static safeInsert(value: string, start: number, end: number, input: string, options: DecimalOptions) {\n if (input && start === 0 && end === value.length) {\n const extracted = CurrencyHelper.extractValid(input, options);\n if (!extracted) {\n return null;\n }\n return CurrencyInputHelper.insert(value, start, end, extracted);\n }\n\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const combined = prefix + input + suffix;\n if (CurrencyHelper.isValidString(combined, options)) {\n return CurrencyInputHelper.insert(value, start, end, input);\n }\n return null;\n }\n\n public static insert(value: string, start: number, end: number, input: string) {\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const info = CurrencyHelper.getInfo(value);\n const raw = CursorHelper.toRawPosition(info.cursorMap, start);\n const info2 = CurrencyHelper.getInfo(prefix + input + suffix);\n const formattedPosition = CursorHelper.toFormattedPosition(info2.cursorMap, raw + input.length);\n\n return { value: info2.formatted, position: formattedPosition };\n }\n}\n"]}
|
|
@@ -38,6 +38,22 @@ function _arrayLikeToArray(arr, len) {
|
|
|
38
38
|
return arr2;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
var calculateExtendedSelection = function calculateExtendedSelection(map, selection, step) {
|
|
42
|
+
if (selection.direction === 'backward') {
|
|
43
|
+
return {
|
|
44
|
+
start: CursorHelper.calculatePosition(map, selection.start, step),
|
|
45
|
+
end: selection.end,
|
|
46
|
+
direction: 'backward'
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
start: selection.start,
|
|
52
|
+
end: CursorHelper.calculatePosition(map, selection.end, step),
|
|
53
|
+
direction: 'forward'
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
41
57
|
export var CursorHelper = /*#__PURE__*/function () {
|
|
42
58
|
function CursorHelper() {}
|
|
43
59
|
|
|
@@ -55,17 +71,8 @@ export var CursorHelper = /*#__PURE__*/function () {
|
|
|
55
71
|
};
|
|
56
72
|
|
|
57
73
|
CursorHelper.extendSelection = function extendSelection(map, selection, step) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
start: CursorHelper.calculatePosition(map, selection.start, step),
|
|
61
|
-
end: selection.end,
|
|
62
|
-
direction: 'backward'
|
|
63
|
-
} : {
|
|
64
|
-
start: selection.start,
|
|
65
|
-
end: CursorHelper.calculatePosition(map, selection.end, step),
|
|
66
|
-
direction: 'forward'
|
|
67
|
-
};
|
|
68
|
-
return CursorHelper.normalizeSelection(map, selection);
|
|
74
|
+
var normalizedSelection = CursorHelper.normalizeSelection(map, selection);
|
|
75
|
+
return CursorHelper.normalizeSelection(map, calculateExtendedSelection(map, normalizedSelection, step));
|
|
69
76
|
};
|
|
70
77
|
|
|
71
78
|
CursorHelper.normalizeSelection = function normalizeSelection(map, selection) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CursorHelper.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["CursorHelper.tsx"],"names":["calculateExtendedSelection","map","selection","step","direction","start","CursorHelper","calculatePosition","end","normalizePosition","position","Math","min","max","length","Error","raw","toRawPosition","toFormattedPosition","extendSelection","normalizedSelection","normalizeSelection","formattedPosition","count","Set","slice","size","rawPosition","unique","add"],"mappings":"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","sourcesContent":["import { Selection } from './SelectionHelper';\n\nexport type CursorMap = number[];\n\nconst calculateExtendedSelection = (map: CursorMap, selection: Selection, step: number): Selection => {\n if (selection.direction === 'backward') {\n return {\n start: CursorHelper.calculatePosition(map, selection.start, step),\n end: selection.end,\n direction: 'backward',\n };\n }\n\n return {\n start: selection.start,\n end: CursorHelper.calculatePosition(map, selection.end, step),\n direction: 'forward',\n };\n};\n\nexport class CursorHelper {\n public static normalizePosition(map: CursorMap, position: number): number {\n return map[Math.min(Math.max(0, position), map.length - 1)];\n }\n\n public static calculatePosition(map: CursorMap, position: number, step: number) {\n if (position < 0 || map.length <= position) {\n throw new Error(`position out of range [${0} .. ${map.length - 1}], actual value: ${position}`);\n }\n const raw = CursorHelper.toRawPosition(map, position);\n return CursorHelper.toFormattedPosition(map, raw + step);\n }\n\n public static extendSelection(map: CursorMap, selection: Selection, step: number) {\n const normalizedSelection = CursorHelper.normalizeSelection(map, selection);\n\n return CursorHelper.normalizeSelection(map, calculateExtendedSelection(map, normalizedSelection, step));\n }\n\n public static normalizeSelection(map: CursorMap, selection: Selection): Selection {\n const start = CursorHelper.normalizePosition(map, selection.start);\n const end = CursorHelper.normalizePosition(map, selection.end);\n\n if (start === end) {\n return {\n start,\n end,\n direction: 'none',\n };\n }\n\n if (start < end) {\n return {\n start,\n end,\n direction: selection.direction === 'backward' ? 'backward' : 'forward',\n };\n }\n\n return {\n start: end,\n end: start,\n direction: selection.direction === 'backward' ? 'forward' : 'backward',\n };\n }\n\n public static toRawPosition(map: CursorMap, formattedPosition: number) {\n const count = Math.min(Math.max(0, formattedPosition), map.length - 1);\n return new Set(map.slice(0, count + 1)).size - 1;\n }\n\n public static toFormattedPosition(map: CursorMap, rawPosition: number) {\n const count = Math.max(0, rawPosition) + 1;\n const unique = new Set();\n\n for (const position of map) {\n unique.add(position);\n if (unique.size === count) {\n return position;\n }\n }\n\n return map[map.length - 1];\n }\n}\n"]}
|
|
@@ -135,8 +135,8 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
135
135
|
var prevValue = this.iDate.get(type);
|
|
136
136
|
|
|
137
137
|
if (type === null) {
|
|
138
|
-
|
|
139
|
-
this.clear(
|
|
138
|
+
var leftMostType = this.getLeftmostType();
|
|
139
|
+
this.clear(leftMostType);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
if (type !== InternalDateComponentType.Year) {
|
|
@@ -154,13 +154,13 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
154
154
|
};
|
|
155
155
|
|
|
156
156
|
_proto.shiftDateComponent = function shiftDateComponent(type, step) {
|
|
157
|
-
|
|
157
|
+
var calculatedType = type != null ? type : this.getLeftmostType();
|
|
158
158
|
var iDate = this.iDate.clone();
|
|
159
|
+
var start = iDate.getRangeStart();
|
|
160
|
+
var end = iDate.getRangeEnd();
|
|
159
161
|
var isValidRange = iDate.validate({
|
|
160
162
|
checks: [InternalDateValidateCheck.Range]
|
|
161
163
|
});
|
|
162
|
-
var start = iDate.getRangeStart();
|
|
163
|
-
var end = iDate.getRangeEnd();
|
|
164
164
|
|
|
165
165
|
if (!isValidRange) {
|
|
166
166
|
// Удерживаем дату в заданном диапазоне
|
|
@@ -170,7 +170,7 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
170
170
|
iDate.duplicateOf(end);
|
|
171
171
|
}
|
|
172
172
|
} else {
|
|
173
|
-
var clone = iDate.clone().shift(
|
|
173
|
+
var clone = iDate.clone().shift(calculatedType, step, {
|
|
174
174
|
isRange: false,
|
|
175
175
|
isLoop: true
|
|
176
176
|
});
|
|
@@ -182,7 +182,7 @@ export var InternalDateMediator = /*#__PURE__*/function () {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
var changed = !this.iDate.isEqualComponentDate(
|
|
185
|
+
var changed = !this.iDate.isEqualComponentDate(calculatedType, iDate);
|
|
186
186
|
this.iDate = iDate;
|
|
187
187
|
return changed;
|
|
188
188
|
};
|
|
@@ -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","Year","nextValue","nextInputMode","shiftDateComponent","step","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 type = this.getLeftmostType();\n this.clear(type);\n }\n if (type !== InternalDateComponentType.Year) {\n this.iDate.cutOffExcess(type);\n } else {\n this.iDate.restore(type);\n }\n const { nextValue, nextInputMode } = inputNumber(type, prevValue, key, inputMode);\n this.iDate.set(type, nextValue);\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 type = type === null ? this.getLeftmostType() : type;\n const iDate = this.iDate.clone();\n const isValidRange = iDate.validate({ checks: [InternalDateValidateCheck.Range] });\n const start = iDate.getRangeStart();\n const end = iDate.getRangeEnd();\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(type, step, { isRange: false, isLoop: true });\n if (clone.validate({ checks: [InternalDateValidateCheck.Range] })) {\n iDate.duplicateOf(clone);\n }\n }\n const changed = !this.iDate.isEqualComponentDate(type, 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","nextValue","nextInputMode","shiftDateComponent","step","calculatedType","isValidRange","validate","checks","Range","shift","isRange","isLoop","changed","isEqualComponentDate","getShiftedType","typesOrder","index","indexOf","nextIndex","All","getYear","shiftedType"],"mappings":"AAAA,SAASA,YAAT,QAA6B,gCAA7B;AACA,SAASC,kBAAT,QAAmC,sCAAnC;AACA,SAASC,uBAAT,QAAwC,2CAAxC;AACA,SAASC,yBAAT,EAA4DC,yBAA5D,QAA6F,yBAA7F;;;;AAIA,SAASC,WAAT,QAA4B,eAA5B;;AAEA,WAAaC,oBAAb;AACSC,IAAAA,KADT,GAC+B,IAAIP,YAAJ,EAD/B;;AAGSQ,IAAAA,MAHT,GAGkB,UAACC,KAAD,EAAwBC,MAAxB,EAA2E;AACzF,UAAMC,KAAK,GAAG,KAAI,CAACJ,KAAL,CAAWK,aAAX,EAAd;AACA,UAAMC,GAAG,GAAGF,KAAK,IAAIA,KAAK,CAACG,gBAAN,EAArB;AACA,UAAMC,GAAG,GAAG,KAAI,CAACR,KAAL,CAAWS,WAAX,EAAZ;AACA,UAAMC,GAAG,GAAGF,GAAG,IAAIA,GAAG,CAACD,gBAAJ,EAAnB;AACA,UAAQI,KAAR,GAA6BR,MAA7B,CAAQQ,KAAR,CAAeC,SAAf,GAA6BT,MAA7B,CAAeS,SAAf;AACA,MAAA,KAAI,CAACZ,KAAL,CAAWa,QAAX,CAAoBF,KAApB,EAA2BG,YAA3B,CAAwCF,SAAxC;AACA,UAAIV,KAAK,CAACa,OAAN,KAAkBT,GAAtB,EAA2B;AACzB,QAAA,KAAI,CAACN,KAAL,CAAWgB,aAAX;AACEd,QAAAA,KAAK,CAACa,OAAN;AACI,YAAItB,YAAJ,CAAiB;AACfkB,UAAAA,KAAK,EAALA,KADe;AAEfC,UAAAA,SAAS,EAATA,SAFe;AAGfK,UAAAA,KAAK,EAAEf,KAAK,CAACa,OAHE,EAAjB,CADJ;;AAMI,YAPN;;AASD;AACD,UAAIb,KAAK,CAACgB,OAAN,KAAkBR,GAAtB,EAA2B;AACzB,QAAA,KAAI,CAACV,KAAL,CAAWmB,WAAX;AACEjB,QAAAA,KAAK,CAACgB,OAAN;AACI,YAAIzB,YAAJ,CAAiB;AACfkB,UAAAA,KAAK,EAALA,KADe;AAEfC,UAAAA,SAAS,EAATA,SAFe;AAGfK,UAAAA,KAAK,EAAEf,KAAK,CAACgB,OAHE,EAAjB,CADJ;;AAMI,YAPN;;AASD;AACD,UAAI,CAAChB,KAAK,CAACe,KAAP,IAAgBf,KAAK,CAACe,KAAN,KAAgB,KAAI,CAACjB,KAAL,CAAWO,gBAAX,EAApC,EAAmE;AACjE,QAAA,KAAI,CAACP,KAAL,CAAWoB,kBAAX,CAA8BlB,KAAK,CAACe,KAApC;AACD;AACD,aAAO,KAAP;AACD,KApCH;;;;;;;;;;;;;;;;;;;;;AAyDSI,IAAAA,KAzDT,GAyDiB,UAACC,MAAD,EAA0C;AACvD,MAAA,KAAI,CAACtB,KAAL,CAAWuB,UAAX,CAAsBD,MAAtB,EAA8BE,OAA9B,GAAwCC,YAAxC;AACA,aAAO,KAAP;AACD,KA5DH;;AA8DSD,IAAAA,OA9DT,GA8DmB,YAAe;AAC9B,UAAI,KAAI,CAACxB,KAAL,CAAW0B,YAAX,EAAJ,EAA+B;AAC7B,YAAMC,QAAQ,GAAG,KAAI,CAAC3B,KAAL,CAAW4B,KAAX,GAAmBJ,OAAnB,EAAjB;AACA,YAAI,CAAC,KAAI,CAACxB,KAAL,CAAW6B,OAAX,CAAmBF,QAAnB,CAAL,EAAmC;AACjC,UAAA,KAAI,CAAC3B,KAAL,CAAW8B,WAAX,CAAuBH,QAAvB;AACD;AACD,eAAO,IAAP;AACD;AACD,aAAO,KAAP;AACD,KAvEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuHSI,IAAAA,YAvHT,GAuHwB;AACpB,QAAA,KAAI,CAAC/B,KAAL,CAAWgC,WAAX,CAAuB;AACrBC,UAAAA,aAAa,EAAE,IADM;AAErBC,UAAAA,OAAO,EAAE,IAFY,EAAvB,CADoB,GAvHxB;;;AA6HSC,IAAAA,kBA7HT,GA6H8B,UAACC,IAAD,EAAkCC,SAAlC,EAAyD;AACnF,UAAIC,IAAI,GAAG,KAAI,CAACtC,KAAL,CAAWuC,GAAX,CAAeH,IAAf,CAAX;AACAE,MAAAA,IAAI,GAAGE,MAAM,CAACH,SAAS,GAAGC,IAAH,GAAU3C,uBAAuB,CAAC8C,gBAAxB,CAAyCL,IAAzC,EAA+CE,IAA/C,CAApB,CAAb;AACA,UAAMI,IAAI,GAAGJ,IAAI,CAACK,OAAL,CAAa,IAAb,EAAmB,EAAnB,KAA0B,IAAvC;AACA,MAAA,KAAI,CAAC3C,KAAL,CAAW4C,GAAX,CAAeR,IAAf,EAAqBM,IAArB;AACD,KAlIH;;AAoISG,IAAAA,eApIT,GAoI2B,UAAC1C,MAAD;AACvBA,QAAAA,MAAM,CAACQ,KAAP,KAAiB,KAAI,CAACX,KAAL,CAAW8C,QAAX,EAAjB,IAA0C3C,MAAM,CAACS,SAAP,KAAqB,KAAI,CAACZ,KAAL,CAAW+C,YAAX,EADxC,GApI3B;;AAuISC,IAAAA,MAvIT,GAuIkB,UAACZ,IAAD,UAAqD,KAAI,CAACpC,KAAL,CAAWuC,GAAX,CAAeH,IAAf,MAAyB,IAA9E,EAvIlB;;AAyISa,IAAAA,OAzIT,GAyImB,oBAAe,KAAI,CAACjD,KAAL,CAAWiD,OAAX,EAAf,EAzInB;;AA2ISV,IAAAA,GA3IT,GA2Ie,UAACH,IAAD,UAA4C,KAAI,CAACpC,KAAL,CAAWuC,GAAX,CAAeH,IAAf,CAA5C,EA3If;;AA6ISc,IAAAA,KA7IT,GA6IiB,UAACd,IAAD,UAA0D,KAAI,CAACpC,KAAL,CAAW4C,GAAX,CAAeR,IAAf,EAAqB,IAArB,CAA1D,EA7IjB;;AA+ISe,IAAAA,cA/IT,GA+I0B,UAAClC,KAAD;AACtBtB,QAAAA,uBAAuB,CAACyD,gBAAxB,CAAyCnC,KAAzC,EAAgD,KAAI,CAACjB,KAAL,CAAW8C,QAAX,EAAhD,MAA2E,IADrD,GA/I1B;;AAkJSO,IAAAA,SAlJT,GAkJqB,oBAAe,KAAI,CAACrD,KAAL,CAAWiD,OAAX,KAAuB,EAAvB,GAA4B,KAAI,CAACjD,KAAL,CAAWsD,QAAX,EAA3C,EAlJrB;;AAoJSC,IAAAA,iBApJT,GAoJ6B,oBAAe,KAAI,CAACvD,KAAL,CAAWiD,OAAX,KAAuB,EAAvB,GAA4B,KAAI,CAACjD,KAAL,CAAWO,gBAAX,EAA3C,EApJ7B;;AAsJSiD,IAAAA,aAtJT,GAsJyB,oBAAM,KAAI,CAACxD,KAAL,CAAWgC,WAAX,GAAyByB,GAAzB,CAA6B,qBAAGrB,IAAH,QAAGA,IAAH,QAAcA,IAAd,EAA7B,CAAN,EAtJzB;;AAwJSsB,IAAAA,eAxJT,GAwJ2B,oBAAiC,KAAI,CAACF,aAAL,GAAqB,CAArB,CAAjC,EAxJ3B;;AA0JSG,IAAAA,gBA1JT,GA0J4B,oBAAiC,KAAI,CAACH,aAAL,GAAqB,CAArB,CAAjC,EA1J5B,qDAsCSI,QAtCT,GAsCE,kBAAgBC,GAAhB,EAA6BzB,IAA7B,EAAqEC,SAArE,EAAkG,CAChG,IAAMyB,SAAS,GAAG,KAAK9D,KAAL,CAAWuC,GAAX,CAAeH,IAAf,CAAlB,CACA,IAAIA,IAAI,KAAK,IAAb,EAAmB,CACjB,IAAM2B,YAAY,GAAG,KAAKL,eAAL,EAArB,CACA,KAAKR,KAAL,CAAWa,YAAX,EACD,CAED,IAAI3B,IAAI,KAAKxC,yBAAyB,CAACoE,IAAvC,EAA6C,CAC3C,KAAKhE,KAAL,CAAWyB,YAAX,CAAwBW,IAAxB,EACD,CAFD,MAEO,CACL,KAAKpC,KAAL,CAAWwB,OAAX,CAAmBY,IAAnB,EACD,CAED,mBAAqCtC,WAAW,CAACsC,IAAD,EAAO0B,SAAP,EAAkBD,GAAlB,EAAuBxB,SAAvB,CAAhD,CAAQ4B,SAAR,gBAAQA,SAAR,CAAmBC,aAAnB,gBAAmBA,aAAnB,CACA,KAAKlE,KAAL,CAAW4C,GAAX,CAAeR,IAAf,EAAqB6B,SAArB,EAEA,OAAOC,aAAP,CACD,CAvDH,QAyESC,kBAzET,GAyEE,4BAA0B/B,IAA1B,EAAkEgC,IAAlE,EAAyF,CACvF,IAAMC,cAAc,GAAGjC,IAAH,WAAGA,IAAH,GAAW,KAAKsB,eAAL,EAA/B,CAEA,IAAM1D,KAAK,GAAG,KAAKA,KAAL,CAAW4B,KAAX,EAAd,CACA,IAAMxB,KAAK,GAAGJ,KAAK,CAACK,aAAN,EAAd,CACA,IAAMG,GAAG,GAAGR,KAAK,CAACS,WAAN,EAAZ,CAEA,IAAM6D,YAAY,GAAGtE,KAAK,CAACuE,QAAN,CAAe,EAAEC,MAAM,EAAE,CAAC3E,yBAAyB,CAAC4E,KAA3B,CAAV,EAAf,CAArB,CACA,IAAI,CAACH,YAAL,EAAmB,CACjB;AACA,UAAIlE,KAAK,IAAIV,kBAAkB,CAACgB,GAAnB,CAAuB,CAACV,KAAD,EAAQI,KAAR,CAAvB,MAA2CA,KAAxD,EAA+D,CAC7DJ,KAAK,CAAC8B,WAAN,CAAkB1B,KAAlB,EACD,CAFD,MAEO,IAAII,GAAG,IAAId,kBAAkB,CAACY,GAAnB,CAAuB,CAACN,KAAD,EAAQQ,GAAR,CAAvB,MAAyCA,GAApD,EAAyD,CAC9DR,KAAK,CAAC8B,WAAN,CAAkBtB,GAAlB,EACD,CACF,CAPD,MAOO,CACL,IAAMoB,KAAK,GAAG5B,KAAK,CAAC4B,KAAN,GAAc8C,KAAd,CAAoBL,cAApB,EAAoCD,IAApC,EAA0C,EAAEO,OAAO,EAAE,KAAX,EAAkBC,MAAM,EAAE,IAA1B,EAA1C,CAAd,CACA,IAAIhD,KAAK,CAAC2C,QAAN,CAAe,EAAEC,MAAM,EAAE,CAAC3E,yBAAyB,CAAC4E,KAA3B,CAAV,EAAf,CAAJ,EAAmE,CACjEzE,KAAK,CAAC8B,WAAN,CAAkBF,KAAlB,EACD,CACF,CAED,IAAMiD,OAAO,GAAG,CAAC,KAAK7E,KAAL,CAAW8E,oBAAX,CAAgCT,cAAhC,EAAgDrE,KAAhD,CAAjB,CACA,KAAKA,KAAL,GAAaA,KAAb,CACA,OAAO6E,OAAP,CACD,CAlGH,QAoGSE,cApGT,GAoGE,wBAAsB3C,IAAtB,EAA8DgC,IAA9D,EAA8G,CAC5G,IAAMY,UAAU,GAAG,KAAKxB,aAAL,EAAnB,CACA,IAAMyB,KAAK,GAAG7C,IAAI,KAAK,IAAT,GAAgB,CAAhB,GAAoB4C,UAAU,CAACE,OAAX,CAAmB9C,IAAnB,CAAlC,CACA,IAAM+C,SAAS,GAAGF,KAAK,GAAGb,IAA1B,CAH4G,CAK5G;AACA,QAAIhC,IAAI,KAAKxC,yBAAyB,CAACwF,GAAvC,EAA4C,CAC1C,OAAOhB,IAAI,GAAG,CAAP,GAAWY,UAAU,CAAC,CAAD,CAArB,GAA2BA,UAAU,CAAC,CAAD,CAA5C,CACD,CAR2G,CAU5G;AACA,QAAI5C,IAAI,KAAKxC,yBAAyB,CAACoE,IAAnC,IAA2C,KAAKhE,KAAL,CAAWqF,OAAX,OAAyB,IAAxE,EAA8E,CAC5E,KAAKrF,KAAL,CAAWwB,OAAX,CAAmBY,IAAnB,EACD,CAED,IAAMkD,WAAW,GAAGN,UAAU,CAACG,SAAD,CAA9B,CACA,OAAO,OAAOG,WAAP,KAAuB,QAAvB,GAAkCA,WAAlC,GAAgDlD,IAAvD,CACD,CArHH","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"]}
|