@sberbusiness/triplex-next 1.40.0 → 1.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-BNrk1vyk.js → AlertProcessSpoiler-BjbtoDeJ.js} +16 -16
- package/chunks/{AlertProcessSpoiler-BNrk1vyk.js.map → AlertProcessSpoiler-BjbtoDeJ.js.map} +1 -1
- package/chunks/{CalendarViewItem-knPscTce.js → CalendarViewItem-_CpmPhgO.js} +30 -28
- package/chunks/CalendarViewItem-_CpmPhgO.js.map +1 -0
- package/chunks/Card.module-DROOoa1I.js +32 -0
- package/chunks/Card.module-DROOoa1I.js.map +1 -0
- package/chunks/Carousel.module-CYqc9TvG.js +30 -0
- package/chunks/Carousel.module-CYqc9TvG.js.map +1 -0
- package/chunks/CheckboxTreeExtended.module-DLgZtzeR.js +24 -0
- package/chunks/CheckboxTreeExtended.module-DLgZtzeR.js.map +1 -0
- package/chunks/{Chip-CI8ALCUS.js → Chip-BpQdbkKh.js} +27 -27
- package/chunks/Chip-BpQdbkKh.js.map +1 -0
- package/chunks/Confirm.module-DSL8UGz1.js +24 -0
- package/chunks/Confirm.module-DSL8UGz1.js.map +1 -0
- package/chunks/{DropdownListItem-BqOoPFSx.js → DropdownListItem-C2A5QJs2.js} +10 -10
- package/chunks/{DropdownListItem-BqOoPFSx.js.map → DropdownListItem-C2A5QJs2.js.map} +1 -1
- package/chunks/DropdownMobile.module-DzRRyaX7.js +40 -0
- package/chunks/DropdownMobile.module-DzRRyaX7.js.map +1 -0
- package/chunks/Footer.module-5k57klu0.js +12 -0
- package/chunks/Footer.module-5k57klu0.js.map +1 -0
- package/chunks/{HeaderLayoutSidebar.module-MnhSBdiv.js → HeaderLayoutSidebar.module-DZeFuoug.js} +4 -4
- package/chunks/HeaderLayoutSidebar.module-DZeFuoug.js.map +1 -0
- package/chunks/HeaderTabs.module-CgMRh_ys.js +12 -0
- package/chunks/HeaderTabs.module-CgMRh_ys.js.map +1 -0
- package/chunks/{HeaderTitle.module-BGOYMt6r.js → HeaderTitle.module-D0AhXiBS.js} +4 -4
- package/chunks/HeaderTitle.module-D0AhXiBS.js.map +1 -0
- package/chunks/ImageGalleryExtendedMain.module-DIQlXnyT.js +28 -0
- package/chunks/ImageGalleryExtendedMain.module-DIQlXnyT.js.map +1 -0
- package/chunks/{ImageGalleryExtendedThumb-D6RAJpt8.js → ImageGalleryExtendedThumb-DkJtr4Hx.js} +5 -5
- package/chunks/{ImageGalleryExtendedThumb-D6RAJpt8.js.map → ImageGalleryExtendedThumb-DkJtr4Hx.js.map} +1 -1
- package/chunks/IslandAccordion.module-DDX8tbtb.js +44 -0
- package/chunks/IslandAccordion.module-DDX8tbtb.js.map +1 -0
- package/chunks/IslandWidgetFooter.module-sDy1EclD.js +12 -0
- package/chunks/IslandWidgetFooter.module-sDy1EclD.js.map +1 -0
- package/chunks/IslandWidgetHeader.module-nJ_lt8_M.js +20 -0
- package/chunks/IslandWidgetHeader.module-nJ_lt8_M.js.map +1 -0
- package/chunks/{LightBoxContent-d_LBU_ZW.js → LightBoxContent-B1KBUT90.js} +14 -14
- package/chunks/{LightBoxContent-d_LBU_ZW.js.map → LightBoxContent-B1KBUT90.js.map} +1 -1
- package/chunks/LightBoxControls.module-TooI22q5.js +26 -0
- package/chunks/LightBoxControls.module-TooI22q5.js.map +1 -0
- package/chunks/{LightBoxSideOverlayClose.module-eTdxNvSz.js → LightBoxSideOverlayClose.module-CKA2SSDt.js} +4 -4
- package/chunks/LightBoxSideOverlayClose.module-CKA2SSDt.js.map +1 -0
- package/chunks/{ListItemControlsButton-D2ONoqII.js → ListItemControlsButton-mh3tmBtz.js} +9 -9
- package/chunks/{ListItemControlsButton-D2ONoqII.js.map → ListItemControlsButton-mh3tmBtz.js.map} +1 -1
- package/chunks/ListItemTail.module-C7mDty9h.js +18 -0
- package/chunks/ListItemTail.module-C7mDty9h.js.map +1 -0
- package/chunks/ListMasterFooter.module-0T0paIyY.js +14 -0
- package/chunks/ListMasterFooter.module-0T0paIyY.js.map +1 -0
- package/chunks/ModalWindow.module-Bp4oQKoa.js +28 -0
- package/chunks/ModalWindow.module-Bp4oQKoa.js.map +1 -0
- package/chunks/Notification.module-Be8nXM5D.js +34 -0
- package/chunks/Notification.module-Be8nXM5D.js.map +1 -0
- package/chunks/Overlay.module-D8ixOPRE.js +30 -0
- package/chunks/Overlay.module-D8ixOPRE.js.map +1 -0
- package/chunks/Page.module-BkjdT16T.js +15 -0
- package/chunks/Page.module-BkjdT16T.js.map +1 -0
- package/chunks/SMSField.module-ryKCPxNS.js +26 -0
- package/chunks/SMSField.module-ryKCPxNS.js.map +1 -0
- package/chunks/SliderExtendedMarks.module-Zcavk5hB.js +24 -0
- package/chunks/SliderExtendedMarks.module-Zcavk5hB.js.map +1 -0
- package/chunks/{SliderExtendedRail-CVEwe6OK.js → SliderExtendedRail-t3p4pk5Y.js} +5 -5
- package/chunks/{SliderExtendedRail-CVEwe6OK.js.map → SliderExtendedRail-t3p4pk5Y.js.map} +1 -1
- package/chunks/StatusTracker.module-B5l6M5fR.js +44 -0
- package/chunks/StatusTracker.module-B5l6M5fR.js.map +1 -0
- package/chunks/{StepperStepArrowBorder-BO_ItxMh.js → StepperStepArrowBorder-DLBwu9Pe.js} +16 -16
- package/chunks/{StepperStepArrowBorder-BO_ItxMh.js.map → StepperStepArrowBorder-DLBwu9Pe.js.map} +1 -1
- package/chunks/{SuggestFieldMobileDropdownHint-DyfJuyUe.js → SuggestFieldMobileDropdownHint-CD9CQkCW.js} +3 -3
- package/chunks/{SuggestFieldMobileDropdownHint-DyfJuyUe.js.map → SuggestFieldMobileDropdownHint-CD9CQkCW.js.map} +1 -1
- package/chunks/TableFooter.module-q3JRqYCP.js +22 -0
- package/chunks/TableFooter.module-q3JRqYCP.js.map +1 -0
- package/chunks/TabsExtended.module-btXrsifk.js +26 -0
- package/chunks/TabsExtended.module-btXrsifk.js.map +1 -0
- package/chunks/TabsLine.module-BsnnLIOF.js +36 -0
- package/chunks/TabsLine.module-BsnnLIOF.js.map +1 -0
- package/chunks/TooltipDesktop.module-V0gGAoBE.js +32 -0
- package/chunks/TooltipDesktop.module-V0gGAoBE.js.map +1 -0
- package/chunks/TreeView.module-CCsUTogj.js +12 -0
- package/chunks/TreeView.module-CCsUTogj.js.map +1 -0
- package/chunks/{UploadZoneInput-BHUONqVR.js → UploadZoneInput-CipHc_ua.js} +5 -5
- package/chunks/{UploadZoneInput-BHUONqVR.js.map → UploadZoneInput-CipHc_ua.js.map} +1 -1
- package/chunks/{constants-C-WrqYH6.js → constants-DXoLzXAh.js} +27 -27
- package/chunks/{constants-C-WrqYH6.js.map → constants-DXoLzXAh.js.map} +1 -1
- package/chunks/{utils-g0xZYVuS.js → utils-B-YL1v1D.js} +11 -11
- package/chunks/{utils-g0xZYVuS.js.map → utils-B-YL1v1D.js.map} +1 -1
- package/chunks/{utils-BaakoACO.js → utils-BSk7AAAR.js} +6 -6
- package/chunks/{utils-BaakoACO.js.map → utils-BSk7AAAR.js.map} +1 -1
- package/chunks/{utils-BHxrQbA6.js → utils-Dfah6DTV.js} +8 -8
- package/chunks/utils-Dfah6DTV.js.map +1 -0
- package/chunks/{utils-D4UOxU49.js → utils-Va-aYj5A.js} +27 -27
- package/chunks/{utils-D4UOxU49.js.map → utils-Va-aYj5A.js.map} +1 -1
- package/components/Alert/AlertContext/AlertContext.js +7 -7
- package/components/Alert/AlertProcess/AlertProcess.js +2 -2
- package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +1 -1
- package/components/Amount/Amount.js +2 -2
- package/components/Avatar/Avatar.js +13 -13
- package/components/Badge/Badge.js +4 -4
- package/components/Badge/BadgeDot.js +4 -4
- package/components/Badge/components/BadgeContent.js +6 -6
- package/components/Badge/components/BadgePostfix.js +1 -1
- package/components/Badge/components/BadgePrefix.js +1 -1
- package/components/Body/Body.js +3 -3
- package/components/Button/Button.js +20 -20
- package/components/Button/ButtonBase.js +1 -1
- package/components/Button/ButtonDropdown.js +8 -8
- package/components/Button/ButtonDropdownExtended.js +2 -2
- package/components/Button/ButtonIcon.js +3 -3
- package/components/Calendar/Calendar.js +16 -16
- 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 +31 -55
- package/components/Calendar/components/CalendarViewDays.js.map +1 -1
- package/components/Calendar/components/CalendarViewItem.js +1 -1
- 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 +5 -5
- package/components/Card/CardStatic.js +2 -2
- package/components/Card/components/CardContent/CardContent.js +1 -1
- package/components/Card/components/CardContent/components/CardContentBody.js +1 -1
- package/components/Card/components/CardContent/components/CardContentFooter.js +1 -1
- package/components/Card/components/CardContent/components/CardContentHeader.js +1 -1
- package/components/Card/components/CardMedia.js +1 -1
- 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 +1 -1
- package/components/Carousel/CarouselButton.js +1 -1
- package/components/Carousel/CarouselIndicators.js +1 -1
- package/components/Carousel/CarouselItem.js +1 -1
- package/components/Carousel/CarouselTrack.js +1 -1
- package/components/Carousel/CarouselViewport.js +1 -1
- package/components/CarouselExtended/CarouselExtended.js +1 -1
- package/components/Checkbox/Checkbox.js +10 -10
- package/components/Checkbox/CheckboxXGroup.js +8 -8
- package/components/Checkbox/CheckboxYGroup.js +1 -1
- package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +1 -1
- package/components/Chip/Chip.js +1 -1
- package/components/Chip/ChipClearButton.js +1 -1
- package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
- package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
- package/components/Chip/ChipDropdownArrow.js +2 -2
- package/components/Chip/ChipIcon.js +1 -1
- package/components/Chip/ChipMultiselect.js +1 -1
- package/components/Chip/ChipOptions.js +2 -2
- package/components/Chip/ChipSelect/ChipSelect.js +1 -1
- package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
- package/components/Chip/ChipSort.js +1 -1
- package/components/Chip/ChipSuggest/ChipSuggest.js +1 -1
- package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +1 -1
- 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 +7 -7
- package/components/Col/Col.js +132 -132
- package/components/CollapsibleTree/CollapsibleTree.js +1 -1
- package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +1 -1
- package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +1 -1
- package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +4 -4
- package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +1 -1
- package/components/Confirm/Confirm.js +1 -1
- package/components/Confirm/components/ConfirmCloseButton.js +1 -1
- package/components/Confirm/components/ConfirmContent.js +1 -1
- package/components/Confirm/components/ConfirmContentTitle.js +1 -1
- package/components/Confirm/components/ConfirmControls.js +1 -1
- 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 +1 -1
- package/components/DateRange/DateRange.js +3 -3
- package/components/DesignTokens/DesignTokenUtils.js +25 -20
- 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 +17 -17
- package/components/DocumentNumberEdit/DocumentNumberEdit.js +3 -3
- package/components/Dropdown/desktop/DropdownDesktop.js +6 -6
- package/components/Dropdown/desktop/DropdownList.js +1 -1
- package/components/Dropdown/desktop/DropdownListItem.js +1 -1
- package/components/Dropdown/desktop/index.js +1 -1
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/mobile/DropdownMobile.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileBody.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileClose.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileFooter.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileHeader.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileInner.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileInput.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileList.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileListItem.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileLoader.js +1 -1
- package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +1 -1
- package/components/Ellipsis/Ellipsis.js +3 -3
- package/components/EmptyView/EmptyView.js +4 -4
- package/components/ExpandAnimation/ExpandAnimation.js +1 -1
- package/components/FocusTrapExtended/FocusTrapExtended.js +20 -8
- package/components/FocusTrapExtended/FocusTrapExtended.js.map +1 -1
- package/components/Footer/Footer.js +1 -1
- package/components/Footer/components/FooterDescription.js +1 -1
- package/components/Footer/components/FooterDescriptionContent.js +1 -1
- package/components/Footer/components/FooterDescriptionControls.js +1 -1
- package/components/FormField/FormField.js +20 -20
- 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 +1 -1
- 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 +13 -5
- package/components/FormField/components/FormFieldDescription.js.map +1 -1
- package/components/FormField/components/FormFieldInput.js +7 -8
- package/components/FormField/components/FormFieldInput.js.map +1 -1
- package/components/FormField/components/FormFieldLabel.js +10 -11
- package/components/FormField/components/FormFieldLabel.js.map +1 -1
- package/components/FormField/components/FormFieldMaskedInput.js +6 -6
- package/components/FormField/components/FormFieldPostfix.js +5 -29
- package/components/FormField/components/FormFieldPostfix.js.map +1 -1
- package/components/FormField/components/FormFieldPrefix.js +5 -29
- package/components/FormField/components/FormFieldPrefix.js.map +1 -1
- package/components/FormField/components/FormFieldTarget.js +8 -8
- package/components/FormField/components/FormFieldTextarea.js +4 -4
- 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 +8 -8
- package/components/Header/Header.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +1 -1
- package/components/Header/components/HeaderSubheader/HeaderSubheader.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabs.js +1 -1
- package/components/Header/components/HeaderTabs/HeaderTabsContent.js +1 -1
- package/components/Header/components/HeaderTabs/HeaderTabsControls.js +1 -1
- package/components/Header/components/HeaderTitle/HeaderTitle.js +1 -1
- package/components/Header/components/HeaderTitle/HeaderTitleContent.js +1 -1
- package/components/Header/components/HeaderTitle/HeaderTitleControls.js +1 -1
- package/components/HelpBox/HelpBox.js +1 -1
- package/components/IconWrapper/IconWrapper.js +7 -7
- package/components/IconWrapper/IconWrapper.js.map +1 -1
- package/components/ImageGallery/ImageGallery.js +1 -1
- package/components/ImageGalleryExtended/ImageGalleryExtended.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +1 -1
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +3 -3
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +1 -1
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +1 -1
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +1 -1
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +1 -1
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +1 -1
- package/components/ImageGalleryExtended/components/index.js +1 -1
- package/components/ImageGalleryExtended/index.js +1 -1
- package/components/Island/Island.js +3 -3
- package/components/Island/Island.js.map +1 -1
- package/components/Island/components/IslandBody.js +2 -1
- package/components/Island/components/IslandBody.js.map +1 -1
- package/components/Island/components/IslandFooter.js +7 -4
- package/components/Island/components/IslandFooter.js.map +1 -1
- package/components/Island/components/IslandHeader.js +7 -4
- 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 +2 -2
- package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
- package/components/IslandAccordion/components/IslandAccordionFooter.js +1 -1
- package/components/IslandAccordion/components/IslandAccordionItem.js +2 -2
- package/components/IslandWidget/IslandWidget.js +4 -4
- package/components/IslandWidget/components/IslandWidgetBody.js +1 -1
- package/components/IslandWidget/components/IslandWidgetExtraFooter.js +1 -1
- package/components/IslandWidget/components/IslandWidgetFooter.js +1 -1
- package/components/IslandWidget/components/IslandWidgetFooterContent.js +1 -1
- package/components/IslandWidget/components/IslandWidgetFooterControls.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeader.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeaderContent.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeaderControls.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +1 -1
- package/components/IslandWidget/components/IslandWidgetWrapper.js +1 -1
- 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 +5 -5
- package/components/LightBox/LightBoxContent.js +1 -1
- package/components/LightBox/LightBoxControls/LightBoxArrow.js +1 -1
- package/components/LightBox/LightBoxControls/LightBoxClose.js +1 -1
- package/components/LightBox/LightBoxControls/LightBoxControls.js +1 -1
- package/components/LightBox/LightBoxControls/LightBoxNext.js +1 -1
- package/components/LightBox/LightBoxControls/LightBoxPrev.js +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +12 -13
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js.map +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +1 -1
- package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +3 -3
- package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +3 -3
- package/components/Link/Link.js +5 -5
- package/components/List/List.js +3 -3
- package/components/List/components/ListActionItem.js +1 -1
- package/components/List/components/ListEmptyState.js +1 -1
- package/components/List/components/ListItem.js +1 -1
- package/components/List/components/ListItemContent.js +4 -4
- package/components/List/components/ListItemControls.js +1 -1
- package/components/List/components/ListItemControlsButton.js +1 -1
- package/components/List/components/ListItemControlsButtonDropdown.js +1 -1
- package/components/List/components/ListItemLoading.js +1 -1
- package/components/List/components/ListItemSelectable.js +6 -6
- package/components/List/components/ListItemTailLeft.js +1 -1
- package/components/List/components/ListItemTailRight.js +1 -1
- package/components/List/components/ListSortableItem.js +2 -2
- package/components/List/components/ListSortableItemControls.js +1 -1
- package/components/List/components/ListSortableItemTarget.js +4 -4
- package/components/List/components/ListTableItem.js +3 -3
- 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 +1 -1
- package/components/ListMaster/components/ListMasterFooter.js +1 -1
- package/components/ListMaster/components/ListMasterFooterControls.js +1 -1
- package/components/ListMaster/components/ListMasterFooterDescription.js +1 -1
- package/components/ListMaster/components/ListMasterHeader.js +2 -2
- package/components/ListMaster/components/SelectionControls.js +2 -2
- package/components/Loader/LoaderMiddle/LoaderMiddle.js +10 -10
- package/components/Loader/LoaderMiddle/LoaderMiddle.js.map +1 -1
- package/components/Loader/LoaderSmall/LoaderSmall.js +10 -10
- package/components/LoaderScreen/LoaderScreen.js +13 -12
- package/components/LoaderScreen/LoaderScreen.js.map +1 -1
- package/components/Marker/Marker.js +1 -1
- package/components/Marker/utils.js +1 -1
- package/components/MarkerStatus/MarkerStatus.js +7 -7
- package/components/ModalWindow/ModalWindow.js +1 -1
- package/components/ModalWindow/components/ModalWindowBody.js +1 -1
- package/components/ModalWindow/components/ModalWindowClose.js +1 -1
- package/components/ModalWindow/components/ModalWindowContent.js +1 -1
- package/components/ModalWindow/components/ModalWindowHeader.js +1 -1
- package/components/ModalWindow/components/ModalWindowViewManager.js +1 -1
- package/components/MonthYearField/utils.js +2 -1
- package/components/MonthYearField/utils.js.map +1 -1
- package/components/MonthYearRange/MonthYearRange.js +3 -3
- package/components/MultiselectField/components/MultiselectFieldDropdown.js +1 -1
- package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +5 -5
- package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +1 -1
- package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +1 -1
- package/components/Notification/Notification.js +2 -2
- package/components/Notification/NotificationGrouped.js +1 -1
- package/components/Notification/components/NotificationBody.js +1 -1
- package/components/Notification/components/NotificationBodyList.js +1 -1
- package/components/Notification/components/NotificationClose.js +1 -1
- package/components/Notification/components/NotificationFooter.js +1 -1
- package/components/Notification/components/NotificationGroupedFooter.js +1 -1
- 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 +2 -2
- package/components/OrderedList/OrderedListItem.js +2 -2
- package/components/Overlay/Overlay.js +1 -1
- package/components/Overlay/OverlayMask.js +1 -1
- package/components/Overlay/OverlayPanel.js +1 -1
- package/components/Page/Page.js +1 -1
- package/components/Page/components/BodyPage.js +3 -3
- package/components/Page/components/FooterPage.js +1 -1
- package/components/Page/components/HeaderPage.js +1 -1
- package/components/Pagination/components/PaginationExtended.js +2 -2
- 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 +1 -1
- package/components/Pagination/components/PaginationPageButton.js +2 -2
- package/components/Pagination/components/PaginationPageEllipsis.js +1 -1
- package/components/Pagination/components/PaginationSelect.js +2 -2
- package/components/Pagination/{utils/paginationUtils.js → utils.js} +2 -2
- package/components/Pagination/utils.js.map +1 -0
- package/components/Radio/Radio.js +9 -9
- package/components/Radio/RadioXGroup.js +8 -8
- package/components/Radio/RadioYGroup.js +1 -1
- package/components/Row/Row.js +4 -4
- package/components/SMSField/SMSField.js +2 -2
- package/components/SMSField/components/RefreshIcon.js +1 -1
- package/components/SMSField/components/SMSFieldInput.js +1 -1
- package/components/SMSField/components/SMSFieldRefresh.js +1 -1
- package/components/SMSField/components/SMSFieldSubmit.js +1 -1
- package/components/SegmentedControl/SegmentedControl.js +9 -9
- package/components/SegmentedControl/SegmentedControlSegment.js +3 -3
- package/components/SelectExtendedField/SelectExtendedField.js +2 -1
- 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 +7 -7
- package/components/SelectField/SelectField.js +1 -1
- package/components/Skeleton/Skeleton.js +4 -4
- package/components/SliderExtended/SliderExtended.js +2 -2
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +6 -5
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js.map +1 -1
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +1 -1
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +1 -1
- package/components/SliderExtended/components/SliderExtendedRail.js +1 -1
- package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +4 -4
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +7 -6
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js.map +1 -1
- package/components/SmallInput/SmallInput.js +1 -1
- package/components/Spoiler/Spoiler.js +10 -10
- package/components/StatusTracker/StatusTracker.js +7 -6
- package/components/StatusTracker/StatusTracker.js.map +1 -1
- package/components/StatusTracker/components/StatusTrackerAlert.js +1 -1
- package/components/StatusTracker/components/StatusTrackerBody.js +1 -1
- package/components/StatusTracker/components/StatusTrackerButton.js +1 -1
- package/components/StatusTracker/components/StatusTrackerDescription.js +1 -1
- package/components/StatusTracker/components/StatusTrackerFooter.js +1 -1
- package/components/StatusTracker/components/StatusTrackerHeader.js +1 -1
- package/components/StatusTracker/components/StatusTrackerMedia.js +1 -1
- package/components/StatusTracker/components/StatusTrackerStatus.js +1 -1
- package/components/StatusTracker/components/StatusTrackerStatusGroup.js +1 -1
- package/components/StatusTracker/components/StatusTrackerSum.js +1 -1
- package/components/StatusTracker/components/StatusTrackerTitle.js +1 -1
- package/components/Step/Step.js +10 -10
- package/components/Stepper/Stepper.js +8 -8
- package/components/Stepper/StepperExtended.js +1 -1
- package/components/Stepper/StepperStep.js +2 -2
- package/components/Stepper/StepperStepArrowBorder.js +1 -1
- package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
- package/components/SuggestField/SuggestField.js +1 -1
- package/components/SuggestField/desktop/SuggestFieldDesktop.js +1 -1
- 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 +8 -8
- package/components/Table/ChipPanel.js +1 -1
- package/components/Table/ChipPanelLinks.js +1 -1
- package/components/Table/FilterPanel.js +2 -2
- package/components/Table/MasterTable.js +2 -2
- package/components/Table/NoColumns.js +2 -2
- package/components/Table/PaginationPanel.js +2 -2
- package/components/Table/TableBasic/TableBasic.js +1 -1
- package/components/Table/TableBasic/components/TableBasicBody.js +1 -1
- package/components/Table/TableBasic/components/TableBasicHeader.js +1 -1
- package/components/Table/TableBasic/components/TableBasicRow.js +1 -1
- package/components/Table/TableBasicSettings/TableBasicSettings.js +2 -2
- package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +2 -2
- package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +1 -1
- package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +1 -1
- package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +1 -1
- package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +1 -1
- package/components/Table/TableFooter/TableFooter.js +1 -1
- 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 +5 -5
- package/components/TabsExtended/TabsExtended.js +2 -2
- package/components/TabsExtended/components/TabsExtendedContent.js +1 -1
- package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +1 -1
- package/components/TabsExtended/components/TabsExtendedTab.js +1 -1
- package/components/TabsExtended/components/TabsExtendedTabButton.js +1 -1
- package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +1 -1
- package/components/TabsExtended/utils.js +1 -1
- package/components/TabsLine/TabsLine.js +1 -1
- package/components/TabsLine/components/TabsLineDesktop.js +1 -1
- package/components/TabsLine/components/TabsLineDropdown.js +2 -2
- package/components/TabsLine/components/TabsLineItem.js +1 -1
- package/components/TabsLine/components/TabsLineMobile.js +2 -2
- package/components/Tag/Tag.js +5 -5
- package/components/TagColor/TagColor.js +10 -10
- package/components/TagGroup/TagGroup.js +4 -4
- package/components/ThemeProvider/ETriplexNextTheme.js.map +1 -1
- package/components/ThemeProvider/ThemeProvider.js +5 -3
- package/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/components/ThemeProvider/ThemeProviderContext.js.map +1 -1
- package/components/ThemeProvider/components/ThemeProviderView.js +6 -9
- 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 +1 -1
- package/components/Tooltip/components/common/TooltipLink.js +7 -18
- 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 +25 -24
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js.map +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +8 -17
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js.map +1 -1
- package/components/Tooltip/components/mobile/TooltipMobile.js +10 -6
- 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 +6 -6
- package/components/TreeView/TreeView.js +1 -1
- package/components/TreeView/components/TreeViewGroup.js +1 -1
- package/components/TreeView/components/TreeViewNode.js +1 -1
- package/components/Typography/Caption.js +7 -7
- package/components/Typography/CodeText.js +2 -2
- package/components/Typography/Text.js +9 -9
- package/components/Typography/Title.js +9 -9
- package/components/Typography/constants.js +1 -1
- package/components/UnorderedList/UnorderedList.js +2 -2
- package/components/UnorderedList/UnorderedListItem.js +2 -2
- package/components/UploadZone/UploadZone.js +2 -2
- package/components/UploadZone/components/UploadZoneInput.js +1 -1
- package/components/UploadZone/index.js +1 -1
- package/components/index.js +7 -8
- package/consts/DateConst.js.map +1 -1
- package/index.d.ts +202 -91
- package/index.js +7 -8
- package/package.json +1 -1
- package/styles/triplex-next.css +2945 -2936
- package/chunks/CalendarViewItem-knPscTce.js.map +0 -1
- package/chunks/Card.module-Dd2_zoXF.js +0 -30
- package/chunks/Card.module-Dd2_zoXF.js.map +0 -1
- package/chunks/Carousel.module-LNo8o3qn.js +0 -30
- package/chunks/Carousel.module-LNo8o3qn.js.map +0 -1
- package/chunks/CheckboxTreeExtended.module-CKUO50mv.js +0 -24
- package/chunks/CheckboxTreeExtended.module-CKUO50mv.js.map +0 -1
- package/chunks/Chip-CI8ALCUS.js.map +0 -1
- package/chunks/Confirm.module-BtnLGqBz.js +0 -24
- package/chunks/Confirm.module-BtnLGqBz.js.map +0 -1
- package/chunks/DropdownMobile.module-xbkYiPM1.js +0 -40
- package/chunks/DropdownMobile.module-xbkYiPM1.js.map +0 -1
- package/chunks/Footer.module-CYELL0O7.js +0 -12
- package/chunks/Footer.module-CYELL0O7.js.map +0 -1
- package/chunks/HeaderLayoutSidebar.module-MnhSBdiv.js.map +0 -1
- package/chunks/HeaderTabs.module-D9u9xuSn.js +0 -12
- package/chunks/HeaderTabs.module-D9u9xuSn.js.map +0 -1
- package/chunks/HeaderTitle.module-BGOYMt6r.js.map +0 -1
- package/chunks/ImageGalleryExtendedMain.module-CQNClbso.js +0 -28
- package/chunks/ImageGalleryExtendedMain.module-CQNClbso.js.map +0 -1
- package/chunks/IslandAccordion.module-nyPnHohH.js +0 -44
- package/chunks/IslandAccordion.module-nyPnHohH.js.map +0 -1
- package/chunks/IslandWidgetFooter.module-CNyLawMh.js +0 -12
- package/chunks/IslandWidgetFooter.module-CNyLawMh.js.map +0 -1
- package/chunks/IslandWidgetHeader.module-ChE5SXll.js +0 -20
- package/chunks/IslandWidgetHeader.module-ChE5SXll.js.map +0 -1
- package/chunks/LightBoxControls.module-Buvm7RbG.js +0 -26
- package/chunks/LightBoxControls.module-Buvm7RbG.js.map +0 -1
- package/chunks/LightBoxSideOverlayClose.module-eTdxNvSz.js.map +0 -1
- package/chunks/ListItemTail.module-BhSOptJB.js +0 -18
- package/chunks/ListItemTail.module-BhSOptJB.js.map +0 -1
- package/chunks/ListMasterFooter.module-DrlO_YrT.js +0 -14
- package/chunks/ListMasterFooter.module-DrlO_YrT.js.map +0 -1
- package/chunks/ModalWindow.module-DrJpRuNK.js +0 -28
- package/chunks/ModalWindow.module-DrJpRuNK.js.map +0 -1
- package/chunks/Notification.module-tEh-vvv0.js +0 -34
- package/chunks/Notification.module-tEh-vvv0.js.map +0 -1
- package/chunks/Overlay.module-CPNLKKsF.js +0 -30
- package/chunks/Overlay.module-CPNLKKsF.js.map +0 -1
- package/chunks/Page.module-Dru0rPA5.js +0 -15
- package/chunks/Page.module-Dru0rPA5.js.map +0 -1
- package/chunks/SMSField.module-CjGkO6u6.js +0 -26
- package/chunks/SMSField.module-CjGkO6u6.js.map +0 -1
- package/chunks/SliderExtendedMarks.module-CAeqmSQq.js +0 -24
- package/chunks/SliderExtendedMarks.module-CAeqmSQq.js.map +0 -1
- package/chunks/StatusTracker.module-BD5zJfbg.js +0 -42
- package/chunks/StatusTracker.module-BD5zJfbg.js.map +0 -1
- package/chunks/TableFooter.module-DhudGmzN.js +0 -22
- package/chunks/TableFooter.module-DhudGmzN.js.map +0 -1
- package/chunks/TabsExtended.module-DNjJIne-.js +0 -26
- package/chunks/TabsExtended.module-DNjJIne-.js.map +0 -1
- package/chunks/TabsLine.module-CbVAypRw.js +0 -36
- package/chunks/TabsLine.module-CbVAypRw.js.map +0 -1
- package/chunks/TooltipDesktop.module-DBiY8cJJ.js +0 -32
- package/chunks/TooltipDesktop.module-DBiY8cJJ.js.map +0 -1
- package/chunks/TreeView.module-GA-NyzjK.js +0 -12
- package/chunks/TreeView.module-GA-NyzjK.js.map +0 -1
- package/chunks/utils-BHxrQbA6.js.map +0 -1
- package/components/Pagination/utils/paginationUtils.js.map +0 -1
|
@@ -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":["React"],"mappings":"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"}
|
|
@@ -6,17 +6,17 @@ import React__default from "react";
|
|
|
6
6
|
import { i as isEqual, c as clsx } from "../../../../../chunks/vendor-CtuAQuEN.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-V0gGAoBE.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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__default.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":["React"],"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":["React"],"mappings":"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"}
|
|
@@ -2,25 +2,16 @@ import { jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
import { ETooltipDirection } from "../../../enums.js";
|
|
4
4
|
import { c as clsx } from "../../../../../chunks/vendor-CtuAQuEN.js";
|
|
5
|
-
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-
|
|
5
|
+
import { s as styles } from "../../../../../chunks/TooltipDesktop.module-V0gGAoBE.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__default.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":["React"],"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,oBAAoBA,eAAM,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;"}
|
|
@@ -6,10 +6,10 @@ import { DropdownMobile } from "../../../Dropdown/mobile/DropdownMobile.js";
|
|
|
6
6
|
import { DropdownMobileBody } from "../../../Dropdown/mobile/DropdownMobileBody.js";
|
|
7
7
|
import { TooltipMobileCloseButton } from "./components/TooltipMobileCloseButton.js";
|
|
8
8
|
import { c as clsx } from "../../../../chunks/vendor-CtuAQuEN.js";
|
|
9
|
-
const tooltipMobile = "
|
|
10
|
-
const tooltipMobileContent = "
|
|
11
|
-
const headerless = "
|
|
12
|
-
const closeButton = "
|
|
9
|
+
const tooltipMobile = "tooltipMobile__bbadf7a0";
|
|
10
|
+
const tooltipMobileContent = "tooltipMobileContent__e3489449";
|
|
11
|
+
const headerless = "headerless__81ff761f";
|
|
12
|
+
const closeButton = "closeButton__f68041c8";
|
|
13
13
|
const styles = {
|
|
14
14
|
tooltipMobile,
|
|
15
15
|
tooltipMobileContent,
|
|
@@ -17,11 +17,15 @@ const styles = {
|
|
|
17
17
|
closeButton
|
|
18
18
|
};
|
|
19
19
|
const TooltipMobile = ({
|
|
20
|
+
// children, renderContainer, targetRef, disableAdaptiveMode, size и alignTip не нужны мобильной
|
|
21
|
+
// версии и не должны попадать в DOM — исключаются из rest, который спредится на DropdownMobile.
|
|
20
22
|
children,
|
|
21
|
-
className,
|
|
22
23
|
renderContainer,
|
|
23
24
|
targetRef,
|
|
24
25
|
disableAdaptiveMode,
|
|
26
|
+
size,
|
|
27
|
+
alignTip,
|
|
28
|
+
className,
|
|
25
29
|
isOpen,
|
|
26
30
|
onShow,
|
|
27
31
|
...rest
|
|
@@ -30,7 +34,7 @@ const TooltipMobile = ({
|
|
|
30
34
|
const tooltipRef = useRef(null);
|
|
31
35
|
const classNames = clsx(styles.tooltipMobile, { [styles.headerless]: elements.mobileHeader === null }, className);
|
|
32
36
|
useEffect(() => {
|
|
33
|
-
if (isOpen) {
|
|
37
|
+
if (isOpen && tooltipRef.current) {
|
|
34
38
|
onShow == null ? void 0 : onShow(tooltipRef.current);
|
|
35
39
|
}
|
|
36
40
|
}, [isOpen]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipMobile.js","sources":["../../../../../src/components/Tooltip/components/mobile/TooltipMobile.tsx"],"sourcesContent":["import React, { useEffect, useContext, useRef } from \"react\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { Portal } from \"@sberbusiness/triplex-next/components/Portal/Portal\";\nimport { DropdownMobile } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobile\";\nimport { DropdownMobileBody } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobileBody\";\nimport { TooltipMobileCloseButton } from \"@sberbusiness/triplex-next/components/Tooltip/components/mobile/components/TooltipMobileCloseButton\";\nimport clsx from \"clsx\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipMobile.module.less\";\nimport { ITooltipProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/** Свойства компонента TooltipMobile. */\nexport interface ITooltipMobileProps extends Omit<ITooltipProps, \"preferPlace\" | \"toggle\"> {\n /** Признак открыт ли TooltipMobile. */\n isOpen: boolean;\n /** Дочерние элементы. */\n children?: never;\n}\n\n
|
|
1
|
+
{"version":3,"file":"TooltipMobile.js","sources":["../../../../../src/components/Tooltip/components/mobile/TooltipMobile.tsx"],"sourcesContent":["import React, { useEffect, useContext, useRef } from \"react\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { Portal } from \"@sberbusiness/triplex-next/components/Portal/Portal\";\nimport { DropdownMobile } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobile\";\nimport { DropdownMobileBody } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobileBody\";\nimport { TooltipMobileCloseButton } from \"@sberbusiness/triplex-next/components/Tooltip/components/mobile/components/TooltipMobileCloseButton\";\nimport clsx from \"clsx\";\nimport styles from \"@sberbusiness/triplex-next/components/Tooltip/styles/TooltipMobile.module.less\";\nimport { ITooltipProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/** Свойства компонента TooltipMobile. */\nexport interface ITooltipMobileProps extends Omit<ITooltipProps, \"preferPlace\" | \"toggle\"> {\n /** Признак открыт ли TooltipMobile. */\n isOpen: boolean;\n /** Дочерние элементы. */\n children?: never;\n}\n\n/**\n * Мобильная версия Tooltip.\n * Рендерится в document.body поверх страницы как нижний оверлей (DropdownMobile).\n */\nexport const TooltipMobile: React.FC<ITooltipMobileProps> = ({\n // children, renderContainer, targetRef, disableAdaptiveMode, size и alignTip не нужны мобильной\n // версии и не должны попадать в DOM — исключаются из rest, который спредится на DropdownMobile.\n children,\n renderContainer,\n targetRef,\n disableAdaptiveMode,\n size,\n alignTip,\n className,\n isOpen,\n onShow,\n ...rest\n}) => {\n const { elements, setTooltipOpen } = useContext(TooltipContext);\n const tooltipRef = useRef<HTMLDivElement | null>(null);\n const classNames = clsx(styles.tooltipMobile, { [styles.headerless]: elements.mobileHeader === null }, className);\n\n useEffect(() => {\n if (isOpen && tooltipRef.current) {\n onShow?.(tooltipRef.current);\n }\n // onShow намеренно вне зависимостей: колбэк вызывается только на открытие подсказки,\n // иначе нестабильная inline-функция вызывала бы его на каждый рендер.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n /** Рендер кнопки закрытия. */\n const renderCloseButton = () => {\n return (\n <div className={styles.closeButton}>\n <TooltipMobileCloseButton {...elements.closeButton?.props} />\n </div>\n );\n };\n\n return (\n <>\n {elements.target}\n <Portal container={document.body}>\n <DropdownMobile\n className={classNames}\n tabIndex={-1}\n opened={isOpen}\n setOpened={setTooltipOpen}\n {...rest}\n ref={tooltipRef}\n >\n {elements.mobileHeader}\n <DropdownMobileBody className={styles.tooltipMobileContent}>\n {elements.body}\n {elements.link}\n {elements.mobileHeader === null && renderCloseButton()}\n </DropdownMobileBody>\n </DropdownMobile>\n </Portal>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAsBO,MAAM,gBAA+C,CAAC;AAAA;AAAA;AAAA,EAGzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAM;AACF,QAAM,EAAE,UAAU,mBAAmB,WAAW,cAAc;AAC9D,QAAM,aAAa,OAA8B,IAAI;AACrD,QAAM,aAAa,KAAK,OAAO,eAAe,EAAE,CAAC,OAAO,UAAU,GAAG,SAAS,iBAAiB,KAAA,GAAQ,SAAS;AAEhH,YAAU,MAAM;AACZ,QAAI,UAAU,WAAW,SAAS;AAC9B,uCAAS,WAAW;AAAA,IACxB;AAAA,EAIJ,GAAG,CAAC,MAAM,CAAC;AAGX,QAAM,oBAAoB,MAAM;;AAC5B,WACI,oBAAC,OAAA,EAAI,WAAW,OAAO,aACnB,UAAA,oBAAC,0BAAA,EAA0B,IAAG,cAAS,gBAAT,mBAAsB,MAAA,CAAO,EAAA,CAC/D;AAAA,EAER;AAEA,SACI,qBAAA,UAAA,EACK,UAAA;AAAA,IAAA,SAAS;AAAA,IACV,oBAAC,QAAA,EAAO,WAAW,SAAS,MACxB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,WAAW;AAAA,QACV,GAAG;AAAA,QACJ,KAAK;AAAA,QAEJ,UAAA;AAAA,UAAA,SAAS;AAAA,UACV,qBAAC,oBAAA,EAAmB,WAAW,OAAO,sBACjC,UAAA;AAAA,YAAA,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS,iBAAiB,QAAQ,kBAAA;AAAA,UAAkB,EAAA,CACzD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,EACJ,CACJ;AAAA,EAAA,GACJ;AAER;"}
|
|
@@ -8,8 +8,8 @@ import { EFontType, ETextSize } from "../../../../Typography/enums.js";
|
|
|
8
8
|
const TooltipMobileHeader = ({ children, ...rest }) => {
|
|
9
9
|
var _a;
|
|
10
10
|
const { elements } = useContext(TooltipContext);
|
|
11
|
-
const
|
|
12
|
-
return /* @__PURE__ */ jsx(DropdownMobileHeader, { controlButtons:
|
|
11
|
+
const closeButton = /* @__PURE__ */ jsx(TooltipMobileCloseButton, { ...(_a = elements.closeButton) == null ? void 0 : _a.props });
|
|
12
|
+
return /* @__PURE__ */ jsx(DropdownMobileHeader, { controlButtons: closeButton, ...rest, children: /* @__PURE__ */ jsx(Text, { size: ETextSize.B3, type: EFontType.PRIMARY, tag: "div", children }) });
|
|
13
13
|
};
|
|
14
14
|
export {
|
|
15
15
|
TooltipMobileHeader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipMobileHeader.js","sources":["../../../../../../src/components/Tooltip/components/mobile/components/TooltipMobileHeader.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { DropdownMobileHeader } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobileHeader\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { TooltipMobileCloseButton } from \"@sberbusiness/triplex-next/components/Tooltip/components/mobile/components/TooltipMobileCloseButton\";\nimport { Text } from \"@sberbusiness/triplex-next/components/Typography/Text\";\nimport { EFontType, ETextSize } from \"@sberbusiness/triplex-next/components/Typography/enums\";\nimport { ITooltipMobileHeaderProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n
|
|
1
|
+
{"version":3,"file":"TooltipMobileHeader.js","sources":["../../../../../../src/components/Tooltip/components/mobile/components/TooltipMobileHeader.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { DropdownMobileHeader } from \"@sberbusiness/triplex-next/components/Dropdown/mobile/DropdownMobileHeader\";\nimport { TooltipContext } from \"@sberbusiness/triplex-next/components/Tooltip/TootlipContext\";\nimport { TooltipMobileCloseButton } from \"@sberbusiness/triplex-next/components/Tooltip/components/mobile/components/TooltipMobileCloseButton\";\nimport { Text } from \"@sberbusiness/triplex-next/components/Typography/Text\";\nimport { EFontType, ETextSize } from \"@sberbusiness/triplex-next/components/Typography/enums\";\nimport { ITooltipMobileHeaderProps } from \"@sberbusiness/triplex-next/components/Tooltip/types\";\n\n/**\n * Заголовок компонента TooltipMobile.\n * Кнопку закрытия подставляет сам, наследуя props переданного в Tooltip TooltipXButton.\n */\nexport const TooltipMobileHeader: React.FC<ITooltipMobileHeaderProps> = ({ children, ...rest }) => {\n const { elements } = useContext(TooltipContext);\n\n /** Кнопка закрытия мобильной версии подсказки. */\n const closeButton = <TooltipMobileCloseButton {...elements.closeButton?.props} />;\n\n return (\n <DropdownMobileHeader controlButtons={closeButton} {...rest}>\n <Text size={ETextSize.B3} type={EFontType.PRIMARY} tag=\"div\">\n {children}\n </Text>\n </DropdownMobileHeader>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAYO,MAAM,sBAA2D,CAAC,EAAE,UAAU,GAAG,WAAW;;AAC/F,QAAM,EAAE,SAAA,IAAa,WAAW,cAAc;AAG9C,QAAM,cAAc,oBAAC,0BAAA,EAA0B,IAAG,cAAS,gBAAT,mBAAsB,OAAO;AAE/E,6BACK,sBAAA,EAAqB,gBAAgB,aAAc,GAAG,MACnD,UAAA,oBAAC,MAAA,EAAK,MAAM,UAAU,IAAI,MAAM,UAAU,SAAS,KAAI,OAClD,UACL,GACJ;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sources":["../../../src/components/Tooltip/enums.ts"],"sourcesContent":["/**\n * Параметры размера.\n *\n * H Высота.\n * W Ширина.\n */\nexport enum ETooltipSizeParameter {\n H = \"h\",\n W = \"w\",\n}\n\n/**\n * Начало координат (первые координаты).\n *\n * X икс.\n * Y игрек.\n */\nexport enum ETooltipStartCoordinates {\n X = \"x\",\n Y = \"y\",\n}\n\n/**\n * Конец координат (конечные координаты).\n *\n * X икс.\n * Y игрек.\n */\nexport enum ETooltipEndCoordinates {\n X = \"x2\",\n Y = \"y2\",\n}\n\n/**\n * Enum типов осей.\n *\n * MAIN Главная ось.\n * CROSS Вспомогательная, поперечная, перекрестная.\n */\nexport enum ETooltipAxesType {\n MAIN = \"main\",\n CROSS = \"cross\",\n}\n\n/**\n * Enum типов расположения элементов (flow) для flex.\n *\n * COLUMN Столбец.\n * ROW Ряд.\n */\nexport enum ETooltipFlowTypes {\n COLUMN = \"column\",\n ROW = \"row\",\n}\n\n/**\n * Enum типов настроек позиционирования.\n *\n * SIDE
|
|
1
|
+
{"version":3,"file":"enums.js","sources":["../../../src/components/Tooltip/enums.ts"],"sourcesContent":["/**\n * Параметры размера.\n *\n * H Высота.\n * W Ширина.\n */\nexport enum ETooltipSizeParameter {\n H = \"h\",\n W = \"w\",\n}\n\n/**\n * Начало координат (первые координаты).\n *\n * X икс.\n * Y игрек.\n */\nexport enum ETooltipStartCoordinates {\n X = \"x\",\n Y = \"y\",\n}\n\n/**\n * Конец координат (конечные координаты).\n *\n * X икс.\n * Y игрек.\n */\nexport enum ETooltipEndCoordinates {\n X = \"x2\",\n Y = \"y2\",\n}\n\n/**\n * Enum типов осей.\n *\n * MAIN Главная ось.\n * CROSS Вспомогательная, поперечная, перекрестная.\n */\nexport enum ETooltipAxesType {\n MAIN = \"main\",\n CROSS = \"cross\",\n}\n\n/**\n * Enum типов расположения элементов (flow) для flex.\n *\n * COLUMN Столбец.\n * ROW Ряд.\n */\nexport enum ETooltipFlowTypes {\n COLUMN = \"column\",\n ROW = \"row\",\n}\n\n/**\n * Enum типов настроек позиционирования.\n *\n * SIDE Выравнивание подсказки вдоль основной оси зоны.\n * STANDING Положение подсказки относительно целевого элемента.\n * FLOW Расположение элементов (направление flex).\n */\nexport enum ETooltipTypeName {\n SIDE = \"side\",\n STANDING = \"standing\",\n FLOW = \"flow\",\n}\n\n/**\n * Предпочитаемое место для поповера.\n *\n * ABOVE Сверху.\n * BELOW Снизу.\n * RIGHT Справа.\n * LEFT Слева.\n */\nexport enum ETooltipPreferPlace {\n ABOVE = \"above\",\n BELOW = \"below\",\n RIGHT = \"right\",\n LEFT = \"left\",\n}\n\n/**\n * Выравнивание указателя (стрелочки) подсказки относительно целевого элемента.\n *\n * END В конце.\n * CENTER По центру.\n * START В начале.\n */\nexport enum ETooltipAlign {\n END = \"end\",\n CENTER = \"center\",\n START = \"start\",\n}\n\n/**\n * Направление указателя поповера.\n *\n * UP Сверху.\n * DOWN Снизу.\n * RIGHT Справа.\n * LEFT Слева.\n */\nexport enum ETooltipDirection {\n UP = \"up\",\n DOWN = \"down\",\n LEFT = \"left\",\n RIGHT = \"right\",\n}\n\n/**\n * Размер подсказки (ширина тела в десктопной версии).\n *\n * SM Узкая подсказка, 192px.\n * LG Широкая подсказка, 384px.\n */\nexport enum ETooltipSize {\n SM = \"sm\",\n LG = \"lg\",\n}\n"],"names":["ETooltipSizeParameter","ETooltipStartCoordinates","ETooltipEndCoordinates","ETooltipAxesType","ETooltipFlowTypes","ETooltipTypeName","ETooltipPreferPlace","ETooltipAlign","ETooltipDirection","ETooltipSize"],"mappings":"AAMO,IAAK,0CAAAA,2BAAL;AACHA,yBAAA,GAAA,IAAI;AACJA,yBAAA,GAAA,IAAI;AAFI,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;AAWL,IAAK,6CAAAC,8BAAL;AACHA,4BAAA,GAAA,IAAI;AACJA,4BAAA,GAAA,IAAI;AAFI,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAWL,IAAK,2CAAAC,4BAAL;AACHA,0BAAA,GAAA,IAAI;AACJA,0BAAA,GAAA,IAAI;AAFI,SAAAA;AAAA,GAAA,0BAAA,CAAA,CAAA;AAWL,IAAK,qCAAAC,sBAAL;AACHA,oBAAA,MAAA,IAAO;AACPA,oBAAA,OAAA,IAAQ;AAFA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAWL,IAAK,sCAAAC,uBAAL;AACHA,qBAAA,QAAA,IAAS;AACTA,qBAAA,KAAA,IAAM;AAFE,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AAYL,IAAK,qCAAAC,sBAAL;AACHA,oBAAA,MAAA,IAAO;AACPA,oBAAA,UAAA,IAAW;AACXA,oBAAA,MAAA,IAAO;AAHC,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAcL,IAAK,wCAAAC,yBAAL;AACHA,uBAAA,OAAA,IAAQ;AACRA,uBAAA,OAAA,IAAQ;AACRA,uBAAA,OAAA,IAAQ;AACRA,uBAAA,MAAA,IAAO;AAJC,SAAAA;AAAA,GAAA,uBAAA,CAAA,CAAA;AAcL,IAAK,kCAAAC,mBAAL;AACHA,iBAAA,KAAA,IAAM;AACNA,iBAAA,QAAA,IAAS;AACTA,iBAAA,OAAA,IAAQ;AAHA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AAcL,IAAK,sCAAAC,uBAAL;AACHA,qBAAA,IAAA,IAAK;AACLA,qBAAA,MAAA,IAAO;AACPA,qBAAA,MAAA,IAAO;AACPA,qBAAA,OAAA,IAAQ;AAJA,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AAaL,IAAK,iCAAAC,kBAAL;AACHA,gBAAA,IAAA,IAAK;AACLA,gBAAA,IAAA,IAAK;AAFG,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;"}
|
|
@@ -36,17 +36,14 @@ const place = (flow, axis, align, bounds, size) => {
|
|
|
36
36
|
const axisProps = axes[flow][axis];
|
|
37
37
|
if (align === ETooltipAlign.CENTER) {
|
|
38
38
|
return centerOfBounds(flow, axis, bounds) - centerOfSize(flow, axis, size);
|
|
39
|
-
} else {
|
|
40
|
-
if (align === ETooltipAlign.END) {
|
|
41
|
-
return bounds[axisProps.end];
|
|
42
|
-
} else {
|
|
43
|
-
if (align === ETooltipAlign.START) {
|
|
44
|
-
return bounds[axisProps.start] - size[axisProps.size];
|
|
45
|
-
} else {
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
39
|
}
|
|
40
|
+
if (align === ETooltipAlign.END) {
|
|
41
|
+
return bounds[axisProps.end];
|
|
42
|
+
}
|
|
43
|
+
if (align === ETooltipAlign.START) {
|
|
44
|
+
return bounds[axisProps.start] - size[axisProps.size];
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
50
47
|
};
|
|
51
48
|
const calcBounds = (el) => {
|
|
52
49
|
if (el === window) {
|
|
@@ -139,15 +136,19 @@ const calcRelPos = (zone, targetBounds, tooltipSize) => {
|
|
|
139
136
|
const mainSize = tooltipSize[main.size];
|
|
140
137
|
const crossStart = place(zone.flow, ETooltipAxesType.CROSS, crossAlign, targetBounds, tooltipSize);
|
|
141
138
|
const crossSize = tooltipSize[cross.size];
|
|
142
|
-
const
|
|
143
|
-
[
|
|
139
|
+
const position = {
|
|
140
|
+
[ETooltipStartCoordinates.X]: 0,
|
|
141
|
+
[ETooltipEndCoordinates.X]: 0,
|
|
142
|
+
[ETooltipStartCoordinates.Y]: 0,
|
|
143
|
+
[ETooltipEndCoordinates.Y]: 0,
|
|
144
144
|
crossLength: crossSize,
|
|
145
|
-
|
|
146
|
-
[main.start]: mainStart,
|
|
147
|
-
mainLength: mainSize,
|
|
148
|
-
[main.end]: mainStart + mainSize
|
|
145
|
+
mainLength: mainSize
|
|
149
146
|
};
|
|
150
|
-
|
|
147
|
+
position[cross.start] = crossStart;
|
|
148
|
+
position[cross.end] = crossStart + crossSize;
|
|
149
|
+
position[main.start] = mainStart;
|
|
150
|
+
position[main.end] = mainStart + mainSize;
|
|
151
|
+
return position;
|
|
151
152
|
};
|
|
152
153
|
export {
|
|
153
154
|
axes,
|