@skbkontur/react-ui 0.0.0-68e286f9fe → 0.0.0-6911f001e4
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 +182 -0
- package/README.md +6 -6
- package/cjs/components/Autocomplete/Autocomplete.d.ts +18 -4
- package/cjs/components/Autocomplete/Autocomplete.js +73 -15
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +4 -1
- package/cjs/components/Button/Button.js +47 -17
- 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/Button/ButtonArrow.js +13 -14
- package/cjs/components/Button/ButtonArrow.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 +4 -4
- package/cjs/components/Checkbox/Checkbox.js +16 -19
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +20 -7
- package/cjs/components/ComboBox/ComboBox.js +19 -1
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +5 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js +9 -1
- 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 +2 -3
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +5 -1
- package/cjs/components/DateInput/DateInput.js +9 -4
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +2 -0
- package/cjs/components/DatePicker/DatePicker.js +1 -0
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/MobilePicker.js +1 -0
- package/cjs/components/DatePicker/MobilePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.js +1 -0
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -0
- 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/FileUploader/FileUploader.js +1 -0
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +12 -2
- package/cjs/components/FxInput/FxInput.js +141 -58
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/FxInput/FxInputRestoreBtn.js +2 -3
- package/cjs/components/FxInput/FxInputRestoreBtn.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +2 -0
- package/cjs/components/Gapped/Gapped.js +1 -0
- 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 +2 -0
- package/cjs/components/Group/Group.js +1 -0
- package/cjs/components/Group/Group.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 +6 -5
- package/cjs/components/Input/Input.js +17 -47
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.d.ts +0 -1
- package/cjs/components/Input/Input.styles.js +8 -19
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +4 -1
- package/cjs/components/Kebab/Kebab.js +10 -5
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +2 -0
- package/cjs/components/Link/Link.js +10 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +3 -0
- package/cjs/components/Loader/Loader.js +6 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +107 -78
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -2
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +9 -0
- package/cjs/components/MaskedInput/MaskedInput.js +43 -4
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +3 -0
- package/cjs/components/MenuItem/MenuItem.js +15 -2
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.styles.d.ts +3 -1
- package/cjs/components/MenuItem/MenuItem.styles.js +35 -21
- package/cjs/components/MenuItem/MenuItem.styles.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 -1
- package/cjs/components/Paging/Paging.js +120 -24
- 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 +5 -5
- package/cjs/components/PasswordInput/PasswordInput.js +21 -22
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +4 -1
- package/cjs/components/Radio/Radio.js +7 -4
- 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 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +4 -1
- package/cjs/components/Select/Select.js +11 -6
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +3 -1
- package/cjs/components/SidePage/SidePage.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/SingleToast/SingleToast.d.ts +32 -2
- package/cjs/components/SingleToast/SingleToast.js +58 -3
- package/cjs/components/SingleToast/SingleToast.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +2 -0
- package/cjs/components/Spinner/Spinner.js +1 -0
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +2 -0
- package/cjs/components/Sticky/Sticky.js +1 -0
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +2 -0
- package/cjs/components/Switcher/Switcher.js +1 -0
- package/cjs/components/Switcher/Switcher.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 +4 -1
- package/cjs/components/Textarea/Textarea.js +9 -4
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.styles.js +3 -3
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +56 -9
- package/cjs/components/Toast/Toast.js +104 -11
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastView.d.ts +7 -1
- package/cjs/components/Toast/ToastView.js +22 -5
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toast/ToastView.styles.d.ts +4 -0
- package/cjs/components/Toast/ToastView.styles.js +43 -9
- package/cjs/components/Toast/ToastView.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +4 -1
- package/cjs/components/Toggle/Toggle.js +6 -5
- 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 +6 -1
- package/cjs/components/TokenInput/TokenInput.js +43 -30
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +12 -5
- package/cjs/components/Tooltip/Tooltip.js +100 -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 +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +4 -4
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.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/CustomComboBox/ComboBoxView.d.ts +8 -4
- package/cjs/internal/CustomComboBox/ComboBoxView.js +35 -25
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +7 -2
- package/cjs/internal/CustomComboBox/CustomComboBox.js +17 -5
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.js +1 -1
- 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 +4 -3
- package/cjs/internal/InputLikeText/InputLikeText.js +13 -14
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +1 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +23 -21
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.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/MenuMessage/MenuMessage.js +13 -1
- package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -1
- package/cjs/internal/MenuMessage/MenuMessage.styles.d.ts +3 -1
- package/cjs/internal/MenuMessage/MenuMessage.styles.js +24 -8
- package/cjs/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +9 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +24 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.styles.d.ts +7 -3
- package/cjs/internal/MobilePopup/MobilePopup.styles.js +55 -19
- package/cjs/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +36 -18
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +23 -3
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -0
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +31 -33
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +3 -2
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +22 -13
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +2 -0
- package/cjs/internal/Popup/Popup.js +14 -3
- package/cjs/internal/Popup/Popup.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/RenderLayer/RenderLayer.d.ts +2 -0
- package/cjs/internal/RenderLayer/RenderLayer.js +1 -0
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +5 -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 +2 -0
- package/cjs/internal/ZIndex/ZIndex.js +1 -0
- 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 +147 -28
- package/cjs/internal/themes/BasicTheme.js +800 -33
- package/cjs/internal/themes/BasicTheme.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_4.d.ts +1 -0
- package/cjs/internal/themes/DarkTheme5_4.js +18 -0
- package/cjs/internal/themes/DarkTheme5_4.js.map +1 -0
- package/cjs/internal/themes/LightTheme5_4.d.ts +1 -0
- package/cjs/internal/themes/LightTheme5_4.js +18 -0
- package/cjs/internal/themes/LightTheme5_4.js.map +1 -0
- package/cjs/internal/themes/consts.d.ts +8 -0
- package/cjs/internal/themes/consts.js +8 -0
- package/cjs/internal/themes/consts.js.map +1 -0
- package/cjs/lib/__stories__/Blink.creevey.mts +90 -0
- package/cjs/lib/blink.d.ts +15 -0
- package/cjs/lib/blink.js +65 -0
- package/cjs/lib/blink.js.map +1 -0
- package/cjs/lib/delay.mts +3 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +6 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +6 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +13 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.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/size/SizeControlContext.d.ts +6 -0
- package/cjs/lib/size/SizeControlContext.js +16 -0
- package/cjs/lib/size/SizeControlContext.js.map +1 -0
- package/cjs/lib/size/SizeDecorator.d.ts +33 -0
- package/cjs/lib/size/SizeDecorator.js +41 -0
- package/cjs/lib/size/SizeDecorator.js.map +1 -0
- package/cjs/lib/size/constants.d.ts +2 -0
- package/cjs/lib/size/constants.js +3 -0
- package/cjs/lib/size/constants.js.map +1 -0
- package/cjs/lib/size/index.d.ts +1 -0
- package/cjs/lib/size/index.js +1 -0
- package/cjs/lib/size/index.js.map +1 -0
- package/cjs/lib/size/useSizeControl.d.ts +2 -0
- package/cjs/lib/size/useSizeControl.js +10 -0
- package/cjs/lib/size/useSizeControl.js.map +1 -0
- 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 +13 -0
- package/cjs/lib/utils.js +34 -1
- package/cjs/lib/utils.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +72 -32
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +18 -4
- package/components/Button/Button/Button.js +45 -24
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +4 -1
- 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/Button/ButtonArrow/ButtonArrow.js +1 -3
- package/components/Button/ButtonArrow/ButtonArrow.js.map +1 -1
- 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 +12 -13
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +4 -4
- package/components/ComboBox/ComboBox/ComboBox.js +1 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +20 -7
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +6 -2
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +5 -0
- package/components/CurrencyInput/constants/constants.js +0 -1
- package/components/CurrencyInput/constants/constants.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +9 -8
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +5 -1
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +2 -0
- package/components/DatePicker/MobilePicker/MobilePicker.js +1 -0
- package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +1 -0
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -0
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
- package/components/FileUploader/FileUploader/FileUploader.js +1 -0
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FxInput/FxInput/FxInput.js +121 -65
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +12 -2
- package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js +2 -2
- package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js.map +1 -1
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +2 -0
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Group/Group.d.ts +2 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +2 -0
- package/components/Input/Input/Input.js +23 -52
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +6 -5
- package/components/Input/Input.styles/Input.styles.js +9 -13
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Input/Input.styles.d.ts +0 -1
- package/components/Kebab/Kebab/Kebab.js +7 -7
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +4 -1
- package/components/Link/Link/Link.js +4 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +2 -0
- package/components/Loader/Loader/Loader.js +2 -1
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +3 -0
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +81 -66
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +3 -2
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js +28 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +9 -0
- package/components/MenuItem/MenuItem/MenuItem.js +12 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +3 -0
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +25 -19
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +3 -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 +95 -25
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +13 -1
- 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 +13 -19
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +5 -5
- package/components/Radio/Radio/Radio.js +7 -7
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +4 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +2 -0
- package/components/Select/Select/Select.js +17 -15
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +4 -1
- package/components/SidePage/SidePage/SidePage.js +2 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- 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/SingleToast/SingleToast/SingleToast.js +37 -12
- package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +32 -2
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +2 -0
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +2 -0
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +2 -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 +7 -6
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +4 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Toast/Toast/Toast.js +86 -23
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +56 -9
- package/components/Toast/ToastView/ToastView.js +17 -5
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toast/ToastView.d.ts +7 -1
- package/components/Toast/ToastView.styles/ToastView.styles.js +17 -5
- package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
- package/components/Toast/ToastView.styles.d.ts +4 -0
- package/components/Toggle/Toggle/Toggle.js +10 -10
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +4 -1
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +2 -0
- package/components/TokenInput/TokenInput/TokenInput.js +47 -42
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +6 -1
- package/components/Tooltip/Tooltip/Tooltip.js +69 -19
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +12 -5
- 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/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +46 -45
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +8 -4
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +12 -7
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +7 -2
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
- package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- 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 +17 -28
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +21 -16
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +1 -0
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +2 -0
- package/internal/MenuMessage/MenuMessage/MenuMessage.js +12 -1
- package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js +12 -6
- package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +19 -6
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +9 -0
- package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js +24 -12
- package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -3
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +23 -9
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -2
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +29 -23
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js +12 -9
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +3 -2
- package/internal/Popup/Popup/Popup.js +10 -3
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +2 -0
- 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/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -0
- package/internal/ThemePlayground/Playground/Playground.js +8 -5
- 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.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +2 -0
- 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 +267 -44
- package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +147 -28
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +17 -0
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -0
- package/internal/themes/DarkTheme5_4/package.json +6 -0
- package/internal/themes/DarkTheme5_4.d.ts +1 -0
- package/internal/themes/LightTheme5_4/LightTheme5_4.js +17 -0
- package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -0
- package/internal/themes/LightTheme5_4/package.json +6 -0
- package/internal/themes/LightTheme5_4.d.ts +1 -0
- package/internal/themes/consts/consts.js +9 -0
- package/internal/themes/consts/consts.js.map +1 -0
- package/internal/themes/consts/package.json +6 -0
- package/internal/themes/consts.d.ts +8 -0
- package/lib/__stories__/Blink.creevey.mts +90 -0
- package/lib/blink/blink.js +63 -0
- package/lib/blink/blink.js.map +1 -0
- package/lib/blink/package.json +6 -0
- package/lib/blink.d.ts +15 -0
- package/lib/delay.d.mts +1 -0
- package/lib/delay.mts +3 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +6 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +7 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +6 -0
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
- package/lib/size/SizeControlContext/SizeControlContext.js +7 -0
- package/lib/size/SizeControlContext/SizeControlContext.js.map +1 -0
- package/lib/size/SizeControlContext/package.json +6 -0
- package/lib/size/SizeControlContext.d.ts +6 -0
- package/lib/size/SizeDecorator/SizeDecorator.js +41 -0
- package/lib/size/SizeDecorator/SizeDecorator.js.map +1 -0
- package/lib/size/SizeDecorator/package.json +6 -0
- package/lib/size/SizeDecorator.d.ts +33 -0
- package/lib/size/constants/constants.js +1 -0
- package/lib/size/constants/constants.js.map +1 -0
- package/lib/size/constants/package.json +6 -0
- package/lib/size/constants.d.ts +2 -0
- package/lib/size/index/index.js +1 -0
- package/lib/size/index/index.js.map +1 -0
- package/lib/size/index/package.json +6 -0
- package/lib/size/index.d.ts +1 -0
- package/lib/size/package.json +6 -0
- package/lib/size/useSizeControl/package.json +6 -0
- package/lib/size/useSizeControl/useSizeControl.js +7 -0
- package/lib/size/useSizeControl/useSizeControl.js.map +1 -0
- package/lib/size/useSizeControl.d.ts +2 -0
- 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 +26 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +13 -0
- package/package.json +9 -15
- package/cjs/components/Autocomplete/Autocomplete.md +0 -113
- package/cjs/components/Button/Button.md +0 -261
- package/cjs/components/Calendar/Calendar.md +0 -276
- package/cjs/components/Calendar/CalendarDay.md +0 -70
- package/cjs/components/Center/Center.md +0 -26
- package/cjs/components/Checkbox/Checkbox.md +0 -171
- package/cjs/components/ComboBox/ComboBox.md +0 -574
- package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
- package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/cjs/components/DateInput/DateInput.md +0 -111
- package/cjs/components/DatePicker/DatePicker.md +0 -368
- package/cjs/components/Dropdown/Dropdown.md +0 -45
- package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
- package/cjs/components/FileUploader/FileUploader.md +0 -131
- package/cjs/components/FxInput/FxInput.md +0 -31
- package/cjs/components/Gapped/Gapped.md +0 -44
- package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
- package/cjs/components/Group/Group.md +0 -19
- package/cjs/components/Hint/Hint.md +0 -86
- package/cjs/components/Input/Input.md +0 -86
- package/cjs/components/Kebab/Kebab.md +0 -306
- package/cjs/components/Link/Link.md +0 -182
- package/cjs/components/Loader/Loader.md +0 -33
- package/cjs/components/MaskedInput/MaskedInput.md +0 -114
- package/cjs/components/MenuFooter/MenuFooter.md +0 -27
- package/cjs/components/MenuHeader/MenuHeader.md +0 -35
- package/cjs/components/MenuItem/MenuItem.md +0 -139
- package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
- package/cjs/components/MiniModal/MiniModal.md +0 -231
- package/cjs/components/Modal/Modal.md +0 -56
- package/cjs/components/Paging/Paging.md +0 -57
- package/cjs/components/PasswordInput/PasswordInput.md +0 -29
- package/cjs/components/Radio/Radio.md +0 -57
- package/cjs/components/RadioGroup/RadioGroup.md +0 -44
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
- package/cjs/components/Select/Select.md +0 -113
- package/cjs/components/SidePage/SidePage.md +0 -65
- package/cjs/components/SingleToast/SingleToast.md +0 -36
- package/cjs/components/Spinner/Spinner.md +0 -36
- package/cjs/components/Sticky/Sticky.md +0 -28
- package/cjs/components/Switcher/Switcher.md +0 -111
- package/cjs/components/Tabs/Tab.md +0 -73
- package/cjs/components/Tabs/Tabs.md +0 -54
- package/cjs/components/Textarea/Textarea.md +0 -58
- package/cjs/components/Toast/Toast.md +0 -69
- package/cjs/components/Toggle/Toggle.md +0 -110
- package/cjs/components/Token/Token.md +0 -48
- package/cjs/components/TokenInput/TokenInput.md +0 -277
- package/cjs/components/Tooltip/Tooltip.md +0 -322
- package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
- package/cjs/internal/DataTids/DATATIDS.md +0 -12
- package/cjs/internal/DataTids/DataTids.d.ts +0 -12
- package/cjs/internal/DataTids/DataTids.js +0 -50
- package/cjs/internal/DataTids/DataTids.js.map +0 -1
- package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/cjs/internal/DataTids/DataTids.styles.js +0 -42
- package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
- package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/cjs/internal/DataTids/componentsDataTids.js +0 -15
- package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
- package/cjs/internal/ThemePlayground/Playground.md +0 -7
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
- package/cjs/lib/theming/ThemeContext.md +0 -265
- package/components/Autocomplete/Autocomplete.md +0 -113
- package/components/Button/Button.md +0 -261
- package/components/Calendar/Calendar.md +0 -276
- package/components/Calendar/CalendarDay.md +0 -70
- package/components/Center/Center.md +0 -26
- package/components/Checkbox/Checkbox.md +0 -171
- package/components/ComboBox/ComboBox.md +0 -574
- package/components/CurrencyInput/CurrencyInput.md +0 -39
- package/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/components/DateInput/DateInput.md +0 -111
- package/components/DatePicker/DatePicker.md +0 -368
- package/components/Dropdown/Dropdown.md +0 -45
- package/components/DropdownMenu/DropdownMenu.md +0 -290
- package/components/FileUploader/FileUploader.md +0 -131
- package/components/FxInput/FxInput.md +0 -31
- package/components/Gapped/Gapped.md +0 -44
- package/components/GlobalLoader/GlobalLoader.md +0 -97
- package/components/Group/Group.md +0 -19
- package/components/Hint/Hint.md +0 -86
- package/components/Input/Input.md +0 -86
- package/components/Kebab/Kebab.md +0 -306
- package/components/Link/Link.md +0 -182
- package/components/Loader/Loader.md +0 -33
- package/components/MaskedInput/MaskedInput.md +0 -114
- package/components/MenuFooter/MenuFooter.md +0 -27
- package/components/MenuHeader/MenuHeader.md +0 -35
- package/components/MenuItem/MenuItem.md +0 -139
- package/components/MenuSeparator/MenuSeparator.md +0 -14
- package/components/MiniModal/MiniModal.md +0 -231
- package/components/Modal/Modal.md +0 -56
- package/components/Paging/Paging.md +0 -57
- package/components/PasswordInput/PasswordInput.md +0 -29
- package/components/Radio/Radio.md +0 -57
- package/components/RadioGroup/RadioGroup.md +0 -44
- package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/components/ScrollContainer/ScrollContainer.md +0 -224
- package/components/Select/Select.md +0 -113
- package/components/SidePage/SidePage.md +0 -65
- package/components/SingleToast/SingleToast.md +0 -36
- package/components/Spinner/Spinner.md +0 -36
- package/components/Sticky/Sticky.md +0 -28
- package/components/Switcher/Switcher.md +0 -111
- package/components/Tabs/Tab.md +0 -73
- package/components/Tabs/Tabs.md +0 -54
- package/components/Textarea/Textarea.md +0 -58
- package/components/Toast/Toast.md +0 -69
- package/components/Toggle/Toggle.md +0 -110
- package/components/Token/Token.md +0 -48
- package/components/TokenInput/TokenInput.md +0 -277
- package/components/Tooltip/Tooltip.md +0 -322
- package/components/TooltipMenu/TooltipMenu.md +0 -241
- package/internal/DataTids/DATATIDS.md +0 -12
- package/internal/DataTids/DataTids/DataTids.js +0 -69
- package/internal/DataTids/DataTids/DataTids.js.map +0 -1
- package/internal/DataTids/DataTids/package.json +0 -6
- package/internal/DataTids/DataTids.d.ts +0 -12
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
- package/internal/DataTids/DataTids.styles/package.json +0 -6
- package/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
- package/internal/DataTids/componentsDataTids/package.json +0 -6
- package/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/internal/ThemePlayground/Playground.md +0 -7
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/lib/locale/LOCALECONTEXT.md +0 -222
- package/lib/theming/ThemeContext.md +0 -265
|
@@ -4,6 +4,7 @@ import type { PopupMenuProps } from '../../internal/PopupMenu';
|
|
|
4
4
|
import type { Nullable } from '../../typings/utility-types';
|
|
5
5
|
import type { PopupPositionsType } from '../../internal/Popup';
|
|
6
6
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
7
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
7
8
|
import type { SizeProp } from '../../lib/types/props';
|
|
8
9
|
export interface KebabProps extends Pick<AriaAttributes, 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
|
|
9
10
|
/** Делает компонент недоступным. */
|
|
@@ -31,7 +32,7 @@ export interface KebabState {
|
|
|
31
32
|
anchor: Nullable<HTMLElement>;
|
|
32
33
|
focusedByTab: boolean;
|
|
33
34
|
}
|
|
34
|
-
type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | '
|
|
35
|
+
type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'disableAnimations'>>;
|
|
35
36
|
/**
|
|
36
37
|
* Кебаб-меню `Kebab` содержит действия с объектом.
|
|
37
38
|
*/
|
|
@@ -42,6 +43,8 @@ export declare class Kebab extends React.Component<KebabProps, KebabState> {
|
|
|
42
43
|
private getProps;
|
|
43
44
|
state: KebabState;
|
|
44
45
|
private theme;
|
|
46
|
+
private size;
|
|
47
|
+
getRootNode: TGetRootNode;
|
|
45
48
|
private setRootNode;
|
|
46
49
|
private listener;
|
|
47
50
|
componentDidMount(): void;
|
|
@@ -126,10 +126,13 @@ export var Link = rootNode(_class = (_Link = /*#__PURE__*/function (_React$Compo
|
|
|
126
126
|
}),
|
|
127
127
|
rel: _this.getRel()
|
|
128
128
|
});
|
|
129
|
+
var buttonOnlyProps = Root === 'button' ? {
|
|
130
|
+
disabled: nonInteractive
|
|
131
|
+
} : {};
|
|
129
132
|
return /*#__PURE__*/(
|
|
130
133
|
React.createElement(Root, _extends({
|
|
131
134
|
"data-tid": LinkDataTids.root
|
|
132
|
-
}, rootProps, getVisualStateDataAttributes({
|
|
135
|
+
}, rootProps, buttonOnlyProps, getVisualStateDataAttributes({
|
|
133
136
|
disabled: disabled
|
|
134
137
|
})), leftIconElement, _this.props.children, rightIconElement, arrow)
|
|
135
138
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","resetButton","keyListener","ThemeContext","isExternalLink","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","getVisualStateDataAttributes","styles","LinkIcon","LINK_DEFAULT_COMPONENT","LinkDataTids","root","Link","_class","_Link","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","undefined","renderMain","_cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose","_excluded","arrow","createElement","className","isFocused","leftIconElement","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","children","requestAnimationFrame","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose","_proto","prototype","render","_this2","Consumer","create","rootNodeRef","setRootNode","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","globalObject","resetButton","keyListener","ThemeContext","isExternalLink","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","getVisualStateDataAttributes","styles","LinkIcon","LINK_DEFAULT_COMPONENT","LinkDataTids","root","Link","_class","_Link","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","undefined","renderMain","_cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose","_excluded","arrow","createElement","className","isFocused","leftIconElement","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","buttonOnlyProps","children","requestAnimationFrame","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose","_proto","prototype","render","_this2","Consumer","create","rootNodeRef","setRootNode","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\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 const buttonOnlyProps = Root === 'button' ? { disabled: nonInteractive } : {};\n\n return (\n <Root\n data-tid={LinkDataTids.root}\n {...rootProps}\n {...buttonOnlyProps}\n {...getVisualStateDataAttributes({ disabled })}\n >\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":[]}
|
|
@@ -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;
|
|
@@ -19,6 +19,7 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
|
19
19
|
import { styles } from "../Loader.styles";
|
|
20
20
|
var types = ['mini', 'normal', 'big'];
|
|
21
21
|
export var LoaderDataTids = {
|
|
22
|
+
idle: 'Loader__Idle',
|
|
22
23
|
veil: 'Loader__Veil',
|
|
23
24
|
spinner: 'Loader__Spinner'
|
|
24
25
|
};
|
|
@@ -248,7 +249,7 @@ export var Loader = rootNode(_class = (_Loader = /*#__PURE__*/function (_React$C
|
|
|
248
249
|
rootNodeRef: this.setRootNode
|
|
249
250
|
}, this.props), /*#__PURE__*/React.createElement("div", {
|
|
250
251
|
className: styles.loader(),
|
|
251
|
-
"data-tid": isLoaderActive ? LoaderDataTids.veil :
|
|
252
|
+
"data-tid": this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle)
|
|
252
253
|
}, /*#__PURE__*/React.createElement(ZIndex, {
|
|
253
254
|
applyZIndex: isLoaderActive,
|
|
254
255
|
coverChildren: isLoaderActive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","_class","_Loader","_React$Component","props","_this","call","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","_getDOMRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","_globalObject$documen","_globalObject$documen2","makeUnobservable","Array","from","document","querySelectorAll","_el$getAttribute","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","_this$childrenObserve","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","Consumer","theme","renderMain","_cx","_this$props","caption","type","_extends","rootNodeRef","setRootNode","className","loader","applyZIndex","coverChildren","style","wrapperRef","children","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Loader.tsx"],"sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { SpinnerProps } from '../Spinner';\nimport { Spinner } from '../Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport type { 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 private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = globalObject.innerHeight;\n const windowWidth = globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(globalObject.document?.querySelectorAll('[origin-tabindex]') ?? []).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","idle","veil","spinner","Loader","_class","_Loader","_React$Component","props","_this","call","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","_getDOMRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","_globalObject$documen","_globalObject$documen2","makeUnobservable","Array","from","document","querySelectorAll","_el$getAttribute","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","_this$childrenObserve","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","_inheritsLoose","_proto","prototype","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","_this$getProps","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","_this2","createElement","Consumer","theme","renderMain","_cx","_this$props","caption","type","_extends","rootNodeRef","setRootNode","className","loader","applyZIndex","coverChildren","style","wrapperRef","children","renderSpinner","_cx2","_this3","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","ref","undefined","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Loader.tsx"],"sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { SpinnerProps } from '../Spinner';\nimport { Spinner } from '../Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Loader.styles';\n\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = (typeof types)[number];\n\nexport interface LoaderProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает состояние лоадера.\n * @default false */\n active?: boolean;\n\n /** Задает подпись под спиннером.\n * @default \"Загрузка\"\n */\n caption?: SpinnerProps['caption'];\n\n /** Задает компонент, заменяющий спиннер. */\n component?: React.ReactNode;\n\n /** Задает размер спиннера и текста.\n * @default normal. */\n type?: LoaderType;\n\n /** Устанавливает время в миллисекундах для показа вуали без спиннера.\n * @default 300 */\n delayBeforeSpinnerShow?: number;\n\n /** Устанавливает минимальное время в миллисекундах для показа спиннера.\n * @default 1000. */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n idle: 'Loader__Idle',\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\n className={styles.loader()}\n data-tid={this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle)}\n >\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":[]}
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { AnyObject } from '../../lib/utils';
|
|
3
3
|
import type { SpinnerProps } from '../Spinner';
|
|
4
4
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
5
|
+
import type { TGetRootNode } from '../../lib/rootNode';
|
|
5
6
|
declare const types: readonly ["mini", "normal", "big"];
|
|
6
7
|
export type LoaderType = (typeof types)[number];
|
|
7
8
|
export interface LoaderProps extends CommonProps {
|
|
@@ -33,6 +34,7 @@ export interface LoaderState {
|
|
|
33
34
|
spinnerStyle?: AnyObject;
|
|
34
35
|
}
|
|
35
36
|
export declare const LoaderDataTids: {
|
|
37
|
+
readonly idle: "Loader__Idle";
|
|
36
38
|
readonly veil: "Loader__Veil";
|
|
37
39
|
readonly spinner: "Loader__Spinner";
|
|
38
40
|
};
|
|
@@ -48,6 +50,7 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
|
48
50
|
static defaultProps: DefaultProps;
|
|
49
51
|
private getProps;
|
|
50
52
|
private theme;
|
|
53
|
+
getRootNode: TGetRootNode;
|
|
51
54
|
private setRootNode;
|
|
52
55
|
private spinnerContainerNode;
|
|
53
56
|
private childrenContainerNode;
|
package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus"]; /* eslint react-hooks/exhaustive-deps: 2 */
|
|
3
|
+
var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus", "alwaysShowMask"]; /* eslint react-hooks/exhaustive-deps: 2 */
|
|
4
4
|
|
|
5
|
-
import React, {
|
|
6
|
-
import { globalObject, isBrowser } from '@skbkontur/global-object';
|
|
5
|
+
import React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';
|
|
7
6
|
import debounce from 'lodash.debounce';
|
|
8
7
|
import { ThemeContext } from "../../../../lib/theming/ThemeContext";
|
|
9
8
|
import { forwardRefAndName } from "../../../../lib/forwardRefAndName";
|
|
10
9
|
import { cx } from "../../../../lib/theming/Emotion";
|
|
10
|
+
import { isDocument, isWindow, tryGetDocument, tryGetWindow } from "../../../../lib/utils";
|
|
11
11
|
import { globalClasses } from "../ColorableInputElement.styles";
|
|
12
12
|
|
|
13
13
|
// Возможно придётся включить.
|
|
@@ -16,12 +16,13 @@ import { globalClasses } from "../ColorableInputElement.styles";
|
|
|
16
16
|
// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);
|
|
17
17
|
|
|
18
18
|
export var ColorableInputElement = forwardRefAndName('ColorableInputElement', function ColorableInputElement(props, ref) {
|
|
19
|
+
var _props$style3;
|
|
19
20
|
var inputRef = useRef(null);
|
|
20
21
|
var spanRef = useRef(null);
|
|
21
22
|
var focused = useRef(false);
|
|
22
|
-
var
|
|
23
|
+
var updateActiveTimer = useRef();
|
|
23
24
|
var theme = useContext(ThemeContext);
|
|
24
|
-
var _useState = useState(
|
|
25
|
+
var _useState = useState(Boolean(props.alwaysShowMask || !props.placeholder && (props.value || props.defaultValue))),
|
|
25
26
|
active = _useState[0],
|
|
26
27
|
setActive = _useState[1];
|
|
27
28
|
var children = props.children,
|
|
@@ -29,40 +30,63 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
29
30
|
onFocus = props.onFocus,
|
|
30
31
|
onBlur = props.onBlur,
|
|
31
32
|
showOnFocus = props.showOnFocus,
|
|
33
|
+
alwaysShowMask = props.alwaysShowMask,
|
|
32
34
|
inputProps = _objectWithoutPropertiesLoose(props, _excluded);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
input: inputRef.current,
|
|
36
|
-
getRootNode: function getRootNode() {
|
|
37
|
-
return inputRef.current;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
35
|
+
var stopUpdateActive = useCallback(function () {
|
|
36
|
+
clearTimeout(updateActiveTimer.current);
|
|
40
37
|
}, []);
|
|
41
|
-
|
|
38
|
+
var updateActive = useCallback(function () {
|
|
39
|
+
stopUpdateActive();
|
|
40
|
+
updateActiveTimer.current = setTimeout(function () {
|
|
41
|
+
var nextActive = true;
|
|
42
|
+
if (inputRef.current) {
|
|
43
|
+
var _inputRef$current2;
|
|
44
|
+
var _inputRef$current = inputRef.current,
|
|
45
|
+
clientWidth = _inputRef$current.clientWidth,
|
|
46
|
+
scrollWidth = _inputRef$current.scrollWidth;
|
|
47
|
+
var scrollable = scrollWidth > clientWidth;
|
|
48
|
+
var placeholderShown = (_inputRef$current2 = inputRef.current) == null || (_inputRef$current2 = _inputRef$current2.parentElement) == null ? void 0 : _inputRef$current2.querySelector(':placeholder-shown');
|
|
49
|
+
nextActive = !(scrollable || placeholderShown);
|
|
50
|
+
}
|
|
51
|
+
setActive(nextActive);
|
|
52
|
+
}, 0);
|
|
53
|
+
}, [stopUpdateActive]);
|
|
42
54
|
var paintText = useCallback(function () {
|
|
43
|
-
var _inputRef$
|
|
44
|
-
|
|
55
|
+
var _inputRef$current4, _shadow, _shadow2, _props$style, _props$style2;
|
|
56
|
+
var win = tryGetWindow(inputRef.current);
|
|
57
|
+
var doc = tryGetDocument(inputRef.current);
|
|
58
|
+
if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {
|
|
59
|
+
var _inputRef$current3;
|
|
60
|
+
inputRef.current && (inputRef.current.style.backgroundImage = '');
|
|
61
|
+
(_inputRef$current3 = inputRef.current) == null || _inputRef$current3.classList.remove(globalClasses.input);
|
|
45
62
|
return;
|
|
46
63
|
}
|
|
47
|
-
(_inputRef$
|
|
64
|
+
(_inputRef$current4 = inputRef.current) == null || _inputRef$current4.classList.add(globalClasses.input);
|
|
48
65
|
var shadow = spanRef.current.shadowRoot;
|
|
49
|
-
var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('
|
|
50
|
-
|
|
66
|
+
var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('typed-value');
|
|
67
|
+
var fullValueElement = (_shadow2 = shadow) == null ? void 0 : _shadow2.getElementById('full-value');
|
|
68
|
+
if (!typedValueElement || !fullValueElement) {
|
|
51
69
|
shadow = spanRef.current.attachShadow({
|
|
52
70
|
mode: 'open'
|
|
53
71
|
});
|
|
54
|
-
typedValueElement =
|
|
55
|
-
|
|
56
|
-
|
|
72
|
+
typedValueElement = doc.createElement('span');
|
|
73
|
+
fullValueElement = doc.createElement('span');
|
|
74
|
+
typedValueElement.setAttribute('id', 'typed-value');
|
|
75
|
+
fullValueElement.setAttribute('id', 'full-value');
|
|
76
|
+
shadow.append(typedValueElement, fullValueElement);
|
|
57
77
|
}
|
|
58
|
-
var style =
|
|
78
|
+
var style = getComputedStyle(inputRef.current);
|
|
59
79
|
typedValueElement.textContent = (inputRef.current.getAttribute('data-unmasked-value') || focused.current) && inputRef.current.getAttribute('data-typed-value') || '';
|
|
80
|
+
fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';
|
|
60
81
|
var inputRect = inputRef.current.getBoundingClientRect();
|
|
61
|
-
var
|
|
62
|
-
var
|
|
82
|
+
var typedValueRect = typedValueElement.getBoundingClientRect();
|
|
83
|
+
var fullValueRect = fullValueElement.getBoundingClientRect();
|
|
84
|
+
var threshold = typedValueRect.width / (inputRect.width / 100);
|
|
63
85
|
var degree = style.fontStyle === 'italic' ? 100 : 90;
|
|
86
|
+
var restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);
|
|
64
87
|
var typedValueColor = theme.inputTextColor;
|
|
65
88
|
var maskColor = theme.inputPlaceholderColor;
|
|
89
|
+
var indent = 0;
|
|
66
90
|
if (props.disabled) {
|
|
67
91
|
typedValueColor = theme.inputTextColorDisabled;
|
|
68
92
|
maskColor = theme.inputTextColorDisabled;
|
|
@@ -70,30 +94,44 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
70
94
|
if (props.showOnFocus) {
|
|
71
95
|
maskColor = focused.current ? maskColor : 'transparent';
|
|
72
96
|
}
|
|
73
|
-
|
|
74
|
-
|
|
97
|
+
if (((_props$style = props.style) == null ? void 0 : _props$style.textAlign) === 'right') {
|
|
98
|
+
indent = 100 * restValueWidth;
|
|
99
|
+
}
|
|
100
|
+
if (((_props$style2 = props.style) == null ? void 0 : _props$style2.textAlign) === 'center') {
|
|
101
|
+
indent = 50 * restValueWidth;
|
|
102
|
+
}
|
|
103
|
+
inputRef.current.style.backgroundImage = "\n linear-gradient(\n " + degree + "deg,\n " + typedValueColor + " " + (threshold + indent) + "%,\n " + maskColor + " " + (threshold + indent) + "%\n )";
|
|
104
|
+
}, [active, props.showOnFocus, props.disabled, theme.inputTextColor, theme.inputPlaceholderColor, theme.inputTextColorDisabled, (_props$style3 = props.style) == null ? void 0 : _props$style3.textAlign]);
|
|
75
105
|
var debouncedPaintText = useCallback(function () {
|
|
76
106
|
return debounce(paintText);
|
|
77
107
|
}, [paintText])();
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
useEffect(function () {
|
|
89
|
-
activation();
|
|
108
|
+
var handleInput = useCallback(function (e) {
|
|
109
|
+
debouncedPaintText();
|
|
110
|
+
onInput == null || onInput(e);
|
|
111
|
+
}, [debouncedPaintText, onInput]);
|
|
112
|
+
var handleFocus = useCallback(function (e) {
|
|
113
|
+
updateActive();
|
|
114
|
+
focused.current = true;
|
|
115
|
+
onFocus == null || onFocus(e);
|
|
116
|
+
}, [onFocus, updateActive]);
|
|
117
|
+
var handleBlur = useCallback(function (e) {
|
|
90
118
|
updateActive();
|
|
91
|
-
|
|
119
|
+
focused.current = false;
|
|
120
|
+
onBlur == null || onBlur(e);
|
|
121
|
+
}, [onBlur, updateActive]);
|
|
122
|
+
useImperativeHandle(ref, function () {
|
|
123
|
+
return {
|
|
124
|
+
input: inputRef.current,
|
|
125
|
+
getRootNode: function getRootNode() {
|
|
126
|
+
return inputRef.current;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}, []);
|
|
92
130
|
useEffect(function () {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
});
|
|
131
|
+
debouncedPaintText();
|
|
132
|
+
updateActive();
|
|
133
|
+
return stopUpdateActive;
|
|
134
|
+
}, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);
|
|
97
135
|
return /*#__PURE__*/(
|
|
98
136
|
React.createElement(React.Fragment, null, /*#__PURE__*/
|
|
99
137
|
React.cloneElement(children, _extends({}, inputProps, {
|
|
@@ -111,27 +149,4 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
|
|
|
111
149
|
ref: spanRef
|
|
112
150
|
}))
|
|
113
151
|
);
|
|
114
|
-
function handleInput(e) {
|
|
115
|
-
var _inputRef$current3;
|
|
116
|
-
var isActive = !((_inputRef$current3 = inputRef.current) != null && (_inputRef$current3 = _inputRef$current3.parentElement) != null && _inputRef$current3.querySelector(':placeholder-shown'));
|
|
117
|
-
setActive(isActive);
|
|
118
|
-
activation();
|
|
119
|
-
onInput == null || onInput(e);
|
|
120
|
-
}
|
|
121
|
-
function handleFocus(e) {
|
|
122
|
-
setTimeout(updateActive);
|
|
123
|
-
focused.current = true;
|
|
124
|
-
onFocus == null || onFocus(e);
|
|
125
|
-
}
|
|
126
|
-
function handleBlur(e) {
|
|
127
|
-
updateActive();
|
|
128
|
-
focused.current = false;
|
|
129
|
-
onBlur == null || onBlur(e);
|
|
130
|
-
}
|
|
131
|
-
function updateActive() {
|
|
132
|
-
setTimeout(function () {
|
|
133
|
-
var _inputRef$current4;
|
|
134
|
-
setActive(!((_inputRef$current4 = inputRef.current) != null && (_inputRef$current4 = _inputRef$current4.parentElement) != null && _inputRef$current4.querySelector(':placeholder-shown')));
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
152
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useEffect","useImperativeHandle","useRef","useCallback","useState","globalObject","isBrowser","debounce","ThemeContext","forwardRefAndName","cx","globalClasses","ColorableInputElement","props","ref","inputRef","spanRef","focused","inputStyle","theme","_useState","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","input","current","getRootNode","updateActive","paintText","_inputRef$current","_shadow","classList","add","shadow","shadowRoot","typedValueElement","getElementById","attachShadow","mode","document","createElement","setAttribute","appendChild","style","textContent","getAttribute","inputRect","getBoundingClientRect","filledRect","threshold","width","degree","fontStyle","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","disabled","inputTextColorDisabled","backgroundImage","debouncedPaintText","activation","_inputRef$current2","cancel","remove","value","defaultValue","getComputedStyle","Fragment","cloneElement","_extends","handleInput","handleFocus","handleBlur","className","visibility","position","whiteSpace","e","_inputRef$current3","isActive","parentElement","querySelector","setTimeout","_inputRef$current4"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const inputStyle = React.useRef<CSSStyleDeclaration>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(true);\n\n const { children, onInput, onFocus, onBlur, showOnFocus, ...inputProps } = props;\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(updateActive, []);\n\n const paintText = useCallback(() => {\n if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('span');\n\n if (!typedValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'span');\n\n shadow.appendChild(typedValueElement);\n }\n\n const style = inputStyle.current;\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const filledRect = spanRef.current.getBoundingClientRect();\n\n const threshold = filledRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold}%,\n ${maskColor} ${threshold}%\n )`;\n }, [\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const activation = useCallback(() => {\n if (active) {\n debouncedPaintText();\n } else {\n debouncedPaintText.cancel();\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n }\n }, [debouncedPaintText, active]);\n\n useEffect(() => {\n activation();\n updateActive();\n }, [props.value, props.defaultValue, theme, activation]);\n\n useEffect(() => {\n if (inputRef.current) {\n inputStyle.current = getComputedStyle(inputRef.current);\n }\n });\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const isActive = !inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n setActive(isActive);\n\n activation();\n\n onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setTimeout(updateActive);\n\n focused.current = true;\n\n onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n }\n\n function updateActive() {\n setTimeout(() => {\n setActive(!inputRef.current?.parentElement?.querySelector(':placeholder-shown'));\n });\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useContext","useImperativeHandle","useRef","useCallback","useState","debounce","ThemeContext","forwardRefAndName","cx","isDocument","isWindow","tryGetDocument","tryGetWindow","globalClasses","ColorableInputElement","props","ref","_props$style3","inputRef","spanRef","focused","updateActiveTimer","theme","_useState","Boolean","alwaysShowMask","placeholder","value","defaultValue","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","stopUpdateActive","clearTimeout","current","updateActive","setTimeout","nextActive","_inputRef$current2","_inputRef$current","clientWidth","scrollWidth","scrollable","placeholderShown","parentElement","querySelector","paintText","_inputRef$current4","_shadow","_shadow2","_props$style","_props$style2","win","doc","_inputRef$current3","style","backgroundImage","classList","remove","input","add","shadow","shadowRoot","typedValueElement","getElementById","fullValueElement","attachShadow","mode","createElement","setAttribute","append","getComputedStyle","textContent","getAttribute","inputRect","getBoundingClientRect","typedValueRect","fullValueRect","threshold","width","degree","fontStyle","restValueWidth","Math","min","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","indent","disabled","inputTextColorDisabled","textAlign","debouncedPaintText","handleInput","e","handleFocus","handleBlur","getRootNode","Fragment","cloneElement","_extends","className","visibility","position","whiteSpace"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { isDocument, isWindow, tryGetDocument, tryGetWindow } from '../../../lib/utils';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout>>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n const win = tryGetWindow(inputRef.current);\n const doc = tryGetDocument(inputRef.current);\n if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = doc.createElement('span');\n fullValueElement = doc.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"],"mappings":"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","ignoreList":[]}
|