@sberbusiness/triplex-next 1.46.0 → 1.47.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-N4xDl9wn.js → AlertProcessSpoiler-Bws9nhT_.js} +17 -17
- package/chunks/{AlertProcessSpoiler-N4xDl9wn.js.map → AlertProcessSpoiler-Bws9nhT_.js.map} +1 -1
- package/chunks/{CalendarViewItem-DPwldi4s.js → CalendarViewItem-Bikp6svb.js} +21 -21
- package/chunks/{CalendarViewItem-DPwldi4s.js.map → CalendarViewItem-Bikp6svb.js.map} +1 -1
- package/chunks/Card.module-BX03G_qX.js +32 -0
- package/chunks/Card.module-BX03G_qX.js.map +1 -0
- package/chunks/Carousel.module-Doem7_zb.js +30 -0
- package/chunks/Carousel.module-Doem7_zb.js.map +1 -0
- package/chunks/CheckboxTreeExtended.module-Bn7_t4on.js +24 -0
- package/chunks/CheckboxTreeExtended.module-Bn7_t4on.js.map +1 -0
- package/chunks/{Chip-Bi7plvOY.js → Chip-DNn2jKWv.js} +17 -17
- package/chunks/{Chip-Bi7plvOY.js.map → Chip-DNn2jKWv.js.map} +1 -1
- package/chunks/Confirm.module-Cu7K98Sg.js +24 -0
- package/chunks/Confirm.module-Cu7K98Sg.js.map +1 -0
- package/chunks/{DropdownListItem-BaP5AaMK.js → DropdownListItem-B9cIx_8A.js} +11 -11
- package/chunks/{DropdownListItem-BaP5AaMK.js.map → DropdownListItem-B9cIx_8A.js.map} +1 -1
- package/chunks/DropdownMobile.module-DnkRPsic.js +40 -0
- package/chunks/DropdownMobile.module-DnkRPsic.js.map +1 -0
- package/chunks/Footer.module-_S9ZcA7b.js +12 -0
- package/chunks/Footer.module-_S9ZcA7b.js.map +1 -0
- package/chunks/{HeaderLayoutSidebar.module-CgtR6oF4.js → HeaderLayoutSidebar.module-CNgPkokh.js} +4 -4
- package/chunks/HeaderLayoutSidebar.module-CNgPkokh.js.map +1 -0
- package/chunks/HeaderTabs.module-2XAHGidd.js +12 -0
- package/chunks/HeaderTabs.module-2XAHGidd.js.map +1 -0
- package/chunks/{HeaderTitle.module-CABfTvCf.js → HeaderTitle.module-CFABp2sW.js} +4 -4
- package/chunks/HeaderTitle.module-CFABp2sW.js.map +1 -0
- package/chunks/ImageGalleryExtendedMain.module-DfFkrw4n.js +28 -0
- package/chunks/ImageGalleryExtendedMain.module-DfFkrw4n.js.map +1 -0
- package/chunks/{ImageGalleryExtendedThumb-BFa7GPtt.js → ImageGalleryExtendedThumb-Bm2vFDwB.js} +6 -6
- package/chunks/{ImageGalleryExtendedThumb-BFa7GPtt.js.map → ImageGalleryExtendedThumb-Bm2vFDwB.js.map} +1 -1
- package/chunks/IslandAccordion.module-CARpAvhk.js +44 -0
- package/chunks/IslandAccordion.module-CARpAvhk.js.map +1 -0
- package/chunks/IslandWidgetFooter.module-E0IBRK6A.js +18 -0
- package/chunks/IslandWidgetFooter.module-E0IBRK6A.js.map +1 -0
- package/chunks/IslandWidgetHeader.module-DgysHiDv.js +28 -0
- package/chunks/IslandWidgetHeader.module-DgysHiDv.js.map +1 -0
- package/chunks/{LightBoxContent-v_PFgeok.js → LightBoxContent-b3ATzdz4.js} +17 -17
- package/chunks/{LightBoxContent-v_PFgeok.js.map → LightBoxContent-b3ATzdz4.js.map} +1 -1
- package/chunks/LightBoxControls.module-CFiw2WEe.js +26 -0
- package/chunks/LightBoxControls.module-CFiw2WEe.js.map +1 -0
- package/chunks/{LightBoxSideOverlayClose.module-0Tjk9-qL.js → LightBoxSideOverlayClose.module-rUoDHQx6.js} +4 -4
- package/chunks/LightBoxSideOverlayClose.module-rUoDHQx6.js.map +1 -0
- package/chunks/{ListItemControlsButton-DoNJ-Yfe.js → ListItemControlsButton-DATlwch8.js} +10 -10
- package/chunks/{ListItemControlsButton-DoNJ-Yfe.js.map → ListItemControlsButton-DATlwch8.js.map} +1 -1
- package/chunks/ListItemTail.module-DEbIYD0x.js +18 -0
- package/chunks/ListItemTail.module-DEbIYD0x.js.map +1 -0
- package/chunks/ListMasterFooter.module-Dw_g_Hqv.js +14 -0
- package/chunks/ListMasterFooter.module-Dw_g_Hqv.js.map +1 -0
- package/chunks/ModalWindow.module-BIeL2Dm9.js +28 -0
- package/chunks/ModalWindow.module-BIeL2Dm9.js.map +1 -0
- package/chunks/Notification.module-CAVClo9k.js +34 -0
- package/chunks/Notification.module-CAVClo9k.js.map +1 -0
- package/chunks/Overlay.module-dRFf4RgK.js +30 -0
- package/chunks/Overlay.module-dRFf4RgK.js.map +1 -0
- package/chunks/Page.module-Bq4qHw4a.js +17 -0
- package/chunks/Page.module-Bq4qHw4a.js.map +1 -0
- package/chunks/SMSField.module-BFaDeCmy.js +30 -0
- package/chunks/SMSField.module-BFaDeCmy.js.map +1 -0
- package/chunks/SliderExtendedMarks.module-I5oq_ntW.js +24 -0
- package/chunks/SliderExtendedMarks.module-I5oq_ntW.js.map +1 -0
- package/chunks/{SliderExtendedRail-BI8zsX61.js → SliderExtendedRail-CQjM0BDm.js} +7 -7
- package/chunks/SliderExtendedRail-CQjM0BDm.js.map +1 -0
- package/chunks/StatusTracker.module-CLL7XYcX.js +44 -0
- package/chunks/StatusTracker.module-CLL7XYcX.js.map +1 -0
- package/chunks/{StepperStepArrowBorder-Q22ED8Yo.js → StepperStepArrowBorder-DDMmOSKy.js} +16 -16
- package/chunks/{StepperStepArrowBorder-Q22ED8Yo.js.map → StepperStepArrowBorder-DDMmOSKy.js.map} +1 -1
- package/chunks/{SuggestFieldMobileDropdownHint-3ySBEFFO.js → SuggestFieldMobileDropdownHint-BESIIDZs.js} +3 -3
- package/chunks/{SuggestFieldMobileDropdownHint-3ySBEFFO.js.map → SuggestFieldMobileDropdownHint-BESIIDZs.js.map} +1 -1
- package/chunks/TableFooter.module-DyFW1z3j.js +22 -0
- package/chunks/TableFooter.module-DyFW1z3j.js.map +1 -0
- package/chunks/TabsExtended.module-DPptPKmZ.js +26 -0
- package/chunks/TabsExtended.module-DPptPKmZ.js.map +1 -0
- package/chunks/TabsLine.module-BOD6aGpU.js +36 -0
- package/chunks/TabsLine.module-BOD6aGpU.js.map +1 -0
- package/chunks/TooltipDesktop.module-_lk-8WZV.js +32 -0
- package/chunks/TooltipDesktop.module-_lk-8WZV.js.map +1 -0
- package/chunks/TreeView.module-mCVJ7u_z.js +12 -0
- package/chunks/TreeView.module-mCVJ7u_z.js.map +1 -0
- package/chunks/{UploadZoneInput-BqBNrWzw.js → UploadZoneInput-1DuaS4IR.js} +6 -6
- package/chunks/{UploadZoneInput-BqBNrWzw.js.map → UploadZoneInput-1DuaS4IR.js.map} +1 -1
- package/chunks/{constants-C-865Unx.js → constants-DUgeKsf9.js} +27 -27
- package/chunks/{constants-C-865Unx.js.map → constants-DUgeKsf9.js.map} +1 -1
- package/chunks/{utils-D-axOAbx.js → utils-CvDoNsRH.js} +10 -10
- package/chunks/{utils-D-axOAbx.js.map → utils-CvDoNsRH.js.map} +1 -1
- package/chunks/{utils-CRayPY0c.js → utils-DhEse9-I.js} +6 -6
- package/chunks/{utils-CRayPY0c.js.map → utils-DhEse9-I.js.map} +1 -1
- package/chunks/{utils-BS0p239Z.js → utils-c0Fgm-SD.js} +27 -27
- package/chunks/{utils-BS0p239Z.js.map → utils-c0Fgm-SD.js.map} +1 -1
- package/chunks/{utils-CUP-yZoP.js → utils-tt7vKg1E.js} +11 -11
- package/chunks/{utils-CUP-yZoP.js.map → utils-tt7vKg1E.js.map} +1 -1
- package/chunks/{vendor-DqjKLGwf.js → vendor-CUIykw0y.js} +11 -5518
- package/chunks/vendor-CUIykw0y.js.map +1 -0
- package/components/AbstractTree/AbstractTreeNode.js +1 -1
- package/components/AccordionBase/protected/AccordionBase.js +1 -1
- package/components/Alert/AlertContext/AlertContext.js +8 -8
- package/components/Alert/AlertProcess/AlertProcess.js +3 -3
- package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +2 -2
- package/components/Amount/Amount.js +3 -3
- package/components/AmountField/AmountBaseInputCore.js +2 -2
- package/components/AmountField/AmountBaseInputCore.js.map +1 -1
- package/components/AmountField/AmountBaseInputFormatter.js +7 -10
- package/components/AmountField/AmountBaseInputFormatter.js.map +1 -1
- package/components/AmountField/AmountBaseInputParser.js +9 -13
- package/components/AmountField/AmountBaseInputParser.js.map +1 -1
- package/components/AmountField/AmountField.js +38 -55
- package/components/AmountField/AmountField.js.map +1 -1
- package/components/AmountField/utils.js +12 -2
- package/components/AmountField/utils.js.map +1 -1
- package/components/Avatar/Avatar.js +14 -14
- package/components/Avatar/Avatar.js.map +1 -1
- package/components/Avatar/enums.js.map +1 -1
- package/components/Badge/Badge.js +5 -5
- package/components/Badge/BadgeDot.js +5 -5
- package/components/Badge/components/BadgeContent.js +7 -7
- package/components/Badge/components/BadgePostfix.js +2 -2
- package/components/Badge/components/BadgePrefix.js +2 -2
- package/components/Body/Body.js +4 -4
- package/components/Button/Button.js +21 -21
- package/components/Button/ButtonBase.js +1 -1
- package/components/Button/ButtonDropdown.js +9 -9
- package/components/Button/ButtonDropdownExtended.js +3 -3
- package/components/Button/ButtonIcon.js +4 -4
- package/components/Calendar/Calendar.js +5 -5
- package/components/Calendar/components/CalendarControls.js +1 -1
- package/components/Calendar/components/CalendarFooter.js +2 -2
- package/components/Calendar/components/CalendarViewDays.js +2 -2
- package/components/Calendar/components/CalendarViewItem.js +2 -2
- package/components/Calendar/components/CalendarViewMonths.js +1 -1
- package/components/Calendar/components/CalendarViewYears.js +1 -1
- package/components/Card/CardAction.js +6 -6
- package/components/Card/CardStatic.js +26 -26
- package/components/Card/CardStatic.js.map +1 -1
- package/components/Card/components/CardContent/CardContent.js +2 -2
- package/components/Card/components/CardContent/components/CardContentBody.js +2 -2
- package/components/Card/components/CardContent/components/CardContentFooter.js +2 -2
- package/components/Card/components/CardContent/components/CardContentHeader.js +2 -2
- package/components/Card/components/CardMedia.js +2 -2
- package/components/Card/utils.js +1 -1
- package/components/Carousel/Carousel.js +2 -2
- package/components/Carousel/CarouselButton.js +2 -2
- package/components/Carousel/CarouselIndicators.js +65 -30
- package/components/Carousel/CarouselIndicators.js.map +1 -1
- package/components/Carousel/CarouselItem.js +2 -2
- package/components/Carousel/CarouselTrack.js +2 -2
- package/components/Carousel/CarouselViewport.js +2 -2
- package/components/CarouselExtended/CarouselExtended.js +2 -2
- package/components/Checkbox/Checkbox.js +11 -11
- package/components/Checkbox/CheckboxXGroup.js +9 -9
- package/components/Checkbox/CheckboxYGroup.js +2 -2
- package/components/CheckboxTree/CheckboxTree.js +34 -35
- package/components/CheckboxTree/CheckboxTree.js.map +1 -1
- package/components/CheckboxTree/utils.js +18 -11
- package/components/CheckboxTree/utils.js.map +1 -1
- package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +22 -9
- package/components/CheckboxTreeExtended/CheckboxTreeExtended.js.map +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +2 -2
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +2 -2
- package/components/Chip/Chip.js +2 -2
- package/components/Chip/ChipClearButton.js +2 -2
- package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
- package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
- package/components/Chip/ChipDropdownArrow.js +3 -3
- package/components/Chip/ChipIcon.js +1 -1
- package/components/Chip/ChipMonthYearPicker/ChipMonthYearPicker.js +2 -2
- package/components/Chip/ChipMonthYearPicker/ChipMonthYearPickerTarget.js +1 -1
- package/components/Chip/ChipMultiselect.js +2 -2
- package/components/Chip/ChipOptions.js +2 -2
- package/components/Chip/ChipSelect/ChipSelect.js +2 -2
- package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
- package/components/Chip/ChipSort.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggest.js +3 -3
- package/components/Chip/ChipSuggest/ChipSuggest.js.map +1 -1
- package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +3 -3
- package/components/Chip/ChipSuggest/ChipSuggestDropdown.js.map +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 +8 -8
- package/components/Col/Col.js +133 -133
- package/components/CollapsibleTree/CollapsibleTree.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +5 -5
- package/components/CollapsibleTreeExtended/CollapsibleTreeExtended.js +7 -2
- package/components/CollapsibleTreeExtended/CollapsibleTreeExtended.js.map +1 -1
- package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +2 -2
- package/components/Confirm/Confirm.js +22 -19
- package/components/Confirm/Confirm.js.map +1 -1
- package/components/Confirm/components/ConfirmClose.js +21 -7
- package/components/Confirm/components/ConfirmClose.js.map +1 -1
- package/components/Confirm/components/ConfirmCloseButton.js +4 -4
- package/components/Confirm/components/ConfirmCloseButton.js.map +1 -1
- package/components/Confirm/components/ConfirmContent.js +10 -5
- package/components/Confirm/components/ConfirmContent.js.map +1 -1
- package/components/Confirm/components/ConfirmContentSubTitle.js +4 -5
- package/components/Confirm/components/ConfirmContentSubTitle.js.map +1 -1
- package/components/Confirm/components/ConfirmContentTitle.js +6 -8
- package/components/Confirm/components/ConfirmContentTitle.js.map +1 -1
- package/components/Confirm/components/ConfirmControls.js +6 -3
- package/components/Confirm/components/ConfirmControls.js.map +1 -1
- package/components/Confirm/enums.js.map +1 -1
- package/components/DateField/DateFieldTarget.js +5 -5
- package/components/DatePickerExtended/DatePickerExtended.js +2 -2
- package/components/DatePickerExtended/DatePickerExtendedDropdown.js +2 -2
- package/components/DateRange/DateRange.js +69 -82
- package/components/DateRange/DateRange.js.map +1 -1
- package/components/DateRange/types.js +2 -0
- package/components/DateRange/types.js.map +1 -0
- package/components/DateRange/utils.js +8 -0
- package/components/DateRange/utils.js.map +1 -0
- package/components/DesignTokens/DesignTokenUtils.js +2 -2
- package/components/DesignTokens/components/Step.js +1 -1
- package/components/DesignTokens/components/Step.js.map +1 -1
- package/components/Divider/Divider.js +18 -18
- package/components/DocumentNumberEdit/DocumentNumberEdit.js +4 -4
- package/components/Dropdown/desktop/DropdownDesktop.js +7 -7
- package/components/Dropdown/desktop/DropdownList.js +2 -2
- package/components/Dropdown/desktop/DropdownListItem.js +2 -2
- 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 +2 -2
- package/components/Dropdown/mobile/DropdownMobileClose.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileFooter.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileHeader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileInner.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileInput.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileList.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileListItem.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileLoader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +2 -2
- package/components/Ellipsis/Ellipsis.js +4 -4
- package/components/EmptyView/EmptyView.js +5 -5
- package/components/ExpandAnimation/ExpandAnimation.js +2 -2
- package/components/FocusTrapExtended/FocusTrapExtended.js +1 -1
- package/components/Footer/Footer.js +1 -1
- package/components/Footer/components/FooterDescription.js +2 -2
- package/components/Footer/components/FooterDescriptionContent.js +2 -2
- package/components/Footer/components/FooterDescriptionControls.js +2 -2
- package/components/FormField/FormField.js +12 -12
- package/components/FormField/FormFieldContext.js.map +1 -1
- package/components/FormField/components/FormFieldClear.js +2 -2
- package/components/FormField/components/FormFieldCounter.js +2 -2
- package/components/FormField/components/FormFieldDescription.js +3 -3
- package/components/FormField/components/FormFieldInput.js +6 -5
- package/components/FormField/components/FormFieldInput.js.map +1 -1
- package/components/FormField/components/FormFieldLabel.js +21 -9
- package/components/FormField/components/FormFieldLabel.js.map +1 -1
- package/components/FormField/components/FormFieldMaskedInput.js +9 -9
- package/components/FormField/components/FormFieldPostfix.js +2 -2
- package/components/FormField/components/FormFieldPrefix.js +2 -2
- package/components/FormField/components/FormFieldTarget.js +10 -13
- package/components/FormField/components/FormFieldTarget.js.map +1 -1
- package/components/FormField/components/FormFieldTextarea.js +6 -5
- package/components/FormField/components/FormFieldTextarea.js.map +1 -1
- package/components/FormField/components/useFormFieldAffixWidth.js +1 -1
- package/components/FormField/components/useFormFieldAffixWidth.js.map +1 -1
- package/components/FormField/components/utils.js +1 -9
- package/components/FormField/components/utils.js.map +1 -1
- package/components/Gap/Gap.js +9 -9
- package/components/Header/Header.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +2 -2
- package/components/Header/components/HeaderSubheader/HeaderSubheader.js +3 -3
- package/components/Header/components/HeaderTabs/HeaderTabs.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsContent.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsControls.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitle.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleContent.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleControls.js +2 -2
- package/components/HelpBox/HelpBox.js +2 -2
- package/components/IconWrapper/IconWrapper.js +3 -3
- package/components/ImageGallery/ImageGallery.js +1 -1
- package/components/ImageGalleryExtended/ImageGalleryExtended.js +3 -3
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +4 -4
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +2 -2
- package/components/ImageGalleryExtended/components/index.js +1 -1
- package/components/ImageGalleryExtended/index.js +1 -1
- package/components/Island/Island.js +2 -2
- package/components/Island/components/IslandBody.js +2 -2
- package/components/Island/components/IslandFooter.js +2 -2
- package/components/Island/components/IslandHeader.js +2 -2
- package/components/Island/utils.js +1 -1
- package/components/IslandAccordion/IslandAccordion.js +3 -3
- package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
- package/components/IslandAccordion/components/IslandAccordionFooter.js +2 -2
- package/components/IslandAccordion/components/IslandAccordionItem.js +3 -3
- package/components/IslandWidget/IslandWidget.js +4 -4
- package/components/IslandWidget/components/IslandWidgetBody.js +5 -5
- package/components/IslandWidget/components/IslandWidgetExtraFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooterContent.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooterControls.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeader.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderContent.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeaderControls.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +2 -2
- package/components/IslandWidget/components/IslandWidgetWrapper.js +2 -2
- package/components/LightBox/LightBox.js +6 -6
- package/components/LightBox/LightBoxContent.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxArrow.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxClose.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxControls.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxNext.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxPrev.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +13 -13
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +1 -1
- package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +4 -4
- package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +4 -4
- package/components/LightBox/LightBoxViewManager/LightBoxViewManager.js +1 -1
- package/components/Link/Link.js +6 -6
- package/components/List/List.js +4 -4
- package/components/List/ListSortable.js +1 -1
- package/components/List/components/ListActionItem.js +2 -2
- package/components/List/components/ListEmptyState.js +2 -2
- package/components/List/components/ListItem.js +1 -1
- package/components/List/components/ListItemContent.js +5 -5
- package/components/List/components/ListItemControls.js +2 -2
- package/components/List/components/ListItemControlsButton.js +2 -2
- package/components/List/components/ListItemControlsButtonDropdown.js +3 -3
- package/components/List/components/ListItemControlsButtonDropdown.js.map +1 -1
- package/components/List/components/ListItemLoading.js +2 -2
- package/components/List/components/ListItemSelectable.js +7 -7
- package/components/List/components/ListItemTailLeft.js +2 -2
- package/components/List/components/ListItemTailRight.js +2 -2
- package/components/List/components/ListSortableItem.js +4 -4
- package/components/List/components/ListSortableItem.js.map +1 -1
- package/components/List/components/ListSortableItemControls.js +2 -2
- package/components/List/components/ListSortableItemTarget.js +5 -5
- package/components/List/components/ListTableItem.js +4 -4
- package/components/List/index.js +1 -1
- package/components/List/utils.js +1 -9
- package/components/List/utils.js.map +1 -1
- package/components/ListMaster/ListMaster.js +1 -1
- package/components/ListMaster/components/ListMasterBody.js +1 -1
- package/components/ListMaster/components/ListMasterChipGroup.js +2 -2
- package/components/ListMaster/components/ListMasterFooter.js +2 -2
- package/components/ListMaster/components/ListMasterFooterControls.js +2 -2
- package/components/ListMaster/components/ListMasterFooterDescription.js +2 -2
- package/components/ListMaster/components/ListMasterHeader.js +3 -3
- package/components/ListMaster/components/SelectionControls.js +3 -3
- package/components/Loader/LoaderMiddle/LoaderMiddle.js +9 -9
- package/components/Loader/LoaderSmall/LoaderSmall.js +11 -11
- package/components/LoaderScreen/LoaderScreen.js +6 -6
- package/components/Marker/Marker.js +2 -2
- package/components/Marker/utils.js +1 -1
- package/components/MarkerStatus/MarkerStatus.js +8 -8
- package/components/ModalWindow/ModalWindow.js +2 -2
- package/components/ModalWindow/components/ModalWindowBody.js +2 -2
- package/components/ModalWindow/components/ModalWindowClose.js +1 -1
- package/components/ModalWindow/components/ModalWindowContent.js +2 -2
- package/components/ModalWindow/components/ModalWindowHeader.js +2 -2
- package/components/ModalWindow/components/ModalWindowViewManager.js +2 -2
- package/components/MonthYearField/MonthYearFieldTarget.js +5 -5
- package/components/MonthYearRange/MonthYearRange.js +4 -4
- package/components/MultiselectField/components/MultiselectFieldDropdown.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +6 -6
- package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +2 -2
- package/components/Notification/Notification.js +3 -3
- package/components/Notification/NotificationGrouped.js +1 -1
- package/components/Notification/components/NotificationBody.js +1 -1
- package/components/Notification/components/NotificationBodyList.js +2 -2
- package/components/Notification/components/NotificationClose.js +1 -1
- package/components/Notification/components/NotificationFooter.js +1 -1
- package/components/Notification/components/NotificationGroupedFooter.js +2 -2
- package/components/Notification/components/NotificationHeader.js +1 -1
- package/components/Notification/components/NotificationIcon.js +1 -1
- package/components/Notification/components/NotificationTime.js +1 -1
- package/components/OrderedList/OrderedList.js +3 -3
- package/components/OrderedList/OrderedListItem.js +3 -3
- package/components/Overlay/Overlay.js +2 -2
- package/components/Overlay/OverlayMask.js +2 -2
- package/components/Overlay/OverlayPanel.js +2 -2
- package/components/Page/Page.js +2 -2
- package/components/Page/components/BodyPage.js +8 -8
- package/components/Page/components/FooterPage.js +7 -14
- package/components/Page/components/FooterPage.js.map +1 -1
- package/components/Page/components/HeaderPage.js +2 -2
- package/components/Pagination/components/PaginationExtended.js +3 -3
- package/components/Pagination/components/PaginationNavigationButton.js +2 -2
- package/components/Pagination/components/PaginationNavigationExtended.js +2 -2
- package/components/Pagination/components/PaginationPageButton.js +3 -3
- package/components/Pagination/components/PaginationPageEllipsis.js +2 -2
- package/components/Pagination/components/PaginationSelect.js +3 -3
- package/components/Pagination/utils.js +1 -1
- package/components/Radio/Radio.js +10 -10
- package/components/Radio/RadioXGroup.js +9 -9
- package/components/Radio/RadioYGroup.js +2 -2
- package/components/Row/Row.js +5 -5
- package/components/SMSField/SMSField.js +3 -3
- package/components/SMSField/components/RefreshIcon.js +2 -2
- package/components/SMSField/components/SMSFieldInput.js +2 -2
- package/components/SMSField/components/SMSFieldRefresh.js +2 -2
- package/components/SMSField/components/SMSFieldSubmit.js +2 -2
- package/components/SMSField/components/SMSFieldTooltip.js +1 -1
- package/components/SegmentedControl/SegmentedControl.js +10 -10
- package/components/SegmentedControl/SegmentedControlSegment.js +4 -4
- package/components/SelectExtendedField/SelectExtendedField.js +2 -2
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdown.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdownDefault.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldTarget.js +8 -8
- package/components/SelectField/SelectField.js +2 -2
- package/components/Skeleton/Skeleton.js +6 -6
- package/components/Slider/Slider.js +10 -14
- package/components/Slider/Slider.js.map +1 -1
- package/components/SliderExtended/SliderExtended.js +3 -3
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +7 -7
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js.map +1 -1
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +2 -2
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +2 -2
- package/components/SliderExtended/components/SliderExtendedMoveHandler.js +1 -1
- package/components/SliderExtended/components/SliderExtendedRail.js +3 -3
- package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +6 -6
- package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js.map +1 -1
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +8 -8
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js.map +1 -1
- package/components/SliderRange/SliderRange.js +12 -19
- package/components/SliderRange/SliderRange.js.map +1 -1
- package/components/SmallInput/SmallInput.js +2 -2
- package/components/Spoiler/Spoiler.js +11 -11
- package/components/StatusTracker/StatusTracker.js +3 -3
- package/components/StatusTracker/components/StatusTrackerAlert.js +2 -2
- package/components/StatusTracker/components/StatusTrackerBody.js +2 -2
- package/components/StatusTracker/components/StatusTrackerButton.js +2 -2
- package/components/StatusTracker/components/StatusTrackerDescription.js +2 -2
- package/components/StatusTracker/components/StatusTrackerFooter.js +2 -2
- package/components/StatusTracker/components/StatusTrackerHeader.js +2 -2
- package/components/StatusTracker/components/StatusTrackerMedia.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatus.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatusGroup.js +2 -2
- package/components/StatusTracker/components/StatusTrackerSum.js +2 -2
- package/components/StatusTracker/components/StatusTrackerTitle.js +2 -2
- package/components/Step/Step.js +11 -11
- package/components/Stepper/Stepper.js +9 -9
- package/components/Stepper/StepperExtended.js +2 -2
- package/components/Stepper/StepperStep.js +3 -3
- package/components/Stepper/StepperStepArrowBorder.js +1 -1
- package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
- package/components/Suggest/useSuggest.js +1 -1
- package/components/SuggestField/SuggestField.js +1 -1
- package/components/SuggestField/desktop/SuggestFieldDesktop.js +2 -2
- package/components/SuggestField/desktop/SuggestFieldDesktopDropdown.js +1 -1
- package/components/SuggestField/index.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobile.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobileDropdown.js +2 -2
- package/components/SuggestField/mobile/SuggestFieldMobileDropdownHint.js +1 -1
- package/components/SuggestField/mobile/index.js +1 -1
- package/components/SwipeableArea/SwipeableArea.js +9 -9
- package/components/Table/ChipPanel.js +2 -2
- package/components/Table/ChipPanelLinks.js +2 -2
- package/components/Table/FilterPanel.js +3 -3
- package/components/Table/MasterTable.js +3 -3
- package/components/Table/NoColumns.js +3 -3
- package/components/Table/PaginationPanel.js +3 -3
- package/components/Table/TableBasic/TableBasic.js +2 -2
- package/components/Table/TableBasic/components/TableBasicBody.js +2 -2
- package/components/Table/TableBasic/components/TableBasicHeader.js +2 -2
- package/components/Table/TableBasic/components/TableBasicRow.js +2 -2
- package/components/Table/TableBasicSettings/TableBasicSettings.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +2 -2
- package/components/Table/TableFooter/TableFooter.js +2 -2
- package/components/Table/TableFooter/components/TableFooterSummary.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummaryAmount.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectAllButton.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectedCount.js +1 -1
- package/components/Table/utils.js +1 -1
- package/components/Tabs/Tabs.js +9 -9
- package/components/TabsExtended/TabsExtended.js +3 -3
- package/components/TabsExtended/components/TabsExtendedContent.js +2 -2
- package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTab.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabButton.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +2 -2
- package/components/TabsExtended/utils.js +1 -1
- package/components/TabsLine/TabsLine.js +20 -17
- package/components/TabsLine/TabsLine.js.map +1 -1
- package/components/TabsLine/components/TabsLineDesktop.js +85 -98
- package/components/TabsLine/components/TabsLineDesktop.js.map +1 -1
- package/components/TabsLine/components/TabsLineDropdown.js +122 -86
- package/components/TabsLine/components/TabsLineDropdown.js.map +1 -1
- package/components/TabsLine/components/TabsLineItem.js +43 -27
- package/components/TabsLine/components/TabsLineItem.js.map +1 -1
- package/components/TabsLine/components/TabsLineMobile.js +20 -15
- package/components/TabsLine/components/TabsLineMobile.js.map +1 -1
- package/components/TabsLine/utils.js +8 -0
- package/components/TabsLine/utils.js.map +1 -1
- package/components/Tag/Tag.js +6 -6
- package/components/TagColor/TagColor.js +11 -11
- package/components/TagGroup/TagGroup.js +5 -5
- package/components/TextareaField/TextareaField.js +5 -1
- package/components/TextareaField/TextareaField.js.map +1 -1
- package/components/ThemeProvider/ThemeProvider.js +1 -1
- package/components/ThemeProvider/components/ThemeProviderView.js +1 -1
- package/components/Tooltip/components/common/TooltipBody.js +2 -2
- package/components/Tooltip/components/common/TooltipLink.js +5 -5
- package/components/Tooltip/components/common/TooltipXButton.js +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +2 -2
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +2 -2
- package/components/Tooltip/components/mobile/TooltipMobile.js +5 -5
- package/components/TopOverlay/TopOverlay.js +7 -7
- package/components/TreeView/TreeView.js +13 -8
- package/components/TreeView/TreeView.js.map +1 -1
- package/components/TreeView/components/TreeViewGroup.js +2 -2
- package/components/TreeView/components/TreeViewNode.js +2 -2
- package/components/Triggers/TriggerClickOnKeyDownEvent.js +2 -5
- package/components/Triggers/TriggerClickOnKeyDownEvent.js.map +1 -1
- package/components/Typography/Caption.js +8 -8
- package/components/Typography/CodeText.js +3 -3
- package/components/Typography/Text.js +10 -10
- package/components/Typography/Title.js +10 -10
- package/components/Typography/constants.js +1 -1
- package/components/UnorderedListExtended/UnorderedListExtended.js +3 -3
- package/components/UnorderedListExtended/UnorderedListExtendedItem.js +3 -3
- package/components/UnorderedListExtended/UnorderedListExtendedItemMarker.js +4 -4
- package/components/UploadZone/UploadZone.js +3 -3
- package/components/UploadZone/components/UploadZoneInput.js +2 -2
- package/components/UploadZone/index.js +1 -1
- package/components/WindowResizeListener/WindowResizeListener.js +1 -1
- package/components/index.js +6 -6
- package/{components/SliderExtended/utils.js → helpers/setForwardedRef.js} +2 -2
- package/helpers/setForwardedRef.js.map +1 -0
- package/index.d.ts +276 -161
- package/index.js +6 -6
- package/package.json +1 -1
- package/styles/triplex-next.css +3041 -3043
- package/utils/amountUtils.js +1 -1
- package/chunks/Card.module-DRLlpl4W.js +0 -32
- package/chunks/Card.module-DRLlpl4W.js.map +0 -1
- package/chunks/Carousel.module-DdMfAe9T.js +0 -34
- package/chunks/Carousel.module-DdMfAe9T.js.map +0 -1
- package/chunks/CheckboxTreeExtended.module-BCujNMOr.js +0 -24
- package/chunks/CheckboxTreeExtended.module-BCujNMOr.js.map +0 -1
- package/chunks/Confirm.module-D5ujpaan.js +0 -24
- package/chunks/Confirm.module-D5ujpaan.js.map +0 -1
- package/chunks/DropdownMobile.module-B-PviyH6.js +0 -40
- package/chunks/DropdownMobile.module-B-PviyH6.js.map +0 -1
- package/chunks/Footer.module-ib3e66nH.js +0 -12
- package/chunks/Footer.module-ib3e66nH.js.map +0 -1
- package/chunks/HeaderLayoutSidebar.module-CgtR6oF4.js.map +0 -1
- package/chunks/HeaderTabs.module-CYsRVlb9.js +0 -12
- package/chunks/HeaderTabs.module-CYsRVlb9.js.map +0 -1
- package/chunks/HeaderTitle.module-CABfTvCf.js.map +0 -1
- package/chunks/ImageGalleryExtendedMain.module-CZ9ZU6qi.js +0 -28
- package/chunks/ImageGalleryExtendedMain.module-CZ9ZU6qi.js.map +0 -1
- package/chunks/IslandAccordion.module-U3t-4vJq.js +0 -44
- package/chunks/IslandAccordion.module-U3t-4vJq.js.map +0 -1
- package/chunks/IslandWidgetFooter.module--k_POM4A.js +0 -18
- package/chunks/IslandWidgetFooter.module--k_POM4A.js.map +0 -1
- package/chunks/IslandWidgetHeader.module-D6j13jwR.js +0 -28
- package/chunks/IslandWidgetHeader.module-D6j13jwR.js.map +0 -1
- package/chunks/LightBoxControls.module-DR8ULE0a.js +0 -26
- package/chunks/LightBoxControls.module-DR8ULE0a.js.map +0 -1
- package/chunks/LightBoxSideOverlayClose.module-0Tjk9-qL.js.map +0 -1
- package/chunks/ListItemTail.module-Bq08aKyf.js +0 -18
- package/chunks/ListItemTail.module-Bq08aKyf.js.map +0 -1
- package/chunks/ListMasterFooter.module-9x6ntzLF.js +0 -14
- package/chunks/ListMasterFooter.module-9x6ntzLF.js.map +0 -1
- package/chunks/ModalWindow.module-DVlh8Hck.js +0 -28
- package/chunks/ModalWindow.module-DVlh8Hck.js.map +0 -1
- package/chunks/Notification.module-CAO_e6_u.js +0 -34
- package/chunks/Notification.module-CAO_e6_u.js.map +0 -1
- package/chunks/Overlay.module-BobfrUap.js +0 -30
- package/chunks/Overlay.module-BobfrUap.js.map +0 -1
- package/chunks/Page.module-D5IIaIaU.js +0 -15
- package/chunks/Page.module-D5IIaIaU.js.map +0 -1
- package/chunks/SMSField.module-7wYs4QAZ.js +0 -30
- package/chunks/SMSField.module-7wYs4QAZ.js.map +0 -1
- package/chunks/SliderExtendedMarks.module-m4ckCTSy.js +0 -24
- package/chunks/SliderExtendedMarks.module-m4ckCTSy.js.map +0 -1
- package/chunks/SliderExtendedRail-BI8zsX61.js.map +0 -1
- package/chunks/StatusTracker.module-Duk0PPcv.js +0 -44
- package/chunks/StatusTracker.module-Duk0PPcv.js.map +0 -1
- package/chunks/TableFooter.module-oZBepBwa.js +0 -22
- package/chunks/TableFooter.module-oZBepBwa.js.map +0 -1
- package/chunks/TabsExtended.module-D5QonHS5.js +0 -26
- package/chunks/TabsExtended.module-D5QonHS5.js.map +0 -1
- package/chunks/TabsLine.module-RwtPmU40.js +0 -36
- package/chunks/TabsLine.module-RwtPmU40.js.map +0 -1
- package/chunks/TooltipDesktop.module-hAZYb_oS.js +0 -32
- package/chunks/TooltipDesktop.module-hAZYb_oS.js.map +0 -1
- package/chunks/TreeView.module-DZyeCF-w.js +0 -12
- package/chunks/TreeView.module-DZyeCF-w.js.map +0 -1
- package/chunks/vendor-DqjKLGwf.js.map +0 -1
- package/components/Chip/ChipSuggest/utils.js +0 -11
- package/components/Chip/ChipSuggest/utils.js.map +0 -1
- package/components/SliderExtended/utils.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { i as isEqual } from "../../chunks/vendor-
|
|
4
|
+
import { i as isEqual } from "../../chunks/vendor-CUIykw0y.js";
|
|
5
5
|
class AbstractTreeNode {
|
|
6
6
|
constructor() {
|
|
7
7
|
// Массив дочерних нод.
|
|
@@ -4,7 +4,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4
4
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
5
5
|
import React__default from "react";
|
|
6
6
|
import { ExpandAnimation } from "../../ExpandAnimation/ExpandAnimation.js";
|
|
7
|
-
import { u as uniqueId, c as clsx } from "../../../chunks/vendor-
|
|
7
|
+
import { u as uniqueId, c as clsx } from "../../../chunks/vendor-CUIykw0y.js";
|
|
8
8
|
class AccordionBase extends React__default.Component {
|
|
9
9
|
constructor(props) {
|
|
10
10
|
super(props);
|
|
@@ -5,13 +5,13 @@ import { ALERT_TYPE_TO_CLASS_NAME_MAP } from "../AlertTypeUtils.js";
|
|
|
5
5
|
import { Text } from "../../Typography/Text.js";
|
|
6
6
|
import { ETextSize } from "../../Typography/enums.js";
|
|
7
7
|
import { SystemStrokeStsIcon16, ErrorStrokeStsIcon16, WarningStrokeStsIcon16, InfoStrokeStsIcon16 } from "@sberbusiness/icons-next";
|
|
8
|
-
import { c as clsx } from "../../../chunks/vendor-
|
|
9
|
-
const alertContext = "
|
|
10
|
-
const alertContextText = "
|
|
11
|
-
const alertTypeError = "
|
|
12
|
-
const alertTypeInfo = "
|
|
13
|
-
const alertTypeWarning = "
|
|
14
|
-
const alertTypeSystem = "
|
|
8
|
+
import { c as clsx } from "../../../chunks/vendor-CUIykw0y.js";
|
|
9
|
+
const alertContext = "alertContext__fca81882";
|
|
10
|
+
const alertContextText = "alertContextText__1a2c294d";
|
|
11
|
+
const alertTypeError = "alertTypeError__a627eeb2";
|
|
12
|
+
const alertTypeInfo = "alertTypeInfo__29a11b0d";
|
|
13
|
+
const alertTypeWarning = "alertTypeWarning__7644c030";
|
|
14
|
+
const alertTypeSystem = "alertTypeSystem__b17c0f39";
|
|
15
15
|
const styles = {
|
|
16
16
|
alertContext,
|
|
17
17
|
alertContextText,
|
|
@@ -34,7 +34,7 @@ const AlertContext = React__default.forwardRef(
|
|
|
34
34
|
role: "alert",
|
|
35
35
|
className: clsx(styles.alertContext, ALERT_TYPE_TO_CLASS_NAME_MAP[type](styles), className),
|
|
36
36
|
...rest,
|
|
37
|
-
"data-tx": "1.
|
|
37
|
+
"data-tx": "1.47.0",
|
|
38
38
|
ref,
|
|
39
39
|
children: [
|
|
40
40
|
renderIcon || TYPE_TO_DEFAULT_ICON_MAP[type],
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React__default, { useState } from "react";
|
|
3
3
|
import { DefaulticonStrokePrdIcon20, SystemStrokeStsIcon20, ErrorStrokeStsIcon20, WarningStrokeStsIcon20, InfoStrokeStsIcon20, CrossStrokeSrvIcon16 } from "@sberbusiness/icons-next";
|
|
4
|
-
import { c as clsx } from "../../../chunks/vendor-
|
|
4
|
+
import { c as clsx } from "../../../chunks/vendor-CUIykw0y.js";
|
|
5
5
|
import { EAlertType } from "../EAlertType.js";
|
|
6
6
|
import { ALERT_TYPE_TO_CLASS_NAME_MAP } from "../AlertTypeUtils.js";
|
|
7
7
|
import { ButtonIcon } from "../../Button/ButtonIcon.js";
|
|
8
|
-
import { s as styles, A as AlertProcessSpoiler } from "../../../chunks/AlertProcessSpoiler-
|
|
8
|
+
import { s as styles, A as AlertProcessSpoiler } from "../../../chunks/AlertProcessSpoiler-Bws9nhT_.js";
|
|
9
9
|
import { AlertProcessContext } from "./AlertProcessContext.js";
|
|
10
10
|
import { EAlertProcessBorderRadius } from "./enums.js";
|
|
11
11
|
const TYPE_TO_DEFAULT_ICON_MAP = {
|
|
@@ -50,7 +50,7 @@ const AlertProcess = Object.assign(
|
|
|
50
50
|
className
|
|
51
51
|
),
|
|
52
52
|
...rest,
|
|
53
|
-
"data-tx": "1.
|
|
53
|
+
"data-tx": "1.47.0",
|
|
54
54
|
ref,
|
|
55
55
|
children: [
|
|
56
56
|
/* @__PURE__ */ jsx("div", { className: styles.themeIcon, children: renderIcon || TYPE_TO_DEFAULT_ICON_MAP[type] }),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
3
|
import "@sberbusiness/icons-next";
|
|
4
|
-
import "../../../../chunks/vendor-
|
|
4
|
+
import "../../../../chunks/vendor-CUIykw0y.js";
|
|
5
5
|
import "../../../Button/ButtonIcon.js";
|
|
6
6
|
import "../AlertProcessContext.js";
|
|
7
|
-
import { A } from "../../../../chunks/AlertProcessSpoiler-
|
|
7
|
+
import { A } from "../../../../chunks/AlertProcessSpoiler-Bws9nhT_.js";
|
|
8
8
|
export {
|
|
9
9
|
A as AlertProcessSpoiler
|
|
10
10
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React__default from "react";
|
|
3
|
-
import { c as clsx } from "../../chunks/vendor-
|
|
3
|
+
import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
|
|
4
4
|
import { formatAmount } from "../../utils/amountUtils.js";
|
|
5
|
-
const adaptive = "
|
|
5
|
+
const adaptive = "adaptive__5857b696";
|
|
6
6
|
const styles = {
|
|
7
7
|
adaptive
|
|
8
8
|
};
|
|
@@ -20,7 +20,7 @@ const Amount = React__default.forwardRef(
|
|
|
20
20
|
},
|
|
21
21
|
className
|
|
22
22
|
);
|
|
23
|
-
return /* @__PURE__ */ jsxs("span", { className: classNames, ...restProps, ref, "data-tx": "1.
|
|
23
|
+
return /* @__PURE__ */ jsxs("span", { className: classNames, ...restProps, ref, "data-tx": "1.47.0", children: [
|
|
24
24
|
/* @__PURE__ */ jsx("span", { "data-test-id": dataTestId && `${dataTestId}__amount`, children: formattedAmount }),
|
|
25
25
|
currency && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26
26
|
NON_BREAKING_SPACE,
|
|
@@ -13,7 +13,7 @@ class AmountBaseInputCore {
|
|
|
13
13
|
__publicField(this, "caret");
|
|
14
14
|
/** Максимальное количество знаков перед запятой. */
|
|
15
15
|
__publicField(this, "maxIntegerDigits");
|
|
16
|
-
/** Количество
|
|
16
|
+
/** Количество знаков после запятой. */
|
|
17
17
|
__publicField(this, "fractionDigits");
|
|
18
18
|
/** Кэш для хранения значений. */
|
|
19
19
|
__publicField(this, "cache");
|
|
@@ -44,7 +44,7 @@ class AmountBaseInputCore {
|
|
|
44
44
|
}
|
|
45
45
|
/** Форматирование значения. */
|
|
46
46
|
format(value) {
|
|
47
|
-
const formatter = new AmountBaseInputFormatter(this.
|
|
47
|
+
const formatter = new AmountBaseInputFormatter(this.fractionDigits);
|
|
48
48
|
formatter.apply(value);
|
|
49
49
|
this.formattedValue = formatter.getValue();
|
|
50
50
|
this.caret += formatter.getCaretOffset();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountBaseInputCore.js","sources":["../../../src/components/AmountField/AmountBaseInputCore.ts"],"sourcesContent":["import { AmountBaseInputParser } from \"./AmountBaseInputParser\";\nimport { AmountBaseInputFormatter } from \"./AmountBaseInputFormatter\";\n\n/** Свойства кэша AmountBaseInputCore. */\ninterface IAmountBaseInputCoreCache {\n /** Отформатированное значение. */\n formattedValue: string;\n /** Значение нажатой клавиши. */\n key: string;\n /** Позиция начала выделения. */\n selectionStart: number | null;\n /** Позиция конца выделения. */\n selectionEnd: number | null;\n /** Направление выделения. */\n selectionDirection: \"forward\" | \"backward\" | \"none\" | null;\n}\n\n/** Основная логика в AmountBaseInput. */\nexport class AmountBaseInputCore {\n /** Значение. */\n public value: string;\n /** Отформатированное значение. */\n public formattedValue: string;\n /** Положение каретки. */\n public caret: number;\n /** Максимальное количество знаков перед запятой. */\n public maxIntegerDigits: number;\n /** Количество
|
|
1
|
+
{"version":3,"file":"AmountBaseInputCore.js","sources":["../../../src/components/AmountField/AmountBaseInputCore.ts"],"sourcesContent":["import { AmountBaseInputParser } from \"./AmountBaseInputParser\";\nimport { AmountBaseInputFormatter } from \"./AmountBaseInputFormatter\";\n\n/** Свойства кэша AmountBaseInputCore. */\ninterface IAmountBaseInputCoreCache {\n /** Отформатированное значение. */\n formattedValue: string;\n /** Значение нажатой клавиши. */\n key: string;\n /** Позиция начала выделения. */\n selectionStart: number | null;\n /** Позиция конца выделения. */\n selectionEnd: number | null;\n /** Направление выделения. */\n selectionDirection: \"forward\" | \"backward\" | \"none\" | null;\n}\n\n/** Основная логика в AmountBaseInput. */\nexport class AmountBaseInputCore {\n /** Значение. */\n public value: string;\n /** Отформатированное значение. */\n public formattedValue: string;\n /** Положение каретки. */\n public caret: number;\n /** Максимальное количество знаков перед запятой. */\n public maxIntegerDigits: number;\n /** Количество знаков после запятой. */\n public fractionDigits: number;\n /** Кэш для хранения значений. */\n public cache: IAmountBaseInputCoreCache;\n\n constructor(maxIntegerDigits: number, fractionDigits: number) {\n this.value = \"\";\n this.formattedValue = \"\";\n this.caret = 0;\n this.maxIntegerDigits = maxIntegerDigits;\n this.fractionDigits = fractionDigits;\n this.cache = {\n formattedValue: \"\",\n key: \"\",\n selectionDirection: null,\n selectionEnd: null,\n selectionStart: null,\n };\n }\n\n /** Применение входных данных. */\n public apply(value: string, caret: number): void {\n this.parse(value, caret);\n this.format(this.value);\n }\n\n /** Обработка значения. */\n private parse(value: string, caret: number): void {\n const parser = new AmountBaseInputParser(this.maxIntegerDigits, this.fractionDigits);\n\n parser.apply(value, caret, this.cache.key);\n\n this.value = parser.getValue();\n this.caret = caret + parser.getCaretOffset();\n }\n\n /** Форматирование значения. */\n private format(value: string): void {\n const formatter = new AmountBaseInputFormatter(this.fractionDigits);\n\n formatter.apply(value);\n\n this.formattedValue = formatter.getValue();\n this.caret += formatter.getCaretOffset();\n }\n}\n"],"names":[],"mappings":";;;;;AAkBO,MAAM,oBAAoB;AAAA,EAc7B,YAAY,kBAA0B,gBAAwB;AAZvD;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAGH,SAAK,QAAQ;AACb,SAAK,iBAAiB;AACtB,SAAK,QAAQ;AACb,SAAK,mBAAmB;AACxB,SAAK,iBAAiB;AACtB,SAAK,QAAQ;AAAA,MACT,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,oBAAoB;AAAA,MACpB,cAAc;AAAA,MACd,gBAAgB;AAAA,IAAA;AAAA,EAExB;AAAA;AAAA,EAGO,MAAM,OAAe,OAAqB;AAC7C,SAAK,MAAM,OAAO,KAAK;AACvB,SAAK,OAAO,KAAK,KAAK;AAAA,EAC1B;AAAA;AAAA,EAGQ,MAAM,OAAe,OAAqB;AAC9C,UAAM,SAAS,IAAI,sBAAsB,KAAK,kBAAkB,KAAK,cAAc;AAEnF,WAAO,MAAM,OAAO,OAAO,KAAK,MAAM,GAAG;AAEzC,SAAK,QAAQ,OAAO,SAAA;AACpB,SAAK,QAAQ,QAAQ,OAAO,eAAA;AAAA,EAChC;AAAA;AAAA,EAGQ,OAAO,OAAqB;AAChC,UAAM,YAAY,IAAI,yBAAyB,KAAK,cAAc;AAElE,cAAU,MAAM,KAAK;AAErB,SAAK,iBAAiB,UAAU,SAAA;AAChC,SAAK,SAAS,UAAU,eAAA;AAAA,EAC5B;AACJ;"}
|
|
@@ -3,18 +3,15 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { AmountConst } from "../../consts/AmountConst.js";
|
|
5
5
|
class AmountBaseInputFormatter {
|
|
6
|
-
constructor(
|
|
6
|
+
constructor(fractionDigits) {
|
|
7
7
|
/** Значение. */
|
|
8
8
|
__publicField(this, "value");
|
|
9
9
|
/** Величина сдвига каретки. */
|
|
10
10
|
__publicField(this, "caretOffset");
|
|
11
|
-
/**
|
|
12
|
-
__publicField(this, "maxLength");
|
|
13
|
-
/** Количество чисел после запятой. */
|
|
11
|
+
/** Количество знаков после запятой. */
|
|
14
12
|
__publicField(this, "fractionDigits");
|
|
15
13
|
this.value = "";
|
|
16
14
|
this.caretOffset = 0;
|
|
17
|
-
this.maxLength = maxLength;
|
|
18
15
|
this.fractionDigits = fractionDigits;
|
|
19
16
|
}
|
|
20
17
|
/** Получение значения. */
|
|
@@ -25,10 +22,10 @@ class AmountBaseInputFormatter {
|
|
|
25
22
|
getCaretOffset() {
|
|
26
23
|
return this.caretOffset;
|
|
27
24
|
}
|
|
28
|
-
/** Применение входных
|
|
25
|
+
/** Применение входных данных для форматирования. */
|
|
29
26
|
apply(value) {
|
|
30
27
|
const length = value.length;
|
|
31
|
-
if (this.fractionDigits
|
|
28
|
+
if (this.fractionDigits === 0) {
|
|
32
29
|
this.value = this.formatInteger(value, length);
|
|
33
30
|
} else {
|
|
34
31
|
this.value = this.formatDecimal(value, length);
|
|
@@ -41,7 +38,7 @@ class AmountBaseInputFormatter {
|
|
|
41
38
|
let i = 0;
|
|
42
39
|
buffer.push(value[i]);
|
|
43
40
|
while (++i < length) {
|
|
44
|
-
if ((length - i) % 3
|
|
41
|
+
if ((length - i) % 3 === 0) {
|
|
45
42
|
buffer.push(" ");
|
|
46
43
|
this.caretOffset++;
|
|
47
44
|
}
|
|
@@ -53,12 +50,12 @@ class AmountBaseInputFormatter {
|
|
|
53
50
|
/** Форматирование значения в виде десятичной дроби. */
|
|
54
51
|
formatDecimal(value, length) {
|
|
55
52
|
const buffer = [];
|
|
56
|
-
if (length) {
|
|
53
|
+
if (length > 0) {
|
|
57
54
|
const integerLength = length - this.fractionDigits - 1;
|
|
58
55
|
let i = 0;
|
|
59
56
|
buffer.push(value[i]);
|
|
60
57
|
while (++i < integerLength) {
|
|
61
|
-
if ((integerLength - i) % 3
|
|
58
|
+
if ((integerLength - i) % 3 === 0) {
|
|
62
59
|
buffer.push(" ");
|
|
63
60
|
this.caretOffset++;
|
|
64
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountBaseInputFormatter.js","sources":["../../../src/components/AmountField/AmountBaseInputFormatter.ts"],"sourcesContent":["import { AmountConst } from \"@sberbusiness/triplex-next/consts/AmountConst\";\n\n/** Форматер значения в AmountBaseInput. */\nexport class AmountBaseInputFormatter {\n /** Значение. */\n private value: string;\n /** Величина сдвига каретки. */\n private caretOffset: number;\n /**
|
|
1
|
+
{"version":3,"file":"AmountBaseInputFormatter.js","sources":["../../../src/components/AmountField/AmountBaseInputFormatter.ts"],"sourcesContent":["import { AmountConst } from \"@sberbusiness/triplex-next/consts/AmountConst\";\n\n/** Форматер значения в AmountBaseInput. */\nexport class AmountBaseInputFormatter {\n /** Значение. */\n private value: string;\n /** Величина сдвига каретки. */\n private caretOffset: number;\n /** Количество знаков после запятой. */\n private readonly fractionDigits: number;\n\n constructor(fractionDigits: number) {\n this.value = \"\";\n this.caretOffset = 0;\n this.fractionDigits = fractionDigits;\n }\n\n /** Получение значения. */\n public getValue(): string {\n return this.value;\n }\n\n /** Получение величины сдвига каретки. */\n public getCaretOffset(): number {\n return this.caretOffset;\n }\n\n /** Применение входных данных для форматирования. */\n public apply(value: string): void {\n const length = value.length;\n\n if (this.fractionDigits === 0) {\n this.value = this.formatInteger(value, length);\n } else {\n this.value = this.formatDecimal(value, length);\n }\n }\n\n /** Форматирование значения в виде целого значения. */\n private formatInteger(value: string, length: number): string {\n const buffer: string[] = [];\n\n if (length > 0) {\n let i = 0;\n\n buffer.push(value[i]);\n while (++i < length) {\n // Нужно ли добавить разделитель между группами цифр.\n if ((length - i) % 3 === 0) {\n buffer.push(\" \");\n this.caretOffset++;\n }\n buffer.push(value[i]);\n }\n }\n\n return buffer.join(\"\");\n }\n\n /** Форматирование значения в виде десятичной дроби. */\n private formatDecimal(value: string, length: number): string {\n const buffer: string[] = [];\n\n if (length > 0) {\n const integerLength = length - this.fractionDigits - 1;\n let i = 0;\n\n buffer.push(value[i]);\n while (++i < integerLength) {\n // Нужно ли добавить разделитель между группами цифр.\n if ((integerLength - i) % 3 === 0) {\n buffer.push(\" \");\n this.caretOffset++;\n }\n buffer.push(value[i]);\n }\n\n buffer.push(AmountConst.DecimalComma);\n\n while (++i < length) {\n buffer.push(value[i]);\n }\n }\n\n return buffer.join(\"\");\n }\n}\n"],"names":[],"mappings":";;;;AAGO,MAAM,yBAAyB;AAAA,EAQlC,YAAY,gBAAwB;AAN5B;AAAA;AAEA;AAAA;AAES;AAAA;AAGb,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,iBAAiB;AAAA,EAC1B;AAAA;AAAA,EAGO,WAAmB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGO,iBAAyB;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGO,MAAM,OAAqB;AAC9B,UAAM,SAAS,MAAM;AAErB,QAAI,KAAK,mBAAmB,GAAG;AAC3B,WAAK,QAAQ,KAAK,cAAc,OAAO,MAAM;AAAA,IACjD,OAAO;AACH,WAAK,QAAQ,KAAK,cAAc,OAAO,MAAM;AAAA,IACjD;AAAA,EACJ;AAAA;AAAA,EAGQ,cAAc,OAAe,QAAwB;AACzD,UAAM,SAAmB,CAAA;AAEzB,QAAI,SAAS,GAAG;AACZ,UAAI,IAAI;AAER,aAAO,KAAK,MAAM,CAAC,CAAC;AACpB,aAAO,EAAE,IAAI,QAAQ;AAEjB,aAAK,SAAS,KAAK,MAAM,GAAG;AACxB,iBAAO,KAAK,GAAG;AACf,eAAK;AAAA,QACT;AACA,eAAO,KAAK,MAAM,CAAC,CAAC;AAAA,MACxB;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,EAAE;AAAA,EACzB;AAAA;AAAA,EAGQ,cAAc,OAAe,QAAwB;AACzD,UAAM,SAAmB,CAAA;AAEzB,QAAI,SAAS,GAAG;AACZ,YAAM,gBAAgB,SAAS,KAAK,iBAAiB;AACrD,UAAI,IAAI;AAER,aAAO,KAAK,MAAM,CAAC,CAAC;AACpB,aAAO,EAAE,IAAI,eAAe;AAExB,aAAK,gBAAgB,KAAK,MAAM,GAAG;AAC/B,iBAAO,KAAK,GAAG;AACf,eAAK;AAAA,QACT;AACA,eAAO,KAAK,MAAM,CAAC,CAAC;AAAA,MACxB;AAEA,aAAO,KAAK,YAAY,YAAY;AAEpC,aAAO,EAAE,IAAI,QAAQ;AACjB,eAAO,KAAK,MAAM,CAAC,CAAC;AAAA,MACxB;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,EAAE;AAAA,EACzB;AACJ;"}
|
|
@@ -14,7 +14,7 @@ class AmountBaseInputParser {
|
|
|
14
14
|
__publicField(this, "key");
|
|
15
15
|
/** Максимальное количество знаков перед запятой. */
|
|
16
16
|
__publicField(this, "maxIntegerDigits");
|
|
17
|
-
/** Количество
|
|
17
|
+
/** Количество знаков после запятой. */
|
|
18
18
|
__publicField(this, "fractionDigits");
|
|
19
19
|
this.value = "";
|
|
20
20
|
this.caretOffset = 0;
|
|
@@ -35,8 +35,8 @@ class AmountBaseInputParser {
|
|
|
35
35
|
const length = value.length;
|
|
36
36
|
this.key = key;
|
|
37
37
|
if (this.maxIntegerDigits > 0) {
|
|
38
|
-
if (this.fractionDigits
|
|
39
|
-
return this.
|
|
38
|
+
if (this.fractionDigits === 0) {
|
|
39
|
+
return this.parseIntegerPart(value, caret, length);
|
|
40
40
|
} else if (this.fractionDigits > 0) {
|
|
41
41
|
return this.parseDecimal(value, caret, length);
|
|
42
42
|
}
|
|
@@ -44,14 +44,10 @@ class AmountBaseInputParser {
|
|
|
44
44
|
this.value = "";
|
|
45
45
|
this.caretOffset -= length;
|
|
46
46
|
}
|
|
47
|
-
/** Обработка значения в виде целого числа. */
|
|
48
|
-
parseInteger(value, caret, length) {
|
|
49
|
-
this.parseIntegerPart(value, caret, length);
|
|
50
|
-
}
|
|
51
47
|
/** Обработка значения в виде десятичной дроби. */
|
|
52
48
|
parseDecimal(value, caret, length) {
|
|
53
49
|
const separatorIndex = this.findSeparatorIndex(value, caret, length);
|
|
54
|
-
const [integerEnd, fractionalStart] = separatorIndex
|
|
50
|
+
const [integerEnd, fractionalStart] = separatorIndex !== -1 ? [separatorIndex, separatorIndex + 1] : [caret, caret];
|
|
55
51
|
const [integerPart, fractionalPart] = [value.substring(0, integerEnd), value.substring(fractionalStart)];
|
|
56
52
|
this.parseIntegerPart(integerPart, Math.min(caret, integerEnd), integerEnd);
|
|
57
53
|
this.parseFractionalPart(fractionalPart, Math.max(caret - fractionalStart, 0), length - fractionalStart);
|
|
@@ -66,7 +62,7 @@ class AmountBaseInputParser {
|
|
|
66
62
|
for (let i = 0, n = 0; i < caret; i++) {
|
|
67
63
|
if (StringUtils.isDigit(value[i])) {
|
|
68
64
|
buffer.push(value[i]);
|
|
69
|
-
if (++n
|
|
65
|
+
if (++n === maxDigitsBeforeCaret) {
|
|
70
66
|
break;
|
|
71
67
|
}
|
|
72
68
|
}
|
|
@@ -93,7 +89,7 @@ class AmountBaseInputParser {
|
|
|
93
89
|
for (let i = 0, n = 0; i < caret; i++) {
|
|
94
90
|
if (StringUtils.isDigit(value[i])) {
|
|
95
91
|
buffer.push(value[i]);
|
|
96
|
-
if (++n
|
|
92
|
+
if (++n === maxDigitsBeforeCaret) {
|
|
97
93
|
break;
|
|
98
94
|
}
|
|
99
95
|
} else {
|
|
@@ -112,8 +108,8 @@ class AmountBaseInputParser {
|
|
|
112
108
|
}
|
|
113
109
|
}
|
|
114
110
|
}
|
|
115
|
-
if (this.value.length
|
|
116
|
-
if (buffer.some((digit) => digit
|
|
111
|
+
if (this.value.length === 0) {
|
|
112
|
+
if (buffer.some((digit) => digit !== "0")) {
|
|
117
113
|
this.value = "0";
|
|
118
114
|
this.caretOffset++;
|
|
119
115
|
} else {
|
|
@@ -129,7 +125,7 @@ class AmountBaseInputParser {
|
|
|
129
125
|
for (let i = 0; i < length; i++) {
|
|
130
126
|
if (StringUtils.isDigit(value[i])) {
|
|
131
127
|
start = i;
|
|
132
|
-
if (value[i]
|
|
128
|
+
if (value[i] !== "0") {
|
|
133
129
|
break;
|
|
134
130
|
}
|
|
135
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountBaseInputParser.js","sources":["../../../src/components/AmountField/AmountBaseInputParser.ts"],"sourcesContent":["import { AmountConst } from \"@sberbusiness/triplex-next/consts/AmountConst\";\nimport { StringUtils } from \"@sberbusiness/triplex-next/utils/stringUtils\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\n\n/** Обработчик значения в AmountBaseInput. */\nexport class AmountBaseInputParser {\n /** Значение. */\n private value: string;\n /** Величина сдвига каретки. */\n private caretOffset: number;\n /** Значение нажатой клавиши. */\n private key: string;\n /** Максимальное количество знаков перед запятой. */\n private readonly maxIntegerDigits: number;\n /** Количество чисел после запятой. */\n private readonly fractionDigits: number;\n\n constructor(maxIntegerDigits: number, fractionDigits: number) {\n this.value = \"\";\n this.caretOffset = 0;\n this.maxIntegerDigits = maxIntegerDigits;\n this.fractionDigits = fractionDigits;\n this.key = \"\";\n }\n\n /** Получение значения. */\n public getValue(): string {\n return this.value;\n }\n\n /** Получение величины сдвига каретки. */\n public getCaretOffset(): number {\n return this.caretOffset;\n }\n\n /** Применение входных данных для обработки. */\n public apply(value: string, caret: number, key: string): void {\n const length = value.length;\n\n this.key = key;\n\n if (this.maxIntegerDigits > 0) {\n if (this.fractionDigits == 0) {\n return this.parseInteger(value, caret, length);\n } else if (this.fractionDigits > 0) {\n return this.parseDecimal(value, caret, length);\n }\n }\n\n // Fallback\n this.value = \"\";\n this.caretOffset -= length;\n }\n\n /** Обработка значения в виде целого числа. */\n private parseInteger(value: string, caret: number, length: number): void {\n this.parseIntegerPart(value, caret, length);\n }\n\n /** Обработка значения в виде десятичной дроби. */\n private parseDecimal(value: string, caret: number, length: number): void {\n const separatorIndex = this.findSeparatorIndex(value, caret, length);\n const [integerEnd, fractionalStart] =\n separatorIndex != -1 ? [separatorIndex, separatorIndex + 1] : [caret, caret];\n const [integerPart, fractionalPart] = [value.substring(0, integerEnd), value.substring(fractionalStart)];\n\n this.parseIntegerPart(integerPart, Math.min(caret, integerEnd), integerEnd);\n this.parseFractionalPart(fractionalPart, Math.max(caret - fractionalStart, 0), length - fractionalStart);\n }\n\n /** Обработка целой части числа. */\n private parseIntegerPart(value: string, caret: number, length: number): void {\n const buffer: string[] = [];\n [value, caret, length] = this.trimLeadingZeros(value, caret, length);\n\n // Обработка значения перед кареткой.\n if (caret > 0) {\n const maxDigitsBeforeCaret = this.maxIntegerDigits - (length - caret - Math.floor((length - caret) / 4));\n\n if (maxDigitsBeforeCaret > 0) {\n for (let i = 0, n = 0; i < caret; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n if (++n == maxDigitsBeforeCaret) {\n break;\n }\n }\n }\n }\n\n this.caretOffset -= caret - buffer.length;\n }\n\n // Обработка значения после каретки.\n if (caret < length) {\n for (let i = caret; i < length; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n } else {\n this.caretOffset--;\n }\n }\n }\n\n this.value = buffer.join(\"\");\n }\n\n /** Обработка дробной части числа. */\n private parseFractionalPart(value: string, caret: number, length: number): void {\n const buffer: string[] = [];\n\n // Обработка значения перед кареткой.\n if (caret > 0) {\n const maxDigitsBeforeCaret = this.fractionDigits;\n\n for (let i = 0, n = 0; i < caret; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n if (++n == maxDigitsBeforeCaret) {\n break;\n }\n } else {\n this.caretOffset--;\n }\n }\n }\n\n // Обработка значения после каретки.\n while (buffer.length < this.fractionDigits) {\n const index: number = length - (this.fractionDigits - buffer.length);\n\n if (index >= caret) {\n buffer.push(value[index]);\n } else {\n buffer.push(\"0\");\n if (isKey(this.key, \"DELETE\")) {\n this.caretOffset++;\n }\n }\n }\n\n // Если целая часть отсутствует.\n if (this.value.length == 0) {\n // При ненулевой дробной части, восстанавливаем целый ноль.\n if (buffer.some((digit) => digit != \"0\")) {\n this.value = \"0\";\n this.caretOffset++;\n }\n // Останавливаем парсинг.\n else {\n return;\n }\n }\n\n this.value += AmountConst.DecimalPoint;\n this.value += buffer.join(\"\");\n }\n\n /** Удаление ведущих нулей и всего, что им предшествует. */\n private trimLeadingZeros(value: string, caret: number, length: number): [string, number, number] {\n let start = 0;\n\n for (let i = 0; i < length; i++) {\n if (StringUtils.isDigit(value[i])) {\n start = i;\n if (value[i] != \"0\") {\n break;\n }\n }\n }\n\n this.caretOffset -= start;\n\n return [value.substring(start), Math.max(caret - start, 0), length - start];\n }\n\n /** Нахождение индекса десятичного разделителя. */\n private findSeparatorIndex(value: string, caret: number, length: number): number {\n // Если каретка находится перед числом целой части.\n if (caret < length - (this.fractionDigits + 1)) {\n for (let i = length - 1; i >= 0; i--) {\n if (StringUtils.isDecimalSeparator(value[i])) {\n return i;\n }\n }\n }\n // Если каретка находится после целой части.\n else {\n for (let i = 0; i < length; i++) {\n if (StringUtils.isDecimalSeparator(value[i])) {\n return i;\n }\n }\n }\n\n return -1;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AmountBaseInputParser.js","sources":["../../../src/components/AmountField/AmountBaseInputParser.ts"],"sourcesContent":["import { AmountConst } from \"@sberbusiness/triplex-next/consts/AmountConst\";\nimport { StringUtils } from \"@sberbusiness/triplex-next/utils/stringUtils\";\nimport { isKey } from \"@sberbusiness/triplex-next/utils/keyboard\";\n\n/** Обработчик значения в AmountBaseInput. */\nexport class AmountBaseInputParser {\n /** Значение. */\n private value: string;\n /** Величина сдвига каретки. */\n private caretOffset: number;\n /** Значение нажатой клавиши. */\n private key: string;\n /** Максимальное количество знаков перед запятой. */\n private readonly maxIntegerDigits: number;\n /** Количество знаков после запятой. */\n private readonly fractionDigits: number;\n\n constructor(maxIntegerDigits: number, fractionDigits: number) {\n this.value = \"\";\n this.caretOffset = 0;\n this.maxIntegerDigits = maxIntegerDigits;\n this.fractionDigits = fractionDigits;\n this.key = \"\";\n }\n\n /** Получение значения. */\n public getValue(): string {\n return this.value;\n }\n\n /** Получение величины сдвига каретки. */\n public getCaretOffset(): number {\n return this.caretOffset;\n }\n\n /** Применение входных данных для обработки. */\n public apply(value: string, caret: number, key: string): void {\n const length = value.length;\n\n this.key = key;\n\n if (this.maxIntegerDigits > 0) {\n if (this.fractionDigits === 0) {\n return this.parseIntegerPart(value, caret, length);\n } else if (this.fractionDigits > 0) {\n return this.parseDecimal(value, caret, length);\n }\n }\n\n // Fallback: без знаков перед запятой значение не имеет смысла — очищаем его целиком.\n this.value = \"\";\n this.caretOffset -= length;\n }\n\n /** Обработка значения в виде десятичной дроби. */\n private parseDecimal(value: string, caret: number, length: number): void {\n const separatorIndex = this.findSeparatorIndex(value, caret, length);\n const [integerEnd, fractionalStart] =\n separatorIndex !== -1 ? [separatorIndex, separatorIndex + 1] : [caret, caret];\n const [integerPart, fractionalPart] = [value.substring(0, integerEnd), value.substring(fractionalStart)];\n\n this.parseIntegerPart(integerPart, Math.min(caret, integerEnd), integerEnd);\n this.parseFractionalPart(fractionalPart, Math.max(caret - fractionalStart, 0), length - fractionalStart);\n }\n\n /** Обработка целой части числа. */\n private parseIntegerPart(value: string, caret: number, length: number): void {\n const buffer: string[] = [];\n [value, caret, length] = this.trimLeadingZeros(value, caret, length);\n\n // Обработка значения перед кареткой.\n if (caret > 0) {\n const maxDigitsBeforeCaret = this.maxIntegerDigits - (length - caret - Math.floor((length - caret) / 4));\n\n if (maxDigitsBeforeCaret > 0) {\n for (let i = 0, n = 0; i < caret; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n if (++n === maxDigitsBeforeCaret) {\n break;\n }\n }\n }\n }\n\n this.caretOffset -= caret - buffer.length;\n }\n\n // Обработка значения после каретки.\n if (caret < length) {\n for (let i = caret; i < length; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n } else {\n this.caretOffset--;\n }\n }\n }\n\n this.value = buffer.join(\"\");\n }\n\n /** Обработка дробной части числа. */\n private parseFractionalPart(value: string, caret: number, length: number): void {\n const buffer: string[] = [];\n\n // Обработка значения перед кареткой.\n if (caret > 0) {\n const maxDigitsBeforeCaret = this.fractionDigits;\n\n for (let i = 0, n = 0; i < caret; i++) {\n if (StringUtils.isDigit(value[i])) {\n buffer.push(value[i]);\n if (++n === maxDigitsBeforeCaret) {\n break;\n }\n } else {\n this.caretOffset--;\n }\n }\n }\n\n // Обработка значения после каретки.\n while (buffer.length < this.fractionDigits) {\n const index: number = length - (this.fractionDigits - buffer.length);\n\n if (index >= caret) {\n buffer.push(value[index]);\n } else {\n buffer.push(\"0\");\n if (isKey(this.key, \"DELETE\")) {\n this.caretOffset++;\n }\n }\n }\n\n // Если целая часть отсутствует.\n if (this.value.length === 0) {\n // При ненулевой дробной части, восстанавливаем целый ноль.\n if (buffer.some((digit) => digit !== \"0\")) {\n this.value = \"0\";\n this.caretOffset++;\n }\n // Останавливаем парсинг.\n else {\n return;\n }\n }\n\n this.value += AmountConst.DecimalPoint;\n this.value += buffer.join(\"\");\n }\n\n /** Удаление ведущих нулей и всего, что им предшествует. */\n private trimLeadingZeros(value: string, caret: number, length: number): [string, number, number] {\n let start = 0;\n\n for (let i = 0; i < length; i++) {\n if (StringUtils.isDigit(value[i])) {\n start = i;\n if (value[i] !== \"0\") {\n break;\n }\n }\n }\n\n this.caretOffset -= start;\n\n return [value.substring(start), Math.max(caret - start, 0), length - start];\n }\n\n /** Нахождение индекса десятичного разделителя. */\n private findSeparatorIndex(value: string, caret: number, length: number): number {\n // Если каретка находится перед числом целой части.\n if (caret < length - (this.fractionDigits + 1)) {\n for (let i = length - 1; i >= 0; i--) {\n if (StringUtils.isDecimalSeparator(value[i])) {\n return i;\n }\n }\n }\n // Если каретка находится после целой части.\n else {\n for (let i = 0; i < length; i++) {\n if (StringUtils.isDecimalSeparator(value[i])) {\n return i;\n }\n }\n }\n\n return -1;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import React__default, { useRef, useLayoutEffect,
|
|
3
|
-
import { c as clsx } from "../../chunks/vendor-
|
|
2
|
+
import React__default, { useRef, useLayoutEffect, useCallback } from "react";
|
|
3
|
+
import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
|
|
4
4
|
import { TextFieldBase } from "../TextField/TextFieldBase.js";
|
|
5
5
|
import { EFormFieldStatus } from "../FormField/enums.js";
|
|
6
6
|
import { FormFieldClear } from "../FormField/components/FormFieldClear.js";
|
|
@@ -17,16 +17,17 @@ import "../FormField/FormField.js";
|
|
|
17
17
|
import { AmountBaseInputCore } from "./AmountBaseInputCore.js";
|
|
18
18
|
import { createSizeToClassNameMap } from "../../utils/classNameMaps.js";
|
|
19
19
|
import { setCaretPosition } from "../../utils/inputUtils.js";
|
|
20
|
-
import {
|
|
20
|
+
import { setForwardedRef } from "../../helpers/setForwardedRef.js";
|
|
21
|
+
import { createPlaceholder, syncCoreAndGetFormattedValue, setFallbackCaret } from "./utils.js";
|
|
21
22
|
import { EComponentSize } from "../../enums/EComponentSize.js";
|
|
22
|
-
const amountFieldInputWrapper = "
|
|
23
|
-
const currencyLayout = "
|
|
24
|
-
const sm = "
|
|
25
|
-
const md = "
|
|
26
|
-
const lg = "
|
|
27
|
-
const valueMirror = "
|
|
28
|
-
const currencyUnit = "
|
|
29
|
-
const disabled = "
|
|
23
|
+
const amountFieldInputWrapper = "amountFieldInputWrapper__d59502fd";
|
|
24
|
+
const currencyLayout = "currencyLayout__75688e4b";
|
|
25
|
+
const sm = "sm__d5279867";
|
|
26
|
+
const md = "md__02cea32d";
|
|
27
|
+
const lg = "lg__2ae4bb41";
|
|
28
|
+
const valueMirror = "valueMirror__6d42fc19";
|
|
29
|
+
const currencyUnit = "currencyUnit__18f230c3";
|
|
30
|
+
const disabled = "disabled__77afa8d2";
|
|
30
31
|
const styles = {
|
|
31
32
|
amountFieldInputWrapper,
|
|
32
33
|
currencyLayout,
|
|
@@ -47,70 +48,51 @@ const AmountField = React__default.forwardRef(
|
|
|
47
48
|
maxIntegerDigits = 16,
|
|
48
49
|
fractionDigits = 2,
|
|
49
50
|
onClear,
|
|
51
|
+
clearProps,
|
|
50
52
|
...restProps
|
|
51
53
|
}, ref) => {
|
|
52
54
|
const { status, "data-test-id": dataTestId } = restProps;
|
|
53
55
|
const placeholder = inputProps.placeholder || createPlaceholder(fractionDigits);
|
|
54
56
|
const inputRef = useRef(null);
|
|
55
|
-
const
|
|
56
|
-
if (
|
|
57
|
+
const coreRef = useRef(null);
|
|
58
|
+
if (coreRef.current === null) {
|
|
59
|
+
coreRef.current = new AmountBaseInputCore(maxIntegerDigits, fractionDigits);
|
|
60
|
+
}
|
|
61
|
+
const core = coreRef.current;
|
|
62
|
+
const formattedValue = syncCoreAndGetFormattedValue(core, inputProps.value, maxIntegerDigits, fractionDigits);
|
|
57
63
|
useLayoutEffect(() => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}, [inputProps.value]);
|
|
61
|
-
const getFormattedValue = () => {
|
|
62
|
-
if (!core.current) return "";
|
|
63
|
-
if (inputProps.value != core.current.value || maxIntegerDigits != core.current.maxIntegerDigits || fractionDigits != core.current.fractionDigits) {
|
|
64
|
-
core.current.maxIntegerDigits = maxIntegerDigits;
|
|
65
|
-
core.current.fractionDigits = fractionDigits;
|
|
66
|
-
core.current.apply(inputProps.value, inputProps.value.length);
|
|
67
|
-
}
|
|
68
|
-
core.current.cache.formattedValue = core.current.formattedValue;
|
|
69
|
-
return core.current.formattedValue;
|
|
70
|
-
};
|
|
71
|
-
const formattedValue = getFormattedValue();
|
|
64
|
+
setCaretPosition(inputRef.current, Math.max(core.caret, 0));
|
|
65
|
+
}, [inputProps.value, maxIntegerDigits, fractionDigits, core]);
|
|
72
66
|
const handleChange = (event) => {
|
|
73
|
-
if (!core.current) return;
|
|
74
67
|
const caret = event.target.selectionStart ?? event.target.value.length;
|
|
75
|
-
core.
|
|
76
|
-
setFallbackCaret(event.target, core
|
|
77
|
-
inputProps.onChange(core.
|
|
68
|
+
core.apply(event.target.value, caret);
|
|
69
|
+
setFallbackCaret(event.target, core, fractionDigits);
|
|
70
|
+
inputProps.onChange(core.value);
|
|
78
71
|
};
|
|
79
72
|
const handleKeyDown = (event) => {
|
|
80
73
|
var _a;
|
|
81
|
-
|
|
82
|
-
core.current.cache.key = event.key;
|
|
74
|
+
core.cache.key = event.key;
|
|
83
75
|
(_a = inputProps.onKeyDown) == null ? void 0 : _a.call(inputProps, event);
|
|
84
76
|
};
|
|
85
77
|
const handleSelect = (event) => {
|
|
86
78
|
var _a;
|
|
87
|
-
|
|
88
|
-
core.
|
|
89
|
-
core.
|
|
90
|
-
core.
|
|
91
|
-
core.current.cache.selectionDirection = event.currentTarget.selectionDirection;
|
|
79
|
+
core.cache.key = "";
|
|
80
|
+
core.cache.selectionStart = event.currentTarget.selectionStart;
|
|
81
|
+
core.cache.selectionEnd = event.currentTarget.selectionEnd;
|
|
82
|
+
core.cache.selectionDirection = event.currentTarget.selectionDirection;
|
|
92
83
|
(_a = inputProps.onSelect) == null ? void 0 : _a.call(inputProps, event);
|
|
93
84
|
};
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
if (externalRef === void 0) {
|
|
97
|
-
return (instance) => {
|
|
98
|
-
inputRef.current = instance;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
return (instance) => {
|
|
85
|
+
const setInputRef = useCallback(
|
|
86
|
+
(instance) => {
|
|
102
87
|
inputRef.current = instance;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}, [inputProps.ref]);
|
|
88
|
+
setForwardedRef(inputProps.ref, instance);
|
|
89
|
+
},
|
|
90
|
+
[inputProps.ref]
|
|
91
|
+
);
|
|
110
92
|
const renderPostfix = () => {
|
|
111
93
|
if (onClear !== void 0) {
|
|
112
94
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
113
|
-
/* @__PURE__ */ jsx(FormFieldClear, { onClick: onClear }),
|
|
95
|
+
/* @__PURE__ */ jsx(FormFieldClear, { ...clearProps, onClick: onClear }),
|
|
114
96
|
postfix
|
|
115
97
|
] });
|
|
116
98
|
}
|
|
@@ -143,12 +125,13 @@ const AmountField = React__default.forwardRef(
|
|
|
143
125
|
onKeyDown: handleKeyDown,
|
|
144
126
|
onSelect: handleSelect,
|
|
145
127
|
onChange: handleChange,
|
|
146
|
-
ref:
|
|
128
|
+
ref: setInputRef
|
|
147
129
|
}
|
|
148
130
|
)
|
|
149
131
|
] }) });
|
|
150
132
|
}
|
|
151
133
|
);
|
|
134
|
+
AmountField.displayName = "AmountField";
|
|
152
135
|
export {
|
|
153
136
|
AmountField
|
|
154
137
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountField.js","sources":["../../../src/components/AmountField/AmountField.tsx"],"sourcesContent":["import React, { useRef, useLayoutEffect, useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport { TextFieldBase, ITextFieldBaseProps } from \"../TextField/TextFieldBase\";\nimport { FormFieldInput, IFormFieldInputProps, EFormFieldStatus } from \"../FormField\";\nimport { FormFieldClear } from \"../FormField/components/FormFieldClear\";\nimport { AmountBaseInputCore } from \"./AmountBaseInputCore\";\nimport { setCaretPosition, createSizeToClassNameMap } from \"../../utils\";\nimport { createPlaceholder, setFallbackCaret } from \"./utils\";\nimport { EComponentSize } from \"../../enums\";\nimport styles from \"./styles/AmountField.module.less\";\n\n/** Свойства компонента AmountField. */\nexport interface IAmountFieldProps extends Omit<ITextFieldBaseProps, \"children\"> {\n /** Свойства поля ввода. */\n inputProps: Omit<IFormFieldInputProps, \"type\" | \"maxLength\" | \"onChange\" | \"inputMode\" | \"autoComplete\"> & {\n /** Значение. */\n value: string;\n /** Обработчик изменения значения. */\n onChange: (value: string) => void;\n /** Ссылка на HTML-элемент поля ввода. */\n ref?: React.Ref<HTMLInputElement>;\n };\n /** Наименование валюты. */\n currency?: string;\n /** Максимальное количество знаков перед запятой. */\n maxIntegerDigits?: number;\n /** Количество знаков после запятой. */\n fractionDigits?: number;\n /** Обработчик очищения значения. */\n onClear?: () => void;\n}\n\n/** Соответствие размера имени класса. */\nconst SIZE_TO_CLASS_NAME_MAP = createSizeToClassNameMap(styles);\n\nexport const AmountField = React.forwardRef<HTMLDivElement, IAmountFieldProps>(\n (\n {\n size = EComponentSize.LG,\n postfix,\n inputProps,\n currency,\n maxIntegerDigits = 16,\n fractionDigits = 2,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const { status, \"data-test-id\": dataTestId } = restProps;\n const placeholder = inputProps.placeholder || createPlaceholder(fractionDigits);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const core = useRef<AmountBaseInputCore>();\n if (core.current === undefined) core.current = new AmountBaseInputCore(maxIntegerDigits, fractionDigits);\n\n useLayoutEffect(() => {\n if (core.current && inputRef.current == document.activeElement)\n setCaretPosition(inputRef.current, Math.max(core.current.caret, 0));\n }, [inputProps.value]);\n\n /** Функция, возвращающая отформатированное значение. */\n const getFormattedValue = () => {\n if (!core.current) return \"\";\n\n if (\n inputProps.value != core.current.value ||\n maxIntegerDigits != core.current.maxIntegerDigits ||\n fractionDigits != core.current.fractionDigits\n ) {\n core.current.maxIntegerDigits = maxIntegerDigits;\n core.current.fractionDigits = fractionDigits;\n core.current.apply(inputProps.value, inputProps.value.length);\n }\n\n core.current.cache.formattedValue = core.current.formattedValue;\n\n return core.current.formattedValue;\n };\n\n const formattedValue = getFormattedValue();\n\n /** Обработчик изменения значения. */\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!core.current) return;\n\n const caret = event.target.selectionStart ?? event.target.value.length;\n\n core.current.apply(event.target.value, caret);\n\n setFallbackCaret(event.target, core.current, fractionDigits);\n\n inputProps.onChange(core.current.value);\n };\n\n /** Обработчик нажатия клавиши. */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!core.current) return;\n\n core.current.cache.key = event.key;\n\n inputProps.onKeyDown?.(event);\n };\n\n /** Обработчик выбора текста. */\n const handleSelect = (event: React.SyntheticEvent<HTMLInputElement>) => {\n if (!core.current) return;\n\n core.current.cache.key = \"\";\n core.current.cache.selectionStart = event.currentTarget.selectionStart;\n core.current.cache.selectionEnd = event.currentTarget.selectionEnd;\n core.current.cache.selectionDirection = event.currentTarget.selectionDirection;\n\n inputProps.onSelect?.(event);\n };\n\n const mergedInputRef = useMemo(() => {\n const externalRef = inputProps.ref;\n\n if (externalRef === undefined) {\n return (instance: HTMLInputElement | null) => {\n inputRef.current = instance;\n };\n }\n\n return (instance: HTMLInputElement | null) => {\n inputRef.current = instance;\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n } else {\n (externalRef as React.MutableRefObject<HTMLInputElement | null>).current = instance;\n }\n };\n }, [inputProps.ref]);\n\n const renderPostfix = () => {\n if (onClear !== undefined) {\n return (\n <>\n <FormFieldClear onClick={onClear} />\n {postfix}\n </>\n );\n }\n return postfix;\n };\n\n const showCurrency = currency !== undefined && formattedValue.length > 0;\n\n return (\n <TextFieldBase size={size} postfix={renderPostfix()} {...restProps} ref={ref}>\n <div className={styles.amountFieldInputWrapper}>\n {showCurrency && (\n <div className={clsx(styles.currencyLayout, SIZE_TO_CLASS_NAME_MAP[size])}>\n <span className={styles.valueMirror} aria-hidden=\"true\">\n {`${formattedValue} `}\n </span>\n <span\n className={clsx(styles.currencyUnit, {\n [styles.disabled]: status === EFormFieldStatus.DISABLED,\n })}\n data-test-id={dataTestId && `${dataTestId}__unit`}\n >\n {currency}\n </span>\n </div>\n )}\n <FormFieldInput\n {...inputProps}\n value={formattedValue}\n placeholder={placeholder}\n autoComplete=\"off\"\n inputMode=\"decimal\"\n data-test-id={dataTestId && `${dataTestId}__input`}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onChange={handleChange}\n ref={mergedInputRef}\n />\n </div>\n </TextFieldBase>\n );\n },\n);\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AmountField.js","sources":["../../../src/components/AmountField/AmountField.tsx"],"sourcesContent":["import React, { useRef, useLayoutEffect, useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport { TextFieldBase, ITextFieldBaseProps } from \"../TextField/TextFieldBase\";\nimport { FormFieldInput, IFormFieldInputProps, EFormFieldStatus } from \"../FormField\";\nimport { FormFieldClear, IFormFieldClearProps } from \"../FormField/components/FormFieldClear\";\nimport { AmountBaseInputCore } from \"./AmountBaseInputCore\";\nimport { setCaretPosition, createSizeToClassNameMap } from \"../../utils\";\nimport { setForwardedRef } from \"../../helpers/setForwardedRef\";\nimport { createPlaceholder, syncCoreAndGetFormattedValue, setFallbackCaret } from \"./utils\";\nimport { EComponentSize } from \"../../enums\";\nimport styles from \"./styles/AmountField.module.less\";\n\n/** Свойства компонента AmountField. */\nexport interface IAmountFieldProps extends Omit<ITextFieldBaseProps, \"children\"> {\n /** Свойства поля ввода. */\n inputProps: Omit<IFormFieldInputProps, \"type\" | \"maxLength\" | \"onChange\" | \"inputMode\" | \"autoComplete\"> & {\n /** Значение. Хранится без разделителей разрядов, с точкой в роли десятичного разделителя (\"1234.56\"). */\n value: string;\n /** Обработчик изменения значения. Получает нормализованное значение, а не то, что видно в поле. */\n onChange: (value: string) => void;\n /** Ссылка на HTML-элемент поля ввода. */\n ref?: React.Ref<HTMLInputElement>;\n };\n /** Наименование валюты. Отображается справа от значения, пока значение не пустое. */\n currency?: string;\n /** Максимальное количество знаков перед запятой. По умолчанию 16. */\n maxIntegerDigits?: number;\n /** Количество знаков после запятой. По умолчанию 2. */\n fractionDigits?: number;\n /** Обработчик очищения значения. Если передан, в постфиксе поля отображается кнопка очистки. */\n onClear?: () => void;\n /**\n * Свойства кнопки очистки. Имеют смысл только вместе с onClear.\n *\n * Кнопка содержит лишь иконку, поэтому доступное имя задаётся здесь: передайте aria-label\n * на языке интерфейса. Обработчик клика задаётся через onClear и здесь не переопределяется.\n */\n clearProps?: Omit<IFormFieldClearProps, \"onClick\">;\n}\n\n/** Соответствие размера имени класса. */\nconst SIZE_TO_CLASS_NAME_MAP = createSizeToClassNameMap(styles);\n\n/**\n * Поле ввода денежной суммы.\n *\n * Форматирует значение во время ввода (разряды через пробел, запятая в роли десятичного разделителя)\n * и удерживает каретку в осмысленной позиции, а наружу отдаёт нормализованное значение вида \"1234.56\".\n */\nexport const AmountField = React.forwardRef<HTMLDivElement, IAmountFieldProps>(\n (\n {\n size = EComponentSize.LG,\n postfix,\n inputProps,\n currency,\n maxIntegerDigits = 16,\n fractionDigits = 2,\n onClear,\n clearProps,\n ...restProps\n },\n ref,\n ) => {\n const { status, \"data-test-id\": dataTestId } = restProps;\n const placeholder = inputProps.placeholder || createPlaceholder(fractionDigits);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const coreRef = useRef<AmountBaseInputCore | null>(null);\n\n if (coreRef.current === null) {\n coreRef.current = new AmountBaseInputCore(maxIntegerDigits, fractionDigits);\n }\n\n const core = coreRef.current;\n const formattedValue = syncCoreAndGetFormattedValue(core, inputProps.value, maxIntegerDigits, fractionDigits);\n\n // Возвращаем каретку в рассчитанную ядром позицию: React после перерисовки ставит её в конец значения.\n // setCaretPosition ничего не делает, если поле не в фокусе.\n useLayoutEffect(() => {\n setCaretPosition(inputRef.current, Math.max(core.caret, 0));\n }, [inputProps.value, maxIntegerDigits, fractionDigits, core]);\n\n /** Обработчик изменения значения. */\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const caret = event.target.selectionStart ?? event.target.value.length;\n\n core.apply(event.target.value, caret);\n\n setFallbackCaret(event.target, core, fractionDigits);\n\n inputProps.onChange(core.value);\n };\n\n /** Обработчик нажатия клавиши. */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n core.cache.key = event.key;\n\n inputProps.onKeyDown?.(event);\n };\n\n /** Обработчик выбора текста. */\n const handleSelect = (event: React.SyntheticEvent<HTMLInputElement>) => {\n core.cache.key = \"\";\n core.cache.selectionStart = event.currentTarget.selectionStart;\n core.cache.selectionEnd = event.currentTarget.selectionEnd;\n core.cache.selectionDirection = event.currentTarget.selectionDirection;\n\n inputProps.onSelect?.(event);\n };\n\n const setInputRef = useCallback(\n (instance: HTMLInputElement | null) => {\n inputRef.current = instance;\n setForwardedRef(inputProps.ref, instance);\n },\n [inputProps.ref],\n );\n\n const renderPostfix = () => {\n if (onClear !== undefined) {\n return (\n <>\n <FormFieldClear {...clearProps} onClick={onClear} />\n {postfix}\n </>\n );\n }\n return postfix;\n };\n\n const showCurrency = currency !== undefined && formattedValue.length > 0;\n\n return (\n <TextFieldBase size={size} postfix={renderPostfix()} {...restProps} ref={ref}>\n <div className={styles.amountFieldInputWrapper}>\n {showCurrency && (\n <div className={clsx(styles.currencyLayout, SIZE_TO_CLASS_NAME_MAP[size])}>\n <span className={styles.valueMirror} aria-hidden=\"true\">\n {`${formattedValue} `}\n </span>\n <span\n className={clsx(styles.currencyUnit, {\n [styles.disabled]: status === EFormFieldStatus.DISABLED,\n })}\n data-test-id={dataTestId && `${dataTestId}__unit`}\n >\n {currency}\n </span>\n </div>\n )}\n <FormFieldInput\n {...inputProps}\n value={formattedValue}\n placeholder={placeholder}\n autoComplete=\"off\"\n inputMode=\"decimal\"\n data-test-id={dataTestId && `${dataTestId}__input`}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onChange={handleChange}\n ref={setInputRef}\n />\n </div>\n </TextFieldBase>\n );\n },\n);\n\nAmountField.displayName = \"AmountField\";\n"],"names":["React"],"mappings":"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"}
|
|
@@ -11,6 +11,15 @@ function createPlaceholder(fractionDigits) {
|
|
|
11
11
|
}
|
|
12
12
|
return buffer.join("");
|
|
13
13
|
}
|
|
14
|
+
function syncCoreAndGetFormattedValue(core, value, maxIntegerDigits, fractionDigits) {
|
|
15
|
+
if (value !== core.value || maxIntegerDigits !== core.maxIntegerDigits || fractionDigits !== core.fractionDigits) {
|
|
16
|
+
core.maxIntegerDigits = maxIntegerDigits;
|
|
17
|
+
core.fractionDigits = fractionDigits;
|
|
18
|
+
core.apply(value, value.length);
|
|
19
|
+
}
|
|
20
|
+
core.cache.formattedValue = core.formattedValue;
|
|
21
|
+
return core.formattedValue;
|
|
22
|
+
}
|
|
14
23
|
function setFallbackCaret(input, coreAmount, fractionDigits) {
|
|
15
24
|
const { formattedValue, key, selectionStart, selectionEnd, selectionDirection } = coreAmount.cache;
|
|
16
25
|
input.value = formattedValue;
|
|
@@ -37,11 +46,12 @@ function setFallbackCaret(input, coreAmount, fractionDigits) {
|
|
|
37
46
|
if (coreAmount.formattedValue === formattedValue)
|
|
38
47
|
return input.setSelectionRange(coreAmount.caret, coreAmount.caret);
|
|
39
48
|
}
|
|
40
|
-
if (selectionDirection
|
|
49
|
+
if (selectionDirection === "backward") return input.setSelectionRange(selectionEnd, selectionEnd);
|
|
41
50
|
return input.setSelectionRange(selectionStart, selectionStart);
|
|
42
51
|
}
|
|
43
52
|
export {
|
|
44
53
|
createPlaceholder,
|
|
45
|
-
setFallbackCaret
|
|
54
|
+
setFallbackCaret,
|
|
55
|
+
syncCoreAndGetFormattedValue
|
|
46
56
|
};
|
|
47
57
|
//# sourceMappingURL=utils.js.map
|