@skbkontur/react-ui 6.0.7-eab55.0 → 6.0.8
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 +26 -0
- package/components/Autocomplete/Autocomplete.js +4 -15
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +14 -14
- package/components/Calendar/Calendar.js +2 -2
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarDay.d.ts +2 -2
- package/components/Calendar/CalendarDay.js +1 -4
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +0 -1
- package/components/Calendar/DayCellView.styles.js +3 -6
- package/components/Calendar/DayCellView.styles.js.map +1 -1
- package/components/Center/Center.d.ts +3 -3
- package/components/Center/Center.js +2 -2
- package/components/Center/Center.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +11 -14
- package/components/Checkbox/Checkbox.js +3 -6
- package/components/Checkbox/Checkbox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +3 -3
- package/components/ComboBox/ComboBox.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +15 -15
- package/components/DateInput/DateInput.js +1 -1
- package/components/DateInput/DateInput.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +14 -16
- package/components/DatePicker/DatePicker.js +4 -5
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/MobilePicker.js +1 -1
- package/components/DatePicker/MobilePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +4 -3
- package/components/DateRangePicker/DateRangePicker.js +6 -4
- package/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePickerInput.js +9 -6
- package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +8 -15
- package/components/Dropdown/Dropdown.js +1 -8
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +2 -1
- package/components/DropdownMenu/DropdownMenu.js +2 -1
- package/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +4 -6
- package/components/FileUploader/FileUploader.js +1 -3
- package/components/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploaderFile.d.ts +3 -3
- package/components/FileUploader/FileUploaderFile.js +1 -1
- package/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/components/Hint/Hint.js +10 -3
- package/components/Hint/Hint.js.map +1 -1
- package/components/Input/Input.d.ts +2 -2
- package/components/Input/Input.js.map +1 -1
- package/components/Loader/Loader.d.ts +4 -12
- package/components/Loader/Loader.js +7 -18
- package/components/Loader/Loader.js.map +1 -1
- package/components/MenuFooter/MenuFooter.d.ts +1 -1
- package/components/MenuFooter/MenuFooter.js +1 -1
- package/components/MenuFooter/MenuFooter.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +2 -2
- package/components/MenuHeader/MenuHeader.js +1 -1
- package/components/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -1
- package/components/MenuItem/MenuItem.js +16 -24
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +0 -3
- package/components/MenuItem/MenuItem.styles.js +16 -25
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
- package/components/MenuSeparator/MenuSeparator.js +1 -1
- package/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +1 -1
- package/components/MiniModal/MiniModal.js +1 -1
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/MiniModal/MiniModalBody.d.ts +1 -1
- package/components/MiniModal/MiniModalBody.js +1 -1
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.d.ts +1 -1
- package/components/MiniModal/MiniModalFooter.js +1 -1
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.d.ts +1 -1
- package/components/MiniModal/MiniModalHeader.js +1 -1
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/Paging/Paging.d.ts +2 -2
- package/components/Paging/Paging.js.map +1 -1
- package/components/Radio/Radio.d.ts +7 -7
- package/components/Radio/Radio.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/components/RadioGroup/RadioGroup.js.map +1 -1
- package/components/Select/Select.d.ts +4 -4
- package/components/Select/Select.js +1 -11
- package/components/Select/Select.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +7 -10
- package/components/SingleToast/SingleToast.js +7 -10
- package/components/SingleToast/SingleToast.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +33 -23
- package/components/Spinner/Spinner.js +19 -23
- package/components/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.styles.d.ts +3 -0
- package/components/Spinner/Spinner.styles.js +15 -6
- package/components/Spinner/Spinner.styles.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +0 -4
- package/components/Sticky/Sticky.js +0 -4
- package/components/Sticky/Sticky.js.map +1 -1
- package/components/Switcher/Switcher.d.ts +8 -10
- package/components/Switcher/Switcher.js +1 -3
- package/components/Switcher/Switcher.js.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +0 -1
- package/components/Textarea/Textarea.styles.js +4 -7
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter.d.ts +0 -2
- package/components/Textarea/TextareaCounter.js +4 -22
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/components/Toast/Toast.d.ts +14 -13
- package/components/Toast/Toast.js +3 -3
- package/components/Toast/Toast.js.map +1 -1
- package/components/Toast/ToastView.d.ts +5 -8
- package/components/Toast/ToastView.js +8 -28
- package/components/Toast/ToastView.js.map +1 -1
- package/components/Toast/ToastView.styles.d.ts +0 -7
- package/components/Toast/ToastView.styles.js +8 -30
- package/components/Toast/ToastView.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +4 -4
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.js +0 -5
- package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.js +2 -13
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/Menu/Menu.js +0 -3
- package/internal/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.styles.d.ts +0 -1
- package/internal/Menu/Menu.styles.js +10 -13
- package/internal/Menu/Menu.styles.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.js +1 -17
- package/internal/MenuMessage/MenuMessage.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.styles.d.ts +0 -3
- package/internal/MenuMessage/MenuMessage.styles.js +4 -13
- package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +0 -8
- package/internal/MobilePopup/MobilePopup.js +11 -34
- package/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.styles.d.ts +0 -7
- package/internal/MobilePopup/MobilePopup.styles.js +10 -34
- package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +1 -8
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +1 -18
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +0 -3
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +4 -14
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +0 -4
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +11 -48
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +0 -6
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +8 -28
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
- package/internal/Popup/Popup.d.ts +4 -6
- package/internal/Popup/Popup.js +13 -38
- package/internal/Popup/Popup.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +4 -0
- package/internal/Popup/PopupHelper.js +31 -0
- package/internal/Popup/PopupHelper.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +2 -1
- package/internal/PopupMenu/PopupMenu.js +21 -18
- package/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
- package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
- package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
- package/internal/icons2022/LoadingIcon.js +1 -1
- package/internal/icons2022/LoadingIcon.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +4 -51
- package/internal/themes/BasicTheme.js +6 -173
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/getMenuPositions.js +11 -11
- package/lib/getMenuPositions.js.map +1 -1
- package/lib/theming/themes/DarkTheme.d.ts +0 -1
- package/lib/theming/themes/DarkTheme.js +1 -3
- package/lib/theming/themes/DarkTheme.js.map +1 -1
- package/lib/theming/themes/LightTheme.d.ts +0 -1
- package/lib/theming/themes/LightTheme.js +1 -3
- package/lib/theming/themes/LightTheme.js.map +1 -1
- package/package.json +1 -5
- package/components/TimePicker/TimeClockIcon.d.ts +0 -3
- package/components/TimePicker/TimeClockIcon.js +0 -11
- package/components/TimePicker/TimeClockIcon.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
- package/components/TimePicker/TimeFragmentsView.js +0 -72
- package/components/TimePicker/TimeFragmentsView.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
- package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
- package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
- package/components/TimePicker/TimeInput.d.ts +0 -21
- package/components/TimePicker/TimeInput.js +0 -98
- package/components/TimePicker/TimeInput.js.map +0 -1
- package/components/TimePicker/TimePicker.d.ts +0 -59
- package/components/TimePicker/TimePicker.js +0 -478
- package/components/TimePicker/TimePicker.js.map +0 -1
- package/components/TimePicker/TimePicker.styles.d.ts +0 -11
- package/components/TimePicker/TimePicker.styles.js +0 -36
- package/components/TimePicker/TimePicker.styles.js.map +0 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -31
- package/components/TimePicker/TimePickerMobilePopup.js +0 -21
- package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
- package/components/TimePicker/TimePickerPopup.d.ts +0 -19
- package/components/TimePicker/TimePickerPopup.js +0 -18
- package/components/TimePicker/TimePickerPopup.js.map +0 -1
- package/components/TimePicker/TimePickerSlots.d.ts +0 -16
- package/components/TimePicker/TimePickerSlots.js +0 -67
- package/components/TimePicker/TimePickerSlots.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -18
- package/components/TimePicker/helpers/TimePicker.constants.js +0 -41
- package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -6
- package/components/TimePicker/helpers/TimePicker.editing.js +0 -86
- package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -7
- package/components/TimePicker/helpers/TimePicker.layout.js +0 -17
- package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -7
- package/components/TimePicker/helpers/TimePicker.selection.js +0 -51
- package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.shared.js +0 -50
- package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -8
- package/components/TimePicker/helpers/TimePicker.value.js +0 -61
- package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +0 -1
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +0 -21
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
- package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -15
- package/components/TimePicker/hooks/useTimePickerSelection.js +0 -43
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerValue.js +0 -48
- package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
- package/components/TimePicker/index.d.ts +0 -2
- package/components/TimePicker/index.js +0 -2
- package/components/TimePicker/index.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
- package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
- package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
- package/internal/NativeTimeInput/index.d.ts +0 -1
- package/internal/NativeTimeInput/index.js +0 -2
- package/internal/NativeTimeInput/index.js.map +0 -1
- package/internal/NativeTimeInput/utils.d.ts +0 -7
- package/internal/NativeTimeInput/utils.js +0 -28
- package/internal/NativeTimeInput/utils.js.map +0 -1
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +0 -2
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +0 -21
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +0 -1
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +0 -2
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +0 -21
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +0 -1
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +0 -2
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +0 -21
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
- package/internal/themes/DarkTheme6_1.d.ts +0 -1
- package/internal/themes/DarkTheme6_1.js +0 -164
- package/internal/themes/DarkTheme6_1.js.map +0 -1
- package/internal/themes/LightTheme6_1.d.ts +0 -1
- package/internal/themes/LightTheme6_1.js +0 -164
- package/internal/themes/LightTheme6_1.js.map +0 -1
package/internal/Menu/Menu.js
CHANGED
|
@@ -44,7 +44,6 @@ import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
|
44
44
|
import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
|
|
45
45
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
46
46
|
import { ThemeFactory } from '../../lib/theming/ThemeFactory.js';
|
|
47
|
-
import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
|
|
48
47
|
import { isNonNullable } from '../../lib/utils.js';
|
|
49
48
|
import { CommonWrapper } from '../CommonWrapper/index.js';
|
|
50
49
|
import { getStyles } from './Menu.styles.js';
|
|
@@ -290,13 +289,11 @@ var Menu = /** @class */ (function (_super) {
|
|
|
290
289
|
bottom: "".concat(this.theme.scrollContainerScrollBarOffsetY),
|
|
291
290
|
};
|
|
292
291
|
var isMobile = this.isMobileLayout;
|
|
293
|
-
var themeGTE6_1 = isThemeGTE(this.theme, '6.1');
|
|
294
292
|
return (React.createElement(CommonWrapper, __assign({ rootNodeRef: this.setRootNode }, this.props),
|
|
295
293
|
React.createElement("div", { "data-tid": MenuDataTids.root, className: this.cx(getAlignRightClass(this.props, this.cx, this.styles), (_a = {},
|
|
296
294
|
_a[this.styles.root(this.theme)] = true,
|
|
297
295
|
_a[this.styles.hasMargin(this.theme)] = hasMargin,
|
|
298
296
|
_a[this.styles.mobileRoot(this.theme)] = isMobile,
|
|
299
|
-
_a[this.styles.mobileRoot_6_1()] = themeGTE6_1 && isMobile,
|
|
300
297
|
_a[this.styles.shadow(this.theme)] = !isMobile,
|
|
301
298
|
_a)), style: this.getStyle(this.props), id: this.props.id, onKeyDown: this.handleKeyDown, tabIndex: 0 },
|
|
302
299
|
this.props.header && this.renderHeader(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../internal/Menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { MenuItem } from '../../components/MenuItem/index.js';\nimport { MenuItemDataTids } from '../../components/MenuItem/index.js';\nimport { MenuSeparator } from '../../components/MenuSeparator/index.js';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { ScrollContainer } from '../../components/ScrollContainer/index.js';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getStyles } from './Menu.styles.js';\nimport { MenuContext } from './MenuContext.js';\nimport { MenuNavigation } from './MenuNavigation.js';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: 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 scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount(): void {\n this.unmounted = true;\n }\n\n public componentDidMount(): void {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps): void {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus(): void {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\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 /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset(): void {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.mobileRoot_6_1()]: themeGTE6_1 && isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => {\n this.header = el;\n }}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => {\n this.footer = el;\n }}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../internal/Menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { MenuItem } from '../../components/MenuItem/index.js';\nimport { MenuItemDataTids } from '../../components/MenuItem/index.js';\nimport { MenuSeparator } from '../../components/MenuSeparator/index.js';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { ScrollContainer } from '../../components/ScrollContainer/index.js';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getStyles } from './Menu.styles.js';\nimport { MenuContext } from './MenuContext.js';\nimport { MenuNavigation } from './MenuNavigation.js';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: 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 scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount(): void {\n this.unmounted = true;\n }\n\n public componentDidMount(): void {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps): void {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus(): void {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\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 /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset(): void {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => {\n this.header = el;\n }}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => {\n this.footer = el;\n }}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"]}
|
|
@@ -3,7 +3,6 @@ export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGet
|
|
|
3
3
|
root(t: Theme): string;
|
|
4
4
|
hasMargin(t: Theme): string;
|
|
5
5
|
mobileRoot(t: Theme): string;
|
|
6
|
-
mobileRoot_6_1(): string;
|
|
7
6
|
alignRight(): string;
|
|
8
7
|
scrollContainer(t: Theme): string;
|
|
9
8
|
scrollContainerMobile(t: Theme): string;
|
|
@@ -15,37 +15,34 @@ export var getStyles = memoizeGetStyles(function (_a) {
|
|
|
15
15
|
mobileRoot: function (t) {
|
|
16
16
|
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n border-radius: 0;\n margin: 0;\n padding: 0 ", ";\n "], ["\n border-radius: 0;\n margin: 0;\n padding: 0 ", ";\n "])), t.mobileMenuPaddingX);
|
|
17
17
|
},
|
|
18
|
-
mobileRoot_6_1: function () {
|
|
19
|
-
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n padding: 0;\n "], ["\n padding: 0;\n "])));
|
|
20
|
-
},
|
|
21
18
|
alignRight: function () {
|
|
22
|
-
return css(
|
|
19
|
+
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n flex: 1 1 100%;\n "], ["\n flex: 1 1 100%;\n "])));
|
|
23
20
|
},
|
|
24
21
|
scrollContainer: function (t) {
|
|
25
|
-
return css(
|
|
22
|
+
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n padding: ", " 0;\n "], ["\n padding: ", " 0;\n "])), t.menuScrollContainerContentWrapperPaddingY);
|
|
26
23
|
},
|
|
27
24
|
scrollContainerMobile: function (t) {
|
|
28
|
-
return css(
|
|
25
|
+
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding: ", " 0;\n "], ["\n padding: ", " 0;\n "])), t.mobileMenuScrollContainerContentWrapperPaddingY);
|
|
29
26
|
},
|
|
30
27
|
shadow: function (t) {
|
|
31
|
-
return css(
|
|
28
|
+
return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n border: ", ";\n box-shadow: ", ";\n "], ["\n border: ", ";\n box-shadow: ", ";\n "])), t.menuBorder, t.menuShadow);
|
|
32
29
|
},
|
|
33
30
|
wrapper: function () {
|
|
34
|
-
return css(
|
|
31
|
+
return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n "], ["\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n "])));
|
|
35
32
|
},
|
|
36
33
|
headerWrapper: function () {
|
|
37
|
-
return css(
|
|
34
|
+
return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n top: -5px;\n "], ["\n top: -5px;\n "])));
|
|
38
35
|
},
|
|
39
36
|
footerWrapper: function () {
|
|
40
|
-
return css(
|
|
37
|
+
return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n bottom: -5px;\n "], ["\n bottom: -5px;\n "])));
|
|
41
38
|
},
|
|
42
39
|
contentWrapper: function () {
|
|
43
|
-
return css(
|
|
40
|
+
return css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n padding: 6px 18px 7px 8px;\n "], ["\n padding: 6px 18px 7px 8px;\n "])));
|
|
44
41
|
},
|
|
45
42
|
menuSeparatorWrapper: function (t) {
|
|
46
|
-
return css(
|
|
43
|
+
return css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n height: ", ";\n "], ["\n height: ", ";\n "])), t.menuSeparatorBorderWidth);
|
|
47
44
|
},
|
|
48
45
|
});
|
|
49
46
|
});
|
|
50
|
-
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
|
|
47
|
+
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;
|
|
51
48
|
//# sourceMappingURL=Menu.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.styles.js","sourceRoot":"","sources":["../../../internal/Menu/Menu.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,0MAAA,sBACM,EAAe,0BACZ,EAAkB,uBACrB,EAAe,0CAElB,EAAc,GAAI,EAAc,SAC5C,KALe,CAAC,CAAC,aAAa,EACZ,CAAC,CAAC,gBAAgB,EACrB,CAAC,CAAC,aAAa,EAElB,CAAC,CAAC,YAAY,EAAI,CAAC,CAAC,YAAY,EAC3C;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,kGAAA,kBACE,EAAa,WACxB,KADW,CAAC,CAAC,WAAW,EACvB;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,8IAAA,gEAGK,EAAoB,SAClC,KADc,CAAC,CAAC,kBAAkB,EACjC;QACJ,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"Menu.styles.js","sourceRoot":"","sources":["../../../internal/Menu/Menu.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,0MAAA,sBACM,EAAe,0BACZ,EAAkB,uBACrB,EAAe,0CAElB,EAAc,GAAI,EAAc,SAC5C,KALe,CAAC,CAAC,aAAa,EACZ,CAAC,CAAC,gBAAgB,EACrB,CAAC,CAAC,aAAa,EAElB,CAAC,CAAC,YAAY,EAAI,CAAC,CAAC,YAAY,EAC3C;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,kGAAA,kBACE,EAAa,WACxB,KADW,CAAC,CAAC,WAAW,EACvB;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,8IAAA,gEAGK,EAAoB,SAClC,KADc,CAAC,CAAC,kBAAkB,EACjC;QACJ,CAAC;QAED,UAAU;YACR,OAAO,GAAG,kGAAA,+BAET,KAAC;QACJ,CAAC;QAED,eAAe,YAAC,CAAQ;YACtB,OAAO,GAAG,mGAAA,mBACG,EAA2C,WACvD,KADY,CAAC,CAAC,yCAAyC,EACtD;QACJ,CAAC;QAED,qBAAqB,YAAC,CAAQ;YAC5B,OAAO,GAAG,mGAAA,mBACG,EAAiD,WAC7D,KADY,CAAC,CAAC,+CAA+C,EAC5D;QACJ,CAAC;QAED,MAAM,YAAC,CAAQ;YACb,OAAO,GAAG,yHAAA,kBACE,EAAY,uBACR,EAAY,SAC3B,KAFW,CAAC,CAAC,UAAU,EACR,CAAC,CAAC,UAAU,EAC1B;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,+NAAA,4JAOT,KAAC;QACJ,CAAC;QAED,aAAa;YACX,OAAO,GAAG,6FAAA,0BAET,KAAC;QACJ,CAAC;QAED,aAAa;YACX,OAAO,GAAG,kGAAA,6BAET,KAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,+GAAA,0CAET,KAAC;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,kGAAA,kBACE,EAA0B,SACrC,KADW,CAAC,CAAC,wBAAwB,EACpC;QACJ,CAAC;KACF,CAAC;AApF8D,CAoF9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n background: ${t.menuBgDefault};\n border-radius: ${t.menuBorderRadius};\n box-sizing: ${t.menuBoxSizing};\n outline: none;\n padding: ${t.menuPaddingY} ${t.menuPaddingX};\n `;\n },\n\n hasMargin(t: Theme) {\n return css`\n margin: ${t.menuOffsetY} 0;\n `;\n },\n\n mobileRoot(t: Theme) {\n return css`\n border-radius: 0;\n margin: 0;\n padding: 0 ${t.mobileMenuPaddingX};\n `;\n },\n\n alignRight() {\n return css`\n flex: 1 1 100%;\n `;\n },\n\n scrollContainer(t: Theme) {\n return css`\n padding: ${t.menuScrollContainerContentWrapperPaddingY} 0;\n `;\n },\n\n scrollContainerMobile(t: Theme) {\n return css`\n padding: ${t.mobileMenuScrollContainerContentWrapperPaddingY} 0;\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n\n wrapper() {\n return css`\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n `;\n },\n\n headerWrapper() {\n return css`\n top: -5px;\n `;\n },\n\n footerWrapper() {\n return css`\n bottom: -5px;\n `;\n },\n\n contentWrapper() {\n return css`\n padding: 6px 18px 7px 8px;\n `;\n },\n\n menuSeparatorWrapper(t: Theme) {\n return css`\n height: ${t.menuSeparatorBorderWidth};\n `;\n },\n}));\n"]}
|
|
@@ -25,7 +25,6 @@ import { useResponsiveLayout } from '../../components/ResponsiveLayout/index.js'
|
|
|
25
25
|
import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
|
|
26
26
|
import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
|
|
27
27
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
28
|
-
import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
|
|
29
28
|
import { getStyles } from './MenuMessage.styles.js';
|
|
30
29
|
export var MenuMessageDataTids = {
|
|
31
30
|
root: 'MenuMessage__root',
|
|
@@ -37,7 +36,6 @@ export var MenuMessage = forwardRefAndName('MenuMessage', function (_a, ref) {
|
|
|
37
36
|
var cx = useEmotion().cx;
|
|
38
37
|
var styles = useStyles(getStyles);
|
|
39
38
|
var theme = useContext(ThemeContext);
|
|
40
|
-
var themeGTE6_1 = isThemeGTE(theme, '6.1');
|
|
41
39
|
var getMenuMessageSizeClassName = function () {
|
|
42
40
|
switch (size) {
|
|
43
41
|
case 'large':
|
|
@@ -49,23 +47,9 @@ export var MenuMessage = forwardRefAndName('MenuMessage', function (_a, ref) {
|
|
|
49
47
|
return cx(styles.rootSmall(theme));
|
|
50
48
|
}
|
|
51
49
|
};
|
|
52
|
-
var getMenuMessageSizeMobileClassName = function () {
|
|
53
|
-
if (!themeGTE6_1) {
|
|
54
|
-
return cx(styles.rootMobile(theme));
|
|
55
|
-
}
|
|
56
|
-
switch (size) {
|
|
57
|
-
case 'large':
|
|
58
|
-
return cx(styles.rootMobileLarge(theme));
|
|
59
|
-
case 'medium':
|
|
60
|
-
return cx(styles.rootMobileMedium(theme));
|
|
61
|
-
case 'small':
|
|
62
|
-
default:
|
|
63
|
-
return cx(styles.rootMobileSmall(theme));
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
50
|
return (React.createElement(Tag, __assign({ ref: ref, "data-tid": MenuMessageDataTids.root, className: cx(getMenuMessageSizeClassName(), (_b = {},
|
|
67
51
|
_b[styles.root(theme)] = true,
|
|
68
|
-
_b[
|
|
52
|
+
_b[styles.rootMobile(theme)] = isMobile,
|
|
69
53
|
_b), className) }, rest), children));
|
|
70
54
|
});
|
|
71
55
|
//# sourceMappingURL=MenuMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuMessage.js","sourceRoot":"","sources":["../../../internal/MenuMessage/MenuMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuMessage.js","sourceRoot":"","sources":["../../../internal/MenuMessage/MenuMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAQpD,MAAM,CAAC,IAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,mBAAmB;CACjB,CAAC;AAEX,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAC1C,aAAa,EACb,UAAC,EAA+D,EAAE,GAAG;;IAAlE,IAAA,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,YAAc,EAAd,IAAI,mBAAG,OAAO,KAAA,EAAE,UAAa,EAAT,GAAG,mBAAG,GAAG,KAAA,EAAK,IAAI,cAA7D,uCAA+D,CAAF;IACpD,IAAA,QAAQ,GAAK,mBAAmB,EAAE,SAA1B,CAA2B;IAEnC,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEvC,IAAM,2BAA2B,GAAG;QAClC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,KAAK,QAAQ;gBACX,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,aACF,GAAG,EAAE,GAAG,cACE,mBAAmB,CAAC,IAAI,EAClC,SAAS,EAAE,EAAE,CACX,2BAA2B,EAAE;YAE3B,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;YAC1B,GAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAG,QAAQ;iBAEtC,SAAS,CACV,IACG,IAAI,GAEP,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { useResponsiveLayout } from '../../components/ResponsiveLayout/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { getStyles } from './MenuMessage.styles.js';\n\nexport interface MenuMessageProps extends CommonProps {\n children: React.ReactNode;\n as?: React.ElementType;\n size?: SizeProp;\n}\n\nexport const MenuMessageDataTids = {\n root: 'MenuMessage__root',\n} as const;\n\nexport const MenuMessage = forwardRefAndName<HTMLOrSVGElement, MenuMessageProps>(\n 'MenuMessage',\n ({ children, className, size = 'small', as: Tag = 'p', ...rest }, ref) => {\n const { isMobile } = useResponsiveLayout();\n\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n\n const getMenuMessageSizeClassName = () => {\n switch (size) {\n case 'large':\n return cx(styles.rootLarge(theme));\n case 'medium':\n return cx(styles.rootMedium(theme));\n case 'small':\n default:\n return cx(styles.rootSmall(theme));\n }\n };\n\n return (\n <Tag\n ref={ref}\n data-tid={MenuMessageDataTids.root}\n className={cx(\n getMenuMessageSizeClassName(),\n {\n [styles.root(theme)]: true,\n [styles.rootMobile(theme)]: isMobile,\n },\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n },\n);\n"]}
|
|
@@ -2,9 +2,6 @@ import type { Theme } from '../../lib/theming/Theme.js';
|
|
|
2
2
|
export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
|
|
3
3
|
root(t: Theme): string;
|
|
4
4
|
rootMobile(t: Theme): string;
|
|
5
|
-
rootMobileLarge(t: Theme): string;
|
|
6
|
-
rootMobileMedium(t: Theme): string;
|
|
7
|
-
rootMobileSmall(t: Theme): string;
|
|
8
5
|
rootSmall(t: Theme): string;
|
|
9
6
|
rootMedium(t: Theme): string;
|
|
10
7
|
rootLarge(t: Theme): string;
|
|
@@ -17,25 +17,16 @@ export var getStyles = memoizeGetStyles(function (_a) {
|
|
|
17
17
|
rootMobile: function (t) {
|
|
18
18
|
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.menuMessageFontSizeMobile, t.menuMessageLineHeightMobile, t.menuMessagePaddingMobile);
|
|
19
19
|
},
|
|
20
|
-
rootMobileLarge: function (t) {
|
|
21
|
-
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.mobileMenuMessageFontSizeLarge, t.mobileMenuMessageLineHeightLarge, t.mobileMenuMessagePaddingLarge);
|
|
22
|
-
},
|
|
23
|
-
rootMobileMedium: function (t) {
|
|
24
|
-
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.mobileMenuMessageFontSizeMedium, t.mobileMenuMessageLineHeightMedium, t.mobileMenuMessagePaddingMedium);
|
|
25
|
-
},
|
|
26
|
-
rootMobileSmall: function (t) {
|
|
27
|
-
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.mobileMenuMessageFontSizeSmall, t.mobileMenuMessageLineHeightSmall, t.mobileMenuMessagePaddingSmall);
|
|
28
|
-
},
|
|
29
20
|
rootSmall: function (t) {
|
|
30
|
-
return css(
|
|
21
|
+
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n "])), t.menuMessageFontSizeSmall, t.menuMessageLineHeightSmall);
|
|
31
22
|
},
|
|
32
23
|
rootMedium: function (t) {
|
|
33
|
-
return css(
|
|
24
|
+
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n "])), t.menuMessageFontSizeMedium, t.menuMessageLineHeightMedium);
|
|
34
25
|
},
|
|
35
26
|
rootLarge: function (t) {
|
|
36
|
-
return css(
|
|
27
|
+
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n "])), t.menuMessageFontSizeLarge, t.menuMessageLineHeightLarge);
|
|
37
28
|
},
|
|
38
29
|
});
|
|
39
30
|
});
|
|
40
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5
|
|
31
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
41
32
|
//# sourceMappingURL=MenuMessage.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuMessage.styles.js","sourceRoot":"","sources":["../../../internal/MenuMessage/MenuMessage.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACL,IAAA,KAAyB,mBAAmB,CAAC;gBACjD,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;gBACvC,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;aACxC,CAAC,EAHM,QAAQ,cAAA,EAAE,QAAQ,cAGxB,CAAC;YAEH,OAAO,GAAG,qMAAA,qCAEG,EAAoB,oBACpB,EAAqB,GAAI,EAAQ,GAAI,EAAQ,GAAI,EAAqB,kBACxE,EAAsB,uBACjB,EAAe,SAC9B,KAJY,CAAC,CAAC,kBAAkB,EACpB,CAAC,CAAC,mBAAmB,EAAI,QAAQ,EAAI,QAAQ,EAAI,CAAC,CAAC,mBAAmB,EACxE,CAAC,CAAC,oBAAoB,EACjB,CAAC,CAAC,aAAa,EAC7B;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,mJAAA,qBACK,EAA2B,wBACzB,EAA6B,oBACjC,EAA0B,SACtC,KAHc,CAAC,CAAC,yBAAyB,EACzB,CAAC,CAAC,2BAA2B,EACjC,CAAC,CAAC,wBAAwB,EACrC;QACJ,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"MenuMessage.styles.js","sourceRoot":"","sources":["../../../internal/MenuMessage/MenuMessage.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACL,IAAA,KAAyB,mBAAmB,CAAC;gBACjD,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;gBACvC,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;aACxC,CAAC,EAHM,QAAQ,cAAA,EAAE,QAAQ,cAGxB,CAAC;YAEH,OAAO,GAAG,qMAAA,qCAEG,EAAoB,oBACpB,EAAqB,GAAI,EAAQ,GAAI,EAAQ,GAAI,EAAqB,kBACxE,EAAsB,uBACjB,EAAe,SAC9B,KAJY,CAAC,CAAC,kBAAkB,EACpB,CAAC,CAAC,mBAAmB,EAAI,QAAQ,EAAI,QAAQ,EAAI,CAAC,CAAC,mBAAmB,EACxE,CAAC,CAAC,oBAAoB,EACjB,CAAC,CAAC,aAAa,EAC7B;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,mJAAA,qBACK,EAA2B,wBACzB,EAA6B,oBACjC,EAA0B,SACtC,KAHc,CAAC,CAAC,yBAAyB,EACzB,CAAC,CAAC,2BAA2B,EACjC,CAAC,CAAC,wBAAwB,EACrC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6HAAA,qBACK,EAA0B,wBACxB,EAA4B,SAC5C,KAFc,CAAC,CAAC,wBAAwB,EACxB,CAAC,CAAC,0BAA0B,EAC3C;QACJ,CAAC;QACD,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,6HAAA,qBACK,EAA2B,wBACzB,EAA6B,SAC7C,KAFc,CAAC,CAAC,yBAAyB,EACzB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6HAAA,qBACK,EAA0B,wBACxB,EAA4B,SAC5C,KAFc,CAAC,CAAC,wBAAwB,EACxB,CAAC,CAAC,0BAA0B,EAC3C;QACJ,CAAC;KACF,CAAC;AA1C8D,CA0C9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { getMenuItemPaddings } from '../../components/MenuItem/MenuItem.styles.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemPaddingX: t.menuMessagePaddingX,\n menuItemPaddingY: t.menuMessagePaddingY,\n });\n\n return css`\n margin: 0;\n display: ${t.menuMessageDisplay};\n padding: ${t.menuMessagePaddingY} ${paddingX} ${paddingY} ${t.menuMessagePaddingX};\n color: ${t.menuMessageTextColor};\n background: ${t.menuMessageBg};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.menuMessageFontSizeMobile};\n line-height: ${t.menuMessageLineHeightMobile};\n padding: ${t.menuMessagePaddingMobile};\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n font-size: ${t.menuMessageFontSizeSmall};\n line-height: ${t.menuMessageLineHeightSmall};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n font-size: ${t.menuMessageFontSizeMedium};\n line-height: ${t.menuMessageLineHeightMedium};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n font-size: ${t.menuMessageFontSizeLarge};\n line-height: ${t.menuMessageLineHeightLarge};\n `;\n },\n}));\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { HTMLAttributes } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { TGetRootNode } from '../../lib/rootNode/index.js';
|
|
4
|
-
import type { SizeProp } from '../../lib/types/props.js';
|
|
5
4
|
interface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {
|
|
6
5
|
/**
|
|
7
6
|
* Функция, вызываемая при закрытии всплывающего окна
|
|
@@ -31,11 +30,6 @@ interface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {
|
|
|
31
30
|
* Позволяет контролировать текущее состояние всплывающего окна
|
|
32
31
|
*/
|
|
33
32
|
opened: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Позволяет отрисовать попап по центру экрана
|
|
36
|
-
*/
|
|
37
|
-
verticalAlign?: 'center' | 'bottom';
|
|
38
|
-
size?: SizeProp;
|
|
39
33
|
children?: React.ReactNode;
|
|
40
34
|
}
|
|
41
35
|
export declare const MobilePopupDataTids: {
|
|
@@ -49,7 +43,6 @@ export declare class MobilePopup extends React.Component<MobilePopupProps> {
|
|
|
49
43
|
private refForTransition;
|
|
50
44
|
static readonly defaultRootNode: null;
|
|
51
45
|
private emotion;
|
|
52
|
-
private cx;
|
|
53
46
|
private jsStyles;
|
|
54
47
|
private theme;
|
|
55
48
|
getRootNode: TGetRootNode;
|
|
@@ -63,6 +56,5 @@ export declare class MobilePopup extends React.Component<MobilePopupProps> {
|
|
|
63
56
|
*/
|
|
64
57
|
private backdropStopPropagation;
|
|
65
58
|
private backdropClick;
|
|
66
|
-
private getContentClassName_6_1;
|
|
67
59
|
}
|
|
68
60
|
export {};
|
|
@@ -24,7 +24,6 @@ import { Transition } from 'react-transition-group';
|
|
|
24
24
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
25
25
|
import { rootNode } from '../../lib/rootNode/index.js';
|
|
26
26
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
27
|
-
import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
|
|
28
27
|
import { HideBodyVerticalScroll } from '../HideBodyVerticalScroll/index.js';
|
|
29
28
|
import { RenderContainer } from '../RenderContainer/index.js';
|
|
30
29
|
import { RenderLayer } from '../RenderLayer/index.js';
|
|
@@ -59,18 +58,6 @@ var MobilePopup = /** @class */ (function (_super) {
|
|
|
59
58
|
_this.backdropStopPropagation(event);
|
|
60
59
|
_this.close();
|
|
61
60
|
};
|
|
62
|
-
_this.getContentClassName_6_1 = function () {
|
|
63
|
-
switch (_this.props.size) {
|
|
64
|
-
case 'small':
|
|
65
|
-
return _this.jsStyles.contentSmall_6_1(_this.theme);
|
|
66
|
-
case 'medium':
|
|
67
|
-
return _this.jsStyles.contentMedium_6_1(_this.theme);
|
|
68
|
-
case 'large':
|
|
69
|
-
return _this.jsStyles.contentLarge_6_1(_this.theme);
|
|
70
|
-
default:
|
|
71
|
-
return _this.jsStyles.contentSmall_6_1(_this.theme);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
61
|
return _this;
|
|
75
62
|
}
|
|
76
63
|
MobilePopup.prototype.render = function () {
|
|
@@ -82,28 +69,18 @@ var MobilePopup = /** @class */ (function (_super) {
|
|
|
82
69
|
}));
|
|
83
70
|
};
|
|
84
71
|
MobilePopup.prototype.renderMain = function () {
|
|
85
|
-
var _a;
|
|
86
|
-
var themeGTE6_1 = isThemeGTE(this.theme, '6.1');
|
|
87
|
-
var align = (_a = this.props.verticalAlign) !== null && _a !== void 0 ? _a : 'bottom';
|
|
88
72
|
var content = (React.createElement(ZIndex, { id: this.props.id, className: this.jsStyles.zIndex(), priority: 'MobilePopup' },
|
|
89
|
-
React.createElement(Transition, { in: this.props.opened, onExited: this.props.onClose, mountOnEnter: true, unmountOnExit: true, timeout: 0, nodeRef: this.refForTransition },
|
|
90
|
-
React.createElement(
|
|
91
|
-
React.createElement(
|
|
92
|
-
React.createElement("div", { "data-tid": MobilePopupDataTids.
|
|
93
|
-
React.createElement(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
React.createElement(
|
|
100
|
-
React.createElement("div", { "data-tid": MobilePopupDataTids.root, className: this.jsStyles.root(this.theme) },
|
|
101
|
-
React.createElement(MobilePopupHeader, { caption: this.props.caption }, this.props.headerChildComponent),
|
|
102
|
-
React.createElement("div", { className: this.jsStyles.content(this.theme) }, this.props.children),
|
|
103
|
-
React.createElement(MobilePopupFooter, null, this.props.footerChildComponent)),
|
|
104
|
-
React.createElement("div", { onClick: this.close, className: this.jsStyles.bottomIndent() }))),
|
|
105
|
-
React.createElement("div", { "data-tid": MobilePopupDataTids.backdrop, className: this.jsStyles.bg(), onClick: this.backdropClick, onMouseDown: this.backdropStopPropagation, onPointerDownCapture: this.backdropStopPropagation, onPointerUpCapture: this.backdropStopPropagation }),
|
|
106
|
-
React.createElement(HideBodyVerticalScroll, null))))));
|
|
73
|
+
React.createElement(Transition, { in: this.props.opened, onExited: this.props.onClose, mountOnEnter: true, unmountOnExit: true, timeout: 0, nodeRef: this.refForTransition },
|
|
74
|
+
React.createElement("div", { className: this.jsStyles.wrapper(), ref: this.refForTransition },
|
|
75
|
+
React.createElement(RenderLayer, { onClickOutside: this.close },
|
|
76
|
+
React.createElement("div", { ref: this.setRootNode, "data-tid": MobilePopupDataTids.container, className: this.jsStyles.container(this.theme) },
|
|
77
|
+
React.createElement("div", { "data-tid": MobilePopupDataTids.root, className: this.jsStyles.root(this.theme) },
|
|
78
|
+
React.createElement(MobilePopupHeader, { caption: this.props.caption }, this.props.headerChildComponent),
|
|
79
|
+
React.createElement("div", { className: this.jsStyles.content(this.theme) }, this.props.children),
|
|
80
|
+
React.createElement(MobilePopupFooter, null, this.props.footerChildComponent)),
|
|
81
|
+
React.createElement("div", { onClick: this.close, className: this.jsStyles.bottomIndent() }))),
|
|
82
|
+
React.createElement("div", { "data-tid": MobilePopupDataTids.backdrop, className: this.jsStyles.bg(), onClick: this.backdropClick, onMouseDown: this.backdropStopPropagation, onPointerDownCapture: this.backdropStopPropagation, onPointerUpCapture: this.backdropStopPropagation }),
|
|
83
|
+
React.createElement(HideBodyVerticalScroll, null)))));
|
|
107
84
|
if (this.props.withoutRenderContainer) {
|
|
108
85
|
return content;
|
|
109
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobilePopup.js","sourceRoot":"","sources":["../../../internal/MobilePopup/MobilePopup.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.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 { HideBodyVerticalScroll } from '../HideBodyVerticalScroll/index.js';\nimport { RenderContainer } from '../RenderContainer/index.js';\nimport { RenderLayer } from '../RenderLayer/index.js';\nimport { ZIndex } from '../ZIndex/index.js';\nimport { getJsStyles } from './MobilePopup.styles.js';\nimport { MobilePopupFooter } from './MobilePopupFooter/index.js';\nimport { MobilePopupHeader } from './MobilePopupHeader/index.js';\n\ninterface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Функция, вызываемая при закрытии всплывающего окна\n */\n onClose?: () => void;\n /**\n * Заголовок всплывающего окна, располагается в шапке\n */\n caption?: string;\n /**\n * Шапка всплывающего окна\n */\n headerChildComponent?: React.ReactNode;\n /**\n * Подвал всплывающего окна\n */\n footerChildComponent?: React.ReactNode;\n /**\n * Позволяет получить контент всплывающего окна без обёртки в виде `RenderContainer`\n */\n withoutRenderContainer?: boolean;\n /**\n * Функция, вызываемая при клике по вуали\n */\n onCloseRequest?: () => void;\n /**\n * Позволяет контролировать текущее состояние всплывающего окна\n */\n opened: boolean;\n /**\n * Позволяет отрисовать попап по центру экрана\n */\n verticalAlign?: 'center' | 'bottom';\n size?: SizeProp;\n children?: React.ReactNode;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n backdrop: 'MobilePopup__backdrop',\n} as const;\n\n@withRenderEnvironment\n@rootNode\nexport class MobilePopup extends React.Component<MobilePopupProps> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n public static displayName = 'MobileMenuHeader';\n private refForTransition = React.createRef<HTMLDivElement>();\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private jsStyles!: ReturnType<typeof getJsStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n this.jsStyles = getJsStyles(this.emotion);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n const align = this.props.verticalAlign ?? 'bottom';\n const content = (\n <ZIndex id={this.props.id} className={this.jsStyles.zIndex()} priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n timeout={0}\n nodeRef={this.refForTransition}\n >\n {themeGTE6_1 ? (\n <div className={this.jsStyles.wrapper_6_1(this.theme)} ref={this.refForTransition}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={this.cx(\n this.jsStyles.containerBase_6_1(this.theme),\n align === 'bottom' && this.jsStyles.containerBottom_6_1(this.theme),\n )}\n >\n <div data-tid={MobilePopupDataTids.root} className={this.jsStyles.root_6_1(this.theme)}>\n <MobilePopupHeader size={this.props.size} caption={this.props.caption}>\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div className={this.getContentClassName_6_1()}>{this.props.children}</div>\n <MobilePopupFooter size={this.props.size}>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n </div>\n </RenderLayer>\n <div\n data-tid={MobilePopupDataTids.backdrop}\n className={this.jsStyles.bg()}\n onClick={this.backdropClick}\n onMouseDown={this.backdropStopPropagation}\n onPointerDownCapture={this.backdropStopPropagation}\n onPointerUpCapture={this.backdropStopPropagation}\n />\n <HideBodyVerticalScroll />\n </div>\n ) : (\n <div className={this.jsStyles.wrapper()} ref={this.refForTransition}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={this.jsStyles.container(this.theme)}\n >\n <div data-tid={MobilePopupDataTids.root} className={this.jsStyles.root(this.theme)}>\n <MobilePopupHeader caption={this.props.caption}>\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div className={this.jsStyles.content(this.theme)}>{this.props.children}</div>\n <MobilePopupFooter>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n <div onClick={this.close} className={this.jsStyles.bottomIndent()} />\n </div>\n </RenderLayer>\n <div\n data-tid={MobilePopupDataTids.backdrop}\n className={this.jsStyles.bg()}\n onClick={this.backdropClick}\n onMouseDown={this.backdropStopPropagation}\n onPointerDownCapture={this.backdropStopPropagation}\n onPointerUpCapture={this.backdropStopPropagation}\n />\n <HideBodyVerticalScroll />\n </div>\n )}\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = (): void => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n /** Не даём событию дойти до document (`RenderLayer` / «клик сквозь» вуаль).\n * В мобильных браузерах pointerup может породить click по нижележащему элементу.\n * Гасим его на вуали, а закрытие остаётся на обычном click по backdrop.\n */\n private backdropStopPropagation = (event: React.SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n private backdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n this.backdropStopPropagation(event);\n this.close();\n };\n\n private getContentClassName_6_1 = (): string => {\n switch (this.props.size) {\n case 'small':\n return this.jsStyles.contentSmall_6_1(this.theme);\n case 'medium':\n return this.jsStyles.contentMedium_6_1(this.theme);\n case 'large':\n return this.jsStyles.contentLarge_6_1(this.theme);\n default:\n return this.jsStyles.contentSmall_6_1(this.theme);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MobilePopup.js","sourceRoot":"","sources":["../../../internal/MobilePopup/MobilePopup.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAkCjE,MAAM,CAAC,IAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,wBAAwB;IACnC,QAAQ,EAAE,uBAAuB;CACzB,CAAC;AAIX;IAAiC,+BAAiC;IAAlE;;QAGU,sBAAgB,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAsEtD,WAAK,GAAG;YACb,IAAI,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC9B,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF;;;WAGG;QACK,6BAAuB,GAAG,UAAC,KAA2B;YAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,KAAuC;YAC9D,KAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;;IACJ,CAAC;IA9EQ,4BAAM,GAAb;QAAA,iBAUC;QATC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,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,gCAAU,GAAjB;QACE,IAAM,OAAO,GAAG,CACd,oBAAC,MAAM,IAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,aAAa;YACnF,oBAAC,UAAU,IACT,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC5B,YAAY,QACZ,aAAa,QACb,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,IAAI,CAAC,gBAAgB;gBAE9B,6BAAK,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB;oBACjE,oBAAC,WAAW,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK;wBACrC,6BACE,GAAG,EAAE,IAAI,CAAC,WAAW,cACX,mBAAmB,CAAC,SAAS,EACvC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;4BAE9C,yCAAe,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gCAChF,oBAAC,iBAAiB,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAqB;gCACrG,6BAAK,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAO;gCAC9E,oBAAC,iBAAiB,QAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAqB,CACpE;4BACN,6BAAK,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAI,CACjE,CACM;oBACd,yCACY,mBAAmB,CAAC,QAAQ,EACtC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAC7B,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,WAAW,EAAE,IAAI,CAAC,uBAAuB,EACzC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,EAClD,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,GAChD;oBACF,oBAAC,sBAAsB,OAAG,CACtB,CACK,CACN,CACV,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,oBAAC,eAAe,QAAE,OAAO,CAAmB,CAAC;IACtD,CAAC;IAtEa,+BAAmB,GAAG,kBAAkB,AAArB,CAAsB;IACzC,uBAAW,GAAG,kBAAkB,AAArB,CAAsB;IAG/C,sBAAsB;IACC,2BAAe,GAAG,IAAI,AAAP,CAAQ;IANnC,WAAW;QAFvB,qBAAqB;QACrB,QAAQ;OACI,WAAW,CA4FvB;IAAD,kBAAC;CAAA,AA5FD,CAAiC,KAAK,CAAC,SAAS,GA4F/C;SA5FY,WAAW","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll/index.js';\nimport { RenderContainer } from '../RenderContainer/index.js';\nimport { RenderLayer } from '../RenderLayer/index.js';\nimport { ZIndex } from '../ZIndex/index.js';\nimport { getJsStyles } from './MobilePopup.styles.js';\nimport { MobilePopupFooter } from './MobilePopupFooter/index.js';\nimport { MobilePopupHeader } from './MobilePopupHeader/index.js';\n\ninterface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Функция, вызываемая при закрытии всплывающего окна\n */\n onClose?: () => void;\n /**\n * Заголовок всплывающего окна, располагается в шапке\n */\n caption?: string;\n /**\n * Шапка всплывающего окна\n */\n headerChildComponent?: React.ReactNode;\n /**\n * Подвал всплывающего окна\n */\n footerChildComponent?: React.ReactNode;\n /**\n * Позволяет получить контент всплывающего окна без обёртки в виде `RenderContainer`\n */\n withoutRenderContainer?: boolean;\n /**\n * Функция, вызываемая при клике по вуали\n */\n onCloseRequest?: () => void;\n /**\n * Позволяет контролировать текущее состояние всплывающего окна\n */\n opened: boolean;\n children?: React.ReactNode;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n backdrop: 'MobilePopup__backdrop',\n} as const;\n\n@withRenderEnvironment\n@rootNode\nexport class MobilePopup extends React.Component<MobilePopupProps> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n public static displayName = 'MobileMenuHeader';\n private refForTransition = React.createRef<HTMLDivElement>();\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n private emotion!: Emotion;\n private jsStyles!: ReturnType<typeof getJsStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n this.jsStyles = getJsStyles(this.emotion);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex id={this.props.id} className={this.jsStyles.zIndex()} priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n timeout={0}\n nodeRef={this.refForTransition}\n >\n <div className={this.jsStyles.wrapper()} ref={this.refForTransition}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={this.jsStyles.container(this.theme)}\n >\n <div data-tid={MobilePopupDataTids.root} className={this.jsStyles.root(this.theme)}>\n <MobilePopupHeader caption={this.props.caption}>{this.props.headerChildComponent}</MobilePopupHeader>\n <div className={this.jsStyles.content(this.theme)}>{this.props.children}</div>\n <MobilePopupFooter>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n <div onClick={this.close} className={this.jsStyles.bottomIndent()} />\n </div>\n </RenderLayer>\n <div\n data-tid={MobilePopupDataTids.backdrop}\n className={this.jsStyles.bg()}\n onClick={this.backdropClick}\n onMouseDown={this.backdropStopPropagation}\n onPointerDownCapture={this.backdropStopPropagation}\n onPointerUpCapture={this.backdropStopPropagation}\n />\n <HideBodyVerticalScroll />\n </div>\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = (): void => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n /** Не даём событию дойти до document (`RenderLayer` / «клик сквозь» вуаль).\n * В мобильных браузерах pointerup может породить click по нижележащему элементу.\n * Гасим его на вуали, а закрытие остаётся на обычном click по backdrop.\n */\n private backdropStopPropagation = (event: React.SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n private backdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n this.backdropStopPropagation(event);\n this.close();\n };\n}\n"]}
|
|
@@ -4,13 +4,6 @@ export declare const getJsStyles: import("../../lib/theming/Emotion.js").StylesG
|
|
|
4
4
|
wrapper(): string;
|
|
5
5
|
content(t: Theme): string;
|
|
6
6
|
container(t: Theme): string;
|
|
7
|
-
root_6_1(t: Theme): string;
|
|
8
|
-
wrapper_6_1(t: Theme): string;
|
|
9
|
-
contentSmall_6_1(t: Theme): string;
|
|
10
|
-
contentMedium_6_1(t: Theme): string;
|
|
11
|
-
contentLarge_6_1(t: Theme): string;
|
|
12
|
-
containerBase_6_1(t: Theme): string;
|
|
13
|
-
containerBottom_6_1(t: Theme): string;
|
|
14
7
|
bg(): string;
|
|
15
8
|
bottomIndent(): string;
|
|
16
9
|
zIndex(): string;
|