@skbkontur/react-ui 4.21.2 → 4.21.4
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 +23 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
- package/cjs/components/Autocomplete/Autocomplete.js +2 -1
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js +2 -1
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +1 -0
- package/cjs/components/Calendar/Calendar.js +2 -1
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +8 -5
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +1 -0
- package/cjs/components/Center/Center.js +2 -1
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
- package/cjs/components/Checkbox/Checkbox.js +2 -1
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +1 -0
- package/cjs/components/ComboBox/ComboBox.js +2 -1
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +1 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +1 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +1 -0
- package/cjs/components/DateInput/DateInput.js +2 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +1 -0
- package/cjs/components/DatePicker/DatePicker.js +2 -1
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/Picker.d.ts +1 -0
- package/cjs/components/DatePicker/Picker.js +2 -1
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
- package/cjs/components/Dropdown/Dropdown.js +2 -1
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -0
- package/cjs/components/DropdownMenu/DropdownMenu.js +2 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +2 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +1 -0
- package/cjs/components/FxInput/FxInput.js +2 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +1 -0
- package/cjs/components/Gapped/Gapped.js +2 -1
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/cjs/components/GlobalLoader/GlobalLoader.js +4 -1
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Group/Group.d.ts +1 -0
- package/cjs/components/Group/Group.js +3 -1
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +1 -0
- package/cjs/components/Hint/Hint.js +2 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +1 -0
- package/cjs/components/Input/Input.js +2 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +1 -0
- package/cjs/components/Kebab/Kebab.js +2 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +1 -0
- package/cjs/components/Link/Link.js +2 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +1 -0
- package/cjs/components/Loader/Loader.js +2 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuFooter/MenuFooter.d.ts +1 -0
- package/cjs/components/MenuFooter/MenuFooter.js +1 -0
- package/cjs/components/MenuFooter/MenuFooter.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.d.ts +1 -0
- package/cjs/components/MenuHeader/MenuHeader.js +1 -0
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +4 -0
- package/cjs/components/MenuItem/MenuItem.js +29 -10
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuSeparator/MenuSeparator.d.ts +1 -0
- package/cjs/components/MenuSeparator/MenuSeparator.js +2 -1
- package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.js +0 -2
- package/cjs/components/MiniModal/MiniModal.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +1 -0
- package/cjs/components/Modal/Modal.js +2 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +1 -0
- package/cjs/components/Modal/ModalBody.js +2 -1
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Modal/ModalClose.d.ts +4 -0
- package/cjs/components/Modal/ModalClose.js +4 -1
- package/cjs/components/Modal/ModalClose.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.d.ts +1 -0
- package/cjs/components/Modal/ModalFooter.js +1 -0
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.d.ts +1 -0
- package/cjs/components/Modal/ModalHeader.js +1 -0
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Modal/ModalSeparator.d.ts +4 -0
- package/cjs/components/Modal/ModalSeparator.js +4 -1
- package/cjs/components/Modal/ModalSeparator.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +1 -0
- package/cjs/components/Paging/Paging.js +10 -6
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -0
- package/cjs/components/PasswordInput/PasswordInput.js +2 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +1 -0
- package/cjs/components/Radio/Radio.js +2 -1
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -0
- package/cjs/components/RadioGroup/RadioGroup.js +2 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.d.ts +4 -0
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +4 -1
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Item.d.ts +1 -0
- package/cjs/components/Select/Item.js +2 -1
- package/cjs/components/Select/Item.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +2 -0
- package/cjs/components/Select/Select.js +5 -2
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +1 -0
- package/cjs/components/SidePage/SidePage.js +2 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
- package/cjs/components/SidePage/SidePageBody.js +2 -1
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageCloseButton.d.ts +5 -1
- package/cjs/components/SidePage/SidePageCloseButton.js +4 -1
- package/cjs/components/SidePage/SidePageCloseButton.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
- package/cjs/components/SidePage/SidePageContainer.js +2 -1
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +1 -0
- package/cjs/components/SidePage/SidePageFooter.js +2 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
- package/cjs/components/SidePage/SidePageHeader.js +2 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/SingleToast/SingleToast.d.ts +2 -0
- package/cjs/components/SingleToast/SingleToast.js +4 -1
- package/cjs/components/SingleToast/SingleToast.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +1 -0
- package/cjs/components/Spinner/Spinner.js +2 -1
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +1 -0
- package/cjs/components/Sticky/Sticky.js +2 -1
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Switcher/Switcher.d.ts +1 -0
- package/cjs/components/Switcher/Switcher.js +2 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +1 -0
- package/cjs/components/Tabs/Tab.js +7 -1
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +1 -0
- package/cjs/components/Tabs/Tabs.js +2 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +1 -0
- package/cjs/components/Textarea/Textarea.js +2 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +1 -0
- package/cjs/components/Toast/Toast.js +3 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.js +2 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +1 -0
- package/cjs/components/Token/Token.js +9 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
- package/cjs/components/TokenInput/TokenInput.js +2 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.d.ts +1 -0
- package/cjs/components/TokenInput/TokenInputMenu.js +2 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +1 -0
- package/cjs/components/Tooltip/Tooltip.js +2 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -0
- package/cjs/components/TooltipMenu/TooltipMenu.js +3 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js +4 -1
- package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +5 -26
- package/cjs/internal/CommonWrapper/CommonWrapper.js +7 -56
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CommonWrapper/extractCommonProps.d.ts +3 -0
- package/cjs/internal/CommonWrapper/extractCommonProps.js +34 -0
- package/cjs/internal/CommonWrapper/extractCommonProps.js.map +1 -0
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.d.ts +2 -0
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js +12 -0
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.d.ts +3 -0
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js +23 -0
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/index.d.ts +2 -0
- package/cjs/internal/CommonWrapper/index.js.map +1 -1
- package/cjs/internal/CommonWrapper/types.d.ts +25 -0
- package/cjs/internal/CommonWrapper/types.js +1 -0
- package/cjs/internal/CommonWrapper/types.js.map +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +2 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +1 -0
- package/cjs/internal/DateSelect/DateSelect.js +2 -1
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
- package/cjs/internal/DropdownContainer/DropdownContainer.js +2 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
- package/cjs/internal/FocusTrap/FocusTrap.js +3 -1
- package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +2 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.d.ts +1 -0
- package/cjs/internal/InternalMenu/InternalMenu.js +2 -1
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +1 -0
- package/cjs/internal/Menu/Menu.js +2 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +2 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +2 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/cjs/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
- package/cjs/internal/NativeDateInput/NativeDateInput.js +3 -1
- package/cjs/internal/NativeDateInput/NativeDateInput.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +1 -0
- package/cjs/internal/Popup/Popup.js +2 -1
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.d.ts +1 -0
- package/cjs/internal/Popup/PopupPin.js +2 -1
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -0
- package/cjs/internal/PopupMenu/PopupMenu.js +2 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -0
- package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +3 -0
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +7 -2
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -0
- package/cjs/internal/RenderLayer/RenderLayer.js +2 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
- package/cjs/internal/ResizeDetector/ResizeDetector.js +2 -1
- package/cjs/internal/ResizeDetector/ResizeDetector.js.map +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +1 -0
- package/cjs/internal/ZIndex/ZIndex.js +2 -1
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/icons/20px/Icon.d.ts +1 -0
- package/cjs/internal/icons/20px/Icon.js +2 -1
- package/cjs/internal/icons/20px/Icon.js.map +1 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/locale/LocaleContext.js +2 -1
- package/cjs/lib/locale/LocaleContext.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -0
- package/cjs/lib/rootNode/rootNodeDecorator.js +4 -1
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.js +2 -1
- package/cjs/lib/theming/ThemeContext.js.map +1 -1
- package/cjs/lib/toKebabCase.d.ts +1 -0
- package/cjs/lib/toKebabCase.js +10 -0
- package/cjs/lib/toKebabCase.js.map +1 -0
- package/cjs/lib/utils.d.ts +0 -7
- package/cjs/lib/utils.js +2 -25
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/typings/global-react.d.ts +12 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +1 -0
- package/components/Button/Button/Button.js +1 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/components/Calendar/Calendar/Calendar.js +1 -1
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +1 -0
- package/components/Calendar/DayCellView/DayCellView.js +9 -3
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Center/Center/Center.js +1 -1
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +1 -0
- package/components/Checkbox/Checkbox/Checkbox.js +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +1 -0
- package/components/ComboBox/ComboBox/ComboBox.js +1 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +1 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +1 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -0
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.d.ts +1 -0
- package/components/DateInput/DateInput/DateInput.js +1 -1
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +1 -0
- package/components/DatePicker/DatePicker/DatePicker.js +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -0
- package/components/DatePicker/Picker/Picker.js +1 -1
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/DatePicker/Picker.d.ts +1 -0
- package/components/Dropdown/Dropdown/Dropdown.js +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +1 -0
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +1 -0
- package/components/FileUploader/FileUploader/FileUploader.js +2 -1
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FxInput/FxInput/FxInput.js +1 -1
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +1 -0
- package/components/Gapped/Gapped/Gapped.js +1 -1
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +1 -0
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
- package/components/Group/Group/Group.js +1 -1
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Group/Group.d.ts +1 -0
- package/components/Hint/Hint/Hint.js +1 -1
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +1 -0
- package/components/Input/Input/Input.js +1 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +1 -0
- package/components/Kebab/Kebab/Kebab.js +1 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +1 -0
- package/components/Link/Link/Link.js +1 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +1 -0
- package/components/Loader/Loader/Loader.js +1 -1
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +1 -0
- package/components/MenuFooter/MenuFooter/MenuFooter.js +1 -0
- package/components/MenuFooter/MenuFooter/MenuFooter.js.map +1 -1
- package/components/MenuFooter/MenuFooter.d.ts +1 -0
- package/components/MenuHeader/MenuHeader/MenuHeader.js +1 -0
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +1 -0
- package/components/MenuItem/MenuItem/MenuItem.js +29 -6
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +4 -0
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +1 -0
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.d.ts +1 -0
- package/components/MiniModal/MiniModal/MiniModal.js +0 -1
- package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
- package/components/Modal/Modal/Modal.js +1 -0
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +1 -0
- package/components/Modal/ModalBody/ModalBody.js +1 -1
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +1 -0
- package/components/Modal/ModalClose/ModalClose.js +3 -1
- package/components/Modal/ModalClose/ModalClose.js.map +1 -1
- package/components/Modal/ModalClose.d.ts +4 -0
- package/components/Modal/ModalFooter/ModalFooter.js +1 -0
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalFooter.d.ts +1 -0
- package/components/Modal/ModalHeader/ModalHeader.js +1 -0
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Modal/ModalHeader.d.ts +1 -0
- package/components/Modal/ModalSeparator/ModalSeparator.js +3 -1
- package/components/Modal/ModalSeparator/ModalSeparator.js.map +1 -1
- package/components/Modal/ModalSeparator.d.ts +4 -0
- package/components/Paging/Paging/Paging.js +11 -5
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +1 -0
- package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +1 -0
- package/components/Radio/Radio/Radio.js +1 -1
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +1 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +1 -0
- package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +3 -1
- package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
- package/components/ResponsiveLayout/ResponsiveLayout.d.ts +4 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/components/Select/Item/Item.js +2 -1
- package/components/Select/Item/Item.js.map +1 -1
- package/components/Select/Item.d.ts +1 -0
- package/components/Select/Select/Select.js +4 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +2 -0
- package/components/SidePage/SidePage/SidePage.js +1 -0
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +1 -0
- package/components/SidePage/SidePageBody/SidePageBody.js +1 -1
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +1 -0
- package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js +3 -1
- package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js.map +1 -1
- package/components/SidePage/SidePageCloseButton.d.ts +5 -1
- package/components/SidePage/SidePageContainer/SidePageContainer.js +1 -1
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +1 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -1
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +1 -0
- package/components/SidePage/SidePageHeader/SidePageHeader.js +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +1 -0
- package/components/SingleToast/SingleToast/SingleToast.js +2 -0
- package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +2 -0
- package/components/Spinner/Spinner/Spinner.js +1 -1
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +1 -0
- package/components/Sticky/Sticky/Sticky.js +1 -1
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +1 -0
- package/components/Switcher/Switcher/Switcher.js +1 -1
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +1 -0
- package/components/Tabs/Tab/Tab.js +6 -2
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +1 -0
- package/components/Tabs/Tabs/Tabs.js +1 -1
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +1 -0
- package/components/Textarea/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +1 -0
- package/components/Toast/Toast/Toast.js +1 -1
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +1 -0
- package/components/Toggle/Toggle/Toggle.js +1 -1
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +1 -0
- package/components/Token/Token/Token.js +5 -4
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +1 -0
- package/components/TokenInput/TokenInput/TokenInput.js +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +1 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/TokenInput/TokenInputMenu.d.ts +1 -0
- package/components/Tooltip/Tooltip/Tooltip.js +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +1 -1
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +1 -0
- package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js +3 -1
- package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +8 -38
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +5 -26
- package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js +31 -0
- package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +1 -0
- package/internal/CommonWrapper/extractCommonProps/package.json +6 -0
- package/internal/CommonWrapper/extractCommonProps.d.ts +3 -0
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js +12 -0
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/package.json +6 -0
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes.d.ts +2 -0
- package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js +16 -0
- package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/getVisualStateDataAttributes/package.json +6 -0
- package/internal/CommonWrapper/getVisualStateDataAttributes.d.ts +3 -0
- package/internal/CommonWrapper/index/index.js +2 -1
- package/internal/CommonWrapper/index/index.js.map +1 -1
- package/internal/CommonWrapper/index.d.ts +2 -0
- package/internal/CommonWrapper/types/package.json +6 -0
- package/internal/CommonWrapper/types/types.js +1 -0
- package/internal/CommonWrapper/types/types.js.map +1 -0
- package/internal/CommonWrapper/types.d.ts +25 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +1 -1
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +1 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
- package/internal/DateSelect/DateSelect/DateSelect.js +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +1 -0
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +1 -0
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/internal/FocusTrap/FocusTrap/FocusTrap.js +1 -1
- package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +1 -0
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +1 -0
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +1 -1
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -1
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.d.ts +1 -0
- package/internal/Menu/Menu/Menu.js +1 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +1 -0
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
- package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js +2 -1
- package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js.map +1 -1
- package/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
- package/internal/Popup/Popup/Popup.js +1 -1
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +1 -0
- package/internal/Popup/PopupPin/PopupPin.js +1 -0
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +1 -0
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +1 -0
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +1 -0
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +1 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +4 -1
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer.d.ts +3 -0
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +1 -0
- package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js +2 -1
- package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js.map +1 -1
- package/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
- package/internal/ZIndex/ZIndex/ZIndex.js +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +1 -0
- package/internal/icons/20px/Icon/Icon.js +1 -0
- package/internal/icons/20px/Icon/Icon.js.map +1 -1
- package/internal/icons/20px/Icon.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/locale/LocaleContext/LocaleContext.js +2 -1
- package/lib/locale/LocaleContext/LocaleContext.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +1 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +2 -0
- package/lib/theming/ThemeContext/ThemeContext.js +2 -1
- package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
- package/lib/toKebabCase/package.json +6 -0
- package/lib/toKebabCase/toKebabCase.js +7 -0
- package/lib/toKebabCase/toKebabCase.js.map +1 -0
- package/lib/toKebabCase.d.ts +1 -0
- package/lib/utils/utils.js +1 -27
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +0 -7
- package/package.json +9 -9
- package/typings/global-react.d.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Input.tsx"],"names":["invariant","React","warning","globalObject","isEdge","isIE11","isKeyBackspace","isKeyDelete","someKeys","needsPolyfillPlaceholder","InternalMaskedInput","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","isFunction","styles","InputLayout","PolyfillPlaceholder","inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","getProps","defaultProps","state","blinking","focused","selectAllId","input","selectAll","setSelectionRange","value","length","delaySelectAll","requestAnimationFrame","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","theme","getSizeClassName","focus","hovering","blink","focusFallback","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number | null =>\n (this.selectAllId = globalObject.requestAnimationFrame?.(this.selectAll) ?? null);\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = this.getInput(inputProps);\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Input.tsx"],"names":["invariant","React","warning","globalObject","isEdge","isIE11","isKeyBackspace","isKeyDelete","someKeys","needsPolyfillPlaceholder","InternalMaskedInput","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","isFunction","styles","InputLayout","PolyfillPlaceholder","inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","getProps","defaultProps","state","blinking","focused","selectAllId","input","selectAll","setSelectionRange","value","length","delaySelectAll","requestAnimationFrame","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","theme","getSizeClassName","focus","hovering","blink","focusFallback","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number | null =>\n (this.selectAllId = globalObject.requestAnimationFrame?.(this.selectAll) ?? null);\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = this.getInput(inputProps);\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
|
|
@@ -125,6 +125,7 @@ declare type DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;
|
|
|
125
125
|
*/
|
|
126
126
|
export declare class Input extends React.Component<InputProps, InputState> {
|
|
127
127
|
static __KONTUR_REACT_UI__: string;
|
|
128
|
+
static displayName: string;
|
|
128
129
|
static defaultProps: DefaultProps;
|
|
129
130
|
private getProps;
|
|
130
131
|
state: InputState;
|
|
@@ -206,7 +206,7 @@ export var Kebab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_
|
|
|
206
206
|
};
|
|
207
207
|
|
|
208
208
|
return Kebab;
|
|
209
|
-
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = {
|
|
209
|
+
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.displayName = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = {
|
|
210
210
|
onOpen: function onOpen() {
|
|
211
211
|
return undefined;
|
|
212
212
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isElement","globalObject","isKonturIcon","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","styles","KebabIcon","KebabDataTids","caption","Kebab","getProps","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","kebabSmall","kebabMedium","kebabLarge","kebab2022","opened","focused","props","renderIcon2022","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","menuScrollContainerContentWrapperPaddingY","menuLegacyPaddingY","renderMain","positions","disableAnimations","onOpen","onClose","setRootNode","preventIconsOffset","menuMaxHeight","popupMenuId","children","icon","iconsmall","iconmedium","iconlarge","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","propTypes","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n disabled?: boolean;\n size?: SizeProp;\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx(\n styles.kebab(this.theme),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n isTheme2022(this.theme) && styles.kebab2022(),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {isTheme2022(this.theme) ? this.renderIcon2022() : this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { size, icon = <MenuKebabIcon /> } = this.getProps();\n return (\n <div\n className={cx({\n [styles.icon(this.theme)]: true,\n [styles.iconsmall(this.theme)]: size === 'small',\n [styles.iconmedium(this.theme)]: size === 'medium',\n [styles.iconlarge(this.theme)]: size === 'large',\n })}\n >\n {icon}\n </div>\n );\n }\n\n private renderIcon2022() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isElement","globalObject","isKonturIcon","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","styles","KebabIcon","KebabDataTids","caption","Kebab","getProps","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","kebabSmall","kebabMedium","kebabLarge","kebab2022","opened","focused","props","renderIcon2022","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","menuScrollContainerContentWrapperPaddingY","menuLegacyPaddingY","renderMain","positions","disableAnimations","onOpen","onClose","setRootNode","preventIconsOffset","menuMaxHeight","popupMenuId","children","icon","iconsmall","iconmedium","iconlarge","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","propTypes","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n disabled?: boolean;\n size?: SizeProp;\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx(\n styles.kebab(this.theme),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n isTheme2022(this.theme) && styles.kebab2022(),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {isTheme2022(this.theme) ? this.renderIcon2022() : this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { size, icon = <MenuKebabIcon /> } = this.getProps();\n return (\n <div\n className={cx({\n [styles.icon(this.theme)]: true,\n [styles.iconsmall(this.theme)]: size === 'small',\n [styles.iconmedium(this.theme)]: size === 'medium',\n [styles.iconlarge(this.theme)]: size === 'large',\n })}\n >\n {icon}\n </div>\n );\n }\n\n private renderIcon2022() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
|
|
@@ -40,6 +40,7 @@ export interface KebabState {
|
|
|
40
40
|
declare type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;
|
|
41
41
|
export declare class Kebab extends React.Component<KebabProps, KebabState> {
|
|
42
42
|
static __KONTUR_REACT_UI__: string;
|
|
43
|
+
static displayName: string;
|
|
43
44
|
static propTypes: {};
|
|
44
45
|
static defaultProps: DefaultProps;
|
|
45
46
|
private getProps;
|
|
@@ -176,7 +176,7 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
176
176
|
};
|
|
177
177
|
|
|
178
178
|
return Link;
|
|
179
|
-
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.propTypes = {
|
|
179
|
+
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.displayName = 'Link', _class2.propTypes = {
|
|
180
180
|
disabled: PropTypes.bool,
|
|
181
181
|
href: PropTypes.string,
|
|
182
182
|
icon: PropTypes.node,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkIcon","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","rightIcon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","arrow","isFocused","leftIconElement","rightIconElement","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку слева.\n */\n icon?: React.ReactElement;\n /**\n * Добавляет ссылке иконку справа.\n */\n rightIcon?: React.ReactElement;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\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, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\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 renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\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\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {leftIconElement}\n {child}\n {rightIconElement}\n {arrow}\n </Component>\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<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkIcon","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","rightIcon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","arrow","isFocused","leftIconElement","rightIconElement","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку слева.\n */\n icon?: React.ReactElement;\n /**\n * Добавляет ссылке иконку справа.\n */\n rightIcon?: React.ReactElement;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\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, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n public static displayName = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\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 renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\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\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {leftIconElement}\n {child}\n {rightIconElement}\n {arrow}\n </Component>\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<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
|
|
@@ -72,6 +72,7 @@ declare type DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;
|
|
|
72
72
|
*/
|
|
73
73
|
export declare class Link extends React.Component<LinkProps, LinkState> {
|
|
74
74
|
static __KONTUR_REACT_UI__: string;
|
|
75
|
+
static displayName: string;
|
|
75
76
|
static propTypes: {
|
|
76
77
|
disabled: PropTypes.Requireable<boolean>;
|
|
77
78
|
href: PropTypes.Requireable<string>;
|
|
@@ -326,7 +326,7 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
|
|
|
326
326
|
};
|
|
327
327
|
|
|
328
328
|
return Loader;
|
|
329
|
-
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.defaultProps = {
|
|
329
|
+
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.displayName = 'Loader', _class2.defaultProps = {
|
|
330
330
|
type: 'normal',
|
|
331
331
|
active: false,
|
|
332
332
|
delayBeforeSpinnerShow: isTestEnv ? 0 : 300,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","props","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","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","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","caption","type","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","propTypes","bool","node","className","string","oneOf","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } 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 { rootNode, TSetRootNode } 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 children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active?: boolean;\n /**\n * Подпись под спиннером\n */\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n /**\n * Размер спиннера и текста\n *\n * @default normal\n */\n type?: LoaderType;\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow?: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\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](https://tech.skbkontur.ru/react-ui/#/Components/Spinner)\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n */\n type: PropTypes.oneOf(types),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = globalObject.innerHeight;\n const windowWidth = globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(globalObject.document?.querySelectorAll('[origin-tabindex]') ?? []).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","props","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","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","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","MutationObserver","config","childList","subtree","observer","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","caption","type","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","node","className","string","oneOf","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } 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 { rootNode, TSetRootNode } 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 children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active?: boolean;\n /**\n * Подпись под спиннером\n */\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n /**\n * Размер спиннера и текста\n *\n * @default normal\n */\n type?: LoaderType;\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow?: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\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](https://tech.skbkontur.ru/react-ui/#/Components/Spinner)\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n */\n type: PropTypes.oneOf(types),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = globalObject.innerHeight;\n const windowWidth = globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(globalObject.document?.querySelectorAll('[origin-tabindex]') ?? []).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
|
|
@@ -55,6 +55,7 @@ declare type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'dela
|
|
|
55
55
|
*/
|
|
56
56
|
export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
57
57
|
static __KONTUR_REACT_UI__: string;
|
|
58
|
+
static displayName: string;
|
|
58
59
|
static defaultProps: DefaultProps;
|
|
59
60
|
private getProps;
|
|
60
61
|
static propTypes: {
|