@skbkontur/react-ui 6.1.6-fe902.0 → 6.1.7-1c902.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/components/Checkbox/Checkbox.d.ts +5 -0
- package/components/Checkbox/Checkbox.js +42 -21
- package/components/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
- package/components/Checkbox/Checkbox.mixins.js +6 -0
- package/components/Checkbox/Checkbox.mixins.js.map +1 -1
- package/components/Checkbox/Checkbox.styles.d.ts +7 -0
- package/components/Checkbox/Checkbox.styles.js +23 -2
- package/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/components/CurrencyInput/CurrencyHelper.d.ts +1 -2
- package/components/CurrencyInput/CurrencyHelper.js +32 -28
- package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
- package/components/CurrencyInput/CurrencyInputHelper.js +1 -1
- package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
- package/components/DateInput/DateInput.js +4 -1
- package/components/DateInput/DateInput.js.map +1 -1
- package/components/FileUploader/FileUploaderFile.d.ts +1 -1
- package/components/FileUploader/FileUploaderFile.js +1 -1
- package/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +1 -1
- package/components/FxInput/FxInput.js.map +1 -1
- package/components/Group/Group.js +3 -2
- package/components/Group/Group.js.map +1 -1
- package/components/Input/Input.d.ts +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +2 -6
- package/components/MaskedInput/MaskedInput.js +126 -10
- package/components/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/index.d.ts +0 -1
- package/components/MaskedInput/index.js +0 -1
- package/components/MaskedInput/index.js.map +1 -1
- package/components/MenuItem/MenuItem.js +1 -0
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +1 -0
- package/components/MenuItem/MenuItem.styles.js +10 -7
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +0 -9
- package/components/MiniModal/MiniModal.js +0 -9
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/Modal/Modal.d.ts +0 -5
- package/components/Modal/Modal.js +0 -5
- package/components/Modal/Modal.js.map +1 -1
- package/components/Radio/Radio.d.ts +4 -0
- package/components/Radio/Radio.js +20 -1
- package/components/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.mixins.d.ts +2 -0
- package/components/Radio/Radio.mixins.js +6 -0
- package/components/Radio/Radio.mixins.js.map +1 -1
- package/components/Radio/Radio.styles.d.ts +6 -0
- package/components/Radio/Radio.styles.js +22 -4
- package/components/Radio/Radio.styles.js.map +1 -1
- package/components/Select/Select.d.ts +1 -0
- package/components/Select/Select.js +12 -2
- package/components/Select/Select.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +3 -3
- package/components/Switcher/Switcher.js +1 -1
- package/components/Switcher/Switcher.js.map +1 -1
- package/components/Tabs/Tab.d.ts +4 -5
- package/components/Tabs/Tab.js +0 -1
- package/components/Tabs/Tab.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +2 -2
- package/components/Tabs/Tabs.js +1 -1
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/TimePicker/TimeClockIcon.d.ts +3 -0
- package/components/TimePicker/TimeClockIcon.js +11 -0
- package/components/TimePicker/TimeClockIcon.js.map +1 -0
- package/components/TimePicker/TimePicker.d.ts +137 -0
- package/components/TimePicker/TimePicker.js +648 -0
- package/components/TimePicker/TimePicker.js.map +1 -0
- package/components/TimePicker/TimePicker.styles.d.ts +11 -0
- package/components/TimePicker/TimePicker.styles.js +36 -0
- package/components/TimePicker/TimePicker.styles.js.map +1 -0
- package/components/TimePicker/TimePickerItems.d.ts +20 -0
- package/components/TimePicker/TimePickerItems.js +108 -0
- package/components/TimePicker/TimePickerItems.js.map +1 -0
- package/components/TimePicker/TimePickerMobilePopup.d.ts +45 -0
- package/components/TimePicker/TimePickerMobilePopup.js +45 -0
- package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
- package/components/TimePicker/TimePickerPopup.d.ts +23 -0
- package/components/TimePicker/TimePickerPopup.js +18 -0
- package/components/TimePicker/TimePickerPopup.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +24 -0
- package/components/TimePicker/helpers/TimePicker.constants.js +33 -0
- package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +23 -0
- package/components/TimePicker/helpers/TimePicker.editing.js +101 -0
- package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +6 -0
- package/components/TimePicker/helpers/TimePicker.layout.js +49 -0
- package/components/TimePicker/helpers/TimePicker.layout.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +5 -0
- package/components/TimePicker/helpers/TimePicker.selection.js +23 -0
- package/components/TimePicker/helpers/TimePicker.selection.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +82 -0
- package/components/TimePicker/helpers/TimePicker.shared.js +94 -0
- package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.value.d.ts +59 -0
- package/components/TimePicker/helpers/TimePicker.value.js +175 -0
- package/components/TimePicker/helpers/TimePicker.value.js.map +1 -0
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +4 -0
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +24 -0
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +1 -0
- package/components/TimePicker/helpers/validateTimePicker.d.ts +8 -0
- package/components/TimePicker/helpers/validateTimePicker.js +17 -0
- package/components/TimePicker/helpers/validateTimePicker.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +18 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.js +85 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +18 -0
- package/components/TimePicker/hooks/useTimePickerSelection.js +66 -0
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +27 -0
- package/components/TimePicker/hooks/useTimePickerValue.js +76 -0
- package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -0
- package/components/TimePicker/index.d.ts +2 -0
- package/components/TimePicker/index.js +2 -0
- package/components/TimePicker/index.js.map +1 -0
- package/components/TimePicker/locale/index.d.ts +4 -0
- package/components/TimePicker/locale/index.js +9 -0
- package/components/TimePicker/locale/index.js.map +1 -0
- package/components/TimePicker/locale/locales/en.d.ts +2 -0
- package/components/TimePicker/locale/locales/en.js +5 -0
- package/components/TimePicker/locale/locales/en.js.map +1 -0
- package/components/TimePicker/locale/locales/ru.d.ts +2 -0
- package/components/TimePicker/locale/locales/ru.js +5 -0
- package/components/TimePicker/locale/locales/ru.js.map +1 -0
- package/components/TimePicker/locale/types.d.ts +4 -0
- package/components/TimePicker/locale/types.js.map +1 -0
- package/components/Toggle/Toggle.d.ts +5 -0
- package/components/Toggle/Toggle.js +46 -22
- package/components/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.mixins.d.ts +2 -0
- package/components/Toggle/Toggle.mixins.js +6 -0
- package/components/Toggle/Toggle.mixins.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +9 -0
- package/components/Toggle/Toggle.styles.js +29 -2
- package/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/Token/Token.d.ts +1 -1
- package/components/Token/Token.js +1 -1
- package/components/Token/Token.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +1 -1
- package/components/TokenInput/TokenInput.js +1 -1
- package/components/TokenInput/TokenInput.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/Menu/Menu.d.ts +5 -0
- package/internal/Menu/Menu.js +21 -0
- package/internal/Menu/Menu.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
- package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
- package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +7 -0
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +28 -0
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +1 -0
- package/internal/NativeTimeInput/index.d.ts +1 -0
- package/internal/NativeTimeInput/index.js +2 -0
- package/internal/NativeTimeInput/index.js.map +1 -0
- package/internal/TimeInput/TimeFragments.d.ts +15 -0
- package/internal/TimeInput/TimeFragments.js +72 -0
- package/internal/TimeInput/TimeFragments.js.map +1 -0
- package/internal/TimeInput/TimeFragments.styles.d.ts +12 -0
- package/internal/TimeInput/TimeFragments.styles.js +43 -0
- package/internal/TimeInput/TimeFragments.styles.js.map +1 -0
- package/internal/TimeInput/TimeInput.d.ts +22 -0
- package/internal/TimeInput/TimeInput.js +103 -0
- package/internal/TimeInput/TimeInput.js.map +1 -0
- package/{components/MaskedInputV2/MaskedInputV2.styles.d.ts → internal/TimeInput/TimeInput.styles.d.ts} +3 -4
- package/internal/TimeInput/TimeInput.styles.js +21 -0
- package/internal/TimeInput/TimeInput.styles.js.map +1 -0
- package/internal/TimeInput/index.d.ts +1 -0
- package/internal/TimeInput/index.js +2 -0
- package/internal/TimeInput/index.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +1 -0
- package/internal/themes/BasicTheme.d.ts +65 -0
- package/internal/themes/BasicTheme.js +253 -0
- package/internal/themes/BasicTheme.js.map +1 -1
- package/internal/themes/DarkTheme6_0.js +1 -0
- package/internal/themes/DarkTheme6_0.js.map +1 -1
- package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
- package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
- package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
- package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
- package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +0 -2
- package/lib/events/keyboard/identifiers.js +0 -6
- package/lib/events/keyboard/identifiers.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/locale/types.d.ts +2 -0
- package/lib/locale/types.js.map +1 -1
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +1 -0
- package/lib/utils.js.map +1 -1
- package/package.json +9 -4
- package/components/MaskedInput/MaskedInputLegacy.d.ts +0 -3
- package/components/MaskedInput/MaskedInputLegacy.js +0 -142
- package/components/MaskedInput/MaskedInputLegacy.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -62
- package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
- package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
- package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.js +0 -307
- package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +0 -28
- package/components/MaskedInputV2/MaskedInputV2.phone.js +0 -38
- package/components/MaskedInputV2/MaskedInputV2.phone.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
- package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
- package/components/MaskedInputV2/index.d.ts +0 -2
- package/components/MaskedInputV2/index.js +0 -3
- package/components/MaskedInputV2/index.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
- package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
- package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
- package/components/MaskedInputV2/internal/MaskedCore.js +0 -186
- package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -37
- package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
- package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
- package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
- package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
- package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
- package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +0 -6
- package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +0 -47
- package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +0 -1
- package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +0 -3
- package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +0 -11
- package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +0 -1
- package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
- package/components/MaskedInputV2/internal/extractRaw.js +0 -16
- package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
- package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
- package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
- package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
- package/components/MaskedInputV2/internal/helpers.d.ts +0 -8
- package/components/MaskedInputV2/internal/helpers.js +0 -9
- package/components/MaskedInputV2/internal/helpers.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -37
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -52
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -38
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -49
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
- package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +0 -2
- package/components/MaskedInputV2/internal/measureInputTextWidth.js +0 -30
- package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +0 -1
- package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +0 -2
- package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +0 -25
- package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +0 -1
- package/components/MaskedInputV2/internal/showOverlay.d.ts +0 -3
- package/components/MaskedInputV2/internal/showOverlay.js +0 -16
- package/components/MaskedInputV2/internal/showOverlay.js.map +0 -1
- package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
- package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
- package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
- package/components/MaskedInputV2/internal/types.d.ts +0 -74
- package/components/MaskedInputV2/internal/types.js.map +0 -1
- package/components/MaskedInputV2/internal/useInputOverflow.d.ts +0 -4
- package/components/MaskedInputV2/internal/useInputOverflow.js +0 -34
- package/components/MaskedInputV2/internal/useInputOverflow.js.map +0 -1
- package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +0 -2
- package/components/MaskedInputV2/internal/useMaskAlignPadding.js +0 -33
- package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +0 -1
- package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
- package/components/MaskedInputV2/internal/useMaskEngine.js +0 -84
- package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -34
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -335
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
- package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
- package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
- package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
- package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
- package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
- package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
- package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
- package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
- package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
- package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
- package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +0 -14
- package/components/MaskedInputV2/react-imask/imask/masked/create.js +0 -11
- package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -107
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -549
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -182
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
- package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
- package/components/MaskedInputV2/react-imask/index.js +0 -4
- package/components/MaskedInputV2/react-imask/index.js.map +0 -1
- package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
- package/components/MaskedInputV2/react-imask/input.js +0 -35
- package/components/MaskedInputV2/react-imask/input.js.map +0 -1
- package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
- package/components/MaskedInputV2/react-imask/mixin.js +0 -246
- package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
- /package/components/{MaskedInputV2/internal → TimePicker/locale}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["MenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Описание пункта меню. */\n comment?: React.ReactNode;\n\n /** Блокирует пункт и перекрашивает в серый. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от текста. */\n icon?: React.ReactElement;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /**`HTML`-событие `onmouseenter`. */\n onMouseEnter?: React.MouseEventHandler;\n\n /**`HTML`-событие `onmouseleave`. */\n onMouseLeave?: React.MouseEventHandler;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * Пункт меню `MenuItem` — интерактивный элемент выполнения действий или навигации.\n */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private size!: SizeProp;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.isHtmlElement(this.rootRef)) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.isHtmlElement(this.rootRef)) {\n const computedStyle = this.rootRef.ownerDocument?.defaultView?.getComputedStyle(this.rootRef);\n this.setState({\n iconOffsetTop: computedStyle?.getPropertyValue('padding-top') ?? '',\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootMobileSizeClassName(): string {\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n if (!themeGTE6_1) {\n return this.styles.rootMobile(this.theme);\n }\n switch (this.props.size) {\n case 'large':\n return this.styles.rootMobileLarge(this.theme);\n case 'medium':\n return this.styles.rootMobileMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootMobileSmall(this.theme);\n }\n }\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size: sizeProp,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.getRootMobileSizeClassName()]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement | null) => {\n this.rootRef = this.isHtmlElement(element) ? element : null;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n\n private isHtmlElement = (element: Nullable<unknown>): element is HTMLElement => {\n if (!element || !isBrowser(this.globalObject)) {\n return false;\n }\n\n const HTMLElementCtor = this.globalObject.HTMLElement;\n return Boolean(HTMLElementCtor && element instanceof HTMLElementCtor);\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
|
|
1
|
+
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["MenuItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oEAAoE,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,kCAAkC,EAAE,MAAM,qDAAqD,CAAC;AAEzG,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAoEjD,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;CACpB,CAAC;AAEX;;GAEG;AAIH;IAA8B,4BAA8B;IAA5D;;QAKS,WAAK,GAAG;YACb,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,KAAK;SACnB,CAAC;QAQM,kBAAY,GAAG,KAAK,CAAC;QAGrB,aAAO,GAA0B,IAAI,CAAC;QACtC,gBAAU,GAAG,KAAK,CAAC,SAAS,EAAe,CAAC;QAyD7C,eAAS,GAAG;YACjB,KAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEK,iBAAW,GAAG;YACnB,KAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEK,YAAM,GAAG,UAAC,KAAwC;YACvD,KAAI,CAAC,WAAW,CAAC,KAAsC,CAAC,CAAC;QAC3D,CAAC,CAAC;QAEK,eAAS,GAAG;YACjB,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC;QAEK,cAAQ,GAAG;;YAChB,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,IAAI,mDAAG,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACtC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACpD,CAAC;QACH,CAAC,CAAC;QAsDM,gBAAU,GAAG;;YACnB,IAAM,KAqBF,KAAI,CAAC,KAAK,EApBZ,OAAO,aAAA,EACP,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,KAAK,WAAA,EACC,QAAQ,UAAA,EACd,kBAAkB,wBAAA,EAClB,SAAS,eAAA,EACT,YAAY,kBAAA,EACZ,YAAY,kBAAA,EACZ,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,cAAc,oBAAA,EACd,WAA8F,EAA9F,GAAG,mBAAG,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,KAAA,EAC9F,eAAe,qBAAA,EACf,QAAQ,cAAA,EACG,aAAa,eAAA,EACxB,KAAK,WAAA,EACO,OAAO,iBAAA,EAChB,IAAI,cApBH,0OAqBL,CAAa,CAAC;YAEf,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,EAAE,CAAC;gBACT,WAAW,GAAG,CACZ,6BACE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EACxC,SAAS,EAAE,KAAI,CAAC,EAAE;wBAChB,GAAC,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAG,IAAI;wBAC1B,GAAC,KAAI,CAAC,oBAAoB,EAAE,IAAG,IAAI;4BACnC,IAED,IAAI,CACD,CACP,CAAC;YACJ,CAAC;YAED,IAAM,SAAS,GAAG,KAAI,CAAC,EAAE;gBACvB,GAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBACpC,GAAC,KAAI,CAAC,oBAAoB,EAAE,IAAG,IAAI;gBACnC,GAAC,KAAI,CAAC,0BAA0B,EAAE,IAAG,QAAQ;gBAC7C,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAG,CAAC,CAAC,KAAK;gBAC9B,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,OAAO;gBAC7C,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,UAAU;gBACnD,GAAC,KAAI,CAAC,wBAAwB,EAAE,IAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,KAAI,CAAC,OAAO,CAAC,iBAAiB;gBACjH,GAAC,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAG,CAAC,CAAC,eAAe;gBAChD,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,QAAQ;oBAC9C,CAAC;YAEH,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,GAAG,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC;YAED,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;YAEtC,OAAO,CACL,oBAAC,aAAa,aACZ,WAAW,EAAE,KAAI,CAAC,WAAW,IACzB,4BAA4B,CAAC;gBAC/B,KAAK,EAAE,KAAI,CAAC,OAAO;gBACnB,QAAQ,EAAE,KAAI,CAAC,UAAU;aAC1B,CAAC,EACE,KAAI,CAAC,KAAK;gBAEd,oBAAC,SAAS,aACR,GAAG,EAAE,KAAI,CAAC,UAAU,cACV,gBAAgB,CAAC,IAAI,IAC3B,IAAI,IACR,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAI,CAAC,WAAW,EACvB,WAAW,EAAE,KAAI,CAAC,mBAAmB,EACrC,YAAY,EAAE,KAAI,CAAC,gBAAgB,EACnC,OAAO,EAAE,KAAI,CAAC,WAAW,EACzB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC3B,QAAQ,EAAE,CAAC,CAAC;oBAEX,WAAW;oBACZ,8BACE,SAAS,EAAE,KAAI,CAAC,EAAE;4BAChB,GAAC,KAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC;gCACtE,EACF,GAAG,EAAE,KAAI,CAAC,UAAU,cACV,gBAAgB,CAAC,OAAO,IAEjC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAC/C;oBACN,OAAO,IAAI,CACV,yCACY,gBAAgB,CAAC,OAAO,EAClC,SAAS,EAAE,KAAI,CAAC,EAAE;4BAChB,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI;4BACvC,GAAC,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,QAAQ;4BACrD,GAAC,KAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,OAAO;gCACpD,IAED,OAAO,CACJ,CACP,CACS,CACE,CACjB,CAAC;QACJ,CAAC,CAAC;QAcF,iDAAiD;QACjD,wEAAwE;QAChE,yBAAmB,GAAG,UAAC,CAAgC;;YAC7D,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;gBAC7B,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,SAAS,CAAC,KAAI,CAAC,CAAA,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,CAAgC;;YAC1D,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAA,CAAC;QACxE,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,CAAgC;;YACrD,IAAI,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,OAAO,mDAAG,CAAC,CAAC,CAAC;YACxB,MAAA,MAAA,KAAI,CAAC,OAAO,EAAC,WAAW,mDAAG,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC;QAEM,gBAAU,GAAG,UAAC,OAA2B;YAC/C,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC,CAAC;QAEM,kBAAY,GAAG;YACf,IAAA,KAAgC,KAAI,CAAC,KAAK,EAAxC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAe,CAAC;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;YACb,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAEM,uBAAiB,GAAG;;YAC1B,OAAO,OAAO,CAAC,MAAA,KAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,KAAK,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAf,CAAe,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,OAA0B;YACjD,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAM,eAAe,GAAG,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACtD,OAAO,OAAO,CAAC,eAAe,IAAI,OAAO,YAAY,eAAe,CAAC,CAAC;QACxE,CAAC,CAAC;;IACJ,CAAC;IArTQ,yBAAM,GAAb;QAAA,iBAWC;QAVC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,KAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAEM,oCAAiB,GAAxB;;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,0CAAE,WAAW,0CAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9F,IAAI,CAAC,QAAQ,CAAC;gBACZ,aAAa,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,gBAAgB,CAAC,aAAa,CAAC,mCAAI,EAAE;aACpE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC3D,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEM,uCAAoB,GAA3B;;QACE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,KAAI,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAAC;YACxF,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEM,qCAAkB,GAAzB,UAA0B,SAAkC;;QAC1D,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,oBAAoB,mDAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxF,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IA6BO,6CAA0B,GAAlC;QACE,IAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,uCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,uCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,2CAAwB,GAAhC;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IA8GD,sBAAY,iCAAW;aAAvB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7D,CAAC;;;OAAA;IAED,sBAAY,6BAAO;aAAnB;YACE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1F,CAAC;;;OAAA;IAED,sBAAY,gCAAU;aAAtB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACpE,CAAC;;;OAAA;IAjRa,4BAAmB,GAAG,UAAU,AAAb,CAAc;IACjC,oBAAW,GAAG,UAAU,AAAb,CAAc;IACzB,sBAAa,GAAG,IAAI,AAAP,CAAQ;IAkB5B,oBAAW,GAAG,WAAW,AAAd,CAAe;IArBtB,QAAQ;QAHpB,qBAAqB;QACrB,QAAQ;QACR,QAAQ;OACI,QAAQ,CA8UpB;IAAD,eAAC;CAAA,AA9UD,CAA8B,KAAK,CAAC,SAAS,GA8U5C;SA9UY,QAAQ;AAgVrB,MAAM,CAAC,IAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Описание пункта меню. */\n comment?: React.ReactNode;\n\n /** Блокирует пункт и перекрашивает в серый. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от текста. */\n icon?: React.ReactElement;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /**`HTML`-событие `onmouseenter`. */\n onMouseEnter?: React.MouseEventHandler;\n\n /**`HTML`-событие `onmouseleave`. */\n onMouseLeave?: React.MouseEventHandler;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * Пункт меню `MenuItem` — интерактивный элемент выполнения действий или навигации.\n */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private size!: SizeProp;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.isHtmlElement(this.rootRef)) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.isHtmlElement(this.rootRef)) {\n const computedStyle = this.rootRef.ownerDocument?.defaultView?.getComputedStyle(this.rootRef);\n this.setState({\n iconOffsetTop: computedStyle?.getPropertyValue('padding-top') ?? '',\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootMobileSizeClassName(): string {\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n if (!themeGTE6_1) {\n return this.styles.rootMobile(this.theme);\n }\n switch (this.props.size) {\n case 'large':\n return this.styles.rootMobileLarge(this.theme);\n case 'medium':\n return this.styles.rootMobileMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootMobileSmall(this.theme);\n }\n }\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size: sizeProp,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.getRootMobileSizeClassName()]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentDisabled(this.theme)]: !!disabled,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement | null) => {\n this.rootRef = this.isHtmlElement(element) ? element : null;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n\n private isHtmlElement = (element: Nullable<unknown>): element is HTMLElement => {\n if (!element || !isBrowser(this.globalObject)) {\n return false;\n }\n\n const HTMLElementCtor = this.globalObject.HTMLElement;\n return Boolean(HTMLElementCtor && element instanceof HTMLElementCtor);\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
|
|
@@ -19,6 +19,7 @@ export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGet
|
|
|
19
19
|
withIconMedium(t: Theme): string;
|
|
20
20
|
withIconLarge(t: Theme): string;
|
|
21
21
|
comment(t: Theme): string;
|
|
22
|
+
commentDisabled(t: Theme): string;
|
|
22
23
|
commentHover(t: Theme): string;
|
|
23
24
|
icon(): string;
|
|
24
25
|
iconSmall(t: Theme): string;
|
|
@@ -61,25 +61,28 @@ export var getStyles = memoizeGetStyles(function (_a) {
|
|
|
61
61
|
comment: function (t) {
|
|
62
62
|
return css(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n color: ", ";\n opacity: ", ";\n white-space: normal;\n padding-top: 4px;\n "], ["\n color: ", ";\n opacity: ", ";\n white-space: normal;\n padding-top: 4px;\n "])), t.menuItemCommentColor, t.menuItemCommentOpacity);
|
|
63
63
|
},
|
|
64
|
+
commentDisabled: function (t) {
|
|
65
|
+
return css(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemDisabledColor);
|
|
66
|
+
},
|
|
64
67
|
commentHover: function (t) {
|
|
65
|
-
return css(
|
|
68
|
+
return css(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n color: ", ";\n opacity: ", ";\n "], ["\n color: ", ";\n opacity: ", ";\n "])), t.menuItemCommentColorHover, t.menuItemCommentOpacityHover);
|
|
66
69
|
},
|
|
67
70
|
icon: function () {
|
|
68
|
-
return css(
|
|
71
|
+
return css(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n display: inline-block;\n position: absolute;\n transform: translateY(0px); // icon shifts one pixel up in firefox on medium size without this property\n "], ["\n display: inline-block;\n position: absolute;\n transform: translateY(0px); // icon shifts one pixel up in firefox on medium size without this property\n "])));
|
|
69
72
|
},
|
|
70
73
|
iconSmall: function (t) {
|
|
71
|
-
return css(
|
|
74
|
+
return css(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), iconSizeMixin(t.menuItemIconWidthSmall, t.menuItemPaddingXSmall));
|
|
72
75
|
},
|
|
73
76
|
iconMedium: function (t) {
|
|
74
|
-
return css(
|
|
77
|
+
return css(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), iconSizeMixin(t.menuItemIconWidthMedium, t.menuItemPaddingXMedium));
|
|
75
78
|
},
|
|
76
79
|
iconLarge: function (t) {
|
|
77
|
-
return css(
|
|
80
|
+
return css(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), iconSizeMixin(t.menuItemIconWidthLarge, t.menuItemPaddingXLarge));
|
|
78
81
|
},
|
|
79
82
|
mobileContentWithIcon: function () {
|
|
80
|
-
return css(
|
|
83
|
+
return css(templateObject_24 || (templateObject_24 = __makeTemplateObject(["\n margin-left: 8px;\n "], ["\n margin-left: 8px;\n "])));
|
|
81
84
|
},
|
|
82
85
|
});
|
|
83
86
|
});
|
|
84
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23;
|
|
87
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24;
|
|
85
88
|
//# sourceMappingURL=MenuItem.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.styles.js","sourceRoot":"","sources":["MenuItem.styles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MenuItem.styles.js","sourceRoot":"","sources":["MenuItem.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { resetButton } from '../../lib/styles/Mixins.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { getMenuItemPaddings, iconSizeMixin, menuItemSizeMixin, withIconSizeMixin } from './MenuItem.mixins.js';\n\nexport { getMenuItemPaddings };\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: ${t.menuItemDisplay};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n border-radius: ${t.menuItemBorderRadius};\n\n button& {\n min-width: 100%;\n }\n\n &:nth-last-of-type(n + 2) {\n margin-bottom: ${t.menuItemGap};\n }\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXSmall,\n t.menuItemPaddingYSmall,\n t.menuItemLineHeightSmall,\n t.menuItemFontSizeSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXMedium,\n t.menuItemPaddingYMedium,\n t.menuItemLineHeightMedium,\n t.menuItemFontSizeMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXLarge,\n t.menuItemPaddingYLarge,\n t.menuItemLineHeightLarge,\n t.menuItemFontSizeLarge,\n )};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.menuItemFontSizeMobile};\n line-height: ${t.menuItemLineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n rootMobileLarge(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeLarge};\n line-height: ${t.mobileMenuItemLineHeightLarge};\n padding: ${t.mobileMenuItemPaddingLarge};\n `;\n },\n rootMobileMedium(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeMedium};\n line-height: ${t.mobileMenuItemLineHeightMedium};\n padding: ${t.mobileMenuItemPaddingMedium};\n `;\n },\n rootMobileSmall(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeSmall};\n line-height: ${t.mobileMenuItemLineHeightSmall};\n padding: ${t.mobileMenuItemPaddingSmall};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: ${t.menuItemDisabledBg};\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n nonSelectable() {\n return css`\n cursor: default;\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIconSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withIconMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withIconLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n opacity: ${t.menuItemCommentOpacity};\n white-space: normal;\n padding-top: 4px;\n `;\n },\n commentDisabled(t: Theme) {\n return css`\n color: ${t.menuItemDisabledColor};\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: ${t.menuItemCommentOpacityHover};\n `;\n },\n icon() {\n return css`\n display: inline-block;\n position: absolute;\n transform: translateY(0px); // icon shifts one pixel up in firefox on medium size without this property\n `;\n },\n iconSmall(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthSmall, t.menuItemPaddingXSmall)};\n `;\n },\n iconMedium(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthMedium, t.menuItemPaddingXMedium)};\n `;\n },\n iconLarge(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthLarge, t.menuItemPaddingXLarge)};\n `;\n },\n mobileContentWithIcon() {\n return css`\n margin-left: 8px;\n `;\n },\n}));\n"]}
|
|
@@ -8,15 +8,6 @@ import { MiniModalDataTids } from './tids.js';
|
|
|
8
8
|
export { MiniModalDataTids };
|
|
9
9
|
/**
|
|
10
10
|
* Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
11
|
-
*
|
|
12
|
-
* Состоит из набора подкомпонентов:
|
|
13
|
-
* - `MiniModal.Header`
|
|
14
|
-
* - `MiniModal.Body`
|
|
15
|
-
* - `MiniModal.Footer`
|
|
16
|
-
* - `MiniModal.Indent`
|
|
17
|
-
*
|
|
18
|
-
* Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.
|
|
19
|
-
*
|
|
20
11
|
*/
|
|
21
12
|
export declare const MiniModal: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<Modal, ModalProps> & {
|
|
22
13
|
Header: typeof MiniModalHeader;
|
|
@@ -33,15 +33,6 @@ import { MiniModalDataTids } from './tids.js';
|
|
|
33
33
|
export { MiniModalDataTids };
|
|
34
34
|
/**
|
|
35
35
|
* Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
36
|
-
*
|
|
37
|
-
* Состоит из набора подкомпонентов:
|
|
38
|
-
* - `MiniModal.Header`
|
|
39
|
-
* - `MiniModal.Body`
|
|
40
|
-
* - `MiniModal.Footer`
|
|
41
|
-
* - `MiniModal.Indent`
|
|
42
|
-
*
|
|
43
|
-
* Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.
|
|
44
|
-
*
|
|
45
36
|
*/
|
|
46
37
|
export var MiniModal = forwardRefAndName('MiniModal', function (_a, ref) {
|
|
47
38
|
var children = _a.children, propsTheme = _a.theme, mobileAppearance = _a.mobileAppearance, width = _a.width, rest = __rest(_a, ["children", "theme", "mobileAppearance", "width"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,IAAM,SAAS,GAAG,iBAAiB,CASxC,WAAW,EAAE,UAAC,EAAiE,EAAE,GAAG;IAApE,IAAA,QAAQ,cAAA,EAAS,UAAU,WAAA,EAAE,gBAAgB,sBAAA,EAAE,KAAK,WAAA,EAAK,IAAI,cAA/D,kDAAiE,CAAF;IAC7E,IAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC;QACvE,oBAAC,KAAK,aAAC,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,EAAE,OAAO,QAAC,GAAG,EAAE,GAAG,IAAM,IAAI,GACnG,QAAQ,CACH,CACc,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalProps } from '../Modal/index.js';\nimport { getMiniModalTheme } from './getMiniModalTheme.js';\nimport { MiniModalBody } from './MiniModalBody.js';\nimport { MiniModalFooter } from './MiniModalFooter.js';\nimport { MiniModalHeader } from './MiniModalHeader.js';\nimport { MiniModalIndent } from './MiniModalIndent.js';\nimport { MiniModalDataTids } from './tids.js';\n\nexport { MiniModalDataTids };\n\n/**\n * Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.\n */\nexport const MiniModal = forwardRefAndName<\n Modal,\n ModalProps,\n {\n Header: typeof MiniModalHeader;\n Indent: typeof MiniModalIndent;\n Footer: typeof MiniModalFooter;\n Body: typeof MiniModalBody;\n }\n>('MiniModal', ({ children, theme: propsTheme, mobileAppearance, width, ...rest }, ref) => {\n const contextTheme = useContext(ThemeContext);\n\n return (\n <ThemeContext.Provider value={getMiniModalTheme(contextTheme, propsTheme)}>\n <Modal width={width ?? 400} mobileAppearance={mobileAppearance ?? 'center'} noClose ref={ref} {...rest}>\n {children}\n </Modal>\n </ThemeContext.Provider>\n );\n});\n\nMiniModal.Header = MiniModalHeader;\nMiniModal.Footer = MiniModalFooter;\nMiniModal.Indent = MiniModalIndent;\nMiniModal.Body = MiniModalBody;\n"]}
|
|
@@ -50,11 +50,6 @@ export interface ModalState {
|
|
|
50
50
|
}
|
|
51
51
|
type DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;
|
|
52
52
|
/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.
|
|
53
|
-
*
|
|
54
|
-
* Составной компонент, включает в себя:
|
|
55
|
-
* - «шапку» [Modal.Header](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalheader--docs), состоящую из заголовка и крестика закрытия окна;
|
|
56
|
-
* - контент-зону [Modal.Body](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalbody--docs);
|
|
57
|
-
* - футер [Modal.Footer](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalfooter--docs).
|
|
58
53
|
*/
|
|
59
54
|
export declare class Modal extends React.Component<ModalProps, ModalState> {
|
|
60
55
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -59,11 +59,6 @@ import { ModalHeader } from './ModalHeader.js';
|
|
|
59
59
|
export { ModalDataTids, ModalZIndexPriority };
|
|
60
60
|
var mountedModalsCount = 0;
|
|
61
61
|
/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.
|
|
62
|
-
*
|
|
63
|
-
* Составной компонент, включает в себя:
|
|
64
|
-
* - «шапку» [Modal.Header](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalheader--docs), состоящую из заголовка и крестика закрытия окна;
|
|
65
|
-
* - контент-зону [Modal.Body](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalbody--docs);
|
|
66
|
-
* - футер [Modal.Footer](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalfooter--docs).
|
|
67
62
|
*/
|
|
68
63
|
var Modal = /** @class */ (function (_super) {
|
|
69
64
|
__extends(Modal, _super);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["Modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport throttle from 'lodash.throttle';\nimport type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll/index.js';\nimport { FocusLock } from '../../internal/react-focus-lock/index.js';\nimport { RenderContainer } from '../../internal/RenderContainer/index.js';\nimport { ResizeDetector } from '../../internal/ResizeDetector/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { ModalStack } from '../../lib/ModalStack.js';\nimport type { ModalStackSubscription } from '../../lib/ModalStack.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport { type TGetRootNode, type TSetRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport { ResponsiveLayout } from '../ResponsiveLayout/index.js';\nimport { getModalTheme } from './getModalTheme.js';\nimport { ModalDataTids, ModalZIndexPriority } from './Modal.constants.js';\nimport { getStyles } from './Modal.styles.js';\nimport { ModalBody } from './ModalBody.js';\nimport { ModalClose } from './ModalClose.js';\nimport { ModalContext } from './ModalContext.js';\nimport type { ModalContextProps } from './ModalContext.js';\nimport { ModalFooter } from './ModalFooter.js';\nimport { ModalHeader } from './ModalHeader.js';\n\nexport { ModalDataTids, ModalZIndexPriority };\n\nlet mountedModalsCount = 0;\n\nexport type MobileModalAppearance = 'auto' | 'top' | 'center' | 'bottom' | 'fullscreen-spacing' | 'fullscreen';\n\nexport interface ModalProps\n extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Отключает событие `onClose` и блокирует кнопку закрытия модального окна. */\n disableClose?: boolean;\n\n /** Выравнивает модальное окно по верху страницы. */\n alignTop?: boolean;\n\n /** Оставляет модальное окно открытым, когда пользователь кликнул на фон вне модального окна. */\n ignoreBackgroundClick?: boolean;\n\n /** Скрывает крестик для закрытия модального окна. */\n noClose?: boolean;\n\n /** Ширина модального окна. */\n width?: number | string;\n\n /** Событие закрытия модального окна. Вызывается при клике на фон или крестик, и при нажатии Esc. */\n onClose?: () => void;\n\n /** Выключает ограничение на фокус. По умолчанию модальное окно не позволяет установить фокус за переделами своего содержимого.*/\n disableFocusLock?: boolean;\n\n /** Объект с переменными темы. Он будет объединён с темой из `<ThemeContext>`.\n *\n * Общие переменные темы и переменные для модального окна (с префиксом modal) смотрите на странице [ThemePlayground](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_information-themeplayground--docs).\n */\n theme?: ThemeIn;\n\n /** Задаёт внешний вид модального окна в мобильном режиме. Работает с версией темы >= 5_2.\n * - `\"auto\"` — если футера нет, модальное окно распологается в центре экрана, если есть — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"top\"` — модальное окно располагается сверху независимо от наличия футера.\n * - `\"center\"` — модальное окно располагается в центре независимо от наличия футера.\n * - `\"bottom\"` — модальное окно располагается снизу независимо от наличия футера.\n * - `\"fullscreen-spacing\"` — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"fullscreen\"` — модальное окно растягивается на весь экран.\n * @default auto\n */\n mobileAppearance?: MobileModalAppearance;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\ntype DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;\n\n/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.\n *\n * Составной компонент, включает в себя:\n * - «шапку» [Modal.Header](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalheader--docs), состоящую из заголовка и крестика закрытия окна;\n * - контент-зону [Modal.Body](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalbody--docs);\n * - футер [Modal.Footer](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_overlay-modal-modalfooter--docs).\n */\n@withRenderEnvironment\n@rootNode\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n public static displayName = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableFocusLock: false,\n role: 'dialog',\n mobileAppearance: 'auto',\n };\n\n private getProps = createPropsGetter(Modal.defaultProps);\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange, this.globalObject);\n\n if (mountedModalsCount === 0) {\n this.globalObject.addEventListener?.('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n this.globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n this.globalObject.removeEventListener?.('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n this.globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this, this.globalObject);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getModalTheme(theme, this.props.theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getMobileContainerClassName = () => {\n const mobileAppearance = this.getProps().mobileAppearance;\n switch (mobileAppearance) {\n case 'fullscreen-spacing':\n return;\n case 'auto':\n if (this.state.hasFooter) {\n return;\n }\n return [this.styles.mobileContainerSmall5_2()];\n case 'fullscreen':\n return [this.styles.mobileContainerFullscreen5_2()];\n case 'center':\n return [this.styles.mobileContainerSmall5_2()];\n case 'bottom':\n return [this.styles.mobileContainerSmall5_2(), this.styles.mobileContainerSmallBottom5_2()];\n case 'top':\n return [this.styles.mobileContainerSmall5_2(), this.styles.mobileContainerSmallTop5_2()];\n default:\n return catchUnreachableWarning(mobileAppearance, false);\n }\n };\n\n private renderMain() {\n const {\n noClose,\n disableClose,\n width,\n mobileAppearance,\n alignTop,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n } = this.props;\n const { hasHeader, hasFooter, hasPanel } = this.state;\n const { role, disableFocusLock } = this.getProps();\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n mobileOnFullScreen: this.props.mobileAppearance === 'fullscreen',\n };\n if (!noClose) {\n modalContextProps.close = {\n disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter || hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (width) {\n style.width = width;\n } else {\n containerStyle.width = 'auto';\n }\n\n const getMobileCenterContainerClassNames = () => {\n return this.cx(this.styles.mobileCenterContainer(this.theme), {\n [this.styles.mobileCenterContainerBig(this.theme)]:\n mobileAppearance === 'fullscreen-spacing' || (mobileAppearance === 'auto' && hasFooter),\n [this.styles.mobileCenterContainerFullscreen()]: mobileAppearance === 'fullscreen',\n });\n };\n\n return (\n <RenderContainer>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <ZIndex priority={'Modal'} className={this.styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && (\n <div\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n className={this.styles.bg(this.theme)}\n />\n )}\n <ResponsiveLayout>\n {({ isMobile }) => (\n <div\n aria-labelledby={ariaLabelledby}\n ref={this.refContainer}\n className={this.cx(\n this.styles.container(),\n !isMobile && this.styles.containerDesktop(),\n isMobile && this.getMobileContainerClassName(),\n )}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid={ModalDataTids.container}\n >\n <div\n aria-modal\n aria-label={ariaLabel}\n role={role}\n className={this.cx({\n [this.styles.centerContainer()]: true,\n [getMobileCenterContainerClassNames()]: isMobile,\n [this.styles.alignTop()]: Boolean(alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid={ModalDataTids.content}\n >\n <div\n className={this.cx({\n [this.styles.window(this.theme)]: true,\n [this.styles.mobileWindow()]: isMobile,\n [this.styles.mobileWindowFullscreen()]: isMobile && mobileAppearance === 'fullscreen',\n })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={disableFocusLock}\n autoFocus={false}\n className={this.cx({ [this.styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !noClose && (\n <ZIndex\n priority={ModalZIndexPriority.Cross}\n className={this.cx({\n [this.styles.closeWrapper(this.theme)]: true,\n [this.styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={this.cx({\n [this.styles.mobileCloseWithoutHeader(this.theme)]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>{children}</ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n </div>\n )}\n </ResponsiveLayout>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({\n stackPosition: stack.indexOf(this),\n hasBackground: ModalStack.isBlocking(this, this.globalObject),\n });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n e.stopPropagation();\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = () => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader: boolean) => {\n this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter: boolean) => {\n this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel: boolean) => {\n this.setState({ hasPanel });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["Modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport throttle from 'lodash.throttle';\nimport type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll/index.js';\nimport { FocusLock } from '../../internal/react-focus-lock/index.js';\nimport { RenderContainer } from '../../internal/RenderContainer/index.js';\nimport { ResizeDetector } from '../../internal/ResizeDetector/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { ModalStack } from '../../lib/ModalStack.js';\nimport type { ModalStackSubscription } from '../../lib/ModalStack.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport { type TGetRootNode, type TSetRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport { ResponsiveLayout } from '../ResponsiveLayout/index.js';\nimport { getModalTheme } from './getModalTheme.js';\nimport { ModalDataTids, ModalZIndexPriority } from './Modal.constants.js';\nimport { getStyles } from './Modal.styles.js';\nimport { ModalBody } from './ModalBody.js';\nimport { ModalClose } from './ModalClose.js';\nimport { ModalContext } from './ModalContext.js';\nimport type { ModalContextProps } from './ModalContext.js';\nimport { ModalFooter } from './ModalFooter.js';\nimport { ModalHeader } from './ModalHeader.js';\n\nexport { ModalDataTids, ModalZIndexPriority };\n\nlet mountedModalsCount = 0;\n\nexport type MobileModalAppearance = 'auto' | 'top' | 'center' | 'bottom' | 'fullscreen-spacing' | 'fullscreen';\n\nexport interface ModalProps\n extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Отключает событие `onClose` и блокирует кнопку закрытия модального окна. */\n disableClose?: boolean;\n\n /** Выравнивает модальное окно по верху страницы. */\n alignTop?: boolean;\n\n /** Оставляет модальное окно открытым, когда пользователь кликнул на фон вне модального окна. */\n ignoreBackgroundClick?: boolean;\n\n /** Скрывает крестик для закрытия модального окна. */\n noClose?: boolean;\n\n /** Ширина модального окна. */\n width?: number | string;\n\n /** Событие закрытия модального окна. Вызывается при клике на фон или крестик, и при нажатии Esc. */\n onClose?: () => void;\n\n /** Выключает ограничение на фокус. По умолчанию модальное окно не позволяет установить фокус за переделами своего содержимого.*/\n disableFocusLock?: boolean;\n\n /** Объект с переменными темы. Он будет объединён с темой из `<ThemeContext>`.\n *\n * Общие переменные темы и переменные для модального окна (с префиксом modal) смотрите на странице [ThemePlayground](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_information-themeplayground--docs).\n */\n theme?: ThemeIn;\n\n /** Задаёт внешний вид модального окна в мобильном режиме. Работает с версией темы >= 5_2.\n * - `\"auto\"` — если футера нет, модальное окно распологается в центре экрана, если есть — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"top\"` — модальное окно располагается сверху независимо от наличия футера.\n * - `\"center\"` — модальное окно располагается в центре независимо от наличия футера.\n * - `\"bottom\"` — модальное окно располагается снизу независимо от наличия футера.\n * - `\"fullscreen-spacing\"` — модальное окно растягивается на весь экран с отступами и закругленными краями.\n * - `\"fullscreen\"` — модальное окно растягивается на весь экран.\n * @default auto\n */\n mobileAppearance?: MobileModalAppearance;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\ntype DefaultProps = Required<Pick<ModalProps, 'disableFocusLock' | 'role' | 'mobileAppearance'>>;\n\n/** Модальное окно — это эмуляция диалогового окна браузера, оно появляется поверх страницы в ответ на действия пользователя и блокирует доступ к основному содержимому страницы.\n */\n@withRenderEnvironment\n@rootNode\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n public static displayName = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableFocusLock: false,\n role: 'dialog',\n mobileAppearance: 'auto',\n };\n\n private getProps = createPropsGetter(Modal.defaultProps);\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange, this.globalObject);\n\n if (mountedModalsCount === 0) {\n this.globalObject.addEventListener?.('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n this.globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n this.globalObject.removeEventListener?.('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n this.globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this, this.globalObject);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getModalTheme(theme, this.props.theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getMobileContainerClassName = () => {\n const mobileAppearance = this.getProps().mobileAppearance;\n switch (mobileAppearance) {\n case 'fullscreen-spacing':\n return;\n case 'auto':\n if (this.state.hasFooter) {\n return;\n }\n return [this.styles.mobileContainerSmall5_2()];\n case 'fullscreen':\n return [this.styles.mobileContainerFullscreen5_2()];\n case 'center':\n return [this.styles.mobileContainerSmall5_2()];\n case 'bottom':\n return [this.styles.mobileContainerSmall5_2(), this.styles.mobileContainerSmallBottom5_2()];\n case 'top':\n return [this.styles.mobileContainerSmall5_2(), this.styles.mobileContainerSmallTop5_2()];\n default:\n return catchUnreachableWarning(mobileAppearance, false);\n }\n };\n\n private renderMain() {\n const {\n noClose,\n disableClose,\n width,\n mobileAppearance,\n alignTop,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n } = this.props;\n const { hasHeader, hasFooter, hasPanel } = this.state;\n const { role, disableFocusLock } = this.getProps();\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n mobileOnFullScreen: this.props.mobileAppearance === 'fullscreen',\n };\n if (!noClose) {\n modalContextProps.close = {\n disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter || hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (width) {\n style.width = width;\n } else {\n containerStyle.width = 'auto';\n }\n\n const getMobileCenterContainerClassNames = () => {\n return this.cx(this.styles.mobileCenterContainer(this.theme), {\n [this.styles.mobileCenterContainerBig(this.theme)]:\n mobileAppearance === 'fullscreen-spacing' || (mobileAppearance === 'auto' && hasFooter),\n [this.styles.mobileCenterContainerFullscreen()]: mobileAppearance === 'fullscreen',\n });\n };\n\n return (\n <RenderContainer>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <ZIndex priority={'Modal'} className={this.styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && (\n <div\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n className={this.styles.bg(this.theme)}\n />\n )}\n <ResponsiveLayout>\n {({ isMobile }) => (\n <div\n aria-labelledby={ariaLabelledby}\n ref={this.refContainer}\n className={this.cx(\n this.styles.container(),\n !isMobile && this.styles.containerDesktop(),\n isMobile && this.getMobileContainerClassName(),\n )}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid={ModalDataTids.container}\n >\n <div\n aria-modal\n aria-label={ariaLabel}\n role={role}\n className={this.cx({\n [this.styles.centerContainer()]: true,\n [getMobileCenterContainerClassNames()]: isMobile,\n [this.styles.alignTop()]: Boolean(alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid={ModalDataTids.content}\n >\n <div\n className={this.cx({\n [this.styles.window(this.theme)]: true,\n [this.styles.mobileWindow()]: isMobile,\n [this.styles.mobileWindowFullscreen()]: isMobile && mobileAppearance === 'fullscreen',\n })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={disableFocusLock}\n autoFocus={false}\n className={this.cx({ [this.styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !noClose && (\n <ZIndex\n priority={ModalZIndexPriority.Cross}\n className={this.cx({\n [this.styles.closeWrapper(this.theme)]: true,\n [this.styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={this.cx({\n [this.styles.mobileCloseWithoutHeader(this.theme)]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>{children}</ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n </div>\n )}\n </ResponsiveLayout>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({\n stackPosition: stack.indexOf(this),\n hasBackground: ModalStack.isBlocking(this, this.globalObject),\n });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n e.stopPropagation();\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = () => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader: boolean) => {\n this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter: boolean) => {\n this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel: boolean) => {\n this.setState({ hasPanel });\n };\n}\n"]}
|
|
@@ -27,6 +27,8 @@ export interface RadioProps<T> extends Pick<AriaAttributes, 'aria-label'>, Commo
|
|
|
27
27
|
onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
|
|
28
28
|
/** Значение. */
|
|
29
29
|
value: T;
|
|
30
|
+
/** Задаёт второстепенный пояснительный текст под основным текстом радиокнопки. */
|
|
31
|
+
comment?: React.ReactNode;
|
|
30
32
|
}> {
|
|
31
33
|
}
|
|
32
34
|
export interface RadioState {
|
|
@@ -76,6 +78,8 @@ export declare class Radio<T> extends React.Component<RadioProps<T>, RadioState>
|
|
|
76
78
|
renderMain: (props: CommonWrapperRestProps<RadioProps<T>>) => React.JSX.Element;
|
|
77
79
|
private _isInRadioGroup;
|
|
78
80
|
private renderCaption;
|
|
81
|
+
private getSubcaptionSizeClassName;
|
|
82
|
+
private renderComment;
|
|
79
83
|
private handleChange;
|
|
80
84
|
private handleMouseOver;
|
|
81
85
|
private handleMouseEnter;
|
|
@@ -120,7 +120,9 @@ var Radio = /** @class */ (function (_super) {
|
|
|
120
120
|
React.createElement("input", __assign({}, inputProps))),
|
|
121
121
|
React.createElement("span", __assign({}, radioProps),
|
|
122
122
|
React.createElement("span", { className: _this.styles.placeholder() })),
|
|
123
|
-
_this.props.children && _this.
|
|
123
|
+
_this.props.children && (React.createElement("div", { className: _this.styles.captionWrapper(_this.theme) },
|
|
124
|
+
_this.renderCaption(),
|
|
125
|
+
_this.props.comment && _this.renderComment()))));
|
|
124
126
|
};
|
|
125
127
|
_this._isInRadioGroup = function () { return Boolean(_this.context.name); };
|
|
126
128
|
_this.handleChange = function (e) {
|
|
@@ -234,6 +236,23 @@ var Radio = /** @class */ (function (_super) {
|
|
|
234
236
|
_a));
|
|
235
237
|
return React.createElement("div", { className: captionClassNames }, this.props.children);
|
|
236
238
|
};
|
|
239
|
+
Radio.prototype.getSubcaptionSizeClassName = function () {
|
|
240
|
+
switch (this.size) {
|
|
241
|
+
case 'large':
|
|
242
|
+
return this.styles.subcaptionLarge(this.theme);
|
|
243
|
+
case 'medium':
|
|
244
|
+
return this.styles.subcaptionMedium(this.theme);
|
|
245
|
+
case 'small':
|
|
246
|
+
default:
|
|
247
|
+
return this.styles.subcaptionSmall(this.theme);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
Radio.prototype.renderComment = function () {
|
|
251
|
+
var _a;
|
|
252
|
+
return (React.createElement("div", { className: this.cx(this.styles.subcaption(this.theme), this.getSubcaptionSizeClassName(), (_a = {},
|
|
253
|
+
_a[this.styles.subcaptionDisabled(this.theme)] = !!(this.props.disabled || this.context.disabled),
|
|
254
|
+
_a)) }, this.props.comment));
|
|
255
|
+
};
|
|
237
256
|
var Radio_1;
|
|
238
257
|
Radio.__KONTUR_REACT_UI__ = 'Radio';
|
|
239
258
|
Radio.displayName = 'Radio';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["Radio.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA6C7D,MAAM,CAAC,IAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,aAAa;CACX,CAAC;AAIX;;;GAGG;AAIH;IAA8B,yBAA0C;IAAxE;;QAIS,WAAK,GAAG;YACb,iBAAiB,EAAE,KAAK;SACzB,CAAC;QAMM,cAAQ,GAAG,iBAAiB,CAAC,OAAK,CAAC,YAAY,CAAC,CAAC;QAGlD,aAAO,GAA6B,KAAI,CAAC,OAAO,CAAC;QAGhD,aAAO,GAAG,KAAK,CAAC,SAAS,EAAoB,CAAC;QAkF/C,gBAAU,GAAG,UAAC,KAA4C;;YAE7D,IAAA,KAUE,KAAK,SAVyB,EAAhC,QAAQ,mBAAG,KAAI,CAAC,OAAO,CAAC,QAAQ,KAAA,EAChC,KASE,KAAK,QATuB,EAA9B,OAAO,mBAAG,KAAI,CAAC,OAAO,CAAC,OAAO,KAAA,EAC9B,KAQE,KAAK,MARmB,EAA1B,KAAK,mBAAG,KAAI,CAAC,OAAO,CAAC,KAAK,KAAA,EAC1B,IAAI,GAOF,KAAK,KAPH,EACJ,OAAO,GAML,KAAK,QANA,EACP,WAAW,GAKT,KAAK,YALI,EACX,YAAY,GAIV,KAAK,aAJK,EACZ,YAAY,GAGV,KAAK,aAHK,EACZ,aAAa,GAEX,KAAK,cAFM,EACV,IAAI,UACL,KAAK,EAXH,mHAWL,CADQ,CACC;YAEV,IAAM,UAAU,GAAG;gBACjB,SAAS,EAAE,KAAI,CAAC,EAAE;oBAChB,GAAC,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI;oBACtC,GAAC,KAAI,CAAC,sBAAsB,EAAE,IAAG,IAAI;oBACrC,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,KAAK,CAAC,OAAO;oBACrD,GAAC,KAAI,CAAC,uBAAuB,EAAE,IAAG,KAAI,CAAC,KAAK,CAAC,OAAO;oBACpD,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,KAAI,CAAC,KAAK,CAAC,iBAAiB;oBACxF,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAK;oBACtC,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO;oBAC1C,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,QAAQ;oBAC5C,GAAC,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ;oBACzE,GAAC,aAAa,CAAC,MAAM,IAAG,IAAI;wBAC5B;aACH,CAAC;YAEF,IAAI,KAAkC,CAAC;YACvC,IAAI,OAAO,KAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACjF,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,CAAC;YAED,IAAM,UAAU,yBACX,IAAI,KACP,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAC9B,QAAQ,UAAA,EACR,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,KAAK,OAAA,EACL,GAAG,EAAE,KAAI,CAAC,OAAO,EACjB,QAAQ,EAAE,KAAI,CAAC,YAAY,EAC3B,OAAO,EAAE,KAAI,CAAC,WAAW,EACzB,MAAM,EAAE,KAAI,CAAC,UAAU,GACxB,CAAC;YAEF,IAAM,UAAU,GAAG;gBACjB,SAAS,EAAE,KAAI,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,oBAAoB,EAAE;oBAC1E,GAAC,KAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAI,CAAC,KAAK,CAAC,OAAO;wBACzD;gBACF,WAAW,EAAE,KAAI,CAAC,eAAe;gBACjC,YAAY,EAAE,KAAI,CAAC,gBAAgB;gBACnC,YAAY,EAAE,KAAI,CAAC,gBAAgB;gBACnC,OAAO,EAAE,8BAA8B,CAAC,KAAI,CAAC,OAAO,CAAC;aACtD,CAAC;YAEF,IAAI,KAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3B,IAAM,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7D,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC7B,UAAU,CAAC,IAAI,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpC,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBAC3C,UAAU,CAAC,SAAS,GAAG,KAAI,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,oBAAoB,EAAE;oBACtF,GAAC,KAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO;wBAC9C,CAAC;gBACH,UAAU,CAAC,SAAS,GAAG,KAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS;oBACjD,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO;oBAC1C,GAAC,KAAI,CAAC,uBAAuB,EAAE,IAAG,OAAO;oBACzC,GAAC,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO,IAAI,QAAQ;wBAC9D,CAAC;YACL,CAAC;YAED,OAAO,CACL,oDAAiB,aAAa,CAAC,IAAI,IAAM,UAAU;gBACjD,oBAAC,mBAAmB,IAAC,kBAAkB,EAAE,KAAI,CAAC,UAAU;oBACtD,0CAAW,UAAU,EAAI,CACL;gBACtB,yCAAU,UAAU;oBAClB,8BAAM,SAAS,EAAE,KAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAI,CACzC;gBACN,KAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAI,CAAC,aAAa,EAAE,CACtC,CACT,CAAC;QACJ,CAAC,CAAC;QAEM,qBAAe,GAAG,cAAM,OAAA,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAA1B,CAA0B,CAAC;QAWnD,kBAAY,GAA+C,UAAC,CAAC;;YACnE,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,aAAa,mDAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE7C,IAAI,KAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3B,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;YAED,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,QAAQ,mDAAG,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEM,qBAAe,GAA8C,UAAC,CAAC;;YACrE,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,WAAW,mDAAG,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEM,sBAAgB,GAA8C,UAAC,CAAC;;YACtE,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEM,sBAAgB,GAA8C,UAAC,CAAC;;YACtE,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,YAAY,mDAAG,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,CAAwB;;YAC7C,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC3B,iDAAiD;gBACjD,6CAA6C;gBAC7C,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,qBAAqB,mDAAG;oBACxC,IAAI,KAAI,CAAC,WAAW,CAAC,cAAc,IAAI,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;wBACrE,KAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACvB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,gBAAU,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAA3C,CAA2C,CAAC;QAE/D,gBAAU,GAAG,UAAC,CAAqC;;YACzD,KAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,MAAM,mDAAG,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC;;IACJ,CAAC;cAhPY,KAAK;IA4BR,oCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,sCAAsB,GAA9B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,uCAAuB,GAA/B;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEM,iCAAiB,GAAxB;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAEM,sBAAM,GAAb;QAAA,iBAeC;QAdC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,KAAI,CAAC,WAAW,IAAM,KAAI,CAAC,QAAQ,EAAE,GAC9D,KAAI,CAAC,UAAU,CACF,CACjB,CAAC;QACJ,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,qBAAK,GAAZ;;QACE,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;QACrC,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,oBAAI,GAAX;;QACE,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAyFO,6BAAa,GAArB;;QACE,IAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE;YAC/B,GAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;YACvC,GAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC3F,CAAC;QAEH,OAAO,6BAAK,SAAS,EAAE,iBAAiB,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAO,CAAC;IACxE,CAAC;;IAjMa,yBAAmB,GAAG,OAAO,AAAV,CAAW;IAC9B,iBAAW,GAAG,OAAO,AAAV,CAAW;IAMtB,kBAAY,GAAiB;QACzC,OAAO,EAAE,KAAK;KACf,AAFyB,CAExB;IAIY,iBAAW,GAAG,iBAAiB,AAApB,CAAqB;IAdnC,KAAK;QAHjB,qBAAqB;QACrB,QAAQ;QACR,QAAQ;OACI,KAAK,CAgPjB;IAAD,YAAC;CAAA,AAhPD,CAA8B,KAAK,CAAC,SAAS,GAgP5C;SAhPY,KAAK","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { RadioGroupContext } from '../RadioGroup/RadioGroupContext.js';\nimport type { RadioGroupContextType } from '../RadioGroup/RadioGroupContext.js';\nimport { getStyles, globalClasses } from './Radio.styles.js';\n\nexport interface RadioProps<T>\n extends\n Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Переводит контрол в состояние ошибки. */\n error?: boolean;\n\n /** Переводит контрол в состояние предупреждения. */\n warning?: boolean;\n\n /** Размер радиокнопки. */\n size?: SizeProp;\n\n /** Задаёт состояние фокуса. */\n focused?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange?: (value: T) => void;\n\n /** HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseover`.\n * @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Значение. */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused'>>;\n\n/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.\n *\n * Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n private size!: SizeProp;\n\n private inputEl = React.createRef<HTMLInputElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private keyListener!: KeyListener;\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.circleLarge(this.theme);\n case 'medium':\n return this.styles.circleMedium(this.theme);\n case 'small':\n default:\n return this.styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.checkedLarge(this.theme);\n case 'medium':\n return this.styles.checkedMedium(this.theme);\n case 'small':\n default:\n return this.styles.checkedSmall(this.theme);\n }\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n this.keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /** Программно снимает фокус с радиокнопки.\n * @public\n */\n public blur(): void {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>): React.JSX.Element => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: this.cx({\n [this.styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [this.styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [this.styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [this.styles.error(this.theme)]: error,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: this.styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: this.props.checked,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: checked,\n });\n radioProps.className = this.cx(radioProps.className, {\n [this.styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [this.styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={this.styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = this.cx({\n [this.styles.caption(this.theme)]: true,\n [this.styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isArrowPressed || this.keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["Radio.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { RadioGroupContext } from '../RadioGroup/RadioGroupContext.js';\nimport type { RadioGroupContextType } from '../RadioGroup/RadioGroupContext.js';\nimport { getStyles, globalClasses } from './Radio.styles.js';\n\nexport interface RadioProps<T>\n extends\n Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Переводит контрол в состояние ошибки. */\n error?: boolean;\n\n /** Переводит контрол в состояние предупреждения. */\n warning?: boolean;\n\n /** Размер радиокнопки. */\n size?: SizeProp;\n\n /** Задаёт состояние фокуса. */\n focused?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange?: (value: T) => void;\n\n /** HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseover`.\n * @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Значение. */\n value: T;\n\n /** Задаёт второстепенный пояснительный текст под основным текстом радиокнопки. */\n comment?: React.ReactNode;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused'>>;\n\n/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.\n *\n * Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n private size!: SizeProp;\n\n private inputEl = React.createRef<HTMLInputElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private keyListener!: KeyListener;\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.circleLarge(this.theme);\n case 'medium':\n return this.styles.circleMedium(this.theme);\n case 'small':\n default:\n return this.styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.checkedLarge(this.theme);\n case 'medium':\n return this.styles.checkedMedium(this.theme);\n case 'small':\n default:\n return this.styles.checkedSmall(this.theme);\n }\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n this.keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /** Программно снимает фокус с радиокнопки.\n * @public\n */\n public blur(): void {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>): React.JSX.Element => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: this.cx({\n [this.styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [this.styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [this.styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [this.styles.error(this.theme)]: error,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: this.styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: this.props.checked,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: checked,\n });\n radioProps.className = this.cx(radioProps.className, {\n [this.styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [this.styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={this.styles.placeholder()} />\n </span>\n {this.props.children && (\n <div className={this.styles.captionWrapper(this.theme)}>\n {this.renderCaption()}\n {this.props.comment && this.renderComment()}\n </div>\n )}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = this.cx({\n [this.styles.caption(this.theme)]: true,\n [this.styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private getSubcaptionSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.subcaptionLarge(this.theme);\n case 'medium':\n return this.styles.subcaptionMedium(this.theme);\n case 'small':\n default:\n return this.styles.subcaptionSmall(this.theme);\n }\n }\n\n private renderComment() {\n return (\n <div\n className={this.cx(this.styles.subcaption(this.theme), this.getSubcaptionSizeClassName(), {\n [this.styles.subcaptionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n })}\n >\n {this.props.comment}\n </div>\n );\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isArrowPressed || this.keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
|
|
@@ -3,3 +3,5 @@ export declare const circleSizeMixin: (labGrotesqueBaselineCompensation: string,
|
|
|
3
3
|
export declare const radioCheckedMixin: (bulletSize: string) => string;
|
|
4
4
|
export declare const afterOutlineMixin: (radioOutlineWidth: string) => string;
|
|
5
5
|
export declare const outlineColorMixin: (shadow: string, borderColor: string) => string;
|
|
6
|
+
export declare const subcaptionMixin: (fontSize: string, lineHeight: string) => string;
|
|
7
|
+
export declare const disabledTextColorMixin: (textColor: string) => string;
|