@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","_interopRequireDefault","require","_propTypes","_reactIs","_globalObject","_utils","_identifiers","LayoutEvents","_interopRequireWildcard","_keyListener","_PopupMenu","_ThemeContext","_currentEnvironment","_ThemeFactory","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_getVisualStateDataAttributes","_Kebab2","_KebabIcon","_class","_Kebab","KebabDataTids","exports","caption","Kebab","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","_this$getProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","default","createElement","role","tabIndex","onClick","onKeyDown","onFocus","handleFocus","onBlur","handleBlur","className","cx","styles","kebab","theme","kebabSmall","kebabMedium","kebabLarge","opened","focused","props","renderIcon","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","globalObject","requestAnimationFrame","keyListener","isTabPressed","_inheritsLoose2","_proto","prototype","componentDidMount","addListener","componentWillUnmount","render","_this2","ThemeContext","Consumer","Provider","value","ThemeFactory","create","popupMargin","kebabMargin","renderMain","_this$getProps2","positions","disableAnimations","onOpen","onClose","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","PopupMenu","id","popupHasPin","preventIconsOffset","onChangeMenuState","menuMaxHeight","popupMenuId","children","_this$getProps3","_this$getProps3$icon","icon","KebabIcon","isElement","isKonturIcon","_icon$props$size","_icon$props$color","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","React","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","propTypes","isTestEnv","PropTypes","node","bool","oneOfType","string","number","func"],"sources":["Kebab.tsx"],"sourcesContent":["import type { AriaAttributes, ReactElement, HTMLAttributes } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { PopupMenu } from '../../internal/PopupMenu';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\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 { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Определяет список позиций, доступных для расположения выпадашки относительно `kebab`.\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n * @default ['bottom left', 'bottom right', 'top left', 'top right']. */\n positions?: PopupPositionsType[];\n positions2?: string;\n\n /** Задает максимальную высоту меню. */\n menuMaxHeight?: number | string;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Добавляет иконку слева. */\n icon?: React.ReactNode;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\n\n/**\n * Кебаб-меню `Kebab` содержит действия с объектом.\n */\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.kebabMargin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <PopupMenu\n id={this.props.id}\n popupHasPin={false}\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx(\n styles.kebab(this.theme),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon as ReactElement)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon as ReactElement, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"],"mappings":";AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAC,uBAAA,CAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;;AAEA,IAAAS,UAAA,GAAAT,OAAA;;;AAGA,IAAAU,aAAA,GAAAV,OAAA;;AAEA,IAAAW,mBAAA,GAAAX,OAAA;AACA,IAAAY,aAAA,GAAAZ,OAAA;;AAEA,IAAAa,cAAA,GAAAb,OAAA;AACA,IAAAc,QAAA,GAAAd,OAAA;;AAEA,IAAAe,SAAA,GAAAf,OAAA;AACA,IAAAgB,kBAAA,GAAAhB,OAAA;;AAEA,IAAAiB,6BAAA,GAAAjB,OAAA;;AAEA,IAAAkB,OAAA,GAAAlB,OAAA;AACA,IAAAmB,UAAA,GAAAnB,OAAA,gBAAwC,IAAAoB,MAAA,EAAAC,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCjC,IAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3BE,OAAO,EAAE;AACX,CAAU;;;;;;;;;AASV;AACA;AACA,GAFA;;AAIaC,KAAK,GAAAF,OAAA,CAAAE,KAAA,OADjBC,kBAAQ,EAAAN,MAAA,IAAAC,MAAA,0BAAAM,gBAAA,YAAAF,MAAA,OAAAG,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;;;;;;;;;;;;;;IAeCU,QAAQ,GAAG,IAAAC,oCAAiB,EAACd,KAAK,CAACe,YAAY,CAAC,CAAAZ,KAAA;;IAEjDa,KAAK,GAAe;MACzBC,YAAY,EAAE,KAAK;MACnBC,MAAM,EAAE;IACV,CAAC,CAAAf,KAAA;;;;;IAKOgB,QAAQ;;IAEZ;MACFC,MAAM,EAAE,SAAAA,OAAA,UAAMC,SAAS;IACzB,CAAC,CAAAlB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DOmB,aAAa,GAAG,UAACC,YAAmC,EAAK;MAC/D,IAAAC,cAAA,GAA2BrB,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAAlCY,QAAQ,GAAAD,cAAA,CAARC,QAAQ,CAAEC,IAAI,GAAAF,cAAA,CAAJE,IAAI;MACtB,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,KAA0C,EAAK;QAC3E,IAAI,CAACH,QAAQ,EAAE;UACbtB,KAAA,CAAKwB,oBAAoB,CAACC,KAAK,EAAEL,YAAY,CAACM,QAAQ,CAAC;QACzD;MACF,CAAC;;MAED,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;QAC/B,IAAI,CAACL,QAAQ,EAAE;UACbF,YAAY,CAACQ,UAAU,CAAC,CAAC;QAC3B;MACF,CAAC;;MAED;QACE1D,MAAA,CAAA2D,OAAA,CAAAC,aAAA;UACEC,IAAI,EAAC,QAAQ;UACb,YAAUrC,aAAa,CAACE,OAAQ;UAChCoC,QAAQ,EAAEV,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;UAC5BW,OAAO,EAAEN,kBAAmB;UAC5BO,SAAS,EAAEV,oBAAqB;UAChCW,OAAO,EAAEnC,KAAA,CAAKoC,WAAY;UAC1BC,MAAM,EAAErC,KAAA,CAAKsC,UAAW;UACxBC,SAAS,EAAE,IAAAC,WAAE;YACXC,cAAM,CAACC,KAAK,CAAC1C,KAAA,CAAK2C,KAAK,CAAC;YACxBpB,IAAI,KAAK,OAAO,IAAIkB,cAAM,CAACG,UAAU,CAAC5C,KAAA,CAAK2C,KAAK,CAAC;YACjDpB,IAAI,KAAK,QAAQ,IAAIkB,cAAM,CAACI,WAAW,CAAC7C,KAAA,CAAK2C,KAAK,CAAC;YACnDpB,IAAI,KAAK,OAAO,IAAIkB,cAAM,CAACK,UAAU,CAAC9C,KAAA,CAAK2C,KAAK,CAAC;YACjDvB,YAAY,CAAC2B,MAAM,IAAIN,cAAM,CAACM,MAAM,CAAC/C,KAAA,CAAK2C,KAAK,CAAC;YAChDrB,QAAQ,IAAImB,cAAM,CAACnB,QAAQ,CAAC,CAAC;YAC7BtB,KAAA,CAAKa,KAAK,CAACC,YAAY,IAAI2B,cAAM,CAACO,OAAO,CAAChD,KAAA,CAAK2C,KAAK;UACtD,CAAE;UACF,oBAAkB3C,KAAA,CAAKiD,KAAK,CAAC,kBAAkB,CAAE;;QAEhDjD,KAAA,CAAKkD,UAAU,CAAC;QACb,CAAC;;IAEX,CAAC,CAAAlD,KAAA;;IAEOwB,oBAAoB,GAAG;IAC7B2B,CAAsC;IACtCzB,QAA2C;IACxC;MACH,IAAI,IAAA0B,qBAAQ,EAACC,uBAAU,EAAEC,uBAAU,EAAEC,+BAAkB,CAAC,CAACJ,CAAC,CAAC,EAAE;QAC3DA,CAAC,CAACK,cAAc,CAAC,CAAC;QAClB9B,QAAQ,CAAC,IAAI,CAAC;MAChB;IACF,CAAC,CAAA1B,KAAA;;IAEOyD,qBAAqB,GAAG,UAACC,QAAiB,EAAEC,YAAqB,EAAW;MAClF3D,KAAA,CAAK4D,QAAQ,CAAC;QACZ9C,YAAY,EAAE,CAAC4C,QAAQ,IAAIC;MAC7B,CAAC,CAAC;IACJ,CAAC,CAAA3D,KAAA;;IAEOoC,WAAW,GAAG,YAAM;MAC1B,IAAI,CAACpC,KAAA,CAAKiD,KAAK,CAAC3B,QAAQ,EAAE;QACxB;QACA;QACAuC,0BAAY,CAACC,qBAAqB,YAAlCD,0BAAY,CAACC,qBAAqB,CAAG,YAAM;UACzC,IAAIC,wBAAW,CAACC,YAAY,EAAE;YAC5BhE,KAAA,CAAK4D,QAAQ,CAAC,EAAE9C,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;UACvC;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAAd,KAAA;;IAEOsC,UAAU,GAAG,YAAM;MACzBtC,KAAA,CAAK4D,QAAQ,CAAC;QACZ9C,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ,CAAC,QAAAd,KAAA,MAAAiE,eAAA,CAAApC,OAAA,EAAAhC,KAAA,EAAAE,gBAAA,MAAAmE,MAAA,GAAArE,KAAA,CAAAsE,SAAA,CAAAD,MAAA,CA/HME,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,4CACA,IAAI,CAACpD,QAAQ,GAAGtC,YAAY,CAAC2F,WAAW,CAAC,oBAAMnD,SAAS,GAAC,CAC3D,CAAC,CAAAgD,MAAA,CAEMI,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,CAACtD,QAAQ,CAACC,MAAM,CAAC,CAAC,CACxB,CAAC,CAAAiD,MAAA,CAEMK,MAAM,GAAb,SAAAA,OAAA,EAA6B,KAAAC,MAAA,QAC3B,oBACEtG,MAAA,CAAA2D,OAAA,CAAAC,aAAA,CAAChD,aAAA,CAAA2F,YAAY,CAACC,QAAQ,QACnB,UAAC/B,KAAK,EAAK,CACV6B,MAAI,CAAC7B,KAAK,GAAGA,KAAK,CAClB,oBACEzE,MAAA,CAAA2D,OAAA,CAAAC,aAAA,CAAChD,aAAA,CAAA2F,YAAY,CAACE,QAAQ,IACpBC,KAAK,EAAEC,0BAAY,CAACC,MAAM,CACxB,EACEC,WAAW,EAAEpC,KAAK,CAACqC,WAAW,CAChC,CAAC,EACDrC,KACF,CAAE,IAED6B,MAAI,CAACS,UAAU,CAAC,CACI,CAAC,CAE5B,CACqB,CAAC,CAE5B,CAAC,CAAAf,MAAA,CAEOe,UAAU,GAAlB,SAAAA,WAAA,EAAqB,CACnB,IAAQ3D,QAAQ,GAAK,IAAI,CAAC2B,KAAK,CAAvB3B,QAAQ,CAChB,IAAA4D,eAAA,GAA0D,IAAI,CAACxE,QAAQ,CAAC,CAAC,CAAjEyE,SAAS,GAAAD,eAAA,CAATC,SAAS,CAAEC,iBAAiB,GAAAF,eAAA,CAAjBE,iBAAiB,CAAEC,MAAM,GAAAH,eAAA,CAANG,MAAM,CAAEC,OAAO,GAAAJ,eAAA,CAAPI,OAAO,CACrD,oBACEpH,MAAA,CAAA2D,OAAA,CAAAC,aAAA,CAAC7C,cAAA,CAAAsG,aAAa,MAAAC,SAAA,CAAA3D,OAAA,IAAC4D,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAACzC,KAAK,EAAM,IAAA0C,0DAA4B,EAAC,EAAErE,QAAQ,EAARA,QAAQ,CAAC,CAAC,CAAC,gBAC1GpD,MAAA,CAAA2D,OAAA,CAAAC,aAAA,CAACjD,UAAA,CAAA+G,SAAS,IACRC,EAAE,EAAE,IAAI,CAAC5C,KAAK,CAAC4C,EAAG,EAClBC,WAAW,EAAE,KAAM,EACnBC,kBAAkB,EAAE,IAAI,CAAC9C,KAAK,CAAC8C,kBAAmB,EAClDZ,SAAS,EAAEA,SAAU,EACrBa,iBAAiB,EAAE,IAAI,CAACvC,qBAAsB,EAC9C7D,OAAO,EAAE,IAAI,CAACuB,aAAc,EAC5BiE,iBAAiB,EAAEA,iBAAkB,EACrCa,aAAa,EAAE,IAAI,CAAChD,KAAK,CAACgD,aAAc,EACxCZ,MAAM,EAAEA,MAAO,EACfC,OAAO,EAAEA,OAAQ,EACjBY,WAAW,EAAE,IAAI,CAACjD,KAAK,CAACiD,WAAY,EACpC,cAAY,IAAI,CAACjD,KAAK,CAAC,YAAY,CAAE,IAEpC,CAAC3B,QAAQ,IAAI,IAAI,CAAC2B,KAAK,CAACkD,QAChB,CACE,CAAC,CAEpB,CAAC,CAAAjC,MAAA;;EA2EOhB,UAAU,GAAlB,SAAAA,WAAA,EAAqB;IACnB,IAAAkD,eAAA,GAAuC,IAAI,CAAC1F,QAAQ,CAAC,CAAC,CAA9Ca,IAAI,GAAA6E,eAAA,CAAJ7E,IAAI,CAAA8E,oBAAA,GAAAD,eAAA,CAAEE,IAAI,CAAJA,IAAI,GAAAD,oBAAA,2BAAGnI,MAAA,CAAA2D,OAAA,CAAAC,aAAA,CAACvC,UAAA,CAAAgH,SAAS,MAAE,CAAC,GAAAF,oBAAA;;IAElC,IAAI,IAAAG,kBAAS,EAACF,IAAI,CAAC,IAAI,IAAAG,mBAAY,EAACH,IAAoB,CAAC,EAAE,KAAAI,gBAAA,EAAAC,iBAAA;MACzD,IAAMC,KAA+B,GAAG;QACtCC,KAAK,EAAEC,QAAQ,CAAC,IAAI,CAACnE,KAAK,CAACoE,kBAAkB,CAAC;QAC9CC,MAAM,EAAEF,QAAQ,CAAC,IAAI,CAACnE,KAAK,CAACsE,mBAAmB,CAAC;QAChDC,KAAK,EAAEJ,QAAQ,CAAC,IAAI,CAACnE,KAAK,CAACwE,kBAAkB;MAC/C,CAAC;;MAED,oBAAOC,cAAK,CAACC,YAAY,CAACf,IAAI,EAAkB;QAC9C/E,IAAI,GAAAmF,gBAAA,GAAEJ,IAAI,CAACrD,KAAK,CAAC1B,IAAI,YAAAmF,gBAAA,GAAIE,KAAK,CAACrF,IAAI,CAAC;QACpC+F,KAAK,GAAAX,iBAAA,GAAEL,IAAI,CAACrD,KAAK,CAACqE,KAAK,YAAAX,iBAAA,GAAI,IAAI,CAAChE,KAAK,CAAC4E;MACxC,CAAC,CAAC;IACJ;;IAEA,OAAOjB,IAAI;EACb,CAAC,QAAAzG,KAAA,GAhLwBuH,cAAK,CAACI,SAAS,GAAA/H,MAAA,CAC1BgI,mBAAmB,GAAG,OAAO,EAAAhI,MAAA,CAC7BiI,WAAW,GAAG,OAAO,EAAAjI,MAAA,CAErBkI,SAAS,GAAG,CAAC,CAAC,EAAAlI,MAAA,CAEdmB,YAAY,GAAiB,EACzCyE,MAAM,EAAE,SAAAA,OAAA,UAAMnE,SAAS,IACvBoE,OAAO,EAAE,SAAAA,QAAA,UAAMpE,SAAS,IACxBiE,SAAS,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,CAAC,EACnE5D,IAAI,EAAE,OAAO,EACb6D,iBAAiB,EAAEwC,6BAAS,CAC9B,CAAC,EAAAnI,MAAA,MAAAD,MAAA;;;AAuKHK,KAAK,CAAC8H,SAAS,GAAG;EAChBxB,QAAQ,EAAE0B,kBAAS,CAACC,IAAI;EACxBxG,QAAQ,EAAEuG,kBAAS,CAACE,IAAI;EACxB9B,aAAa,EAAE4B,kBAAS,CAACG,SAAS,CAAC,CAACH,kBAAS,CAACI,MAAM,EAAEJ,kBAAS,CAACK,MAAM,CAAC,CAAC;;EAExE;AACF;AACA;EACE3G,IAAI,EAAEsG,kBAAS,CAACI,MAAM;;EAEtB;AACF;AACA;EACE3C,OAAO,EAAEuC,kBAAS,CAACM,IAAI;;EAEvB;AACF;AACA;EACE9C,MAAM,EAAEwC,kBAAS,CAACM;AACpB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactIs","_globalObject","_utils","_identifiers","LayoutEvents","_interopRequireWildcard","_keyListener","_PopupMenu","_ThemeContext","_currentEnvironment","_ThemeFactory","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_getVisualStateDataAttributes","_Kebab2","_KebabIcon","_class","_Kebab","KebabDataTids","exports","caption","Kebab","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","_this$getProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","default","createElement","role","tabIndex","onClick","onKeyDown","onFocus","handleFocus","onBlur","handleBlur","className","cx","styles","kebab","theme","kebabSmall","kebabMedium","kebabLarge","opened","focused","props","renderIcon","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","globalObject","requestAnimationFrame","keyListener","isTabPressed","_inheritsLoose2","_proto","prototype","componentDidMount","addListener","componentWillUnmount","render","_this2","ThemeContext","Consumer","Provider","value","ThemeFactory","create","popupMargin","kebabMargin","renderMain","_this$getProps2","positions","disableAnimations","onOpen","onClose","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","PopupMenu","id","popupHasPin","preventIconsOffset","onChangeMenuState","menuMaxHeight","popupMenuId","children","_this$getProps3","_this$getProps3$icon","icon","KebabIcon","isElement","isKonturIcon","_icon$props$size","_icon$props$color","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","React","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"sources":["Kebab.tsx"],"sourcesContent":["import type { AriaAttributes, ReactElement, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { PopupMenu } from '../../internal/PopupMenu';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\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 { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Определяет список позиций, доступных для расположения выпадашки относительно `kebab`.\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n * @default ['bottom left', 'bottom right', 'top left', 'top right']. */\n positions?: PopupPositionsType[];\n positions2?: string;\n\n /** Задает максимальную высоту меню. */\n menuMaxHeight?: number | string;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Добавляет иконку слева. */\n icon?: React.ReactNode;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\n\n/**\n * Кебаб-меню `Kebab` содержит действия с объектом.\n */\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = 'Kebab';\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.kebabMargin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <PopupMenu\n id={this.props.id}\n popupHasPin={false}\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx(\n styles.kebab(this.theme),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon as ReactElement)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon as ReactElement, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ import type { ButtonLinkAllowedValues } from '../../lib/types/button-link';
|
|
|
3
3
|
import type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';
|
|
4
4
|
import type { ThemeIn } from '../../lib/theming/Theme';
|
|
5
5
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
6
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
6
7
|
export interface LinkInnerProps extends CommonProps {
|
|
7
8
|
/** Делает компонент недоступным. */
|
|
8
9
|
disabled?: boolean;
|
|
@@ -49,6 +50,7 @@ export declare class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAUL
|
|
|
49
50
|
private getProps;
|
|
50
51
|
state: LinkState;
|
|
51
52
|
private theme;
|
|
53
|
+
getRootNode: TGetRootNode;
|
|
52
54
|
private setRootNode;
|
|
53
55
|
render(): JSX.Element;
|
|
54
56
|
private getTabIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_Mixins","_keyListener","_ThemeContext","_utils","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_ThemeFactory","_getVisualStateDataAttributes","_Link2","_LinkIcon","_excluded","_class","_Link","LINK_DEFAULT_COMPONENT","LinkDataTids","exports","root","Link","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","isExternalLink","undefined","renderMain","_cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose2","default","arrow","createElement","className","styles","isFocused","leftIconElement","LinkIcon","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends2","cx","resetButton","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","getVisualStateDataAttributes","children","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","ThemeFactory","create","CommonWrapper","rootNodeRef","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Link.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link';\nimport { resetButton } from '../../lib/styles/Mixins';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport type { CommonProps, CommonWrapperRestProps } 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 { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkInnerProps extends CommonProps {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку слева. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа. */\n rightIcon?: React.ReactElement;\n\n /** Задает тему ссылки. */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n\n /** @ignore */\n _button?: boolean;\n\n /** @ignore */\n _buttonOpened?: boolean;\n\n /** Задает HTML-атрибут `tabindex`. */\n tabIndex?: number;\n\n /** Переводит кнопку в состояние загрузки. */\n loading?: boolean;\n\n /** Задает объект с переменными темы. Он будет объединён с темой из контекста. */\n theme?: ThemeIn;\n\n /** Задает состояние фокуса.\n * @ignore */\n focused?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n}\n\nconst LINK_DEFAULT_COMPONENT = 'a';\n\nexport type LinkProps<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> = PolymorphicPropsWithoutRef<\n LinkInnerProps,\n C\n>;\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps<ButtonLinkAllowedValues>, 'use' | 'component'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps<ButtonLinkAllowedValues>, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> extends React.Component<\n LinkProps<C>,\n LinkState\n> {\n public static __KONTUR_REACT_UI__ = 'Link';\n public static displayName = 'Link';\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n component: LINK_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getTabIndex = ({\n nonInteractive,\n tabIndex = 0,\n }: {\n nonInteractive: boolean | undefined;\n tabIndex: number | undefined;\n }) => {\n return nonInteractive ? -1 : tabIndex;\n };\n\n private getRel = () => {\n if (isAnchorProps(this.props)) {\n const { rel, href } = this.props;\n if (!rel && href) {\n return `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n return rel;\n }\n\n return undefined;\n };\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n component: Root,\n focused = false,\n error,\n warning,\n tabIndex,\n theme,\n ...rest\n } = props;\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n const nonInteractive = disabled || loading;\n const getUseStyles = () => {\n switch (use) {\n case 'default':\n return styles.default(this.theme);\n case 'danger':\n return styles.danger(this.theme);\n case 'success':\n return styles.success(this.theme);\n case 'grayed':\n return styles.grayed(this.theme);\n }\n };\n const getUseLineFocusStyles = () => {\n switch (use) {\n case 'default':\n return styles.lineFocus(this.theme);\n case 'danger':\n return styles.lineFocusDanger(this.theme);\n case 'success':\n return styles.lineFocusSuccess(this.theme);\n case 'grayed':\n return styles.lineFocusGrayed(this.theme);\n }\n };\n const rootProps = {\n ...rest,\n className: cx({\n [styles.root(this.theme)]: true,\n [resetButton()]: Root === 'button',\n [styles.focus(this.theme)]: isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [getUseStyles()]: true,\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [getUseLineFocusStyles()]: isFocused,\n }),\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ nonInteractive, tabIndex }),\n rel: this.getRel(),\n };\n\n return (\n <Root data-tid={LinkDataTids.root} {...rootProps} {...getVisualStateDataAttributes({ disabled })}>\n {leftIconElement}\n {this.props.children}\n {rightIconElement}\n {arrow}\n </Root>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent) => {\n const { onClick, disabled, loading } = this.props;\n\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n\nconst isAnchorProps = (props: LinkProps<any>): props is LinkProps<'a'> => {\n return props.component === 'a';\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_Mixins","_keyListener","_ThemeContext","_utils","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_ThemeFactory","_getVisualStateDataAttributes","_Link2","_LinkIcon","_excluded","_class","_Link","LINK_DEFAULT_COMPONENT","LinkDataTids","exports","root","Link","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","isExternalLink","undefined","renderMain","_cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose2","default","arrow","createElement","className","styles","isFocused","leftIconElement","LinkIcon","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends2","cx","resetButton","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","getVisualStateDataAttributes","children","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","ThemeFactory","create","CommonWrapper","rootNodeRef","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Link.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link';\nimport { resetButton } from '../../lib/styles/Mixins';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport type { CommonProps, CommonWrapperRestProps } 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 { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkInnerProps extends CommonProps {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Добавляет иконку слева. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа. */\n rightIcon?: React.ReactElement;\n\n /** Задает тему ссылки. */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n\n /** @ignore */\n _button?: boolean;\n\n /** @ignore */\n _buttonOpened?: boolean;\n\n /** Задает HTML-атрибут `tabindex`. */\n tabIndex?: number;\n\n /** Переводит кнопку в состояние загрузки. */\n loading?: boolean;\n\n /** Задает объект с переменными темы. Он будет объединён с темой из контекста. */\n theme?: ThemeIn;\n\n /** Задает состояние фокуса.\n * @ignore */\n focused?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n}\n\nconst LINK_DEFAULT_COMPONENT = 'a';\n\nexport type LinkProps<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> = PolymorphicPropsWithoutRef<\n LinkInnerProps,\n C\n>;\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps<ButtonLinkAllowedValues>, 'use' | 'component'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps<ButtonLinkAllowedValues>, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> extends React.Component<\n LinkProps<C>,\n LinkState\n> {\n public static __KONTUR_REACT_UI__ = 'Link';\n public static displayName = 'Link';\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n component: LINK_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getTabIndex = ({\n nonInteractive,\n tabIndex = 0,\n }: {\n nonInteractive: boolean | undefined;\n tabIndex: number | undefined;\n }) => {\n return nonInteractive ? -1 : tabIndex;\n };\n\n private getRel = () => {\n if (isAnchorProps(this.props)) {\n const { rel, href } = this.props;\n if (!rel && href) {\n return `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n return rel;\n }\n\n return undefined;\n };\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n component: Root,\n focused = false,\n error,\n warning,\n tabIndex,\n theme,\n ...rest\n } = props;\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n const nonInteractive = disabled || loading;\n const getUseStyles = () => {\n switch (use) {\n case 'default':\n return styles.default(this.theme);\n case 'danger':\n return styles.danger(this.theme);\n case 'success':\n return styles.success(this.theme);\n case 'grayed':\n return styles.grayed(this.theme);\n }\n };\n const getUseLineFocusStyles = () => {\n switch (use) {\n case 'default':\n return styles.lineFocus(this.theme);\n case 'danger':\n return styles.lineFocusDanger(this.theme);\n case 'success':\n return styles.lineFocusSuccess(this.theme);\n case 'grayed':\n return styles.lineFocusGrayed(this.theme);\n }\n };\n const rootProps = {\n ...rest,\n className: cx({\n [styles.root(this.theme)]: true,\n [resetButton()]: Root === 'button',\n [styles.focus(this.theme)]: isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [getUseStyles()]: true,\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [getUseLineFocusStyles()]: isFocused,\n }),\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ nonInteractive, tabIndex }),\n rel: this.getRel(),\n };\n\n return (\n <Root data-tid={LinkDataTids.root} {...rootProps} {...getVisualStateDataAttributes({ disabled })}>\n {leftIconElement}\n {this.props.children}\n {rightIconElement}\n {arrow}\n </Root>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent) => {\n const { onClick, disabled, loading } = this.props;\n\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n\nconst isAnchorProps = (props: LinkProps<any>): props is LinkProps<'a'> => {\n return props.component === 'a';\n};\n"],"mappings":"6dAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;;;AAGA,IAAAE,OAAA,GAAAF,OAAA;;AAEA,IAAAG,YAAA,GAAAH,OAAA;;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;;AAEA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;;AAEA,IAAAQ,SAAA,GAAAR,OAAA;;AAEA,IAAAS,kBAAA,GAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AACA,IAAAW,6BAAA,GAAAX,OAAA;;AAEA,IAAAY,MAAA,GAAAZ,OAAA;AACA,IAAAa,SAAA,GAAAb,OAAA,eAAsC,IAAAc,SAAA,wJAAAC,MAAA,EAAAC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCtC,IAAMC,sBAAsB,GAAG,GAAG;;;;;;;;;;AAU3B,IAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG;EAC1BE,IAAI,EAAE;AACR,CAAU;;;;;AAKV;AACA;AACA,GAFA;;AAIaC,IAAI,GAAAF,OAAA,CAAAE,IAAA,OADhBC,kBAAQ,EAAAP,MAAA,IAAAC,KAAA,0BAAAO,gBAAA,YAAAF,KAAA,OAAAG,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;;;;;;;;;;;;IAaCU,QAAQ,GAAG,IAAAC,oCAAiB,EAACd,IAAI,CAACe,YAAY,CAAC,CAAAZ,KAAA;;IAEhDa,KAAK,GAAc;MACxBC,YAAY,EAAE;IAChB,CAAC,CAAAd,KAAA;;;;;;;;;;;;;;;;;;;;;IAqBOe,WAAW,GAAG,UAAAC,IAAA;;;;;;IAMhB,KALJC,cAAc,GAAAD,IAAA,CAAdC,cAAc,CAAAC,aAAA,GAAAF,IAAA,CACdG,QAAQ,CAARA,QAAQ,GAAAD,aAAA,cAAG,CAAC,GAAAA,aAAA;MAKZ,OAAOD,cAAc,GAAG,CAAC,CAAC,GAAGE,QAAQ;IACvC,CAAC,CAAAnB,KAAA;;IAEOoB,MAAM,GAAG,YAAM;MACrB,IAAIC,aAAa,CAACrB,KAAA,CAAKsB,KAAK,CAAC,EAAE;QAC7B,IAAAC,WAAA,GAAsBvB,KAAA,CAAKsB,KAAK,CAAxBE,GAAG,GAAAD,WAAA,CAAHC,GAAG,CAAEC,IAAI,GAAAF,WAAA,CAAJE,IAAI;QACjB,IAAI,CAACD,GAAG,IAAIC,IAAI,EAAE;UAChB,qBAAkB,IAAAC,qBAAc,EAACD,IAAI,CAAC,GAAG,aAAa,GAAG,EAAE;QAC7D;QACA,OAAOD,GAAG;MACZ;;MAEA,OAAOG,SAAS;IAClB,CAAC,CAAA3B,KAAA;;IAEO4B,UAAU,GAAG,UAACN,KAAmD,EAAK,KAAAO,GAAA;MAC5E;QACEC,QAAQ;;;;;;;;;;;;;;QAcNR,KAAK,CAdPQ,QAAQ,CACRC,IAAI,GAaFT,KAAK,CAbPS,IAAI,CACJC,SAAS,GAYPV,KAAK,CAZPU,SAAS,CACTC,GAAG,GAWDX,KAAK,CAXPW,GAAG,CACHC,OAAO,GAULZ,KAAK,CAVPY,OAAO,CACPC,OAAO,GASLb,KAAK,CATPa,OAAO,CACPC,aAAa,GAQXd,KAAK,CARPc,aAAa,CACFC,IAAI,GAObf,KAAK,CAPPgB,SAAS,CAAAC,cAAA,GAOPjB,KAAK,CANPkB,OAAO,CAAPA,OAAO,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA,CACfE,KAAK,GAKHnB,KAAK,CALPmB,KAAK,CACLC,OAAO,GAILpB,KAAK,CAJPoB,OAAO,CACPvB,QAAQ,GAGNG,KAAK,CAHPH,QAAQ,CACRwB,KAAK,GAEHrB,KAAK,CAFPqB,KAAK,CACFC,IAAI,OAAAC,8BAAA,CAAAC,OAAA,EACLxB,KAAK,EAAAhC,SAAA;;MAET,IAAIyD,KAAK,GAAG,IAAI;MAChB,IAAIZ,OAAO,EAAE;QACXY,KAAK,gBAAGzE,MAAA,CAAAwE,OAAA,CAAAE,aAAA,WAAMC,SAAS,EAAEC,aAAM,CAACH,KAAK,CAAC,CAAE,EAAE,CAAC;MAC7C;;MAEA,IAAMI,SAAS,GAAG,CAACrB,QAAQ,KAAK9B,KAAA,CAAKa,KAAK,CAACC,YAAY,IAAI0B,OAAO,CAAC;;MAEnE,IAAMY,eAAe,GAAGrB,IAAI,iBAAIzD,MAAA,CAAAwE,OAAA,CAAAE,aAAA,CAAC3D,SAAA,CAAAgE,QAAQ,IAACtB,IAAI,EAAEA,IAAK,EAACG,OAAO,EAAEA,OAAQ,EAACoB,QAAQ,EAAC,MAAM,EAAE,CAAC;MAC1F,IAAMC,gBAAgB,GAAGvB,SAAS;MAChC1D,MAAA,CAAAwE,OAAA,CAAAE,aAAA,CAAC3D,SAAA,CAAAgE,QAAQ,IAACG,YAAY,EAAE,CAAC,CAACzB,IAAI,IAAI,CAAC,CAACC,SAAU,EAACD,IAAI,EAAEC,SAAU,EAACE,OAAO,EAAEA,OAAQ,EAACoB,QAAQ,EAAC,OAAO,EAAE,CACrG;;MACD,IAAMrC,cAAc,GAAGa,QAAQ,IAAII,OAAO;MAC1C,IAAMuB,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;QACzB,QAAQxB,GAAG;UACT,KAAK,SAAS;YACZ,OAAOiB,aAAM,CAACJ,OAAO,CAAC9C,KAAA,CAAK2C,KAAK,CAAC;UACnC,KAAK,QAAQ;YACX,OAAOO,aAAM,CAACQ,MAAM,CAAC1D,KAAA,CAAK2C,KAAK,CAAC;UAClC,KAAK,SAAS;YACZ,OAAOO,aAAM,CAACS,OAAO,CAAC3D,KAAA,CAAK2C,KAAK,CAAC;UACnC,KAAK,QAAQ;YACX,OAAOO,aAAM,CAACU,MAAM,CAAC5D,KAAA,CAAK2C,KAAK,CAAC;QACpC;MACF,CAAC;MACD,IAAMkB,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;QAClC,QAAQ5B,GAAG;UACT,KAAK,SAAS;YACZ,OAAOiB,aAAM,CAACY,SAAS,CAAC9D,KAAA,CAAK2C,KAAK,CAAC;UACrC,KAAK,QAAQ;YACX,OAAOO,aAAM,CAACa,eAAe,CAAC/D,KAAA,CAAK2C,KAAK,CAAC;UAC3C,KAAK,SAAS;YACZ,OAAOO,aAAM,CAACc,gBAAgB,CAAChE,KAAA,CAAK2C,KAAK,CAAC;UAC5C,KAAK,QAAQ;YACX,OAAOO,aAAM,CAACe,eAAe,CAACjE,KAAA,CAAK2C,KAAK,CAAC;QAC7C;MACF,CAAC;MACD,IAAMuB,SAAS,OAAAC,SAAA,CAAArB,OAAA;MACVF,IAAI;QACPK,SAAS,EAAE,IAAAmB,WAAE,GAAAvC,GAAA,OAAAA,GAAA;QACVqB,aAAM,CAACtD,IAAI,CAACI,KAAA,CAAK2C,KAAK,CAAC,IAAG,IAAI,EAAAd,GAAA;QAC9B,IAAAwC,mBAAW,EAAC,CAAC,IAAGhC,IAAI,KAAK,QAAQ,EAAAR,GAAA;QACjCqB,aAAM,CAACoB,KAAK,CAACtE,KAAA,CAAK2C,KAAK,CAAC,IAAGQ,SAAS,EAAAtB,GAAA;QACpCqB,aAAM,CAACpB,QAAQ,CAAC9B,KAAA,CAAK2C,KAAK,CAAC,IAAGb,QAAQ,IAAII,OAAO,EAAAL,GAAA;QACjD4B,YAAY,CAAC,CAAC,IAAG,IAAI,EAAA5B,GAAA;QACrBqB,aAAM,CAACqB,cAAc,CAACvE,KAAA,CAAK2C,KAAK,CAAC,IAAGV,GAAG,KAAK,QAAQ,IAAIO,OAAO,EAAAX,GAAA;QAC/DqB,aAAM,CAACsB,MAAM,CAACxE,KAAA,CAAK2C,KAAK,CAAC,IAAG,CAAC,CAACR,OAAO,EAAAN,GAAA;QACrCqB,aAAM,CAACuB,YAAY,CAACzE,KAAA,CAAK2C,KAAK,CAAC,IAAG,CAAC,CAACP,aAAa,EAAAP,GAAA;QACjDqB,aAAM,CAACR,OAAO,CAAC1C,KAAA,CAAK2C,KAAK,CAAC,IAAGD,OAAO,EAAAb,GAAA;QACpCqB,aAAM,CAACT,KAAK,CAACzC,KAAA,CAAK2C,KAAK,CAAC,IAAGF,KAAK,EAAAZ,GAAA;QAChCgC,qBAAqB,CAAC,CAAC,IAAGV,SAAS,EAAAtB,GAAA;QACrC,CAAC;QACF6C,OAAO,EAAE1E,KAAA,CAAK2E,WAAW;QACzBC,OAAO,EAAE5E,KAAA,CAAK6E,WAAW;QACzBC,MAAM,EAAE9E,KAAA,CAAK+E,UAAU;QACvB5D,QAAQ,EAAEnB,KAAA,CAAKe,WAAW,CAAC,EAAEE,cAAc,EAAdA,cAAc,EAAEE,QAAQ,EAARA,QAAQ,CAAC,CAAC,CAAC;QACxDK,GAAG,EAAExB,KAAA,CAAKoB,MAAM,CAAC,CAAC,GACnB;;;MAED;QACE9C,MAAA,CAAAwE,OAAA,CAAAE,aAAA,CAACX,IAAI,MAAA8B,SAAA,CAAArB,OAAA,IAAC,YAAUpD,YAAY,CAACE,IAAK,IAAKsE,SAAS,EAAM,IAAAc,0DAA4B,EAAC,EAAElD,QAAQ,EAARA,QAAQ,CAAC,CAAC,CAAC;QAC7FsB,eAAe;QACfpD,KAAA,CAAKsB,KAAK,CAAC2D,QAAQ;QACnB1B,gBAAgB;QAChBR;QACG,CAAC;;IAEX,CAAC,CAAA/C,KAAA;;IAEO6E,WAAW,GAAG,YAAM;MAC1B,IAAI,CAAC7E,KAAA,CAAKsB,KAAK,CAACQ,QAAQ,EAAE;QACxB;QACA;QACAoD,0BAAY,CAACC,qBAAqB,YAAlCD,0BAAY,CAACC,qBAAqB,CAAG,YAAM;UACzC,IAAIC,wBAAW,CAACC,YAAY,EAAE;YAC5BrF,KAAA,CAAKsF,QAAQ,CAAC,EAAExE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;UACvC;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAAd,KAAA;;IAEO+E,UAAU,GAAG,YAAM;MACzB/E,KAAA,CAAKsF,QAAQ,CAAC,EAAExE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC,CAAAd,KAAA;;IAEO2E,WAAW,GAAG,UAACY,KAAuB,EAAK;MACjD,IAAAC,YAAA,GAAuCxF,KAAA,CAAKsB,KAAK,CAAzCoD,OAAO,GAAAc,YAAA,CAAPd,OAAO,CAAE5C,QAAQ,GAAA0D,YAAA,CAAR1D,QAAQ,CAAEI,OAAO,GAAAsD,YAAA,CAAPtD,OAAO;;MAElC,IAAIJ,QAAQ,EAAE;QACZyD,KAAK,CAACE,cAAc,CAAC,CAAC;QACtBF,KAAK,CAACG,eAAe,CAAC,CAAC;MACzB;;MAEA,IAAIhB,OAAO,IAAI,CAAC5C,QAAQ,IAAI,CAACI,OAAO,EAAE;QACpCwC,OAAO,CAACa,KAAK,CAAC;MAChB;IACF,CAAC,QAAAvF,KAAA,MAAA2F,eAAA,CAAA7C,OAAA,EAAAjD,IAAA,EAAAE,gBAAA,MAAA6F,MAAA,GAAA/F,IAAA,CAAAgG,SAAA,CAAAD,MAAA,CAtJME,MAAM,GAAb,SAAAA,OAAA,EAA6B,KAAAC,MAAA,QAC3B,oBACEzH,MAAA,CAAAwE,OAAA,CAAAE,aAAA,CAACpE,aAAA,CAAAoH,YAAY,CAACC,QAAQ,QACnB,UAACtD,KAAK,EAAK,CACVoD,MAAI,CAACpD,KAAK,GAAGoD,MAAI,CAACzE,KAAK,CAACqB,KAAK,GAAGuD,0BAAY,CAACC,MAAM,CAACJ,MAAI,CAACzE,KAAK,CAACqB,KAAK,EAAWA,KAAK,CAAC,GAAGA,KAAK,CAC7F,oBACErE,MAAA,CAAAwE,OAAA,CAAAE,aAAA,CAAClE,cAAA,CAAAsH,aAAa,MAAAjC,SAAA,CAAArB,OAAA,IAACuD,WAAW,EAAEN,MAAI,CAACO,WAAY,IAAKP,MAAI,CAACrF,QAAQ,CAAC,CAAC,GAC9DqF,MAAI,CAACnE,UACO,CAAC,CAEpB,CACqB,CAAC,CAE5B,CAAC,QAAA/B,IAAA,GAnC0F0G,cAAK,CAACC,SAAS,GAAAhH,KAAA,CAI5FiH,mBAAmB,GAAG,MAAM,EAAAjH,KAAA,CAC5BkH,WAAW,GAAG,MAAM,EAAAlH,KAAA,CAEpBoB,YAAY,GAAiB,EACzCqB,GAAG,EAAE,SAAS,EACdK,SAAS,EAAE7C,sBAAsB,CACnC,CAAC,EAAAD,KAAA,MAAAD,MAAA;;;AAqKH,IAAM8B,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAqB,EAA8B;EACxE,OAAOA,KAAK,CAACgB,SAAS,KAAK,GAAG;AAChC,CAAC","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;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;exports.__esModule = true;exports.LoaderDataTids = exports.Loader = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
|
|
2
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
3
2
|
var _lodash = _interopRequireDefault(require("lodash.debounce"));
|
|
4
3
|
var _globalObject = require("@skbkontur/global-object");
|
|
5
4
|
|
|
@@ -59,6 +58,8 @@ var types = ['mini', 'normal', 'big'];
|
|
|
59
58
|
|
|
60
59
|
|
|
61
60
|
|
|
61
|
+
|
|
62
|
+
|
|
62
63
|
|
|
63
64
|
|
|
64
65
|
|
|
@@ -98,43 +99,6 @@ Loader = exports.Loader = (0, _rootNode.rootNode)(_class = (_Loader = /*#__PURE_
|
|
|
98
99
|
|
|
99
100
|
|
|
100
101
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
102
|
|
|
139
103
|
|
|
140
104
|
function Loader(props) {var _this;
|
|
@@ -413,22 +377,4 @@ Loader = exports.Loader = (0, _rootNode.rootNode)(_class = (_Loader = /*#__PURE_
|
|
|
413
377
|
makeUnobservable = function () {var _this$childrenObserve;
|
|
414
378
|
(_this$childrenObserve = _this.childrenObserver) == null || _this$childrenObserve.disconnect();
|
|
415
379
|
_this.childrenObserver = null;
|
|
416
|
-
};_this.spinnerContainerNode = null;_this.childrenContainerNode = null;_this.childrenObserver = null;_this.spinnerNode = null;_this.state = { isStickySpinner: false, isSpinnerVisible: false, isLoaderActive: false };_this.spinnerTask = new _taskWithDelayAndMinimalDuration.TaskWithDelayAndMinimalDuration({ delayBeforeTaskStart: _this.getProps().delayBeforeSpinnerShow, durationOfTask: _this.getProps().minimalDelayBeforeSpinnerHide, taskStartCallback: function taskStartCallback() {return _this.setState({ isSpinnerVisible: true });}, taskStopCallback: function taskStopCallback() {return _this.setState({ isSpinnerVisible: false });} });return _this;}(0, _inheritsLoose2.default)(Loader, _React$Component);var _proto = Loader.prototype;_proto.componentDidMount = function componentDidMount() {var active = this.getProps().active;this.checkSpinnerPosition();active && this.spinnerTask.start();this.layoutEvents = LayoutEvents.addListener((0, _lodash.default)(this.checkSpinnerPosition, 10));if (active) {this.disableChildrenFocus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var component = this.props.component;var _this$getProps = this.getProps(),active = _this$getProps.active,delayBeforeSpinnerShow = _this$getProps.delayBeforeSpinnerShow,minimalDelayBeforeSpinnerHide = _this$getProps.minimalDelayBeforeSpinnerHide;var isLoaderActive = this.state.isLoaderActive;if (active && !prevProps.active || prevProps.component !== component) {this.checkSpinnerPosition();}if (delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow || minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide) {this.spinnerTask.update({ delayBeforeTaskStart: delayBeforeSpinnerShow, durationOfTask: minimalDelayBeforeSpinnerHide });}if (active !== prevProps.active) {active ? this.spinnerTask.start() : this.spinnerTask.stop();}if (isLoaderActive !== prevState.isLoaderActive) {if (isLoaderActive) {this.disableChildrenFocus();} else {this.enableChildrenFocus();}}};_proto.componentWillUnmount = function componentWillUnmount() {this.makeUnobservable();if (this.layoutEvents) {this.layoutEvents.remove();}this.spinnerTask.clearTask();};Loader.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.active && !state.isLoaderActive) {return { isLoaderActive: true };}if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {return { isLoaderActive: false };}return state;};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx;var _this$props = this.props,caption = _this$props.caption,component = _this$props.component;var type = this.getProps().type;var isLoaderActive = this.state.isLoaderActive;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { className: _Loader2.styles.loader(), "data-tid": isLoaderActive ? LoaderDataTids.veil : '' }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children), isLoaderActive && /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: this.spinnerRef, className: (0, _Emotion.cx)((_cx = {}, _cx[_Loader2.styles.active(this.theme)] = isLoaderActive, _cx)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))));};_proto.renderSpinner = function renderSpinner(type, caption, component) {var _cx2,_this3 = this;return /*#__PURE__*/_react.default.createElement("span", { "data-tid": LoaderDataTids.spinner, className: (0, _Emotion.cx)(_Loader2.styles.spinnerContainer(), (_cx2 = {}, _cx2[_Loader2.styles.spinnerContainerSticky()] = this.state.isStickySpinner, _cx2)), style: this.state.spinnerStyle }, /*#__PURE__*/_react.default.createElement("div", { className: _Loader2.styles.spinnerComponentWrapper(), ref: function ref(element) {_this3.spinnerNode = element;} }, component !== undefined ? component : /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: type, caption: caption })));};return Loader;}(_react.default.Component), _Loader.__KONTUR_REACT_UI__ = 'Loader', _Loader.displayName = 'Loader', _Loader.defaultProps = { type: 'normal', active: false, delayBeforeSpinnerShow: _currentEnvironment.isTestEnv ? 0 : 300, minimalDelayBeforeSpinnerHide: _currentEnvironment.isTestEnv ? 0 : 1000 }, _Loader
|
|
417
|
-
* показываем лоадер или нет
|
|
418
|
-
*/active: _propTypes.default.bool, /**
|
|
419
|
-
* Текст рядом с лоадером.
|
|
420
|
-
*
|
|
421
|
-
* @default "Загрузка"
|
|
422
|
-
*/caption: _Spinner.Spinner.propTypes.caption, component: _propTypes.default.node, /**
|
|
423
|
-
* Класс для обертки
|
|
424
|
-
*/className: _propTypes.default.string, /**
|
|
425
|
-
* Тип спиннера: mini, normal, big
|
|
426
|
-
*
|
|
427
|
-
* @default normal
|
|
428
|
-
*/type: _propTypes.default.oneOf(types), /**
|
|
429
|
-
* Время в миллисекундах для показа вуали без спиннера.
|
|
430
|
-
* @default 300
|
|
431
|
-
*/delayBeforeSpinnerShow: _propTypes.default.number, /**
|
|
432
|
-
* Минимальное время в миллисекундах для показа спиннера
|
|
433
|
-
* @default 1000
|
|
434
|
-
*/minimalDelayBeforeSpinnerHide: _propTypes.default.number }, _Loader)) || _class;
|
|
380
|
+
};_this.spinnerContainerNode = null;_this.childrenContainerNode = null;_this.childrenObserver = null;_this.spinnerNode = null;_this.state = { isStickySpinner: false, isSpinnerVisible: false, isLoaderActive: false };_this.spinnerTask = new _taskWithDelayAndMinimalDuration.TaskWithDelayAndMinimalDuration({ delayBeforeTaskStart: _this.getProps().delayBeforeSpinnerShow, durationOfTask: _this.getProps().minimalDelayBeforeSpinnerHide, taskStartCallback: function taskStartCallback() {return _this.setState({ isSpinnerVisible: true });}, taskStopCallback: function taskStopCallback() {return _this.setState({ isSpinnerVisible: false });} });return _this;}(0, _inheritsLoose2.default)(Loader, _React$Component);var _proto = Loader.prototype;_proto.componentDidMount = function componentDidMount() {var active = this.getProps().active;this.checkSpinnerPosition();active && this.spinnerTask.start();this.layoutEvents = LayoutEvents.addListener((0, _lodash.default)(this.checkSpinnerPosition, 10));if (active) {this.disableChildrenFocus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var component = this.props.component;var _this$getProps = this.getProps(),active = _this$getProps.active,delayBeforeSpinnerShow = _this$getProps.delayBeforeSpinnerShow,minimalDelayBeforeSpinnerHide = _this$getProps.minimalDelayBeforeSpinnerHide;var isLoaderActive = this.state.isLoaderActive;if (active && !prevProps.active || prevProps.component !== component) {this.checkSpinnerPosition();}if (delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow || minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide) {this.spinnerTask.update({ delayBeforeTaskStart: delayBeforeSpinnerShow, durationOfTask: minimalDelayBeforeSpinnerHide });}if (active !== prevProps.active) {active ? this.spinnerTask.start() : this.spinnerTask.stop();}if (isLoaderActive !== prevState.isLoaderActive) {if (isLoaderActive) {this.disableChildrenFocus();} else {this.enableChildrenFocus();}}};_proto.componentWillUnmount = function componentWillUnmount() {this.makeUnobservable();if (this.layoutEvents) {this.layoutEvents.remove();}this.spinnerTask.clearTask();};Loader.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.active && !state.isLoaderActive) {return { isLoaderActive: true };}if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {return { isLoaderActive: false };}return state;};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx;var _this$props = this.props,caption = _this$props.caption,component = _this$props.component;var type = this.getProps().type;var isLoaderActive = this.state.isLoaderActive;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { className: _Loader2.styles.loader(), "data-tid": isLoaderActive ? LoaderDataTids.veil : '' }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children), isLoaderActive && /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: this.spinnerRef, className: (0, _Emotion.cx)((_cx = {}, _cx[_Loader2.styles.active(this.theme)] = isLoaderActive, _cx)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))));};_proto.renderSpinner = function renderSpinner(type, caption, component) {var _cx2,_this3 = this;return /*#__PURE__*/_react.default.createElement("span", { "data-tid": LoaderDataTids.spinner, className: (0, _Emotion.cx)(_Loader2.styles.spinnerContainer(), (_cx2 = {}, _cx2[_Loader2.styles.spinnerContainerSticky()] = this.state.isStickySpinner, _cx2)), style: this.state.spinnerStyle }, /*#__PURE__*/_react.default.createElement("div", { className: _Loader2.styles.spinnerComponentWrapper(), ref: function ref(element) {_this3.spinnerNode = element;} }, component !== undefined ? component : /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: type, caption: caption })));};return Loader;}(_react.default.Component), _Loader.__KONTUR_REACT_UI__ = 'Loader', _Loader.displayName = 'Loader', _Loader.defaultProps = { type: 'normal', active: false, delayBeforeSpinnerShow: _currentEnvironment.isTestEnv ? 0 : 300, minimalDelayBeforeSpinnerHide: _currentEnvironment.isTestEnv ? 0 : 1000 }, _Loader)) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_lodash","_globalObject","LayoutEvents","_interopRequireWildcard","_Spinner","_ThemeContext","_ZIndex","_CommonWrapper","_Emotion","_currentEnvironment","_taskWithDelayAndMinimalDuration","_tabbableHelpers","_rootNode","_getDOMRect2","_createPropsGetter","_Loader2","_class","_Loader","types","LoaderDataTids","exports","veil","spinner","Loader","rootNode","_React$Component","props","_this","call","getProps","createPropsGetter","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","isBrowser","globalObject","_getDOMRect","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","getTabbableElements","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","TaskWithDelayAndMinimalDuration","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose2","default","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","debounce","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","ThemeContext","Consumer","theme","renderMain","_cx","_this$props","caption","type","CommonWrapper","_extends2","rootNodeRef","setRootNode","className","styles","loader","ZIndex","applyZIndex","coverChildren","style","wrapperRef","children","cx","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Spinner","React","Component","__KONTUR_REACT_UI__","displayName","isTestEnv","propTypes","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","_interopRequireDefault","require","_lodash","_globalObject","LayoutEvents","_interopRequireWildcard","_Spinner","_ThemeContext","_ZIndex","_CommonWrapper","_Emotion","_currentEnvironment","_taskWithDelayAndMinimalDuration","_tabbableHelpers","_rootNode","_getDOMRect2","_createPropsGetter","_Loader2","_class","_Loader","types","LoaderDataTids","exports","veil","spinner","Loader","rootNode","_React$Component","props","_this","call","getProps","createPropsGetter","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","isBrowser","globalObject","_getDOMRect","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","getTabbableElements","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","TaskWithDelayAndMinimalDuration","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose2","default","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","debounce","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","ThemeContext","Consumer","theme","renderMain","_cx","_this$props","caption","type","CommonWrapper","_extends2","rootNodeRef","setRootNode","className","styles","loader","ZIndex","applyZIndex","coverChildren","style","wrapperRef","children","cx","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Spinner","React","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"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":"ocAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;;;AAGA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;;AAEA,IAAAK,QAAA,GAAAL,OAAA;;AAEA,IAAAM,aAAA,GAAAN,OAAA;;AAEA,IAAAO,OAAA,GAAAP,OAAA;;AAEA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,mBAAA,GAAAV,OAAA;AACA,IAAAW,gCAAA,GAAAX,OAAA;AACA,IAAAY,gBAAA,GAAAZ,OAAA;;AAEA,IAAAa,SAAA,GAAAb,OAAA;AACA,IAAAc,YAAA,GAAAd,OAAA;AACA,IAAAe,kBAAA,GAAAf,OAAA;;AAEA,IAAAgB,QAAA,GAAAhB,OAAA,oBAAyC,IAAAiB,MAAA,EAAAC,OAAA;;AAEzC,IAAMC,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCzC,IAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG;EAC5BE,IAAI,EAAE,cAAc;EACpBC,OAAO,EAAE;AACX,CAAU;;;;;;AAMV;AACA;AACA;AACA;AACA,GAJA;;AAMaC,MAAM,GAAAH,OAAA,CAAAG,MAAA,OADlBC,kBAAQ,EAAAR,MAAA,IAAAC,OAAA,0BAAAQ,gBAAA;;;;;;;;;;;;;;;;;;;;;;;EAwBP,SAAAF,OAAYG,KAAkB,EAAE,KAAAC,KAAA;IAC9BA,KAAA,GAAAF,gBAAA,CAAAG,IAAA,OAAMF,KAAK,CAAC,SAACC,KAAA,CAbPE,QAAQ,GAAG,IAAAC,oCAAiB,EAACP,MAAM,CAACQ,YAAY,CAAC,CAAAJ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8IjDK,WAAW,GAAG,UAACC,OAA8B,EAAK;MACxDN,KAAA,CAAKO,qBAAqB,GAAGD,OAAO;IACtC,CAAC,CAAAN,KAAA;;IAEOQ,UAAU,GAAG,UAACF,OAA8B,EAAK;MACvDN,KAAA,CAAKS,oBAAoB,GAAGH,OAAO;IACrC,CAAC,CAAAN,KAAA;;;;;;;;;;;;;;;;;;;;;IAqBOU,oBAAoB,GAAG,YAAM;MACnC,IAAI,CAACV,KAAA,CAAKS,oBAAoB,IAAI,CAAC,IAAAE,uBAAS,EAACC,0BAAY,CAAC,EAAE;QAC1D;MACF;;MAEA,IAAAC,WAAA;;;;;;;QAOI,IAAAC,uBAAU,EAACd,KAAA,CAAKS,oBAAoB,CAAC,CANlCM,YAAY,GAAAF,WAAA,CAAjBG,GAAG,CACIC,cAAc,GAAAJ,WAAA,CAArBK,KAAK,CACGC,eAAe,GAAAN,WAAA,CAAvBO,MAAM,CACAC,aAAa,GAAAR,WAAA,CAAnBS,IAAI,CACIC,eAAe,GAAAV,WAAA,CAAvBW,MAAM,CACCC,cAAc,GAAAZ,WAAA,CAArBa,KAAK;;MAGP,IAAMC,YAAY,GAAGf,0BAAY,CAACgB,WAAW;MAC7C,IAAMC,WAAW,GAAGjB,0BAAY,CAACkB,UAAU;;MAE3C;MACA;MACA,IAAIH,YAAY,IAAIJ,eAAe,IAAIM,WAAW,IAAIJ,cAAc,EAAE;QACpEzB,KAAA,CAAK+B,QAAQ,CAAC;UACZC,eAAe,EAAE,KAAK;UACtBC,YAAY,EAAE,CAAC;QACjB,CAAC,CAAC;QACF;MACF;;MAEA,IAAMA,YAKL;;;;;MAAG;QACFjB,GAAG,EAAE,EAAE;QACPE,KAAK,EAAE,CAAC;QACRE,MAAM,EAAE,EAAE;QACVE,IAAI,EAAE;MACR,CAAC;;MAED;MACA;MACA;MACA,IAAIP,YAAY,GAAG,CAAC,EAAE;QACpBkB,YAAY,CAACjB,GAAG,GAAGD,YAAY,GAAG,EAAE;MACtC;;MAEA;MACA;MACA,IAAII,eAAe,GAAGQ,YAAY,EAAE;QAClCM,YAAY,CAACb,MAAM,GAAGc,IAAI,CAACC,GAAG,CAACR,YAAY,GAAGR,eAAe,CAAC,GAAG,EAAE;MACrE;;MAEA;MACA;;MAEA,IAAMiB,aAAa,GAAG,IAAAtB,uBAAU,EAACd,KAAA,CAAKqC,WAAW,CAAC,CAACb,MAAM;;MAEzD,IAAIY,aAAa,IAAIH,YAAY,CAACb,MAAM,IAAIO,YAAY,GAAGS,aAAa,EAAE;QACxE,OAAOH,YAAY,CAACjB,GAAG;MACzB;;MAEA;MACA;MACA;MACA,IAAIK,aAAa,GAAG,CAAC,EAAE;QACrBY,YAAY,CAACX,IAAI,GAAGD,aAAa;MACnC;;MAEA;MACA;MACA,IAAIJ,cAAc,GAAGY,WAAW,EAAE;QAChCI,YAAY,CAACf,KAAK,GAAGW,WAAW,GAAGZ,cAAc;MACnD;;MAEAjB,KAAA,CAAK+B,QAAQ,CAAC;QACZC,eAAe,EAAE,IAAI;QACrBC,YAAY,EAAZA;MACF,CAAC,CAAC;IACJ,CAAC,CAAAjC,KAAA;;IAEOsC,oBAAoB,GAAG,YAAM;MACnC,IAAI,CAACtC,KAAA,CAAKuC,gBAAgB,EAAE;QAC1BvC,KAAA,CAAKwC,cAAc,CAAC,CAAC;MACvB;MACA,IAAMC,gBAAgB,GAAG,IAAAC,oCAAmB,EAAC1C,KAAA,CAAKO,qBAAqB,CAAC;MACxEkC,gBAAgB,CAACE,OAAO,CAAC,UAACC,EAAE,EAAK;QAC/B,IAAI,CAACA,EAAE,CAACC,YAAY,CAAC,iBAAiB,CAAC,EAAE;UACvCD,EAAE,CAACE,YAAY,CAAC,iBAAiB,EAAEF,EAAE,CAACG,QAAQ,CAACC,QAAQ,CAAC,CAAC,CAAC;QAC5D;QACAJ,EAAE,CAACG,QAAQ,GAAG,CAAC,CAAC;MAClB,CAAC,CAAC;IACJ,CAAC,CAAA/C,KAAA;;IAEOiD,mBAAmB,GAAG,YAAM,KAAAC,qBAAA,EAAAC,sBAAA;MAClCnD,KAAA,CAAKoD,gBAAgB,CAAC,CAAC;MACvB;MACAC,KAAK,CAACC,IAAI,EAAAJ,qBAAA,IAAAC,sBAAA,GAACvC,0BAAY,CAAC2C,QAAQ,qBAArBJ,sBAAA,CAAuBK,gBAAgB,CAAC,mBAAmB,CAAC,YAAAN,qBAAA,GAAI,EAAE,CAAC,CAACP,OAAO,CAAC,UAACC,EAAE,EAAK,KAAAa,gBAAA;QAC7Fb,EAAE,CAACE,YAAY,CAAC,UAAU,GAAAW,gBAAA,GAAEb,EAAE,CAACc,YAAY,CAAC,iBAAiB,CAAC,YAAAD,gBAAA,GAAI,GAAG,CAAC;QACtEb,EAAE,CAACe,eAAe,CAAC,iBAAiB,CAAC;MACvC,CAAC,CAAC;IACJ,CAAC,CAAA3D,KAAA;;IAEOwC,cAAc,GAAG,YAAM;MAC7B,IAAMoB,MAAM,GAAG5D,KAAA,CAAKO,qBAAqB;MACzC,IAAI,CAACqD,MAAM,IAAI,CAAChD,0BAAY,CAACiD,gBAAgB,EAAE;QAC7C;MACF;MACA,IAAMC,MAAM,GAAG;QACbC,SAAS,EAAE,IAAI;QACfC,OAAO,EAAE;MACX,CAAC;MACD,IAAMC,QAAQ,GAAG,IAAIrD,0BAAY,CAACiD,gBAAgB,CAAC7D,KAAA,CAAKsC,oBAAoB,CAAC;MAC7E2B,QAAQ,CAACC,OAAO,CAACN,MAAM,EAAEE,MAAM,CAAC;MAChC9D,KAAA,CAAKuC,gBAAgB,GAAG0B,QAAQ;IAClC,CAAC,CAAAjE,KAAA;;IAEOoD,gBAAgB,GAAG,YAAM,KAAAe,qBAAA;MAC/B,CAAAA,qBAAA,GAAAnE,KAAA,CAAKuC,gBAAgB,aAArB4B,qBAAA,CAAuBC,UAAU,CAAC,CAAC;MACnCpE,KAAA,CAAKuC,gBAAgB,GAAG,IAAI;IAC9B,CAAC,CAjRCvC,KAAA,CAAKS,oBAAoB,GAAG,IAAI,CAChCT,KAAA,CAAKO,qBAAqB,GAAG,IAAI,CACjCP,KAAA,CAAKuC,gBAAgB,GAAG,IAAI,CAC5BvC,KAAA,CAAKqC,WAAW,GAAG,IAAI,CAEvBrC,KAAA,CAAKqE,KAAK,GAAG,EACXrC,eAAe,EAAE,KAAK,EACtBsC,gBAAgB,EAAE,KAAK,EACvBC,cAAc,EAAE,KAAK,CACvB,CAAC,CAEDvE,KAAA,CAAKwE,WAAW,GAAG,IAAIC,gEAA+B,CAAC,EACrDC,oBAAoB,EAAE1E,KAAA,CAAKE,QAAQ,CAAC,CAAC,CAACyE,sBAAsB,EAC5DC,cAAc,EAAE5E,KAAA,CAAKE,QAAQ,CAAC,CAAC,CAAC2E,6BAA6B,EAC7DC,iBAAiB,EAAE,SAAAA,kBAAA,UAAM9E,KAAA,CAAK+B,QAAQ,CAAC,EAAEuC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,IAClES,gBAAgB,EAAE,SAAAA,iBAAA,UAAM/E,KAAA,CAAK+B,QAAQ,CAAC,EAAEuC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,GACpE,CAAC,CAAC,CAAC,OAAAtE,KAAA,CACL,CAAC,IAAAgF,eAAA,CAAAC,OAAA,EAAArF,MAAA,EAAAE,gBAAA,MAAAoF,MAAA,GAAAtF,MAAA,CAAAuF,SAAA,CAAAD,MAAA,CAEME,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAMC,MAAM,GAAG,IAAI,CAACnF,QAAQ,CAAC,CAAC,CAACmF,MAAM,CACrC,IAAI,CAAC3E,oBAAoB,CAAC,CAAC,CAC3B2E,MAAM,IAAI,IAAI,CAACb,WAAW,CAACc,KAAK,CAAC,CAAC,CAClC,IAAI,CAACC,YAAY,GAAGhH,YAAY,CAACiH,WAAW,CAAC,IAAAC,eAAQ,EAAC,IAAI,CAAC/E,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAErF,IAAI2E,MAAM,EAAE,CACV,IAAI,CAAC/C,oBAAoB,CAAC,CAAC,CAC7B,CACF,CAAC,CAAA4C,MAAA,CAEMQ,kBAAkB,GAAzB,SAAAA,mBAA0BC,SAAgC,EAAEC,SAAgC,EAAE,CAC5F,IAAQC,SAAS,GAAK,IAAI,CAAC9F,KAAK,CAAxB8F,SAAS,CACjB,IAAAC,cAAA,GAA0E,IAAI,CAAC5F,QAAQ,CAAC,CAAC,CAAjFmF,MAAM,GAAAS,cAAA,CAANT,MAAM,CAAEV,sBAAsB,GAAAmB,cAAA,CAAtBnB,sBAAsB,CAAEE,6BAA6B,GAAAiB,cAAA,CAA7BjB,6BAA6B,CACrE,IAAQN,cAAc,GAAK,IAAI,CAACF,KAAK,CAA7BE,cAAc,CAEtB,IAAKc,MAAM,IAAI,CAACM,SAAS,CAACN,MAAM,IAAKM,SAAS,CAACE,SAAS,KAAKA,SAAS,EAAE,CACtE,IAAI,CAACnF,oBAAoB,CAAC,CAAC,CAC7B,CAEA,IACEiE,sBAAsB,KAAKgB,SAAS,CAAChB,sBAAsB,IAC3DE,6BAA6B,KAAKc,SAAS,CAACd,6BAA6B,EACzE,CACA,IAAI,CAACL,WAAW,CAACuB,MAAM,CAAC,EACtBrB,oBAAoB,EAAEC,sBAAsB,EAC5CC,cAAc,EAAEC,6BAA6B,CAC/C,CAAC,CAAC,CACJ,CAEA,IAAIQ,MAAM,KAAKM,SAAS,CAACN,MAAM,EAAE,CAC/BA,MAAM,GAAG,IAAI,CAACb,WAAW,CAACc,KAAK,CAAC,CAAC,GAAG,IAAI,CAACd,WAAW,CAACwB,IAAI,CAAC,CAAC,CAC7D,CAEA,IAAIzB,cAAc,KAAKqB,SAAS,CAACrB,cAAc,EAAE,CAC/C,IAAIA,cAAc,EAAE,CAClB,IAAI,CAACjC,oBAAoB,CAAC,CAAC,CAC7B,CAAC,MAAM,CACL,IAAI,CAACW,mBAAmB,CAAC,CAAC,CAC5B,CACF,CACF,CAAC,CAAAiC,MAAA,CAEMe,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,CAAC7C,gBAAgB,CAAC,CAAC,CACvB,IAAI,IAAI,CAACmC,YAAY,EAAE,CACrB,IAAI,CAACA,YAAY,CAACW,MAAM,CAAC,CAAC,CAC5B,CACA,IAAI,CAAC1B,WAAW,CAAC2B,SAAS,CAAC,CAAC,CAC9B,CAAC,CAAAvG,MAAA,CAEawG,wBAAwB,GAAtC,SAAAA,yBAAuCrG,KAAkB,EAAEsE,KAAkB,EAAwB,CACnG,IAAItE,KAAK,CAACsF,MAAM,IAAI,CAAChB,KAAK,CAACE,cAAc,EAAE,CACzC,OAAO,EACLA,cAAc,EAAE,IAAI,CACtB,CAAC,CACH,CACA,IAAIF,KAAK,CAACE,cAAc,IAAI,EAAExE,KAAK,CAACsF,MAAM,IAAIhB,KAAK,CAACC,gBAAgB,CAAC,EAAE,CACrE,OAAO,EACLC,cAAc,EAAE,KAAK,CACvB,CAAC,CACH,CAEA,OAAOF,KAAK,CACd,CAAC,CAAAa,MAAA,CAEMmB,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACEpI,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,CAAC7H,aAAA,CAAA8H,YAAY,CAACC,QAAQ,QACnB,UAACC,KAAK,EAAK,CACVJ,MAAI,CAACI,KAAK,GAAGA,KAAK,CAClB,OAAOJ,MAAI,CAACK,UAAU,CAAC,CAAC,CAC1B,CACqB,CAAC,CAE5B,CAAC,CAAAzB,MAAA,CAEOyB,UAAU,GAAlB,SAAAA,WAAA,EAAqB,KAAAC,GAAA,CACnB,IAAAC,WAAA,GAA+B,IAAI,CAAC9G,KAAK,CAAjC+G,OAAO,GAAAD,WAAA,CAAPC,OAAO,CAAEjB,SAAS,GAAAgB,WAAA,CAAThB,SAAS,CAC1B,IAAMkB,IAAI,GAAG,IAAI,CAAC7G,QAAQ,CAAC,CAAC,CAAC6G,IAAI,CACjC,IAAQxC,cAAc,GAAK,IAAI,CAACF,KAAK,CAA7BE,cAAc,CAEtB,oBACErG,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,CAAC3H,cAAA,CAAAoI,aAAa,MAAAC,SAAA,CAAAhC,OAAA,IAACiC,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAACpH,KAAK,gBAC1D7B,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,UAAKa,SAAS,EAAEC,eAAM,CAACC,MAAM,CAAC,CAAE,EAAC,YAAU/C,cAAc,GAAG/E,cAAc,CAACE,IAAI,GAAG,EAAG,iBACnFxB,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,CAAC5H,OAAA,CAAA4I,MAAM,IACLC,WAAW,EAAEjD,cAAe,EAC5BkD,aAAa,EAAElD,cAAe,EAC9BmD,KAAK,EAAE,EAAElG,MAAM,EAAE,MAAM,CAAC,CAAE,EAC1BmG,UAAU,EAAE,IAAI,CAACtH,WAAY,IAE5B,IAAI,CAACN,KAAK,CAAC6H,QACN,CAAC,EACRrD,cAAc,iBACbrG,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,CAAC5H,OAAA,CAAA4I,MAAM,IACLI,UAAU,EAAE,IAAI,CAACnH,UAAW,EAC5B4G,SAAS,EAAE,IAAAS,WAAE,GAAAjB,GAAA,OAAAA,GAAA,CACVS,eAAM,CAAChC,MAAM,CAAC,IAAI,CAACqB,KAAK,CAAC,IAAGnC,cAAc,EAAAqC,GAAA,CAC5C,CAAE,IAEF,IAAI,CAACvC,KAAK,CAACC,gBAAgB,IAAI,IAAI,CAACwD,aAAa,CAACf,IAAI,EAAED,OAAO,EAAEjB,SAAS,CACrE,CAEP,CACQ,CAAC,CAEpB,CAAC,CAAAX,MAAA,CAUO4C,aAAa,GAArB,SAAAA,cAAsBf,IAAiB,EAAED,OAAyB,EAAEjB,SAA2B,EAAE,KAAAkC,IAAA,CAAAC,MAAA,QAC/F,oBACE9J,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,WACE,YAAU/G,cAAc,CAACG,OAAQ,EACjCyH,SAAS,EAAE,IAAAS,WAAE,EAACR,eAAM,CAACY,gBAAgB,CAAC,CAAC,GAAAF,IAAA,OAAAA,IAAA,CAAKV,eAAM,CAACa,sBAAsB,CAAC,CAAC,IAAG,IAAI,CAAC7D,KAAK,CAACrC,eAAe,EAAA+F,IAAA,CAAE,CAAE,EAC5GL,KAAK,EAAE,IAAI,CAACrD,KAAK,CAACpC,YAAa,iBAE/B/D,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,UACEa,SAAS,EAAEC,eAAM,CAACc,uBAAuB,CAAC,CAAE,EAC5CC,GAAG,EAAE,SAAAA,IAAC9H,OAAO,EAAK,CAChB0H,MAAI,CAAC3F,WAAW,GAAG/B,OAAO,CAC5B,CAAE,IAEDuF,SAAS,KAAKwC,SAAS,GAAGxC,SAAS,gBAAG3H,MAAA,CAAA+G,OAAA,CAAAsB,aAAA,CAAC9H,QAAA,CAAA6J,OAAO,IAACvB,IAAI,EAAEA,IAAK,EAACD,OAAO,EAAEA,OAAQ,EAAE,CAC5E,CACD,CAAC,CAEX,CAAC,QAAAlH,MAAA,GAlLyB2I,cAAK,CAACC,SAAS,GAAAlJ,OAAA,CAC3BmJ,mBAAmB,GAAG,QAAQ,EAAAnJ,OAAA,CAC9BoJ,WAAW,GAAG,QAAQ,EAAApJ,OAAA,CAEtBc,YAAY,GAAiB,EACzC2G,IAAI,EAAE,QAAQ,EACd1B,MAAM,EAAE,KAAK,EACbV,sBAAsB,EAAEgE,6BAAS,GAAG,CAAC,GAAG,GAAG,EAC3C9D,6BAA6B,EAAE8D,6BAAS,GAAG,CAAC,GAAG,IAAI,CACrD,CAAC,EAAArJ,OAAA,MAAAD,MAAA","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
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;exports.__esModule = true;exports.MaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _react = _interopRequireWildcard(require("react"));
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;exports.__esModule = true;exports.getSafeMaskInputType = exports.MaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _react = _interopRequireWildcard(require("react"));
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
@@ -54,6 +54,22 @@ var _FixedIMaskInput = require("./FixedIMaskInput");var _excluded = ["mask", "ma
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
|
|
58
|
+
var getSafeMaskInputType = exports.getSafeMaskInputType = function getSafeMaskInputType(type) {
|
|
59
|
+
if (!type) {
|
|
60
|
+
return type;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
switch (type) {
|
|
64
|
+
case 'number':
|
|
65
|
+
case 'date':
|
|
66
|
+
case 'time':
|
|
67
|
+
case 'password':
|
|
68
|
+
return 'text';
|
|
69
|
+
default:
|
|
70
|
+
return type;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
57
73
|
|
|
58
74
|
|
|
59
75
|
|