@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +41 -13
- package/cjs/components/Autocomplete/Autocomplete.js +12 -6
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Autocomplete/Autocomplete.md +76 -3
- package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
- package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
- package/cjs/components/Button/Button.js +2 -2
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +38 -11
- package/cjs/components/Calendar/Calendar.d.ts +28 -5
- package/cjs/components/Calendar/Calendar.js +80 -36
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/Calendar.md +82 -1
- package/cjs/components/Calendar/Calendar.styles.js +1 -1
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
- package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
- package/cjs/components/Calendar/CalendarContext.js +16 -0
- package/cjs/components/Calendar/CalendarContext.js.map +1 -0
- package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/cjs/components/Calendar/CalendarDateShape.js +13 -3
- package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
- package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
- package/cjs/components/Calendar/CalendarDay.js +79 -0
- package/cjs/components/Calendar/CalendarDay.js.map +1 -0
- package/cjs/components/Calendar/CalendarDay.md +70 -0
- package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
- package/cjs/components/Calendar/CalendarUtils.js +4 -6
- package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.d.ts +4 -12
- package/cjs/components/Calendar/DayCellView.js +20 -42
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/cjs/components/Calendar/DayCellView.styles.js +37 -43
- package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/components/Calendar/Month.d.ts +0 -10
- package/cjs/components/Calendar/Month.js +36 -88
- package/cjs/components/Calendar/Month.js.map +1 -1
- package/cjs/components/Calendar/MonthView.d.ts +3 -2
- package/cjs/components/Calendar/MonthView.js +47 -37
- package/cjs/components/Calendar/MonthView.js.map +1 -1
- package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
- package/cjs/components/Calendar/MonthView.styles.js +45 -7
- package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
- package/cjs/components/Calendar/MonthViewModel.js +24 -6
- package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
- package/cjs/components/Calendar/config.js +12 -6
- package/cjs/components/Calendar/config.js.map +1 -1
- package/cjs/components/Calendar/index.d.ts +1 -0
- package/cjs/components/Calendar/index.js +2 -1
- package/cjs/components/Calendar/index.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +1 -1
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DateInput/DateInput.js +1 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
- package/cjs/components/DatePicker/DatePicker.js +72 -45
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.md +29 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
- package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
- package/cjs/components/DatePicker/MobilePicker.js +118 -0
- package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
- package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
- package/cjs/components/DatePicker/Picker.js +1 -1
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -1
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
- package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
- package/cjs/components/FileUploader/FileUploader.js +32 -9
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.md +29 -0
- package/cjs/components/FxInput/FxInput.js +1 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Group/Group.js +1 -1
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +4 -3
- package/cjs/components/Hint/Hint.js +9 -8
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.js +1 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.d.ts +1 -1
- package/cjs/components/Input/Input.styles.js +3 -2
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
- package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +6 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +3 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.js +1 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.js +2 -2
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.js +1 -1
- package/cjs/components/MiniModal/MiniModal.js.map +1 -1
- package/cjs/components/Modal/Modal.js +1 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.js +1 -1
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Paging/Paging.js +8 -3
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.js +1 -1
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js +10 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.js +6 -3
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +1 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.js +1 -1
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.js +1 -1
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.js +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Spinner/Spinner.js +1 -1
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Switcher/Switcher.js +1 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Tabs/Indicator.js +1 -1
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.js +2 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.js +1 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.js +1 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toast/Toast.js +1 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastView.js +1 -1
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toggle/Toggle.js +1 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.js +2 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +1 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
- package/cjs/components/Tooltip/Tooltip.js +59 -20
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/hooks/useDrop.d.ts +1 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
- package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
- package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
- package/cjs/internal/DateSelect/DateSelect.js +51 -4
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
- package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
- package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +2 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/cjs/internal/NativeDateInput/utils.js +3 -2
- package/cjs/internal/NativeDateInput/utils.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +15 -4
- package/cjs/internal/Popup/Popup.js +67 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +1 -1
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
- package/cjs/internal/ThemePlayground/constants.js +2 -1
- package/cjs/internal/ThemePlayground/constants.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
- package/cjs/internal/ZIndex/ZIndex.js +41 -3
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/themes/DarkTheme.d.ts +2 -0
- package/cjs/internal/themes/DarkTheme.js +6 -1
- package/cjs/internal/themes/DarkTheme.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
- package/cjs/internal/themes/DefaultTheme.js +32 -4
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/lib/date/InternalDate.d.ts +2 -0
- package/cjs/lib/date/InternalDate.js +8 -1
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
- package/cjs/lib/date/InternalDateTransformer.js +23 -0
- package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +2 -1
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/date/comparison.d.ts +6 -0
- package/cjs/lib/date/comparison.js +44 -0
- package/cjs/lib/date/comparison.js.map +1 -0
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/listenFocusOutside.js +4 -2
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/locale/constants.d.ts +3 -0
- package/cjs/lib/locale/constants.js +6 -2
- package/cjs/lib/locale/constants.js.map +1 -1
- package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
- package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/cjs/lib/theming/Emotion.d.ts +7 -1
- package/cjs/lib/theming/Emotion.js +6 -3
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.d.ts +0 -2
- package/cjs/lib/theming/ThemeContext.js +1 -3
- package/cjs/lib/theming/ThemeContext.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.md +3 -1
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
- package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
- package/cjs/lib/widgets/StylesContainer.js +70 -0
- package/cjs/lib/widgets/StylesContainer.js.map +1 -0
- package/cjs/lib/widgets/index.d.ts +1 -0
- package/cjs/lib/widgets/index.js +1 -0
- package/cjs/lib/widgets/index.js.map +1 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.md +76 -3
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
- package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/components/Button/Button/Button.js +3 -3
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.md +38 -11
- package/components/Calendar/Calendar/Calendar.js +83 -66
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +28 -5
- package/components/Calendar/Calendar.md +82 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
- package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
- package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
- package/components/Calendar/CalendarContext/package.json +6 -0
- package/components/Calendar/CalendarContext.d.ts +12 -0
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
- package/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
- package/components/Calendar/CalendarDay/package.json +6 -0
- package/components/Calendar/CalendarDay.d.ts +12 -0
- package/components/Calendar/CalendarDay.md +70 -0
- package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
- package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
- package/components/Calendar/CalendarUtils.d.ts +2 -1
- package/components/Calendar/DayCellView/DayCellView.js +33 -46
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.d.ts +4 -12
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/components/Calendar/Month/Month.js +50 -84
- package/components/Calendar/Month/Month.js.map +1 -1
- package/components/Calendar/Month.d.ts +0 -10
- package/components/Calendar/MonthView/MonthView.js +50 -45
- package/components/Calendar/MonthView/MonthView.js.map +1 -1
- package/components/Calendar/MonthView.d.ts +3 -2
- package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
- package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
- package/components/Calendar/MonthView.styles.d.ts +3 -0
- package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
- package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
- package/components/Calendar/config/config.js +6 -4
- package/components/Calendar/config/config.js.map +1 -1
- package/components/Calendar/index/index.js +2 -1
- package/components/Calendar/index/index.js.map +1 -1
- package/components/Calendar/index.d.ts +1 -0
- package/components/Checkbox/Checkbox/Checkbox.js +2 -2
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +2 -2
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +62 -41
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +4 -1
- package/components/DatePicker/DatePicker.md +29 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
- package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
- package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
- package/components/DatePicker/MobilePicker/package.json +6 -0
- package/components/DatePicker/MobilePicker.d.ts +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
- package/components/DatePicker/MobilePicker.styles/package.json +6 -0
- package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/components/DatePicker/Picker/Picker.js +3 -3
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
- package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
- package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/components/Dropdown/Dropdown/Dropdown.js +3 -3
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.md +39 -0
- package/components/FileUploader/FileUploader/FileUploader.js +30 -8
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +2 -0
- package/components/FileUploader/FileUploader.md +29 -0
- package/components/FxInput/FxInput/FxInput.js +2 -2
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/Group/Group/Group.js +2 -2
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Hint/Hint/Hint.js +53 -48
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +4 -3
- package/components/Input/Input/Input.js +3 -3
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.styles/Input.styles.js +2 -2
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Input/Input.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +7 -4
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Link/Link/Link.js +6 -3
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Loader/Loader/Loader.js +2 -2
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js +3 -3
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MiniModal/MiniModal/MiniModal.js +2 -2
- package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
- package/components/Modal/Modal/Modal.js +3 -3
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody/ModalBody.js +3 -3
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Paging/Paging/Paging.js +10 -6
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/Radio/Radio/Radio.js +2 -2
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/components/Select/Select/Select.js +6 -5
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +2 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Spinner/Spinner/Spinner.js +2 -2
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Switcher/Switcher/Switcher.js +3 -3
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Tabs/Indicator/Indicator.js +2 -2
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Tab/Tab.js +3 -3
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js +2 -2
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +2 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Toast/Toast/Toast.js +3 -3
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/ToastView/ToastView.js +2 -2
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +2 -2
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Token/Token/Token.js +6 -3
- package/components/Token/Token/Token.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +2 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +67 -46
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +10 -5
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/hooks/useDrop.d.ts +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
- package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
- package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
- package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
- package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
- package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +2 -0
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/internal/DateSelect/locale/locales/en/en.js +2 -1
- package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
- package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
- package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
- package/internal/DateSelect/locale/types.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +3 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/NativeDateInput/utils/utils.js +2 -1
- package/internal/NativeDateInput/utils/utils.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +53 -10
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +15 -4
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/ThemePlayground/Playground/Playground.js +2 -2
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
- package/internal/ThemePlayground/constants/constants.js +3 -0
- package/internal/ThemePlayground/constants/constants.js.map +1 -1
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +7 -3
- package/internal/themes/DarkTheme/DarkTheme.js +2 -0
- package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
- package/internal/themes/DarkTheme.d.ts +2 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +18 -0
- package/lib/date/InternalDate/InternalDate.js +7 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDate.d.ts +2 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
- package/lib/date/InternalDateTransformer.d.ts +3 -0
- package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/date/comparison/comparison.js +45 -0
- package/lib/date/comparison/comparison.js.map +1 -0
- package/lib/date/comparison/package.json +6 -0
- package/lib/date/comparison.d.ts +6 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/locale/constants/constants.js +4 -1
- package/lib/locale/constants/constants.js.map +1 -1
- package/lib/locale/constants.d.ts +3 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +12 -3
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/Emotion.d.ts +7 -1
- package/lib/theming/ThemeContext/ThemeContext.js +0 -2
- package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
- package/lib/theming/ThemeContext.d.ts +0 -2
- package/lib/theming/ThemeContext.md +3 -1
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
- package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
- package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
- package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
- package/lib/widgets/StylesContainer/package.json +6 -0
- package/lib/widgets/StylesContainer.d.ts +13 -0
- package/lib/widgets/index/index.js +1 -0
- package/lib/widgets/index/index.js.map +1 -0
- package/lib/widgets/index/package.json +6 -0
- package/lib/widgets/index.d.ts +1 -0
- package/lib/widgets/package.json +6 -0
- package/package.json +3 -2
- package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
- package/cjs/lib/theming/StyleContainer.d.ts +0 -4
- package/cjs/lib/theming/StyleContainer.js +0 -21
- package/cjs/lib/theming/StyleContainer.js.map +0 -1
- package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
- package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
- package/lib/theming/StyleContainer/StyleContainer.js +0 -21
- package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
- package/lib/theming/StyleContainer/package.json +0 -6
- package/lib/theming/StyleContainer.d.ts +0 -4
- /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
- /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
- /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
- /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Popup.tsx"],"names":["React","PropTypes","Transition","warning","globalObject","getDOMRect","LayoutEvents","ZIndex","RenderContainer","getRandomID","isFunction","isNonNullable","isNullable","isRefableElement","mergeRefs","isEdge","isIE11","isSafari","safePropTypesInstanceOf","isTestEnv","CommonWrapper","EmotionConsumer","responsiveLayout","MobilePopup","getRootNode","rootNode","callChildRef","isInstanceWithAnchorElement","createPropsGetter","isInstanceOf","ThemeConsumer","PopupPin","PopupHelper","getStyles","POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","DefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","PopupDataTids","root","content","contentInner","popupPin","PopupIds","Popup","getProps","defaultProps","state","location","props","opened","locationUpdateId","refForTransition","createRef","hasAnchorElementListeners","rootId","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","anchorWidth","Math","floor","parseFloat","children","backgroundColor","styles","emotion","theme","refPopupContentElement","resetLocation","cancelDelayedUpdateLocation","setState","element","lastPopupContentElement","handleLayoutEvent","updateLocation","popupContentElement","getLocation","onPositionChange","locationEquals","componentDidMount","layoutEventsToken","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","renderMobile","renderChildren","setRootNode","mobileOnCloseRequest","useWrapper","anchor","Element","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","maxWidth","hasShadow","disableAnimations","ignoreHover","getPositionObject","direction","rootStyle","shouldFallbackShadow","Boolean","id","cx","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","requestAnimationFrame","cancelAnimationFrame","x","y","abs","popupElement","positions","tryPreserveFirstRenderedPosition","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","displayName","propTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","defaultRootNode"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement, mergeRefs } from '../../lib/utils';\nimport { isEdge, isIE11, isSafari } from '../../lib/client';\nimport { Theme } from '../../lib/theming/Theme';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { getStyles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>,\n PopupHandlerProps,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin?: boolean;\n hasShadow?: boolean;\n disableAnimations?: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset?: number;\n positions: Readonly<PopupPositionsType[]>;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n 'popupOffset' | 'hasPin' | 'hasShadow' | 'disableAnimations' | 'useWrapper' | 'ignoreHover' | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n public static displayName = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(globalObject.HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private emotion!: Emotion;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupContentElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <CommonWrapper rootNodeRef={this.setRootNode}>\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n </CommonWrapper>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, globalObject.Element);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = Math.floor(getDOMRect(this.anchorElement).width);\n return this.anchorElement ? (anchorWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const width = this.getProps().width;\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={styles.content(this.theme)}\n data-tid={PopupDataTids.content}\n ref={mergeRefs([this.refForTransition, this.refPopupContentElement])}\n >\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n const styles = getStyles(this.emotion);\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n priority={'Popup'}\n className={this.emotion.cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {(!this.isMobileLayout || this.props.withoutMobile) && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupContentElement = (element: Nullable<Element>) => {\n this.lastPopupContentElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, backgroundColor, borderColor } = this.props;\n const { hasShadow, hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin && (\n <PopupPin\n popupElement={this.lastPopupContentElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupContentElement = this.lastPopupContentElement;\n\n if (!popupContentElement) {\n return;\n }\n\n const location = this.getLocation(popupContentElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location?.position);\n }\n\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>) {\n const { positions, tryPreserveFirstRenderedPosition } = this.props;\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Popup.tsx"],"names":["React","PropTypes","Transition","warning","globalObject","getDOMRect","LayoutEvents","ZIndex","RenderContainer","getRandomID","isFunction","isNonNullable","isNullable","isRefableElement","mergeRefs","isEdge","isIE11","isSafari","safePropTypesInstanceOf","isTestEnv","CommonWrapper","EmotionConsumer","responsiveLayout","MobilePopup","getRootNode","rootNode","callChildRef","isInstanceWithAnchorElement","createPropsGetter","isInstanceOf","ThemeContext","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","PopupPin","PopupHelper","getStyles","POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","OldPopupPositions","DefaultPosition","OldDefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","PopupDataTids","root","content","contentInner","popupPin","PopupIds","Popup","getProps","defaultProps","state","location","props","opened","locationUpdateId","refForTransition","createRef","hasAnchorElementListeners","rootId","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","anchorWidth","Math","floor","parseFloat","children","backgroundColor","styles","emotion","theme","refPopupContentElement","resetLocation","cancelDelayedUpdateLocation","setState","element","lastPopupContentElement","handleLayoutEvent","updateLocation","popupContentElement","getLocation","onPositionChange","locationEquals","componentDidMount","layoutEventsToken","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","flags","featureFlags","renderMain","renderMobile","renderChildren","setRootNode","mobileOnCloseRequest","useWrapper","anchor","Element","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","maxWidth","hasShadow","disableAnimations","ignoreHover","getPositionObject","direction","rootStyle","shouldFallbackShadow","Boolean","id","cx","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","requestAnimationFrame","cancelAnimationFrame","x","y","abs","reorderPropsPositionsWithPriorityPos","positions","pos_","pos","index","findIndex","startsWith","join","slice","popupElement","tryPreserveFirstRenderedPosition","popupUnifyPositioning","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","displayName","propTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","defaultRootNode"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement, mergeRefs } from '../../lib/utils';\nimport { isEdge, isIE11, isSafari } from '../../lib/client';\nimport { Theme } from '../../lib/theming/Theme';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport {\n getFullReactUIFlagsContext,\n ReactUIFeatureFlags,\n ReactUIFeatureFlagsContext,\n} from '../../lib/featureFlagsContext';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { getStyles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n] as const;\n\nexport const OldPopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\n\nexport const DefaultPosition = PopupPositions[0];\nexport const OldDefaultPosition = OldPopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\nexport type ShortPopupPositionsType = 'top' | 'bottom' | 'left' | 'right';\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>,\n PopupHandlerProps,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin?: boolean;\n hasShadow?: boolean;\n disableAnimations?: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset?: number;\n positions?: Readonly<PopupPositionsType[]>;\n pos?: PopupPositionsType | ShortPopupPositionsType;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в том числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n 'popupOffset' | 'hasPin' | 'hasShadow' | 'disableAnimations' | 'useWrapper' | 'ignoreHover' | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n public static displayName = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(globalObject.HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Приоритетная позиция попапа\n */\n pos: PropTypes.string,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private emotion!: Emotion;\n public featureFlags!: ReactUIFeatureFlags;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupContentElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <CommonWrapper rootNodeRef={this.setRootNode}>\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n </CommonWrapper>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, globalObject.Element);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = Math.floor(getDOMRect(this.anchorElement).width);\n return this.anchorElement ? (anchorWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const width = this.getProps().width;\n const styles = getStyles(this.emotion);\n\n return (\n <div\n className={styles.content(this.theme)}\n data-tid={PopupDataTids.content}\n ref={mergeRefs([this.refForTransition, this.refPopupContentElement])}\n >\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n const styles = getStyles(this.emotion);\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n priority={'Popup'}\n className={this.emotion.cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {(!this.isMobileLayout || this.props.withoutMobile) && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupContentElement = (element: Nullable<Element>) => {\n this.lastPopupContentElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, backgroundColor, borderColor } = this.props;\n const { hasShadow, hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin && (\n <PopupPin\n popupElement={this.lastPopupContentElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupContentElement = this.lastPopupContentElement;\n\n if (!popupContentElement) {\n return;\n }\n\n const location = this.getLocation(popupContentElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location?.position);\n }\n\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private reorderPropsPositionsWithPriorityPos() {\n const positions = this.props.positions ? this.props.positions : PopupPositions;\n let pos_ = '';\n if (this.props.pos) {\n pos_ = this.props.pos;\n } else {\n pos_ = positions[0];\n }\n const index = positions.findIndex((position) => position.startsWith(pos_));\n if (index === -1) {\n warning(false, 'Unexpected position ' + pos_ + ' passed to Popup. Expected one of: ' + positions.join(', '));\n return positions;\n }\n return [...positions.slice(index), ...positions.slice(0, index)];\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>) {\n const { tryPreserveFirstRenderedPosition } = this.getProps();\n let positions;\n if (this.featureFlags.popupUnifyPositioning) {\n positions = this.reorderPropsPositionsWithPriorityPos();\n } else if (this.props.positions) {\n positions = this.props.positions;\n } else {\n positions = OldPopupPositions;\n }\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
|
|
@@ -3,9 +3,13 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { Nullable } from '../../typings/utility-types';
|
|
4
4
|
import { FocusEventType, MouseEventType } from '../../typings/event-types';
|
|
5
5
|
import { CommonProps } from '../CommonWrapper';
|
|
6
|
-
|
|
7
|
-
export declare const
|
|
6
|
+
import { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
|
|
7
|
+
export declare const PopupPositions: readonly ["top center", "top left", "top right", "bottom center", "bottom left", "bottom right", "left middle", "left top", "left bottom", "right middle", "right top", "right bottom"];
|
|
8
|
+
export declare const OldPopupPositions: readonly ["top left", "top center", "top right", "right top", "right middle", "right bottom", "bottom right", "bottom center", "bottom left", "left bottom", "left middle", "left top"];
|
|
9
|
+
export declare const DefaultPosition: "top center";
|
|
10
|
+
export declare const OldDefaultPosition: "top left";
|
|
8
11
|
export declare type PopupPositionsType = typeof PopupPositions[number];
|
|
12
|
+
export declare type ShortPopupPositionsType = 'top' | 'bottom' | 'left' | 'right';
|
|
9
13
|
export declare const DUMMY_LOCATION: PopupLocation;
|
|
10
14
|
export interface PopupHandlerProps {
|
|
11
15
|
onMouseEnter?: (event: MouseEventType) => void;
|
|
@@ -30,7 +34,8 @@ export interface PopupProps extends Omit<CommonProps, 'children'>, PopupHandlerP
|
|
|
30
34
|
pinOffset?: number;
|
|
31
35
|
pinSize?: number;
|
|
32
36
|
popupOffset?: number;
|
|
33
|
-
positions
|
|
37
|
+
positions?: Readonly<PopupPositionsType[]>;
|
|
38
|
+
pos?: PopupPositionsType | ShortPopupPositionsType;
|
|
34
39
|
/**
|
|
35
40
|
* Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
|
|
36
41
|
*
|
|
@@ -41,7 +46,7 @@ export interface PopupProps extends Omit<CommonProps, 'children'>, PopupHandlerP
|
|
|
41
46
|
width?: React.CSSProperties['width'];
|
|
42
47
|
/**
|
|
43
48
|
* При очередном рендере пытаться сохранить первоначальную позицию попапа
|
|
44
|
-
* (в
|
|
49
|
+
* (в том числе, когда он выходит за пределы экрана, но может быть проскролен в него).
|
|
45
50
|
*
|
|
46
51
|
* Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.
|
|
47
52
|
* @see https://github.com/skbkontur/retail-ui/pull/1195
|
|
@@ -122,6 +127,10 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
122
127
|
* на котором будет отображаться пин
|
|
123
128
|
*/
|
|
124
129
|
positions: PropTypes.Requireable<any[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Приоритетная позиция попапа
|
|
132
|
+
*/
|
|
133
|
+
pos: PropTypes.Requireable<string>;
|
|
125
134
|
/**
|
|
126
135
|
* Игнорировать ли события hover/click
|
|
127
136
|
*/
|
|
@@ -133,6 +142,7 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
133
142
|
state: PopupState;
|
|
134
143
|
private theme;
|
|
135
144
|
private emotion;
|
|
145
|
+
featureFlags: ReactUIFeatureFlags;
|
|
136
146
|
private layoutEventsToken;
|
|
137
147
|
private locationUpdateId;
|
|
138
148
|
private lastPopupContentElement;
|
|
@@ -169,6 +179,7 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
169
179
|
private cancelDelayedUpdateLocation;
|
|
170
180
|
private updateLocation;
|
|
171
181
|
private locationEquals;
|
|
182
|
+
private reorderPropsPositionsWithPriorityPos;
|
|
172
183
|
private getLocation;
|
|
173
184
|
private getPinnedPopupOffset;
|
|
174
185
|
private getCoordinates;
|
|
@@ -16,7 +16,7 @@ import { responsiveLayout } from "../../../components/ResponsiveLayout/decorator
|
|
|
16
16
|
import { rootNode } from "../../../lib/rootNode";
|
|
17
17
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
18
18
|
import { Menu } from "../../Menu";
|
|
19
|
-
import {
|
|
19
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
20
20
|
import { isValidPositions } from "../validatePositions";
|
|
21
21
|
import { getStyles } from "../PopupMenu.styles";
|
|
22
22
|
export var PopupMenuType = {
|
|
@@ -216,8 +216,8 @@ export var PopupMenu = rootNode(_class = responsiveLayout(_class = (_temp = _cla
|
|
|
216
216
|
|
|
217
217
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
218
218
|
_this2.emotion = emotion;
|
|
219
|
-
return /*#__PURE__*/React.createElement(
|
|
220
|
-
return /*#__PURE__*/React.createElement(
|
|
219
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
220
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
|
|
221
221
|
value: ThemeFactory.create({
|
|
222
222
|
menuOffsetY: theme.popupMenuMenuOffsetY
|
|
223
223
|
}, theme)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PopupMenu.tsx"],"names":["React","globalObject","EmotionConsumer","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","ThemeConsumer","ThemeProvider","isValidPositions","getStyles","PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootId","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","cloneElement","props","popupMenuId","renderCaption","styles","emotion","opened","openMenu","closeMenu","toggleMenu","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","theme","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","popupHasPin","disableAnimations","setRootNode","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","preventIconsOffset","header","footer","positions","Component","__KONTUR_REACT_UI__","displayName","Type"],"mappings":"2JAAA,OAAOA,KAAP,MAAsC,OAAtC;AACA,SAASC,YAAT,QAA6B,0BAA7B;;;AAGA,SAASC,eAAT,QAAgC,2BAAhC;AACA,SAASC,WAAT,QAA4B,iBAA5B;;AAEA;AACEC,kBADF;AAEEC,UAFF;AAGEC,WAHF;AAIEC,UAJF;AAKEC,QALF;AAMO,uCANP;AAOA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,KAAT,EAAgBC,QAAhB,QAAoD,UAApD;AACA,SAASC,WAAT,QAA4B,gBAA5B;;AAEA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,gBAAT,QAAiC,6CAAjC;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,IAAT,QAAgC,SAAhC;AACA,SAASC,aAAT,EAAwBC,aAAxB,QAA6C,gCAA7C;;AAEA,SAASC,gBAAT,QAAiC,qBAAjC;AACA,SAASC,SAAT,QAA0B,oBAA1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,OAAO,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,QAAQ,EAAE,UADiB;AAE3BC,EAAAA,OAAO,EAAE,SAFkB,EAAtB;;;AAKP,OAAO,IAAMC,iBAAiB,GAAG;AAC/BC,EAAAA,IAAI,EAAE,iBADyB;AAE/BC,EAAAA,OAAO,EAAE,oBAFsB,EAA1B;;;AAKP,IAAMC,SAA+B,GAAG;AACtC,UADsC;AAEtC,YAFsC;AAGtC,WAHsC;AAItC,WAJsC;AAKtC,cALsC;AAMtC,cANsC;AAOtC,aAPsC;AAQtC,eARsC;AAStC,cATsC;AAUtC,UAVsC;AAWtC,aAXsC;AAYtC,aAZsC,CAAxC;;;;;;;AAmBA,WAAaC,SAAb,GAFCd,QAED,UADCD,gBACD;;;;;AAKUgB,IAAAA,MALV,GAKmBnB,QAAQ,CAACe,IAAT,GAAgBvB,WAAW,EAL9C;;;;;;;;;AAcU4B,IAAAA,QAdV,GAcqBf,iBAAiB,CAACa,SAAS,CAACG,YAAX,CAdtC;;;;AAkBSC,IAAAA,KAlBT,GAkBiB;AACbC,MAAAA,WAAW,EAAE,KADA;AAEbC,MAAAA,yBAAyB,EAAE,KAFd,EAlBjB;;;AAuBUC,IAAAA,cAvBV,GAuBmD,IAvBnD;AAwBUC,IAAAA,qBAxBV,GAwBsD,IAxBtD;AAyBUC,IAAAA,IAzBV,GAyBiC,IAzBjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GSC,IAAAA,IA1GT,GA0GgB,oBAAY,MAAKC,QAAL,EAAZ,EA1GhB;AA2GSC,IAAAA,KA3GT,GA2GiB,oBAAY,MAAKC,QAAL,EAAZ,EA3GjB;;AA6GUC,IAAAA,eA7GV,GA6G4B,UAACC,OAAD,UAA8B,MAAKN,IAAL,GAAYM,OAA1C,EA7G5B;;AA+GUC,IAAAA,UA/GV,GA+GuB,YAAM;AACzB,UAAI,MAAKP,IAAT,EAAe;AACb,cAAKA,IAAL,CAAUQ,KAAV;AACD;AACF,KAnHH;;AAqHUC,IAAAA,kBArHV,GAqH+B,UAACpB,OAAD,EAA8B;AACzD,UAAI,OAAOA,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAP,KAAmB,QAAtD,EAAgE;AAC9D,eAAOA,OAAP;AACD;;AAED,0BAAO3B,KAAK,CAACgD,YAAN,CAAmBrB,OAAnB,EAAkD;AACvD,kDAAiB,MAAKsB,KAAL,CAAWC,WAA5B,oCAA2C,MAAKpB,MADO;AAEvD,yBAAiB,MAAKG,KAAL,CAAWC,WAAX,GAAyB,MAAzB,GAAkC,OAFI;AAGvD,sBAAc,MAAKe,KAAL,CAAW,YAAX,CAHyC,EAAlD,CAAP;;AAKD,KA/HH;;AAiIUE,IAAAA,aAjIV,GAiI0B,YAAM;AAC5B,UAAMC,MAAM,GAAG/B,SAAS,CAAC,MAAKgC,OAAN,CAAxB;;AAEA,UAAI,OAAO,MAAKJ,KAAL,CAAWtB,OAAlB,KAA8B,UAAlC,EAA8C;AAC5C,YAAMA,OAAO,GAAG,MAAKsB,KAAL,CAAWtB,OAAX,CAAmB;AACjC2B,UAAAA,MAAM,EAAE,MAAKrB,KAAL,CAAWC,WADc;AAEjCqB,UAAAA,QAAQ,EAAE,MAAKf,QAFkB;AAGjCgB,UAAAA,SAAS,EAAE,MAAKd,QAHiB;AAIjCe,UAAAA,UAAU,EAAE,MAAKA,UAJgB,EAAnB,CAAhB;;AAMA;AACE;AACE,wBAAUhC,iBAAiB,CAACE,OAD9B;AAEE,YAAA,SAAS,EAAEyB,MAAM,CAACzB,OAAP,EAFb;AAGE,YAAA,GAAG,EAAE,aAACiB,OAAD,UAAc,MAAKR,cAAL,GAAsBQ,OAApC,EAHP;;AAKG,gBAAKG,kBAAL,CAAwBpB,OAAxB,CALH,CADF;;;AASD;;AAED;AACE;AACE,sBAAUF,iBAAiB,CAACE,OAD9B;AAEE,UAAA,OAAO,EAAE,MAAK+B,kBAFhB;AAGE,UAAA,SAAS,EAAE,MAAKC,oBAHlB;AAIE,UAAA,GAAG,EAAE,aAACf,OAAD,UAAc,MAAKR,cAAL,GAAsBQ,OAApC,EAJP;AAKE,UAAA,SAAS,EAAEQ,MAAM,CAACzB,OAAP,EALb;;AAOG,cAAKoB,kBAAL,CAAwB,MAAKE,KAAL,CAAWtB,OAAnC,CAPH,CADF;;;AAWD,KAjKH;;AAmKUiC,IAAAA,uBAnKV,GAmKoC,oBAAM,MAAKlB,QAAL,EAAN,EAnKpC;;;;;;;;;;;AA8KUF,IAAAA,QA9KV,GA8KqB,UAACL,yBAAD,EAA+C;AAChE,YAAK0B,SAAL;AACA,YAAKC,QAAL;AACE;AACE5B,QAAAA,WAAW,EAAE,IADf;AAEEC,QAAAA,yBAAyB,EAAzBA,yBAFF,EADF;;AAKE,kBAAM;AACJ,cAAK4B,uBAAL,CAA6B,KAA7B;AACD,OAPH;;AASD,KAzLH;;AA2LUrB,IAAAA,QA3LV,GA2LqB,UAACsB,YAAD,EAAkC;AACnD,YAAKF,QAAL;AACE;AACE5B,QAAAA,WAAW,EAAE,KADf;AAEEC,QAAAA,yBAAyB,EAAE,KAF7B,EADF;;AAKE,kBAAM;AACJ,cAAK4B,uBAAL,CAA6B,CAAC,CAACC,YAA/B;AACD,OAPH;;AASD,KArMH;;AAuMUP,IAAAA,UAvMV,GAuMuB,YAAY;AAC/B,YAAKxB,KAAL,CAAWC,WAAX,GAAyB,MAAKQ,QAAL,EAAzB,GAA2C,MAAKF,QAAL,EAA3C;AACD,KAzMH;;AA2MUkB,IAAAA,kBA3MV,GA2M+B,YAAY;AACvC,YAAKD,UAAL;AACD,KA7MH;;AA+MUE,IAAAA,oBA/MV,GA+MiC,UAACM,CAAD,EAA+C;AAC5E,UAAIzD,QAAQ,CAACH,UAAD,EAAaE,UAAb,EAAyBH,kBAAzB,CAAR,CAAqD6D,CAArD,CAAJ,EAA6D;AAC3DA,QAAAA,CAAC,CAACC,cAAF;AACA,cAAK1B,QAAL,CAAc,IAAd;AACD;AACF,KApNH;;AAsNU2B,IAAAA,aAtNV,GAsN0B,UAACF,CAAD,EAAyC;AAC/D,UAAI3D,WAAW,CAAC2D,CAAD,CAAf,EAAoB;AAClB,YAAMD,aAAY,GAAG,IAArB;AACA,cAAKtB,QAAL,CAAcsB,aAAd;AACD;AACF,KA3NH;;AA6NUH,IAAAA,SA7NV,GA6NsB,YAAY;AAC9B,UAAI5D,YAAY,CAACmE,QAAjB,EAA2B;AACzB,cAAK/B,qBAAL,GAA6BpC,YAAY,CAACmE,QAAb,CAAsBC,aAAnD;AACD;AACF,KAjOH;;AAmOUL,IAAAA,YAnOV,GAmOyB,YAAY;AACjC,UAAI,MAAK3B,qBAAT,EAAgC;AAC9B,cAAKA,qBAAL,CAA2BS,KAA3B;AACA,cAAKT,qBAAL,GAA6B,IAA7B;AACD;AACF,KAxOH;;AA0OU0B,IAAAA,uBA1OV,GA0OoC,UAACO,qBAAD,EAA0C;AAC1E,UAAIA,qBAAJ,EAA2B;AACzB,cAAKN,YAAL;AACD;;AAED,UAAI,MAAK/B,KAAL,CAAWC,WAAX,IAA0B,MAAKe,KAAL,CAAWsB,MAAzC,EAAiD;AAC/C,cAAKtB,KAAL,CAAWsB,MAAX;AACD;;AAED,UAAI,CAAC,MAAKtC,KAAL,CAAWC,WAAZ,IAA2B,MAAKe,KAAL,CAAWuB,OAA1C,EAAmD;AACjD,cAAKvB,KAAL,CAAWuB,OAAX;AACD;;AAED,UAAI,OAAO,MAAKvB,KAAL,CAAWwB,iBAAlB,KAAwC,UAA5C,EAAwD;AACtD,cAAKxB,KAAL,CAAWwB,iBAAX,CAA6B,MAAKxC,KAAL,CAAWC,WAAxC,EAAqDoC,qBAArD;AACD;AACF,KA1PH;;AA4PUI,IAAAA,mBA5PV,GA4PgC,UAACC,KAAD,EAAoD;AAChF,UAAIA,KAAK,CAACC,kBAAN,EAAJ,EAAgC;AAC9B;AACD;;AAED,UAAID,KAAK,CAACE,IAAN,KAAe,SAAnB,EAA8B;AAC5BF,QAAAA,KAAK,CAACT,cAAN;AACD;;AAED,UAAMF,YAAY,GAAGW,KAAK,CAACE,IAAN,KAAe,SAApC;AACA,YAAKnC,QAAL,CAAcsB,YAAd;AACD,KAvQH,uDA6BSc,MA7BT,GA6BE,kBAA6B,mBAC3B,oBACE,oBAAC,eAAD,QACG,UAACzB,OAAD,EAAa,CACZ,MAAI,CAACA,OAAL,GAAeA,OAAf,CACA,oBACE,oBAAC,aAAD,QACG,UAAC0B,KAAD,EAAW,CACV,oBACE,oBAAC,aAAD,IACE,KAAK,EAAEtE,YAAY,CAACuE,MAAb,CACL,EACEC,WAAW,EAAEF,KAAK,CAACG,oBADrB,EADK,EAILH,KAJK,CADT,IAQG,MAAI,CAACI,UAAL,EARH,CADF,CAYD,CAdH,CADF,CAkBD,CArBH,CADF,CAyBD,CAvDH,QAyDUA,UAzDV,GAyDE,sBAAqB,4BACnB,qBAA2C,KAAKpD,QAAL,EAA3C,CAAQqD,WAAR,kBAAQA,WAAR,CAAqBC,iBAArB,kBAAqBA,iBAArB,CACA,IAAMjC,MAAM,GAAG/B,SAAS,CAAC,KAAKgC,OAAN,CAAxB,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKiC,WAAjC,IAAkD,KAAKrC,KAAvD,gBACE,oBAAC,WAAD,IACE,cAAc,EAAE,KAAKW,uBADvB,EAEE,cAAc,EAAE,KAAKA,uBAFvB,EAGE,MAAM,EAAE,KAAK3B,KAAL,CAAWC,WAHrB,iBAKE,6BAAK,YAAUT,iBAAiB,CAACC,IAAjC,EAAuC,SAAS,EAAE0B,MAAM,CAACmC,SAAP,EAAlD,EAAsE,KAAK,EAAE,EAAEC,KAAK,EAAE,KAAKvC,KAAL,CAAWuC,KAApB,EAA7E,IACG,KAAKrC,aAAL,EADH,EAEG,KAAKf,cAAL,IAAuB,KAAKa,KAAL,CAAWwC,QAAlC,iBACC,oBAAC,KAAD,IACE,EAAE,4BAAE,KAAKxC,KAAL,CAAWC,WAAb,qCAA4B,KAAKpB,MADrC,EAEE,aAAa,EAAE,KAAKM,cAFtB,EAGE,MAAM,EAAE,KAAKH,KAAL,CAAWC,WAHrB,EAIE,SAAS,MAJX,EAKE,MAAM,EAAE,KAAKe,KAAL,CAAWyC,WALrB,EAME,MAAM,EAAEN,WANV,EAOE,SAAS,EAAE,KAAKnC,KAAL,CAAW0C,cAPxB,EAQE,SAAS,EAAE,KAAKC,YAAL,EARb,EASE,iBAAiB,EAAEP,iBATrB,EAUE,MAAM,EAAE,KAAKxC,UAVf,EAWE,oBAAoB,EAAE,KAAKH,QAX7B,EAYE,KAAK,EAAE,KAAKmD,cAAL,GAAsB,MAAtB,GAA+B,KAAK5C,KAAL,CAAW6C,SAAX,IAAwB,MAZhE,iBAcE,oBAAC,IAAD,IACE,SAAS,EAAE,KADb,EAEE,SAAS,EAAE,KAAKD,cAAL,GAAsB,MAAtB,GAA+B,KAAK5C,KAAL,CAAW8C,aAAX,IAA4B,MAFxE,EAGE,SAAS,EAAE,KAAK5B,aAHlB,EAIE,WAAW,EAAE,KAAKO,mBAJpB,EAKE,kBAAkB,EAAE,KAAKzB,KAAL,CAAW+C,kBALjC,EAME,eAAe,EAAE,KANnB,EAOE,GAAG,EAAE,KAAKrD,eAPZ,EAQE,wBAAwB,EAAE,KAAKV,KAAL,CAAWE,yBAAX,GAAuC,CAAvC,GAA2C,CAAC,CARxE,EASE,MAAM,EAAE,KAAKc,KAAL,CAAWgD,MATrB,EAUE,MAAM,EAAE,KAAKhD,KAAL,CAAWiD,MAVrB,IAYG,KAAKjD,KAAL,CAAWwC,QAZd,CAdF,CAHJ,CALF,CADF,CADF,CA4CD,CAxGH,QAqKUG,YArKV,GAqKE,wBAAuD,CACrD,IAAMO,SAAS,GAAG,KAAKpE,QAAL,GAAgBoE,SAAlC,CACA,IAAIA,SAAS,IAAI/E,gBAAgB,CAAC+E,SAAD,CAAjC,EAA8C,CAC5C,OAAOA,SAAP,CACD,CAED,OAAOvE,SAAP,CACD,CA5KH,oBAA+B5B,KAAK,CAACoG,SAArC,WACgBC,mBADhB,GACsC,WADtC,UAEgBC,WAFhB,GAE8B,WAF9B,UAOgBtE,YAPhB,GAO6C,EACzCmE,SAAS,EAAEvE,SAD8B,EAEzCiD,IAAI,EAAEvD,aAAa,CAACE,OAFqB,EAGzC4D,WAAW,EAAE,IAH4B,EAIzCC,iBAAiB,EAAE,KAJsB,EAP7C,UAgBgBkB,IAhBhB,GAgBuBjF,aAhBvB","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getRandomID } from '../../lib/utils';\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupIds, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Menu, MenuProps } from '../Menu';\nimport { ThemeConsumer, ThemeProvider } from '../../lib/theming/ThemeContext';\n\nimport { isValidPositions } from './validatePositions';\nimport { getStyles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n private setRootNode!: TSetRootNode;\n private emotion!: Emotion;\n\n public render(): JSX.Element {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n return (\n <ThemeProvider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeProvider>\n );\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n const styles = getStyles(this.emotion);\n\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["PopupMenu.tsx"],"names":["React","globalObject","EmotionConsumer","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","ThemeContext","isValidPositions","getStyles","PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootId","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","cloneElement","props","popupMenuId","renderCaption","styles","emotion","opened","openMenu","closeMenu","toggleMenu","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","theme","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","popupHasPin","disableAnimations","setRootNode","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","preventIconsOffset","header","footer","positions","Component","__KONTUR_REACT_UI__","displayName","Type"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getRandomID } from '../../lib/utils';\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupIds, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Menu, MenuProps } from '../Menu';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { isValidPositions } from './validatePositions';\nimport { getStyles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n private setRootNode!: TSetRootNode;\n private emotion!: Emotion;\n\n public render(): JSX.Element {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n const styles = getStyles(this.emotion);\n\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
|
|
@@ -6,6 +6,8 @@ import { getRandomID } from "../../../lib/utils";
|
|
|
6
6
|
import { Upgrade } from "../../../lib/Upgrades";
|
|
7
7
|
import { callChildRef } from "../../../lib/callChildRef/callChildRef";
|
|
8
8
|
import { RenderInnerContainer } from "../RenderInnerContainer";
|
|
9
|
+
export var PORTAL_INLET_ATTR = 'data-render-container-id';
|
|
10
|
+
export var PORTAL_OUTLET_ATTR = 'data-rendered-container-id';
|
|
9
11
|
export var RenderContainer = /*#__PURE__*/function (_React$Component) {
|
|
10
12
|
_inheritsLoose(RenderContainer, _React$Component);
|
|
11
13
|
|
|
@@ -19,6 +21,18 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
19
21
|
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
20
22
|
_this.domContainer = null;
|
|
21
23
|
_this.rootId = RenderContainer.getRootId();
|
|
24
|
+
|
|
25
|
+
_this.renderMain = function () {
|
|
26
|
+
if (_this.props.children) {
|
|
27
|
+
_this.mountContainer();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return /*#__PURE__*/React.createElement(RenderInnerContainer, _extends({}, _this.props, {
|
|
31
|
+
domContainer: _this.domContainer,
|
|
32
|
+
rootId: _this.rootId
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
35
|
+
|
|
22
36
|
return _this;
|
|
23
37
|
}
|
|
24
38
|
|
|
@@ -41,14 +55,7 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
41
55
|
};
|
|
42
56
|
|
|
43
57
|
_proto.render = function render() {
|
|
44
|
-
|
|
45
|
-
this.mountContainer();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return /*#__PURE__*/React.createElement(RenderInnerContainer, _extends({}, this.props, {
|
|
49
|
-
domContainer: this.domContainer,
|
|
50
|
-
rootId: this.rootId
|
|
51
|
-
}));
|
|
58
|
+
return this.renderMain();
|
|
52
59
|
};
|
|
53
60
|
|
|
54
61
|
_proto.createContainer = function createContainer() {
|
|
@@ -58,7 +65,7 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
58
65
|
|
|
59
66
|
if (domContainer) {
|
|
60
67
|
domContainer.setAttribute('class', Upgrade.getSpecificityClassName());
|
|
61
|
-
domContainer.setAttribute(
|
|
68
|
+
domContainer.setAttribute(PORTAL_OUTLET_ATTR, "" + this.rootId);
|
|
62
69
|
this.domContainer = domContainer;
|
|
63
70
|
}
|
|
64
71
|
};
|
|
@@ -70,10 +77,10 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
70
77
|
this.createContainer();
|
|
71
78
|
}
|
|
72
79
|
|
|
73
|
-
|
|
74
|
-
var _globalObject$documen3;
|
|
80
|
+
var rootElement = (_globalObject$documen2 = globalObject.document) == null ? void 0 : _globalObject$documen2.body;
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
if (this.domContainer && this.domContainer.parentNode !== rootElement) {
|
|
83
|
+
rootElement == null ? void 0 : rootElement.appendChild(this.domContainer);
|
|
77
84
|
|
|
78
85
|
if (this.props.containerRef) {
|
|
79
86
|
callChildRef(this.props.containerRef, this.domContainer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["RenderContainer.tsx"],"names":["React","globalObject","getRandomID","Upgrade","callChildRef","RenderInnerContainer","RenderContainer","domContainer","rootId","getRootId","
|
|
1
|
+
{"version":3,"sources":["RenderContainer.tsx"],"names":["React","globalObject","getRandomID","Upgrade","callChildRef","RenderInnerContainer","PORTAL_INLET_ATTR","PORTAL_OUTLET_ATTR","RenderContainer","domContainer","rootId","getRootId","renderMain","props","children","mountContainer","shouldComponentUpdate","nextProps","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","document","createElement","setAttribute","getSpecificityClassName","rootElement","body","parentNode","appendChild","containerRef","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nimport { RenderInnerContainer } from './RenderInnerContainer';\nimport { RenderContainerProps } from './RenderContainerTypes';\n\nexport const PORTAL_INLET_ATTR = 'data-render-container-id';\nexport const PORTAL_OUTLET_ATTR = 'data-rendered-container-id';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n public static displayName = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n return this.renderMain();\n }\n\n private renderMain = () => {\n if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n };\n\n private createContainer() {\n const domContainer = globalObject.document?.createElement('div');\n\n if (domContainer) {\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute(PORTAL_OUTLET_ATTR, `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n if (!this.domContainer) {\n this.createContainer();\n }\n\n const rootElement = globalObject.document?.body;\n if (this.domContainer && this.domContainer.parentNode !== rootElement) {\n rootElement?.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RenderContainerProps } from './RenderContainerTypes';
|
|
3
|
+
export declare const PORTAL_INLET_ATTR = "data-render-container-id";
|
|
4
|
+
export declare const PORTAL_OUTLET_ATTR = "data-rendered-container-id";
|
|
3
5
|
export declare class RenderContainer extends React.Component<RenderContainerProps> {
|
|
4
6
|
static __KONTUR_REACT_UI__: string;
|
|
5
7
|
static displayName: string;
|
|
@@ -9,6 +11,7 @@ export declare class RenderContainer extends React.Component<RenderContainerProp
|
|
|
9
11
|
shouldComponentUpdate(nextProps: RenderContainerProps): boolean;
|
|
10
12
|
componentWillUnmount(): void;
|
|
11
13
|
render(): JSX.Element;
|
|
14
|
+
private renderMain;
|
|
12
15
|
private createContainer;
|
|
13
16
|
private mountContainer;
|
|
14
17
|
private destroyContainer;
|