@skbkontur/react-ui 6.4.1 → 6.4.2-static-css.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +97 -0
- package/components/Autocomplete/Autocomplete.d.ts +0 -1
- package/components/Autocomplete/Autocomplete.js +13 -4
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.styles.d.ts +4 -4
- package/components/Autocomplete/Autocomplete.styles.js +5 -16
- package/components/Autocomplete/Autocomplete.styles.js.map +1 -1
- package/components/Button/Button.d.ts +15 -1
- package/components/Button/Button.js +162 -76
- package/components/Button/Button.js.map +1 -1
- package/components/Button/Button.styles.d.ts +107 -91
- package/components/Button/Button.styles.js +108 -255
- package/components/Button/Button.styles.js.map +1 -1
- package/components/Button/ButtonArrow.d.ts +2 -3
- package/components/Button/ButtonArrow.js +8 -10
- package/components/Button/ButtonArrow.js.map +1 -1
- package/components/Button/ButtonIcon.js +7 -17
- package/components/Button/ButtonIcon.js.map +1 -1
- package/components/Button/ButtonIcon.styles.d.ts +15 -15
- package/components/Button/ButtonIcon.styles.js +16 -51
- package/components/Button/ButtonIcon.styles.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +0 -1
- package/components/Calendar/Calendar.js +3 -3
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.styles.d.ts +5 -5
- package/components/Calendar/Calendar.styles.js +6 -20
- package/components/Calendar/Calendar.styles.js.map +1 -1
- package/components/Calendar/CalendarDay.js +11 -7
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView.js +1 -3
- package/components/Calendar/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +10 -8
- package/components/Calendar/DayCellView.styles.js +11 -29
- package/components/Calendar/DayCellView.styles.js.map +1 -1
- package/components/Calendar/Month.js +6 -10
- package/components/Calendar/Month.js.map +1 -1
- package/components/Calendar/MonthView.js +7 -7
- package/components/Calendar/MonthView.js.map +1 -1
- package/components/Calendar/MonthView.styles.d.ts +12 -12
- package/components/Calendar/MonthView.styles.js +13 -45
- package/components/Calendar/MonthView.styles.js.map +1 -1
- package/components/Center/Center.d.ts +0 -1
- package/components/Center/Center.js +1 -1
- package/components/Center/Center.js.map +1 -1
- package/components/Center/Center.styles.d.ts +7 -6
- package/components/Center/Center.styles.js +8 -25
- package/components/Center/Center.styles.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +8 -1
- package/components/Checkbox/Checkbox.js +57 -26
- package/components/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.styles.d.ts +33 -30
- package/components/Checkbox/Checkbox.styles.js +35 -95
- package/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/components/DateInput/DateFragmentsView.d.ts +0 -2
- package/components/DateInput/DateFragmentsView.js +10 -7
- package/components/DateInput/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateFragmentsView.styles.d.ts +8 -6
- package/components/DateInput/DateFragmentsView.styles.js +9 -26
- package/components/DateInput/DateFragmentsView.styles.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +0 -2
- package/components/DateInput/DateInput.js +6 -8
- package/components/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.styles.d.ts +10 -11
- package/components/DateInput/DateInput.styles.js +11 -28
- package/components/DateInput/DateInput.styles.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +0 -1
- package/components/DatePicker/DatePicker.js +2 -2
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.styles.d.ts +4 -4
- package/components/DatePicker/DatePicker.styles.js +5 -16
- package/components/DatePicker/DatePicker.styles.js.map +1 -1
- package/components/DatePicker/MobilePicker.styles.d.ts +3 -2
- package/components/DatePicker/MobilePicker.styles.js +4 -13
- package/components/DatePicker/MobilePicker.styles.js.map +1 -1
- package/components/DatePicker/getMobilePickerTheme.js +27 -9
- package/components/DatePicker/getMobilePickerTheme.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +4 -4
- package/components/DateRangePicker/DateRangePicker.js +26 -28
- package/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.styles.d.ts +20 -14
- package/components/DateRangePicker/DateRangePicker.styles.js +25 -49
- package/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
- package/components/DateRangePicker/DateRangePickerTheme.js +30 -10
- package/components/DateRangePicker/DateRangePickerTheme.js.map +1 -1
- package/components/Dropdown/getDropdownTheme.d.ts +11 -0
- package/components/Dropdown/getDropdownTheme.js +23 -4
- package/components/Dropdown/getDropdownTheme.js.map +1 -1
- package/components/DropdownMenu/getDropdownMenuTheme.js +9 -2
- package/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +2 -1
- package/components/FileUploader/FileUploader.js +50 -45
- package/components/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.styles.d.ts +69 -68
- package/components/FileUploader/FileUploader.styles.js +71 -214
- package/components/FileUploader/FileUploader.styles.js.map +1 -1
- package/components/FileUploader/FileUploaderFile.js +28 -30
- package/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/components/FileUploader/FileUploaderFile.styles.d.ts +57 -57
- package/components/FileUploader/FileUploaderFile.styles.js +58 -180
- package/components/FileUploader/FileUploaderFile.styles.js.map +1 -1
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js +17 -19
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.d.ts +31 -31
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js +32 -99
- package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -1
- package/components/FileUploader/FileUploaderFileStatusIcon.js +2 -4
- package/components/FileUploader/FileUploaderFileStatusIcon.js.map +1 -1
- package/components/FileUploader/FileUploaderFileTypeIcon.js +47 -52
- package/components/FileUploader/FileUploaderFileTypeIcon.js.map +1 -1
- package/components/FileUploader/FileUploaderFileTypeIcon.styles.d.ts +14 -0
- package/components/FileUploader/FileUploaderFileTypeIcon.styles.js +16 -0
- package/components/FileUploader/FileUploaderFileTypeIcon.styles.js.map +1 -0
- package/components/FxInput/FxInput.d.ts +1 -1
- package/components/FxInput/FxInput.js +6 -2
- package/components/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.styles.d.ts +4 -0
- package/components/FxInput/FxInput.styles.js +6 -0
- package/components/FxInput/FxInput.styles.js.map +1 -0
- package/components/FxInput/FxInputRestoreBtn.js +23 -15
- package/components/FxInput/FxInputRestoreBtn.js.map +1 -1
- package/components/FxInput/FxInputRestoreBtn.styles.d.ts +6 -0
- package/components/FxInput/FxInputRestoreBtn.styles.js +8 -0
- package/components/FxInput/FxInputRestoreBtn.styles.js.map +1 -0
- package/components/GlobalLoader/GlobalLoaderView.js +30 -14
- package/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +22 -16
- package/components/GlobalLoader/GlobalLoaderView.styles.js +22 -67
- package/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
- package/components/Group/Group.d.ts +0 -1
- package/components/Group/Group.js +2 -3
- package/components/Group/Group.js.map +1 -1
- package/components/Group/Group.styles.d.ts +7 -7
- package/components/Group/Group.styles.js +8 -28
- package/components/Group/Group.styles.js.map +1 -1
- package/components/Hint/Hint.d.ts +10 -2
- package/components/Hint/Hint.js +47 -19
- package/components/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.styles.d.ts +4 -4
- package/components/Hint/Hint.styles.js +5 -16
- package/components/Hint/Hint.styles.js.map +1 -1
- package/components/Hint/HintDelayController.d.ts +11 -0
- package/components/Hint/HintDelayController.js +50 -0
- package/components/Hint/HintDelayController.js.map +1 -0
- package/components/Input/Input.d.ts +0 -1
- package/components/Input/Input.js +13 -13
- package/components/Input/Input.js.map +1 -1
- package/components/Input/Input.styles.d.ts +20 -20
- package/components/Input/Input.styles.js +21 -66
- package/components/Input/Input.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.styles.d.ts +26 -17
- package/components/Input/InputLayout/InputLayout.styles.js +27 -57
- package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAsideCounter.js +8 -8
- package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon.js +19 -25
- package/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAsideText.js +4 -4
- package/components/Input/InputLayout/InputLayoutAsideText.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +0 -1
- package/components/Kebab/Kebab.js +2 -2
- package/components/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.styles.d.ts +10 -10
- package/components/Kebab/Kebab.styles.js +11 -34
- package/components/Kebab/Kebab.styles.js.map +1 -1
- package/components/Link/Link.d.ts +0 -1
- package/components/Link/Link.js +23 -18
- package/components/Link/Link.js.map +1 -1
- package/components/Link/Link.styles.d.ts +23 -23
- package/components/Link/Link.styles.js +25 -81
- package/components/Link/Link.styles.js.map +1 -1
- package/components/Link/LinkIcon.js +4 -6
- package/components/Link/LinkIcon.js.map +1 -1
- package/components/Loader/Loader.d.ts +0 -2
- package/components/Loader/Loader.js +2 -3
- package/components/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.styles.d.ts +7 -7
- package/components/Loader/Loader.styles.js +8 -25
- package/components/Loader/Loader.styles.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +15 -21
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +3 -2
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +5 -13
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +1 -1
- package/components/MaskedInput/MaskedInput.styles.d.ts +3 -3
- package/components/MaskedInput/MaskedInput.styles.js +5 -14
- package/components/MaskedInput/MaskedInput.styles.js.map +1 -1
- package/components/MaskedInput/MaskedInputLegacy.js +4 -6
- package/components/MaskedInput/MaskedInputLegacy.js.map +1 -1
- package/components/MaskedInputV2/MaskedInputV2.js +4 -6
- package/components/MaskedInputV2/MaskedInputV2.js.map +1 -1
- package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +3 -3
- package/components/MaskedInputV2/MaskedInputV2.styles.js +5 -14
- package/components/MaskedInputV2/MaskedInputV2.styles.js.map +1 -1
- package/components/MaskedInputV2/internal/MaskOverlay.js +8 -8
- package/components/MaskedInputV2/internal/MaskOverlay.js.map +1 -1
- package/components/MaskedInputV2/internal/MaskedCore.js +7 -5
- package/components/MaskedInputV2/internal/MaskedCore.js.map +1 -1
- package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +7 -7
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js +9 -25
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +1 -1
- package/components/MenuFooter/MenuFooter.js +10 -12
- package/components/MenuFooter/MenuFooter.js.map +1 -1
- package/components/MenuFooter/MenuFooter.styles.d.ts +9 -9
- package/components/MenuFooter/MenuFooter.styles.js +10 -32
- package/components/MenuFooter/MenuFooter.styles.js.map +1 -1
- package/components/MenuHeader/MenuHeader.js +9 -11
- package/components/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.styles.d.ts +9 -9
- package/components/MenuHeader/MenuHeader.styles.js +10 -32
- package/components/MenuHeader/MenuHeader.styles.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +0 -1
- package/components/MenuItem/MenuItem.js +21 -21
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.mixins.d.ts +6 -0
- package/components/MenuItem/MenuItem.mixins.js +7 -1
- package/components/MenuItem/MenuItem.mixins.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +26 -26
- package/components/MenuItem/MenuItem.styles.js +28 -85
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.js +4 -6
- package/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.styles.d.ts +4 -4
- package/components/MenuSeparator/MenuSeparator.styles.js +5 -16
- package/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.styles.d.ts +10 -10
- package/components/MiniModal/MiniModal.styles.js +11 -35
- package/components/MiniModal/MiniModal.styles.js.map +1 -1
- package/components/MiniModal/MiniModalBody.js +3 -3
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.js +4 -6
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.js +4 -6
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/MiniModal/MiniModalIndent.js +2 -4
- package/components/MiniModal/MiniModalIndent.js.map +1 -1
- package/components/MiniModal/getMiniModalTheme.js +39 -13
- package/components/MiniModal/getMiniModalTheme.js.map +1 -1
- package/components/Modal/Modal.d.ts +0 -1
- package/components/Modal/Modal.js +8 -8
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +50 -50
- package/components/Modal/Modal.styles.js +52 -161
- package/components/Modal/Modal.styles.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +0 -1
- package/components/Modal/ModalBody.js +7 -7
- package/components/Modal/ModalBody.js.map +1 -1
- package/components/Modal/ModalClose.js +7 -9
- package/components/Modal/ModalClose.js.map +1 -1
- package/components/Modal/ModalFooter.js +3 -3
- package/components/Modal/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader.js +3 -3
- package/components/Modal/ModalHeader.js.map +1 -1
- package/components/Modal/ModalSeparator.js +4 -6
- package/components/Modal/ModalSeparator.js.map +1 -1
- package/components/Paging/Paging.d.ts +0 -2
- package/components/Paging/Paging.js +32 -37
- package/components/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.styles.d.ts +31 -31
- package/components/Paging/Paging.styles.js +32 -97
- package/components/Paging/Paging.styles.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +0 -2
- package/components/PasswordInput/PasswordInput.js +6 -11
- package/components/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.styles.d.ts +10 -10
- package/components/PasswordInput/PasswordInput.styles.js +11 -34
- package/components/PasswordInput/PasswordInput.styles.js.map +1 -1
- package/components/Radio/Radio.d.ts +8 -1
- package/components/Radio/Radio.js +59 -28
- package/components/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.styles.d.ts +33 -30
- package/components/Radio/Radio.styles.js +35 -95
- package/components/Radio/Radio.styles.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +0 -1
- package/components/RadioGroup/RadioGroup.js +1 -2
- package/components/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.styles.d.ts +5 -5
- package/components/RadioGroup/RadioGroup.styles.js +6 -22
- package/components/RadioGroup/RadioGroup.styles.js.map +1 -1
- package/components/ScrollContainer/ScrollBar.d.ts +1 -3
- package/components/ScrollContainer/ScrollBar.js +9 -14
- package/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +0 -1
- package/components/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.styles.d.ts +13 -13
- package/components/ScrollContainer/ScrollContainer.styles.js +15 -43
- package/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
- package/components/Select/Select.d.ts +0 -1
- package/components/Select/Select.js +12 -12
- package/components/Select/Select.js.map +1 -1
- package/components/Select/Select.styles.d.ts +17 -17
- package/components/Select/Select.styles.js +18 -55
- package/components/Select/Select.styles.js.map +1 -1
- package/components/Select/selectTheme.js +31 -7
- package/components/Select/selectTheme.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +0 -2
- package/components/SidePage/SidePage.js +8 -10
- package/components/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +49 -49
- package/components/SidePage/SidePage.styles.js +50 -156
- package/components/SidePage/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +0 -1
- package/components/SidePage/SidePageBody.js +7 -8
- package/components/SidePage/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageCloseButton.js +6 -8
- package/components/SidePage/SidePageCloseButton.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +0 -2
- package/components/SidePage/SidePageContainer.js +11 -13
- package/components/SidePage/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +0 -2
- package/components/SidePage/SidePageFooter.js +11 -13
- package/components/SidePage/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +0 -1
- package/components/SidePage/SidePageHeader.js +10 -10
- package/components/SidePage/SidePageHeader.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +0 -2
- package/components/Spinner/Spinner.js +7 -10
- package/components/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.styles.d.ts +12 -12
- package/components/Spinner/Spinner.styles.js +13 -41
- package/components/Spinner/Spinner.styles.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +0 -1
- package/components/Sticky/Sticky.js +1 -1
- package/components/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.styles.d.ts +7 -6
- package/components/Sticky/Sticky.styles.js +8 -25
- package/components/Sticky/Sticky.styles.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +0 -1
- package/components/Switcher/Switcher.js +6 -6
- package/components/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.styles.d.ts +11 -11
- package/components/Switcher/Switcher.styles.js +12 -37
- package/components/Switcher/Switcher.styles.js.map +1 -1
- package/components/Switcher/switcherTheme.js +12 -4
- package/components/Switcher/switcherTheme.js.map +1 -1
- package/components/Tabs/Indicator.d.ts +0 -1
- package/components/Tabs/Indicator.js +2 -2
- package/components/Tabs/Indicator.js.map +1 -1
- package/components/Tabs/Indicator.styles.d.ts +7 -7
- package/components/Tabs/Indicator.styles.js +8 -25
- package/components/Tabs/Indicator.styles.js.map +1 -1
- package/components/Tabs/Tab.d.ts +0 -2
- package/components/Tabs/Tab.js +19 -24
- package/components/Tabs/Tab.js.map +1 -1
- package/components/Tabs/Tab.styles.d.ts +27 -27
- package/components/Tabs/Tab.styles.js +30 -99
- package/components/Tabs/Tab.styles.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +0 -2
- package/components/Tabs/Tabs.js +24 -29
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.styles.d.ts +6 -6
- package/components/Tabs/Tabs.styles.js +8 -25
- package/components/Tabs/Tabs.styles.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +0 -2
- package/components/Textarea/Textarea.js +17 -24
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +26 -22
- package/components/Textarea/Textarea.styles.js +27 -71
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter.js +22 -14
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/components/TimePicker/TimePicker.styles.d.ts +11 -11
- package/components/TimePicker/TimePicker.styles.js +12 -37
- package/components/TimePicker/TimePicker.styles.js.map +1 -1
- package/components/TimePicker/TimePickerItems.js +6 -6
- package/components/TimePicker/TimePickerItems.js.map +1 -1
- package/components/TimePicker/TimePickerPopup.js +1 -1
- package/components/TimePicker/TimePickerPopup.js.map +1 -1
- package/components/Toast/Toast.d.ts +0 -1
- package/components/Toast/Toast.js +9 -6
- package/components/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.styles.d.ts +6 -5
- package/components/Toast/Toast.styles.js +7 -22
- package/components/Toast/Toast.styles.js.map +1 -1
- package/components/Toast/ToastView.d.ts +0 -1
- package/components/Toast/ToastView.js +9 -17
- package/components/Toast/ToastView.js.map +1 -1
- package/components/Toast/ToastView.styles.d.ts +19 -17
- package/components/Toast/ToastView.styles.js +20 -65
- package/components/Toast/ToastView.styles.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +1 -1
- package/components/Toggle/Toggle.js +55 -39
- package/components/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +47 -46
- package/components/Toggle/Toggle.styles.js +48 -143
- package/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/Token/Token.d.ts +0 -2
- package/components/Token/Token.js +5 -10
- package/components/Token/Token.js.map +1 -1
- package/components/Token/Token.styles.d.ts +20 -19
- package/components/Token/Token.styles.js +22 -62
- package/components/Token/Token.styles.js.map +1 -1
- package/components/Token/TokenView.js +8 -10
- package/components/Token/TokenView.js.map +1 -1
- package/components/TokenInput/TextWidthHelper.d.ts +0 -1
- package/components/TokenInput/TextWidthHelper.js +4 -4
- package/components/TokenInput/TextWidthHelper.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +1 -2
- package/components/TokenInput/TokenInput.js +20 -22
- package/components/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.styles.d.ts +21 -20
- package/components/TokenInput/TokenInput.styles.js +22 -66
- package/components/TokenInput/TokenInput.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +0 -1
- package/components/Tooltip/Tooltip.js +12 -12
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.styles.d.ts +11 -10
- package/components/Tooltip/Tooltip.styles.js +12 -34
- package/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/index.d.ts +4 -0
- package/index.js +12 -0
- package/index.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.js +7 -9
- package/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +11 -12
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.js +12 -35
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.d.ts +21 -11
- package/internal/CloseButtonIcon/CloseButtonIcon.js +28 -13
- package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.styles.d.ts +8 -8
- package/internal/CloseButtonIcon/CloseButtonIcon.styles.js +9 -23
- package/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +5 -1
- package/internal/CommonWrapper/CommonWrapper.js +107 -6
- package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +1 -2
- package/internal/CustomComboBox/ComboBoxView.js +8 -7
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.styles.d.ts +5 -3
- package/internal/CustomComboBox/CustomComboBox.styles.js +6 -16
- package/internal/CustomComboBox/CustomComboBox.styles.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +0 -1
- package/internal/DateSelect/DateSelect.js +2 -2
- package/internal/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles.d.ts +5 -5
- package/internal/DateSelect/DateSelect.styles.js +7 -19
- package/internal/DateSelect/DateSelect.styles.js.map +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +15 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +36 -15
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.d.ts +5 -0
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.js +7 -0
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.js.map +1 -0
- package/internal/InputLikeText/InputLikeText.d.ts +0 -1
- package/internal/InputLikeText/InputLikeText.js +21 -17
- package/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.styles.d.ts +7 -7
- package/internal/InputLikeText/InputLikeText.styles.js +8 -28
- package/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +0 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +14 -14
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -2
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +4 -13
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -1
- package/internal/MaskCharLowLine/MaskCharLowLine.styles.d.ts +3 -2
- package/internal/MaskCharLowLine/MaskCharLowLine.styles.js +4 -13
- package/internal/MaskCharLowLine/MaskCharLowLine.styles.js.map +1 -1
- package/internal/Menu/Menu.d.ts +0 -1
- package/internal/Menu/Menu.js +9 -9
- package/internal/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.styles.d.ts +15 -15
- package/internal/Menu/Menu.styles.js +16 -49
- package/internal/Menu/Menu.styles.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.js +10 -10
- package/internal/MenuMessage/MenuMessage.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.styles.d.ts +10 -10
- package/internal/MenuMessage/MenuMessage.styles.js +11 -39
- package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +0 -1
- package/internal/MobilePopup/MobilePopup.js +23 -11
- package/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.styles.d.ts +16 -16
- package/internal/MobilePopup/MobilePopup.styles.js +17 -55
- package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +0 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +5 -5
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +6 -6
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +7 -23
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +0 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +10 -10
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +13 -13
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +14 -45
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
- package/internal/NativeDateInput/NativeDateInput.d.ts +0 -1
- package/internal/NativeDateInput/NativeDateInput.js +1 -1
- package/internal/NativeDateInput/NativeDateInput.js.map +1 -1
- package/internal/NativeDateInput/NativeDateInput.styles.d.ts +3 -2
- package/internal/NativeDateInput/NativeDateInput.styles.js +4 -13
- package/internal/NativeDateInput/NativeDateInput.styles.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.js +1 -2
- package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -2
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +4 -13
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -1
- package/internal/Popup/Popup.d.ts +0 -1
- package/internal/Popup/Popup.js +5 -5
- package/internal/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.styles.d.ts +21 -21
- package/internal/Popup/Popup.styles.js +22 -67
- package/internal/Popup/Popup.styles.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +0 -1
- package/internal/Popup/PopupPin.js +1 -1
- package/internal/Popup/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.styles.d.ts +9 -8
- package/internal/Popup/PopupPin.styles.js +10 -31
- package/internal/Popup/PopupPin.styles.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +0 -1
- package/internal/PopupMenu/PopupMenu.js +1 -1
- package/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.styles.d.ts +4 -3
- package/internal/PopupMenu/PopupMenu.styles.js +5 -16
- package/internal/PopupMenu/PopupMenu.styles.js.map +1 -1
- package/internal/RenderContainer/RenderInnerContainer.js +4 -2
- package/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/internal/ResizeDetector/ResizeDetector.d.ts +0 -1
- package/internal/ResizeDetector/ResizeDetector.js +1 -1
- package/internal/ResizeDetector/ResizeDetector.js.map +1 -1
- package/internal/ResizeDetector/ResizeDetector.styles.d.ts +7 -6
- package/internal/ResizeDetector/ResizeDetector.styles.js +8 -25
- package/internal/ResizeDetector/ResizeDetector.styles.js.map +1 -1
- package/internal/SpinnerIcon/SpinnerIcon.js +2 -2
- package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
- package/internal/SpinnerIcon/SpinnerIcon.styles.d.ts +6 -5
- package/internal/SpinnerIcon/SpinnerIcon.styles.js +7 -22
- package/internal/SpinnerIcon/SpinnerIcon.styles.js.map +1 -1
- package/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -1
- package/internal/TextWidthHelper/TextWidthHelper.js +1 -1
- package/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -3
- package/internal/TextWidthHelper/TextWidthHelper.styles.js +5 -16
- package/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -1
- package/internal/TimeInput/TimeFragments.js +19 -15
- package/internal/TimeInput/TimeFragments.js.map +1 -1
- package/internal/TimeInput/TimeFragments.styles.d.ts +19 -31
- package/internal/TimeInput/TimeFragments.styles.js +20 -76
- package/internal/TimeInput/TimeFragments.styles.js.map +1 -1
- package/internal/TimeInput/TimeInput.js +4 -4
- package/internal/TimeInput/TimeInput.js.map +1 -1
- package/internal/TimeInput/TimeInput.styles.d.ts +6 -6
- package/internal/TimeInput/TimeInput.styles.js +7 -22
- package/internal/TimeInput/TimeInput.styles.js.map +1 -1
- package/internal/icons2022/BaseIcon.js +8 -1
- package/internal/icons2022/BaseIcon.js.map +1 -1
- package/internal/icons2022/BaseIcon.styles.d.ts +5 -2
- package/internal/icons2022/BaseIcon.styles.js +6 -14
- package/internal/icons2022/BaseIcon.styles.js.map +1 -1
- package/internal/icons2022/LoadingIcon.js +3 -5
- package/internal/icons2022/LoadingIcon.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +10 -0
- package/internal/themes/BasicTheme.js +17 -6
- package/internal/themes/BasicTheme.js.map +1 -1
- package/internal/themes/DarkTheme6_0.js +62 -342
- package/internal/themes/DarkTheme6_0.js.map +1 -1
- package/internal/themes/DarkTheme6_1.js +11 -3
- package/internal/themes/DarkTheme6_1.js.map +1 -1
- package/internal/themes/DarkTheme6_4.js +11 -1
- package/internal/themes/DarkTheme6_4.js.map +1 -1
- package/lib/Upgrades.d.ts +12 -2
- package/lib/Upgrades.js +12 -16
- package/lib/Upgrades.js.map +1 -1
- package/lib/classNames.generated.d.ts +1235 -0
- package/lib/classNames.generated.js +1233 -0
- package/lib/classNames.generated.js.map +1 -0
- package/lib/globalObject.js +4 -1
- package/lib/globalObject.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +38 -6
- package/lib/renderEnvironment/RenderEnvironmentContext.js +21 -19
- package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentDecorator.js +6 -3
- package/lib/renderEnvironment/RenderEnvironmentDecorator.js.map +1 -1
- package/lib/styles/baselineCompensation.d.ts +63 -0
- package/lib/styles/baselineCompensation.js +122 -0
- package/lib/styles/baselineCompensation.js.map +1 -0
- package/lib/theming/Emotion.d.ts +43 -9
- package/lib/theming/Emotion.js +70 -35
- package/lib/theming/Emotion.js.map +1 -1
- package/lib/theming/declaredTheme.d.ts +43 -0
- package/lib/theming/declaredTheme.js +56 -0
- package/lib/theming/declaredTheme.js.map +1 -0
- package/lib/theming/hashString.d.ts +19 -0
- package/lib/theming/hashString.js +52 -0
- package/lib/theming/hashString.js.map +1 -0
- package/lib/theming/staticStyles.d.ts +17 -0
- package/lib/theming/staticStyles.js +8 -0
- package/lib/theming/staticStyles.js.map +1 -0
- package/lib/theming/staticThemeDelta.d.ts +17 -0
- package/lib/theming/staticThemeDelta.js +37 -0
- package/lib/theming/staticThemeDelta.js.map +1 -0
- package/lib/theming/staticThemeVars.d.ts +21 -0
- package/lib/theming/staticThemeVars.js +35 -0
- package/lib/theming/staticThemeVars.js.map +1 -0
- package/lib/theming/themeCssVarsClass.d.ts +89 -0
- package/lib/theming/themeCssVarsClass.js +253 -0
- package/lib/theming/themeCssVarsClass.js.map +1 -0
- package/lib/theming/themeCssVarsDelta.d.ts +13 -0
- package/lib/theming/themeCssVarsDelta.js +67 -0
- package/lib/theming/themeCssVarsDelta.js.map +1 -0
- package/lib/theming/themeToCssVars.d.ts +47 -0
- package/lib/theming/themeToCssVars.js +861 -0
- package/lib/theming/themeToCssVars.js.map +1 -0
- package/package.json +47 -6
- package/react-ui-tailwind.css +544 -0
- package/react-ui-themes.css +8628 -0
- package/react-ui-token-map.json +9029 -0
- package/react-ui.css +7776 -0
- package/react-ui.layer.css +7778 -0
- package/themes/dark-6-0.css +1439 -0
- package/themes/dark-6-0.scoped.css +1439 -0
- package/themes/dark-6-1.css +1439 -0
- package/themes/dark-6-1.scoped.css +1439 -0
- package/themes/dark.css +1439 -0
- package/themes/dark.scoped.css +1439 -0
- package/themes/light-6-0.css +1437 -0
- package/themes/light-6-0.scoped.css +1437 -0
- package/themes/light-6-1.css +1437 -0
- package/themes/light-6-1.scoped.css +1437 -0
- package/themes/light.css +1437 -0
- package/themes/light.scoped.css +1437 -0
- package/components/Button/Button.mixins.d.ts +0 -4
- package/components/Button/Button.mixins.js +0 -21
- package/components/Button/Button.mixins.js.map +0 -1
- package/components/Checkbox/Checkbox.mixins.d.ts +0 -4
- package/components/Checkbox/Checkbox.mixins.js +0 -18
- package/components/Checkbox/Checkbox.mixins.js.map +0 -1
- package/components/FileUploader/FileUploader.mixins.d.ts +0 -1
- package/components/FileUploader/FileUploader.mixins.js +0 -4
- package/components/FileUploader/FileUploader.mixins.js.map +0 -1
- package/components/Link/Link.mixins.d.ts +0 -2
- package/components/Link/Link.mixins.js +0 -7
- package/components/Link/Link.mixins.js.map +0 -1
- package/components/MenuFooter/MenuFooter.mixins.d.ts +0 -2
- package/components/MenuFooter/MenuFooter.mixins.js +0 -8
- package/components/MenuFooter/MenuFooter.mixins.js.map +0 -1
- package/components/MenuHeader/MenuHeader.mixins.d.ts +0 -2
- package/components/MenuHeader/MenuHeader.mixins.js +0 -8
- package/components/MenuHeader/MenuHeader.mixins.js.map +0 -1
- package/components/Radio/Radio.mixins.d.ts +0 -7
- package/components/Radio/Radio.mixins.js +0 -30
- package/components/Radio/Radio.mixins.js.map +0 -1
- package/components/Tabs/helpers.d.ts +0 -6
- package/components/Tabs/helpers.js +0 -25
- package/components/Tabs/helpers.js.map +0 -1
- package/components/Textarea/Textarea.mixins.d.ts +0 -2
- package/components/Textarea/Textarea.mixins.js +0 -7
- package/components/Textarea/Textarea.mixins.js.map +0 -1
- package/components/Toggle/Toggle.mixins.d.ts +0 -8
- package/components/Toggle/Toggle.mixins.js +0 -32
- package/components/Toggle/Toggle.mixins.js.map +0 -1
- package/components/Token/Token.mixins.d.ts +0 -1
- package/components/Token/Token.mixins.js +0 -4
- package/components/Token/Token.mixins.js.map +0 -1
- package/components/TokenInput/TokenInput.mixins.d.ts +0 -2
- package/components/TokenInput/TokenInput.mixins.js +0 -7
- package/components/TokenInput/TokenInput.mixins.js.map +0 -1
- package/lib/chars.d.ts +0 -8
- package/lib/chars.js +0 -9
- package/lib/chars.js.map +0 -1
- package/lib/styles/Mixins.d.ts +0 -2
- package/lib/styles/Mixins.js +0 -7
- package/lib/styles/Mixins.js.map +0 -1
- package/lib/styles/UiFont.d.ts +0 -3
- package/lib/styles/UiFont.js +0 -18
- package/lib/styles/UiFont.js.map +0 -1
- package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +0 -1
- package/lib/styles/getLabGrotesqueBaselineCompensation.js +0 -10
- package/lib/styles/getLabGrotesqueBaselineCompensation.js.map +0 -1
- package/lib/theming/AnimationKeyframes.d.ts +0 -7
- package/lib/theming/AnimationKeyframes.js +0 -24
- package/lib/theming/AnimationKeyframes.js.map +0 -1
- package/lib/theming/useTheme.d.ts +0 -2
- package/lib/theming/useTheme.js +0 -6
- package/lib/theming/useTheme.js.map +0 -1
- package/typings/stylis-plugin-extra-scope.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.4.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.4.1...@skbkontur/react-ui@6.4.2) (2026-09-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **FileUploader:** make loading files neutral ([f54e971](https://github.com/skbkontur/retail-ui/commit/f54e97169dac3f57abf18ef5236dead9d06e3ca8))
|
|
12
|
+
* **Hint:** show next hint immediate after fast hover, add prop `delayBeforeShow` ([574784d](https://github.com/skbkontur/retail-ui/commit/574784dc56f41794243eabe9d36d611a30dc59af))
|
|
13
|
+
* **Toast:** reset transition ref on repeated display ([2c9a115](https://github.com/skbkontur/retail-ui/commit/2c9a1152964bd71f2683a97bd3f0253ad235c52c))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## [6.4.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.4.0...@skbkontur/react-ui@6.4.1) (2026-09-17)
|
|
7
20
|
|
|
8
21
|
|
package/README.md
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
[](https://tc.skbkontur.ru/project.html?projectId=FrontendInfrastructure_Packages_ReactUI&tab=projectOverview)
|
|
4
4
|
|
|
5
5
|
- [Как использовать](#как-использовать)
|
|
6
|
+
- [Стили отдельным файлом](#стили-отдельным-файлом)
|
|
7
|
+
- [Tailwind](#tailwind)
|
|
6
8
|
- [FAQ](#faq)
|
|
7
9
|
|
|
8
10
|
### Как использовать
|
|
@@ -21,6 +23,101 @@ const MyApp = () => (
|
|
|
21
23
|
);
|
|
22
24
|
```
|
|
23
25
|
|
|
26
|
+
### Стили отдельным файлом
|
|
27
|
+
|
|
28
|
+
**Подключать эти два файла обязательно.** Правила компонентов лежат в пакете обычным
|
|
29
|
+
CSS и в рантайме не вставляются — приложение, которое файл не подключит, получит
|
|
30
|
+
компоненты без единого правила:
|
|
31
|
+
|
|
32
|
+
```jsx harmony static
|
|
33
|
+
import '@skbkontur/react-ui/react-ui.css';
|
|
34
|
+
import '@skbkontur/react-ui/themes/light.css';
|
|
35
|
+
|
|
36
|
+
const MyApp = () => <App />;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Настраивать ничего не надо: пропа `externalStyles` больше нет, как и `nonce`, `layer`
|
|
40
|
+
и `speedy`. Первый стал единственным поведением, остальные обслуживали вставку правил
|
|
41
|
+
в рантайме — её не осталось.
|
|
42
|
+
|
|
43
|
+
Если приложение подключило файл темы, стоит сказать об этом библиотеке: тогда она не
|
|
44
|
+
станет печатать блок переменных на корне каждого компонента, и переопределение с
|
|
45
|
+
`:root` начнёт доходить до правил.
|
|
46
|
+
|
|
47
|
+
```jsx harmony static
|
|
48
|
+
import { LIGHT_THEME, RenderEnvironmentProvider } from '@skbkontur/react-ui';
|
|
49
|
+
|
|
50
|
+
const MyApp = () => (
|
|
51
|
+
<RenderEnvironmentProvider rootTheme={LIGHT_THEME}>
|
|
52
|
+
<App />
|
|
53
|
+
</RenderEnvironmentProvider>
|
|
54
|
+
);
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
С ним в рантайме не создаётся ни одного правила и ни одного тега `<style>`.
|
|
58
|
+
|
|
59
|
+
Файлов два, потому что правила компонентов от темы не зависят, а объявления
|
|
60
|
+
переменных — это и есть тема:
|
|
61
|
+
|
|
62
|
+
| Что подключаете | Когда |
|
|
63
|
+
| ------------------------------------------- | -------------------------------------------------- |
|
|
64
|
+
| `@skbkontur/react-ui/react-ui.css` | обязательно: правила компонентов и шрифт |
|
|
65
|
+
| `@skbkontur/react-ui/react-ui.layer.css` | вместо предыдущего: тот же CSS в `@layer react-ui` |
|
|
66
|
+
| `@skbkontur/react-ui/themes/light.css` | `LIGHT_THEME`, то же для версий 6.1—6.3 |
|
|
67
|
+
| `@skbkontur/react-ui/themes/dark.css` | `DARK_THEME`, то же для версий 6.1—6.3 |
|
|
68
|
+
| `@skbkontur/react-ui/themes/light-6-0.css` | `LIGHT_THEME_6_0` |
|
|
69
|
+
| `@skbkontur/react-ui/themes/dark-6-0.css` | `DARK_THEME_6_0` |
|
|
70
|
+
| `@skbkontur/react-ui/react-ui-themes.css` | все темы сразу, если приложение их переключает |
|
|
71
|
+
| `@skbkontur/react-ui/react-ui-tailwind.css` | приложению на Tailwind: порядок слоёв и мост темы |
|
|
72
|
+
|
|
73
|
+
Слойный вариант нужен приложению, которому надо перебивать **состояния** библиотеки
|
|
74
|
+
(`:hover`, `:active` и подобные): правило вне слоёв побеждает любое правило внутри слоя
|
|
75
|
+
независимо от специфичности. Подключается вместо обычного файла, а не вместе с ним;
|
|
76
|
+
оговорки — на странице «Каскад» в документации.
|
|
77
|
+
|
|
78
|
+
### Tailwind
|
|
79
|
+
|
|
80
|
+
Приложению на Tailwind нужен слойный файл и одно объявление порядка слоёв — библиотека
|
|
81
|
+
обязана стоять между сбросом Tailwind и его утилитами. И то, и другое привозит
|
|
82
|
+
`react-ui-tailwind.css`, он же отдаёт цвета, радиусы и тени библиотеки как токены
|
|
83
|
+
Tailwind (`bg-kontur-bg-default`, `rounded-kontur-menu`):
|
|
84
|
+
|
|
85
|
+
```css static
|
|
86
|
+
@import '@skbkontur/react-ui/react-ui-tailwind.css';
|
|
87
|
+
@import '@skbkontur/react-ui/react-ui.layer.css';
|
|
88
|
+
@import '@skbkontur/react-ui/themes/light.css';
|
|
89
|
+
@import 'tailwindcss';
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Порядок импортов переставлять нельзя, и почему — на странице «Tailwind» в документации.
|
|
93
|
+
|
|
94
|
+
Рядом с файлами стилей лежит `@skbkontur/react-ui/react-ui-token-map.json` — карта «какой
|
|
95
|
+
класс какие переменные темы читает», собранная из самого `react-ui.css`. Нужна, чтобы
|
|
96
|
+
узнать, какую переменную крутить ради конкретного куска компонента; её же показывает
|
|
97
|
+
страница «Token Map» в документации.
|
|
98
|
+
|
|
99
|
+
Своя тема поверх поставляемой (`ThemeFactory.create({…}, LIGHT_THEME)`) файла не
|
|
100
|
+
требует: её отличия от базовой библиотека дописывает атрибутом `style` на корне
|
|
101
|
+
компонента. Тема, собранная с нуля, приедет правилом в рантайме, как и раньше.
|
|
102
|
+
|
|
103
|
+
Что это даёт:
|
|
104
|
+
|
|
105
|
+
- **CSP без послаблений.** Странице хватает `style-src 'self'`: ни
|
|
106
|
+
`'unsafe-inline'`, ни nonce не нужны.
|
|
107
|
+
- **Стриминг и серверные компоненты.** Нечего собирать из кеша Emotion и нечего
|
|
108
|
+
вставлять при `renderToPipeableStream`.
|
|
109
|
+
- **Свой контроль над CSS.** Файл проходит минификацию и кеширование приложения
|
|
110
|
+
наравне с остальными стилями.
|
|
111
|
+
|
|
112
|
+
Требования «настройка сервера и клиента должна совпадать» больше нет: настраивать
|
|
113
|
+
нечего, а имена классов заданы строками в словарях компонентов и от окружения не
|
|
114
|
+
зависят.
|
|
115
|
+
|
|
116
|
+
Библиотека **не импортирует CSS сама** — файлы лежат в пакете рядом и подключаются
|
|
117
|
+
приложением. Это нужно виджетам: обычный файл можно завернуть в constructed
|
|
118
|
+
stylesheet и изолировать. По той же причине библиотека, построенная поверх
|
|
119
|
+
react-ui, CSS не подключает и не переупаковывает — это делает приложение.
|
|
120
|
+
|
|
24
121
|
### StrictMode
|
|
25
122
|
|
|
26
123
|
Начиная с версий `@skbkontur/react-ui@3.10.0` и `@skbkontur/react-ui-validations@1.7.0`, библиотека поддерживает работу
|
|
@@ -108,12 +108,17 @@ var Autocomplete = /** @class */ (function (_super) {
|
|
|
108
108
|
var _a;
|
|
109
109
|
var focused = _this.state.focused;
|
|
110
110
|
var isMobile = _this.isMobileLayout;
|
|
111
|
-
var onValueChange = props.onValueChange, onKeyDown = props.onKeyDown, onFocus = props.onFocus, onBlur = props.onBlur, _renderItem = props.renderItem, disablePortal = props.disablePortal, hasShadow = props.hasShadow, menuAlign = props.menuAlign, menuMaxHeight = props.menuMaxHeight, preventWindowScroll = props.preventWindowScroll, source = props.source, menuPos = props.menuPos,
|
|
111
|
+
var onValueChange = props.onValueChange, onKeyDown = props.onKeyDown, onFocus = props.onFocus, onBlur = props.onBlur, _renderItem = props.renderItem, disablePortal = props.disablePortal, hasShadow = props.hasShadow, menuAlign = props.menuAlign, menuMaxHeight = props.menuMaxHeight, preventWindowScroll = props.preventWindowScroll, source = props.source, menuPos = props.menuPos, width = props.width, mobileMenuHeaderText = props.mobileMenuHeaderText, type = props.type, rest = __rest(props, ["onValueChange", "onKeyDown", "onFocus", "onBlur", "renderItem", "disablePortal", "hasShadow", "menuAlign", "menuMaxHeight", "preventWindowScroll", "source", "menuPos", "width", "mobileMenuHeaderText", "type"]);
|
|
112
112
|
var inputProps = __assign(__assign({}, rest), { width: '100%', autoComplete: 'off', 'aria-controls': _this.menuId, onValueChange: _this.handleValueChange, onKeyDown: _this.handleKeyDown, onFocus: _this.handleFocus, ref: _this.refInput });
|
|
113
113
|
return (React.createElement(RenderLayer, { onFocusOutside: _this.handleBlur, onClickOutside: _this.handleClickOutside, active: focused },
|
|
114
|
-
React.createElement("span", { "data-tid": AutocompleteDataTids.root, className: _this.cx(_this.styles.root(
|
|
114
|
+
React.createElement("span", { "data-tid": AutocompleteDataTids.root, className: _this.cx(_this.styles.root(), (_a = {},
|
|
115
115
|
_a[_this.styles.noPortal()] = disablePortal,
|
|
116
|
-
_a)),
|
|
116
|
+
_a)),
|
|
117
|
+
// Инлайн только за пропом: ширину по умолчанию задаёт класс `root`
|
|
118
|
+
// ссылкой на `--kontur-inputWidth`. Раньше значение темы читалось в
|
|
119
|
+
// JS и уезжало в атрибут `style` — то есть приезжало литералом в
|
|
120
|
+
// серверную разметку и терялось под `style-src-attr 'none'`.
|
|
121
|
+
style: width === undefined ? undefined : { width: width }, ref: _this.refRootSpan },
|
|
117
122
|
_this.getInput(inputProps),
|
|
118
123
|
isMobile ? _this.renderMobileMenu() : _this.renderMenu())));
|
|
119
124
|
};
|
|
@@ -277,7 +282,7 @@ var Autocomplete = /** @class */ (function (_super) {
|
|
|
277
282
|
};
|
|
278
283
|
Autocomplete.prototype.render = function () {
|
|
279
284
|
var _this = this;
|
|
280
|
-
this.styles = getStyles(
|
|
285
|
+
this.styles = getStyles();
|
|
281
286
|
return (React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
282
287
|
_this.theme = getAutocompleteTheme(theme);
|
|
283
288
|
return (React.createElement(ThemeContext.Provider, { value: _this.theme },
|
|
@@ -301,6 +306,10 @@ var Autocomplete = /** @class */ (function (_super) {
|
|
|
301
306
|
Autocomplete.prototype.renderMenu = function () {
|
|
302
307
|
var items = this.state.items;
|
|
303
308
|
var _a = this.getProps(), menuPos = _a.menuPos, menuAlign = _a.menuAlign, menuMaxHeight = _a.menuMaxHeight, hasShadow = _a.hasShadow, menuWidth = _a.menuWidth, width = _a.width, preventWindowScroll = _a.preventWindowScroll, disablePortal = _a.disablePortal;
|
|
309
|
+
// Меню равняется по ширине поля, только если ширину задали пропом. Иначе
|
|
310
|
+
// она остаётся авто, и меню растягивается по содержимому — так было и до
|
|
311
|
+
// перевода ширины по умолчанию в CSS: дефолт из темы подставлялся в
|
|
312
|
+
// локальной деструктуризации `renderMain`, а сюда приходил `undefined`.
|
|
304
313
|
var calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;
|
|
305
314
|
var menuProps = {
|
|
306
315
|
ref: this.refMenu,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sourceRoot":"","sources":["Autocomplete.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getRandomID, isNullable } from '../../lib/utils.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport { Input } from '../Input/index.js';\nimport type { InputProps } from '../Input/index.js';\nimport { MaskedInput, type MaskedProps, getSafeMaskInputType } from '../MaskedInput/index.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator.js';\nimport { getStyles } from './Autocomplete.styles.js';\nimport { getAutocompleteTheme } from './getAutocompleteTheme.js';\nimport type { AutocompleteLocale } from './locale/index.js';\nimport { AutocompleteLocaleHelper } from './locale/index.js';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n Override<\n Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n {\n /** Отрисовывает элементы результата поиска. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задаёт функцию поиска элементов, которая должна возвращать Promise с массивом значений. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** По умолчанию выпадающий список рендерится через [паттерн Portal](https://react.dev/reference/react-dom/createPortal). Проп отключает использование Portal и список рендерится как обычный блок с абсолютным позиционированием внутри компонента. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего списка. */\n hasShadow?: boolean;\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: 'left' | 'right';\n\n /** Максимальная высота выпадающего списка. */\n menuMaxHeight?: number | string;\n\n /** Ширина выпадающего списка. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда выпадающий список раскрыт. */\n preventWindowScroll?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange: (value: string) => void;\n\n /** Событие потери автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Размер автокомплита. */\n size?: SizeProp;\n\n /** Значение автокомплита. */\n value: string;\n\n /** Текст заголовка выпадающего списка в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /** Расположение выпадающего списка — над или под полем. */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<AutocompleteProps, 'renderItem' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'>\n>;\n\n/**\n * Автокомплит — поле ввода с выпадающим списком подсказок. Подсказки отображаются пользователю, когда он начинает вводить значение в поле. */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\n@withSize\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n /** Программно устанавливает фокус на автокомплит.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.focus()}>Focus</button>\n */\n public focus(): void {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /** Программно снимает фокус с автокомплита.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.blur()}>Blur</button>\n */\n public blur(): void {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>): React.JSX.Element => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n type,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n 'aria-controls': this.menuId,\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={this.cx(this.styles.root(this.theme), {\n [this.styles.noPortal()]: disablePortal,\n })}\n style={{ width }}\n ref={this.refRootSpan}\n >\n {this.getInput(inputProps)}\n\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n const themeDependantProps = isThemeGTE(this.theme, '6.1') ? { size: this.size } : {};\n\n if (!this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n const calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: calculatedMenuWidth,\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private getInput = (inputProps: InputProps) => {\n return this.props.mask ? (\n <MaskedInput\n {...inputProps}\n type={getSafeMaskInputType(this.props.type)}\n mask={this.props.mask}\n maskChar={this.props.maskChar}\n />\n ) : (\n <Input {...inputProps} />\n );\n };\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n type: this.props.type,\n inputMode: this.props.inputMode,\n 'aria-label': this.props['aria-label'],\n 'aria-controls': this.menuId,\n size: isThemeGTE(this.theme, '6.1') ? this.size : undefined,\n };\n\n const items = this.state.items;\n\n const themeDependantProps = isThemeGTE(this.theme, '6.1')\n ? {\n footerChildComponent: this.getInput(inputProps),\n size: this.size,\n }\n : {\n headerChildComponent: this.getInput(inputProps),\n };\n\n return (\n <MobilePopup\n id={this.menuId}\n {...themeDependantProps}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = () => {\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n\n // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.\n // Можно будет убрать после полного перехода на MaskedInput\n setTimeout(() => {\n this.blur();\n }, 0);\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sourceRoot":"","sources":["Autocomplete.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { ClassNames } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getRandomID, isNullable } from '../../lib/utils.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport { Input } from '../Input/index.js';\nimport type { InputProps } from '../Input/index.js';\nimport { MaskedInput, type MaskedProps, getSafeMaskInputType } from '../MaskedInput/index.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator.js';\nimport { getStyles } from './Autocomplete.styles.js';\nimport { getAutocompleteTheme } from './getAutocompleteTheme.js';\nimport type { AutocompleteLocale } from './locale/index.js';\nimport { AutocompleteLocaleHelper } from './locale/index.js';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n Override<\n Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n {\n /** Отрисовывает элементы результата поиска. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задаёт функцию поиска элементов, которая должна возвращать Promise с массивом значений. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** По умолчанию выпадающий список рендерится через [паттерн Portal](https://react.dev/reference/react-dom/createPortal). Проп отключает использование Portal и список рендерится как обычный блок с абсолютным позиционированием внутри компонента. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего списка. */\n hasShadow?: boolean;\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: 'left' | 'right';\n\n /** Максимальная высота выпадающего списка. */\n menuMaxHeight?: number | string;\n\n /** Ширина выпадающего списка. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда выпадающий список раскрыт. */\n preventWindowScroll?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange: (value: string) => void;\n\n /** Событие потери автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Размер автокомплита. */\n size?: SizeProp;\n\n /** Значение автокомплита. */\n value: string;\n\n /** Текст заголовка выпадающего списка в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /** Расположение выпадающего списка — над или под полем. */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<AutocompleteProps, 'renderItem' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'>\n>;\n\n/**\n * Автокомплит — поле ввода с выпадающим списком подсказок. Подсказки отображаются пользователю, когда он начинает вводить значение в поле. */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\n@withSize\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private cx!: ClassNames;\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n /** Программно устанавливает фокус на автокомплит.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.focus()}>Focus</button>\n */\n public focus(): void {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /** Программно снимает фокус с автокомплита.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.blur()}>Blur</button>\n */\n public blur(): void {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles();\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>): React.JSX.Element => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width,\n mobileMenuHeaderText,\n type,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n 'aria-controls': this.menuId,\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={this.cx(this.styles.root(), {\n [this.styles.noPortal()]: disablePortal,\n })}\n // Инлайн только за пропом: ширину по умолчанию задаёт класс `root`\n // ссылкой на `--kontur-inputWidth`. Раньше значение темы читалось в\n // JS и уезжало в атрибут `style` — то есть приезжало литералом в\n // серверную разметку и терялось под `style-src-attr 'none'`.\n style={width === undefined ? undefined : { width }}\n ref={this.refRootSpan}\n >\n {this.getInput(inputProps)}\n\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n const themeDependantProps = isThemeGTE(this.theme, '6.1') ? { size: this.size } : {};\n\n if (!this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n // Меню равняется по ширине поля, только если ширину задали пропом. Иначе\n // она остаётся авто, и меню растягивается по содержимому — так было и до\n // перевода ширины по умолчанию в CSS: дефолт из темы подставлялся в\n // локальной деструктуризации `renderMain`, а сюда приходил `undefined`.\n const calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: calculatedMenuWidth,\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private getInput = (inputProps: InputProps) => {\n return this.props.mask ? (\n <MaskedInput\n {...inputProps}\n type={getSafeMaskInputType(this.props.type)}\n mask={this.props.mask}\n maskChar={this.props.maskChar}\n />\n ) : (\n <Input {...inputProps} />\n );\n };\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n type: this.props.type,\n inputMode: this.props.inputMode,\n 'aria-label': this.props['aria-label'],\n 'aria-controls': this.menuId,\n size: isThemeGTE(this.theme, '6.1') ? this.size : undefined,\n };\n\n const items = this.state.items;\n\n const themeDependantProps = isThemeGTE(this.theme, '6.1')\n ? {\n footerChildComponent: this.getInput(inputProps),\n size: this.size,\n }\n : {\n headerChildComponent: this.getInput(inputProps),\n };\n\n return (\n <MobilePopup\n id={this.menuId}\n {...themeDependantProps}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = () => {\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n\n // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.\n // Можно будет убрать после полного перехода на MaskedInput\n setTimeout(() => {\n this.blur();\n }, 0);\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const getStyles: import("../../lib/theming/
|
|
3
|
-
root
|
|
4
|
-
noPortal
|
|
1
|
+
/** Правила — в `Autocomplete.css`; здесь только имена классов. */
|
|
2
|
+
export declare const getStyles: (ignored?: unknown) => import("../../lib/theming/staticStyles.js").StaticStyles<{
|
|
3
|
+
root: string;
|
|
4
|
+
noPortal: string;
|
|
5
5
|
}>;
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export var getStyles = memoizeGetStyles(function (_a) {
|
|
7
|
-
var css = _a.css;
|
|
8
|
-
return ({
|
|
9
|
-
root: function (t) {
|
|
10
|
-
return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-block;\n width: ", ";\n "], ["\n display: inline-block;\n width: ", ";\n "])), t.inputWidth);
|
|
11
|
-
},
|
|
12
|
-
noPortal: function () {
|
|
13
|
-
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: relative;\n "], ["\n position: relative;\n "])));
|
|
14
|
-
},
|
|
15
|
-
});
|
|
1
|
+
import { staticStyles } from '../../lib/theming/staticStyles.js';
|
|
2
|
+
/** Правила — в `Autocomplete.css`; здесь только имена классов. */
|
|
3
|
+
export var getStyles = staticStyles({
|
|
4
|
+
root: 'react-ui-Autocomplete-root',
|
|
5
|
+
noPortal: 'react-ui-Autocomplete-noPortal',
|
|
16
6
|
});
|
|
17
|
-
var templateObject_1, templateObject_2;
|
|
18
7
|
//# sourceMappingURL=Autocomplete.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.styles.js","sourceRoot":"","sources":["Autocomplete.styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Autocomplete.styles.js","sourceRoot":"","sources":["Autocomplete.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,kEAAkE;AAClE,MAAM,CAAC,IAAM,SAAS,GAAG,YAAY,CAAC;IACpC,IAAI,EAAE,4BAA4B;IAClC,QAAQ,EAAE,gCAAgC;CAC3C,CAAC,CAAC","sourcesContent":["import { staticStyles } from '../../lib/theming/staticStyles.js';\n\n/** Правила — в `Autocomplete.css`; здесь только имена классов. */\nexport const getStyles = staticStyles({\n root: 'react-ui-Autocomplete-root',\n noPortal: 'react-ui-Autocomplete-noPortal',\n});\n"]}
|
|
@@ -119,7 +119,6 @@ export declare class Button<C extends ButtonLinkAllowedValues = typeof BUTTON_DE
|
|
|
119
119
|
focusedByTab: boolean;
|
|
120
120
|
};
|
|
121
121
|
private globalObject;
|
|
122
|
-
private emotion;
|
|
123
122
|
private cx;
|
|
124
123
|
private styles;
|
|
125
124
|
private activeStyles;
|
|
@@ -145,6 +144,21 @@ export declare class Button<C extends ButtonLinkAllowedValues = typeof BUTTON_DE
|
|
|
145
144
|
private getTabIndex;
|
|
146
145
|
private renderMain;
|
|
147
146
|
private renderIcon2022;
|
|
147
|
+
/**
|
|
148
|
+
* Классы use-стиля: базовый плюс варианты, выбранные по значениям темы.
|
|
149
|
+
*
|
|
150
|
+
* Все решения по теме собраны здесь — в стилях их нет вовсе. В стилевом файле
|
|
151
|
+
* значения приходят строками `var(--kontur-*)`, и сравнение сравнивало бы имена
|
|
152
|
+
* переменных, а не цвета; поэтому сравниваются значения объекта темы, а класс
|
|
153
|
+
* с готовым содержимым только выбирается — как для `checked` или `disabled`.
|
|
154
|
+
*
|
|
155
|
+
* Обе ветки рисовать всегда нельзя: `linear-gradient(none, none)` при равных
|
|
156
|
+
* `BgStart` и `BgEnd` — невалидное значение, а второй слой тени полупрозрачным
|
|
157
|
+
* цветом (у `use="text"` цвет границы и фона совпадают) удваивает альфу.
|
|
158
|
+
*
|
|
159
|
+
* Порядок в массиве — порядок объявлений в слитом классе: вариант идёт сразу
|
|
160
|
+
* за базовым классом и перебивает его при равном весе.
|
|
161
|
+
*/
|
|
148
162
|
private getUseStyle;
|
|
149
163
|
private getSizeClassName;
|
|
150
164
|
private getSizeWrapClassName;
|