@sberbusiness/triplex-next 0.39.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/{AlertProcessSpoiler-DRoHuVl6.js → AlertProcessSpoiler-BtnKN4rB.js} +17 -17
- package/chunks/{AlertProcessSpoiler-DRoHuVl6.js.map → AlertProcessSpoiler-BtnKN4rB.js.map} +1 -1
- package/chunks/{CalendarViewItem-AChLlz4N.js → CalendarViewItem-RCL-JeQJ.js} +31 -29
- package/chunks/CalendarViewItem-RCL-JeQJ.js.map +1 -0
- package/chunks/Card.module-CoOqpkwS.js +32 -0
- package/chunks/Card.module-CoOqpkwS.js.map +1 -0
- package/chunks/Carousel.module-DvV8MD7r.js +30 -0
- package/chunks/Carousel.module-DvV8MD7r.js.map +1 -0
- package/chunks/CheckboxTreeExtended.module-Clecba-z.js +24 -0
- package/chunks/CheckboxTreeExtended.module-Clecba-z.js.map +1 -0
- package/chunks/{Chip-DGvjOx0y.js → Chip-Cp08qRYJ.js} +28 -28
- package/chunks/Chip-Cp08qRYJ.js.map +1 -0
- package/chunks/Confirm.module-DM72PYpZ.js +24 -0
- package/chunks/Confirm.module-DM72PYpZ.js.map +1 -0
- package/chunks/{DropdownListItem-COR0eOzM.js → DropdownListItem-BVmaxhUL.js} +21 -23
- package/chunks/DropdownListItem-BVmaxhUL.js.map +1 -0
- package/chunks/DropdownMobile.module-CZWR3s0W.js +40 -0
- package/chunks/DropdownMobile.module-CZWR3s0W.js.map +1 -0
- package/chunks/Footer.module-BVlnkdmW.js +12 -0
- package/chunks/Footer.module-BVlnkdmW.js.map +1 -0
- package/chunks/{HeaderLayoutSidebar.module-o5cCUCGl.js → HeaderLayoutSidebar.module-BucgINex.js} +4 -4
- package/chunks/HeaderLayoutSidebar.module-BucgINex.js.map +1 -0
- package/chunks/HeaderTabs.module-C_a4JHKH.js +12 -0
- package/chunks/HeaderTabs.module-C_a4JHKH.js.map +1 -0
- package/chunks/{HeaderTitle.module-CUVjwVW7.js → HeaderTitle.module-CcCkeiqR.js} +4 -4
- package/chunks/HeaderTitle.module-CcCkeiqR.js.map +1 -0
- package/chunks/ImageGalleryExtendedMain.module-rFvyNDtg.js +28 -0
- package/chunks/ImageGalleryExtendedMain.module-rFvyNDtg.js.map +1 -0
- package/chunks/{ImageGalleryExtendedThumb-B7xjP3UP.js → ImageGalleryExtendedThumb-DHoiTDGV.js} +6 -6
- package/chunks/{ImageGalleryExtendedThumb-B7xjP3UP.js.map → ImageGalleryExtendedThumb-DHoiTDGV.js.map} +1 -1
- package/chunks/IslandAccordion.module-Bpxl1nou.js +44 -0
- package/chunks/IslandAccordion.module-Bpxl1nou.js.map +1 -0
- package/chunks/IslandWidgetFooter.module-Gq4r6MKf.js +12 -0
- package/chunks/IslandWidgetFooter.module-Gq4r6MKf.js.map +1 -0
- package/chunks/IslandWidgetHeader.module-60ngN9Fp.js +20 -0
- package/chunks/IslandWidgetHeader.module-60ngN9Fp.js.map +1 -0
- package/chunks/{LightBoxContent-blTzF5vv.js → LightBoxContent-faIO64ku.js} +15 -15
- package/chunks/{LightBoxContent-blTzF5vv.js.map → LightBoxContent-faIO64ku.js.map} +1 -1
- package/chunks/LightBoxControls.module-zALKUa-L.js +26 -0
- package/chunks/LightBoxControls.module-zALKUa-L.js.map +1 -0
- package/chunks/{LightBoxSideOverlayClose.module-BVuB53vM.js → LightBoxSideOverlayClose.module-BJOafmhE.js} +4 -4
- package/chunks/LightBoxSideOverlayClose.module-BJOafmhE.js.map +1 -0
- package/chunks/{ListItemControlsButton-DulKpjwV.js → ListItemControlsButton-Cgn5z-4-.js} +10 -10
- package/chunks/{ListItemControlsButton-DulKpjwV.js.map → ListItemControlsButton-Cgn5z-4-.js.map} +1 -1
- package/chunks/ListItemTail.module-SH-k_8bE.js +18 -0
- package/chunks/ListItemTail.module-SH-k_8bE.js.map +1 -0
- package/chunks/ListMasterFooter.module-B7KHgt78.js +14 -0
- package/chunks/ListMasterFooter.module-B7KHgt78.js.map +1 -0
- package/chunks/ModalWindow.module-g4fzzLBJ.js +28 -0
- package/chunks/ModalWindow.module-g4fzzLBJ.js.map +1 -0
- package/chunks/Notification.module-GuNThi0F.js +34 -0
- package/chunks/Notification.module-GuNThi0F.js.map +1 -0
- package/chunks/Overlay.module-Bz905CUE.js +30 -0
- package/chunks/Overlay.module-Bz905CUE.js.map +1 -0
- package/chunks/Page.module-Cew9zu6t.js +15 -0
- package/chunks/Page.module-Cew9zu6t.js.map +1 -0
- package/chunks/SMSField.module-DF_16zDO.js +26 -0
- package/chunks/SMSField.module-DF_16zDO.js.map +1 -0
- package/chunks/SliderExtendedMarks.module-DuovwuEN.js +24 -0
- package/chunks/SliderExtendedMarks.module-DuovwuEN.js.map +1 -0
- package/chunks/{SliderExtendedRail-kRXLpNwt.js → SliderExtendedRail-52OucNYf.js} +6 -6
- package/chunks/{SliderExtendedRail-kRXLpNwt.js.map → SliderExtendedRail-52OucNYf.js.map} +1 -1
- package/chunks/StatusTracker.module-BeFh9DCu.js +44 -0
- package/chunks/StatusTracker.module-BeFh9DCu.js.map +1 -0
- package/chunks/{StepperStepArrowBorder-CsES9yvO.js → StepperStepArrowBorder-0d-ly-A8.js} +16 -16
- package/chunks/{StepperStepArrowBorder-CsES9yvO.js.map → StepperStepArrowBorder-0d-ly-A8.js.map} +1 -1
- package/chunks/{SuggestFieldMobileDropdownHint-YOB5F8TH.js → SuggestFieldMobileDropdownHint-CPo1oKCp.js} +3 -3
- package/chunks/{SuggestFieldMobileDropdownHint-YOB5F8TH.js.map → SuggestFieldMobileDropdownHint-CPo1oKCp.js.map} +1 -1
- package/chunks/TableFooter.module-CceBkCov.js +22 -0
- package/chunks/TableFooter.module-CceBkCov.js.map +1 -0
- package/chunks/TabsExtended.module-BV1A2Ngf.js +26 -0
- package/chunks/TabsExtended.module-BV1A2Ngf.js.map +1 -0
- package/chunks/TabsLine.module-CpjGY1fI.js +36 -0
- package/chunks/TabsLine.module-CpjGY1fI.js.map +1 -0
- package/chunks/TooltipDesktop.module-D22gy-42.js +32 -0
- package/chunks/TooltipDesktop.module-D22gy-42.js.map +1 -0
- package/chunks/TreeView.module-uRhEW69Z.js +12 -0
- package/chunks/TreeView.module-uRhEW69Z.js.map +1 -0
- package/chunks/{UploadZoneInput-Dc9Z6NrZ.js → UploadZoneInput-CkHsnEn0.js} +6 -6
- package/chunks/{UploadZoneInput-Dc9Z6NrZ.js.map → UploadZoneInput-CkHsnEn0.js.map} +1 -1
- package/chunks/{constants-b3mFJcdx.js → constants-CroH6kNa.js} +27 -27
- package/chunks/{constants-b3mFJcdx.js.map → constants-CroH6kNa.js.map} +1 -1
- package/chunks/{utils-BXgC_I8P.js → utils-B4HVj8oI.js} +8 -8
- package/chunks/utils-B4HVj8oI.js.map +1 -0
- package/chunks/{utils-DdrwqT9t.js → utils-CVWtdPuN.js} +6 -6
- package/chunks/{utils-DdrwqT9t.js.map → utils-CVWtdPuN.js.map} +1 -1
- package/chunks/{utils-Bv8Gz_QY.js → utils-DI2WUTKf.js} +27 -27
- package/chunks/{utils-Bv8Gz_QY.js.map → utils-DI2WUTKf.js.map} +1 -1
- package/chunks/{utils-B1pi9Ckc.js → utils-f5ZO_GR2.js} +11 -11
- package/chunks/{utils-B1pi9Ckc.js.map → utils-f5ZO_GR2.js.map} +1 -1
- package/chunks/vendor-BtZO8a0z.js +17814 -0
- package/chunks/vendor-BtZO8a0z.js.map +1 -0
- package/components/AbstractTree/AbstractTreeNode.js +1 -1
- package/components/AccordionBase/protected/AccordionBase.js +1 -1
- package/components/Alert/AlertContext/AlertContext.js +8 -8
- package/components/Alert/AlertProcess/AlertProcess.js +3 -3
- package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +2 -2
- package/components/Amount/Amount.js +3 -3
- package/components/Avatar/Avatar.js +14 -14
- package/components/Badge/Badge.js +5 -5
- package/components/Badge/BadgeDot.js +5 -5
- package/components/Badge/components/BadgeContent.js +7 -7
- package/components/Badge/components/BadgePostfix.js +2 -2
- package/components/Badge/components/BadgePrefix.js +2 -2
- package/components/Body/Body.js +4 -4
- package/components/Button/Button.js +21 -21
- package/components/Button/ButtonBase.js +1 -1
- package/components/Button/ButtonDropdown.js +9 -9
- package/components/Button/ButtonDropdownExtended.js +18 -22
- package/components/Button/ButtonDropdownExtended.js.map +1 -1
- package/components/Button/ButtonIcon.js +4 -4
- package/components/Button/ButtonIcon.js.map +1 -1
- package/components/Calendar/Calendar.js +17 -17
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarContext.js.map +1 -1
- package/components/Calendar/CalendarViewContext.js.map +1 -1
- package/components/Calendar/components/CalendarControls.js +12 -32
- package/components/Calendar/components/CalendarControls.js.map +1 -1
- package/components/Calendar/components/CalendarFooter.js +3 -2
- package/components/Calendar/components/CalendarFooter.js.map +1 -1
- package/components/Calendar/components/CalendarView.js +1 -0
- package/components/Calendar/components/CalendarView.js.map +1 -1
- package/components/Calendar/components/CalendarViewDays.js +32 -56
- package/components/Calendar/components/CalendarViewDays.js.map +1 -1
- package/components/Calendar/components/CalendarViewItem.js +2 -2
- package/components/Calendar/components/CalendarViewMonths.js +30 -52
- package/components/Calendar/components/CalendarViewMonths.js.map +1 -1
- package/components/Calendar/components/CalendarViewYears.js +34 -55
- package/components/Calendar/components/CalendarViewYears.js.map +1 -1
- package/components/Calendar/utils.js +43 -10
- package/components/Calendar/utils.js.map +1 -1
- package/components/Card/CardAction.js +6 -6
- package/components/Card/CardStatic.js +3 -3
- package/components/Card/components/CardContent/CardContent.js +2 -2
- package/components/Card/components/CardContent/components/CardContentBody.js +2 -2
- package/components/Card/components/CardContent/components/CardContentFooter.js +2 -2
- package/components/Card/components/CardContent/components/CardContentHeader.js +2 -2
- package/components/Card/components/CardMedia.js +2 -2
- package/components/Card/enums.js +1 -0
- package/components/Card/enums.js.map +1 -1
- package/components/Card/utils.js +2 -1
- package/components/Card/utils.js.map +1 -1
- package/components/Carousel/Carousel.js +2 -2
- package/components/Carousel/CarouselButton.js +2 -2
- package/components/Carousel/CarouselIndicators.js +2 -2
- package/components/Carousel/CarouselItem.js +2 -2
- package/components/Carousel/CarouselTrack.js +2 -2
- package/components/Carousel/CarouselViewport.js +2 -2
- package/components/CarouselExtended/CarouselExtended.js +2 -2
- package/components/Checkbox/Checkbox.js +11 -11
- package/components/Checkbox/CheckboxXGroup.js +9 -9
- package/components/Checkbox/CheckboxYGroup.js +2 -2
- package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +2 -2
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +2 -2
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +2 -2
- package/components/Chip/Chip.js +2 -2
- package/components/Chip/ChipClearButton.js +2 -2
- package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
- package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
- package/components/Chip/ChipDropdownArrow.js +3 -3
- package/components/Chip/ChipIcon.js +1 -1
- package/components/Chip/ChipMultiselect.js +2 -2
- package/components/Chip/ChipOptions.js +2 -2
- package/components/Chip/ChipSelect/ChipSelect.js +2 -2
- package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
- package/components/Chip/ChipSort.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggest.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggestTarget.js +1 -1
- package/components/Chip/ChipSuggest/desktop/ChipSuggestDesktopDropdownField.js +1 -1
- package/components/Chip/index.js +1 -1
- package/components/ChipGroup/ChipGroup.js +8 -8
- package/components/Col/Col.js +133 -133
- package/components/CollapsibleTree/CollapsibleTree.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +5 -5
- package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +2 -2
- package/components/Confirm/Confirm.js +2 -2
- package/components/Confirm/components/ConfirmCloseButton.js +2 -2
- package/components/Confirm/components/ConfirmContent.js +2 -2
- package/components/Confirm/components/ConfirmContentTitle.js +2 -2
- package/components/Confirm/components/ConfirmControls.js +2 -2
- package/components/DateField/utils.js +2 -2
- package/components/DateField/utils.js.map +1 -1
- package/components/DatePickerExtended/DatePickerExtended.js +2 -2
- package/components/DatePickerExtended/DatePickerExtendedDropdown.js +2 -2
- package/components/DateRange/DateRange.js +4 -4
- package/components/DesignTokens/DesignTokenUtils.js +26 -21
- package/components/DesignTokens/DesignTokenUtils.js.map +1 -1
- package/components/DesignTokens/components/Calendar.js +2 -2
- package/components/DesignTokens/components/Calendar.js.map +1 -1
- package/components/DesignTokens/components/StatusTracker.js +8 -2
- package/components/DesignTokens/components/StatusTracker.js.map +1 -1
- package/components/Divider/Divider.js +18 -18
- package/components/DocumentNumberEdit/DocumentNumberEdit.js +4 -4
- package/components/Dropdown/Dropdown.js +14 -7
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/desktop/DropdownDesktop.js +21 -25
- package/components/Dropdown/desktop/DropdownDesktop.js.map +1 -1
- package/components/Dropdown/desktop/DropdownList.js +38 -73
- package/components/Dropdown/desktop/DropdownList.js.map +1 -1
- package/components/Dropdown/desktop/DropdownListItem.js +2 -2
- package/components/Dropdown/desktop/index.js +1 -1
- package/components/Dropdown/desktop/utils.js +34 -0
- package/components/Dropdown/desktop/utils.js.map +1 -0
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/mobile/DropdownMobile.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileBody.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileClose.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileFooter.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileHeader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileInner.js +6 -4
- package/components/Dropdown/mobile/DropdownMobileInner.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileInput.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileList.js +3 -3
- package/components/Dropdown/mobile/DropdownMobileList.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileListItem.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileListItem.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileLoader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +2 -2
- package/components/Ellipsis/Ellipsis.js +4 -4
- package/components/EmptyView/EmptyView.js +5 -5
- package/components/ExpandAnimation/ExpandAnimation.js +2 -2
- package/components/FocusTrapExtended/FocusTrapExtended.js +21 -9
- package/components/FocusTrapExtended/FocusTrapExtended.js.map +1 -1
- package/components/Footer/Footer.js +1 -1
- package/components/Footer/components/FooterDescription.js +2 -2
- package/components/Footer/components/FooterDescriptionContent.js +2 -2
- package/components/Footer/components/FooterDescriptionControls.js +2 -2
- package/components/FormField/FormField.js +21 -21
- package/components/FormField/FormField.js.map +1 -1
- package/components/FormField/FormFieldContext.js.map +1 -1
- package/components/FormField/FormFieldDescriptionContext.js.map +1 -1
- package/components/FormField/components/FormFieldClear.js +2 -2
- package/components/FormField/components/FormFieldClear.js.map +1 -1
- package/components/FormField/components/FormFieldCounter.js +5 -4
- package/components/FormField/components/FormFieldCounter.js.map +1 -1
- package/components/FormField/components/FormFieldDescription.js +14 -6
- package/components/FormField/components/FormFieldDescription.js.map +1 -1
- package/components/FormField/components/FormFieldInput.js +8 -9
- package/components/FormField/components/FormFieldInput.js.map +1 -1
- package/components/FormField/components/FormFieldLabel.js +11 -12
- package/components/FormField/components/FormFieldLabel.js.map +1 -1
- package/components/FormField/components/FormFieldMaskedInput.js +7 -7
- package/components/FormField/components/FormFieldPostfix.js +6 -30
- package/components/FormField/components/FormFieldPostfix.js.map +1 -1
- package/components/FormField/components/FormFieldPrefix.js +6 -30
- package/components/FormField/components/FormFieldPrefix.js.map +1 -1
- package/components/FormField/components/FormFieldTarget.js +9 -9
- package/components/FormField/components/FormFieldTextarea.js +5 -5
- package/components/FormField/components/useFormFieldAffixWidth.js +33 -0
- package/components/FormField/components/useFormFieldAffixWidth.js.map +1 -0
- package/components/FormField/components/utils.js +9 -1
- package/components/FormField/components/utils.js.map +1 -1
- package/components/FormField/consts.js.map +1 -1
- package/components/FormField/enums.js.map +1 -1
- package/components/FormField/index.js +2 -3
- package/components/Gap/Gap.js +9 -9
- package/components/Header/Header.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +2 -2
- package/components/Header/components/HeaderSubheader/HeaderSubheader.js +3 -3
- package/components/Header/components/HeaderTabs/HeaderTabs.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsContent.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsControls.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitle.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleContent.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleControls.js +2 -2
- package/components/HelpBox/HelpBox.js +2 -2
- package/components/IconWrapper/IconWrapper.js +8 -8
- package/components/IconWrapper/IconWrapper.js.map +1 -1
- package/components/ImageGallery/ImageGallery.js +1 -1
- package/components/ImageGalleryExtended/ImageGalleryExtended.js +3 -3
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +4 -4
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +2 -2
- package/components/ImageGalleryExtended/components/index.js +1 -1
- package/components/ImageGalleryExtended/index.js +1 -1
- package/components/Island/Island.js +4 -4
- package/components/Island/Island.js.map +1 -1
- package/components/Island/components/IslandBody.js +3 -2
- package/components/Island/components/IslandBody.js.map +1 -1
- package/components/Island/components/IslandFooter.js +8 -5
- package/components/Island/components/IslandFooter.js.map +1 -1
- package/components/Island/components/IslandHeader.js +8 -5
- package/components/Island/components/IslandHeader.js.map +1 -1
- package/components/Island/enums.js.map +1 -1
- package/components/Island/utils.js +1 -1
- package/components/IslandAccordion/IslandAccordion.js +3 -3
- package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
- package/components/IslandAccordion/components/IslandAccordionFooter.js +2 -2
- package/components/IslandAccordion/components/IslandAccordionItem.js +3 -3
- package/components/IslandWidget/IslandWidget.js +5 -5
- package/components/IslandWidget/components/IslandWidgetBody.js +2 -2
- package/components/IslandWidget/components/IslandWidgetExtraFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooterContent.js +1 -1
- package/components/IslandWidget/components/IslandWidgetFooterControls.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeader.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderContent.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderControls.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +2 -2
- package/components/IslandWidget/components/IslandWidgetWrapper.js +2 -2
- package/components/KeyDownListener/ComposedKeyDownListener.js +7 -8
- package/components/KeyDownListener/ComposedKeyDownListener.js.map +1 -1
- package/components/KeyDownListener/KeyDownListener.js +3 -4
- package/components/KeyDownListener/KeyDownListener.js.map +1 -1
- package/components/LightBox/LightBox.js +6 -6
- package/components/LightBox/LightBoxContent.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxArrow.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxClose.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxControls.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxNext.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxPrev.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +13 -14
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js.map +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +1 -1
- package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +4 -4
- package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +4 -4
- package/components/LightBox/LightBoxViewManager/LightBoxViewManager.js +1 -1
- package/components/Link/Link.js +6 -6
- package/components/List/List.js +4 -4
- package/components/List/ListSortable.js +1 -1
- package/components/List/components/ListActionItem.js +2 -2
- package/components/List/components/ListEmptyState.js +2 -2
- package/components/List/components/ListItem.js +1 -1
- package/components/List/components/ListItemContent.js +5 -5
- package/components/List/components/ListItemControls.js +2 -2
- package/components/List/components/ListItemControlsButton.js +2 -2
- package/components/List/components/ListItemControlsButtonDropdown.js +2 -2
- package/components/List/components/ListItemLoading.js +2 -2
- package/components/List/components/ListItemSelectable.js +7 -7
- package/components/List/components/ListItemTailLeft.js +2 -2
- package/components/List/components/ListItemTailRight.js +2 -2
- package/components/List/components/ListSortableItem.js +3 -3
- package/components/List/components/ListSortableItemControls.js +2 -2
- package/components/List/components/ListSortableItemTarget.js +5 -5
- package/components/List/components/ListTableItem.js +4 -4
- package/components/List/index.js +1 -1
- package/components/ListMaster/ListMaster.js +1 -1
- package/components/ListMaster/components/ListMasterBody.js +1 -1
- package/components/ListMaster/components/ListMasterChipGroup.js +2 -2
- package/components/ListMaster/components/ListMasterFooter.js +2 -2
- package/components/ListMaster/components/ListMasterFooterControls.js +2 -2
- package/components/ListMaster/components/ListMasterFooterDescription.js +2 -2
- package/components/ListMaster/components/ListMasterHeader.js +3 -3
- package/components/ListMaster/components/SelectionControls.js +3 -3
- package/components/Loader/LoaderMiddle/LoaderMiddle.js +11 -11
- package/components/Loader/LoaderMiddle/LoaderMiddle.js.map +1 -1
- package/components/Loader/LoaderSmall/LoaderSmall.js +11 -11
- package/components/LoaderScreen/LoaderScreen.js +13 -12
- package/components/LoaderScreen/LoaderScreen.js.map +1 -1
- package/components/Marker/Marker.js +2 -2
- package/components/Marker/utils.js +1 -1
- package/components/MarkerStatus/MarkerStatus.js +8 -8
- package/components/ModalWindow/ModalWindow.js +2 -2
- package/components/ModalWindow/components/ModalWindowBody.js +2 -2
- package/components/ModalWindow/components/ModalWindowClose.js +1 -1
- package/components/ModalWindow/components/ModalWindowContent.js +2 -2
- package/components/ModalWindow/components/ModalWindowHeader.js +2 -2
- package/components/ModalWindow/components/ModalWindowViewManager.js +2 -2
- package/components/MonthYearField/utils.js +2 -1
- package/components/MonthYearField/utils.js.map +1 -1
- package/components/MonthYearRange/MonthYearRange.js +4 -4
- package/components/MultiselectField/components/MultiselectFieldDropdown.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +6 -6
- package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +2 -2
- package/components/Notification/Notification.js +3 -3
- package/components/Notification/NotificationGrouped.js +1 -1
- package/components/Notification/components/NotificationBody.js +1 -1
- package/components/Notification/components/NotificationBodyList.js +2 -2
- package/components/Notification/components/NotificationClose.js +1 -1
- package/components/Notification/components/NotificationFooter.js +1 -1
- package/components/Notification/components/NotificationGroupedFooter.js +2 -2
- package/components/Notification/components/NotificationHeader.js +1 -1
- package/components/Notification/components/NotificationIcon.js +1 -1
- package/components/Notification/components/NotificationTime.js +1 -1
- package/components/OrderedList/OrderedList.js +3 -3
- package/components/OrderedList/OrderedListItem.js +3 -3
- package/components/Overlay/Overlay.js +2 -2
- package/components/Overlay/OverlayMask.js +2 -2
- package/components/Overlay/OverlayPanel.js +2 -2
- package/components/Page/Page.js +2 -2
- package/components/Page/components/BodyPage.js +4 -4
- package/components/Page/components/FooterPage.js +2 -2
- package/components/Page/components/HeaderPage.js +2 -2
- package/components/Pagination/components/PaginationExtended.js +3 -3
- package/components/Pagination/components/PaginationNavigation.js +1 -1
- package/components/Pagination/components/PaginationNavigation.js.map +1 -1
- package/components/Pagination/components/PaginationNavigationButton.js +2 -2
- package/components/Pagination/components/PaginationNavigationExtended.js +2 -2
- package/components/Pagination/components/PaginationPageButton.js +3 -3
- package/components/Pagination/components/PaginationPageEllipsis.js +2 -2
- package/components/Pagination/components/PaginationSelect.js +3 -3
- package/components/Pagination/{utils/paginationUtils.js → utils.js} +2 -2
- package/components/Pagination/utils.js.map +1 -0
- package/components/Portal/Portal.js.map +1 -1
- package/components/Radio/Radio.js +10 -10
- package/components/Radio/RadioXGroup.js +9 -9
- package/components/Radio/RadioYGroup.js +2 -2
- package/components/Row/Row.js +5 -5
- package/components/SMSField/SMSField.js +3 -3
- package/components/SMSField/components/RefreshIcon.js +2 -2
- package/components/SMSField/components/SMSFieldInput.js +2 -2
- package/components/SMSField/components/SMSFieldRefresh.js +2 -2
- package/components/SMSField/components/SMSFieldSubmit.js +2 -2
- package/components/SMSField/components/SMSFieldTooltip.js +1 -1
- package/components/SegmentedControl/SegmentedControl.js +10 -10
- package/components/SegmentedControl/SegmentedControlSegment.js +4 -4
- package/components/SelectExtendedField/SelectExtendedField.js +3 -2
- package/components/SelectExtendedField/SelectExtendedField.js.map +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdown.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdownDefault.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldTarget.js +8 -8
- package/components/SelectField/SelectField.js +2 -2
- package/components/Skeleton/Skeleton.js +5 -5
- package/components/SliderExtended/SliderExtended.js +3 -3
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +7 -6
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js.map +1 -1
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +2 -2
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +2 -2
- package/components/SliderExtended/components/SliderExtendedRail.js +2 -2
- package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +5 -5
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +8 -7
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js.map +1 -1
- package/components/SmallInput/SmallInput.js +2 -2
- package/components/Spoiler/Spoiler.js +11 -11
- package/components/StatusTracker/StatusTracker.js +8 -7
- package/components/StatusTracker/StatusTracker.js.map +1 -1
- package/components/StatusTracker/components/StatusTrackerAlert.js +2 -2
- package/components/StatusTracker/components/StatusTrackerBody.js +2 -2
- package/components/StatusTracker/components/StatusTrackerButton.js +2 -2
- package/components/StatusTracker/components/StatusTrackerDescription.js +2 -2
- package/components/StatusTracker/components/StatusTrackerFooter.js +2 -2
- package/components/StatusTracker/components/StatusTrackerHeader.js +2 -2
- package/components/StatusTracker/components/StatusTrackerMedia.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatus.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatusGroup.js +2 -2
- package/components/StatusTracker/components/StatusTrackerSum.js +2 -2
- package/components/StatusTracker/components/StatusTrackerTitle.js +2 -2
- package/components/Step/Step.js +11 -11
- package/components/Stepper/Stepper.js +9 -9
- package/components/Stepper/StepperExtended.js +2 -2
- package/components/Stepper/StepperStep.js +3 -3
- package/components/Stepper/StepperStepArrowBorder.js +1 -1
- package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
- package/components/Suggest/useSuggest.js +1 -1
- package/components/SuggestField/SuggestField.js +1 -1
- package/components/SuggestField/desktop/SuggestFieldDesktop.js +2 -2
- package/components/SuggestField/desktop/SuggestFieldDesktopDropdown.js +1 -1
- package/components/SuggestField/index.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobile.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobileDropdown.js +2 -2
- package/components/SuggestField/mobile/SuggestFieldMobileDropdownHint.js +1 -1
- package/components/SuggestField/mobile/index.js +1 -1
- package/components/SwipeableArea/SwipeableArea.js +9 -9
- package/components/Table/ChipPanel.js +2 -2
- package/components/Table/ChipPanelLinks.js +2 -2
- package/components/Table/FilterPanel.js +3 -3
- package/components/Table/MasterTable.js +3 -3
- package/components/Table/NoColumns.js +3 -3
- package/components/Table/PaginationPanel.js +3 -3
- package/components/Table/TableBasic/TableBasic.js +2 -2
- package/components/Table/TableBasic/components/TableBasicBody.js +2 -2
- package/components/Table/TableBasic/components/TableBasicHeader.js +2 -2
- package/components/Table/TableBasic/components/TableBasicRow.js +2 -2
- package/components/Table/TableBasicSettings/TableBasicSettings.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +2 -2
- package/components/Table/TableFooter/TableFooter.js +2 -2
- package/components/Table/TableFooter/components/TableFooterSummary.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummaryAmount.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectAllButton.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectedCount.js +1 -1
- package/components/Table/utils.js +1 -1
- package/components/Tabs/Tabs.js +6 -6
- package/components/TabsExtended/TabsExtended.js +3 -3
- package/components/TabsExtended/components/TabsExtendedContent.js +2 -2
- package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTab.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabButton.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +2 -2
- package/components/TabsExtended/utils.js +1 -1
- package/components/TabsLine/TabsLine.js +2 -2
- package/components/TabsLine/components/TabsLineDesktop.js +2 -2
- package/components/TabsLine/components/TabsLineDropdown.js +3 -3
- package/components/TabsLine/components/TabsLineItem.js +2 -2
- package/components/TabsLine/components/TabsLineMobile.js +2 -2
- package/components/Tag/Tag.js +6 -6
- package/components/TagColor/TagColor.js +11 -11
- package/components/TagGroup/TagGroup.js +5 -5
- package/components/ThemeProvider/ETriplexNextTheme.js.map +1 -1
- package/components/ThemeProvider/ThemeProvider.js +6 -4
- package/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/components/ThemeProvider/ThemeProviderContext.js.map +1 -1
- package/components/ThemeProvider/components/ThemeProviderView.js +7 -10
- package/components/ThemeProvider/components/ThemeProviderView.js.map +1 -1
- package/components/ThemeProvider/useToken.js.map +1 -1
- package/components/Tooltip/Tooltip.js +49 -52
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/TootlipContext.js.map +1 -1
- package/components/Tooltip/components/common/TooltipBody.js +2 -2
- package/components/Tooltip/components/common/TooltipLink.js +8 -19
- package/components/Tooltip/components/common/TooltipLink.js.map +1 -1
- package/components/Tooltip/components/common/TooltipTarget.js.map +1 -1
- package/components/Tooltip/components/common/TooltipXButton.js +1 -1
- package/components/Tooltip/components/desktop/TooltipDesktop.js +24 -12
- package/components/Tooltip/components/desktop/TooltipDesktop.js.map +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +26 -25
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js.map +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +9 -18
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js.map +1 -1
- package/components/Tooltip/components/mobile/TooltipMobile.js +11 -7
- package/components/Tooltip/components/mobile/TooltipMobile.js.map +1 -1
- package/components/Tooltip/components/mobile/components/TooltipMobileHeader.js +2 -2
- package/components/Tooltip/components/mobile/components/TooltipMobileHeader.js.map +1 -1
- package/components/Tooltip/enums.js.map +1 -1
- package/components/Tooltip/utils/Positioning.js +18 -17
- package/components/Tooltip/utils/Positioning.js.map +1 -1
- package/components/Tooltip/utils/useTooltipTheme.js +40 -12
- package/components/Tooltip/utils/useTooltipTheme.js.map +1 -1
- package/components/TopOverlay/TopOverlay.js +7 -7
- package/components/TreeView/TreeView.js +2 -2
- package/components/TreeView/components/TreeViewGroup.js +1 -1
- package/components/TreeView/components/TreeViewNode.js +2 -2
- package/components/Typography/Caption.js +8 -8
- package/components/Typography/CodeText.js +3 -3
- package/components/Typography/Text.js +10 -10
- package/components/Typography/Title.js +11 -11
- package/components/Typography/Title.js.map +1 -1
- package/components/Typography/constants.js +1 -1
- package/components/UnorderedList/UnorderedList.js +3 -3
- package/components/UnorderedList/UnorderedListItem.js +3 -3
- package/components/UploadZone/UploadZone.js +3 -3
- package/components/UploadZone/components/UploadZoneInput.js +2 -2
- package/components/UploadZone/index.js +1 -1
- package/components/WindowResizeListener/WindowResizeListener.js +1 -1
- package/components/index.js +7 -8
- package/consts/DateConst.js.map +1 -1
- package/index.d.ts +254 -110
- package/index.js +7 -8
- package/package.json +1 -1
- package/styles/triplex-next.css +2949 -2939
- package/utils/amountUtils.js +1 -1
- package/chunks/CalendarViewItem-AChLlz4N.js.map +0 -1
- package/chunks/Card.module-CZ1_wRdI.js +0 -30
- package/chunks/Card.module-CZ1_wRdI.js.map +0 -1
- package/chunks/Carousel.module-COe08s01.js +0 -30
- package/chunks/Carousel.module-COe08s01.js.map +0 -1
- package/chunks/CheckboxTreeExtended.module-CsB5Xz5K.js +0 -24
- package/chunks/CheckboxTreeExtended.module-CsB5Xz5K.js.map +0 -1
- package/chunks/Chip-DGvjOx0y.js.map +0 -1
- package/chunks/Confirm.module-CEJR1txO.js +0 -24
- package/chunks/Confirm.module-CEJR1txO.js.map +0 -1
- package/chunks/DropdownListItem-COR0eOzM.js.map +0 -1
- package/chunks/DropdownMobile.module-DUiUSr13.js +0 -40
- package/chunks/DropdownMobile.module-DUiUSr13.js.map +0 -1
- package/chunks/Footer.module-DUTwBl0x.js +0 -12
- package/chunks/Footer.module-DUTwBl0x.js.map +0 -1
- package/chunks/HeaderLayoutSidebar.module-o5cCUCGl.js.map +0 -1
- package/chunks/HeaderTabs.module-Ch5Mbe7q.js +0 -12
- package/chunks/HeaderTabs.module-Ch5Mbe7q.js.map +0 -1
- package/chunks/HeaderTitle.module-CUVjwVW7.js.map +0 -1
- package/chunks/ImageGalleryExtendedMain.module-BMoLBevi.js +0 -28
- package/chunks/ImageGalleryExtendedMain.module-BMoLBevi.js.map +0 -1
- package/chunks/IslandAccordion.module-YxGUkwAy.js +0 -44
- package/chunks/IslandAccordion.module-YxGUkwAy.js.map +0 -1
- package/chunks/IslandWidgetFooter.module-Bk3x1llO.js +0 -12
- package/chunks/IslandWidgetFooter.module-Bk3x1llO.js.map +0 -1
- package/chunks/IslandWidgetHeader.module-BcrHca9Y.js +0 -20
- package/chunks/IslandWidgetHeader.module-BcrHca9Y.js.map +0 -1
- package/chunks/LightBoxControls.module-DisqspyG.js +0 -26
- package/chunks/LightBoxControls.module-DisqspyG.js.map +0 -1
- package/chunks/LightBoxSideOverlayClose.module-BVuB53vM.js.map +0 -1
- package/chunks/ListItemTail.module-B24d99yc.js +0 -18
- package/chunks/ListItemTail.module-B24d99yc.js.map +0 -1
- package/chunks/ListMasterFooter.module-XwfScyft.js +0 -14
- package/chunks/ListMasterFooter.module-XwfScyft.js.map +0 -1
- package/chunks/ModalWindow.module-CAccCwuD.js +0 -28
- package/chunks/ModalWindow.module-CAccCwuD.js.map +0 -1
- package/chunks/Notification.module-yXlyaoAB.js +0 -34
- package/chunks/Notification.module-yXlyaoAB.js.map +0 -1
- package/chunks/Overlay.module-gnmqM0Mg.js +0 -30
- package/chunks/Overlay.module-gnmqM0Mg.js.map +0 -1
- package/chunks/Page.module-CyuFcFEq.js +0 -15
- package/chunks/Page.module-CyuFcFEq.js.map +0 -1
- package/chunks/SMSField.module-By9uV96A.js +0 -26
- package/chunks/SMSField.module-By9uV96A.js.map +0 -1
- package/chunks/SliderExtendedMarks.module-DwGOsapl.js +0 -24
- package/chunks/SliderExtendedMarks.module-DwGOsapl.js.map +0 -1
- package/chunks/StatusTracker.module-DSfmXNxw.js +0 -42
- package/chunks/StatusTracker.module-DSfmXNxw.js.map +0 -1
- package/chunks/TableFooter.module-DM5tgc_b.js +0 -22
- package/chunks/TableFooter.module-DM5tgc_b.js.map +0 -1
- package/chunks/TabsExtended.module-91rJFYMk.js +0 -26
- package/chunks/TabsExtended.module-91rJFYMk.js.map +0 -1
- package/chunks/TabsLine.module-DAe_P2wh.js +0 -36
- package/chunks/TabsLine.module-DAe_P2wh.js.map +0 -1
- package/chunks/TooltipDesktop.module-BW_tN5pN.js +0 -32
- package/chunks/TooltipDesktop.module-BW_tN5pN.js.map +0 -1
- package/chunks/TreeView.module-BheprFto.js +0 -12
- package/chunks/TreeView.module-BheprFto.js.map +0 -1
- package/chunks/utils-BXgC_I8P.js.map +0 -1
- package/chunks/vendor-DKrjZZwJ.js +0 -36109
- package/chunks/vendor-DKrjZZwJ.js.map +0 -1
- package/components/Carousel/__tests__/utils.js +0 -92
- package/components/Carousel/__tests__/utils.js.map +0 -1
- package/components/Pagination/utils/paginationUtils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipTarget.js","sources":["../../../../../src/components/Tooltip/components/common/TooltipTarget.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { ITooltipTargetProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n
|
|
1
|
+
{"version":3,"file":"TooltipTarget.js","sources":["../../../../../src/components/Tooltip/components/common/TooltipTarget.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { ITooltipTargetProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/**\n * Целевой элемент компонента Tooltip.\n * Не рендерит собственную разметку: клонирует единственный дочерний элемент,\n * добавляя ему обработчики открытия подсказки. Собственные onClick/onKeyDown ребёнка сохраняются.\n */\nexport const TooltipTarget: React.FC<ITooltipTargetProps> = ({ children }) => {\n const { toggleType, tooltipOpen, targetHoveredRef, setTooltipOpen } = useContext(TooltipContext);\n const child = React.Children.only(children);\n\n /** Обработчик нажатия клавиши. */\n const handleKeyDown = (onKeyDown?: React.KeyboardEventHandler) => (event: React.KeyboardEvent) => {\n const key = event.code || event.keyCode;\n\n if (isKey(key, \"TAB\")) {\n if (tooltipOpen) {\n setTooltipOpen(false);\n }\n }\n onKeyDown?.(event);\n };\n\n /** Обработчик клика. */\n const handleClick = (onClick?: React.MouseEventHandler) => (event: React.MouseEvent) => {\n if (\n toggleType === \"click\" ||\n (toggleType === \"hover\" && !targetHoveredRef.current && event.currentTarget.contains(event.target as Node))\n ) {\n setTooltipOpen(!tooltipOpen);\n }\n onClick?.(event);\n };\n\n if (React.isValidElement<React.HTMLAttributes<Element>>(child)) {\n return React.cloneElement(child, {\n onClick: handleClick(child.props.onClick),\n onKeyDown: handleKeyDown(child.props.onKeyDown),\n });\n }\n\n return child;\n};\n"],"names":[],"mappings":";;;AAUO,MAAM,gBAA+C,CAAC,EAAE,eAAe;AAC1E,QAAM,EAAE,YAAY,aAAa,kBAAkB,eAAA,IAAmB,WAAW,cAAc;AAC/F,QAAM,QAAQ,MAAM,SAAS,KAAK,QAAQ;AAG1C,QAAM,gBAAgB,CAAC,cAA2C,CAAC,UAA+B;AAC9F,UAAM,MAAM,MAAM,QAAQ,MAAM;AAEhC,QAAI,MAAM,KAAK,KAAK,GAAG;AACnB,UAAI,aAAa;AACb,uBAAe,KAAK;AAAA,MACxB;AAAA,IACJ;AACA,2CAAY;AAAA,EAChB;AAGA,QAAM,cAAc,CAAC,YAAsC,CAAC,UAA4B;AACpF,QACI,eAAe,WACd,eAAe,WAAW,CAAC,iBAAiB,WAAW,MAAM,cAAc,SAAS,MAAM,MAAc,GAC3G;AACE,qBAAe,CAAC,WAAW;AAAA,IAC/B;AACA,uCAAU;AAAA,EACd;AAEA,MAAI,MAAM,eAA8C,KAAK,GAAG;AAC5D,WAAO,MAAM,aAAa,OAAO;AAAA,MAC7B,SAAS,YAAY,MAAM,MAAM,OAAO;AAAA,MACxC,WAAW,cAAc,MAAM,MAAM,SAAS;AAAA,IAAA,CACjD;AAAA,EACL;AAEA,SAAO;AACX;"}
|
|
@@ -3,7 +3,7 @@ import { useContext } from "react";
|
|
|
3
3
|
import { CrossStrokeSrvIcon16 } from "@sberbusiness/icons-next";
|
|
4
4
|
import { TooltipContext } from "../../TootlipContext.js";
|
|
5
5
|
import { ButtonIcon } from "../../../Button/ButtonIcon.js";
|
|
6
|
-
import { s as styles } from "../../../../chunks/TooltipDesktop.module-
|
|
6
|
+
import { s as styles } from "../../../../chunks/TooltipDesktop.module-D22gy-42.js";
|
|
7
7
|
const TooltipXButton = ({ onClick, ...rest }) => {
|
|
8
8
|
const { setTooltipOpen } = useContext(TooltipContext);
|
|
9
9
|
const handleClick = (event) => {
|
|
@@ -6,11 +6,13 @@ import React from "react";
|
|
|
6
6
|
import { TooltipDesktopBase } from "./components/TooltipDesktopBase.js";
|
|
7
7
|
import { TooltipContext } from "../../TootlipContext.js";
|
|
8
8
|
import { isKey } from "../../../../utils/keyboard.js";
|
|
9
|
+
const HOVER_CLOSE_DELAY_MS = 500;
|
|
9
10
|
class TooltipDesktop extends React.Component {
|
|
10
11
|
constructor() {
|
|
11
12
|
super(...arguments);
|
|
12
13
|
__publicField(this, "tooltip", null);
|
|
13
14
|
__publicField(this, "timeout");
|
|
15
|
+
/** Сохранение ноды подсказки и подписка её на события наведения. */
|
|
14
16
|
__publicField(this, "setTooltipRef", (node) => {
|
|
15
17
|
const { toggleType } = this.props;
|
|
16
18
|
if (node && toggleType === "hover") {
|
|
@@ -18,7 +20,7 @@ class TooltipDesktop extends React.Component {
|
|
|
18
20
|
}
|
|
19
21
|
this.tooltip = node;
|
|
20
22
|
});
|
|
21
|
-
|
|
23
|
+
/** Закрытие подсказки при действии мышью за её пределами. */
|
|
22
24
|
__publicField(this, "closeIfOuterAction", (event) => {
|
|
23
25
|
const { targetRef } = this.props;
|
|
24
26
|
const { setTooltipOpen } = this.context;
|
|
@@ -30,21 +32,24 @@ class TooltipDesktop extends React.Component {
|
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
});
|
|
33
|
-
|
|
35
|
+
/** Закрытие подсказки по нажатию Escape. */
|
|
34
36
|
__publicField(this, "closeIfEscapeKey", (event) => {
|
|
35
37
|
const key = event.code || event.keyCode;
|
|
36
38
|
if (isKey(key, "ESCAPE")) {
|
|
37
39
|
this.context.setTooltipOpen(false);
|
|
38
40
|
}
|
|
39
41
|
});
|
|
42
|
+
/** Подписка элемента на события наведения. */
|
|
40
43
|
__publicField(this, "addHoverListeners", (element) => {
|
|
41
44
|
element.addEventListener("mouseenter", this.handleMouseEnter);
|
|
42
45
|
element.addEventListener("mouseleave", this.handleMouseLeave);
|
|
43
46
|
});
|
|
47
|
+
/** Отписка элемента от событий наведения. */
|
|
44
48
|
__publicField(this, "removeHoverListeners", (element) => {
|
|
45
49
|
element.removeEventListener("mouseenter", this.handleMouseEnter);
|
|
46
50
|
element.removeEventListener("mouseleave", this.handleMouseLeave);
|
|
47
51
|
});
|
|
52
|
+
/** Обработчик наведения курсора на целевой элемент или на саму подсказку. */
|
|
48
53
|
__publicField(this, "handleMouseEnter", () => {
|
|
49
54
|
const { tooltipOpen, targetHoveredRef, setTooltipOpen } = this.context;
|
|
50
55
|
if (!tooltipOpen) {
|
|
@@ -53,11 +58,12 @@ class TooltipDesktop extends React.Component {
|
|
|
53
58
|
}
|
|
54
59
|
clearTimeout(this.timeout);
|
|
55
60
|
});
|
|
61
|
+
/** Обработчик ухода курсора: подсказка закрывается с задержкой, чтобы курсор успел дойти до неё. */
|
|
56
62
|
__publicField(this, "handleMouseLeave", () => {
|
|
57
63
|
const { setTooltipOpen } = this.context;
|
|
58
64
|
this.timeout = window.setTimeout(() => {
|
|
59
65
|
setTooltipOpen(false);
|
|
60
|
-
},
|
|
66
|
+
}, HOVER_CLOSE_DELAY_MS);
|
|
61
67
|
});
|
|
62
68
|
}
|
|
63
69
|
render() {
|
|
@@ -65,9 +71,9 @@ class TooltipDesktop extends React.Component {
|
|
|
65
71
|
return /* @__PURE__ */ jsx(TooltipDesktopBase, { ...rest, setTooltipRef: this.setTooltipRef });
|
|
66
72
|
}
|
|
67
73
|
componentDidMount() {
|
|
68
|
-
const { toggleType, targetRef } = this.props;
|
|
69
|
-
if (
|
|
70
|
-
document.addEventListener("
|
|
74
|
+
const { toggleType, targetRef, isOpen } = this.props;
|
|
75
|
+
if (isOpen) {
|
|
76
|
+
document.addEventListener("mousedown", this.closeIfOuterAction);
|
|
71
77
|
document.addEventListener("keydown", this.closeIfEscapeKey);
|
|
72
78
|
}
|
|
73
79
|
if (targetRef.current && toggleType === "hover") {
|
|
@@ -85,15 +91,16 @@ class TooltipDesktop extends React.Component {
|
|
|
85
91
|
if (isClosed) {
|
|
86
92
|
document.removeEventListener("mousedown", this.closeIfOuterAction);
|
|
87
93
|
document.removeEventListener("keydown", this.closeIfEscapeKey);
|
|
88
|
-
if (this.props.toggleType === "hover") {
|
|
94
|
+
if (this.props.toggleType === "hover" && this.tooltip) {
|
|
89
95
|
this.removeHoverListeners(this.tooltip);
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
|
-
if (
|
|
98
|
+
if (prevProps.toggleType !== this.props.toggleType) {
|
|
99
|
+
const elements = [targetRef.current, this.tooltip];
|
|
93
100
|
if (this.props.toggleType === "hover") {
|
|
94
|
-
this.addHoverListeners(
|
|
101
|
+
elements.forEach((element) => element && this.addHoverListeners(element));
|
|
95
102
|
} else if (prevProps.toggleType === "hover") {
|
|
96
|
-
this.removeHoverListeners(
|
|
103
|
+
elements.forEach((element) => element && this.removeHoverListeners(element));
|
|
97
104
|
}
|
|
98
105
|
}
|
|
99
106
|
}
|
|
@@ -101,8 +108,13 @@ class TooltipDesktop extends React.Component {
|
|
|
101
108
|
const { toggleType, targetRef } = this.props;
|
|
102
109
|
document.removeEventListener("mousedown", this.closeIfOuterAction);
|
|
103
110
|
document.removeEventListener("keydown", this.closeIfEscapeKey);
|
|
104
|
-
if (
|
|
105
|
-
|
|
111
|
+
if (toggleType === "hover") {
|
|
112
|
+
if (targetRef.current) {
|
|
113
|
+
this.removeHoverListeners(targetRef.current);
|
|
114
|
+
}
|
|
115
|
+
if (this.tooltip) {
|
|
116
|
+
this.removeHoverListeners(this.tooltip);
|
|
117
|
+
}
|
|
106
118
|
}
|
|
107
119
|
clearTimeout(this.timeout);
|
|
108
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipDesktop.js","sources":["../../../../../src/components/Tooltip/components/desktop/TooltipDesktop.tsx"],"sourcesContent":["import React from \"react\";\nimport { TooltipDesktopBase } from \"@sberbusiness/triplex-next/components/Tooltip/components/desktop/components/TooltipDesktopBase\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { ITooltipDesktopProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/** Десктоп версия компонента Tooltip
|
|
1
|
+
{"version":3,"file":"TooltipDesktop.js","sources":["../../../../../src/components/Tooltip/components/desktop/TooltipDesktop.tsx"],"sourcesContent":["import React from \"react\";\nimport { TooltipDesktopBase } from \"@sberbusiness/triplex-next/components/Tooltip/components/desktop/components/TooltipDesktopBase\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { ITooltipDesktopProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/** Задержка закрытия подсказки после ухода курсора, мс. */\nconst HOVER_CLOSE_DELAY_MS = 500;\n\n/**\n * Десктоп версия компонента Tooltip.\n * Отвечает за подписки на события документа и целевого элемента: закрытие по клику вне,\n * по Escape и открытие/закрытие по наведению.\n */\nexport class TooltipDesktop extends React.Component<ITooltipDesktopProps> {\n public static displayName = \"TooltipDesktop\";\n public static contextType = TooltipContext;\n\n declare context: React.ContextType<typeof TooltipContext>;\n\n private tooltip: Element | null = null;\n private timeout?: number;\n\n public render(): JSX.Element {\n // children и toggleType не должны попадать в DOM — исключаются из rest.\n const { children, toggleType, ...rest } = this.props;\n\n return <TooltipDesktopBase {...rest} setTooltipRef={this.setTooltipRef} />;\n }\n\n public componentDidMount(): void {\n const { toggleType, targetRef, isOpen } = this.props;\n\n // Если Tooltip открывается по клику, то должен уметь закрываться по клику вне и по Esc.\n if (isOpen) {\n document.addEventListener(\"mousedown\", this.closeIfOuterAction);\n document.addEventListener(\"keydown\", this.closeIfEscapeKey);\n }\n\n if (targetRef.current && toggleType === \"hover\") {\n this.addHoverListeners(targetRef.current);\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<ITooltipDesktopProps>): void {\n const { targetRef } = this.props;\n const isOpen = !prevProps.isOpen && this.props.isOpen;\n const isClosed = prevProps.isOpen && !this.props.isOpen;\n\n // Tooltip открылся.\n if (isOpen) {\n document.addEventListener(\"mousedown\", this.closeIfOuterAction);\n document.addEventListener(\"keydown\", this.closeIfEscapeKey);\n }\n\n // Tooltip закрылся.\n if (isClosed) {\n document.removeEventListener(\"mousedown\", this.closeIfOuterAction);\n document.removeEventListener(\"keydown\", this.closeIfEscapeKey);\n\n if (this.props.toggleType === \"hover\" && this.tooltip) {\n this.removeHoverListeners(this.tooltip);\n }\n }\n\n // Смена toggleType на лету: обработчики нужно синхронизировать и на целевом элементе,\n // и на самой подсказке — на неё их вешает setTooltipRef, который повторно не вызывается.\n if (prevProps.toggleType !== this.props.toggleType) {\n const elements = [targetRef.current, this.tooltip];\n\n if (this.props.toggleType === \"hover\") {\n elements.forEach((element) => element && this.addHoverListeners(element));\n } else if (prevProps.toggleType === \"hover\") {\n elements.forEach((element) => element && this.removeHoverListeners(element));\n }\n }\n }\n\n public componentWillUnmount(): void {\n const { toggleType, targetRef } = this.props;\n\n document.removeEventListener(\"mousedown\", this.closeIfOuterAction);\n document.removeEventListener(\"keydown\", this.closeIfEscapeKey);\n\n if (toggleType === \"hover\") {\n if (targetRef.current) {\n this.removeHoverListeners(targetRef.current);\n }\n\n // На саму подсказку обработчики вешает setTooltipRef — снимаем их симметрично,\n // иначе при размонтировании открытой подсказки они остаются на ноде.\n if (this.tooltip) {\n this.removeHoverListeners(this.tooltip);\n }\n }\n\n clearTimeout(this.timeout);\n }\n\n /** Сохранение ноды подсказки и подписка её на события наведения. */\n private setTooltipRef = (node: HTMLDivElement | null) => {\n const { toggleType } = this.props;\n\n if (node && toggleType === \"hover\") {\n this.addHoverListeners(node);\n }\n\n this.tooltip = node;\n };\n\n /** Закрытие подсказки при действии мышью за её пределами. */\n private closeIfOuterAction = (event: Event) => {\n const { targetRef } = this.props;\n const { setTooltipOpen } = this.context;\n\n if (targetRef.current && this.tooltip) {\n const outOfTarget = !targetRef.current.contains(event.target as Node);\n const outOfTooltip = !this.tooltip.contains(event.target as Node);\n\n if (outOfTarget && outOfTooltip) {\n setTooltipOpen(false);\n }\n }\n };\n\n /** Закрытие подсказки по нажатию Escape. */\n private closeIfEscapeKey = (event: KeyboardEvent) => {\n const key = event.code || event.keyCode;\n\n if (isKey(key, \"ESCAPE\")) {\n this.context.setTooltipOpen(false);\n }\n };\n\n /** Подписка элемента на события наведения. */\n private addHoverListeners = (element: Element) => {\n element.addEventListener(\"mouseenter\", this.handleMouseEnter);\n element.addEventListener(\"mouseleave\", this.handleMouseLeave);\n };\n\n /** Отписка элемента от событий наведения. */\n private removeHoverListeners = (element: Element) => {\n element.removeEventListener(\"mouseenter\", this.handleMouseEnter);\n element.removeEventListener(\"mouseleave\", this.handleMouseLeave);\n };\n\n /** Обработчик наведения курсора на целевой элемент или на саму подсказку. */\n private handleMouseEnter = () => {\n const { tooltipOpen, targetHoveredRef, setTooltipOpen } = this.context;\n\n if (!tooltipOpen) {\n setTooltipOpen(true);\n targetHoveredRef.current = true;\n }\n clearTimeout(this.timeout);\n };\n\n /** Обработчик ухода курсора: подсказка закрывается с задержкой, чтобы курсор успел дойти до неё. */\n private handleMouseLeave = () => {\n const { setTooltipOpen } = this.context;\n\n this.timeout = window.setTimeout(() => {\n setTooltipOpen(false);\n }, HOVER_CLOSE_DELAY_MS);\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,20 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
5
5
|
import React from "react";
|
|
6
|
-
import { i as isEqual, c as clsx } from "../../../../../chunks/vendor-
|
|
6
|
+
import { i as isEqual, c as clsx } from "../../../../../chunks/vendor-BtZO8a0z.js";
|
|
7
7
|
import { TooltipContext } from "../../../TootlipContext.js";
|
|
8
8
|
import { Portal } from "../../../../Portal/Portal.js";
|
|
9
|
-
import { ETooltipPreferPlace, ETooltipDirection, ETooltipAlign,
|
|
9
|
+
import { ETooltipFlowTypes, ETooltipPreferPlace, ETooltipDirection, ETooltipAlign, ETooltipSizeParameter, ETooltipTypeName, ETooltipEndCoordinates, ETooltipStartCoordinates, ETooltipAxesType, ETooltipSize } from "../../../enums.js";
|
|
10
10
|
import { TooltipDesktopTip } from "./TooltipDesktopTip.js";
|
|
11
11
|
import { pickZone, axes, calcRelPos, centerOfBoundsFromBounds, calcBounds, equalCoords } from "../../../utils/Positioning.js";
|
|
12
|
-
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-
|
|
12
|
+
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-D22gy-42.js";
|
|
13
13
|
const flowToTipTranslations = {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
[ETooltipFlowTypes.COLUMN]: "translateX",
|
|
15
|
+
[ETooltipFlowTypes.ROW]: "translateY"
|
|
16
16
|
};
|
|
17
17
|
const flowToTooltipTranslations = {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
[ETooltipFlowTypes.COLUMN]: "translateY",
|
|
19
|
+
[ETooltipFlowTypes.ROW]: "translateX"
|
|
20
20
|
};
|
|
21
21
|
const DIRECTIONS = {
|
|
22
22
|
[ETooltipPreferPlace.ABOVE]: ETooltipDirection.DOWN,
|
|
@@ -79,18 +79,18 @@ class TooltipDesktopBase extends React.Component {
|
|
|
79
79
|
// нужно рендерить тултип или нет, признак анимационно зависимого рендериннга открыт/закрыт ли tooltip
|
|
80
80
|
standing: ETooltipPreferPlace.ABOVE
|
|
81
81
|
});
|
|
82
|
-
|
|
82
|
+
/** Открыть подсказку. */
|
|
83
83
|
__publicField(this, "prepareOpen", () => {
|
|
84
84
|
if (this.state.exiting) {
|
|
85
85
|
this.animateExitStop();
|
|
86
86
|
}
|
|
87
87
|
this.setState({ isOpen: true, needRenderTooltip: true });
|
|
88
88
|
});
|
|
89
|
-
|
|
89
|
+
/** Закрыть подсказку. */
|
|
90
90
|
__publicField(this, "close", () => {
|
|
91
91
|
this.setState({ isOpen: false });
|
|
92
92
|
});
|
|
93
|
-
|
|
93
|
+
/** Начало отслеживания подсказки и анимация её появления. */
|
|
94
94
|
__publicField(this, "enter", () => {
|
|
95
95
|
this.trackTooltip();
|
|
96
96
|
this.animateEnter();
|
|
@@ -98,11 +98,12 @@ class TooltipDesktopBase extends React.Component {
|
|
|
98
98
|
this.props.onShow(this.tooltipNode);
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
|
-
|
|
101
|
+
/** Окончание отслеживания подсказки и анимация её исчезновения. */
|
|
102
102
|
__publicField(this, "exit", () => {
|
|
103
103
|
this.animateExit();
|
|
104
104
|
this.untrackTooltip();
|
|
105
105
|
});
|
|
106
|
+
/** Сохранение ноды подсказки и ссылок на её тело и стрелочку. */
|
|
106
107
|
__publicField(this, "setTooltipNode", (node) => {
|
|
107
108
|
const { setTooltipRef } = this.props;
|
|
108
109
|
if (node) {
|
|
@@ -112,7 +113,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
112
113
|
this.tooltipNode = node;
|
|
113
114
|
setTooltipRef == null ? void 0 : setTooltipRef(this.tooltipNode);
|
|
114
115
|
});
|
|
115
|
-
|
|
116
|
+
/** Расчёт и применение положения подсказки и её стрелочки. */
|
|
116
117
|
__publicField(this, "resolveTooltipLayout", () => {
|
|
117
118
|
if (!this.tooltipNode) {
|
|
118
119
|
return;
|
|
@@ -140,7 +141,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
140
141
|
pos[axis.main.start] += OFFSET * zone.order;
|
|
141
142
|
let dockingEdgeBufferLength = 0;
|
|
142
143
|
if (this.bodyEl) {
|
|
143
|
-
dockingEdgeBufferLength = Math.round(
|
|
144
|
+
dockingEdgeBufferLength = Math.round(parseFloat(getComputedStyle(this.bodyEl).borderRadius)) || 0;
|
|
144
145
|
}
|
|
145
146
|
const frameBuffer = TIP_HEIGHT + OFFSET;
|
|
146
147
|
const hangingBufferLength = dockingEdgeBufferLength * 2 + TIP_HEIGHT * 2 + frameBuffer;
|
|
@@ -186,7 +187,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
186
187
|
this.tipEl.style.borderWidth = `${TIP_HEIGHT}px`;
|
|
187
188
|
}
|
|
188
189
|
});
|
|
189
|
-
|
|
190
|
+
/** Проверка изменения границ целевого элемента. Возвращает true, если границы изменились. */
|
|
190
191
|
__publicField(this, "setAndCheckResizeTargetBounds", () => {
|
|
191
192
|
const { targetRef } = this.props;
|
|
192
193
|
if (!targetRef.current) {
|
|
@@ -199,20 +200,20 @@ class TooltipDesktopBase extends React.Component {
|
|
|
199
200
|
this.targetBounds = newTargetBounds;
|
|
200
201
|
return true;
|
|
201
202
|
});
|
|
202
|
-
|
|
203
|
+
/** Перерасчёт положения, если границы целевого элемента изменились. */
|
|
203
204
|
__publicField(this, "checkTargetReposition", () => {
|
|
204
205
|
if (this.setAndCheckResizeTargetBounds()) {
|
|
205
206
|
this.resolveTooltipLayout();
|
|
206
207
|
}
|
|
207
208
|
});
|
|
208
|
-
|
|
209
|
+
/** Измерение размеров тела подсказки (без стрелочки). */
|
|
209
210
|
__publicField(this, "setTooltipBodySize", () => {
|
|
210
211
|
if (!this.bodyEl) {
|
|
211
212
|
return;
|
|
212
213
|
}
|
|
213
214
|
this.tooltipBodySize = { w: this.bodyEl.offsetWidth, h: this.bodyEl.offsetHeight };
|
|
214
215
|
});
|
|
215
|
-
|
|
216
|
+
/** Очистка таймеров анимации исчезновения. */
|
|
216
217
|
__publicField(this, "animateExitStop", () => {
|
|
217
218
|
if (this.exitingAnimationTimer1) {
|
|
218
219
|
window.clearTimeout(this.exitingAnimationTimer1);
|
|
@@ -222,7 +223,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
222
223
|
}
|
|
223
224
|
this.setState({ exiting: false });
|
|
224
225
|
});
|
|
225
|
-
|
|
226
|
+
/** Анимация исчезновения. */
|
|
226
227
|
__publicField(this, "animateExit", () => {
|
|
227
228
|
this.setState({ exiting: true });
|
|
228
229
|
this.exitingAnimationTimer2 = window.setTimeout(() => {
|
|
@@ -238,7 +239,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
238
239
|
this.setState({ exiting: false, needRenderTooltip: false });
|
|
239
240
|
}, ENTER_EXIT_TRANSITION_DURATION_MS);
|
|
240
241
|
});
|
|
241
|
-
|
|
242
|
+
/** Анимация появления. */
|
|
242
243
|
__publicField(this, "animateEnter", () => {
|
|
243
244
|
if (!this.tooltipNode) {
|
|
244
245
|
return;
|
|
@@ -255,7 +256,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
255
256
|
this.tooltipNode.style.opacity = "1";
|
|
256
257
|
this.tooltipNode.style.transform = "translateY(0)";
|
|
257
258
|
});
|
|
258
|
-
|
|
259
|
+
/** Начало отслеживания положения подсказки: опрос границ, подписка на scroll и resize. */
|
|
259
260
|
__publicField(this, "trackTooltip", () => {
|
|
260
261
|
if (!this.tooltipNode) {
|
|
261
262
|
return;
|
|
@@ -269,7 +270,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
269
270
|
this.setAndCheckResizeTargetBounds();
|
|
270
271
|
this.resolveTooltipLayout();
|
|
271
272
|
});
|
|
272
|
-
|
|
273
|
+
/** Отписка от отслеживания положения подсказки. */
|
|
273
274
|
__publicField(this, "untrackTooltip", () => {
|
|
274
275
|
if (!this.tooltipNode) {
|
|
275
276
|
return;
|
|
@@ -281,17 +282,17 @@ class TooltipDesktopBase extends React.Component {
|
|
|
281
282
|
window.removeEventListener("resize", this.onWindowResize);
|
|
282
283
|
this.hasTracked = false;
|
|
283
284
|
});
|
|
284
|
-
|
|
285
|
+
/** Перерасчёт положения при скролле окна. */
|
|
285
286
|
__publicField(this, "onWindowScroll", () => {
|
|
286
287
|
this.setAndCheckResizeTargetBounds();
|
|
287
288
|
this.resolveTooltipLayout();
|
|
288
289
|
});
|
|
289
|
-
|
|
290
|
+
/** Перерасчёт положения при изменении размеров окна. */
|
|
290
291
|
__publicField(this, "onWindowResize", () => {
|
|
291
292
|
this.windowBounds = calcBounds(window);
|
|
292
293
|
this.resolveTooltipLayout();
|
|
293
294
|
});
|
|
294
|
-
|
|
295
|
+
/** Разметка подсказки: тело, ссылка, кнопка закрытия и стрелочка. */
|
|
295
296
|
__publicField(this, "tooltipRender", () => {
|
|
296
297
|
const {
|
|
297
298
|
className,
|
|
@@ -372,7 +373,7 @@ class TooltipDesktopBase extends React.Component {
|
|
|
372
373
|
}
|
|
373
374
|
}
|
|
374
375
|
}
|
|
375
|
-
__publicField(TooltipDesktopBase, "displayName", "
|
|
376
|
+
__publicField(TooltipDesktopBase, "displayName", "TooltipDesktopBase");
|
|
376
377
|
__publicField(TooltipDesktopBase, "contextType", TooltipContext);
|
|
377
378
|
export {
|
|
378
379
|
TooltipDesktopBase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipDesktopBase.js","sources":["../../../../../../src/components/Tooltip/components/desktop/components/TooltipDesktopBase.tsx"],"sourcesContent":["import React from \"react\";\nimport isEqual from \"lodash-es/isEqual\";\nimport clsx from \"clsx\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { Portal } from \"@sberbusiness/triplex-next/components/Portal/Portal\";\nimport {\n ETooltipAlign,\n ETooltipAxesType,\n ETooltipDirection,\n ETooltipEndCoordinates,\n ETooltipFlowTypes,\n ETooltipPreferPlace,\n ETooltipSize,\n ETooltipSizeParameter,\n ETooltipStartCoordinates,\n ETooltipTypeName,\n} from \"@sberbusiness/triplex-next/components/Tooltip/enums\";\nimport { TooltipDesktopTip } from \"@sberbusiness/triplex-next/components/Tooltip/components/desktop/components/TooltipDesktopTip\";\nimport {\n ITooltipBounds,\n ITooltipDesktopProps,\n ITooltipDomainSize,\n ITooltipSize,\n} from \"@sberbusiness/triplex-next/components/Tooltip/types\";\nimport {\n axes,\n calcBounds,\n calcRelPos,\n centerOfBoundsFromBounds,\n equalCoords,\n pickZone,\n} from \"@sberbusiness/triplex-next/components/Tooltip/utils/Positioning\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipDesktop.module.less\";\n\n// Маппер flow в translate для Tip (стрелочка)\nconst flowToTipTranslations: { [key: string]: string } = {\n column: \"translateX\",\n row: \"translateY\",\n};\n\n// Маппер flow в translate для самого Tooltip\nconst flowToTooltipTranslations: { [key: string]: string } = {\n column: \"translateY\",\n row: \"translateX\",\n};\n\n// Маппер EPreferPlace в EDirection для Tip (стрелочка)\nconst DIRECTIONS = {\n [ETooltipPreferPlace.ABOVE]: ETooltipDirection.DOWN,\n [ETooltipPreferPlace.BELOW]: ETooltipDirection.UP,\n [ETooltipPreferPlace.LEFT]: ETooltipDirection.RIGHT,\n [ETooltipPreferPlace.RIGHT]: ETooltipDirection.LEFT,\n};\n\n// Интервал опроса в ms необходимости обновления layout\nconst REFRESH_INTERVAL_MS = 200;\n// Время анимаций появления и исчезновения Tooltip'а\nconst ENTER_EXIT_TRANSITION_DURATION_MS = 500;\n// Отступ Tooltip от элемента, px\nconst OFFSET = 2;\n// Высота Tip (стрелочки), px\nconst TIP_HEIGHT = 8;\n// Уголок бегает по периметру максимально на 16 px от края\nconst MAX_FROM_EDGE_FOR_TIP = 16;\n\n/** Свойства компонента TooltipDesktopBase. */\nexport interface ITooltipDesktopBaseProps extends Omit<ITooltipDesktopProps, \"forwardedRef\"> {\n /** Получение ноды Tooltip. */\n setTooltipRef?: (node: HTMLDivElement | null) => void;\n}\n\n/** Состояния компонента TooltipDesktopBase. */\ninterface ITooltipDesktopBaseState {\n /** Для отслеживания того что анимация при закрытии тултипа в прогрессе. */\n exiting: boolean;\n /** Положение Tooltip'a. */\n standing: ETooltipPreferPlace;\n /** Открыт/закрыт ли tooltip. */\n isOpen: boolean;\n /** Нужно рендерить тултип или нет, признак анимационно зависимого рендериннга открыт/закрыт ли tooltip. */\n needRenderTooltip: boolean;\n}\n\n/** Базовый компонент \"Тултипа\". */\nexport class TooltipDesktopBase extends React.Component<ITooltipDesktopBaseProps, ITooltipDesktopBaseState> {\n public static displayName = \"TooltipBase\";\n public static contextType = TooltipContext;\n\n declare context: React.ContextType<typeof TooltipContext>;\n\n private zone: ITooltipDomainSize = {\n [ETooltipTypeName.FLOW]: ETooltipFlowTypes.COLUMN,\n [ETooltipTypeName.STANDING]: ETooltipPreferPlace.ABOVE,\n [ETooltipTypeName.SIDE]: ETooltipAlign.CENTER,\n cutOff: 0,\n order: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private tooltipBodySize: ITooltipSize = {\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private targetBounds: ITooltipBounds = {\n [ETooltipStartCoordinates.X]: 0,\n [ETooltipEndCoordinates.X]: 0,\n [ETooltipStartCoordinates.Y]: 0,\n [ETooltipEndCoordinates.Y]: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private windowBounds: ITooltipBounds = {\n [ETooltipStartCoordinates.X]: 0,\n [ETooltipEndCoordinates.X]: 0,\n [ETooltipStartCoordinates.Y]: 0,\n [ETooltipEndCoordinates.Y]: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n\n private bodyRef = React.createRef<HTMLDivElement>();\n private tipRef = React.createRef<HTMLDivElement>();\n\n private tipEl: HTMLElement | null = null;\n private bodyEl: HTMLElement | null = null;\n private tooltipNode: HTMLDivElement | null = null;\n private hasTracked = false;\n private exitingAnimationTimer1: number | null = null;\n private exitingAnimationTimer2: number | null = null;\n private checkLayoutInterval: number | null = null;\n\n public state: ITooltipDesktopBaseState = {\n exiting: false, // для отслеживания того что анимация при закрытии тултипа в прогрессе.\n isOpen: this.props.isOpen, // для отслеживания открыт/закрыт ли tooltip.\n needRenderTooltip: this.props.isOpen, // нужно рендерить тултип или нет, признак анимационно зависимого рендериннга открыт/закрыт ли tooltip\n standing: ETooltipPreferPlace.ABOVE,\n };\n\n public render() {\n const { renderContainer } = this.props;\n const { needRenderTooltip } = this.state;\n const { elements } = this.context;\n\n return (\n <>\n {elements.target}\n {needRenderTooltip && (\n <Portal container={renderContainer ?? document.body}>{this.tooltipRender()}</Portal>\n )}\n </>\n );\n }\n\n public componentDidMount(): void {\n if (this.props.isOpen) {\n this.enter();\n }\n }\n\n public componentDidUpdate(prevProps: ITooltipDesktopBaseProps, prevState: ITooltipDesktopBaseState): void {\n const props = this.props;\n const state = this.state;\n\n const willOpen = !prevProps.isOpen && props.isOpen;\n const willClose = prevProps.isOpen && !props.isOpen;\n\n if (willOpen) {\n this.prepareOpen();\n return;\n } else if (willClose) {\n this.close();\n return;\n }\n\n const didOpen = !prevState.isOpen && state.isOpen;\n const didClose = prevState.isOpen && !state.isOpen;\n\n if (didOpen) {\n this.enter();\n return;\n } else if (didClose) {\n this.exit();\n return;\n }\n\n if (state.isOpen && !isEqual(prevProps.children, props.children)) {\n this.setTooltipBodySize();\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n }\n }\n\n public componentWillUnmount(): void {\n /* If the Tooltip is unmounted while animating,\n clear the animation so no setState occurred. */\n this.animateExitStop();\n\n if (this.hasTracked) {\n this.untrackTooltip();\n }\n }\n\n // Открыть поповер\n private prepareOpen = () => {\n if (this.state.exiting) {\n this.animateExitStop();\n }\n this.setState({ isOpen: true, needRenderTooltip: true });\n };\n\n // Закрыть поповер\n private close = () => {\n this.setState({ isOpen: false });\n };\n\n // Метод начала отслеживания поповера и анимация его появления\n private enter = () => {\n this.trackTooltip();\n this.animateEnter();\n if (this.props.onShow && this.tooltipNode) {\n this.props.onShow(this.tooltipNode);\n }\n };\n\n // Метод окончания отслеживания поповера и анимация его исчезновения\n private exit = () => {\n this.animateExit();\n this.untrackTooltip();\n };\n\n private setTooltipNode = (node: HTMLDivElement) => {\n const { setTooltipRef } = this.props;\n\n if (node) {\n // Получение ссылок на тело подсказки и стрелочку.\n this.bodyEl = this.bodyRef.current;\n this.tipEl = this.tipRef.current;\n }\n\n this.tooltipNode = node;\n\n setTooltipRef?.(this.tooltipNode);\n };\n\n // Рендер поповера\n private resolveTooltipLayout = () => {\n if (!this.tooltipNode) {\n return;\n }\n\n const { alignTip } = this.props;\n\n // Поиск оптимальной зоны для позиционирования. Измеряет размер каждой зоны и использует наибольшую.\n // В качестве размера тултипа берется размер тела тултипа плюс высота стрелочки с обеих сторон.\n const zone = pickZone(\n this.props.preferPlace,\n this.windowBounds,\n this.targetBounds,\n TIP_HEIGHT,\n MAX_FROM_EDGE_FOR_TIP,\n {\n h: this.tooltipBodySize.h + TIP_HEIGHT,\n w: this.tooltipBodySize.w + TIP_HEIGHT,\n },\n );\n\n this.zone = zone;\n\n this.setState({\n standing: zone.standing,\n });\n\n const axis = axes[zone.flow];\n\n // Для расчета позиции тултипа, размер тултипа вычисляется в зависимости от зоны где он будет располагаться,\n // если тултип в сверху или снизу то высота стрелочки прибавляется к высоте тултипа\n const tooltipSize = { ...this.tooltipBodySize };\n tooltipSize[zone.flow === ETooltipFlowTypes.ROW ? ETooltipSizeParameter.W : ETooltipSizeParameter.H] +=\n TIP_HEIGHT;\n\n /* При позиционировании на вспомогательной оси нельзя превышать границы. Для достижения этого: Сначала\n позиционируется вспомогательной оси относительно центра вспомогательной оси обернутого элемента, затем\n смещение на необходимую величину, чтобы выйти за границы.\n */\n const pos = calcRelPos(zone, this.targetBounds, tooltipSize);\n\n // Смещение позволяет разработчику контролировать дистанцию между Tip (стрелочкой) и обернутым элементом.\n pos[axis.main.start] += OFFSET * zone.order;\n\n let dockingEdgeBufferLength = 0;\n if (this.bodyEl) {\n dockingEdgeBufferLength = Math.round(+getComputedStyle(this.bodyEl).borderRadius.slice(0, -2)) || 0;\n }\n /*\n * Ограничение позиционирование обертки внутри элемента рамки. Попытка не попасть в визуально допустимый\n * буфер элемента рамки. Буфер рассчитывается в зависимости от размера Tip (стрелочка) и его OFFSET (отступ).\n */\n const frameBuffer = TIP_HEIGHT + OFFSET;\n const hangingBufferLength = dockingEdgeBufferLength * 2 + TIP_HEIGHT * 2 + frameBuffer;\n const frameCrossStart = this.windowBounds[axis.cross.start];\n const frameCrossEnd = this.windowBounds[axis.cross.end];\n const frameCrossLength = this.windowBounds[axis.cross.size];\n const frameCrossInnerLength = frameCrossLength - frameBuffer * 2;\n const frameCrossInnerStart = frameCrossStart + frameBuffer;\n const frameCrossInnerEnd = frameCrossEnd - frameBuffer;\n const tooltipCrossStart = pos[axis.cross.start];\n const tooltipCrossEnd = pos[axis.cross.end];\n\n if (alignTip === ETooltipAlign.START) {\n pos[axis.cross.start] =\n this.targetBounds[axis.cross.end] -\n MAX_FROM_EDGE_FOR_TIP -\n TIP_HEIGHT -\n this.targetBounds[axis.cross.size] / 2;\n } else if (alignTip === ETooltipAlign.END) {\n pos[axis.cross.start] =\n this.targetBounds[axis.cross.start] -\n tooltipSize[axis.cross.size] +\n MAX_FROM_EDGE_FOR_TIP +\n TIP_HEIGHT +\n this.targetBounds[axis.cross.size] / 2;\n } else if (pos.crossLength > frameCrossLength) {\n /*\n * Если Tooltip не влезает в frameCrossLength тогда просто позиционируем его в `frameCrossStart`.\n * CrossLength тултипа будет принудительно forced to overflow into the `Frame` .\n */\n pos[axis.cross.start] = 0;\n\n // Если tooltipCrossStart выходит за некое пороговое значение targetCrossLength, тогда ограничить его tooltipCrossStart\n } else if (this.targetBounds[axis.cross.end] < hangingBufferLength) {\n pos[axis.cross.start] = this.targetBounds[axis.cross.end] - hangingBufferLength;\n\n /*\n * Проверка, что начало вспомогательной оси в пределах обернутого элемента и его рамок, имеет ли смысл\n * пытаться вместить Tooltip туда\n */\n } else if (this.targetBounds[axis.cross.start] > frameCrossInnerEnd) {\n pos[axis.cross.start] = this.targetBounds[axis.cross.start] - tooltipSize[axis.cross.size];\n\n /* Если tooltipCrossStart не влазит внутрь рамок (honouring buffers) тогда просто центруем поповер в\n оставшейся frameCrossLength.\n */\n } else if (pos.crossLength > frameCrossInnerLength) {\n pos[axis.cross.start] = (frameCrossLength - pos.crossLength) / 2;\n } else if (tooltipCrossStart < frameCrossInnerStart) {\n pos[axis.cross.start] = frameCrossInnerStart;\n } else if (tooltipCrossEnd > frameCrossInnerEnd) {\n pos[axis.cross.start] = pos[axis.cross.start] - (pos[axis.cross.end] - frameCrossInnerEnd);\n }\n /**\n * Применение стилей flow и order. Это может повлиять на последующие измерения высоты и ширины контейнера.\n * Когда Tip (стрелочка) меняет ориентацию из-за изменений `row`/`column`, будет затронуты ширина и высота.\n * Мониторинг лейаута перехватит эти изменения и сам пересчитает лейаут.\n */\n this.tooltipNode.style.flexFlow = zone.flow;\n if (this.bodyEl) {\n this.bodyEl.style.order = zone.order.toString();\n }\n\n // Применение абсолютного позиционирования\n this.tooltipNode.style.top = `${pos.y}px`;\n this.tooltipNode.style.left = `${pos.x}px`;\n\n // Расчёт позиционирования Tip (стрелочки)\n let tipCrossPos =\n centerOfBoundsFromBounds(zone.flow, ETooltipAxesType.CROSS, this.targetBounds, pos) - TIP_HEIGHT;\n\n if (tipCrossPos < MAX_FROM_EDGE_FOR_TIP) {\n tipCrossPos = MAX_FROM_EDGE_FOR_TIP;\n } else if (tipCrossPos > pos.crossLength - MAX_FROM_EDGE_FOR_TIP - TIP_HEIGHT * 2) {\n tipCrossPos = pos.crossLength - MAX_FROM_EDGE_FOR_TIP - TIP_HEIGHT * 2;\n }\n\n if (this.tipEl) {\n this.tipEl.style.transform = `${flowToTipTranslations[zone.flow]}(${tipCrossPos}px)`;\n this.tipEl.style.borderWidth = `${TIP_HEIGHT}px`;\n }\n };\n\n // Метод проверки изменения границ обернутого элемента.\n private setAndCheckResizeTargetBounds = () => {\n const { targetRef } = this.props;\n\n if (!targetRef.current) {\n return false;\n }\n\n const newTargetBounds = calcBounds(targetRef.current);\n if (this.targetBounds && equalCoords(this.targetBounds, newTargetBounds)) {\n return false;\n }\n\n this.targetBounds = newTargetBounds;\n return true;\n };\n\n // Метод проверки необходимости перерисовки лейаута\n private checkTargetReposition = () => {\n if (this.setAndCheckResizeTargetBounds()) {\n this.resolveTooltipLayout();\n }\n };\n\n // Метод измерения размеров тела тултипа (без стрелочки)\n private setTooltipBodySize = () => {\n if (!this.bodyEl) {\n return;\n }\n\n this.tooltipBodySize = { w: this.bodyEl.offsetWidth, h: this.bodyEl.offsetHeight };\n };\n\n // Очистка таймеров анимации исчезновения\n private animateExitStop = () => {\n if (this.exitingAnimationTimer1) {\n window.clearTimeout(this.exitingAnimationTimer1);\n }\n if (this.exitingAnimationTimer2) {\n window.clearTimeout(this.exitingAnimationTimer2);\n }\n this.setState({ exiting: false });\n };\n\n // Анимация исчезновения\n private animateExit = () => {\n this.setState({ exiting: true });\n this.exitingAnimationTimer2 = window.setTimeout(() => {\n window.setTimeout(() => {\n if (!this.tooltipNode) {\n return;\n }\n this.tooltipNode.style.transform = `${flowToTooltipTranslations[this.zone.flow]}(${\n this.zone.order * 50\n }px)`;\n this.tooltipNode.style.opacity = \"0\";\n }, 0);\n }, 0);\n\n this.exitingAnimationTimer1 = window.setTimeout(() => {\n this.setState({ exiting: false, needRenderTooltip: false });\n }, ENTER_EXIT_TRANSITION_DURATION_MS);\n };\n\n // Анимация появления\n private animateEnter = () => {\n if (!this.tooltipNode) {\n return;\n }\n\n // Подготовка стилей появления, чтобы можно было анимировать.\n this.tooltipNode.style.transform = `${flowToTooltipTranslations[this.zone.flow]}(${this.zone.order * 50}px)`;\n this.tooltipNode.style.opacity = \"0\";\n\n /* Hack: http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style-changes */\n // После инициализации лейаута применяем анимации transition.\n // Без этой строчки не всегда применяются стили добавленные в style, из-за чего иногда тултип появляется резко подергиваясь\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.tooltipNode.offsetHeight;\n\n if (this.tipEl) {\n this.tipEl.style.transition = \"transform 150ms ease-in\";\n }\n this.tooltipNode.style.transitionProperty = \"opacity, transform\";\n this.tooltipNode.style.transitionDuration = \"500ms\";\n this.tooltipNode.style.transitionTimingFunction = \"cubic-bezier(0.230, 1.000, 0.320, 1.000)\";\n this.tooltipNode.style.opacity = \"1\";\n this.tooltipNode.style.transform = \"translateY(0)\";\n };\n\n // Отслеживание поповера\n private trackTooltip = () => {\n if (!this.tooltipNode) {\n return;\n }\n this.hasTracked = true;\n\n // Установка опроса для проверки изменилось ли положение. Другого способа узнать этого без опроса\n this.checkLayoutInterval = window.setInterval(this.checkTargetReposition, REFRESH_INTERVAL_MS);\n\n /*\n Наблюдение за изменением границ на всех уровнях, при необходимости - перерасчет. Привязка лэйаут монитора\n должна быть сделана сразу, т.к. перерасчет может вызывать рекурсивно изменение в границах. Поэтому если мы\n сделали одноразовый force-layout перед наблюдением, наши расчеты окончательной позиции могут быть неверными.\n */\n\n window.addEventListener(\"scroll\", this.onWindowScroll);\n window.addEventListener(\"resize\", this.onWindowResize);\n\n // Запуск лейаута при первой прогрузке\n this.windowBounds = calcBounds(window); // запомнили размер окна\n this.setTooltipBodySize(); // заполнили размер тултипа\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n };\n\n // Отписка от отслеживания поповера\n private untrackTooltip = () => {\n if (!this.tooltipNode) {\n return;\n }\n if (this.checkLayoutInterval) {\n window.clearInterval(this.checkLayoutInterval);\n }\n window.removeEventListener(\"scroll\", this.onWindowScroll);\n window.removeEventListener(\"resize\", this.onWindowResize);\n this.hasTracked = false;\n };\n\n // Перерисовка при скролле \"рамки\"\n private onWindowScroll = () => {\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n };\n\n // Перерисовка при изменении размеров \"рамки\"\n private onWindowResize = () => {\n this.windowBounds = calcBounds(window);\n this.resolveTooltipLayout();\n };\n\n // Отрисовка самого Tooltip\n private tooltipRender: () => React.ReactElement = () => {\n const {\n className,\n size,\n preferPlace,\n alignTip,\n isOpen,\n renderContainer,\n onShow,\n setTooltipRef,\n onKeyDown,\n targetRef,\n ...rest\n } = this.props;\n const { elements } = this.context;\n\n const sizeClass = size === ETooltipSize.SM ? styles.tooltipSM : styles.tooltipLG;\n const classNames = clsx(\n styles.tooltipDesktop,\n sizeClass,\n { [styles.closable]: !!elements.closeButton },\n className,\n );\n\n return (\n <div className={styles.tooltipOverlay}>\n <div className={classNames} {...rest} ref={this.setTooltipNode}>\n <div className={styles.tooltipDesktopContent} ref={this.bodyRef}>\n {elements.body}\n {elements.link}\n {elements.closeButton}\n </div>\n <TooltipDesktopTip direction={DIRECTIONS[this.state.standing]} ref={this.tipRef} />\n </div>\n </div>\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TooltipDesktopBase.js","sources":["../../../../../../src/components/Tooltip/components/desktop/components/TooltipDesktopBase.tsx"],"sourcesContent":["import React from \"react\";\nimport isEqual from \"lodash-es/isEqual\";\nimport clsx from \"clsx\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { Portal } from \"@sberbusiness/triplex-next/components/Portal/Portal\";\nimport {\n ETooltipAlign,\n ETooltipAxesType,\n ETooltipDirection,\n ETooltipEndCoordinates,\n ETooltipFlowTypes,\n ETooltipPreferPlace,\n ETooltipSize,\n ETooltipSizeParameter,\n ETooltipStartCoordinates,\n ETooltipTypeName,\n} from \"@sberbusiness/triplex-next/components/Tooltip/enums\";\nimport { TooltipDesktopTip } from \"@sberbusiness/triplex-next/components/Tooltip/components/desktop/components/TooltipDesktopTip\";\nimport {\n ITooltipBounds,\n ITooltipDesktopProps,\n ITooltipDomainSize,\n ITooltipSize,\n} from \"@sberbusiness/triplex-next/components/Tooltip/types\";\nimport {\n axes,\n calcBounds,\n calcRelPos,\n centerOfBoundsFromBounds,\n equalCoords,\n pickZone,\n} from \"@sberbusiness/triplex-next/components/Tooltip/utils/Positioning\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipDesktop.module.less\";\n\n// Маппер flow в translate для Tip (стрелочка)\nconst flowToTipTranslations: Record<ETooltipFlowTypes, string> = {\n [ETooltipFlowTypes.COLUMN]: \"translateX\",\n [ETooltipFlowTypes.ROW]: \"translateY\",\n};\n\n// Маппер flow в translate для самого Tooltip\nconst flowToTooltipTranslations: Record<ETooltipFlowTypes, string> = {\n [ETooltipFlowTypes.COLUMN]: \"translateY\",\n [ETooltipFlowTypes.ROW]: \"translateX\",\n};\n\n// Маппер EPreferPlace в EDirection для Tip (стрелочка)\nconst DIRECTIONS: Record<ETooltipPreferPlace, ETooltipDirection> = {\n [ETooltipPreferPlace.ABOVE]: ETooltipDirection.DOWN,\n [ETooltipPreferPlace.BELOW]: ETooltipDirection.UP,\n [ETooltipPreferPlace.LEFT]: ETooltipDirection.RIGHT,\n [ETooltipPreferPlace.RIGHT]: ETooltipDirection.LEFT,\n};\n\n// Интервал опроса в ms необходимости обновления layout\nconst REFRESH_INTERVAL_MS = 200;\n// Время анимаций появления и исчезновения Tooltip'а\nconst ENTER_EXIT_TRANSITION_DURATION_MS = 500;\n// Отступ Tooltip от элемента, px\nconst OFFSET = 2;\n// Высота Tip (стрелочки), px\nconst TIP_HEIGHT = 8;\n// Уголок бегает по периметру максимально на 16 px от края\nconst MAX_FROM_EDGE_FOR_TIP = 16;\n\n/** Свойства компонента TooltipDesktopBase. */\nexport interface ITooltipDesktopBaseProps extends ITooltipDesktopProps {\n /** Получение ноды Tooltip. */\n setTooltipRef?: (node: HTMLDivElement | null) => void;\n}\n\n/** Состояния компонента TooltipDesktopBase. */\ninterface ITooltipDesktopBaseState {\n /** Для отслеживания того что анимация при закрытии тултипа в прогрессе. */\n exiting: boolean;\n /** Положение Tooltip'a. */\n standing: ETooltipPreferPlace;\n /** Открыт/закрыт ли tooltip. */\n isOpen: boolean;\n /** Нужно рендерить тултип или нет, признак анимационно зависимого рендериннга открыт/закрыт ли tooltip. */\n needRenderTooltip: boolean;\n}\n\n/**\n * Базовый компонент \"Тултипа\".\n * Рендерит подсказку в Portal, вычисляет её положение относительно целевого элемента\n * и проигрывает анимации появления и исчезновения.\n */\nexport class TooltipDesktopBase extends React.Component<ITooltipDesktopBaseProps, ITooltipDesktopBaseState> {\n public static displayName = \"TooltipDesktopBase\";\n public static contextType = TooltipContext;\n\n declare context: React.ContextType<typeof TooltipContext>;\n\n private zone: ITooltipDomainSize = {\n [ETooltipTypeName.FLOW]: ETooltipFlowTypes.COLUMN,\n [ETooltipTypeName.STANDING]: ETooltipPreferPlace.ABOVE,\n [ETooltipTypeName.SIDE]: ETooltipAlign.CENTER,\n cutOff: 0,\n order: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private tooltipBodySize: ITooltipSize = {\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private targetBounds: ITooltipBounds = {\n [ETooltipStartCoordinates.X]: 0,\n [ETooltipEndCoordinates.X]: 0,\n [ETooltipStartCoordinates.Y]: 0,\n [ETooltipEndCoordinates.Y]: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n private windowBounds: ITooltipBounds = {\n [ETooltipStartCoordinates.X]: 0,\n [ETooltipEndCoordinates.X]: 0,\n [ETooltipStartCoordinates.Y]: 0,\n [ETooltipEndCoordinates.Y]: 0,\n [ETooltipSizeParameter.H]: 0,\n [ETooltipSizeParameter.W]: 0,\n };\n\n private bodyRef = React.createRef<HTMLDivElement>();\n private tipRef = React.createRef<HTMLDivElement>();\n\n private tipEl: HTMLElement | null = null;\n private bodyEl: HTMLElement | null = null;\n private tooltipNode: HTMLDivElement | null = null;\n private hasTracked = false;\n private exitingAnimationTimer1: number | null = null;\n private exitingAnimationTimer2: number | null = null;\n private checkLayoutInterval: number | null = null;\n\n public state: ITooltipDesktopBaseState = {\n exiting: false, // для отслеживания того что анимация при закрытии тултипа в прогрессе.\n isOpen: this.props.isOpen, // для отслеживания открыт/закрыт ли tooltip.\n needRenderTooltip: this.props.isOpen, // нужно рендерить тултип или нет, признак анимационно зависимого рендериннга открыт/закрыт ли tooltip\n standing: ETooltipPreferPlace.ABOVE,\n };\n\n public render() {\n const { renderContainer } = this.props;\n const { needRenderTooltip } = this.state;\n const { elements } = this.context;\n\n return (\n <>\n {elements.target}\n {needRenderTooltip && (\n <Portal container={renderContainer ?? document.body}>{this.tooltipRender()}</Portal>\n )}\n </>\n );\n }\n\n public componentDidMount(): void {\n if (this.props.isOpen) {\n this.enter();\n }\n }\n\n public componentDidUpdate(prevProps: ITooltipDesktopBaseProps, prevState: ITooltipDesktopBaseState): void {\n const props = this.props;\n const state = this.state;\n\n const willOpen = !prevProps.isOpen && props.isOpen;\n const willClose = prevProps.isOpen && !props.isOpen;\n\n if (willOpen) {\n this.prepareOpen();\n return;\n } else if (willClose) {\n this.close();\n return;\n }\n\n const didOpen = !prevState.isOpen && state.isOpen;\n const didClose = prevState.isOpen && !state.isOpen;\n\n if (didOpen) {\n this.enter();\n return;\n } else if (didClose) {\n this.exit();\n return;\n }\n\n if (state.isOpen && !isEqual(prevProps.children, props.children)) {\n this.setTooltipBodySize();\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n }\n }\n\n public componentWillUnmount(): void {\n /* If the Tooltip is unmounted while animating,\n clear the animation so no setState occurred. */\n this.animateExitStop();\n\n if (this.hasTracked) {\n this.untrackTooltip();\n }\n }\n\n /** Открыть подсказку. */\n private prepareOpen = () => {\n if (this.state.exiting) {\n this.animateExitStop();\n }\n this.setState({ isOpen: true, needRenderTooltip: true });\n };\n\n /** Закрыть подсказку. */\n private close = () => {\n this.setState({ isOpen: false });\n };\n\n /** Начало отслеживания подсказки и анимация её появления. */\n private enter = () => {\n this.trackTooltip();\n this.animateEnter();\n if (this.props.onShow && this.tooltipNode) {\n this.props.onShow(this.tooltipNode);\n }\n };\n\n /** Окончание отслеживания подсказки и анимация её исчезновения. */\n private exit = () => {\n this.animateExit();\n this.untrackTooltip();\n };\n\n /** Сохранение ноды подсказки и ссылок на её тело и стрелочку. */\n private setTooltipNode = (node: HTMLDivElement | null) => {\n const { setTooltipRef } = this.props;\n\n if (node) {\n // Получение ссылок на тело подсказки и стрелочку.\n this.bodyEl = this.bodyRef.current;\n this.tipEl = this.tipRef.current;\n }\n\n this.tooltipNode = node;\n\n setTooltipRef?.(this.tooltipNode);\n };\n\n /** Расчёт и применение положения подсказки и её стрелочки. */\n private resolveTooltipLayout = () => {\n if (!this.tooltipNode) {\n return;\n }\n\n const { alignTip } = this.props;\n\n // Поиск оптимальной зоны для позиционирования. Измеряет размер каждой зоны и использует наибольшую.\n // В качестве размера тултипа берется размер тела тултипа плюс высота стрелочки с обеих сторон.\n const zone = pickZone(\n this.props.preferPlace,\n this.windowBounds,\n this.targetBounds,\n TIP_HEIGHT,\n MAX_FROM_EDGE_FOR_TIP,\n {\n h: this.tooltipBodySize.h + TIP_HEIGHT,\n w: this.tooltipBodySize.w + TIP_HEIGHT,\n },\n );\n\n this.zone = zone;\n\n this.setState({\n standing: zone.standing,\n });\n\n const axis = axes[zone.flow];\n\n // Для расчета позиции тултипа, размер тултипа вычисляется в зависимости от зоны где он будет располагаться,\n // если тултип в сверху или снизу то высота стрелочки прибавляется к высоте тултипа\n const tooltipSize = { ...this.tooltipBodySize };\n tooltipSize[zone.flow === ETooltipFlowTypes.ROW ? ETooltipSizeParameter.W : ETooltipSizeParameter.H] +=\n TIP_HEIGHT;\n\n /* При позиционировании на вспомогательной оси нельзя превышать границы. Для достижения этого: Сначала\n позиционируется вспомогательной оси относительно центра вспомогательной оси обернутого элемента, затем\n смещение на необходимую величину, чтобы выйти за границы.\n */\n const pos = calcRelPos(zone, this.targetBounds, tooltipSize);\n\n // Смещение позволяет разработчику контролировать дистанцию между Tip (стрелочкой) и обернутым элементом.\n pos[axis.main.start] += OFFSET * zone.order;\n\n let dockingEdgeBufferLength = 0;\n if (this.bodyEl) {\n dockingEdgeBufferLength = Math.round(parseFloat(getComputedStyle(this.bodyEl).borderRadius)) || 0;\n }\n /*\n * Ограничение позиционирование обертки внутри элемента рамки. Попытка не попасть в визуально допустимый\n * буфер элемента рамки. Буфер рассчитывается в зависимости от размера Tip (стрелочка) и его OFFSET (отступ).\n */\n const frameBuffer = TIP_HEIGHT + OFFSET;\n const hangingBufferLength = dockingEdgeBufferLength * 2 + TIP_HEIGHT * 2 + frameBuffer;\n const frameCrossStart = this.windowBounds[axis.cross.start];\n const frameCrossEnd = this.windowBounds[axis.cross.end];\n const frameCrossLength = this.windowBounds[axis.cross.size];\n const frameCrossInnerLength = frameCrossLength - frameBuffer * 2;\n const frameCrossInnerStart = frameCrossStart + frameBuffer;\n const frameCrossInnerEnd = frameCrossEnd - frameBuffer;\n const tooltipCrossStart = pos[axis.cross.start];\n const tooltipCrossEnd = pos[axis.cross.end];\n\n if (alignTip === ETooltipAlign.START) {\n pos[axis.cross.start] =\n this.targetBounds[axis.cross.end] -\n MAX_FROM_EDGE_FOR_TIP -\n TIP_HEIGHT -\n this.targetBounds[axis.cross.size] / 2;\n } else if (alignTip === ETooltipAlign.END) {\n pos[axis.cross.start] =\n this.targetBounds[axis.cross.start] -\n tooltipSize[axis.cross.size] +\n MAX_FROM_EDGE_FOR_TIP +\n TIP_HEIGHT +\n this.targetBounds[axis.cross.size] / 2;\n } else if (pos.crossLength > frameCrossLength) {\n /*\n * Если Tooltip не влезает в frameCrossLength тогда просто позиционируем его в `frameCrossStart`.\n * CrossLength тултипа будет принудительно forced to overflow into the `Frame` .\n */\n pos[axis.cross.start] = 0;\n\n // Если tooltipCrossStart выходит за некое пороговое значение targetCrossLength, тогда ограничить его tooltipCrossStart\n } else if (this.targetBounds[axis.cross.end] < hangingBufferLength) {\n pos[axis.cross.start] = this.targetBounds[axis.cross.end] - hangingBufferLength;\n\n /*\n * Проверка, что начало вспомогательной оси в пределах обернутого элемента и его рамок, имеет ли смысл\n * пытаться вместить Tooltip туда\n */\n } else if (this.targetBounds[axis.cross.start] > frameCrossInnerEnd) {\n pos[axis.cross.start] = this.targetBounds[axis.cross.start] - tooltipSize[axis.cross.size];\n\n /* Если tooltipCrossStart не влазит внутрь рамок (honouring buffers) тогда просто центруем поповер в\n оставшейся frameCrossLength.\n */\n } else if (pos.crossLength > frameCrossInnerLength) {\n pos[axis.cross.start] = (frameCrossLength - pos.crossLength) / 2;\n } else if (tooltipCrossStart < frameCrossInnerStart) {\n pos[axis.cross.start] = frameCrossInnerStart;\n } else if (tooltipCrossEnd > frameCrossInnerEnd) {\n pos[axis.cross.start] = pos[axis.cross.start] - (pos[axis.cross.end] - frameCrossInnerEnd);\n }\n /**\n * Применение стилей flow и order. Это может повлиять на последующие измерения высоты и ширины контейнера.\n * Когда Tip (стрелочка) меняет ориентацию из-за изменений `row`/`column`, будет затронуты ширина и высота.\n * Мониторинг лейаута перехватит эти изменения и сам пересчитает лейаут.\n */\n this.tooltipNode.style.flexFlow = zone.flow;\n if (this.bodyEl) {\n this.bodyEl.style.order = zone.order.toString();\n }\n\n // Применение абсолютного позиционирования\n this.tooltipNode.style.top = `${pos.y}px`;\n this.tooltipNode.style.left = `${pos.x}px`;\n\n // Расчёт позиционирования Tip (стрелочки)\n let tipCrossPos =\n centerOfBoundsFromBounds(zone.flow, ETooltipAxesType.CROSS, this.targetBounds, pos) - TIP_HEIGHT;\n\n if (tipCrossPos < MAX_FROM_EDGE_FOR_TIP) {\n tipCrossPos = MAX_FROM_EDGE_FOR_TIP;\n } else if (tipCrossPos > pos.crossLength - MAX_FROM_EDGE_FOR_TIP - TIP_HEIGHT * 2) {\n tipCrossPos = pos.crossLength - MAX_FROM_EDGE_FOR_TIP - TIP_HEIGHT * 2;\n }\n\n if (this.tipEl) {\n this.tipEl.style.transform = `${flowToTipTranslations[zone.flow]}(${tipCrossPos}px)`;\n this.tipEl.style.borderWidth = `${TIP_HEIGHT}px`;\n }\n };\n\n /** Проверка изменения границ целевого элемента. Возвращает true, если границы изменились. */\n private setAndCheckResizeTargetBounds = () => {\n const { targetRef } = this.props;\n\n if (!targetRef.current) {\n return false;\n }\n\n const newTargetBounds = calcBounds(targetRef.current);\n if (this.targetBounds && equalCoords(this.targetBounds, newTargetBounds)) {\n return false;\n }\n\n this.targetBounds = newTargetBounds;\n return true;\n };\n\n /** Перерасчёт положения, если границы целевого элемента изменились. */\n private checkTargetReposition = () => {\n if (this.setAndCheckResizeTargetBounds()) {\n this.resolveTooltipLayout();\n }\n };\n\n /** Измерение размеров тела подсказки (без стрелочки). */\n private setTooltipBodySize = () => {\n if (!this.bodyEl) {\n return;\n }\n\n this.tooltipBodySize = { w: this.bodyEl.offsetWidth, h: this.bodyEl.offsetHeight };\n };\n\n /** Очистка таймеров анимации исчезновения. */\n private animateExitStop = () => {\n if (this.exitingAnimationTimer1) {\n window.clearTimeout(this.exitingAnimationTimer1);\n }\n if (this.exitingAnimationTimer2) {\n window.clearTimeout(this.exitingAnimationTimer2);\n }\n this.setState({ exiting: false });\n };\n\n /** Анимация исчезновения. */\n private animateExit = () => {\n this.setState({ exiting: true });\n this.exitingAnimationTimer2 = window.setTimeout(() => {\n window.setTimeout(() => {\n if (!this.tooltipNode) {\n return;\n }\n this.tooltipNode.style.transform = `${flowToTooltipTranslations[this.zone.flow]}(${\n this.zone.order * 50\n }px)`;\n this.tooltipNode.style.opacity = \"0\";\n }, 0);\n }, 0);\n\n this.exitingAnimationTimer1 = window.setTimeout(() => {\n this.setState({ exiting: false, needRenderTooltip: false });\n }, ENTER_EXIT_TRANSITION_DURATION_MS);\n };\n\n /** Анимация появления. */\n private animateEnter = () => {\n if (!this.tooltipNode) {\n return;\n }\n\n // Подготовка стилей появления, чтобы можно было анимировать.\n this.tooltipNode.style.transform = `${flowToTooltipTranslations[this.zone.flow]}(${this.zone.order * 50}px)`;\n this.tooltipNode.style.opacity = \"0\";\n\n /* Hack: http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style-changes */\n // После инициализации лейаута применяем анимации transition.\n // Без этой строчки не всегда применяются стили добавленные в style, из-за чего иногда тултип появляется резко подергиваясь\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.tooltipNode.offsetHeight;\n\n if (this.tipEl) {\n this.tipEl.style.transition = \"transform 150ms ease-in\";\n }\n this.tooltipNode.style.transitionProperty = \"opacity, transform\";\n this.tooltipNode.style.transitionDuration = \"500ms\";\n this.tooltipNode.style.transitionTimingFunction = \"cubic-bezier(0.230, 1.000, 0.320, 1.000)\";\n this.tooltipNode.style.opacity = \"1\";\n this.tooltipNode.style.transform = \"translateY(0)\";\n };\n\n /** Начало отслеживания положения подсказки: опрос границ, подписка на scroll и resize. */\n private trackTooltip = () => {\n if (!this.tooltipNode) {\n return;\n }\n this.hasTracked = true;\n\n // Установка опроса для проверки изменилось ли положение. Другого способа узнать этого без опроса\n this.checkLayoutInterval = window.setInterval(this.checkTargetReposition, REFRESH_INTERVAL_MS);\n\n /*\n Наблюдение за изменением границ на всех уровнях, при необходимости - перерасчет. Привязка лэйаут монитора\n должна быть сделана сразу, т.к. перерасчет может вызывать рекурсивно изменение в границах. Поэтому если мы\n сделали одноразовый force-layout перед наблюдением, наши расчеты окончательной позиции могут быть неверными.\n */\n\n window.addEventListener(\"scroll\", this.onWindowScroll);\n window.addEventListener(\"resize\", this.onWindowResize);\n\n // Запуск лейаута при первой прогрузке\n this.windowBounds = calcBounds(window); // запомнили размер окна\n this.setTooltipBodySize(); // заполнили размер тултипа\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n };\n\n /** Отписка от отслеживания положения подсказки. */\n private untrackTooltip = () => {\n if (!this.tooltipNode) {\n return;\n }\n if (this.checkLayoutInterval) {\n window.clearInterval(this.checkLayoutInterval);\n }\n window.removeEventListener(\"scroll\", this.onWindowScroll);\n window.removeEventListener(\"resize\", this.onWindowResize);\n this.hasTracked = false;\n };\n\n /** Перерасчёт положения при скролле окна. */\n private onWindowScroll = () => {\n this.setAndCheckResizeTargetBounds();\n this.resolveTooltipLayout();\n };\n\n /** Перерасчёт положения при изменении размеров окна. */\n private onWindowResize = () => {\n this.windowBounds = calcBounds(window);\n this.resolveTooltipLayout();\n };\n\n /** Разметка подсказки: тело, ссылка, кнопка закрытия и стрелочка. */\n private tooltipRender = (): React.ReactElement => {\n const {\n className,\n size,\n preferPlace,\n alignTip,\n isOpen,\n renderContainer,\n onShow,\n setTooltipRef,\n onKeyDown,\n targetRef,\n ...rest\n } = this.props;\n const { elements } = this.context;\n\n const sizeClass = size === ETooltipSize.SM ? styles.tooltipSM : styles.tooltipLG;\n const classNames = clsx(\n styles.tooltipDesktop,\n sizeClass,\n { [styles.closable]: !!elements.closeButton },\n className,\n );\n\n return (\n <div className={styles.tooltipOverlay}>\n <div className={classNames} {...rest} ref={this.setTooltipNode}>\n <div className={styles.tooltipDesktopContent} ref={this.bodyRef}>\n {elements.body}\n {elements.link}\n {elements.closeButton}\n </div>\n <TooltipDesktopTip direction={DIRECTIONS[this.state.standing]} ref={this.tipRef} />\n </div>\n </div>\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { ETooltipDirection } from "../../../enums.js";
|
|
4
|
-
import { c as clsx } from "../../../../../chunks/vendor-
|
|
5
|
-
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-
|
|
4
|
+
import { c as clsx } from "../../../../../chunks/vendor-BtZO8a0z.js";
|
|
5
|
+
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-D22gy-42.js";
|
|
6
|
+
const DIRECTION_CLASS_NAMES = {
|
|
7
|
+
[ETooltipDirection.UP]: styles.up,
|
|
8
|
+
[ETooltipDirection.DOWN]: styles.down,
|
|
9
|
+
[ETooltipDirection.LEFT]: styles.left,
|
|
10
|
+
[ETooltipDirection.RIGHT]: styles.right
|
|
11
|
+
};
|
|
6
12
|
const TooltipDesktopTip = React.forwardRef((props, ref) => {
|
|
7
13
|
const { direction } = props;
|
|
8
|
-
|
|
9
|
-
switch (direction) {
|
|
10
|
-
case ETooltipDirection.UP:
|
|
11
|
-
directionClass = styles.up;
|
|
12
|
-
break;
|
|
13
|
-
case ETooltipDirection.DOWN:
|
|
14
|
-
directionClass = styles.down;
|
|
15
|
-
break;
|
|
16
|
-
case ETooltipDirection.LEFT:
|
|
17
|
-
directionClass = styles.left;
|
|
18
|
-
break;
|
|
19
|
-
case ETooltipDirection.RIGHT:
|
|
20
|
-
directionClass = styles.right;
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
return /* @__PURE__ */ jsx("div", { className: clsx(styles.tooltipDesktopTip, directionClass), ref });
|
|
14
|
+
return /* @__PURE__ */ jsx("div", { className: clsx(styles.tooltipDesktopTip, DIRECTION_CLASS_NAMES[direction]), ref });
|
|
24
15
|
});
|
|
25
16
|
TooltipDesktopTip.displayName = "TooltipDesktopTip";
|
|
26
17
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipDesktopTip.js","sources":["../../../../../../src/components/Tooltip/components/desktop/components/TooltipDesktopTip.tsx"],"sourcesContent":["import React from \"react\";\nimport { ETooltipDirection } from \"@sberbusiness/triplex-next/components/Tooltip/enums\";\nimport clsx from \"clsx\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipDesktop.module.less\";\n\n/** Свойства компонента TooltipDesktopTip. */\ninterface ITooltipDesktopTipProps {\n /** Направление, на которое смотрит указатель \"стрелочки\" (треугольника). */\n direction: ETooltipDirection;\n /** Дочерние элементы. */\n children?: never;\n}\n\n/** Компонент \"стрелочка\" (треугольник) Tooltip'а. */\nexport const TooltipDesktopTip = React.forwardRef<HTMLDivElement, ITooltipDesktopTipProps>((props, ref) => {\n const { direction } = props;\n\n
|
|
1
|
+
{"version":3,"file":"TooltipDesktopTip.js","sources":["../../../../../../src/components/Tooltip/components/desktop/components/TooltipDesktopTip.tsx"],"sourcesContent":["import React from \"react\";\nimport { ETooltipDirection } from \"@sberbusiness/triplex-next/components/Tooltip/enums\";\nimport clsx from \"clsx\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipDesktop.module.less\";\n\n/** Класс модификатора для каждого направления указателя. */\nconst DIRECTION_CLASS_NAMES: Record<ETooltipDirection, string> = {\n [ETooltipDirection.UP]: styles.up,\n [ETooltipDirection.DOWN]: styles.down,\n [ETooltipDirection.LEFT]: styles.left,\n [ETooltipDirection.RIGHT]: styles.right,\n};\n\n/** Свойства компонента TooltipDesktopTip. */\ninterface ITooltipDesktopTipProps {\n /** Направление, на которое смотрит указатель \"стрелочки\" (треугольника). */\n direction: ETooltipDirection;\n /** Дочерние элементы. */\n children?: never;\n}\n\n/** Компонент \"стрелочка\" (треугольник) Tooltip'а. */\nexport const TooltipDesktopTip = React.forwardRef<HTMLDivElement, ITooltipDesktopTipProps>((props, ref) => {\n const { direction } = props;\n\n return <div className={clsx(styles.tooltipDesktopTip, DIRECTION_CLASS_NAMES[direction])} ref={ref} />;\n});\n\nTooltipDesktopTip.displayName = \"TooltipDesktopTip\";\n"],"names":[],"mappings":";;;;;AAMA,MAAM,wBAA2D;AAAA,EAC7D,CAAC,kBAAkB,EAAE,GAAG,OAAO;AAAA,EAC/B,CAAC,kBAAkB,IAAI,GAAG,OAAO;AAAA,EACjC,CAAC,kBAAkB,IAAI,GAAG,OAAO;AAAA,EACjC,CAAC,kBAAkB,KAAK,GAAG,OAAO;AACtC;AAWO,MAAM,oBAAoB,MAAM,WAAoD,CAAC,OAAO,QAAQ;AACvG,QAAM,EAAE,cAAc;AAEtB,SAAO,oBAAC,OAAA,EAAI,WAAW,KAAK,OAAO,mBAAmB,sBAAsB,SAAS,CAAC,GAAG,IAAA,CAAU;AACvG,CAAC;AAED,kBAAkB,cAAc;"}
|