@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3
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 +120 -0
- package/README.md +41 -13
- package/cjs/components/Autocomplete/Autocomplete.js +12 -6
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Autocomplete/Autocomplete.md +76 -3
- package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
- package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
- package/cjs/components/Button/Button.js +2 -2
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +38 -11
- package/cjs/components/Calendar/Calendar.d.ts +28 -5
- package/cjs/components/Calendar/Calendar.js +80 -36
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/Calendar.md +82 -1
- package/cjs/components/Calendar/Calendar.styles.js +1 -1
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
- package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
- package/cjs/components/Calendar/CalendarContext.js +16 -0
- package/cjs/components/Calendar/CalendarContext.js.map +1 -0
- package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/cjs/components/Calendar/CalendarDateShape.js +13 -3
- package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
- package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
- package/cjs/components/Calendar/CalendarDay.js +79 -0
- package/cjs/components/Calendar/CalendarDay.js.map +1 -0
- package/cjs/components/Calendar/CalendarDay.md +70 -0
- package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
- package/cjs/components/Calendar/CalendarUtils.js +4 -6
- package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.d.ts +4 -12
- package/cjs/components/Calendar/DayCellView.js +20 -42
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/cjs/components/Calendar/DayCellView.styles.js +37 -43
- package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/components/Calendar/Month.d.ts +0 -10
- package/cjs/components/Calendar/Month.js +36 -88
- package/cjs/components/Calendar/Month.js.map +1 -1
- package/cjs/components/Calendar/MonthView.d.ts +3 -2
- package/cjs/components/Calendar/MonthView.js +47 -37
- package/cjs/components/Calendar/MonthView.js.map +1 -1
- package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
- package/cjs/components/Calendar/MonthView.styles.js +45 -7
- package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
- package/cjs/components/Calendar/MonthViewModel.js +24 -6
- package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
- package/cjs/components/Calendar/config.js +12 -6
- package/cjs/components/Calendar/config.js.map +1 -1
- package/cjs/components/Calendar/index.d.ts +1 -0
- package/cjs/components/Calendar/index.js +2 -1
- package/cjs/components/Calendar/index.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +1 -1
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DateInput/DateInput.js +1 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
- package/cjs/components/DatePicker/DatePicker.js +72 -45
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.md +29 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
- package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
- package/cjs/components/DatePicker/MobilePicker.js +118 -0
- package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
- package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
- package/cjs/components/DatePicker/Picker.js +1 -1
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -1
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
- package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
- package/cjs/components/FileUploader/FileUploader.js +32 -9
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.md +29 -0
- package/cjs/components/FxInput/FxInput.js +1 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Group/Group.js +1 -1
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +4 -3
- package/cjs/components/Hint/Hint.js +9 -8
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.js +1 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.d.ts +1 -1
- package/cjs/components/Input/Input.styles.js +3 -2
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
- package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +6 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +3 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.js +1 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.js +2 -2
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.js +1 -1
- package/cjs/components/MiniModal/MiniModal.js.map +1 -1
- package/cjs/components/Modal/Modal.js +1 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.js +1 -1
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Paging/Paging.js +8 -3
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.js +1 -1
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js +10 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.js +6 -3
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +1 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.js +1 -1
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.js +1 -1
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.js +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Spinner/Spinner.js +1 -1
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Switcher/Switcher.js +1 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Tabs/Indicator.js +1 -1
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.js +2 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.js +1 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.js +1 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toast/Toast.js +1 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastView.js +1 -1
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toggle/Toggle.js +1 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.js +2 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +1 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
- package/cjs/components/Tooltip/Tooltip.js +59 -20
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/hooks/useDrop.d.ts +1 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
- package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
- package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
- package/cjs/internal/DateSelect/DateSelect.js +51 -4
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
- package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
- package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +2 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/cjs/internal/NativeDateInput/utils.js +3 -2
- package/cjs/internal/NativeDateInput/utils.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +15 -4
- package/cjs/internal/Popup/Popup.js +67 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +1 -1
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
- package/cjs/internal/ThemePlayground/constants.js +2 -1
- package/cjs/internal/ThemePlayground/constants.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
- package/cjs/internal/ZIndex/ZIndex.js +41 -3
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/themes/DarkTheme.d.ts +2 -0
- package/cjs/internal/themes/DarkTheme.js +6 -1
- package/cjs/internal/themes/DarkTheme.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
- package/cjs/internal/themes/DefaultTheme.js +32 -4
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/lib/date/InternalDate.d.ts +2 -0
- package/cjs/lib/date/InternalDate.js +8 -1
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
- package/cjs/lib/date/InternalDateTransformer.js +23 -0
- package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +2 -1
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/date/comparison.d.ts +6 -0
- package/cjs/lib/date/comparison.js +44 -0
- package/cjs/lib/date/comparison.js.map +1 -0
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/listenFocusOutside.js +4 -2
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/locale/constants.d.ts +3 -0
- package/cjs/lib/locale/constants.js +6 -2
- package/cjs/lib/locale/constants.js.map +1 -1
- package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
- package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/cjs/lib/theming/Emotion.d.ts +7 -1
- package/cjs/lib/theming/Emotion.js +6 -3
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.d.ts +0 -2
- package/cjs/lib/theming/ThemeContext.js +1 -3
- package/cjs/lib/theming/ThemeContext.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.md +3 -1
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
- package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
- package/cjs/lib/widgets/StylesContainer.js +70 -0
- package/cjs/lib/widgets/StylesContainer.js.map +1 -0
- package/cjs/lib/widgets/index.d.ts +1 -0
- package/cjs/lib/widgets/index.js +1 -0
- package/cjs/lib/widgets/index.js.map +1 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.md +76 -3
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
- package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/components/Button/Button/Button.js +3 -3
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.md +38 -11
- package/components/Calendar/Calendar/Calendar.js +83 -66
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +28 -5
- package/components/Calendar/Calendar.md +82 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
- package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
- package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
- package/components/Calendar/CalendarContext/package.json +6 -0
- package/components/Calendar/CalendarContext.d.ts +12 -0
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
- package/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
- package/components/Calendar/CalendarDay/package.json +6 -0
- package/components/Calendar/CalendarDay.d.ts +12 -0
- package/components/Calendar/CalendarDay.md +70 -0
- package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
- package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
- package/components/Calendar/CalendarUtils.d.ts +2 -1
- package/components/Calendar/DayCellView/DayCellView.js +33 -46
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.d.ts +4 -12
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/components/Calendar/Month/Month.js +50 -84
- package/components/Calendar/Month/Month.js.map +1 -1
- package/components/Calendar/Month.d.ts +0 -10
- package/components/Calendar/MonthView/MonthView.js +50 -45
- package/components/Calendar/MonthView/MonthView.js.map +1 -1
- package/components/Calendar/MonthView.d.ts +3 -2
- package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
- package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
- package/components/Calendar/MonthView.styles.d.ts +3 -0
- package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
- package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
- package/components/Calendar/config/config.js +6 -4
- package/components/Calendar/config/config.js.map +1 -1
- package/components/Calendar/index/index.js +2 -1
- package/components/Calendar/index/index.js.map +1 -1
- package/components/Calendar/index.d.ts +1 -0
- package/components/Checkbox/Checkbox/Checkbox.js +2 -2
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +2 -2
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +62 -41
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +4 -1
- package/components/DatePicker/DatePicker.md +29 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
- package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
- package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
- package/components/DatePicker/MobilePicker/package.json +6 -0
- package/components/DatePicker/MobilePicker.d.ts +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
- package/components/DatePicker/MobilePicker.styles/package.json +6 -0
- package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/components/DatePicker/Picker/Picker.js +3 -3
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
- package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
- package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/components/Dropdown/Dropdown/Dropdown.js +3 -3
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.md +39 -0
- package/components/FileUploader/FileUploader/FileUploader.js +30 -8
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +2 -0
- package/components/FileUploader/FileUploader.md +29 -0
- package/components/FxInput/FxInput/FxInput.js +2 -2
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/Group/Group/Group.js +2 -2
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Hint/Hint/Hint.js +53 -48
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +4 -3
- package/components/Input/Input/Input.js +3 -3
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.styles/Input.styles.js +2 -2
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Input/Input.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +7 -4
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Link/Link/Link.js +6 -3
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Loader/Loader/Loader.js +2 -2
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js +3 -3
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MiniModal/MiniModal/MiniModal.js +2 -2
- package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
- package/components/Modal/Modal/Modal.js +3 -3
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody/ModalBody.js +3 -3
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Paging/Paging/Paging.js +10 -6
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/Radio/Radio/Radio.js +2 -2
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/components/Select/Select/Select.js +6 -5
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +2 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Spinner/Spinner/Spinner.js +2 -2
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Switcher/Switcher/Switcher.js +3 -3
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Tabs/Indicator/Indicator.js +2 -2
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Tab/Tab.js +3 -3
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js +2 -2
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +2 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Toast/Toast/Toast.js +3 -3
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/ToastView/ToastView.js +2 -2
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +2 -2
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Token/Token/Token.js +6 -3
- package/components/Token/Token/Token.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +2 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +67 -46
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +10 -5
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/hooks/useDrop.d.ts +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
- package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
- package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
- package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
- package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
- package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +2 -0
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/internal/DateSelect/locale/locales/en/en.js +2 -1
- package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
- package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
- package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
- package/internal/DateSelect/locale/types.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +3 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/NativeDateInput/utils/utils.js +2 -1
- package/internal/NativeDateInput/utils/utils.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +53 -10
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +15 -4
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/ThemePlayground/Playground/Playground.js +2 -2
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
- package/internal/ThemePlayground/constants/constants.js +3 -0
- package/internal/ThemePlayground/constants/constants.js.map +1 -1
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +7 -3
- package/internal/themes/DarkTheme/DarkTheme.js +2 -0
- package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
- package/internal/themes/DarkTheme.d.ts +2 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +18 -0
- package/lib/date/InternalDate/InternalDate.js +7 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDate.d.ts +2 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
- package/lib/date/InternalDateTransformer.d.ts +3 -0
- package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/date/comparison/comparison.js +45 -0
- package/lib/date/comparison/comparison.js.map +1 -0
- package/lib/date/comparison/package.json +6 -0
- package/lib/date/comparison.d.ts +6 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/locale/constants/constants.js +4 -1
- package/lib/locale/constants/constants.js.map +1 -1
- package/lib/locale/constants.d.ts +3 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +12 -3
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/Emotion.d.ts +7 -1
- package/lib/theming/ThemeContext/ThemeContext.js +0 -2
- package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
- package/lib/theming/ThemeContext.d.ts +0 -2
- package/lib/theming/ThemeContext.md +3 -1
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
- package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
- package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
- package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
- package/lib/widgets/StylesContainer/package.json +6 -0
- package/lib/widgets/StylesContainer.d.ts +13 -0
- package/lib/widgets/index/index.js +1 -0
- package/lib/widgets/index/index.js.map +1 -0
- package/lib/widgets/index/package.json +6 -0
- package/lib/widgets/index.d.ts +1 -0
- package/lib/widgets/package.json +6 -0
- package/package.json +3 -2
- package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
- package/cjs/lib/theming/StyleContainer.d.ts +0 -4
- package/cjs/lib/theming/StyleContainer.js +0 -21
- package/cjs/lib/theming/StyleContainer.js.map +0 -1
- package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
- package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
- package/lib/theming/StyleContainer/StyleContainer.js +0 -21
- package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
- package/lib/theming/StyleContainer/package.json +0 -6
- package/lib/theming/StyleContainer.d.ts +0 -4
- /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
- /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
- /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
- /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SidePageHeader.tsx"],"names":["React","globalObject","Sticky","isFunction","CommonWrapper","EmotionConsumer","responsiveLayout","rootNode","getDOMRect","ModalSeparator","isTheme2022","ThemeConsumer","SidePageContext","SidePageCloseButton","getStyles","SidePageHeaderDataTids","root","close","SidePageHeader","context","state","isReadyToFix","wrapper","sticky","lastRegularHeight","closeIcon","componentDidMount","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","reflow","updateReadyToFix","renderHeader","fixed","styles","emotion","cx","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleFixed","props","children","renderHeader2022","isDisplayed","hasSeparator","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","setState","wrapperRef","el","stickyRef","render","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","setRootNode","headerWrapper","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\nimport { getStyles } from './SidePage.styles';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n sticky?: boolean;\n hasSeparator?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n public static displayName = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isReadyToFix: false,\n };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private wrapper: HTMLElement | null = null;\n private sticky: Sticky | null = null;\n private lastRegularHeight = 0;\n private setRootNode!: TSetRootNode;\n private closeIcon = (<SidePageCloseButton />);\n\n public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = getDOMRect(this.wrapper).height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\n\n public componentDidMount = () => {\n globalObject.addEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n globalObject.removeEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n public update = () => {\n this.sticky?.reflow();\n this.updateReadyToFix();\n };\n\n public render(): JSX.Element {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const { isReadyToFix } = this.state;\n\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n const header = isTheme2022(this.theme) ? this.renderHeader2022 : this.renderHeader;\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SidePageHeaderDataTids.root} ref={this.wrapperRef} className={styles.headerWrapper()}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={this.emotion.cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={this.emotion.cx(styles.title(this.theme), {\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleFixed()]: fixed,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n );\n };\n\n private renderHeader2022 = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\n {this.renderHeader(fixed)}\n {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={this.emotion.cx(styles.wrapperClose(this.theme), {\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.isMobileLayout ? (\n this.closeIcon\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n {this.closeIcon}\n </Sticky>\n )}\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).top;\n const isReadyToFix = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToFix !== isReadyToFix ? { ...state, isReadyToFix } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["SidePageHeader.tsx"],"names":["React","globalObject","Sticky","isFunction","CommonWrapper","EmotionConsumer","responsiveLayout","rootNode","getDOMRect","ModalSeparator","isTheme2022","ThemeContext","SidePageContext","SidePageCloseButton","getStyles","SidePageHeaderDataTids","root","close","SidePageHeader","context","state","isReadyToFix","wrapper","sticky","lastRegularHeight","closeIcon","componentDidMount","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","reflow","updateReadyToFix","renderHeader","fixed","styles","emotion","cx","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleFixed","props","children","renderHeader2022","isDisplayed","hasSeparator","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","setState","wrapperRef","el","stickyRef","render","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","setRootNode","headerWrapper","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\nimport { getStyles } from './SidePage.styles';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n sticky?: boolean;\n hasSeparator?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n public static displayName = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isReadyToFix: false,\n };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private wrapper: HTMLElement | null = null;\n private sticky: Sticky | null = null;\n private lastRegularHeight = 0;\n private setRootNode!: TSetRootNode;\n private closeIcon = (<SidePageCloseButton />);\n\n public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = getDOMRect(this.wrapper).height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\n\n public componentDidMount = () => {\n globalObject.addEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n globalObject.removeEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n public update = () => {\n this.sticky?.reflow();\n this.updateReadyToFix();\n };\n\n public render(): JSX.Element {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const { isReadyToFix } = this.state;\n\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n const header = isTheme2022(this.theme) ? this.renderHeader2022 : this.renderHeader;\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SidePageHeaderDataTids.root} ref={this.wrapperRef} className={styles.headerWrapper()}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={this.emotion.cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={this.emotion.cx(styles.title(this.theme), {\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleFixed()]: fixed,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n );\n };\n\n private renderHeader2022 = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\n {this.renderHeader(fixed)}\n {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={this.emotion.cx(styles.wrapperClose(this.theme), {\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.isMobileLayout ? (\n this.closeIcon\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n {this.closeIcon}\n </Sticky>\n )}\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).top;\n const isReadyToFix = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToFix !== isReadyToFix ? { ...state, isReadyToFix } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n}\n"]}
|
|
@@ -12,7 +12,7 @@ import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
|
12
12
|
import { rootNode } from "../../../lib/rootNode";
|
|
13
13
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
14
14
|
import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
|
|
15
|
-
import {
|
|
15
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
16
16
|
import { getStyles } from "../Spinner.styles";
|
|
17
17
|
import { SpinnerLocaleHelper } from "../locale";
|
|
18
18
|
var types = ['big', 'mini', 'normal'];
|
|
@@ -69,7 +69,7 @@ var Spinner = (_dec = locale('Spinner', SpinnerLocaleHelper), rootNode(_class =
|
|
|
69
69
|
_this2.featureFlags = getFullReactUIFlagsContext(flags);
|
|
70
70
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
71
71
|
_this2.emotion = emotion;
|
|
72
|
-
return /*#__PURE__*/React.createElement(
|
|
72
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
73
73
|
_this2.theme = theme;
|
|
74
74
|
return _this2.renderMain();
|
|
75
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Spinner.tsx"],"names":["React","PropTypes","locale","SpinnerIcon","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","
|
|
1
|
+
{"version":3,"sources":["Spinner.tsx"],"names":["React","PropTypes","locale","SpinnerIcon","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","ThemeContext","getStyles","SpinnerLocaleHelper","types","SpinnerDataTids","root","Spinner","getProps","defaultProps","renderSpinner","type","dimmed","inline","styles","emotion","cx","circle","theme","props","color","circleDimmedColor","circleWithoutColorAnimation","width","renderCaption","caption","captionColor","render","flags","featureFlags","renderMain","canDefaultCaptionBeRemoved","spinnerLoaderRemoveDefaultCaption","defaultCaption","loading","setRootNode","spinner","inner","Component","__KONTUR_REACT_UI__","displayName","propTypes","node","bool","oneOf","Types","Object","assign","map"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { Theme } from '../../lib/theming/Theme';\nimport { SpinnerIcon } from '../../internal/icons/SpinnerIcon';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport {\n getFullReactUIFlagsContext,\n ReactUIFeatureFlags,\n ReactUIFeatureFlagsContext,\n} from '../../lib/featureFlagsContext';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } from './Spinner.styles';\nimport { SpinnerLocale, SpinnerLocaleHelper } from './locale';\n\nconst types = ['big', 'mini', 'normal'] as const;\n\nexport type SpinnerType = typeof types[number];\n\nexport interface SpinnerProps extends CommonProps {\n /**\n * Подпись под спиннером\n */\n caption?: React.ReactNode;\n /**\n * Переводит спиннер в \"затемнённый режим\"\n *\n * Цвет спиннера в \"затемнённом режиме\" определяется переменной `spinnerDimmedColor`\n */\n dimmed?: boolean;\n /**\n * Размер спиннера и текста\n *\n * @default normal\n */\n type?: SpinnerType;\n inline?: boolean;\n /**\n * Толщина спиннера\n */\n width?: number;\n /**\n * Цвет спиннера\n */\n color?: React.CSSProperties['color'];\n}\n\nexport const SpinnerDataTids = {\n root: 'Spinner__root',\n} as const;\n\ntype DefaultProps = Required<Pick<SpinnerProps, 'type'>>;\n\n/**\n * Используйте компонент `Spinner`, если вам нужен спиннер, без дополнительного функционала, который предоставляет компонент [Loader](https://tech.skbkontur.ru/react-ui/#/Components/Loader)\n */\n\n@rootNode\n@locale('Spinner', SpinnerLocaleHelper)\nexport class Spinner extends React.Component<SpinnerProps> {\n public static __KONTUR_REACT_UI__ = 'Spinner';\n public static displayName = 'Spinner';\n\n public static propTypes = {\n /**\n * Текст рядом с мини-лоадером.\n *\n * 'Загрузка' - значение по-умолчанию\n */\n caption: PropTypes.node,\n\n dimmed: PropTypes.bool,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * Значение по-умолчанию - normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(types),\n };\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n };\n\n private getProps = createPropsGetter(Spinner.defaultProps);\n\n public static Types: Record<SpinnerType, SpinnerType> = Object.assign({}, ...types.map((type) => ({ [type]: type })));\n private theme!: Theme;\n private emotion!: Emotion;\n private readonly locale!: SpinnerLocale;\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderMain() {\n const canDefaultCaptionBeRemoved = this.featureFlags.spinnerLoaderRemoveDefaultCaption;\n const defaultCaption = canDefaultCaptionBeRemoved ? null : this.locale.loading;\n const { caption = defaultCaption, dimmed, inline } = this.props;\n const type = this.getProps().type;\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SpinnerDataTids.root} className={styles.spinner()}>\n <span className={styles.inner()}>{this.renderSpinner(type, dimmed, inline)}</span>\n {caption && this.renderCaption(type, caption)}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderSpinner = (type: SpinnerType, dimmed?: boolean, inline?: boolean) => {\n const styles = getStyles(this.emotion);\n\n return (\n <SpinnerIcon\n size={type}\n className={this.emotion.cx({\n [styles.circle(this.theme)]: !dimmed && !this.props.color,\n [styles.circleDimmedColor(this.theme)]: dimmed,\n [styles.circleWithoutColorAnimation()]: dimmed || !!this.props.color,\n })}\n dimmed={dimmed}\n width={this.props.width}\n color={this.props.color}\n inline={inline}\n />\n );\n };\n\n private renderCaption = (type: SpinnerType, caption: React.ReactNode) => {\n const styles = getStyles(this.emotion);\n return (\n <span className={this.emotion.cx(styles[type](this.theme), styles.captionColor(this.theme))}>{caption}</span>\n );\n };\n}\n"]}
|
|
@@ -11,7 +11,7 @@ import { Button } from "../../Button";
|
|
|
11
11
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
12
12
|
import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
13
13
|
import { rootNode } from "../../../lib/rootNode";
|
|
14
|
-
import {
|
|
14
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
15
15
|
import { getSwitcherTheme } from "../switcherTheme";
|
|
16
16
|
import { mod } from "../helpers";
|
|
17
17
|
import { getStyles } from "../Switcher.styles";
|
|
@@ -220,9 +220,9 @@ export var Switcher = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
220
220
|
|
|
221
221
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
222
222
|
_this2.emotion = emotion;
|
|
223
|
-
return /*#__PURE__*/React.createElement(
|
|
223
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
224
224
|
_this2.theme = getSwitcherTheme(theme);
|
|
225
|
-
return /*#__PURE__*/React.createElement(
|
|
225
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
|
|
226
226
|
value: _this2.theme
|
|
227
227
|
}, _this2.renderMain());
|
|
228
228
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Switcher.tsx"],"names":["React","PropTypes","isKeyArrowHorizontal","isKeyArrowLeft","isKeyEnter","getButtonCorners","Group","Button","CommonWrapper","EmotionConsumer","rootNode","ThemeConsumer","ThemeProvider","getSwitcherTheme","mod","getStyles","SwitcherDataTids","root","Switcher","state","focusedIndex","selectItem","value","props","onValueChange","_extractPropsFromItem","item","label","_extractValuesFromItems","items","map","_focus","index","setState","handleKey","e","buttonProps","disabled","preventDefault","move","left","selectedIndex","newFocusedIndex","_getNextFocusedIndex","i","length","_handleFocus","currentIndex","indexOf","_handleBlur","_renderItems","size","role","renderItem","ariaLabel","itemValue","customButtonProps","isChecked","commonButtonProps","checked","visuallyFocused","onClick","disableFocus","corners","renderDefault","renderDefaultItem","getLabelSizeClassName","styles","emotion","captionLarge","theme","captionMedium","captionSmall","render","renderMain","listClassName","cx","error","inputProps","type","onKeyDown","onFocus","onBlur","className","input","captionClassName","caption","setRootNode","wrap","Component","__KONTUR_REACT_UI__","displayName","defaultProps","propTypes","bool","oneOfType","arrayOf","string","shape","isRequired","func"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { getButtonCorners, Group } from '../Group';\nimport { Button, ButtonProps } from '../Button';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { ThemeConsumer, ThemeProvider } from '../../lib/theming/ThemeContext';\n\nimport { getSwitcherTheme } from './switcherTheme';\nimport { mod } from './helpers';\nimport { getStyles } from './Switcher.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type SwitcherSize = SizeProp;\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /**\n * Список строк или список элементов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }`\n */\n items: SwitcherItems[];\n\n value?: string;\n\n onValueChange?: (value: string) => void;\n\n caption?: string;\n\n error?: boolean;\n\n /** Размер */\n size?: SizeProp;\n\n disabled?: boolean;\n\n /**\n * Функция для отрисовки элемента. Аргументы — `label`,\n * `value`, `buttonProps`, `renderDefault`, `ariaLabel`\n */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public static propTypes = {\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n items: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n }),\n ),\n ]).isRequired,\n caption: PropTypes.string,\n value: PropTypes.string,\n onValueChange: PropTypes.func,\n renderItem: PropTypes.func,\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeProvider value={this.theme}>{this.renderMain()}</ThemeProvider>;\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const styles = getStyles(this.emotion);\n const listClassName = this.emotion.cx({\n [styles.error(this.theme)]: !!this.props.error,\n });\n\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: styles.input(),\n };\n\n const captionClassName = this.emotion.cx(styles.caption(this.theme), this.getLabelSizeClassName());\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={styles.root()}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={styles.wrap()}>\n <input {...inputProps} />\n <div className={listClassName}>\n <Group>{this._renderItems()}</Group>\n </div>\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, disabled, role, renderItem } = this.props;\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n };\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n const styles = getStyles(this.emotion);\n switch (this.props.size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Switcher.tsx"],"names":["React","PropTypes","isKeyArrowHorizontal","isKeyArrowLeft","isKeyEnter","getButtonCorners","Group","Button","CommonWrapper","EmotionConsumer","rootNode","ThemeContext","getSwitcherTheme","mod","getStyles","SwitcherDataTids","root","Switcher","state","focusedIndex","selectItem","value","props","onValueChange","_extractPropsFromItem","item","label","_extractValuesFromItems","items","map","_focus","index","setState","handleKey","e","buttonProps","disabled","preventDefault","move","left","selectedIndex","newFocusedIndex","_getNextFocusedIndex","i","length","_handleFocus","currentIndex","indexOf","_handleBlur","_renderItems","size","role","renderItem","ariaLabel","itemValue","customButtonProps","isChecked","commonButtonProps","checked","visuallyFocused","onClick","disableFocus","corners","renderDefault","renderDefaultItem","getLabelSizeClassName","styles","emotion","captionLarge","theme","captionMedium","captionSmall","render","renderMain","listClassName","cx","error","inputProps","type","onKeyDown","onFocus","onBlur","className","input","captionClassName","caption","setRootNode","wrap","Component","__KONTUR_REACT_UI__","displayName","defaultProps","propTypes","bool","oneOfType","arrayOf","string","shape","isRequired","func"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { getButtonCorners, Group } from '../Group';\nimport { Button, ButtonProps } from '../Button';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getSwitcherTheme } from './switcherTheme';\nimport { mod } from './helpers';\nimport { getStyles } from './Switcher.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type SwitcherSize = SizeProp;\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /**\n * Список строк или список элементов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }`\n */\n items: SwitcherItems[];\n\n value?: string;\n\n onValueChange?: (value: string) => void;\n\n caption?: string;\n\n error?: boolean;\n\n /** Размер */\n size?: SizeProp;\n\n disabled?: boolean;\n\n /**\n * Функция для отрисовки элемента. Аргументы — `label`,\n * `value`, `buttonProps`, `renderDefault`, `ariaLabel`\n */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public static propTypes = {\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n items: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n }),\n ),\n ]).isRequired,\n caption: PropTypes.string,\n value: PropTypes.string,\n onValueChange: PropTypes.func,\n renderItem: PropTypes.func,\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const styles = getStyles(this.emotion);\n const listClassName = this.emotion.cx({\n [styles.error(this.theme)]: !!this.props.error,\n });\n\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: styles.input(),\n };\n\n const captionClassName = this.emotion.cx(styles.caption(this.theme), this.getLabelSizeClassName());\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={styles.root()}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={styles.wrap()}>\n <input {...inputProps} />\n <div className={listClassName}>\n <Group>{this._renderItems()}</Group>\n </div>\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, disabled, role, renderItem } = this.props;\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n };\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n const styles = getStyles(this.emotion);\n switch (this.props.size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n };\n}\n"]}
|
|
@@ -10,7 +10,7 @@ import * as LayoutEvents from "../../../lib/LayoutEvents";
|
|
|
10
10
|
import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
11
11
|
import { getRootNode, rootNode } from "../../../lib/rootNode";
|
|
12
12
|
import { getDOMRect } from "../../../lib/dom/getDOMRect";
|
|
13
|
-
import {
|
|
13
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
14
14
|
import { getStyles } from "../Indicator.styles";
|
|
15
15
|
import { TabsContext } from "../TabsContext";
|
|
16
16
|
import { TabsDataTids } from "../Tabs";
|
|
@@ -81,7 +81,7 @@ export var Indicator = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functio
|
|
|
81
81
|
|
|
82
82
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
83
83
|
_this2.emotion = emotion;
|
|
84
|
-
return /*#__PURE__*/React.createElement(
|
|
84
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
85
85
|
_this2.theme = theme;
|
|
86
86
|
return _this2.renderMain();
|
|
87
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Indicator.tsx"],"names":["React","throttle","globalObject","isInstanceOf","LayoutEvents","EmotionConsumer","getRootNode","rootNode","getDOMRect","
|
|
1
|
+
{"version":3,"sources":["Indicator.tsx"],"names":["React","throttle","globalObject","isInstanceOf","LayoutEvents","EmotionConsumer","getRootNode","rootNode","getDOMRect","ThemeContext","getStyles","TabsContext","TabsDataTids","Indicator","context","state","styles","eventListener","removeTabUpdatesListener","reflow","getTab","activeTab","node","nodeStyles","stylesUpdated","some","prop","setState","componentDidMount","addListener","props","tabUpdates","on","componentWillUnmount","cancel","remove","componentDidUpdate","render","emotion","theme","renderMain","indicators","getIndicators","error","warning","success","primary","disabled","indicatorRoot","cx","root","className","setRootNode","htmlNode","HTMLElement","rect","vertical","width","tabBorderWidth","left","offsetLeft","top","offsetTop","height","bottom","parseInt","offsetHeight","right","Component","contextType"],"mappings":"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","sourcesContent":["import React from 'react';\nimport throttle from 'lodash.throttle';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } from './Indicator.styles';\nimport { TabsContext, TabsContextType } from './TabsContext';\nimport { TabIndicators } from './Tab';\nimport { TabsDataTids } from './Tabs';\n\nexport interface IndicatorProps {\n className?: string;\n tabUpdates: {\n on: (x0: () => void) => () => void;\n };\n vertical: boolean;\n}\n\nexport interface IndicatorState {\n styles: React.CSSProperties;\n}\n\n@rootNode\nexport class Indicator extends React.Component<IndicatorProps, IndicatorState> {\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public state: IndicatorState = {\n styles: {},\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n\n private eventListener: Nullable<{\n remove: () => void;\n }> = null;\n\n private removeTabUpdatesListener: Nullable<() => void> = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.eventListener = LayoutEvents.addListener(this.reflow);\n this.removeTabUpdatesListener = this.props.tabUpdates.on(this.reflow);\n this.reflow();\n }\n\n public componentWillUnmount() {\n this.reflow.cancel();\n\n if (this.eventListener) {\n this.eventListener.remove();\n }\n if (this.removeTabUpdatesListener) {\n this.removeTabUpdatesListener();\n }\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const indicators: TabIndicators = (node && node.getIndicators && node.getIndicators()) || {\n error: false,\n warning: false,\n success: false,\n primary: false,\n disabled: false,\n };\n const styles = getStyles(this.emotion);\n return (\n <div\n data-tid={TabsDataTids.indicatorRoot}\n className={this.emotion.cx(\n styles.root(this.theme),\n indicators.primary && styles.primary(this.theme),\n indicators.success && styles.success(this.theme),\n indicators.warning && styles.warning(this.theme),\n indicators.error && styles.error(this.theme),\n this.props.className,\n )}\n style={this.state.styles}\n ref={this.setRootNode}\n />\n );\n }\n\n private reflow = throttle(() => {\n const { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const nodeStyles = this.getStyles(node);\n const stylesUpdated = ['left', 'top', 'width', 'height'].some(\n (prop) => nodeStyles[prop as keyof React.CSSProperties] !== this.state.styles[prop as keyof React.CSSProperties],\n );\n if (stylesUpdated) {\n this.setState({ styles: nodeStyles });\n }\n }, 100);\n\n private getStyles(node: any): React.CSSProperties {\n const htmlNode = getRootNode(node);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement)) {\n const rect = getDOMRect(htmlNode);\n if (this.props.vertical) {\n return {\n width: this.theme.tabBorderWidth,\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetTop,\n height: rect.bottom - rect.top,\n };\n }\n\n const tabBorderWidth = parseInt(this.theme.tabBorderWidth, 10) || 0;\n return {\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetHeight + htmlNode.offsetTop - tabBorderWidth,\n width: rect.right - rect.left,\n };\n }\n\n return {};\n }\n}\n"]}
|
|
@@ -15,8 +15,8 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
|
15
15
|
import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
16
16
|
import { rootNode } from "../../../lib/rootNode";
|
|
17
17
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
18
|
-
import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/getVisualStateDataAttributes";
|
|
19
|
-
import {
|
|
18
|
+
import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/utils/getVisualStateDataAttributes";
|
|
19
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
20
20
|
import { TabsContext, TabsContextDefaultValue } from "../TabsContext";
|
|
21
21
|
import { getHorizontalStyles, getStyles, getVerticalStyles, globalClasses } from "../Tab.styles";
|
|
22
22
|
export var TabDataTids = {
|
|
@@ -177,7 +177,7 @@ var Tab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Com
|
|
|
177
177
|
|
|
178
178
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
179
179
|
_this2.emotion = emotion;
|
|
180
|
-
return /*#__PURE__*/React.createElement(
|
|
180
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
181
181
|
_this2.theme = theme;
|
|
182
182
|
return _this2.renderMain();
|
|
183
183
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Tab.tsx"],"names":["React","invariant","globalObject","ResizeDetector","isKeyArrow","isKeyArrowLeft","isKeyArrowUp","keyListener","isFunctionalComponent","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","getVisualStateDataAttributes","ThemeConsumer","TabsContext","TabsContextDefaultValue","getHorizontalStyles","getStyles","getVerticalStyles","globalClasses","TabDataTids","root","Tab","props","context","getProps","defaultProps","state","focusedByKeyboard","tabComponent","getUnderlyingNode","getId","id","href","refTabComponent","instance","getTabInstance","switchTab","event","disabled","preventDefault","component","onClick","defaultPrevented","handleKeyDown","e","onKeyDown","delta","shiftFocus","handleFocus","requestAnimationFrame","isTabPressed","isArrowPressed","setState","handleBlur","componentDidMount","addTab","componentDidUpdate","activeTab","notifyUpdate","componentWillUnmount","removeTab","render","emotion","theme","renderMain","getIndicators","error","Boolean","warning","success","primary","children","ariaDescribedby","ariaLabel","Component","isActive","isVertical","vertical","orientationStyles","styles","setRootNode","active","cx","rootSmall","size","rootMedium","rootLarge","verticalSmall","verticalMedium","verticalLarge","focus","focusSmall","focusMedium","focusLarge","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunctionalComponent } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/getVisualStateDataAttributes';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { TabsContext, TabsContextDefaultValue, TabsContextType } from './TabsContext';\nimport { getHorizontalStyles, getStyles, getVerticalStyles, globalClasses } from './Tab.styles';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type TabSize = SizeProp;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n CommonProps {\n /**\n * Позволяет передавать свой компонент, строку или функцию, которая заменит собой элемент используемый в компоненте по умолчанию. Реализует паттерн [render prop](https://www.patterns.dev/posts/render-props-pattern).\n */\n component?: React.ComponentType<any> | string;\n\n /**\n * `HTML`-аттрибут `href`.\n */\n href?: string;\n\n /**\n * Уникальный идентификатор таба. По нему компонент `<Tabs />` определяет какой `<Tab />` сейчас выбран.\n */\n id?: T;\n\n /**\n * `HTML`-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * `HTML`-событие `onkeydown`.\n */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /**\n * Переводит компонент в отключенное состояние.\n */\n disabled?: boolean;\n\n /**\n * Визуальное состояние ошибки.\n */\n error?: boolean;\n\n /**\n * Визуальное состояние предупреждения.\n */\n warning?: boolean;\n\n /**\n * Визуальное состояние успеха.\n */\n success?: boolean;\n\n /**\n * Визуальное состояние главного элемента.\n */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Вложенный элемент компонента `<Tabs />`.\n */\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public getIndicators() {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode = () => this.tabComponent;\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? getVerticalStyles(this.emotion) : getHorizontalStyles(this.emotion);\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={this.emotion.cx({\n [styles.rootSmall(this.theme)]: this.context.size === 'small',\n [styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [styles.rootLarge(this.theme)]: this.context.size === 'large',\n [styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={this.emotion.cx(globalClasses.focus, {\n [styles.focusSmall(this.theme)]: this.context.size === 'small',\n [styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed || keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Tab.tsx"],"names":["React","invariant","globalObject","ResizeDetector","isKeyArrow","isKeyArrowLeft","isKeyArrowUp","keyListener","isFunctionalComponent","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","getVisualStateDataAttributes","ThemeContext","TabsContext","TabsContextDefaultValue","getHorizontalStyles","getStyles","getVerticalStyles","globalClasses","TabDataTids","root","Tab","props","context","getProps","defaultProps","state","focusedByKeyboard","tabComponent","getUnderlyingNode","getId","id","href","refTabComponent","instance","getTabInstance","switchTab","event","disabled","preventDefault","component","onClick","defaultPrevented","handleKeyDown","e","onKeyDown","delta","shiftFocus","handleFocus","requestAnimationFrame","isTabPressed","isArrowPressed","setState","handleBlur","componentDidMount","addTab","componentDidUpdate","activeTab","notifyUpdate","componentWillUnmount","removeTab","render","emotion","theme","renderMain","getIndicators","error","Boolean","warning","success","primary","children","ariaDescribedby","ariaLabel","Component","isActive","isVertical","vertical","orientationStyles","styles","setRootNode","active","cx","rootSmall","size","rootMedium","rootLarge","verticalSmall","verticalMedium","verticalLarge","focus","focusSmall","focusMedium","focusLarge","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"iPAAA,OAAOA,KAAP,MAAsC,OAAtC;AACA,OAAOC,SAAP,MAAsB,WAAtB;AACA,SAASC,YAAT,QAA6B,0BAA7B;;;AAGA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,UAAT,EAAqBC,cAArB,EAAqCC,YAArC,QAAyD,uCAAzD;AACA,SAASC,WAAT,QAA4B,8BAA5B;;AAEA,SAASC,qBAAT,QAAsC,iBAAtC;;AAEA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,eAAT,QAAgC,2BAAhC;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,4BAAT,QAA6C,iEAA7C;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,WAAT,EAAsBC,uBAAtB,QAAsE,eAAtE;AACA,SAASC,mBAAT,EAA8BC,SAA9B,EAAyCC,iBAAzC,EAA4DC,aAA5D,QAAiF,cAAjF;;;;;;;;;;AAUA,OAAO,IAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,WADmB,EAApB;;;AAIP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,OAJA;AACA;AACA,GAEA,IAAaC,GAAb,GADCZ,QACD;;;;;;;;;;;;;;;;;;;;;AAuBE,eAAYa,KAAZ,EAAgC;AAC9B,wCAAMA,KAAN,UAD8B,MAlBzBC,OAkByB,GAlBE,MAAKA,OAkBP,OAXxBC,QAWwB,GAXbd,iBAAiB,CAACW,GAAG,CAACI,YAAL,CAWJ,OATzBC,KASyB,GATP,EACvBC,iBAAiB,EAAE,KADI,EASO,OAHxBC,YAGwB,GAH6B,IAG7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDzBC,IAAAA,iBArDyB,GAqDL,oBAAM,MAAKD,YAAX,EArDK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+HxBE,IAAAA,KA/HwB,GA+HhB,oBAAM,MAAKR,KAAL,CAAWS,EAAX,IAAiB,MAAKP,QAAL,GAAgBQ,IAAvC,EA/HgB;;AAiIxBC,IAAAA,eAjIwB,GAiIN,UAACC,QAAD,EAAuC;AAC/D,YAAKN,YAAL,GAAoBM,QAApB;AACD,KAnI+B;;AAqIxBC,IAAAA,cArIwB,GAqIP,mDArIO;;AAuIxBC,IAAAA,SAvIwB,GAuIZ,UAACC,KAAD,EAA0C;AAC5D,UAAI,MAAKf,KAAL,CAAWgB,QAAf,EAAyB;AACvBD,QAAAA,KAAK,CAACE,cAAN;AACA;AACD;AACD,2BAA4B,MAAKf,QAAL,EAA5B,CAAQQ,IAAR,kBAAQA,IAAR,CAAcQ,SAAd,kBAAcA,SAAd;;AAEA,UAAMT,EAAE,GAAG,MAAKT,KAAL,CAAWS,EAAX,IAAiBC,IAA5B;AACA,UAAI,MAAKV,KAAL,CAAWmB,OAAf,EAAwB;AACtB,cAAKnB,KAAL,CAAWmB,OAAX,CAAmBJ,KAAnB;AACA,YAAIA,KAAK,CAACK,gBAAV,EAA4B;AAC1B;AACD;AACF;AACD,UAAI,OAAOX,EAAP,KAAc,QAAlB,EAA4B;AAC1B,cAAKR,OAAL,CAAaa,SAAb,CAAuBL,EAAvB;AACD;AACD,UAAIS,SAAS,KAAK,GAAd,IAAqB,CAACR,IAA1B,EAAgC;AAC9BK,QAAAA,KAAK,CAACE,cAAN;AACD;AACF,KA3J+B;;AA6JxBI,IAAAA,aA7JwB,GA6JR,UAACC,CAAD,EAAyC;AAC/D,UAAI,MAAKtB,KAAL,CAAWgB,QAAf,EAAyB;AACvB;AACD;;AAED,UAAI,MAAKhB,KAAL,CAAWuB,SAAf,EAA0B;AACxB,cAAKvB,KAAL,CAAWuB,SAAX,CAAqBD,CAArB;AACA,YAAIA,CAAC,CAACF,gBAAN,EAAwB;AACtB;AACD;AACF;AACD,UAAMX,EAAE,GAAG,MAAKD,KAAL,EAAX;AACA,UAAI,OAAOC,EAAP,KAAc,QAAlB,EAA4B;AAC1B;AACD;AACD,UAAI,CAAC7B,UAAU,CAAC0C,CAAD,CAAf,EAAoB;AAClB;AACD;AACDA,MAAAA,CAAC,CAACL,cAAF;AACA,UAAMO,KAAK,GAAG3C,cAAc,CAACyC,CAAD,CAAd,IAAqBxC,YAAY,CAACwC,CAAD,CAAjC,GAAuC,CAAC,CAAxC,GAA4C,CAA1D;AACA,YAAKrB,OAAL,CAAawB,UAAb,CAAwBhB,EAAxB,EAA4Be,KAA5B;AACD,KAlL+B;;AAoLxBE,IAAAA,WApLwB,GAoLV,YAAM;AAC1B,UAAI,MAAK1B,KAAL,CAAWgB,QAAf,EAAyB;AACvB;AACD;;AAED;AACA;AACAtC,MAAAA,YAAY,CAACiD,qBAAb,oBAAAjD,YAAY,CAACiD,qBAAb,CAAqC,YAAM;AACzC,YAAI5C,WAAW,CAAC6C,YAAZ,IAA4B7C,WAAW,CAAC8C,cAA5C,EAA4D;AAC1D,gBAAKC,QAAL,CAAc,EAAEzB,iBAAiB,EAAE,IAArB,EAAd;AACD;AACF,OAJD;AAKD,KAhM+B;;AAkMxB0B,IAAAA,UAlMwB,GAkMX,YAAM;AACzB,UAAI,MAAK/B,KAAL,CAAWgB,QAAf,EAAyB;AACvB;AACD;;AAED,YAAKc,QAAL,CAAc,EAAEzB,iBAAiB,EAAE,KAArB,EAAd;AACD,KAxM+B,CAE9B5B,SAAS,CAAC,MAAKwB,OAAL,KAAiBT,uBAAlB,EAA2C,4CAA3C,CAAT,CAF8B,aAG/B,CA1BH,kCA4BSwC,iBA5BT,GA4BE,6BAA2B,CACzB,IAAMvB,EAAE,GAAG,KAAKD,KAAL,EAAX,CACA,IAAI,OAAOC,EAAP,KAAc,QAAlB,EAA4B,CAC1B,KAAKR,OAAL,CAAagC,MAAb,CAAoBxB,EAApB,EAAwB,KAAKI,cAA7B,EACD,CACF,CAjCH,QAmCSqB,kBAnCT,GAmCE,8BAA4B,CAC1B,IAAI,KAAKjC,OAAL,CAAakC,SAAb,KAA2B,KAAKnC,KAAL,CAAWS,EAA1C,EAA8C,CAC5C,KAAKR,OAAL,CAAamC,YAAb,GACD,CACF,CAvCH,QAyCSC,oBAzCT,GAyCE,gCAA8B,CAC5B,IAAM5B,EAAE,GAAG,KAAKD,KAAL,EAAX,CACA,IAAI,OAAOC,EAAP,KAAc,QAAlB,EAA4B,CAC1B,KAAKR,OAAL,CAAaqC,SAAb,CAAuB7B,EAAvB,EACD,CACF,CA9CH,QAgDS8B,MAhDT,GAgDE,kBAAgB,mBACd,oBACE,oBAAC,eAAD,QACG,UAACC,OAAD,EAAa,CACZ,MAAI,CAACA,OAAL,GAAeA,OAAf,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAXH,CADF,CAeD,CAhEH,QAkESC,aAlET,GAkEE,yBAAuB,CACrB,OAAO,EACLC,KAAK,EAAEC,OAAO,CAAC,KAAK7C,KAAL,CAAW4C,KAAZ,CADT,EAELE,OAAO,EAAED,OAAO,CAAC,KAAK7C,KAAL,CAAW8C,OAAZ,CAFX,EAGLC,OAAO,EAAEF,OAAO,CAAC,KAAK7C,KAAL,CAAW+C,OAAZ,CAHX,EAILC,OAAO,EAAEH,OAAO,CAAC,KAAK7C,KAAL,CAAWgD,OAAZ,CAJX,EAKLhC,QAAQ,EAAE6B,OAAO,CAAC,KAAK7C,KAAL,CAAWgB,QAAZ,CALZ,EAAP,CAOD,CA1EH,QA8EU0B,UA9EV,GA8EE,sBAAqB,yCACnB,kBASI,KAAK1C,KATT,CACEiD,QADF,eACEA,QADF,CAEEjC,QAFF,eAEEA,QAFF,CAGE4B,KAHF,eAGEA,KAHF,CAIEE,OAJF,eAIEA,OAJF,CAKEC,OALF,eAKEA,OALF,CAMEC,OANF,eAMEA,OANF,CAOsBE,eAPtB,eAOE,kBAPF,EAQgBC,SARhB,eAQE,YARF,EAUA,sBAAuC,KAAKjD,QAAL,EAAvC,CAAmBkD,SAAnB,mBAAQlC,SAAR,CAA8BR,IAA9B,mBAA8BA,IAA9B,CAEA,IAAI2C,QAAQ,GAAG,KAAf,CACA,IAAIC,UAAU,GAAG,KAAjB,CAEA,IAAM7C,EAAE,GAAG,KAAKD,KAAL,EAAX,CACA,IAAI,OAAOC,EAAP,KAAc,QAAlB,EAA4B,CAC1B4C,QAAQ,GAAG,KAAKpD,OAAL,CAAakC,SAAb,KAA2B,KAAK3B,KAAL,EAAtC,CACA8C,UAAU,GAAG,KAAKrD,OAAL,CAAasD,QAA1B,CACD,CACD,IAAMC,iBAAiB,GAAGF,UAAU,GAAG3D,iBAAiB,CAAC,KAAK6C,OAAN,CAApB,GAAqC/C,mBAAmB,CAAC,KAAK+C,OAAN,CAA5F,CACA,IAAMiB,MAAM,GAAG/D,SAAS,CAAC,KAAK8C,OAAN,CAAxB,CACA,oBACE,oBAAC,aAAD,aACE,WAAW,EAAE,KAAKkB,WADpB,IAEMrE,4BAA4B,CAAC,EAAEsE,MAAM,EAAEN,QAAV,EAAoBrC,QAAQ,EAARA,QAApB,EAAD,CAFlC,EAGM,KAAKhB,KAHX,gBAKE,oBAAC,SAAD,IACE,YAAUH,WAAW,CAACC,IADxB,EAEE,SAAS,EAAE,KAAK0C,OAAL,CAAaoB,EAAb,0CACRH,MAAM,CAACI,SAAP,CAAiB,KAAKpB,KAAtB,CADQ,IACuB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,OAD7C,mBAERL,MAAM,CAACM,UAAP,CAAkB,KAAKtB,KAAvB,CAFQ,IAEwB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,QAF9C,mBAGRL,MAAM,CAACO,SAAP,CAAiB,KAAKvB,KAAtB,CAHQ,IAGuB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,OAH7C,mBAIRL,MAAM,CAACQ,aAAP,CAAqB,KAAKxB,KAA1B,CAJQ,IAI2B,CAAC,CAACa,UAAF,IAAgB,KAAKrD,OAAL,CAAa6D,IAAb,KAAsB,OAJjE,mBAKRL,MAAM,CAACS,cAAP,CAAsB,KAAKzB,KAA3B,CALQ,IAK4B,CAAC,CAACa,UAAF,IAAgB,KAAKrD,OAAL,CAAa6D,IAAb,KAAsB,QALlE,mBAMRL,MAAM,CAACU,aAAP,CAAqB,KAAK1B,KAA1B,CANQ,IAM2B,CAAC,CAACa,UAAF,IAAgB,KAAKrD,OAAL,CAAa6D,IAAb,KAAsB,OANjE,mBAORN,iBAAiB,CAACR,OAAlB,CAA0B,KAAKP,KAA/B,CAPQ,IAOgC,CAAC,CAACO,OAPlC,mBAQRQ,iBAAiB,CAACT,OAAlB,CAA0B,KAAKN,KAA/B,CARQ,IAQgC,CAAC,CAACM,OARlC,mBASRS,iBAAiB,CAACV,OAAlB,CAA0B,KAAKL,KAA/B,CATQ,IASgC,CAAC,CAACK,OATlC,mBAURU,iBAAiB,CAACZ,KAAlB,CAAwB,KAAKH,KAA7B,CAVQ,IAU8B,CAAC,CAACG,KAVhC,mBAWRa,MAAM,CAACE,MAAP,EAXQ,IAWU,CAAC,CAACN,QAXZ,mBAYRG,iBAAiB,CAACG,MAAlB,CAAyB,KAAKlB,KAA9B,CAZQ,IAY+B,CAAC,CAACY,QAZjC,mBAaRI,MAAM,CAACzC,QAAP,CAAgB,KAAKyB,KAArB,CAbQ,IAasB,CAAC,CAACzB,QAbxB,mBAcRwC,iBAAiB,CAACxC,QAAlB,EAdQ,IAcuB,CAAC,CAACA,QAdzB,oBAFb,EAkBE,MAAM,EAAE,KAAKe,UAlBf,EAmBE,OAAO,EAAE,KAAKjB,SAnBhB,EAoBE,OAAO,EAAE,KAAKY,WApBhB,EAqBE,SAAS,EAAE,KAAKL,aArBlB,EAsBE,QAAQ,EAAEL,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAtB5B,EAuBE,GAAG,EAAEhC,qBAAqB,CAACoE,SAAD,CAArB,GAAmC,IAAnC,GAA0C,KAAKzC,eAvBtD,EAwBE,IAAI,EAAED,IAxBR,EAyBE,oBAAkBwC,eAzBpB,EA0BE,cAAYC,SA1Bd,iBA4BE,oBAAC,cAAD,IAAgB,QAAQ,EAAE,KAAKlD,OAAL,CAAamC,YAAvC,IAAsDa,QAAtD,CA5BF,EA6BG,KAAK7C,KAAL,CAAWC,iBAAX,iBACC,6BACE,SAAS,EAAE,KAAKmC,OAAL,CAAaoB,EAAb,CAAgBhE,aAAa,CAACwE,KAA9B,6CACRX,MAAM,CAACY,UAAP,CAAkB,KAAK5B,KAAvB,CADQ,IACwB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,OAD9C,oBAERL,MAAM,CAACa,WAAP,CAAmB,KAAK7B,KAAxB,CAFQ,IAEyB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,QAF/C,oBAGRL,MAAM,CAACc,UAAP,CAAkB,KAAK9B,KAAvB,CAHQ,IAGwB,KAAKxC,OAAL,CAAa6D,IAAb,KAAsB,OAH9C,qBADb,GA9BJ,CALF,CADF,CA+CD,CApJH,cAAoDtF,KAAK,CAAC4E,SAA1D,WACgBoB,mBADhB,GACsC,KADtC,UAEgBC,WAFhB,GAE8B,KAF9B,UAIgBC,WAJhB,GAI8BnF,WAJ9B,UAOgBY,YAPhB,GAO6C,EACzCe,SAAS,EAAE,GAD8B,EAEzCR,IAAI,EAAE,EAFmC,EAP7C","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunctionalComponent } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { TabsContext, TabsContextDefaultValue, TabsContextType } from './TabsContext';\nimport { getHorizontalStyles, getStyles, getVerticalStyles, globalClasses } from './Tab.styles';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type TabSize = SizeProp;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n CommonProps {\n /**\n * Позволяет передавать свой компонент, строку или функцию, которая заменит собой элемент используемый в компоненте по умолчанию. Реализует паттерн [render prop](https://www.patterns.dev/posts/render-props-pattern).\n */\n component?: React.ComponentType<any> | string;\n\n /**\n * `HTML`-аттрибут `href`.\n */\n href?: string;\n\n /**\n * Уникальный идентификатор таба. По нему компонент `<Tabs />` определяет какой `<Tab />` сейчас выбран.\n */\n id?: T;\n\n /**\n * `HTML`-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * `HTML`-событие `onkeydown`.\n */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /**\n * Переводит компонент в отключенное состояние.\n */\n disabled?: boolean;\n\n /**\n * Визуальное состояние ошибки.\n */\n error?: boolean;\n\n /**\n * Визуальное состояние предупреждения.\n */\n warning?: boolean;\n\n /**\n * Визуальное состояние успеха.\n */\n success?: boolean;\n\n /**\n * Визуальное состояние главного элемента.\n */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Вложенный элемент компонента `<Tabs />`.\n */\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public getIndicators() {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode = () => this.tabComponent;\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? getVerticalStyles(this.emotion) : getHorizontalStyles(this.emotion);\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={this.emotion.cx({\n [styles.rootSmall(this.theme)]: this.context.size === 'small',\n [styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [styles.rootLarge(this.theme)]: this.context.size === 'large',\n [styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={this.emotion.cx(globalClasses.focus, {\n [styles.focusSmall(this.theme)]: this.context.size === 'small',\n [styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed || keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
|
|
@@ -12,7 +12,7 @@ import { getRootNode } from "../../../lib/rootNode/getRootNode";
|
|
|
12
12
|
import { rootNode } from "../../../lib/rootNode";
|
|
13
13
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
14
14
|
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
15
|
-
import {
|
|
15
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
16
16
|
import { Indicator } from "../Indicator";
|
|
17
17
|
import { getStyles } from "../Tabs.styles";
|
|
18
18
|
import { TabsContext } from "../TabsContext";
|
|
@@ -126,7 +126,7 @@ var Tabs = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
126
126
|
|
|
127
127
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
128
128
|
var styles = getStyles(emotion);
|
|
129
|
-
return /*#__PURE__*/React.createElement(
|
|
129
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
130
130
|
var _emotion$cx;
|
|
131
131
|
|
|
132
132
|
_this2.theme = theme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Tabs.tsx"],"names":["React","globalObject","CommonWrapper","EmotionConsumer","getRootNode","rootNode","createPropsGetter","isInstanceOf","ThemeConsumer","Indicator","getStyles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","findIndex","x","id","newIndex","Math","max","min","length","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","props","onValueChange","value","getTab","find","addTab","concat","removeTab","filter","render","width","children","indicatorClassName","ariaDescribedby","vertical","size","emotion","styles","theme","setRootNode","cx","rootSmall","rootMedium","rootLarge","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { emptyHandler } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { Indicator } from './Indicator';\nimport { getStyles } from './Tabs.styles';\nimport { TabsContext, TabsContextType } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /**\n * Позволяет задать кастомный класс подчёркиванию таба.\n */\n indicatorClassName?: string;\n\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * Задаёт текущий активный `<Tab />`. Принимает `id` таба.\n */\n value: T;\n\n /**\n * Функция, позволяющая изменить текущий активный `<Tab />`.\n */\n onValueChange?: (value: T) => void;\n\n /**\n * Переводит компонент в режим вертикального отображения.\n * @default false\n */\n vertical?: boolean;\n\n /**\n * `CSS`-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Атрибут для указания id элемента(-ов), описывающих его.\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента `<Tab />`. Связывает `Tab`'ы в группу и позволяет управлять их состоянием.\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n return (\n <EmotionConsumer>\n {(emotion) => {\n const styles = getStyles(emotion);\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={emotion.cx({\n [styles.rootSmall(this.theme)]: size === 'small',\n [styles.rootMedium(this.theme)]: size === 'medium',\n [styles.rootLarge(this.theme)]: size === 'large',\n [styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Tabs.tsx"],"names":["React","globalObject","CommonWrapper","EmotionConsumer","getRootNode","rootNode","createPropsGetter","isInstanceOf","ThemeContext","Indicator","getStyles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","findIndex","x","id","newIndex","Math","max","min","length","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","props","onValueChange","value","getTab","find","addTab","concat","removeTab","filter","render","width","children","indicatorClassName","ariaDescribedby","vertical","size","emotion","styles","theme","setRootNode","cx","rootSmall","rootMedium","rootLarge","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { emptyHandler } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { Indicator } from './Indicator';\nimport { getStyles } from './Tabs.styles';\nimport { TabsContext, TabsContextType } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /**\n * Позволяет задать кастомный класс подчёркиванию таба.\n */\n indicatorClassName?: string;\n\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * Задаёт текущий активный `<Tab />`. Принимает `id` таба.\n */\n value: T;\n\n /**\n * Функция, позволяющая изменить текущий активный `<Tab />`.\n */\n onValueChange?: (value: T) => void;\n\n /**\n * Переводит компонент в режим вертикального отображения.\n * @default false\n */\n vertical?: boolean;\n\n /**\n * `CSS`-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Атрибут для указания id элемента(-ов), описывающих его.\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента `<Tab />`. Связывает `Tab`'ы в группу и позволяет управлять их состоянием.\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n return (\n <EmotionConsumer>\n {(emotion) => {\n const styles = getStyles(emotion);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={emotion.cx({\n [styles.rootSmall(this.theme)]: size === 'small',\n [styles.rootMedium(this.theme)]: size === 'medium',\n [styles.rootLarge(this.theme)]: size === 'large',\n [styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
|
|
@@ -24,7 +24,7 @@ import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
|
24
24
|
import { rootNode } from "../../../lib/rootNode";
|
|
25
25
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
26
26
|
import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
|
|
27
|
-
import {
|
|
27
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
28
28
|
import { getTextAreaHeight } from "../TextareaHelpers";
|
|
29
29
|
import { getStyles } from "../Textarea.styles";
|
|
30
30
|
import { TextareaCounter } from "../TextareaCounter";
|
|
@@ -447,7 +447,7 @@ var Textarea = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
447
447
|
_this2.featureFlags = getFullReactUIFlagsContext(flags);
|
|
448
448
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
449
449
|
_this2.emotion = emotion;
|
|
450
|
-
return /*#__PURE__*/React.createElement(
|
|
450
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
451
451
|
_this2.theme = theme;
|
|
452
452
|
return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
|
|
453
453
|
rootNodeRef: _this2.setRootNode
|