@skbkontur/react-ui 5.2.1 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +7 -7
- package/cjs/components/Autocomplete/Autocomplete.d.ts +6 -23
- package/cjs/components/Autocomplete/Autocomplete.js +49 -46
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +2 -0
- package/cjs/components/Button/Button.js +29 -1
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.d.ts +6 -0
- package/cjs/components/Button/Button.styles.js +107 -75
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +2 -0
- package/cjs/components/Calendar/Calendar.js +1 -0
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +2 -0
- package/cjs/components/Center/Center.js +1 -0
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +2 -12
- package/cjs/components/Checkbox/Checkbox.js +2 -14
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
- package/cjs/components/ComboBox/ComboBox.js +1 -0
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
- package/cjs/components/CurrencyInput/CurrencyInput.js +5 -28
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyInput/constants.js +1 -2
- package/cjs/components/CurrencyInput/constants.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +2 -0
- package/cjs/components/DateInput/DateInput.js +1 -0
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
- package/cjs/components/DatePicker/DatePicker.js +6 -60
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
- package/cjs/components/Dropdown/Dropdown.js +2 -82
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
- package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +2 -5
- package/cjs/components/FxInput/FxInput.js +2 -7
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +2 -15
- package/cjs/components/Gapped/Gapped.js +1 -24
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Group/Group.d.ts +5 -4
- package/cjs/components/Group/Group.js +91 -40
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Group/Group.styles.d.ts +1 -0
- package/cjs/components/Group/Group.styles.js +12 -6
- package/cjs/components/Group/Group.styles.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +2 -0
- package/cjs/components/Hint/Hint.js +1 -0
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +2 -0
- package/cjs/components/Input/Input.js +1 -0
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +2 -1
- package/cjs/components/Kebab/Kebab.js +2 -26
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +2 -0
- package/cjs/components/Link/Link.js +1 -0
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +6 -36
- package/cjs/components/Loader/Loader.js +3 -57
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +1 -0
- package/cjs/components/MaskedInput/MaskedInput.js +17 -1
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
- package/cjs/components/MenuItem/MenuItem.js +2 -22
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
- package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
- package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
- package/cjs/components/MiniModal/MiniModalBody.js +17 -2
- package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.d.ts +1 -0
- package/cjs/components/Modal/Modal.styles.js +36 -28
- package/cjs/components/Modal/Modal.styles.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +2 -0
- package/cjs/components/Modal/ModalBody.js +1 -0
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.d.ts +5 -0
- package/cjs/components/Modal/ModalHeader.js +8 -1
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Paging/DotsIcon.d.ts +3 -0
- package/cjs/components/Paging/DotsIcon.js +13 -0
- package/cjs/components/Paging/DotsIcon.js.map +1 -0
- package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
- package/cjs/components/Paging/ForwardIcon.js +13 -1
- package/cjs/components/Paging/ForwardIcon.js.map +1 -1
- package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
- package/cjs/components/Paging/NavigationHelper.js +8 -6
- package/cjs/components/Paging/NavigationHelper.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +13 -2
- package/cjs/components/Paging/Paging.js +120 -50
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/Paging.styles.d.ts +24 -1
- package/cjs/components/Paging/Paging.styles.js +151 -22
- package/cjs/components/Paging/Paging.styles.js.map +1 -1
- package/cjs/components/Paging/PagingHelper.d.ts +1 -1
- package/cjs/components/Paging/PagingHelper.js +18 -11
- package/cjs/components/Paging/PagingHelper.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +2 -7
- package/cjs/components/PasswordInput/PasswordInput.js +2 -11
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +2 -0
- package/cjs/components/Radio/Radio.js +1 -0
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -0
- package/cjs/components/RadioGroup/RadioGroup.js +1 -0
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
- package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +2 -0
- package/cjs/components/Select/Select.js +1 -0
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
- package/cjs/components/SidePage/SidePage.styles.js +52 -38
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
- package/cjs/components/SidePage/SidePageBody.js +1 -0
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
- package/cjs/components/SidePage/SidePageContainer.js +1 -0
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
- package/cjs/components/SidePage/SidePageFooter.js +1 -0
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
- package/cjs/components/SidePage/SidePageHeader.js +60 -19
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +2 -18
- package/cjs/components/Spinner/Spinner.js +2 -32
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +2 -13
- package/cjs/components/Sticky/Sticky.js +2 -22
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +6 -21
- package/cjs/components/Switcher/Switcher.js +11 -20
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
- package/cjs/components/Switcher/Switcher.styles.js +17 -9
- package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
- package/cjs/components/Tabs/Indicator.d.ts +2 -0
- package/cjs/components/Tabs/Indicator.js +1 -0
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +2 -0
- package/cjs/components/Tabs/Tab.js +1 -0
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +2 -0
- package/cjs/components/Tabs/Tabs.js +1 -0
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +2 -44
- package/cjs/components/Textarea/Textarea.js +2 -56
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/TextareaCounter.js +2 -13
- package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +2 -0
- package/cjs/components/Toast/Toast.js +1 -0
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastView.d.ts +2 -14
- package/cjs/components/Toast/ToastView.js +3 -22
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +2 -10
- package/cjs/components/Toggle/Toggle.js +1 -11
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +2 -0
- package/cjs/components/Token/Token.js +1 -0
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
- package/cjs/components/TokenInput/TokenInput.js +1 -0
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +14 -9
- package/cjs/components/Tooltip/Tooltip.js +95 -13
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
- package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
- package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
- package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/ComponentTable.js +2 -3
- package/cjs/internal/ComponentTable.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
- package/cjs/internal/DateSelect/DateSelect.js +1 -18
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
- package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
- package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +2 -0
- package/cjs/internal/Menu/Menu.js +1 -0
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +41 -59
- package/cjs/internal/Popup/Popup.js +36 -79
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.d.ts +23 -33
- package/cjs/internal/Popup/PopupPin.js +2 -35
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
- package/cjs/internal/Popup/PopupPinNew.js +180 -0
- package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
- package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
- package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
- package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
- package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +1 -1
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
- package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
- package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
- package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
- package/cjs/internal/ZIndex/ZIndex.js +5 -1
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
- package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
- package/cjs/internal/themes/BasicTheme.d.ts +112 -20
- package/cjs/internal/themes/BasicTheme.js +149 -18
- package/cjs/internal/themes/BasicTheme.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_2.js +1 -1
- package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
- package/cjs/internal/themes/DarkTheme5_3.js +13 -0
- package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
- package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
- package/cjs/internal/themes/LightTheme5_3.js +13 -0
- package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
- package/cjs/lib/delay.mts +3 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +11 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +1 -1
- package/cjs/lib/forwardRefAndName.js +0 -1
- package/cjs/lib/forwardRefAndName.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
- package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
- package/cjs/lib/theming/ThemeVersions.js.map +1 -1
- package/cjs/lib/theming/themes/DarkTheme.d.ts +1 -0
- package/cjs/lib/theming/themes/DarkTheme.js +4 -2
- package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
- package/cjs/lib/theming/themes/LightTheme.d.ts +1 -0
- package/cjs/lib/theming/themes/LightTheme.js +4 -2
- package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
- package/cjs/lib/utils.d.ts +4 -0
- package/cjs/lib/utils.js +5 -1
- package/cjs/lib/utils.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +49 -45
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +6 -23
- package/components/Button/Button/Button.js +26 -5
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +2 -0
- package/components/Button/Button.styles/Button.styles.js +78 -60
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/Button.styles.d.ts +6 -0
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +2 -0
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +2 -0
- package/components/Checkbox/Checkbox/Checkbox.js +0 -11
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +2 -12
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +2 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +12 -36
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
- package/components/CurrencyInput/constants/constants.js +0 -1
- package/components/CurrencyInput/constants/constants.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +2 -0
- package/components/DatePicker/DatePicker/DatePicker.js +1 -32
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -33
- package/components/Dropdown/Dropdown/Dropdown.js +1 -47
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -47
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
- package/components/FxInput/FxInput/FxInput.js +1 -5
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +2 -5
- package/components/Gapped/Gapped/Gapped.js +1 -15
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +2 -15
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/components/Group/Group/Group.js +64 -28
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Group/Group.d.ts +5 -4
- package/components/Group/Group.styles/Group.styles.js +9 -6
- package/components/Group/Group.styles/Group.styles.js.map +1 -1
- package/components/Group/Group.styles.d.ts +1 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +2 -0
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +2 -0
- package/components/Kebab/Kebab/Kebab.js +2 -20
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +2 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +2 -0
- package/components/Loader/Loader/Loader.js +0 -33
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +6 -36
- package/components/MaskedInput/MaskedInput/MaskedInput.js +14 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +1 -0
- package/components/MenuItem/MenuItem/MenuItem.js +1 -12
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +2 -12
- package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
- package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.styles.d.ts +1 -0
- package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
- package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
- package/components/Modal/Modal.styles/Modal.styles.js +31 -28
- package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +1 -0
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +2 -0
- package/components/Modal/ModalHeader/ModalHeader.js +3 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Modal/ModalHeader.d.ts +5 -0
- package/components/Paging/DotsIcon/DotsIcon.js +14 -0
- package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
- package/components/Paging/DotsIcon/package.json +6 -0
- package/components/Paging/DotsIcon.d.ts +3 -0
- package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
- package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
- package/components/Paging/ForwardIcon.d.ts +3 -0
- package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
- package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
- package/components/Paging/NavigationHelper.d.ts +3 -2
- package/components/Paging/Paging/Paging.js +96 -47
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +13 -2
- package/components/Paging/Paging.styles/Paging.styles.js +77 -16
- package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
- package/components/Paging/Paging.styles.d.ts +24 -1
- package/components/Paging/PagingHelper/PagingHelper.js +16 -8
- package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
- package/components/Paging/PagingHelper.d.ts +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -7
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +2 -7
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +2 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +2 -0
- package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +3 -1
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +2 -0
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +2 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +2 -0
- package/components/SidePage/SidePageHeader/SidePageHeader.js +61 -39
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +12 -2
- package/components/Spinner/Spinner/Spinner.js +1 -18
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +2 -18
- package/components/Sticky/Sticky/Sticky.js +1 -13
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +2 -13
- package/components/Switcher/Switcher/Switcher.js +19 -16
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +6 -21
- package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
- package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
- package/components/Switcher/Switcher.styles.d.ts +1 -0
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Indicator.d.ts +2 -0
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +2 -0
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +2 -0
- package/components/Textarea/Textarea/Textarea.js +1 -44
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +2 -44
- package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
- package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +2 -0
- package/components/Toast/ToastView/ToastView.js +3 -17
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toast/ToastView.d.ts +2 -14
- package/components/Toggle/Toggle/Toggle.js +1 -10
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +2 -10
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +2 -0
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +2 -0
- package/components/Tooltip/Tooltip/Tooltip.js +67 -20
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +14 -9
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.styles.d.ts +7 -1
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
- package/internal/ComponentTable/ComponentTable.js +0 -2
- package/internal/ComponentTable/ComponentTable.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
- package/internal/DateSelect/DateSelect/DateSelect.js +1 -10
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +0 -10
- package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +2 -0
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +2 -0
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +2 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +2 -0
- package/internal/Popup/Popup/Popup.js +14 -64
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +41 -59
- package/internal/Popup/PopupPin/PopupPin.js +1 -34
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +23 -33
- package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
- package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
- package/internal/Popup/PopupPinNew/package.json +6 -0
- package/internal/Popup/PopupPinNew.d.ts +31 -0
- package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
- package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
- package/internal/Popup/PopupPinNew.styles/package.json +6 -0
- package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +2 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -3
- package/internal/ThemePlayground/Playground/Playground.js +4 -3
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
- package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
- package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
- package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +3 -3
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
- package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
- package/internal/themes/BasicTheme/BasicTheme.js +170 -26
- package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +112 -20
- package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
- package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
- package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
- package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
- package/internal/themes/DarkTheme5_3/package.json +6 -0
- package/internal/themes/DarkTheme5_3.d.ts +1 -0
- package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
- package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
- package/internal/themes/LightTheme5_3/package.json +6 -0
- package/internal/themes/LightTheme5_3.d.ts +1 -0
- package/lib/delay.d.mts +1 -0
- package/lib/delay.mts +3 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +6 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
- package/lib/forwardRefAndName.d.ts +1 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
- package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
- package/lib/theming/ThemeVersions.d.ts +1 -1
- package/lib/theming/themes/DarkTheme/DarkTheme.js +3 -1
- package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
- package/lib/theming/themes/DarkTheme.d.ts +1 -0
- package/lib/theming/themes/LightTheme/LightTheme.js +3 -1
- package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
- package/lib/theming/themes/LightTheme.d.ts +1 -0
- package/lib/utils/utils.js +2 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +4 -0
- package/package.json +10 -13
- package/cjs/lib/SSRSafe.d.ts +0 -2
- package/cjs/lib/SSRSafe.js +0 -5
- package/cjs/lib/SSRSafe.js.map +0 -1
- package/lib/SSRSafe/SSRSafe.js +0 -4
- package/lib/SSRSafe/SSRSafe.js.map +0 -1
- package/lib/SSRSafe/package.json +0 -6
- package/lib/SSRSafe.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","_class","_Loader","_React$Component","props","_this","call","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","_getDOMRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","_globalObject$documen","_globalObject$documen2","makeUnobservable","Array","from","document","querySelectorAll","_el$getAttribute","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","_this$childrenObserve","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","Consumer","theme","renderMain","_cx","_this$props","caption","type","_extends","rootNodeRef","setRootNode","className","loader","applyZIndex","coverChildren","style","wrapperRef","children","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","node","string","oneOf","number"],"sources":["Loader.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { SpinnerProps } from '../Spinner';\nimport { Spinner } from '../Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Loader.styles';\n\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = (typeof types)[number];\n\nexport interface LoaderProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает состояние лоадера.\n * @default false */\n active?: boolean;\n\n /** Задает подпись под спиннером. */\n caption?: SpinnerProps['caption'];\n\n /** Задает компонент, заменяющий спиннер. */\n component?: React.ReactNode;\n\n /** Задает размер спиннера и текста.\n * @default normal. */\n type?: LoaderType;\n\n /** Устанавливает время в миллисекундах для показа вуали без спиннера.\n * @default 30.0 */\n delayBeforeSpinnerShow?: number;\n\n /** Устанавливает минимальное время в миллисекундах для показа спиннера.\n * @default 1000. */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>\n>;\n\n/**\n * Компонент `Loader` принимает внутрь себя контент, поверх которого в активном состоянии `Loader`'а будет отрисован спиннер.\n *\n * Если вам нужен только сам спиннер без дополнительного функционала - используйте компонент Spinner.\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n */\n type: PropTypes.oneOf(types),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = globalObject.innerHeight;\n const windowWidth = globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(globalObject.document?.querySelectorAll('[origin-tabindex]') ?? []).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","_class","_Loader","_React$Component","props","_this","call","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","_getDOMRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","_globalObject$documen","_globalObject$documen2","makeUnobservable","Array","from","document","querySelectorAll","_el$getAttribute","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","_this$childrenObserve","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","Consumer","theme","renderMain","_cx","_this$props","caption","type","_extends","rootNodeRef","setRootNode","className","loader","applyZIndex","coverChildren","style","wrapperRef","children","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Loader.tsx"],"sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { SpinnerProps } from '../Spinner';\nimport { Spinner } from '../Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Loader.styles';\n\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = (typeof types)[number];\n\nexport interface LoaderProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает состояние лоадера.\n * @default false */\n active?: boolean;\n\n /** Задает подпись под спиннером.\n * @default \"Загрузка\"\n */\n caption?: SpinnerProps['caption'];\n\n /** Задает компонент, заменяющий спиннер. */\n component?: React.ReactNode;\n\n /** Задает размер спиннера и текста.\n * @default normal. */\n type?: LoaderType;\n\n /** Устанавливает время в миллисекундах для показа вуали без спиннера.\n * @default 300 */\n delayBeforeSpinnerShow?: number;\n\n /** Устанавливает минимальное время в миллисекундах для показа спиннера.\n * @default 1000. */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>\n>;\n\n/**\n * Компонент `Loader` принимает внутрь себя контент, поверх которого в активном состоянии `Loader`'а будет отрисован спиннер.\n *\n * Если вам нужен только сам спиннер без дополнительного функционала - используйте компонент Spinner.\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = globalObject.innerHeight;\n const windowWidth = globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(globalObject.document?.querySelectorAll('[origin-tabindex]') ?? []).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import type { AnyObject } from '../../lib/utils';
|
|
4
3
|
import type { SpinnerProps } from '../Spinner';
|
|
5
4
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
5
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
6
6
|
declare const types: readonly ["mini", "normal", "big"];
|
|
7
7
|
export type LoaderType = (typeof types)[number];
|
|
8
8
|
export interface LoaderProps extends CommonProps {
|
|
@@ -11,7 +11,9 @@ export interface LoaderProps extends CommonProps {
|
|
|
11
11
|
/** Задает состояние лоадера.
|
|
12
12
|
* @default false */
|
|
13
13
|
active?: boolean;
|
|
14
|
-
/** Задает подпись под спиннером.
|
|
14
|
+
/** Задает подпись под спиннером.
|
|
15
|
+
* @default "Загрузка"
|
|
16
|
+
*/
|
|
15
17
|
caption?: SpinnerProps['caption'];
|
|
16
18
|
/** Задает компонент, заменяющий спиннер. */
|
|
17
19
|
component?: React.ReactNode;
|
|
@@ -19,7 +21,7 @@ export interface LoaderProps extends CommonProps {
|
|
|
19
21
|
* @default normal. */
|
|
20
22
|
type?: LoaderType;
|
|
21
23
|
/** Устанавливает время в миллисекундах для показа вуали без спиннера.
|
|
22
|
-
* @default
|
|
24
|
+
* @default 300 */
|
|
23
25
|
delayBeforeSpinnerShow?: number;
|
|
24
26
|
/** Устанавливает минимальное время в миллисекундах для показа спиннера.
|
|
25
27
|
* @default 1000. */
|
|
@@ -46,40 +48,8 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
|
46
48
|
static displayName: string;
|
|
47
49
|
static defaultProps: DefaultProps;
|
|
48
50
|
private getProps;
|
|
49
|
-
static propTypes: {
|
|
50
|
-
/**
|
|
51
|
-
* показываем лоадер или нет
|
|
52
|
-
*/
|
|
53
|
-
active: PropTypes.Requireable<boolean>;
|
|
54
|
-
/**
|
|
55
|
-
* Текст рядом с лоадером.
|
|
56
|
-
*
|
|
57
|
-
* @default "Загрузка"
|
|
58
|
-
*/
|
|
59
|
-
caption: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
60
|
-
component: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
61
|
-
/**
|
|
62
|
-
* Класс для обертки
|
|
63
|
-
*/
|
|
64
|
-
className: PropTypes.Requireable<string>;
|
|
65
|
-
/**
|
|
66
|
-
* Тип спиннера: mini, normal, big
|
|
67
|
-
*
|
|
68
|
-
* @default normal
|
|
69
|
-
*/
|
|
70
|
-
type: PropTypes.Requireable<"big" | "normal" | "mini">;
|
|
71
|
-
/**
|
|
72
|
-
* Время в миллисекундах для показа вуали без спиннера.
|
|
73
|
-
* @default 300
|
|
74
|
-
*/
|
|
75
|
-
delayBeforeSpinnerShow: PropTypes.Requireable<number>;
|
|
76
|
-
/**
|
|
77
|
-
* Минимальное время в миллисекундах для показа спиннера
|
|
78
|
-
* @default 1000
|
|
79
|
-
*/
|
|
80
|
-
minimalDelayBeforeSpinnerHide: PropTypes.Requireable<number>;
|
|
81
|
-
};
|
|
82
51
|
private theme;
|
|
52
|
+
getRootNode: TGetRootNode;
|
|
83
53
|
private setRootNode;
|
|
84
54
|
private spinnerContainerNode;
|
|
85
55
|
private childrenContainerNode;
|
|
@@ -11,6 +11,20 @@ import { globalClasses, styles } from "../MaskedInput.styles";
|
|
|
11
11
|
import { getDefinitions, getMaskChar } from "../MaskedInput.helpers";
|
|
12
12
|
import { ColorableInputElement } from "../ColorableInputElement";
|
|
13
13
|
import { FixedIMaskInput } from "../FixedIMaskInput";
|
|
14
|
+
export var getSafeMaskInputType = function getSafeMaskInputType(type) {
|
|
15
|
+
if (!type) {
|
|
16
|
+
return type;
|
|
17
|
+
}
|
|
18
|
+
switch (type) {
|
|
19
|
+
case 'number':
|
|
20
|
+
case 'date':
|
|
21
|
+
case 'time':
|
|
22
|
+
case 'password':
|
|
23
|
+
return 'text';
|
|
24
|
+
default:
|
|
25
|
+
return type;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
14
28
|
|
|
15
29
|
/**
|
|
16
30
|
* Интерфейс пропсов наследуется от `Input`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","root","showOnFocus","onAccept","handleAccept","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","getSafeMaskInputType","type","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","root","showOnFocus","onAccept","handleAccept","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,6 +33,7 @@ export interface MaskedProps {
|
|
|
33
33
|
imaskProps?: IMaskInputProps<HTMLInputElement>;
|
|
34
34
|
}
|
|
35
35
|
export type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;
|
|
36
|
+
export declare const getSafeMaskInputType: (type?: InputType) => MaskInputType | undefined;
|
|
36
37
|
export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {
|
|
37
38
|
type?: MaskInputType;
|
|
38
39
|
}
|
|
@@ -5,7 +5,6 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
|
5
5
|
var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", "data-tid"];
|
|
6
6
|
var _class, _MenuItem;
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import PropTypes from 'prop-types';
|
|
9
8
|
import { globalObject, isBrowser } from '@skbkontur/global-object';
|
|
10
9
|
import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
|
|
11
10
|
import { scrollYCenterIntoNearestScrollable } from "../../../lib/dom/scrollYCenterIntoNearestScrollable";
|
|
@@ -294,15 +293,5 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
|
|
|
294
293
|
return this.props.state === 'selected' && !this.state.highlighted;
|
|
295
294
|
}
|
|
296
295
|
}]);
|
|
297
|
-
}(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.
|
|
298
|
-
comment: PropTypes.node,
|
|
299
|
-
disabled: PropTypes.bool,
|
|
300
|
-
href: PropTypes.string,
|
|
301
|
-
icon: PropTypes.node,
|
|
302
|
-
loose: PropTypes.bool,
|
|
303
|
-
state: PropTypes.string,
|
|
304
|
-
target: PropTypes.string,
|
|
305
|
-
onClick: PropTypes.func,
|
|
306
|
-
size: PropTypes.string
|
|
307
|
-
}, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
|
|
296
|
+
}(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
|
|
308
297
|
export var isMenuItem = isReactUIComponent('MenuItem');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PropTypes","globalObject","isBrowser","isThemeGTE","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","top","getIconSizeClassName","isThemeGTE_5_2","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","nonSelectable","activeState","Component","getComponent","_extends","rootNodeRef","setRootNode","ref","setRootRef","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","componentDidMount","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"sources":["MenuItem.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport type { Nullable } from '../../typings/utility-types';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext';\nimport { MenuContext } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Добавляет описание для элемента меню. */\n comment?: React.ReactNode;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку элементу меню. */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n * @deprecated\n */\n link?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** Задает функцию, которая вызывается при клике. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: DropdownMenu, Kebab, TooltipMenu и Select.\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\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 public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n const isThemeGTE_5_2 = isThemeGTE(this.theme, '5.2');\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.nonSelectable()]: isThemeGTE_5_2 && !!isNotSelectable,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,YAAY,EAAEC,SAAS,QAAQ,0BAA0B;;AAElE,SAASC,UAAU,QAAQ,gCAAgC;;AAE3D,SAASC,kCAAkC,QAAQ,kDAAkD;AACrG,SAASC,cAAc,EAAEC,UAAU,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ,iBAAiB;AAC/F,SAASC,YAAY,QAAQ,gCAAgC;;;AAG7D,SAASC,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,EAAE,QAAQ,2BAA2B;;AAE9C,SAASC,QAAQ,QAAQ,oBAAoB;;;AAG7C,SAASC,WAAW,QAAQ,iCAAiC;AAC7D,SAASC,4BAA4B,QAAQ,iEAAiE;;AAE9G,SAASC,MAAM,QAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwE1C,OAAO,IAAMC,gBAAgB,GAAG;EAC9BC,IAAI,EAAE,gBAAgB;EACtBC,OAAO,EAAE,mBAAmB;EAC5BC,OAAO,EAAE;AACX,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACaC,QAAQ,GADpBR,QAAQ,CAAAS,MAAA,IAAAC,SAAA,0BAAAC,gBAAA,YAAAH,SAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;IA0BAU,KAAK,GAAG;MACbC,aAAa,EAAE,CAAC;MAChBC,WAAW,EAAE;IACf,CAAC,CAAAZ,KAAA;;;IAGOa,YAAY,GAAG,KAAK,CAAAb,KAAA;;IAEpBc,OAAO,GAA0B,IAAI,CAAAd,KAAA;IACrCe,UAAU,gBAAGxC,KAAK,CAACyC,SAAS,CAAc,CAAC,CAAAhB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoD5CiB,SAAS,GAAG,YAAM;MACvBjB,KAAA,CAAKkB,QAAQ,CAAC,EAAEN,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAAZ,KAAA;;IAEMmB,WAAW,GAAG,YAAM;MACzBnB,KAAA,CAAKkB,QAAQ,CAAC,EAAEN,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAAZ,KAAA;;IAEMoB,MAAM,GAAG,UAACC,KAAwC,EAAK;MAC5DrB,KAAA,CAAKsB,WAAW,CAACD,KAAsC,CAAC;IAC1D,CAAC,CAAArB,KAAA;;IAEMuB,SAAS,GAAG,YAAM;MACvB,OAAO,CAACvB,KAAA,CAAKwB,KAAK,CAACC,QAAQ;IAC7B,CAAC,CAAAzB,KAAA;;IAEM0B,QAAQ,GAAG,YAAM;MACtB,IAAI,CAAC1B,KAAA,CAAKwB,KAAK,CAACG,IAAI,EAAE;QACpB;MACF;MACA,IAAI3B,KAAA,CAAKwB,KAAK,CAACI,MAAM,EAAE;QACrBC,MAAM,CAACC,IAAI,CAAC9B,KAAA,CAAKwB,KAAK,CAACG,IAAI,EAAE3B,KAAA,CAAKwB,KAAK,CAACI,MAAM,CAAC;MACjD,CAAC,MAAM;QACLG,QAAQ,CAACJ,IAAI,GAAG3B,KAAA,CAAKwB,KAAK,CAACG,IAAI;MACjC;IACF,CAAC,CAAA3B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCOgC,UAAU,GAAG,YAAM,KAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;MACzB,IAAAC,WAAA;;;;;;;;;;;;;;;;;;;;;;QAsBIpC,KAAA,CAAKwB,KAAK,CArBZa,IAAI,GAAAD,WAAA,CAAJC,IAAI,CACJ1C,OAAO,GAAAyC,WAAA,CAAPzC,OAAO,CACP2C,IAAI,GAAAF,WAAA,CAAJE,IAAI,CACJC,KAAK,GAAAH,WAAA,CAALG,KAAK,CACL7B,KAAK,GAAA0B,WAAA,CAAL1B,KAAK,CACL8B,IAAI,GAAAJ,WAAA,CAAJI,IAAI,CACJC,kBAAkB,GAAAL,WAAA,CAAlBK,kBAAkB,CAClBC,SAAS,GAAAN,WAAA,CAATM,SAAS,CACTC,YAAY,GAAAP,WAAA,CAAZO,YAAY,CACZC,YAAY,GAAAR,WAAA,CAAZQ,YAAY,CACZC,QAAQ,GAAAT,WAAA,CAARS,QAAQ,CACRlB,IAAI,GAAAS,WAAA,CAAJT,IAAI,CACJF,QAAQ,GAAAW,WAAA,CAARX,QAAQ,CACRqB,cAAc,GAAAV,WAAA,CAAdU,cAAc,CAAAC,eAAA,GAAAX,WAAA,CACdY,GAAG,CAAHA,GAAG,GAAAD,eAAA,cAAGpB,IAAI,IAAI9C,cAAc,CAAC8C,IAAI,CAAC,GAAG,qBAAqB,GAAG3B,KAAA,CAAKwB,KAAK,CAACwB,GAAG,GAAAD,eAAA,CAC3EE,eAAe,GAAAb,WAAA,CAAfa,eAAe,CACfC,QAAQ,GAAAd,WAAA,CAARc,QAAQ,CACGC,aAAa,GAAAf,WAAA,CAAxBgB,SAAS,CACTC,KAAK,GAAAjB,WAAA,CAALiB,KAAK,CACOC,OAAO,GAAAlB,WAAA,CAAnB,UAAU,EACPmB,IAAI,GAAAC,6BAAA,CAAApB,WAAA,EAAAqB,SAAA;;MAGT,IAAIC,WAAW,GAAG,IAAI;MACtB,IAAIpB,IAAI,EAAE,KAAAqB,GAAA;QACRD,WAAW;QACTnF,KAAA,CAAAqF,aAAA;UACEP,KAAK,EAAE,EAAEQ,GAAG,EAAE7D,KAAA,CAAKU,KAAK,CAACC,aAAa,CAAC,CAAE;UACzCyC,SAAS,EAAEjE,EAAE,EAAAwE,GAAA,OAAAA,GAAA;UACVpE,MAAM,CAAC+C,IAAI,CAAC,CAAC,IAAG,IAAI,EAAAqB,GAAA;UACpB3D,KAAA,CAAK8D,oBAAoB,CAAC,CAAC,IAAG,IAAI,EAAAH,GAAA;UACpC,CAAE;;QAEFrB;QACE,CACN;;MACH;MACA,IAAMyB,cAAc,GAAGpF,UAAU,CAACqB,KAAA,CAAKgE,KAAK,EAAE,KAAK,CAAC;;MAEpD,IAAMZ,SAAS,GAAGjE,EAAE,EAAA8C,IAAA,OAAAA,IAAA;MACjB1C,MAAM,CAACE,IAAI,CAACO,KAAA,CAAKgE,KAAK,CAAC,IAAG,IAAI,EAAA/B,IAAA;MAC9BjC,KAAA,CAAKiE,oBAAoB,CAAC,CAAC,IAAG,IAAI,EAAAhC,IAAA;MAClC1C,MAAM,CAAC2E,UAAU,CAAClE,KAAA,CAAKgE,KAAK,CAAC,IAAGnB,QAAQ,EAAAZ,IAAA;MACxC1C,MAAM,CAACgD,KAAK,CAAC,CAAC,IAAG,CAAC,CAACA,KAAK,EAAAN,IAAA;MACxB1C,MAAM,CAAC4E,KAAK,CAACnE,KAAA,CAAKgE,KAAK,CAAC,IAAGhE,KAAA,CAAKoE,OAAO,EAAAnC,IAAA;MACvC1C,MAAM,CAAC8E,QAAQ,CAACrE,KAAA,CAAKgE,KAAK,CAAC,IAAGhE,KAAA,CAAKsE,UAAU,EAAArC,IAAA;MAC7C1C,MAAM,CAAC8C,IAAI,CAACrC,KAAA,CAAKgE,KAAK,CAAC,IAAG,CAAC,CAAC3B,IAAI,EAAAJ,IAAA;MAChCjC,KAAA,CAAKuE,wBAAwB,CAAC,CAAC,IAAGC,OAAO,CAACd,WAAW,CAAC,IAAI,CAAC,CAACjB,kBAAkB,IAAIzC,KAAA,CAAKyE,OAAO,CAACC,iBAAiB,EAAAzC,IAAA;MAChH1C,MAAM,CAACoF,aAAa,CAAC,CAAC,IAAGZ,cAAc,IAAI,CAAC,CAACd,eAAe,EAAAhB,IAAA;MAC5D1C,MAAM,CAACkC,QAAQ,CAACzB,KAAA,CAAKgE,KAAK,CAAC,IAAG,CAAC,CAACvC,QAAQ,EAAAQ,IAAA;MAC1C,CAAC;;MAEF,IAAIvC,OAAO,GAAGwD,QAAQ;MACtB,IAAIpE,UAAU,CAACoE,QAAQ,CAAC,EAAE;QACxBxD,OAAO,GAAGwD,QAAQ,CAAClD,KAAA,CAAK4E,WAAW,CAAC;MACtC;;MAEA,IAAMC,SAAS,GAAG7E,KAAA,CAAK8E,YAAY,CAAC,CAAC;;MAErC;QACEvG,KAAA,CAAAqF,aAAA,CAAC1E,aAAa,EAAA6F,QAAA;UACZC,WAAW,EAAEhF,KAAA,CAAKiF,WAAY;QAC1B3F,4BAA4B,CAAC;UAC/B6E,KAAK,EAAEnE,KAAA,CAAKoE,OAAO;UACnBC,QAAQ,EAAErE,KAAA,CAAKsE;QACjB,CAAC,CAAC;QACEtE,KAAA,CAAKwB,KAAK;;QAEdjD,KAAA,CAAAqF,aAAA,CAACiB,SAAS,EAAAE,QAAA;UACRG,GAAG,EAAElF,KAAA,CAAKmF,UAAW;UACrB,YAAU3F,gBAAgB,CAACC,IAAK;QAC5B8D,IAAI;UACR9B,QAAQ,EAAEA,QAAS;UACnBf,KAAK,EAAEV,KAAA,CAAK4E,WAAY;UACxBQ,WAAW,EAAEpF,KAAA,CAAKqF,mBAAoB;UACtCzC,YAAY,EAAE5C,KAAA,CAAKsF,gBAAiB;UACpCC,OAAO,EAAEvF,KAAA,CAAKsB,WAAY;UAC1B8B,SAAS,EAAEA,SAAU;UACrBzB,IAAI,EAAEA,IAAK;UACXqB,GAAG,EAAErB,IAAI,GAAGqB,GAAG,GAAGwC,SAAU;UAC5BC,QAAQ,EAAE,CAAC,CAAE;;QAEZ/B,WAAW;QACZnF,KAAA,CAAAqF,aAAA;UACER,SAAS,EAAEjE,EAAE,EAAA+C,IAAA,OAAAA,IAAA;UACV3C,MAAM,CAACmG,qBAAqB,CAAC,CAAC,IAAG7C,QAAQ,IAAI9D,aAAa,CAACuD,IAAI,CAAC,EAAAJ,IAAA;UAClE,CAAE;UACHgD,GAAG,EAAElF,KAAA,CAAKe,UAAW;UACrB,YAAUvB,gBAAgB,CAACE,OAAQ;;QAElC,OAAOA,OAAO,KAAK,UAAU,GAAGA,OAAO,CAAC,CAAC,GAAGA;QACzC,CAAC;QACNC,OAAO;QACNpB,KAAA,CAAAqF,aAAA;UACE,YAAUpE,gBAAgB,CAACG,OAAQ;UACnCyD,SAAS,EAAEjE,EAAE,EAAAgD,IAAA,OAAAA,IAAA;UACV5C,MAAM,CAACI,OAAO,CAACK,KAAA,CAAKgE,KAAK,CAAC,IAAG,IAAI,EAAA7B,IAAA;UACjC5C,MAAM,CAACoG,YAAY,CAAC3F,KAAA,CAAKgE,KAAK,CAAC,IAAGhE,KAAA,CAAKoE,OAAO,EAAAjC,IAAA;UAChD,CAAE;;QAEFxC;QACE;;QAEE;QACE,CAAC;;IAEpB,CAAC;;;;;;;;;;;;;;IAcD;IACA;IAAAK,KAAA,CACQqF,mBAAmB,GAAG,UAACO,CAAgC,EAAK;MAClE,IAAI,CAAC5F,KAAA,CAAKa,YAAY,EAAE,KAAAgF,qBAAA;QACtB7F,KAAA,CAAKa,YAAY,GAAG,IAAI;QACxBb,KAAA,CAAKwB,KAAK,CAACmB,YAAY,YAAvB3C,KAAA,CAAKwB,KAAK,CAACmB,YAAY,CAAGiD,CAAC,CAAC;QAC5B,CAAC5F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,MAAA4C,qBAAA,GAAI7F,KAAA,CAAKyE,OAAO,CAACqB,UAAU,qBAAvBD,qBAAA,CAAyB5E,SAAS,CAAAjB,KAAK,CAAC;MACzE;IACF,CAAC,CAAAA,KAAA;;IAEOsF,gBAAgB,GAAG,UAACM,CAAgC,EAAK,KAAAG,sBAAA;MAC/D/F,KAAA,CAAKa,YAAY,GAAG,KAAK;MACzBb,KAAA,CAAKwB,KAAK,CAACoB,YAAY,YAAvB5C,KAAA,CAAKwB,KAAK,CAACoB,YAAY,CAAGgD,CAAC,CAAC;MAC5B,CAAC5F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,MAAA8C,sBAAA,GAAI/F,KAAA,CAAKyE,OAAO,CAACqB,UAAU,qBAAvBC,sBAAA,CAAyB5E,WAAW,CAAC,CAAC;IACvE,CAAC,CAAAnB,KAAA;;IAEOsB,WAAW,GAAG,UAACsE,CAAgC,EAAK;MAC1D,IAAI5F,KAAA,CAAKwB,KAAK,CAACyB,eAAe,EAAE;QAC9B;MACF;MACAjD,KAAA,CAAKwB,KAAK,CAAC+D,OAAO,YAAlBvF,KAAA,CAAKwB,KAAK,CAAC+D,OAAO,CAAGK,CAAC,CAAC;MACvB5F,KAAA,CAAKyE,OAAO,CAACuB,WAAW,YAAxBhG,KAAA,CAAKyE,OAAO,CAACuB,WAAW,CAAGJ,CAAC,CAAC;IAC/B,CAAC,CAAA5F,KAAA;;IAEOmF,UAAU,GAAG,UAACc,OAAoB,EAAK;MAC7CjG,KAAA,CAAKc,OAAO,GAAGmF,OAAO;IACxB,CAAC,CAAAjG,KAAA;;IAEO8E,YAAY,GAAG,YAAM;MAC3B,IAAAoB,YAAA,GAAsClG,KAAA,CAAKwB,KAAK,CAAxCC,QAAQ,GAAAyE,YAAA,CAARzE,QAAQ,CAAEiB,SAAS,GAAAwD,YAAA,CAATxD,SAAS,CAAEf,IAAI,GAAAuE,YAAA,CAAJvE,IAAI;;MAEjC,IAAIe,SAAS,EAAE;QACb,OAAOA,SAAS;MAClB;;MAEA,IAAIjB,QAAQ,EAAE;QACZ,OAAO,QAAQ;MACjB;;MAEA,IAAIE,IAAI,EAAE;QACR,OAAO,GAAG;MACZ;;MAEA,OAAO,QAAQ;IACjB,CAAC,CAAA3B,KAAA;;IAEOmG,iBAAiB,GAAG,YAAM,KAAAC,sBAAA;MAChC,OAAO5B,OAAO,EAAA4B,sBAAA,GAACpG,KAAA,CAAKyE,OAAO,CAACqB,UAAU,qBAAvBM,sBAAA,CAAyBC,KAAK,CAACC,IAAI,CAAC,UAACC,IAAI,UAAKA,IAAI,CAAC/E,KAAK,CAACc,IAAI,GAAC,CAAC;IAChF,CAAC,QAAAtC,KAAA,EAAAwG,cAAA,CAAA5G,QAAA,EAAAG,gBAAA,MAAA0G,MAAA,GAAA7G,QAAA,CAAA8G,SAAA,CAAAD,MAAA,CAxRME,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACErI,KAAA,CAAAqF,aAAA,CAAC3E,YAAY,CAAC4H,QAAQ,QACnB,UAAC7C,KAAK,EAAK,CACV4C,MAAI,CAAC5C,KAAK,GAAGA,KAAK,CAClB,OAAO4C,MAAI,CAAC5E,UAAU,CAAC,CAAC,CAC1B,CACqB,CAAC,CAE5B,CAAC,CAAAyE,MAAA,CAEMK,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAI,IAAI,CAACtF,KAAK,CAACsB,cAAc,IAAI,IAAI,CAAChC,OAAO,EAAE,CAC7ClC,kCAAkC,CAAC,IAAI,CAACkC,OAAO,CAAC,CAClD,CACA,IAAI,IAAI,CAACA,OAAO,IAAIpC,SAAS,CAACD,YAAY,CAAC,EAAE,CAC3C,IAAI,CAACyC,QAAQ,CAAC,EAAEP,aAAa,EAAElC,YAAY,CAACsI,gBAAgB,CAAC,IAAI,CAACjG,OAAO,CAAC,CAACkG,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/G,CACA,IAAI,IAAI,CAACjG,UAAU,CAACkG,OAAO,IAAI,CAAC,IAAI,CAACzF,KAAK,CAACyB,eAAe,EAAE,KAAAiE,sBAAA,CAC1D,CAAAA,sBAAA,OAAI,CAACzC,OAAO,CAACqB,UAAU,aAAvBoB,sBAAA,CAAyBC,GAAG,CAAC,IAAI,CAACpG,UAAU,CAACkG,OAAO,EAAE,IAAI,CAAC,CAC7D,CACA,IAAI,IAAI,CAACzF,KAAK,CAACc,IAAI,EAAE,KAAA8E,qBAAA,EAAAC,aAAA,CACnB,CAAAD,qBAAA,IAAAC,aAAA,OAAI,CAAC5C,OAAO,EAAC6C,oBAAoB,aAAjCF,qBAAA,CAAA7G,IAAA,CAAA8G,aAAA,EAAoC,IAAI,CAAC,CAC3C,CACF,CAAC,CAAAZ,MAAA,CAEMc,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,IAAI,CAACxG,UAAU,CAACkG,OAAO,EAAE,KAAAO,sBAAA,EAAAC,sBAAA,EAAAC,cAAA,CAC3B,CAAC,IAAI,CAAClG,KAAK,CAACyB,eAAe,MAAAuE,sBAAA,GAAI,IAAI,CAAC/C,OAAO,CAACqB,UAAU,qBAAvB0B,sBAAA,CAAyBG,MAAM,CAAC,IAAI,CAAC5G,UAAU,CAACkG,OAAO,CAAC,EACvF,CAAAQ,sBAAA,IAAAC,cAAA,OAAI,CAACjD,OAAO,EAAC6C,oBAAoB,aAAjCG,sBAAA,CAAAlH,IAAA,CAAAmH,cAAA,EAAoC,IAAI,CAACvB,iBAAiB,CAAC,CAAC,CAAC,CAC/D,CACF,CAAC,CAAAM,MAAA,CAEMmB,kBAAkB,GAAzB,SAAAA,mBAA0BC,SAAkC,EAAE,CAC5D,IAAIA,SAAS,CAACvF,IAAI,KAAK,IAAI,CAACd,KAAK,CAACc,IAAI,EAAE,KAAAwF,sBAAA,EAAAC,cAAA,CACtC,CAAAD,sBAAA,IAAAC,cAAA,OAAI,CAACtD,OAAO,EAAC6C,oBAAoB,aAAjCQ,sBAAA,CAAAvH,IAAA,CAAAwH,cAAA,EAAoC,CAAC,CAAC,IAAI,CAACvG,KAAK,CAACc,IAAI,IAAI,IAAI,CAAC6D,iBAAiB,CAAC,CAAC,CAAC,CACpF,CACA,IAAI,IAAI,CAACpF,UAAU,CAACkG,OAAO,IAAIY,SAAS,CAAC5E,eAAe,KAAK,IAAI,CAACzB,KAAK,CAACyB,eAAe,EAAE,CACvF,IAAI,IAAI,CAACzB,KAAK,CAACyB,eAAe,EAAE,KAAA+E,sBAAA,CAC9B,IAAI,CAAC7G,WAAW,CAAC,CAAC,CAClB,CAAA6G,sBAAA,OAAI,CAACvD,OAAO,CAACqB,UAAU,aAAvBkC,sBAAA,CAAyBL,MAAM,CAAC,IAAI,CAAC5G,UAAU,CAACkG,OAAO,CAAC,CAC1D,CAAC,MAAM,KAAAgB,sBAAA,CACL,CAAAA,sBAAA,OAAI,CAACxD,OAAO,CAACqB,UAAU,aAAvBmC,sBAAA,CAAyBd,GAAG,CAAC,IAAI,CAACpG,UAAU,CAACkG,OAAO,EAAE,IAAI,CAAC,CAC7D,CACF,CACF,CAAC,CAAAR,MAAA,CA6BOxC,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,QAAQ,IAAI,CAACzC,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAAC2I,SAAS,CAAC,IAAI,CAAClE,KAAK,CAAC,CACrC,KAAK,QAAQ,CACX,OAAOzE,MAAM,CAAC4I,UAAU,CAAC,IAAI,CAACnE,KAAK,CAAC,CACtC,KAAK,OAAO,CACZ,QACE,OAAOzE,MAAM,CAAC6I,SAAS,CAAC,IAAI,CAACpE,KAAK,CAAC,CACvC,CACF,CAAC,CAAAyC,MAAA,CAEO3C,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,QAAQ,IAAI,CAACtC,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAAC8I,SAAS,CAAC,IAAI,CAACrE,KAAK,CAAC,CACrC,KAAK,QAAQ,CACX,OAAOzE,MAAM,CAAC+I,UAAU,CAAC,IAAI,CAACtE,KAAK,CAAC,CACtC,KAAK,OAAO,CACZ,QACE,OAAOzE,MAAM,CAACgJ,SAAS,CAAC,IAAI,CAACvE,KAAK,CAAC,CACvC,CACF,CAAC,CAAAyC,MAAA,CAEOlC,wBAAwB,GAAhC,SAAAA,yBAAA,EAAmC,CACjC,QAAQ,IAAI,CAAC/C,KAAK,CAACgB,IAAI,GACrB,KAAK,OAAO,CACV,OAAOjD,MAAM,CAACiJ,aAAa,CAAC,IAAI,CAACxE,KAAK,CAAC,CACzC,KAAK,QAAQ,CACX,OAAOzE,MAAM,CAACkJ,cAAc,CAAC,IAAI,CAACzE,KAAK,CAAC,CAC1C,KAAK,OAAO,CACZ,QACE,OAAOzE,MAAM,CAACmJ,aAAa,CAAC,IAAI,CAAC1E,KAAK,CAAC,CAC3C,CACF,CAAC,QAAA2E,YAAA,CAAA/I,QAAA,KAAAgJ,GAAA,iBAAAC,GAAA,EAgHD,SAAAA,IAAA,EAA0B,CACxB,OAAO,IAAI,CAACnI,KAAK,CAACE,WAAW,GAAG,OAAO,GAAG,IAAI,CAACY,KAAK,CAACd,KAAK,CAC5D,CAAC,MAAAkI,GAAA,aAAAC,GAAA,EAED,SAAAA,IAAA,EAA+B,CAC7B,OAAO,CAAC,IAAI,CAACnI,KAAK,CAACE,WAAW,IAAI,IAAI,CAACY,KAAK,CAACd,KAAK,KAAK,OAAO,KAAK,CAAC,IAAI,CAACc,KAAK,CAACC,QAAQ,CACzF,CAAC,MAAAmH,GAAA,gBAAAC,GAAA,EAED,SAAAA,IAAA,EAAkC,CAChC,OAAO,IAAI,CAACrH,KAAK,CAACd,KAAK,KAAK,UAAU,IAAI,CAAC,IAAI,CAACA,KAAK,CAACE,WAAW,CACnE,CAAC,OA7Q2BrC,KAAK,CAACsG,SAAS,GAAA/E,SAAA,CAC7BgJ,mBAAmB,GAAG,UAAU,EAAAhJ,SAAA,CAChCiJ,WAAW,GAAG,UAAU,EAAAjJ,SAAA,CACxBkJ,aAAa,GAAG,IAAI,EAAAlJ,SAAA,CAEpBmJ,SAAS,GAAG,EACxBtJ,OAAO,EAAEnB,SAAS,CAAC0K,IAAI,EAEvBzH,QAAQ,EAAEjD,SAAS,CAAC2K,IAAI,EAExBxH,IAAI,EAAEnD,SAAS,CAAC4K,MAAM,EAEtB9G,IAAI,EAAE9D,SAAS,CAAC0K,IAAI,EAEpB3G,KAAK,EAAE/D,SAAS,CAAC2K,IAAI,EAErBzI,KAAK,EAAElC,SAAS,CAAC4K,MAAM,EAEvBxH,MAAM,EAAEpD,SAAS,CAAC4K,MAAM,EAExB7D,OAAO,EAAE/G,SAAS,CAAC6K,IAAI,EAEvB7G,IAAI,EAAEhE,SAAS,CAAC4K,MAAM,CACxB,CAAC,EAAAtJ,SAAA,CAYMwJ,WAAW,GAAGjK,WAAW,EAAAS,SAAA,MAAAD,MAAA;;;AA+RlC,OAAO,IAAM0J,UAAU,GAAGvK,kBAAkB,CAAC,UAAU,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","isBrowser","isThemeGTE","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","top","getIconSizeClassName","isThemeGTE_5_2","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","nonSelectable","activeState","Component","getComponent","_extends","rootNodeRef","setRootNode","ref","setRootRef","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","componentDidMount","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","contextType","isMenuItem"],"sources":["MenuItem.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport type { Nullable } from '../../typings/utility-types';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext';\nimport { MenuContext } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Добавляет описание для элемента меню. */\n comment?: React.ReactNode;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку элементу меню. */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n * @deprecated\n */\n link?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** Задает функцию, которая вызывается при клике. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: DropdownMenu, Kebab, TooltipMenu и Select.\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\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 public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n const isThemeGTE_5_2 = isThemeGTE(this.theme, '5.2');\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.nonSelectable()]: isThemeGTE_5_2 && !!isNotSelectable,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AriaAttributes, HTMLAttributes } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import PropTypes from 'prop-types';
|
|
4
3
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
4
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
5
5
|
import type { SizeProp } from '../../lib/types/props';
|
|
6
6
|
import type { MenuContextType } from '../../internal/Menu/MenuContext';
|
|
7
7
|
export type MenuItemState = null | 'hover' | 'selected' | void;
|
|
@@ -66,23 +66,13 @@ export declare class MenuItem extends React.Component<MenuItemProps> {
|
|
|
66
66
|
static __KONTUR_REACT_UI__: string;
|
|
67
67
|
static displayName: string;
|
|
68
68
|
static __MENU_ITEM__: boolean;
|
|
69
|
-
static propTypes: {
|
|
70
|
-
comment: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
71
|
-
disabled: PropTypes.Requireable<boolean>;
|
|
72
|
-
href: PropTypes.Requireable<string>;
|
|
73
|
-
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
74
|
-
loose: PropTypes.Requireable<boolean>;
|
|
75
|
-
state: PropTypes.Requireable<string>;
|
|
76
|
-
target: PropTypes.Requireable<string>;
|
|
77
|
-
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
78
|
-
size: PropTypes.Requireable<string>;
|
|
79
|
-
};
|
|
80
69
|
state: {
|
|
81
70
|
iconOffsetTop: number;
|
|
82
71
|
highlighted: boolean;
|
|
83
72
|
};
|
|
84
73
|
private theme;
|
|
85
74
|
private mouseEntered;
|
|
75
|
+
getRootNode: TGetRootNode;
|
|
86
76
|
private setRootNode;
|
|
87
77
|
private rootRef;
|
|
88
78
|
private contentRef;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
3
3
|
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
4
4
|
import { globalClasses as buttonGlobalClasses } from "../../Button/Button.styles";
|
|
5
5
|
export var styles = memoizeStyle({
|
|
@@ -9,22 +9,25 @@ export var styles = memoizeStyle({
|
|
|
9
9
|
description: function description() {
|
|
10
10
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n text-align: center;\n "])));
|
|
11
11
|
},
|
|
12
|
+
description5_3: function description5_3(t) {
|
|
13
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n "])), t.miniModalDescriptionFontSize, t.miniModalDescriptionLineHeight);
|
|
14
|
+
},
|
|
12
15
|
title: function title() {
|
|
13
|
-
return css(
|
|
16
|
+
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n text-align: center;\n "])));
|
|
14
17
|
},
|
|
15
18
|
titleWithIcon: function titleWithIcon(t) {
|
|
16
|
-
return css(
|
|
19
|
+
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n margin-top: ", ";\n "])), t.miniModalTitleMarginTop);
|
|
17
20
|
},
|
|
18
21
|
actions: function actions() {
|
|
19
|
-
return css(
|
|
22
|
+
return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: stretch;\n text-align: center;\n\n .", " {\n width: 100%;\n }\n "])), buttonGlobalClasses.root);
|
|
20
23
|
},
|
|
21
24
|
actionsIndent: function actionsIndent(t) {
|
|
22
|
-
return css(
|
|
25
|
+
return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n padding: ", " 0;\n "])), t.miniModalCancelIndent);
|
|
23
26
|
},
|
|
24
27
|
actionsRow: function actionsRow(t) {
|
|
25
|
-
return css(
|
|
28
|
+
return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n flex-direction: row;\n > *:nth-of-type(1) {\n margin-right: calc(", " / 2);\n }\n > *:nth-of-type(2) {\n margin-left: calc(", " / 2);\n }\n "])), t.miniModalActionGap, t.miniModalActionGap);
|
|
26
29
|
},
|
|
27
30
|
actionsColumn: function actionsColumn(t) {
|
|
28
|
-
return css(
|
|
31
|
+
return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n > *:nth-of-type(2) {\n margin-top: ", ";\n }\n > *:nth-of-type(3) {\n margin-top: ", ";\n }\n "])), t.miniModalActionGap, t.miniModalActionGap);
|
|
29
32
|
}
|
|
30
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["css","memoizeStyle","globalClasses","buttonGlobalClasses","styles","icon","_templateObject","_taggedTemplateLiteralLoose","description","_templateObject2","
|
|
1
|
+
{"version":3,"names":["css","memoizeStyle","globalClasses","buttonGlobalClasses","styles","icon","_templateObject","_taggedTemplateLiteralLoose","description","_templateObject2","description5_3","t","_templateObject3","miniModalDescriptionFontSize","miniModalDescriptionLineHeight","title","_templateObject4","titleWithIcon","_templateObject5","miniModalTitleMarginTop","actions","_templateObject6","root","actionsIndent","_templateObject7","miniModalCancelIndent","actionsRow","_templateObject8","miniModalActionGap","actionsColumn","_templateObject9"],"sources":["MiniModal.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { globalClasses as buttonGlobalClasses } from '../Button/Button.styles';\n\nexport const styles = memoizeStyle({\n icon() {\n return css`\n text-align: center;\n `;\n },\n\n description() {\n return css`\n text-align: center;\n `;\n },\n\n description5_3(t: Theme) {\n return css`\n font-size: ${t.miniModalDescriptionFontSize};\n line-height: ${t.miniModalDescriptionLineHeight};\n `;\n },\n\n title() {\n return css`\n text-align: center;\n `;\n },\n\n titleWithIcon(t: Theme) {\n return css`\n margin-top: ${t.miniModalTitleMarginTop};\n `;\n },\n\n actions() {\n return css`\n display: flex;\n justify-content: stretch;\n text-align: center;\n\n .${buttonGlobalClasses.root} {\n width: 100%;\n }\n `;\n },\n\n actionsIndent(t: Theme) {\n return css`\n padding: ${t.miniModalCancelIndent} 0;\n `;\n },\n\n actionsRow(t: Theme) {\n return css`\n flex-direction: row;\n > *:nth-of-type(1) {\n margin-right: calc(${t.miniModalActionGap} / 2);\n }\n > *:nth-of-type(2) {\n margin-left: calc(${t.miniModalActionGap} / 2);\n }\n `;\n },\n\n actionsColumn(t: Theme) {\n return css`\n flex-direction: column;\n > *:nth-of-type(2) {\n margin-top: ${t.miniModalActionGap};\n }\n > *:nth-of-type(3) {\n margin-top: ${t.miniModalActionGap};\n }\n `;\n },\n});\n"],"mappings":"oQAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,SAASC,aAAa,IAAIC,mBAAmB,QAAQ,yBAAyB;;AAE9E,OAAO,IAAMC,MAAM,GAAGH,YAAY,CAAC;EACjCI,IAAI,WAAAA,KAAA,EAAG;IACL,OAAOL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;EAGZ,CAAC;;EAEDC,WAAW,WAAAA,YAAA,EAAG;IACZ,OAAOR,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAF,2BAAA;;;EAGZ,CAAC;;EAEDG,cAAc,WAAAA,eAACC,CAAQ,EAAE;IACvB,OAAOX,GAAG,CAAAY,gBAAA,KAAAA,gBAAA,GAAAL,2BAAA;IACKI,CAAC,CAACE,4BAA4B;IAC5BF,CAAC,CAACG,8BAA8B;;EAEnD,CAAC;;EAEDC,KAAK,WAAAA,MAAA,EAAG;IACN,OAAOf,GAAG,CAAAgB,gBAAA,KAAAA,gBAAA,GAAAT,2BAAA;;;EAGZ,CAAC;;EAEDU,aAAa,WAAAA,cAACN,CAAQ,EAAE;IACtB,OAAOX,GAAG,CAAAkB,gBAAA,KAAAA,gBAAA,GAAAX,2BAAA;IACMI,CAAC,CAACQ,uBAAuB;;EAE3C,CAAC;;EAEDC,OAAO,WAAAA,QAAA,EAAG;IACR,OAAOpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAd,2BAAA;;;;;IAKLJ,mBAAmB,CAACmB,IAAI;;;;EAI/B,CAAC;;EAEDC,aAAa,WAAAA,cAACZ,CAAQ,EAAE;IACtB,OAAOX,GAAG,CAAAwB,gBAAA,KAAAA,gBAAA,GAAAjB,2BAAA;IACGI,CAAC,CAACc,qBAAqB;;EAEtC,CAAC;;EAEDC,UAAU,WAAAA,WAACf,CAAQ,EAAE;IACnB,OAAOX,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAApB,2BAAA;;;IAGeI,CAAC,CAACiB,kBAAkB;;;IAGrBjB,CAAC,CAACiB,kBAAkB;;;EAG9C,CAAC;;EAEDC,aAAa,WAAAA,cAAClB,CAAQ,EAAE;IACtB,OAAOX,GAAG,CAAA8B,gBAAA,KAAAA,gBAAA,GAAAvB,2BAAA;;;IAGQI,CAAC,CAACiB,kBAAkB;;;IAGpBjB,CAAC,CAACiB,kBAAkB;;;EAGxC;AACF,CAAC,CAAC","ignoreList":[]}
|