@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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","state","input","tokensInputMenu","textHelper","wrapper","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","props","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","valueToString","isEditingMode","finishTokenEdit","isTokenValueChanged","length","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","tokens","map","token","selectedItems","indexOf","sort","index","clipboardData","setData","join","delimiters","handleInputPaste","WithReference","paste","getData","delimiter","stopPropagation","split","valueToItem","filter","newItems","concat","onValueChange","tryGetItems","query","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","enter","up","down","blur","moveFocusToLastToken","selectionStart","focusInput","selectInputText","setSelectionRange","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","itemNew","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","width","maxMenuHeight","error","warning","placeholder","renderItem","renderNotFound","onMouseEnter","onMouseLeave","inputMode","menuWidth","menuAlign","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","defaultProps","renderValue","toKey","emptyHandler"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FocusEvent, FocusEventHandler, KeyboardEvent, MouseEventHandler, ReactNode } from 'react';\nimport isEqual from 'lodash.isequal';\n\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems: T[];\n onValueChange: (items: T[]) => void;\n onMouseEnter: MouseEventHandler<HTMLDivElement>;\n onMouseLeave: MouseEventHandler<HTMLDivElement>;\n onFocus: FocusEventHandler<HTMLTextAreaElement>;\n onBlur: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth: React.CSSProperties['width'];\n menuAlign: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString: (item: T) => string;\n renderNotFound?: () => React.ReactNode;\n valueToItem: (item: string) => T;\n toKey: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nconst defaultToKey = <T extends {}>(item: T): string => item.toString();\nconst identity = <T extends {}>(item: T): T => item;\nconst defaultRenderToken = <T extends {}>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: Partial<TokenInputProps<any>> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.updateInputTextWidth();\n document.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.props.selectedItems.length) {\n LayoutEvents.emit();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n selectedItems,\n width,\n maxMenuHeight,\n error,\n warning,\n disabled,\n placeholder,\n renderItem,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n onMouseEnter,\n onMouseLeave,\n inputMode,\n menuWidth,\n menuAlign,\n } = this.props;\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input! : this.wrapper!}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.props.valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.props.selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n requestAnimationFrame(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.props.onBlur?.(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n const { valueToString } = this.props;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) this.checkForUnexpectedInput();\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { selectedItems, valueToString } = this.props;\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken =\n target && this.wrapper?.contains(target) && target !== this.wrapper! && target !== this.input!;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => this.props.selectedItems.indexOf(token))\n .sort()\n .map((index) => this.props.selectedItems[index])\n .map((item) => this.props.valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(this.props.delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n let paste = event.clipboardData.getData('text');\n const { delimiters } = this.props;\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n for (const delimiter of delimiters) {\n paste = paste.split(delimiter).join(delimiters[0]);\n }\n const tokens = paste.split(delimiters[0]);\n const items = tokens\n .map((token) => this.props.valueToItem(token))\n .filter((item) => !this.hasValueInItems(this.props.selectedItems, item));\n const newItems = this.props.selectedItems.concat(items);\n this.props.onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.state.inputValue !== '' || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const isSelectedItem = (item: T) => this.hasValueInItems(this.props.selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, this.props.valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => this.props.valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.props.delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode) this.moveFocusToLastToken();\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n this.moveFocusToLastToken();\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.props.selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n requestAnimationFrame(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n if (!this.isEditingMode) {\n const itemsNew = this.props.selectedItems.filter(\n (item) => !this.hasValueInItems(this.state.activeTokens, item),\n );\n this.props.onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: this.props.selectedItems,\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = this.props.selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = activeItemIndex + (isKeyArrowLeft(e) ? -1 : +1);\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = activeItemIndex === this.props.selectedItems.length - 1 && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.props.selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.props.selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.props.onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.props.valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems } = this.props;\n\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(item) }, this.finishTokenEdit);\n } else {\n if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange(this.props.selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const editingTokenIndex = this.props.selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.state.inputValue !== '') {\n if (this.state.reservedInputValue === undefined)\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const { selectedItems, valueToItem } = this.props;\n const editedItem = valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.state.inputValue !== '' && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const { selectedItems } = this.props;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.props.selectedItems.slice(this.state.editingTokenIndex + 1).map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenEdit(item);\n }\n };\n\n return renderToken(item, {\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","state","input","tokensInputMenu","textHelper","wrapper","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","props","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","valueToString","isEditingMode","finishTokenEdit","isTokenValueChanged","length","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","tokens","map","token","selectedItems","indexOf","sort","index","clipboardData","setData","join","delimiters","handleInputPaste","WithReference","paste","getData","delimiter","stopPropagation","split","valueToItem","filter","newItems","concat","onValueChange","tryGetItems","query","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","enter","up","down","blur","moveFocusToLastToken","selectionStart","focusInput","selectInputText","setSelectionRange","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","itemNew","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","width","maxMenuHeight","error","warning","placeholder","renderItem","renderNotFound","onMouseEnter","onMouseLeave","inputMode","menuWidth","menuAlign","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","defaultProps","renderValue","toKey","emptyHandler"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FocusEvent, FocusEventHandler, KeyboardEvent, MouseEventHandler, ReactNode } from 'react';\nimport isEqual from 'lodash.isequal';\n\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems: T[];\n onValueChange: (items: T[]) => void;\n onMouseEnter: MouseEventHandler<HTMLDivElement>;\n onMouseLeave: MouseEventHandler<HTMLDivElement>;\n onFocus: FocusEventHandler<HTMLTextAreaElement>;\n onBlur: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth: React.CSSProperties['width'];\n menuAlign: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString: (item: T) => string;\n renderNotFound?: () => React.ReactNode;\n valueToItem: (item: string) => T;\n toKey: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nconst defaultToKey = <T extends {}>(item: T): string => item.toString();\nconst identity = <T extends {}>(item: T): T => item;\nconst defaultRenderToken = <T extends {}>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: Partial<TokenInputProps<any>> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.updateInputTextWidth();\n document.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.props.selectedItems.length) {\n LayoutEvents.emit();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n selectedItems,\n width,\n maxMenuHeight,\n error,\n warning,\n disabled,\n placeholder,\n renderItem,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n onMouseEnter,\n onMouseLeave,\n inputMode,\n menuWidth,\n menuAlign,\n } = this.props;\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input! : this.wrapper!}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.props.valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.props.selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n requestAnimationFrame(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.props.onBlur?.(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n const { valueToString } = this.props;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { selectedItems, valueToString } = this.props;\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken =\n target && this.wrapper?.contains(target) && target !== this.wrapper! && target !== this.input!;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => this.props.selectedItems.indexOf(token))\n .sort()\n .map((index) => this.props.selectedItems[index])\n .map((item) => this.props.valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(this.props.delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n let paste = event.clipboardData.getData('text');\n const { delimiters } = this.props;\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n for (const delimiter of delimiters) {\n paste = paste.split(delimiter).join(delimiters[0]);\n }\n const tokens = paste.split(delimiters[0]);\n const items = tokens\n .map((token) => this.props.valueToItem(token))\n .filter((item) => !this.hasValueInItems(this.props.selectedItems, item));\n const newItems = this.props.selectedItems.concat(items);\n this.props.onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.state.inputValue !== '' || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const isSelectedItem = (item: T) => this.hasValueInItems(this.props.selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, this.props.valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => this.props.valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.props.delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n this.moveFocusToLastToken();\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.props.selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n requestAnimationFrame(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n if (!this.isEditingMode) {\n const itemsNew = this.props.selectedItems.filter(\n (item) => !this.hasValueInItems(this.state.activeTokens, item),\n );\n this.props.onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: this.props.selectedItems,\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = this.props.selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = activeItemIndex + (isKeyArrowLeft(e) ? -1 : +1);\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = activeItemIndex === this.props.selectedItems.length - 1 && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.props.selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.props.selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.props.onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.props.valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems } = this.props;\n\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange(this.props.selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const editingTokenIndex = this.props.selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.state.inputValue !== '') {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const { selectedItems, valueToItem } = this.props;\n const editedItem = valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.state.inputValue !== '' && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const { selectedItems } = this.props;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.props.selectedItems.slice(this.state.editingTokenIndex + 1).map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenEdit(item);\n }\n };\n\n return renderToken(item, {\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n}\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var _warning = _interopRequireDefault(require("warning"));
|
|
3
3
|
var _lodash = _interopRequireDefault(require("lodash.isequal"));
|
|
4
4
|
|
|
5
|
+
var _utils = require("../../lib/utils");
|
|
5
6
|
var _ThemeFactory = require("../../lib/theming/ThemeFactory");
|
|
6
7
|
var _Popup = require("../../internal/Popup");
|
|
7
8
|
var _RenderLayer = require("../../internal/RenderLayer");
|
|
@@ -239,7 +240,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
|
|
|
239
240
|
|
|
240
241
|
renderContent = function () {
|
|
241
242
|
var content = _this.props.render ? _this.props.render() : null;
|
|
242
|
-
if (
|
|
243
|
+
if ((0, _utils.isNullable)(content)) {
|
|
243
244
|
return null;
|
|
244
245
|
}
|
|
245
246
|
|
|
@@ -343,6 +344,8 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
|
|
|
343
344
|
|
|
344
345
|
|
|
345
346
|
|
|
347
|
+
|
|
348
|
+
|
|
346
349
|
|
|
347
350
|
|
|
348
351
|
|
|
@@ -559,7 +562,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
|
|
|
559
562
|
* Программно открывает тултип.
|
|
560
563
|
* <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
|
|
561
564
|
* @public
|
|
562
|
-
*/_proto.show = function show() {if (this.state.opened) return;if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {(0, _warning.default)(true, "Function 'show' is not supported with trigger specified '" + this.props.trigger + "'");return;}this.open();} /**
|
|
565
|
+
*/_proto.show = function show() {if (this.state.opened) {return;}if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {(0, _warning.default)(true, "Function 'show' is not supported with trigger specified '" + this.props.trigger + "'");return;}this.open();} /**
|
|
563
566
|
* Программно закрывает тултип.
|
|
564
567
|
* <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
|
|
565
568
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Tooltip.tsx"],"names":["Positions","Tooltip","rootNode","responsiveLayout","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","React","createRef","renderContent","content","props","render","refContent","styles","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","ThemeFactory","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getProps","popupProps","layerProps","active","children","popup","renderPopup","setRootNode","disableAnimations","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","defaultProps","DefaultPosition","isTestEnv","closeOnChildrenMouseLeave"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n closeOnChildrenMouseLeave: false,\n };\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n if (this.props.trigger === 'closed' && this.state.opened) {\n this.close();\n }\n\n const { allowedPositions, pos } = this.props;\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (content == null) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) return;\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={this.props.disableAnimations}\n positions={this.getPositions()}\n ignoreHover={this.props.trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n if (this.props.trigger === 'manual' || this.props.trigger === 'closed' || this.props.trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const allowedPositions = this.props.allowedPositions;\n const index = allowedPositions.indexOf(this.props.pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && props.useWrapper;\n\n switch (this.props.trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + props.trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.props.trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n\n if (\n (this.props.trigger === 'hover&focus' && this.state.focused) ||\n (this.props.trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (this.props.trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n if (this.props.trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (this.props.trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Tooltip.tsx"],"names":["Positions","Tooltip","rootNode","responsiveLayout","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","React","createRef","renderContent","content","props","render","refContent","styles","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","ThemeFactory","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getProps","popupProps","layerProps","active","children","popup","renderPopup","setRootNode","disableAnimations","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","defaultProps","DefaultPosition","isTestEnv","closeOnChildrenMouseLeave"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n closeOnChildrenMouseLeave: false,\n };\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n if (this.props.trigger === 'closed' && this.state.opened) {\n this.close();\n }\n\n const { allowedPositions, pos } = this.props;\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={this.props.disableAnimations}\n positions={this.getPositions()}\n ignoreHover={this.props.trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n if (this.props.trigger === 'manual' || this.props.trigger === 'closed' || this.props.trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const allowedPositions = this.props.allowedPositions;\n const index = allowedPositions.indexOf(this.props.pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && props.useWrapper;\n\n switch (this.props.trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + props.trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.props.trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n\n if (\n (this.props.trigger === 'hover&focus' && this.state.focused) ||\n (this.props.trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (this.props.trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n if (this.props.trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (this.props.trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import { MenuHeaderProps } from '../MenuHeader';
|
|
|
5
5
|
import { PopupPositionsType } from '../../internal/Popup';
|
|
6
6
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
7
7
|
export declare type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;
|
|
8
|
-
export interface TooltipMenuProps extends CommonProps {
|
|
8
|
+
export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {
|
|
9
9
|
children?: TooltipMenuChildType | TooltipMenuChildType[];
|
|
10
10
|
/** Максимальная высота меню */
|
|
11
11
|
menuMaxHeight?: number | string;
|
|
@@ -114,6 +114,8 @@ TooltipMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/f
|
|
|
114
114
|
header: this.props.header,
|
|
115
115
|
footer: this.props.footer,
|
|
116
116
|
positions: this.props.positions,
|
|
117
|
+
onOpen: this.props.onOpen,
|
|
118
|
+
onClose: this.props.onClose,
|
|
117
119
|
popupHasPin: true,
|
|
118
120
|
disableAnimations: this.props.disableAnimations },
|
|
119
121
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenu","rootNode","props","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","disableAnimations","children","React","Component","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"mappings":"yUAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA,8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaA,W,OADZC,kB;;;;;;;AAQC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN;;AAEA,QAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB,EADK;;AAMLR,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACS,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKd,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKc,WAAjC,IAAkD,KAAKf,KAAvD;AACE,mCAAC,oBAAD;AACE,QAAA,aAAa,EAAE,KAAKA,KAAL,CAAWgB,aAD5B;AAEE,QAAA,SAAS,EAAE,KAAKhB,KAAL,CAAWiB,SAFxB;AAGE,QAAA,OAAO,EAAE,KAAKjB,KAAL,CAAWC,OAHtB;AAIE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWkB,MAJrB;AAKE,QAAA,MAAM,EAAE,KAAKlB,KAAL,CAAWmB,MALrB;AAME,QAAA,SAAS,EAAE,KAAKnB,KAAL,CAAWoB,SANxB;AAOE,QAAA,
|
|
1
|
+
{"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenu","rootNode","props","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","React","Component","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"mappings":"yUAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA,8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaA,W,OADZC,kB;;;;;;;AAQC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN;;AAEA,QAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB,EADK;;AAMLR,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACS,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKd,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKc,WAAjC,IAAkD,KAAKf,KAAvD;AACE,mCAAC,oBAAD;AACE,QAAA,aAAa,EAAE,KAAKA,KAAL,CAAWgB,aAD5B;AAEE,QAAA,SAAS,EAAE,KAAKhB,KAAL,CAAWiB,SAFxB;AAGE,QAAA,OAAO,EAAE,KAAKjB,KAAL,CAAWC,OAHtB;AAIE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWkB,MAJrB;AAKE,QAAA,MAAM,EAAE,KAAKlB,KAAL,CAAWmB,MALrB;AAME,QAAA,SAAS,EAAE,KAAKnB,KAAL,CAAWoB,SANxB;AAOE,QAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MAPrB;AAQE,QAAA,OAAO,EAAE,KAAKrB,KAAL,CAAWsB,OARtB;AASE,QAAA,WAAW,MATb;AAUE,QAAA,iBAAiB,EAAE,KAAKtB,KAAL,CAAWuB,iBAVhC;;AAYG,WAAKvB,KAAL,CAAWwB,QAZd,CADF,CADF;;;;AAkBD,G,sBA7D8BC,eAAMC,S,WACvBC,mB,GAAsB,a,UAGtBC,Y,GAAe,EAC3BL,iBAAiB,EAAEM,6BADQ,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n}\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n };\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.props.disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
|
package/cjs/hooks/useDrop.js
CHANGED
|
@@ -56,7 +56,9 @@ var useDrop = function useDrop(props) {if (props === void 0) {props = {};}
|
|
|
56
56
|
(0, _react.useEffect)(function () {
|
|
57
57
|
var ref = droppableRef.current;
|
|
58
58
|
|
|
59
|
-
if (!ref)
|
|
59
|
+
if (!ref) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
60
62
|
|
|
61
63
|
ref.addEventListener('dragenter', preventDefault);
|
|
62
64
|
ref.addEventListener('dragleave', preventDefault);
|