@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,50 +1,40 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import type { Nullable } from '../../typings/utility-types';
|
|
4
3
|
interface Props {
|
|
4
|
+
/**
|
|
5
|
+
* Цвет фон пина
|
|
6
|
+
*/
|
|
5
7
|
backgroundColor: string;
|
|
8
|
+
/**
|
|
9
|
+
* Цвет границы пина
|
|
10
|
+
*/
|
|
6
11
|
borderColor: string;
|
|
12
|
+
/**
|
|
13
|
+
* Ширина границы пина
|
|
14
|
+
*/
|
|
7
15
|
borderWidth: number;
|
|
16
|
+
/**
|
|
17
|
+
* Смещение пина от края попапа. Край задаётся в пропе position вторым словом
|
|
18
|
+
*/
|
|
8
19
|
offset: number;
|
|
20
|
+
/**
|
|
21
|
+
* Ссылка на попап
|
|
22
|
+
*/
|
|
9
23
|
popupElement: Nullable<Element>;
|
|
24
|
+
/**
|
|
25
|
+
* Позиция попапа, по которой будет вычислено положение пина
|
|
26
|
+
*/
|
|
10
27
|
popupPosition: string;
|
|
28
|
+
/**
|
|
29
|
+
* Сторона пина без учёта границы.
|
|
30
|
+
* Пин представляет собой равносторонний треугольник, высота от попапа
|
|
31
|
+
* до "носика" пина будет соответствовать формуле (size* √3)/2
|
|
32
|
+
*/
|
|
11
33
|
size: number;
|
|
12
34
|
}
|
|
13
35
|
export declare class PopupPin extends React.Component<Props> {
|
|
14
36
|
static __KONTUR_REACT_UI__: string;
|
|
15
37
|
static displayName: string;
|
|
16
|
-
static propTypes: {
|
|
17
|
-
/**
|
|
18
|
-
* Цвет фон пина
|
|
19
|
-
*/
|
|
20
|
-
backgroundColor: PropTypes.Requireable<string>;
|
|
21
|
-
/**
|
|
22
|
-
* Цвет границы пина
|
|
23
|
-
*/
|
|
24
|
-
borderColor: PropTypes.Requireable<string>;
|
|
25
|
-
/**
|
|
26
|
-
* Ширина границы пина
|
|
27
|
-
*/
|
|
28
|
-
borderWidth: PropTypes.Requireable<number>;
|
|
29
|
-
/**
|
|
30
|
-
* Смещение пина от края попапа. Край задаётся в пропе position вторым словом
|
|
31
|
-
*/
|
|
32
|
-
offset: PropTypes.Requireable<number>;
|
|
33
|
-
/**
|
|
34
|
-
* Ссылка на попап
|
|
35
|
-
*/
|
|
36
|
-
popupElement: PropTypes.Requireable<any>;
|
|
37
|
-
/**
|
|
38
|
-
* Позиция попапа, по которой будет вычислено положение пина
|
|
39
|
-
*/
|
|
40
|
-
popupPosition: PropTypes.Requireable<string>;
|
|
41
|
-
/**
|
|
42
|
-
* Сторона пина без учёта границы.
|
|
43
|
-
* Пин представляет собой равносторонний треугольник, высота от попапа
|
|
44
|
-
* до "носика" пина будет соответствовать формуле (size* √3)/2
|
|
45
|
-
*/
|
|
46
|
-
size: PropTypes.Requireable<number>;
|
|
47
|
-
};
|
|
48
38
|
render(): React.JSX.Element | null;
|
|
49
39
|
private getPopupOppositeDirection;
|
|
50
40
|
private getWrapperStyle;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { cx } from "../../../lib/theming/Emotion";
|
|
4
|
+
import { PopupHelper } from "../PopupHelper";
|
|
5
|
+
import { styles } from "../PopupPinNew.styles";
|
|
6
|
+
import { PopupDataTids } from "../Popup";
|
|
7
|
+
export var PopupPinNew = /*#__PURE__*/function (_React$Component) {
|
|
8
|
+
function PopupPinNew() {
|
|
9
|
+
var _this;
|
|
10
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
11
|
+
args[_key] = arguments[_key];
|
|
12
|
+
}
|
|
13
|
+
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
14
|
+
_this.getPinInlineStyle = function (left, top) {
|
|
15
|
+
var _ref, _ref2;
|
|
16
|
+
var direction = _this.getPopupOppositeDirection();
|
|
17
|
+
if (!direction) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Добавляем запас в 1px, чтобы пофиксить случайные отделения пинов
|
|
22
|
+
var correctedLeft = left - 1;
|
|
23
|
+
var correctedTop = top - 1;
|
|
24
|
+
var correctedSize = _this.props.size + 1;
|
|
25
|
+
switch (direction) {
|
|
26
|
+
case 'top':
|
|
27
|
+
case 'bottom':
|
|
28
|
+
return _ref = {}, _ref[direction] = -_this.props.size + 'px', _ref.left = correctedLeft + 'px', _ref.width = correctedSize * 2 + 'px', _ref.height = correctedSize + 'px', _ref.backgroundColor = _this.props.backgroundColor, _ref;
|
|
29
|
+
case 'left':
|
|
30
|
+
case 'right':
|
|
31
|
+
return _ref2 = {}, _ref2[direction] = -_this.props.size + 'px', _ref2.top = correctedTop + 'px', _ref2.height = correctedSize * 2 + 'px', _ref2.width = correctedSize + 'px', _ref2.backgroundColor = _this.props.backgroundColor, _ref2;
|
|
32
|
+
default:
|
|
33
|
+
console.error("Can't get inline style: invalid direction '" + direction + "'. Returning default");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
_this.getPinCoordinates = function (popupElement) {
|
|
37
|
+
var popupRect = PopupHelper.getElementAbsoluteRect(popupElement);
|
|
38
|
+
var _this$positionObject = _this.positionObject,
|
|
39
|
+
direction = _this$positionObject.direction,
|
|
40
|
+
align = _this$positionObject.align;
|
|
41
|
+
switch (direction) {
|
|
42
|
+
case 'top':
|
|
43
|
+
return {
|
|
44
|
+
top: popupRect.height,
|
|
45
|
+
left: _this.getPinLeftCoordinate(popupRect, align)
|
|
46
|
+
};
|
|
47
|
+
case 'bottom':
|
|
48
|
+
return {
|
|
49
|
+
top: -2 * _this.props.size,
|
|
50
|
+
left: _this.getPinLeftCoordinate(popupRect, align)
|
|
51
|
+
};
|
|
52
|
+
case 'left':
|
|
53
|
+
return {
|
|
54
|
+
top: _this.getPinTopCoordinate(popupRect, align),
|
|
55
|
+
left: popupRect.width
|
|
56
|
+
};
|
|
57
|
+
case 'right':
|
|
58
|
+
return {
|
|
59
|
+
top: _this.getPinTopCoordinate(popupRect, align),
|
|
60
|
+
left: -2 * _this.props.size
|
|
61
|
+
};
|
|
62
|
+
default:
|
|
63
|
+
console.error("Can't get coordinate: invalid direction '" + direction + "'.");
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
_this.getPinTopCoordinate = function (popupRect, align) {
|
|
67
|
+
switch (align) {
|
|
68
|
+
case 'top':
|
|
69
|
+
return _this.props.offset;
|
|
70
|
+
case 'middle':
|
|
71
|
+
return popupRect.height / 2 - _this.props.size;
|
|
72
|
+
case 'bottom':
|
|
73
|
+
return popupRect.height - _this.props.offset - 2 * _this.props.size;
|
|
74
|
+
default:
|
|
75
|
+
console.error("Can't get coordinate: invalid align '" + align + "'.");
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
_this.getPinLeftCoordinate = function (popupRect, align) {
|
|
79
|
+
switch (align) {
|
|
80
|
+
case 'left':
|
|
81
|
+
return _this.props.offset;
|
|
82
|
+
case 'center':
|
|
83
|
+
return popupRect.width / 2 - _this.props.size;
|
|
84
|
+
case 'right':
|
|
85
|
+
return popupRect.width - _this.props.offset - 2 * _this.props.size;
|
|
86
|
+
default:
|
|
87
|
+
console.error("Can't get coordinate: invalid align '" + align + "'.");
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
_this.getPinDirectionalStyle = function () {
|
|
91
|
+
switch (_this.positionObject.direction) {
|
|
92
|
+
case 'top':
|
|
93
|
+
return styles.pinTop();
|
|
94
|
+
case 'bottom':
|
|
95
|
+
return styles.pinBottom();
|
|
96
|
+
case 'left':
|
|
97
|
+
return styles.pinLeft();
|
|
98
|
+
case 'right':
|
|
99
|
+
return styles.pinRight();
|
|
100
|
+
default:
|
|
101
|
+
console.error("Can't get directional style: invalid direction '" + _this.positionObject.direction + "'.");
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return _this;
|
|
105
|
+
}
|
|
106
|
+
_inheritsLoose(PopupPinNew, _React$Component);
|
|
107
|
+
var _proto = PopupPinNew.prototype;
|
|
108
|
+
_proto.render = function render() {
|
|
109
|
+
if (!this.props.popupElement) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
this.positionObject = PopupHelper.getPositionObject(this.props.popupPosition);
|
|
113
|
+
var coords = this.getPinCoordinates(this.props.popupElement);
|
|
114
|
+
if (!coords || !coords.left || !coords.top) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
var inlineStyle = this.getPinInlineStyle(coords.left, coords.top);
|
|
118
|
+
var directionalStyle = this.getPinDirectionalStyle();
|
|
119
|
+
if (!inlineStyle || !directionalStyle) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
123
|
+
"data-tid": PopupDataTids.popupPin,
|
|
124
|
+
className: cx(styles.pin(), directionalStyle),
|
|
125
|
+
style: inlineStyle
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
_proto.getPopupOppositeDirection = function getPopupOppositeDirection() {
|
|
129
|
+
var popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;
|
|
130
|
+
switch (popupDirection) {
|
|
131
|
+
case 'top':
|
|
132
|
+
return 'bottom';
|
|
133
|
+
case 'bottom':
|
|
134
|
+
return 'top';
|
|
135
|
+
case 'left':
|
|
136
|
+
return 'right';
|
|
137
|
+
case 'right':
|
|
138
|
+
return 'left';
|
|
139
|
+
default:
|
|
140
|
+
console.error("Can't get opposite direction: invalid direction '" + popupDirection + "'");
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
return PopupPinNew;
|
|
144
|
+
}(React.Component);
|
|
145
|
+
PopupPinNew.__KONTUR_REACT_UI__ = 'PopupPin';
|
|
146
|
+
PopupPinNew.displayName = 'PopupPin';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","cx","PopupHelper","styles","PopupDataTids","PopupPinNew","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getPinInlineStyle","left","top","_ref","_ref2","direction","getPopupOppositeDirection","correctedLeft","correctedTop","correctedSize","props","size","width","height","backgroundColor","console","error","getPinCoordinates","popupElement","popupRect","getElementAbsoluteRect","_this$positionObject","positionObject","align","getPinLeftCoordinate","getPinTopCoordinate","offset","getPinDirectionalStyle","pinTop","pinBottom","pinLeft","pinRight","_inheritsLoose","_proto","prototype","render","getPositionObject","popupPosition","coords","inlineStyle","directionalStyle","createElement","popupPin","className","pin","style","popupDirection","Component","__KONTUR_REACT_UI__","displayName"],"sources":["PopupPinNew.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport type { PositionObject, Rect } from './PopupHelper';\nimport { PopupHelper } from './PopupHelper';\nimport { styles } from './PopupPinNew.styles';\nimport { PopupDataTids } from './Popup';\n\ninterface PopupPinProps {\n /** Цвет фона пина */\n backgroundColor: string;\n\n /** Смещение пина от края попапа. Край задаётся в пропе position вторым словом */\n offset: number;\n\n /** Ссылка на попап */\n popupElement?: Nullable<Element>;\n\n /** Позиция попапа, по которой будет вычислено положение пина */\n popupPosition: string;\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: number;\n}\n\nexport class PopupPinNew extends React.Component<PopupPinProps> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n public static displayName = 'PopupPin';\n\n private positionObject!: PositionObject;\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n this.positionObject = PopupHelper.getPositionObject(this.props.popupPosition);\n\n const coords = this.getPinCoordinates(this.props.popupElement);\n if (!coords || !coords.left || !coords.top) {\n return null;\n }\n\n const inlineStyle = this.getPinInlineStyle(coords.left, coords.top);\n const directionalStyle = this.getPinDirectionalStyle();\n if (!inlineStyle || !directionalStyle) {\n return null;\n }\n\n return (\n <div data-tid={PopupDataTids.popupPin} className={cx(styles.pin(), directionalStyle)} style={inlineStyle}></div>\n );\n }\n\n private getPopupOppositeDirection() {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n console.error(`Can't get opposite direction: invalid direction '${popupDirection}'`);\n }\n }\n\n private getPinInlineStyle = (left: number, top: number) => {\n const direction = this.getPopupOppositeDirection();\n if (!direction) {\n return;\n }\n\n // Добавляем запас в 1px, чтобы пофиксить случайные отделения пинов\n const correctedLeft = left - 1;\n const correctedTop = top - 1;\n const correctedSize = this.props.size + 1;\n\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -this.props.size + 'px',\n left: correctedLeft + 'px',\n width: correctedSize * 2 + 'px',\n height: correctedSize + 'px',\n backgroundColor: this.props.backgroundColor,\n };\n case 'left':\n case 'right':\n return {\n [direction]: -this.props.size + 'px',\n top: correctedTop + 'px',\n height: correctedSize * 2 + 'px',\n width: correctedSize + 'px',\n backgroundColor: this.props.backgroundColor,\n };\n default:\n console.error(`Can't get inline style: invalid direction '${direction}'. Returning default`);\n }\n };\n\n private getPinCoordinates = (popupElement: Element) => {\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n const { direction, align } = this.positionObject;\n switch (direction) {\n case 'top':\n return {\n top: popupRect.height,\n left: this.getPinLeftCoordinate(popupRect, align),\n };\n case 'bottom':\n return {\n top: -2 * this.props.size,\n left: this.getPinLeftCoordinate(popupRect, align),\n };\n case 'left':\n return {\n top: this.getPinTopCoordinate(popupRect, align),\n left: popupRect.width,\n };\n case 'right':\n return {\n top: this.getPinTopCoordinate(popupRect, align),\n left: -2 * this.props.size,\n };\n default:\n console.error(`Can't get coordinate: invalid direction '${direction}'.`);\n }\n };\n\n private getPinTopCoordinate = (popupRect: Rect, align: string) => {\n switch (align) {\n case 'top':\n return this.props.offset;\n case 'middle':\n return popupRect.height / 2 - this.props.size;\n case 'bottom':\n return popupRect.height - this.props.offset - 2 * this.props.size;\n default:\n console.error(`Can't get coordinate: invalid align '${align}'.`);\n }\n };\n\n private getPinLeftCoordinate = (popupRect: Rect, align: string) => {\n switch (align) {\n case 'left':\n return this.props.offset;\n case 'center':\n return popupRect.width / 2 - this.props.size;\n case 'right':\n return popupRect.width - this.props.offset - 2 * this.props.size;\n default:\n console.error(`Can't get coordinate: invalid align '${align}'.`);\n }\n };\n\n private getPinDirectionalStyle = () => {\n switch (this.positionObject.direction) {\n case 'top':\n return styles.pinTop();\n case 'bottom':\n return styles.pinBottom();\n case 'left':\n return styles.pinLeft();\n case 'right':\n return styles.pinRight();\n default:\n console.error(`Can't get directional style: invalid direction '${this.positionObject.direction}'.`);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Nullable } from '../../typings/utility-types';
|
|
3
|
+
interface PopupPinProps {
|
|
4
|
+
/** Цвет фона пина */
|
|
5
|
+
backgroundColor: string;
|
|
6
|
+
/** Смещение пина от края попапа. Край задаётся в пропе position вторым словом */
|
|
7
|
+
offset: number;
|
|
8
|
+
/** Ссылка на попап */
|
|
9
|
+
popupElement?: Nullable<Element>;
|
|
10
|
+
/** Позиция попапа, по которой будет вычислено положение пина */
|
|
11
|
+
popupPosition: string;
|
|
12
|
+
/**
|
|
13
|
+
* Сторона пина без учёта границы.
|
|
14
|
+
* Пин представляет собой равносторонний треугольник, высота от попапа
|
|
15
|
+
* до "носика" пина будет соответствовать формуле (size* √3)/2
|
|
16
|
+
*/
|
|
17
|
+
size: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class PopupPinNew extends React.Component<PopupPinProps> {
|
|
20
|
+
static __KONTUR_REACT_UI__: string;
|
|
21
|
+
static displayName: string;
|
|
22
|
+
private positionObject;
|
|
23
|
+
render(): React.JSX.Element | null;
|
|
24
|
+
private getPopupOppositeDirection;
|
|
25
|
+
private getPinInlineStyle;
|
|
26
|
+
private getPinCoordinates;
|
|
27
|
+
private getPinTopCoordinate;
|
|
28
|
+
private getPinLeftCoordinate;
|
|
29
|
+
private getPinDirectionalStyle;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
3
|
+
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
4
|
+
export var styles = memoizeStyle({
|
|
5
|
+
pin: function pin() {
|
|
6
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n position: absolute;\n "])));
|
|
7
|
+
},
|
|
8
|
+
pinTop: function pinTop() {
|
|
9
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n "])));
|
|
10
|
+
},
|
|
11
|
+
pinBottom: function pinBottom() {
|
|
12
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n "])));
|
|
13
|
+
},
|
|
14
|
+
pinLeft: function pinLeft() {
|
|
15
|
+
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n "])));
|
|
16
|
+
},
|
|
17
|
+
pinRight: function pinRight() {
|
|
18
|
+
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(100% 0, 0 50%, 100% 100%);\n "])));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["css","memoizeStyle","styles","pin","_templateObject","_taggedTemplateLiteralLoose","pinTop","_templateObject2","pinBottom","_templateObject3","pinLeft","_templateObject4","pinRight","_templateObject5"],"sources":["PopupPinNew.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\n\nexport const styles = memoizeStyle({\n pin() {\n return css`\n position: absolute;\n `;\n },\n\n pinTop() {\n return css`\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n `;\n },\n\n pinBottom() {\n return css`\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n `;\n },\n\n pinLeft() {\n return css`\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n `;\n },\n\n pinRight() {\n return css`\n clip-path: polygon(100% 0, 0 50%, 100% 100%);\n `;\n },\n});\n"],"mappings":"4LAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;EACjCE,GAAG,WAAAA,IAAA,EAAG;IACJ,OAAOH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;EAGZ,CAAC;;EAEDC,MAAM,WAAAA,OAAA,EAAG;IACP,OAAON,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,2BAAA;;;EAGZ,CAAC;;EAEDG,SAAS,WAAAA,UAAA,EAAG;IACV,OAAOR,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,2BAAA;;;EAGZ,CAAC;;EAEDK,OAAO,WAAAA,QAAA,EAAG;IACR,OAAOV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,2BAAA;;;EAGZ,CAAC;;EAEDO,QAAQ,WAAAA,SAAA,EAAG;IACT,OAAOZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,2BAAA;;;EAGZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import type { HTMLProps } from '../../typings/html';
|
|
4
4
|
import type { PopupPositionsType } from '../Popup';
|
|
5
5
|
import type { CommonProps } from '../CommonWrapper';
|
|
6
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
6
7
|
import type { MenuProps } from '../Menu';
|
|
7
8
|
export * from './tids';
|
|
8
9
|
export interface PopupMenuCaptionProps {
|
|
@@ -80,6 +81,7 @@ export declare class PopupMenu extends React.Component<PopupMenuProps, PopupMenu
|
|
|
80
81
|
private captionWrapper;
|
|
81
82
|
private savedFocusableElement;
|
|
82
83
|
private menu;
|
|
84
|
+
getRootNode: TGetRootNode;
|
|
83
85
|
private setRootNode;
|
|
84
86
|
render(): JSX.Element;
|
|
85
87
|
private renderMain;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import ReactDOM from 'react-dom';
|
|
4
|
-
import propTypes from 'prop-types';
|
|
5
|
-
import { globalObject } from '@skbkontur/global-object';
|
|
6
|
-
import { safePropTypesInstanceOf } from "../../../lib/SSRSafe";
|
|
7
4
|
import { PORTAL_INLET_ATTR } from "../RenderContainer";
|
|
8
5
|
|
|
9
6
|
// Заглушка нужна для корректной гидрации порталов после SSR,
|
|
@@ -67,10 +64,5 @@ export var RenderInnerContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
67
64
|
}(React.Component);
|
|
68
65
|
RenderInnerContainer.__KONTUR_REACT_UI__ = 'RenderInnerContainer';
|
|
69
66
|
RenderInnerContainer.displayName = 'RenderInnerContainer';
|
|
70
|
-
Portal.propTypes = {
|
|
71
|
-
container: safePropTypesInstanceOf(globalObject.HTMLElement),
|
|
72
|
-
rt_rootID: propTypes.string.isRequired,
|
|
73
|
-
children: propTypes.node.isRequired
|
|
74
|
-
};
|
|
75
67
|
Portal.__KONTUR_REACT_UI__ = 'Portal';
|
|
76
68
|
Portal.displayName = 'Portal';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ReactDOM","
|
|
1
|
+
{"version":3,"names":["React","ReactDOM","PORTAL_INLET_ATTR","SSRPlaceholder","createElement","Portal","_ref","_ref2","container","rt_rootID","children","Fragment","createPortal","RenderInnerContainer","_React$Component","apply","arguments","_inheritsLoose","_proto","prototype","render","_this$props","props","anchor","domContainer","rootId","inner","key","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderInnerContainer.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { Nullable } from '../../typings/utility-types';\n\nimport type { PortalProps, RenderContainerProps } from './RenderContainerTypes';\nimport { PORTAL_INLET_ATTR } from './RenderContainer';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal = ({ container, rt_rootID, children }: PortalProps) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript {...{ [PORTAL_INLET_ATTR]: rt_rootID }} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n public static displayName = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n\nPortal.__KONTUR_REACT_UI__ = 'Portal';\nPortal.displayName = 'Portal';\n"],"mappings":"sEAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,WAAW;;;;;AAKhC,SAASC,iBAAiB,QAAQ,mBAAmB;;;;;;;AAOrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAA,uBAASH,KAAA,CAAAI,aAAA,aAAQ,WAAQ,iBAAiB,EAAE,CAAC;;AAEjE,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAAwD,KAAAC,KAAA,KAAlDC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS,CAAEC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;EACrD;EACA;IACEV,KAAA,CAAAI,aAAA,CAACJ,KAAK,CAACW,QAAQ;IACZH,SAAS,gBAAGP,QAAQ,CAACW,YAAY,CAACF,QAAQ,EAAEF,SAAS,CAAC,gBAAGR,KAAA,CAAAI,aAAA,CAACD,cAAc,MAAE,CAAC;IAC3EK,SAAS,gBAAGR,KAAA,CAAAI,aAAA,cAAAG,KAAA,OAAAA,KAAA,CAAiBL,iBAAiB,IAAGO,SAAS,EAAAF,KAAA,CAAK,CAAC,gBAAGP,KAAA,CAAAI,aAAA,CAACD,cAAc,MAAE;IACvE,CAAC;;AAErB,CAAC;;AAED,WAAaU,oBAAoB,0BAAAC,gBAAA,YAAAD,qBAAA,UAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA,WAAAC,cAAA,CAAAJ,oBAAA,EAAAC,gBAAA,MAAAI,MAAA,GAAAL,oBAAA,CAAAM,SAAA,CAAAD,MAAA;;;;EAIxBE,MAAM,GAAb,SAAAA,OAAA,EAAgB;IACd,IAAAC,WAAA,GAAmD,IAAI,CAACC,KAAK,CAArDC,MAAM,GAAAF,WAAA,CAANE,MAAM,CAAEb,QAAQ,GAAAW,WAAA,CAARX,QAAQ,CAAEc,YAAY,GAAAH,WAAA,CAAZG,YAAY,CAAEC,MAAM,GAAAJ,WAAA,CAANI,MAAM;IAC9C,IAAIC,KAAK,GAAGH,MAAM;;IAElB,IAAIb,QAAQ,EAAE;MACZgB,KAAK;MACH1B,KAAA,CAAAI,aAAA,CAACJ,KAAK,CAACW,QAAQ;MACZY,MAAM;MACPvB,KAAA,CAAAI,aAAA,CAACC,MAAM,IAACsB,GAAG,EAAC,YAAY,EAAClB,SAAS,EAAEgB,MAAO,EAACjB,SAAS,EAAEgB,YAAa;MACjEd;MACK;MACM,CACjB;;IACH;;IAEA,OAAOgB,KAAK;EACd,CAAC,QAAAb,oBAAA,GApBuCb,KAAK,CAAC4B,SAAS,EAA5Cf,oBAAoB,CACjBgB,mBAAmB,GAAG,sBAAsB,CAD/ChB,oBAAoB,CAEjBiB,WAAW,GAAG,sBAAsB;;;AAqBpDzB,MAAM,CAACwB,mBAAmB,GAAG,QAAQ;AACrCxB,MAAM,CAACyB,WAAW,GAAG,QAAQ","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import propTypes from 'prop-types';
|
|
3
2
|
import type { Nullable } from '../../typings/utility-types';
|
|
4
3
|
import type { PortalProps, RenderContainerProps } from './RenderContainerTypes';
|
|
5
4
|
interface RenderInnerContainerProps extends RenderContainerProps {
|
|
@@ -8,11 +7,6 @@ interface RenderInnerContainerProps extends RenderContainerProps {
|
|
|
8
7
|
}
|
|
9
8
|
export declare const Portal: {
|
|
10
9
|
({ container, rt_rootID, children }: PortalProps): React.JSX.Element;
|
|
11
|
-
propTypes: {
|
|
12
|
-
container: propTypes.Requireable<HTMLElement>;
|
|
13
|
-
rt_rootID: propTypes.Validator<string>;
|
|
14
|
-
children: propTypes.Validator<NonNullable<propTypes.ReactNodeLike>>;
|
|
15
|
-
};
|
|
16
10
|
__KONTUR_REACT_UI__: string;
|
|
17
11
|
displayName: string;
|
|
18
12
|
};
|
|
@@ -42,7 +42,8 @@ export var RenderLayer = rootNode(_class = (_RenderLayer = /*#__PURE__*/function
|
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
45
|
-
var
|
|
45
|
+
var _this$getProps = this.getProps(),
|
|
46
|
+
active = _this$getProps.active;
|
|
46
47
|
if (!prevProps.active && active) {
|
|
47
48
|
this.attachListeners();
|
|
48
49
|
}
|
|
@@ -86,15 +87,6 @@ export var RenderLayer = rootNode(_class = (_RenderLayer = /*#__PURE__*/function
|
|
|
86
87
|
(_globalObject$documen2 = globalObject.document) == null || _globalObject$documen2.removeEventListener('ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement ? 'pointerup' : 'mousedown', this.handleNativeDocClick);
|
|
87
88
|
};
|
|
88
89
|
return RenderLayer;
|
|
89
|
-
}(React.Component), _RenderLayer.__KONTUR_REACT_UI__ = 'RenderLayer', _RenderLayer.displayName = 'RenderLayer', _RenderLayer.
|
|
90
|
-
active: function active(props, propName, componentName) {
|
|
91
|
-
var active = props.active,
|
|
92
|
-
onClickOutside = props.onClickOutside,
|
|
93
|
-
onFocusOutside = props.onFocusOutside;
|
|
94
|
-
if (active && !(onClickOutside || onFocusOutside)) {
|
|
95
|
-
return new Error("[" + componentName + "]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.");
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}, _RenderLayer.defaultProps = {
|
|
90
|
+
}(React.Component), _RenderLayer.__KONTUR_REACT_UI__ = 'RenderLayer', _RenderLayer.displayName = 'RenderLayer', _RenderLayer.defaultProps = {
|
|
99
91
|
active: true
|
|
100
92
|
}, _RenderLayer)) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","RenderLayer","_class","_RenderLayer","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","Element","onClickOutside","_inheritsLoose","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","detachListeners","componentWillUnmount","render","createElement","_extends","rootNodeRef","setRootNode","Children","only","children","getAnchorElement","_globalObject$documen","addEventListener","document","documentElement","_globalObject$documen2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName"
|
|
1
|
+
{"version":3,"names":["React","globalObject","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","RenderLayer","_class","_RenderLayer","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","Element","onClickOutside","_inheritsLoose","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","_this$getProps","detachListeners","componentWillUnmount","render","createElement","_extends","rootNodeRef","setRootNode","Children","only","children","getAnchorElement","_globalObject$documen","addEventListener","document","documentElement","_globalObject$documen2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderLayer.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport type { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const { active } = this.getProps();\n\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside);\n globalObject.addEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.addEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.removeEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getAnchorNode();\n\n if (!node || (isInstanceOf(target, globalObject.Element) && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|