@sberbusiness/triplex-next 0.39.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/{AlertProcessSpoiler-DRoHuVl6.js → AlertProcessSpoiler-BtnKN4rB.js} +17 -17
- package/chunks/{AlertProcessSpoiler-DRoHuVl6.js.map → AlertProcessSpoiler-BtnKN4rB.js.map} +1 -1
- package/chunks/{CalendarViewItem-AChLlz4N.js → CalendarViewItem-RCL-JeQJ.js} +31 -29
- package/chunks/CalendarViewItem-RCL-JeQJ.js.map +1 -0
- package/chunks/Card.module-CoOqpkwS.js +32 -0
- package/chunks/Card.module-CoOqpkwS.js.map +1 -0
- package/chunks/Carousel.module-DvV8MD7r.js +30 -0
- package/chunks/Carousel.module-DvV8MD7r.js.map +1 -0
- package/chunks/CheckboxTreeExtended.module-Clecba-z.js +24 -0
- package/chunks/CheckboxTreeExtended.module-Clecba-z.js.map +1 -0
- package/chunks/{Chip-DGvjOx0y.js → Chip-Cp08qRYJ.js} +28 -28
- package/chunks/Chip-Cp08qRYJ.js.map +1 -0
- package/chunks/Confirm.module-DM72PYpZ.js +24 -0
- package/chunks/Confirm.module-DM72PYpZ.js.map +1 -0
- package/chunks/{DropdownListItem-COR0eOzM.js → DropdownListItem-BVmaxhUL.js} +21 -23
- package/chunks/DropdownListItem-BVmaxhUL.js.map +1 -0
- package/chunks/DropdownMobile.module-CZWR3s0W.js +40 -0
- package/chunks/DropdownMobile.module-CZWR3s0W.js.map +1 -0
- package/chunks/Footer.module-BVlnkdmW.js +12 -0
- package/chunks/Footer.module-BVlnkdmW.js.map +1 -0
- package/chunks/{HeaderLayoutSidebar.module-o5cCUCGl.js → HeaderLayoutSidebar.module-BucgINex.js} +4 -4
- package/chunks/HeaderLayoutSidebar.module-BucgINex.js.map +1 -0
- package/chunks/HeaderTabs.module-C_a4JHKH.js +12 -0
- package/chunks/HeaderTabs.module-C_a4JHKH.js.map +1 -0
- package/chunks/{HeaderTitle.module-CUVjwVW7.js → HeaderTitle.module-CcCkeiqR.js} +4 -4
- package/chunks/HeaderTitle.module-CcCkeiqR.js.map +1 -0
- package/chunks/ImageGalleryExtendedMain.module-rFvyNDtg.js +28 -0
- package/chunks/ImageGalleryExtendedMain.module-rFvyNDtg.js.map +1 -0
- package/chunks/{ImageGalleryExtendedThumb-B7xjP3UP.js → ImageGalleryExtendedThumb-DHoiTDGV.js} +6 -6
- package/chunks/{ImageGalleryExtendedThumb-B7xjP3UP.js.map → ImageGalleryExtendedThumb-DHoiTDGV.js.map} +1 -1
- package/chunks/IslandAccordion.module-Bpxl1nou.js +44 -0
- package/chunks/IslandAccordion.module-Bpxl1nou.js.map +1 -0
- package/chunks/IslandWidgetFooter.module-Gq4r6MKf.js +12 -0
- package/chunks/IslandWidgetFooter.module-Gq4r6MKf.js.map +1 -0
- package/chunks/IslandWidgetHeader.module-60ngN9Fp.js +20 -0
- package/chunks/IslandWidgetHeader.module-60ngN9Fp.js.map +1 -0
- package/chunks/{LightBoxContent-blTzF5vv.js → LightBoxContent-faIO64ku.js} +15 -15
- package/chunks/{LightBoxContent-blTzF5vv.js.map → LightBoxContent-faIO64ku.js.map} +1 -1
- package/chunks/LightBoxControls.module-zALKUa-L.js +26 -0
- package/chunks/LightBoxControls.module-zALKUa-L.js.map +1 -0
- package/chunks/{LightBoxSideOverlayClose.module-BVuB53vM.js → LightBoxSideOverlayClose.module-BJOafmhE.js} +4 -4
- package/chunks/LightBoxSideOverlayClose.module-BJOafmhE.js.map +1 -0
- package/chunks/{ListItemControlsButton-DulKpjwV.js → ListItemControlsButton-Cgn5z-4-.js} +10 -10
- package/chunks/{ListItemControlsButton-DulKpjwV.js.map → ListItemControlsButton-Cgn5z-4-.js.map} +1 -1
- package/chunks/ListItemTail.module-SH-k_8bE.js +18 -0
- package/chunks/ListItemTail.module-SH-k_8bE.js.map +1 -0
- package/chunks/ListMasterFooter.module-B7KHgt78.js +14 -0
- package/chunks/ListMasterFooter.module-B7KHgt78.js.map +1 -0
- package/chunks/ModalWindow.module-g4fzzLBJ.js +28 -0
- package/chunks/ModalWindow.module-g4fzzLBJ.js.map +1 -0
- package/chunks/Notification.module-GuNThi0F.js +34 -0
- package/chunks/Notification.module-GuNThi0F.js.map +1 -0
- package/chunks/Overlay.module-Bz905CUE.js +30 -0
- package/chunks/Overlay.module-Bz905CUE.js.map +1 -0
- package/chunks/Page.module-Cew9zu6t.js +15 -0
- package/chunks/Page.module-Cew9zu6t.js.map +1 -0
- package/chunks/SMSField.module-DF_16zDO.js +26 -0
- package/chunks/SMSField.module-DF_16zDO.js.map +1 -0
- package/chunks/SliderExtendedMarks.module-DuovwuEN.js +24 -0
- package/chunks/SliderExtendedMarks.module-DuovwuEN.js.map +1 -0
- package/chunks/{SliderExtendedRail-kRXLpNwt.js → SliderExtendedRail-52OucNYf.js} +6 -6
- package/chunks/{SliderExtendedRail-kRXLpNwt.js.map → SliderExtendedRail-52OucNYf.js.map} +1 -1
- package/chunks/StatusTracker.module-BeFh9DCu.js +44 -0
- package/chunks/StatusTracker.module-BeFh9DCu.js.map +1 -0
- package/chunks/{StepperStepArrowBorder-CsES9yvO.js → StepperStepArrowBorder-0d-ly-A8.js} +16 -16
- package/chunks/{StepperStepArrowBorder-CsES9yvO.js.map → StepperStepArrowBorder-0d-ly-A8.js.map} +1 -1
- package/chunks/{SuggestFieldMobileDropdownHint-YOB5F8TH.js → SuggestFieldMobileDropdownHint-CPo1oKCp.js} +3 -3
- package/chunks/{SuggestFieldMobileDropdownHint-YOB5F8TH.js.map → SuggestFieldMobileDropdownHint-CPo1oKCp.js.map} +1 -1
- package/chunks/TableFooter.module-CceBkCov.js +22 -0
- package/chunks/TableFooter.module-CceBkCov.js.map +1 -0
- package/chunks/TabsExtended.module-BV1A2Ngf.js +26 -0
- package/chunks/TabsExtended.module-BV1A2Ngf.js.map +1 -0
- package/chunks/TabsLine.module-CpjGY1fI.js +36 -0
- package/chunks/TabsLine.module-CpjGY1fI.js.map +1 -0
- package/chunks/TooltipDesktop.module-D22gy-42.js +32 -0
- package/chunks/TooltipDesktop.module-D22gy-42.js.map +1 -0
- package/chunks/TreeView.module-uRhEW69Z.js +12 -0
- package/chunks/TreeView.module-uRhEW69Z.js.map +1 -0
- package/chunks/{UploadZoneInput-Dc9Z6NrZ.js → UploadZoneInput-CkHsnEn0.js} +6 -6
- package/chunks/{UploadZoneInput-Dc9Z6NrZ.js.map → UploadZoneInput-CkHsnEn0.js.map} +1 -1
- package/chunks/{constants-b3mFJcdx.js → constants-CroH6kNa.js} +27 -27
- package/chunks/{constants-b3mFJcdx.js.map → constants-CroH6kNa.js.map} +1 -1
- package/chunks/{utils-BXgC_I8P.js → utils-B4HVj8oI.js} +8 -8
- package/chunks/utils-B4HVj8oI.js.map +1 -0
- package/chunks/{utils-DdrwqT9t.js → utils-CVWtdPuN.js} +6 -6
- package/chunks/{utils-DdrwqT9t.js.map → utils-CVWtdPuN.js.map} +1 -1
- package/chunks/{utils-Bv8Gz_QY.js → utils-DI2WUTKf.js} +27 -27
- package/chunks/{utils-Bv8Gz_QY.js.map → utils-DI2WUTKf.js.map} +1 -1
- package/chunks/{utils-B1pi9Ckc.js → utils-f5ZO_GR2.js} +11 -11
- package/chunks/{utils-B1pi9Ckc.js.map → utils-f5ZO_GR2.js.map} +1 -1
- package/chunks/vendor-BtZO8a0z.js +17814 -0
- package/chunks/vendor-BtZO8a0z.js.map +1 -0
- package/components/AbstractTree/AbstractTreeNode.js +1 -1
- package/components/AccordionBase/protected/AccordionBase.js +1 -1
- package/components/Alert/AlertContext/AlertContext.js +8 -8
- package/components/Alert/AlertProcess/AlertProcess.js +3 -3
- package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +2 -2
- package/components/Amount/Amount.js +3 -3
- package/components/Avatar/Avatar.js +14 -14
- package/components/Badge/Badge.js +5 -5
- package/components/Badge/BadgeDot.js +5 -5
- package/components/Badge/components/BadgeContent.js +7 -7
- package/components/Badge/components/BadgePostfix.js +2 -2
- package/components/Badge/components/BadgePrefix.js +2 -2
- package/components/Body/Body.js +4 -4
- package/components/Button/Button.js +21 -21
- package/components/Button/ButtonBase.js +1 -1
- package/components/Button/ButtonDropdown.js +9 -9
- package/components/Button/ButtonDropdownExtended.js +18 -22
- package/components/Button/ButtonDropdownExtended.js.map +1 -1
- package/components/Button/ButtonIcon.js +4 -4
- package/components/Button/ButtonIcon.js.map +1 -1
- package/components/Calendar/Calendar.js +17 -17
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarContext.js.map +1 -1
- package/components/Calendar/CalendarViewContext.js.map +1 -1
- package/components/Calendar/components/CalendarControls.js +12 -32
- package/components/Calendar/components/CalendarControls.js.map +1 -1
- package/components/Calendar/components/CalendarFooter.js +3 -2
- package/components/Calendar/components/CalendarFooter.js.map +1 -1
- package/components/Calendar/components/CalendarView.js +1 -0
- package/components/Calendar/components/CalendarView.js.map +1 -1
- package/components/Calendar/components/CalendarViewDays.js +32 -56
- package/components/Calendar/components/CalendarViewDays.js.map +1 -1
- package/components/Calendar/components/CalendarViewItem.js +2 -2
- package/components/Calendar/components/CalendarViewMonths.js +30 -52
- package/components/Calendar/components/CalendarViewMonths.js.map +1 -1
- package/components/Calendar/components/CalendarViewYears.js +34 -55
- package/components/Calendar/components/CalendarViewYears.js.map +1 -1
- package/components/Calendar/utils.js +43 -10
- package/components/Calendar/utils.js.map +1 -1
- package/components/Card/CardAction.js +6 -6
- package/components/Card/CardStatic.js +3 -3
- package/components/Card/components/CardContent/CardContent.js +2 -2
- package/components/Card/components/CardContent/components/CardContentBody.js +2 -2
- package/components/Card/components/CardContent/components/CardContentFooter.js +2 -2
- package/components/Card/components/CardContent/components/CardContentHeader.js +2 -2
- package/components/Card/components/CardMedia.js +2 -2
- package/components/Card/enums.js +1 -0
- package/components/Card/enums.js.map +1 -1
- package/components/Card/utils.js +2 -1
- package/components/Card/utils.js.map +1 -1
- package/components/Carousel/Carousel.js +2 -2
- package/components/Carousel/CarouselButton.js +2 -2
- package/components/Carousel/CarouselIndicators.js +2 -2
- package/components/Carousel/CarouselItem.js +2 -2
- package/components/Carousel/CarouselTrack.js +2 -2
- package/components/Carousel/CarouselViewport.js +2 -2
- package/components/CarouselExtended/CarouselExtended.js +2 -2
- package/components/Checkbox/Checkbox.js +11 -11
- package/components/Checkbox/CheckboxXGroup.js +9 -9
- package/components/Checkbox/CheckboxYGroup.js +2 -2
- package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +2 -2
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +2 -2
- package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +2 -2
- package/components/Chip/Chip.js +2 -2
- package/components/Chip/ChipClearButton.js +2 -2
- package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
- package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
- package/components/Chip/ChipDropdownArrow.js +3 -3
- package/components/Chip/ChipIcon.js +1 -1
- package/components/Chip/ChipMultiselect.js +2 -2
- package/components/Chip/ChipOptions.js +2 -2
- package/components/Chip/ChipSelect/ChipSelect.js +2 -2
- package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
- package/components/Chip/ChipSort.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggest.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +2 -2
- package/components/Chip/ChipSuggest/ChipSuggestTarget.js +1 -1
- package/components/Chip/ChipSuggest/desktop/ChipSuggestDesktopDropdownField.js +1 -1
- package/components/Chip/index.js +1 -1
- package/components/ChipGroup/ChipGroup.js +8 -8
- package/components/Col/Col.js +133 -133
- package/components/CollapsibleTree/CollapsibleTree.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +2 -2
- package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +5 -5
- package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +2 -2
- package/components/Confirm/Confirm.js +2 -2
- package/components/Confirm/components/ConfirmCloseButton.js +2 -2
- package/components/Confirm/components/ConfirmContent.js +2 -2
- package/components/Confirm/components/ConfirmContentTitle.js +2 -2
- package/components/Confirm/components/ConfirmControls.js +2 -2
- package/components/DateField/utils.js +2 -2
- package/components/DateField/utils.js.map +1 -1
- package/components/DatePickerExtended/DatePickerExtended.js +2 -2
- package/components/DatePickerExtended/DatePickerExtendedDropdown.js +2 -2
- package/components/DateRange/DateRange.js +4 -4
- package/components/DesignTokens/DesignTokenUtils.js +26 -21
- package/components/DesignTokens/DesignTokenUtils.js.map +1 -1
- package/components/DesignTokens/components/Calendar.js +2 -2
- package/components/DesignTokens/components/Calendar.js.map +1 -1
- package/components/DesignTokens/components/StatusTracker.js +8 -2
- package/components/DesignTokens/components/StatusTracker.js.map +1 -1
- package/components/Divider/Divider.js +18 -18
- package/components/DocumentNumberEdit/DocumentNumberEdit.js +4 -4
- package/components/Dropdown/Dropdown.js +14 -7
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/desktop/DropdownDesktop.js +21 -25
- package/components/Dropdown/desktop/DropdownDesktop.js.map +1 -1
- package/components/Dropdown/desktop/DropdownList.js +38 -73
- package/components/Dropdown/desktop/DropdownList.js.map +1 -1
- package/components/Dropdown/desktop/DropdownListItem.js +2 -2
- package/components/Dropdown/desktop/index.js +1 -1
- package/components/Dropdown/desktop/utils.js +34 -0
- package/components/Dropdown/desktop/utils.js.map +1 -0
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/mobile/DropdownMobile.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileBody.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileClose.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileFooter.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileHeader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileInner.js +6 -4
- package/components/Dropdown/mobile/DropdownMobileInner.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileInput.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileList.js +3 -3
- package/components/Dropdown/mobile/DropdownMobileList.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileListItem.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileListItem.js.map +1 -1
- package/components/Dropdown/mobile/DropdownMobileLoader.js +2 -2
- package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +2 -2
- package/components/Ellipsis/Ellipsis.js +4 -4
- package/components/EmptyView/EmptyView.js +5 -5
- package/components/ExpandAnimation/ExpandAnimation.js +2 -2
- package/components/FocusTrapExtended/FocusTrapExtended.js +21 -9
- package/components/FocusTrapExtended/FocusTrapExtended.js.map +1 -1
- package/components/Footer/Footer.js +1 -1
- package/components/Footer/components/FooterDescription.js +2 -2
- package/components/Footer/components/FooterDescriptionContent.js +2 -2
- package/components/Footer/components/FooterDescriptionControls.js +2 -2
- package/components/FormField/FormField.js +21 -21
- package/components/FormField/FormField.js.map +1 -1
- package/components/FormField/FormFieldContext.js.map +1 -1
- package/components/FormField/FormFieldDescriptionContext.js.map +1 -1
- package/components/FormField/components/FormFieldClear.js +2 -2
- package/components/FormField/components/FormFieldClear.js.map +1 -1
- package/components/FormField/components/FormFieldCounter.js +5 -4
- package/components/FormField/components/FormFieldCounter.js.map +1 -1
- package/components/FormField/components/FormFieldDescription.js +14 -6
- package/components/FormField/components/FormFieldDescription.js.map +1 -1
- package/components/FormField/components/FormFieldInput.js +8 -9
- package/components/FormField/components/FormFieldInput.js.map +1 -1
- package/components/FormField/components/FormFieldLabel.js +11 -12
- package/components/FormField/components/FormFieldLabel.js.map +1 -1
- package/components/FormField/components/FormFieldMaskedInput.js +7 -7
- package/components/FormField/components/FormFieldPostfix.js +6 -30
- package/components/FormField/components/FormFieldPostfix.js.map +1 -1
- package/components/FormField/components/FormFieldPrefix.js +6 -30
- package/components/FormField/components/FormFieldPrefix.js.map +1 -1
- package/components/FormField/components/FormFieldTarget.js +9 -9
- package/components/FormField/components/FormFieldTextarea.js +5 -5
- package/components/FormField/components/useFormFieldAffixWidth.js +33 -0
- package/components/FormField/components/useFormFieldAffixWidth.js.map +1 -0
- package/components/FormField/components/utils.js +9 -1
- package/components/FormField/components/utils.js.map +1 -1
- package/components/FormField/consts.js.map +1 -1
- package/components/FormField/enums.js.map +1 -1
- package/components/FormField/index.js +2 -3
- package/components/Gap/Gap.js +9 -9
- package/components/Header/Header.js +1 -1
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +2 -2
- package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +2 -2
- package/components/Header/components/HeaderSubheader/HeaderSubheader.js +3 -3
- package/components/Header/components/HeaderTabs/HeaderTabs.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsContent.js +2 -2
- package/components/Header/components/HeaderTabs/HeaderTabsControls.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitle.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleContent.js +2 -2
- package/components/Header/components/HeaderTitle/HeaderTitleControls.js +2 -2
- package/components/HelpBox/HelpBox.js +2 -2
- package/components/IconWrapper/IconWrapper.js +8 -8
- package/components/IconWrapper/IconWrapper.js.map +1 -1
- package/components/ImageGallery/ImageGallery.js +1 -1
- package/components/ImageGalleryExtended/ImageGalleryExtended.js +3 -3
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +4 -4
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +2 -2
- package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +2 -2
- package/components/ImageGalleryExtended/components/index.js +1 -1
- package/components/ImageGalleryExtended/index.js +1 -1
- package/components/Island/Island.js +4 -4
- package/components/Island/Island.js.map +1 -1
- package/components/Island/components/IslandBody.js +3 -2
- package/components/Island/components/IslandBody.js.map +1 -1
- package/components/Island/components/IslandFooter.js +8 -5
- package/components/Island/components/IslandFooter.js.map +1 -1
- package/components/Island/components/IslandHeader.js +8 -5
- package/components/Island/components/IslandHeader.js.map +1 -1
- package/components/Island/enums.js.map +1 -1
- package/components/Island/utils.js +1 -1
- package/components/IslandAccordion/IslandAccordion.js +3 -3
- package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
- package/components/IslandAccordion/components/IslandAccordionFooter.js +2 -2
- package/components/IslandAccordion/components/IslandAccordionItem.js +3 -3
- package/components/IslandWidget/IslandWidget.js +5 -5
- package/components/IslandWidget/components/IslandWidgetBody.js +2 -2
- package/components/IslandWidget/components/IslandWidgetExtraFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooter.js +2 -2
- package/components/IslandWidget/components/IslandWidgetFooterContent.js +1 -1
- package/components/IslandWidget/components/IslandWidgetFooterControls.js +1 -1
- package/components/IslandWidget/components/IslandWidgetHeader.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderContent.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderControls.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +2 -2
- package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +2 -2
- package/components/IslandWidget/components/IslandWidgetWrapper.js +2 -2
- package/components/KeyDownListener/ComposedKeyDownListener.js +7 -8
- package/components/KeyDownListener/ComposedKeyDownListener.js.map +1 -1
- package/components/KeyDownListener/KeyDownListener.js +3 -4
- package/components/KeyDownListener/KeyDownListener.js.map +1 -1
- package/components/LightBox/LightBox.js +6 -6
- package/components/LightBox/LightBoxContent.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxArrow.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxClose.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxControls.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxNext.js +2 -2
- package/components/LightBox/LightBoxControls/LightBoxPrev.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +13 -14
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js.map +1 -1
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +2 -2
- package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +1 -1
- package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +4 -4
- package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +4 -4
- package/components/LightBox/LightBoxViewManager/LightBoxViewManager.js +1 -1
- package/components/Link/Link.js +6 -6
- package/components/List/List.js +4 -4
- package/components/List/ListSortable.js +1 -1
- package/components/List/components/ListActionItem.js +2 -2
- package/components/List/components/ListEmptyState.js +2 -2
- package/components/List/components/ListItem.js +1 -1
- package/components/List/components/ListItemContent.js +5 -5
- package/components/List/components/ListItemControls.js +2 -2
- package/components/List/components/ListItemControlsButton.js +2 -2
- package/components/List/components/ListItemControlsButtonDropdown.js +2 -2
- package/components/List/components/ListItemLoading.js +2 -2
- package/components/List/components/ListItemSelectable.js +7 -7
- package/components/List/components/ListItemTailLeft.js +2 -2
- package/components/List/components/ListItemTailRight.js +2 -2
- package/components/List/components/ListSortableItem.js +3 -3
- package/components/List/components/ListSortableItemControls.js +2 -2
- package/components/List/components/ListSortableItemTarget.js +5 -5
- package/components/List/components/ListTableItem.js +4 -4
- package/components/List/index.js +1 -1
- package/components/ListMaster/ListMaster.js +1 -1
- package/components/ListMaster/components/ListMasterBody.js +1 -1
- package/components/ListMaster/components/ListMasterChipGroup.js +2 -2
- package/components/ListMaster/components/ListMasterFooter.js +2 -2
- package/components/ListMaster/components/ListMasterFooterControls.js +2 -2
- package/components/ListMaster/components/ListMasterFooterDescription.js +2 -2
- package/components/ListMaster/components/ListMasterHeader.js +3 -3
- package/components/ListMaster/components/SelectionControls.js +3 -3
- package/components/Loader/LoaderMiddle/LoaderMiddle.js +11 -11
- package/components/Loader/LoaderMiddle/LoaderMiddle.js.map +1 -1
- package/components/Loader/LoaderSmall/LoaderSmall.js +11 -11
- package/components/LoaderScreen/LoaderScreen.js +13 -12
- package/components/LoaderScreen/LoaderScreen.js.map +1 -1
- package/components/Marker/Marker.js +2 -2
- package/components/Marker/utils.js +1 -1
- package/components/MarkerStatus/MarkerStatus.js +8 -8
- package/components/ModalWindow/ModalWindow.js +2 -2
- package/components/ModalWindow/components/ModalWindowBody.js +2 -2
- package/components/ModalWindow/components/ModalWindowClose.js +1 -1
- package/components/ModalWindow/components/ModalWindowContent.js +2 -2
- package/components/ModalWindow/components/ModalWindowHeader.js +2 -2
- package/components/ModalWindow/components/ModalWindowViewManager.js +2 -2
- package/components/MonthYearField/utils.js +2 -1
- package/components/MonthYearField/utils.js.map +1 -1
- package/components/MonthYearRange/MonthYearRange.js +4 -4
- package/components/MultiselectField/components/MultiselectFieldDropdown.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +6 -6
- package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +2 -2
- package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +2 -2
- package/components/Notification/Notification.js +3 -3
- package/components/Notification/NotificationGrouped.js +1 -1
- package/components/Notification/components/NotificationBody.js +1 -1
- package/components/Notification/components/NotificationBodyList.js +2 -2
- package/components/Notification/components/NotificationClose.js +1 -1
- package/components/Notification/components/NotificationFooter.js +1 -1
- package/components/Notification/components/NotificationGroupedFooter.js +2 -2
- package/components/Notification/components/NotificationHeader.js +1 -1
- package/components/Notification/components/NotificationIcon.js +1 -1
- package/components/Notification/components/NotificationTime.js +1 -1
- package/components/OrderedList/OrderedList.js +3 -3
- package/components/OrderedList/OrderedListItem.js +3 -3
- package/components/Overlay/Overlay.js +2 -2
- package/components/Overlay/OverlayMask.js +2 -2
- package/components/Overlay/OverlayPanel.js +2 -2
- package/components/Page/Page.js +2 -2
- package/components/Page/components/BodyPage.js +4 -4
- package/components/Page/components/FooterPage.js +2 -2
- package/components/Page/components/HeaderPage.js +2 -2
- package/components/Pagination/components/PaginationExtended.js +3 -3
- package/components/Pagination/components/PaginationNavigation.js +1 -1
- package/components/Pagination/components/PaginationNavigation.js.map +1 -1
- package/components/Pagination/components/PaginationNavigationButton.js +2 -2
- package/components/Pagination/components/PaginationNavigationExtended.js +2 -2
- package/components/Pagination/components/PaginationPageButton.js +3 -3
- package/components/Pagination/components/PaginationPageEllipsis.js +2 -2
- package/components/Pagination/components/PaginationSelect.js +3 -3
- package/components/Pagination/{utils/paginationUtils.js → utils.js} +2 -2
- package/components/Pagination/utils.js.map +1 -0
- package/components/Portal/Portal.js.map +1 -1
- package/components/Radio/Radio.js +10 -10
- package/components/Radio/RadioXGroup.js +9 -9
- package/components/Radio/RadioYGroup.js +2 -2
- package/components/Row/Row.js +5 -5
- package/components/SMSField/SMSField.js +3 -3
- package/components/SMSField/components/RefreshIcon.js +2 -2
- package/components/SMSField/components/SMSFieldInput.js +2 -2
- package/components/SMSField/components/SMSFieldRefresh.js +2 -2
- package/components/SMSField/components/SMSFieldSubmit.js +2 -2
- package/components/SMSField/components/SMSFieldTooltip.js +1 -1
- package/components/SegmentedControl/SegmentedControl.js +10 -10
- package/components/SegmentedControl/SegmentedControlSegment.js +4 -4
- package/components/SelectExtendedField/SelectExtendedField.js +3 -2
- package/components/SelectExtendedField/SelectExtendedField.js.map +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdown.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldDropdownDefault.js +1 -1
- package/components/SelectExtendedField/components/SelectExtendedFieldTarget.js +8 -8
- package/components/SelectField/SelectField.js +2 -2
- package/components/Skeleton/Skeleton.js +5 -5
- package/components/SliderExtended/SliderExtended.js +3 -3
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +7 -6
- package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js.map +1 -1
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +2 -2
- package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +2 -2
- package/components/SliderExtended/components/SliderExtendedRail.js +2 -2
- package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +5 -5
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +8 -7
- package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js.map +1 -1
- package/components/SmallInput/SmallInput.js +2 -2
- package/components/Spoiler/Spoiler.js +11 -11
- package/components/StatusTracker/StatusTracker.js +8 -7
- package/components/StatusTracker/StatusTracker.js.map +1 -1
- package/components/StatusTracker/components/StatusTrackerAlert.js +2 -2
- package/components/StatusTracker/components/StatusTrackerBody.js +2 -2
- package/components/StatusTracker/components/StatusTrackerButton.js +2 -2
- package/components/StatusTracker/components/StatusTrackerDescription.js +2 -2
- package/components/StatusTracker/components/StatusTrackerFooter.js +2 -2
- package/components/StatusTracker/components/StatusTrackerHeader.js +2 -2
- package/components/StatusTracker/components/StatusTrackerMedia.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatus.js +2 -2
- package/components/StatusTracker/components/StatusTrackerStatusGroup.js +2 -2
- package/components/StatusTracker/components/StatusTrackerSum.js +2 -2
- package/components/StatusTracker/components/StatusTrackerTitle.js +2 -2
- package/components/Step/Step.js +11 -11
- package/components/Stepper/Stepper.js +9 -9
- package/components/Stepper/StepperExtended.js +2 -2
- package/components/Stepper/StepperStep.js +3 -3
- package/components/Stepper/StepperStepArrowBorder.js +1 -1
- package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
- package/components/Suggest/useSuggest.js +1 -1
- package/components/SuggestField/SuggestField.js +1 -1
- package/components/SuggestField/desktop/SuggestFieldDesktop.js +2 -2
- package/components/SuggestField/desktop/SuggestFieldDesktopDropdown.js +1 -1
- package/components/SuggestField/index.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobile.js +1 -1
- package/components/SuggestField/mobile/SuggestFieldMobileDropdown.js +2 -2
- package/components/SuggestField/mobile/SuggestFieldMobileDropdownHint.js +1 -1
- package/components/SuggestField/mobile/index.js +1 -1
- package/components/SwipeableArea/SwipeableArea.js +9 -9
- package/components/Table/ChipPanel.js +2 -2
- package/components/Table/ChipPanelLinks.js +2 -2
- package/components/Table/FilterPanel.js +3 -3
- package/components/Table/MasterTable.js +3 -3
- package/components/Table/NoColumns.js +3 -3
- package/components/Table/PaginationPanel.js +3 -3
- package/components/Table/TableBasic/TableBasic.js +2 -2
- package/components/Table/TableBasic/components/TableBasicBody.js +2 -2
- package/components/Table/TableBasic/components/TableBasicHeader.js +2 -2
- package/components/Table/TableBasic/components/TableBasicRow.js +2 -2
- package/components/Table/TableBasicSettings/TableBasicSettings.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +3 -3
- package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +2 -2
- package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +2 -2
- package/components/Table/TableFooter/TableFooter.js +2 -2
- package/components/Table/TableFooter/components/TableFooterSummary.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummaryAmount.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectAllButton.js +1 -1
- package/components/Table/TableFooter/components/TableFooterSummarySelectedCount.js +1 -1
- package/components/Table/utils.js +1 -1
- package/components/Tabs/Tabs.js +6 -6
- package/components/TabsExtended/TabsExtended.js +3 -3
- package/components/TabsExtended/components/TabsExtendedContent.js +2 -2
- package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTab.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabButton.js +2 -2
- package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +2 -2
- package/components/TabsExtended/utils.js +1 -1
- package/components/TabsLine/TabsLine.js +2 -2
- package/components/TabsLine/components/TabsLineDesktop.js +2 -2
- package/components/TabsLine/components/TabsLineDropdown.js +3 -3
- package/components/TabsLine/components/TabsLineItem.js +2 -2
- package/components/TabsLine/components/TabsLineMobile.js +2 -2
- package/components/Tag/Tag.js +6 -6
- package/components/TagColor/TagColor.js +11 -11
- package/components/TagGroup/TagGroup.js +5 -5
- package/components/ThemeProvider/ETriplexNextTheme.js.map +1 -1
- package/components/ThemeProvider/ThemeProvider.js +6 -4
- package/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/components/ThemeProvider/ThemeProviderContext.js.map +1 -1
- package/components/ThemeProvider/components/ThemeProviderView.js +7 -10
- package/components/ThemeProvider/components/ThemeProviderView.js.map +1 -1
- package/components/ThemeProvider/useToken.js.map +1 -1
- package/components/Tooltip/Tooltip.js +49 -52
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/TootlipContext.js.map +1 -1
- package/components/Tooltip/components/common/TooltipBody.js +2 -2
- package/components/Tooltip/components/common/TooltipLink.js +8 -19
- package/components/Tooltip/components/common/TooltipLink.js.map +1 -1
- package/components/Tooltip/components/common/TooltipTarget.js.map +1 -1
- package/components/Tooltip/components/common/TooltipXButton.js +1 -1
- package/components/Tooltip/components/desktop/TooltipDesktop.js +24 -12
- package/components/Tooltip/components/desktop/TooltipDesktop.js.map +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +26 -25
- package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js.map +1 -1
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +9 -18
- package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js.map +1 -1
- package/components/Tooltip/components/mobile/TooltipMobile.js +11 -7
- package/components/Tooltip/components/mobile/TooltipMobile.js.map +1 -1
- package/components/Tooltip/components/mobile/components/TooltipMobileHeader.js +2 -2
- package/components/Tooltip/components/mobile/components/TooltipMobileHeader.js.map +1 -1
- package/components/Tooltip/enums.js.map +1 -1
- package/components/Tooltip/utils/Positioning.js +18 -17
- package/components/Tooltip/utils/Positioning.js.map +1 -1
- package/components/Tooltip/utils/useTooltipTheme.js +40 -12
- package/components/Tooltip/utils/useTooltipTheme.js.map +1 -1
- package/components/TopOverlay/TopOverlay.js +7 -7
- package/components/TreeView/TreeView.js +2 -2
- package/components/TreeView/components/TreeViewGroup.js +1 -1
- package/components/TreeView/components/TreeViewNode.js +2 -2
- package/components/Typography/Caption.js +8 -8
- package/components/Typography/CodeText.js +3 -3
- package/components/Typography/Text.js +10 -10
- package/components/Typography/Title.js +11 -11
- package/components/Typography/Title.js.map +1 -1
- package/components/Typography/constants.js +1 -1
- package/components/UnorderedList/UnorderedList.js +3 -3
- package/components/UnorderedList/UnorderedListItem.js +3 -3
- package/components/UploadZone/UploadZone.js +3 -3
- package/components/UploadZone/components/UploadZoneInput.js +2 -2
- package/components/UploadZone/index.js +1 -1
- package/components/WindowResizeListener/WindowResizeListener.js +1 -1
- package/components/index.js +7 -8
- package/consts/DateConst.js.map +1 -1
- package/index.d.ts +254 -110
- package/index.js +7 -8
- package/package.json +1 -1
- package/styles/triplex-next.css +2949 -2939
- package/utils/amountUtils.js +1 -1
- package/chunks/CalendarViewItem-AChLlz4N.js.map +0 -1
- package/chunks/Card.module-CZ1_wRdI.js +0 -30
- package/chunks/Card.module-CZ1_wRdI.js.map +0 -1
- package/chunks/Carousel.module-COe08s01.js +0 -30
- package/chunks/Carousel.module-COe08s01.js.map +0 -1
- package/chunks/CheckboxTreeExtended.module-CsB5Xz5K.js +0 -24
- package/chunks/CheckboxTreeExtended.module-CsB5Xz5K.js.map +0 -1
- package/chunks/Chip-DGvjOx0y.js.map +0 -1
- package/chunks/Confirm.module-CEJR1txO.js +0 -24
- package/chunks/Confirm.module-CEJR1txO.js.map +0 -1
- package/chunks/DropdownListItem-COR0eOzM.js.map +0 -1
- package/chunks/DropdownMobile.module-DUiUSr13.js +0 -40
- package/chunks/DropdownMobile.module-DUiUSr13.js.map +0 -1
- package/chunks/Footer.module-DUTwBl0x.js +0 -12
- package/chunks/Footer.module-DUTwBl0x.js.map +0 -1
- package/chunks/HeaderLayoutSidebar.module-o5cCUCGl.js.map +0 -1
- package/chunks/HeaderTabs.module-Ch5Mbe7q.js +0 -12
- package/chunks/HeaderTabs.module-Ch5Mbe7q.js.map +0 -1
- package/chunks/HeaderTitle.module-CUVjwVW7.js.map +0 -1
- package/chunks/ImageGalleryExtendedMain.module-BMoLBevi.js +0 -28
- package/chunks/ImageGalleryExtendedMain.module-BMoLBevi.js.map +0 -1
- package/chunks/IslandAccordion.module-YxGUkwAy.js +0 -44
- package/chunks/IslandAccordion.module-YxGUkwAy.js.map +0 -1
- package/chunks/IslandWidgetFooter.module-Bk3x1llO.js +0 -12
- package/chunks/IslandWidgetFooter.module-Bk3x1llO.js.map +0 -1
- package/chunks/IslandWidgetHeader.module-BcrHca9Y.js +0 -20
- package/chunks/IslandWidgetHeader.module-BcrHca9Y.js.map +0 -1
- package/chunks/LightBoxControls.module-DisqspyG.js +0 -26
- package/chunks/LightBoxControls.module-DisqspyG.js.map +0 -1
- package/chunks/LightBoxSideOverlayClose.module-BVuB53vM.js.map +0 -1
- package/chunks/ListItemTail.module-B24d99yc.js +0 -18
- package/chunks/ListItemTail.module-B24d99yc.js.map +0 -1
- package/chunks/ListMasterFooter.module-XwfScyft.js +0 -14
- package/chunks/ListMasterFooter.module-XwfScyft.js.map +0 -1
- package/chunks/ModalWindow.module-CAccCwuD.js +0 -28
- package/chunks/ModalWindow.module-CAccCwuD.js.map +0 -1
- package/chunks/Notification.module-yXlyaoAB.js +0 -34
- package/chunks/Notification.module-yXlyaoAB.js.map +0 -1
- package/chunks/Overlay.module-gnmqM0Mg.js +0 -30
- package/chunks/Overlay.module-gnmqM0Mg.js.map +0 -1
- package/chunks/Page.module-CyuFcFEq.js +0 -15
- package/chunks/Page.module-CyuFcFEq.js.map +0 -1
- package/chunks/SMSField.module-By9uV96A.js +0 -26
- package/chunks/SMSField.module-By9uV96A.js.map +0 -1
- package/chunks/SliderExtendedMarks.module-DwGOsapl.js +0 -24
- package/chunks/SliderExtendedMarks.module-DwGOsapl.js.map +0 -1
- package/chunks/StatusTracker.module-DSfmXNxw.js +0 -42
- package/chunks/StatusTracker.module-DSfmXNxw.js.map +0 -1
- package/chunks/TableFooter.module-DM5tgc_b.js +0 -22
- package/chunks/TableFooter.module-DM5tgc_b.js.map +0 -1
- package/chunks/TabsExtended.module-91rJFYMk.js +0 -26
- package/chunks/TabsExtended.module-91rJFYMk.js.map +0 -1
- package/chunks/TabsLine.module-DAe_P2wh.js +0 -36
- package/chunks/TabsLine.module-DAe_P2wh.js.map +0 -1
- package/chunks/TooltipDesktop.module-BW_tN5pN.js +0 -32
- package/chunks/TooltipDesktop.module-BW_tN5pN.js.map +0 -1
- package/chunks/TreeView.module-BheprFto.js +0 -12
- package/chunks/TreeView.module-BheprFto.js.map +0 -1
- package/chunks/utils-BXgC_I8P.js.map +0 -1
- package/chunks/vendor-DKrjZZwJ.js +0 -36109
- package/chunks/vendor-DKrjZZwJ.js.map +0 -1
- package/components/Carousel/__tests__/utils.js +0 -92
- package/components/Carousel/__tests__/utils.js.map +0 -1
- package/components/Pagination/utils/paginationUtils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport moment from \"moment\";\nimport { uniqueId } from \"lodash-es\";\nimport { dateFormatYYYYMMDD, globalLimitRange } from \"../../consts/DateConst\";\nimport { EComponentSize } from \"../../enums\";\nimport { ICalendarProps, TPickedDate } from \"./types\";\nimport { ECalendarPickType, ECalendarViewMode } from \"./enums\";\nimport { CalendarContext } from \"./CalendarContext\";\nimport { CalendarControls } from \"./components/CalendarControls\";\nimport { CalendarView } from \"./components/CalendarView\";\nimport { CalendarFooter } from \"./components/CalendarFooter\";\nimport { CalendarFooterButton } from \"./components/CalendarFooterButton\";\nimport { formatDate, getHeader, parsePickedDate } from \"./utils\";\nimport styles from \"./styles/Calendar.module.less\";\n\n/** Состояния компонента Calendar. */\ninterface ICalendarState {\n /** Вид отображения. */\n viewMode: ECalendarViewMode;\n /** Дата, являющая курсором для навигации по интерфейсу. */\n viewDate: moment.Moment;\n /** Выбранная дата в формате Moment. */\n pickedDate: TPickedDate;\n /** Заголовок календаря. */\n header: string;\n}\n\n/** Календарь. */\nexport class Calendar extends React.PureComponent<ICalendarProps, ICalendarState> {\n public static defaultProps = {\n format: dateFormatYYYYMMDD,\n limitRange: globalLimitRange,\n pickType: ECalendarPickType.DATE,\n };\n\n static contextType = CalendarContext;\n declare context: React.ContextType<typeof CalendarContext>;\n\n // Уникальный идентификатор для связи периода с таблицей.\n private periodId = `calendar-period-${uniqueId()}`;\n\n constructor(props: Readonly<ICalendarProps>) {\n super(props);\n\n const { format, pickType, reversedPick } = this.props;\n const pickedDate = parsePickedDate(this.props.pickedDate, format);\n const viewDate = this.getInitialViewDate(pickedDate);\n\n let viewMode: ECalendarViewMode;\n\n if (reversedPick) {\n viewMode = ECalendarViewMode.YEARS;\n } else if (pickType == ECalendarPickType.MONTH_YEAR) {\n viewMode = ECalendarViewMode.MONTHS;\n } else {\n viewMode = ECalendarViewMode.DAYS;\n }\n\n const header = formatDate(viewDate, viewMode);\n\n this.state = {\n header,\n pickedDate,\n viewDate,\n viewMode,\n };\n }\n\n /** Получить изначальную дату для навигации. */\n private getInitialViewDate(pickedDate: TPickedDate) {\n const { defaultViewDate, format, limitRange } = this.props;\n\n if (pickedDate && pickedDate.isValid()) {\n return pickedDate.clone();\n }\n\n if (defaultViewDate) {\n const parsedDate = parsePickedDate(defaultViewDate, format);\n\n if (parsedDate && parsedDate.isValid()) {\n return parsedDate.clone();\n }\n }\n\n const todayDate = moment().startOf(\"day\");\n\n if (limitRange) {\n if (limitRange.dateFrom && todayDate.isBefore(limitRange.dateFrom)) {\n return limitRange.dateFrom.clone();\n } else if (limitRange.dateTo && todayDate.isAfter(limitRange.dateTo)) {\n return limitRange.dateTo.clone();\n }\n }\n\n return todayDate;\n }\n\n public componentDidUpdate(prevProps: ICalendarProps, prevState: ICalendarState): void {\n const { format } = this.props;\n const { viewDate } = this.state;\n const { viewDate: prevViewDate } = prevState;\n\n const pickedDateState = parsePickedDate(this.props.pickedDate, format);\n const pickedDateValid = pickedDateState?.isValid();\n const resultDate = pickedDateValid ? pickedDateState : prevViewDate;\n\n const prevPickedDate = parsePickedDate(prevProps.pickedDate, format);\n\n if (!(!pickedDateValid || prevPickedDate?.isSame(resultDate, \"day\"))) {\n let newDateContext = {};\n\n if (viewDate && !viewDate.isSame(pickedDateState, \"month\")) {\n newDateContext = {\n currentTab: ECalendarViewMode.DAYS,\n header: getHeader(resultDate),\n viewDate: resultDate!.clone(),\n };\n }\n\n this.setState({\n ...newDateContext,\n pickedDate: pickedDateState,\n });\n }\n }\n\n public render() {\n const {\n format,\n pickType,\n limitRange,\n markedDays,\n disabledDays,\n dayHtmlAttributes,\n monthHtmlAttributes,\n yearHtmlAttributes,\n prevButtonProps,\n nextButtonProps,\n viewButtonProps,\n todayButtonProps,\n } = this.props;\n const { viewMode, viewDate, header } = this.state;\n const classNames = clsx(\n styles.calendar,\n this.props.adaptiveMode\n ? styles.adaptive\n : (viewMode !== ECalendarViewMode.DAYS || todayButtonProps) && styles.extraBottom,\n );\n\n const pickedDate = parsePickedDate(this.props.pickedDate, format);\n\n return (\n <div className={classNames} data-tx={process.env.npm_package_version}>\n <CalendarContext.Provider\n value={{\n format: format,\n limitRange: limitRange!,\n pickType: pickType!,\n markedDays: markedDays,\n disabledDays: disabledDays,\n viewDate: viewDate,\n viewMode: viewMode,\n periodId: this.periodId,\n onDateSelect: this.handleDateSelect,\n onPageChange: this.handlePageChange,\n onViewChange: this.handleViewChange,\n }}\n >\n <CalendarControls\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n viewButtonProps={viewButtonProps}\n >\n {header}\n </CalendarControls>\n <CalendarView\n pickedDate={pickedDate}\n dayHtmlAttributes={dayHtmlAttributes}\n monthHtmlAttributes={monthHtmlAttributes}\n yearHtmlAttributes={yearHtmlAttributes}\n />\n {todayButtonProps && this.renderFooter()}\n </CalendarContext.Provider>\n </div>\n );\n }\n\n /** Обработчик выбора даты. */\n private handleDateSelect = (date: moment.Moment) => {\n this.props.onDateChange(date);\n };\n\n /** Обработчик смены страницы. */\n private handlePageChange = (nextViewDate: moment.Moment, viewMode: ECalendarViewMode) => {\n const { onPageChange } = this.props;\n\n this.setState({\n header: formatDate(nextViewDate, viewMode),\n viewDate: nextViewDate,\n });\n\n onPageChange?.(nextViewDate, viewMode);\n };\n\n /** Обработчик изменения вида отображения. */\n private handleViewChange = (nextViewDate: moment.Moment, nextViewMode: ECalendarViewMode) => {\n const { onViewChange } = this.props;\n\n this.setState({\n header: formatDate(nextViewDate, nextViewMode),\n viewDate: nextViewDate,\n viewMode: nextViewMode,\n });\n\n onViewChange?.(nextViewDate, nextViewMode);\n };\n\n /** Рендер футера. */\n private renderFooter = () => {\n const { pickType, adaptiveMode, yesterdayButtonProps, todayButtonProps, tomorrowButtonProps } = this.props;\n const { viewDate, viewMode } = this.state;\n let todayDate: moment.Moment;\n let currentPeriodSelected: boolean;\n\n if (pickType === ECalendarPickType.DATE) {\n todayDate = moment().startOf(\"day\");\n currentPeriodSelected = viewMode === ECalendarViewMode.DAYS && viewDate.isSame(todayDate, \"month\");\n } else {\n todayDate = moment().startOf(\"month\");\n currentPeriodSelected = viewMode === ECalendarViewMode.MONTHS && viewDate.isSame(todayDate, \"year\");\n }\n\n const needShowAsideButtons = currentPeriodSelected && viewMode === ECalendarViewMode.DAYS;\n const buttonSize = adaptiveMode ? EComponentSize.MD : EComponentSize.SM;\n\n return (\n <CalendarFooter>\n {/* Вчера */}\n {needShowAsideButtons && yesterdayButtonProps && (\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate.clone().subtract(1, \"day\")}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof yesterdayButtonProps === \"function\"\n ? yesterdayButtonProps(viewMode)\n : yesterdayButtonProps)}\n />\n )}\n {/* Сегодня / К текущей дате */}\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof todayButtonProps === \"function\"\n ? todayButtonProps({ viewMode, currentPeriodSelected })\n : todayButtonProps)}\n />\n {/* Завтра */}\n {needShowAsideButtons && tomorrowButtonProps && (\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate.clone().add(1, \"day\")}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof tomorrowButtonProps === \"function\"\n ? tomorrowButtonProps(viewMode)\n : tomorrowButtonProps)}\n />\n )}\n </CalendarFooter>\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Calendar.js","sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport moment from \"moment\";\nimport { uniqueId } from \"lodash-es\";\nimport { dateFormatYYYYMMDD, globalLimitRange } from \"../../consts/DateConst\";\nimport { EComponentSize } from \"../../enums\";\nimport { ICalendarProps, TPickedDate } from \"./types\";\nimport { ECalendarPickType, ECalendarViewMode } from \"./enums\";\nimport { CalendarContext } from \"./CalendarContext\";\nimport { CalendarControls } from \"./components/CalendarControls\";\nimport { CalendarView } from \"./components/CalendarView\";\nimport { CalendarFooter } from \"./components/CalendarFooter\";\nimport { CalendarFooterButton } from \"./components/CalendarFooterButton\";\nimport { formatDate, parsePickedDate } from \"./utils\";\nimport styles from \"./styles/Calendar.module.less\";\n\n/** Состояния компонента Calendar. */\ninterface ICalendarState {\n /** Вид отображения. */\n viewMode: ECalendarViewMode;\n /** Дата, являющая курсором для навигации по интерфейсу. */\n viewDate: moment.Moment;\n /** Выбранная дата в формате Moment. */\n pickedDate: TPickedDate;\n /** Заголовок календаря. */\n header: string;\n}\n\n/** Календарь. */\nexport class Calendar extends React.PureComponent<ICalendarProps, ICalendarState> {\n public static defaultProps = {\n format: dateFormatYYYYMMDD,\n limitRange: globalLimitRange,\n pickType: ECalendarPickType.DATE,\n };\n\n static contextType = CalendarContext;\n declare context: React.ContextType<typeof CalendarContext>;\n\n // Уникальный идентификатор для связи периода с таблицей.\n private periodId = `calendar-period-${uniqueId()}`;\n\n constructor(props: Readonly<ICalendarProps>) {\n super(props);\n\n const { format, pickType, reversedPick } = this.props;\n const pickedDate = parsePickedDate(this.props.pickedDate, format);\n const viewDate = this.getInitialViewDate(pickedDate);\n\n let viewMode: ECalendarViewMode;\n\n if (reversedPick) {\n viewMode = ECalendarViewMode.YEARS;\n } else if (pickType == ECalendarPickType.MONTH_YEAR) {\n viewMode = ECalendarViewMode.MONTHS;\n } else {\n viewMode = ECalendarViewMode.DAYS;\n }\n\n const header = formatDate(viewDate, viewMode);\n\n this.state = {\n header,\n pickedDate,\n viewDate,\n viewMode,\n };\n }\n\n /** Получить изначальную дату для навигации. */\n private getInitialViewDate(pickedDate: TPickedDate) {\n const { defaultViewDate, format, limitRange } = this.props;\n\n if (pickedDate && pickedDate.isValid()) {\n return pickedDate.clone();\n }\n\n if (defaultViewDate) {\n const parsedDate = parsePickedDate(defaultViewDate, format);\n\n if (parsedDate && parsedDate.isValid()) {\n return parsedDate.clone();\n }\n }\n\n const todayDate = moment().startOf(\"day\");\n\n if (limitRange) {\n if (limitRange.dateFrom && todayDate.isBefore(limitRange.dateFrom)) {\n return limitRange.dateFrom.clone();\n } else if (limitRange.dateTo && todayDate.isAfter(limitRange.dateTo)) {\n return limitRange.dateTo.clone();\n }\n }\n\n return todayDate;\n }\n\n public componentDidUpdate(prevProps: ICalendarProps, prevState: ICalendarState): void {\n const { format } = this.props;\n const { viewDate, viewMode } = this.state;\n const { viewDate: prevViewDate } = prevState;\n\n const pickedDateState = parsePickedDate(this.props.pickedDate, format);\n const pickedDateValid = pickedDateState?.isValid();\n const resultDate = pickedDateValid ? pickedDateState : prevViewDate;\n\n const prevPickedDate = parsePickedDate(prevProps.pickedDate, format);\n\n if (!(!pickedDateValid || prevPickedDate?.isSame(resultDate, \"day\"))) {\n // Выбранная дата переехала в другой месяц — переводим навигацию на её страницу.\n if (viewDate && !viewDate.isSame(pickedDateState, \"month\")) {\n this.setState({\n // Формат заголовка зависит от вида отображения — как в handlePageChange / handleViewChange.\n header: formatDate(resultDate, viewMode),\n // Значение не null: ветка выполняется только при валидной pickedDate, тогда resultDate === pickedDateState.\n viewDate: resultDate!.clone(),\n pickedDate: pickedDateState,\n });\n } else {\n this.setState({ pickedDate: pickedDateState });\n }\n }\n }\n\n public render() {\n const {\n format,\n pickType,\n limitRange,\n markedDays,\n disabledDays,\n dayHtmlAttributes,\n monthHtmlAttributes,\n yearHtmlAttributes,\n prevButtonProps,\n nextButtonProps,\n viewButtonProps,\n todayButtonProps,\n } = this.props;\n const { viewMode, viewDate, header } = this.state;\n const classNames = clsx(\n styles.calendar,\n this.props.adaptiveMode\n ? styles.adaptive\n : (viewMode !== ECalendarViewMode.DAYS || todayButtonProps) && styles.extraBottom,\n );\n\n const pickedDate = parsePickedDate(this.props.pickedDate, format);\n\n return (\n <div className={classNames} data-tx={process.env.npm_package_version}>\n <CalendarContext.Provider\n value={{\n format,\n // Значения не undefined: заданы в defaultProps, но TypeScript не сужает тип опциональных props.\n limitRange: limitRange!,\n pickType: pickType!,\n markedDays,\n disabledDays,\n viewDate,\n viewMode,\n periodId: this.periodId,\n onDateSelect: this.handleDateSelect,\n onPageChange: this.handlePageChange,\n onViewChange: this.handleViewChange,\n }}\n >\n <CalendarControls\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n viewButtonProps={viewButtonProps}\n >\n {header}\n </CalendarControls>\n <CalendarView\n pickedDate={pickedDate}\n dayHtmlAttributes={dayHtmlAttributes}\n monthHtmlAttributes={monthHtmlAttributes}\n yearHtmlAttributes={yearHtmlAttributes}\n />\n {todayButtonProps && this.renderFooter()}\n </CalendarContext.Provider>\n </div>\n );\n }\n\n /** Обработчик выбора даты. */\n private handleDateSelect = (date: moment.Moment) => {\n this.props.onDateChange(date);\n };\n\n /** Обработчик смены страницы. */\n private handlePageChange = (nextViewDate: moment.Moment, viewMode: ECalendarViewMode) => {\n const { onPageChange } = this.props;\n\n this.setState({\n header: formatDate(nextViewDate, viewMode),\n viewDate: nextViewDate,\n });\n\n onPageChange?.(nextViewDate, viewMode);\n };\n\n /** Обработчик изменения вида отображения. */\n private handleViewChange = (nextViewDate: moment.Moment, nextViewMode: ECalendarViewMode) => {\n const { onViewChange } = this.props;\n\n this.setState({\n header: formatDate(nextViewDate, nextViewMode),\n viewDate: nextViewDate,\n viewMode: nextViewMode,\n });\n\n onViewChange?.(nextViewDate, nextViewMode);\n };\n\n /** Рендер футера. */\n private renderFooter = () => {\n const { pickType, adaptiveMode, yesterdayButtonProps, todayButtonProps, tomorrowButtonProps } = this.props;\n const { viewDate, viewMode } = this.state;\n let todayDate: moment.Moment;\n let currentPeriodSelected: boolean;\n\n if (pickType === ECalendarPickType.DATE) {\n todayDate = moment().startOf(\"day\");\n currentPeriodSelected = viewMode === ECalendarViewMode.DAYS && viewDate.isSame(todayDate, \"month\");\n } else {\n todayDate = moment().startOf(\"month\");\n currentPeriodSelected = viewMode === ECalendarViewMode.MONTHS && viewDate.isSame(todayDate, \"year\");\n }\n\n const needShowAsideButtons = currentPeriodSelected && viewMode === ECalendarViewMode.DAYS;\n const buttonSize = adaptiveMode ? EComponentSize.MD : EComponentSize.SM;\n\n return (\n <CalendarFooter>\n {/* Вчера */}\n {needShowAsideButtons && yesterdayButtonProps && (\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate.clone().subtract(1, \"day\")}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof yesterdayButtonProps === \"function\"\n ? yesterdayButtonProps(viewMode)\n : yesterdayButtonProps)}\n />\n )}\n {/* Сегодня / К текущей дате */}\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof todayButtonProps === \"function\"\n ? todayButtonProps({ viewMode, currentPeriodSelected })\n : todayButtonProps)}\n />\n {/* Завтра */}\n {needShowAsideButtons && tomorrowButtonProps && (\n <CalendarFooterButton\n size={buttonSize}\n date={todayDate.clone().add(1, \"day\")}\n currentPeriodSelected={currentPeriodSelected}\n {...(typeof tomorrowButtonProps === \"function\"\n ? tomorrowButtonProps(viewMode)\n : tomorrowButtonProps)}\n />\n )}\n </CalendarFooter>\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarContext.js","sources":["../../../src/components/Calendar/CalendarContext.tsx"],"sourcesContent":["import React from \"react\";\nimport moment from \"moment\";\nimport { dateFormatYYYYMMDD, globalLimitRange } from \"../../consts/DateConst\";\nimport { ECalendarPickType, ECalendarViewMode } from \"./enums\";\nimport { ICalendarProps } from \"./types\";\n\n/** Свойства контекста
|
|
1
|
+
{"version":3,"file":"CalendarContext.js","sources":["../../../src/components/Calendar/CalendarContext.tsx"],"sourcesContent":["import React from \"react\";\nimport moment from \"moment\";\nimport { dateFormatYYYYMMDD, globalLimitRange } from \"../../consts/DateConst\";\nimport { ECalendarPickType, ECalendarViewMode } from \"./enums\";\nimport { ICalendarProps } from \"./types\";\n\n/** Свойства контекста Calendar. */\nexport interface ICalendarContext\n extends\n Pick<ICalendarProps, \"format\" | \"markedDays\" | \"disabledDays\">,\n Required<Pick<ICalendarProps, \"pickType\" | \"limitRange\" | \"onPageChange\" | \"onViewChange\">> {\n /** Дата, являющая курсором для навигации по интерфейсу. */\n viewDate: moment.Moment;\n /** Вид отображения. */\n viewMode: ECalendarViewMode;\n /** Уникальный идентификатор для связи периода с таблицей. */\n periodId: string;\n /** Функция, вызывающаяся при выборе даты. */\n onDateSelect: (date: moment.Moment) => void;\n}\n\n/** Контекст компонента Calendar. */\nexport const CalendarContext = React.createContext<ICalendarContext>({\n format: dateFormatYYYYMMDD,\n limitRange: globalLimitRange,\n pickType: ECalendarPickType.DATE,\n viewDate: moment().startOf(\"day\"),\n viewMode: ECalendarViewMode.DAYS,\n periodId: \"\",\n onDateSelect: () => {},\n onPageChange: () => {},\n onViewChange: () => {},\n});\n"],"names":[],"mappings":";;;;AAsBO,MAAM,kBAAkB,MAAM,cAAgC;AAAA,EACjE,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU,kBAAkB;AAAA,EAC5B,UAAU,OAAA,EAAS,QAAQ,KAAK;AAAA,EAChC,UAAU,kBAAkB;AAAA,EAC5B,UAAU;AAAA,EACV,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,cAAc,MAAM;AAAA,EAAC;AACzB,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarViewContext.js","sources":["../../../src/components/Calendar/CalendarViewContext.tsx"],"sourcesContent":["import React from \"react\";\n\n/** Свойства контекста CalendarView. */\nexport interface ICalendarViewContext {\n viewItemFocusedRef: React.MutableRefObject<boolean>;\n}\n\n/** Контекст компонента CalendarView. */\nexport const CalendarViewContext = React.createContext<ICalendarViewContext>({\n viewItemFocusedRef: { current: false },\n});\n"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"CalendarViewContext.js","sources":["../../../src/components/Calendar/CalendarViewContext.tsx"],"sourcesContent":["import React from \"react\";\n\n/** Свойства контекста CalendarView. */\nexport interface ICalendarViewContext {\n /** Признак того, что фокус находится на одной из ячеек текущего вида календаря. */\n viewItemFocusedRef: React.MutableRefObject<boolean>;\n}\n\n/** Контекст компонента CalendarView. */\nexport const CalendarViewContext = React.createContext<ICalendarViewContext>({\n viewItemFocusedRef: { current: false },\n});\n"],"names":[],"mappings":";AASO,MAAM,sBAAsB,MAAM,cAAoC;AAAA,EACzE,oBAAoB,EAAE,SAAS,MAAA;AACnC,CAAC;"}
|
|
@@ -2,16 +2,22 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext } from "react";
|
|
3
3
|
import { CaretleftStrokeSrvIcon24, CaretrightStrokeSrvIcon24 } from "@sberbusiness/icons-next";
|
|
4
4
|
import { CalendarContext } from "../CalendarContext.js";
|
|
5
|
+
import { shiftDate } from "../utils.js";
|
|
5
6
|
import { Button } from "../../Button/Button.js";
|
|
6
7
|
import { ButtonIcon } from "../../Button/ButtonIcon.js";
|
|
7
8
|
import { EButtonIconShape, EButtonTheme } from "../../Button/enums.js";
|
|
8
9
|
import { ECalendarViewMode } from "../enums.js";
|
|
9
10
|
import { globalLimitRange } from "../../../consts/DateConst.js";
|
|
10
11
|
import { EComponentSize } from "../../../enums/EComponentSize.js";
|
|
11
|
-
const calendarControls = "
|
|
12
|
+
const calendarControls = "calendarControls__db7b7358";
|
|
12
13
|
const styles = {
|
|
13
14
|
calendarControls
|
|
14
15
|
};
|
|
16
|
+
const PAGE_SHIFT_BY_VIEW_MODE = {
|
|
17
|
+
[ECalendarViewMode.DAYS]: { amount: 1, unit: "month" },
|
|
18
|
+
[ECalendarViewMode.MONTHS]: { amount: 1, unit: "year" },
|
|
19
|
+
[ECalendarViewMode.YEARS]: { amount: 12, unit: "year" }
|
|
20
|
+
};
|
|
15
21
|
const CalendarControls = ({
|
|
16
22
|
children,
|
|
17
23
|
prevButtonProps = {},
|
|
@@ -26,7 +32,7 @@ const CalendarControls = ({
|
|
|
26
32
|
{
|
|
27
33
|
shape: EButtonIconShape.CIRCLE,
|
|
28
34
|
disabled: disabled || isPrevButtonDisabled(),
|
|
29
|
-
onClick:
|
|
35
|
+
onClick: handlePageButtonClick("subtract", onClick),
|
|
30
36
|
...rest,
|
|
31
37
|
children: /* @__PURE__ */ jsx(CaretleftStrokeSrvIcon24, { paletteIndex: 5 })
|
|
32
38
|
}
|
|
@@ -39,7 +45,7 @@ const CalendarControls = ({
|
|
|
39
45
|
{
|
|
40
46
|
shape: EButtonIconShape.CIRCLE,
|
|
41
47
|
disabled: disabled || isNextButtonDisabled(),
|
|
42
|
-
onClick:
|
|
48
|
+
onClick: handlePageButtonClick("add", onClick),
|
|
43
49
|
...rest,
|
|
44
50
|
children: /* @__PURE__ */ jsx(CaretrightStrokeSrvIcon24, { paletteIndex: 5 })
|
|
45
51
|
}
|
|
@@ -82,17 +88,8 @@ const CalendarControls = ({
|
|
|
82
88
|
}
|
|
83
89
|
return date.add(1, "day").isAfter(limitRange.dateTo || globalLimitRange.dateTo, "day");
|
|
84
90
|
};
|
|
85
|
-
const
|
|
86
|
-
const
|
|
87
|
-
const shiftAmount = getPageShiftAmount();
|
|
88
|
-
const date = viewDate.clone().subtract(shiftAmount, shiftUnit);
|
|
89
|
-
onPageChange(date, viewMode);
|
|
90
|
-
onClick == null ? void 0 : onClick(event);
|
|
91
|
-
};
|
|
92
|
-
const handleNextButtonClick = (onClick) => (event) => {
|
|
93
|
-
const shiftUnit = getPageShiftUnit();
|
|
94
|
-
const shiftAmount = getPageShiftAmount();
|
|
95
|
-
const date = viewDate.clone().add(shiftAmount, shiftUnit);
|
|
91
|
+
const handlePageButtonClick = (operation, onClick) => (event) => {
|
|
92
|
+
const date = shiftDate(viewDate.clone(), { operation, ...PAGE_SHIFT_BY_VIEW_MODE[viewMode] });
|
|
96
93
|
onPageChange(date, viewMode);
|
|
97
94
|
onClick == null ? void 0 : onClick(event);
|
|
98
95
|
};
|
|
@@ -104,30 +101,13 @@ const CalendarControls = ({
|
|
|
104
101
|
}
|
|
105
102
|
onClick == null ? void 0 : onClick(event);
|
|
106
103
|
};
|
|
107
|
-
const getPageShiftUnit = () => {
|
|
108
|
-
switch (viewMode) {
|
|
109
|
-
case ECalendarViewMode.DAYS:
|
|
110
|
-
return "month";
|
|
111
|
-
case ECalendarViewMode.MONTHS:
|
|
112
|
-
case ECalendarViewMode.YEARS:
|
|
113
|
-
return "year";
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
const getPageShiftAmount = () => {
|
|
117
|
-
switch (viewMode) {
|
|
118
|
-
case ECalendarViewMode.DAYS:
|
|
119
|
-
case ECalendarViewMode.MONTHS:
|
|
120
|
-
return 1;
|
|
121
|
-
case ECalendarViewMode.YEARS:
|
|
122
|
-
return 12;
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
104
|
return /* @__PURE__ */ jsxs("div", { className: styles.calendarControls, children: [
|
|
126
105
|
renderPrevButton(),
|
|
127
106
|
viewMode === ECalendarViewMode.YEARS ? /* @__PURE__ */ jsx("span", { id: periodId, tabIndex: -1, "aria-live": "polite", children }) : renderViewButton(),
|
|
128
107
|
renderNextButton()
|
|
129
108
|
] });
|
|
130
109
|
};
|
|
110
|
+
CalendarControls.displayName = "CalendarControls";
|
|
131
111
|
export {
|
|
132
112
|
CalendarControls
|
|
133
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarControls.js","sources":["../../../../src/components/Calendar/components/CalendarControls.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { CaretleftStrokeSrvIcon24, CaretrightStrokeSrvIcon24 } from \"@sberbusiness/icons-next\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { ICalendarProps } from \"../types\";\nimport { Button } from \"../../Button/Button\";\nimport { ButtonIcon } from \"../../Button/ButtonIcon\";\nimport { EButtonTheme, EButtonIconShape } from \"../../Button/enums\";\nimport { ECalendarViewMode } from \"../enums\";\nimport { globalLimitRange } from \"../../../consts/DateConst\";\nimport { EComponentSize } from \"../../../enums/EComponentSize\";\nimport styles from \"../styles/CalendarControls.module.less\";\n\n/** Свойства компонента CalendarControls. */\nexport interface ICalendarControlsProps extends Pick<\n ICalendarProps,\n \"prevButtonProps\" | \"nextButtonProps\" | \"viewButtonProps\"\n> {\n children: React.ReactNode;\n}\n\n/** Элементы управления календаря. */\nexport const CalendarControls: React.FC<ICalendarControlsProps> = ({\n children,\n prevButtonProps = {},\n nextButtonProps = {},\n viewButtonProps = {},\n}): JSX.Element => {\n const { viewDate, viewMode, limitRange, periodId, onPageChange, onViewChange } = useContext(CalendarContext);\n\n /** Рендер кнопки \"назад\". */\n const renderPrevButton = () => {\n const { disabled, onClick, ...rest } =\n typeof prevButtonProps === \"function\" ? prevButtonProps(viewMode) : prevButtonProps;\n\n return (\n <ButtonIcon\n shape={EButtonIconShape.CIRCLE}\n disabled={disabled || isPrevButtonDisabled()}\n onClick={
|
|
1
|
+
{"version":3,"file":"CalendarControls.js","sources":["../../../../src/components/Calendar/components/CalendarControls.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport { CaretleftStrokeSrvIcon24, CaretrightStrokeSrvIcon24 } from \"@sberbusiness/icons-next\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { ICalendarProps } from \"../types\";\nimport { ICalendarNavigationStep, TCalendarShiftOperation, shiftDate } from \"../utils\";\nimport { Button } from \"../../Button/Button\";\nimport { ButtonIcon } from \"../../Button/ButtonIcon\";\nimport { EButtonTheme, EButtonIconShape } from \"../../Button/enums\";\nimport { ECalendarViewMode } from \"../enums\";\nimport { globalLimitRange } from \"../../../consts/DateConst\";\nimport { EComponentSize } from \"../../../enums/EComponentSize\";\nimport styles from \"../styles/CalendarControls.module.less\";\n\n/** Свойства компонента CalendarControls. */\nexport interface ICalendarControlsProps extends Pick<\n ICalendarProps,\n \"prevButtonProps\" | \"nextButtonProps\" | \"viewButtonProps\"\n> {\n /** Заголовок календаря — текущий период. */\n children: React.ReactNode;\n}\n\n/** Величина сдвига страницы календаря для каждого вида отображения. */\nconst PAGE_SHIFT_BY_VIEW_MODE: Record<ECalendarViewMode, ICalendarNavigationStep> = {\n [ECalendarViewMode.DAYS]: { amount: 1, unit: \"month\" },\n [ECalendarViewMode.MONTHS]: { amount: 1, unit: \"year\" },\n [ECalendarViewMode.YEARS]: { amount: 12, unit: \"year\" },\n};\n\n/** Элементы управления календаря. */\nexport const CalendarControls: React.FC<ICalendarControlsProps> = ({\n children,\n prevButtonProps = {},\n nextButtonProps = {},\n viewButtonProps = {},\n}): JSX.Element => {\n const { viewDate, viewMode, limitRange, periodId, onPageChange, onViewChange } = useContext(CalendarContext);\n\n /** Рендер кнопки \"назад\". */\n const renderPrevButton = () => {\n const { disabled, onClick, ...rest } =\n typeof prevButtonProps === \"function\" ? prevButtonProps(viewMode) : prevButtonProps;\n\n return (\n <ButtonIcon\n shape={EButtonIconShape.CIRCLE}\n disabled={disabled || isPrevButtonDisabled()}\n onClick={handlePageButtonClick(\"subtract\", onClick)}\n {...rest}\n >\n <CaretleftStrokeSrvIcon24 paletteIndex={5} />\n </ButtonIcon>\n );\n };\n\n /** Рендер кнопки \"вперед\". */\n const renderNextButton = () => {\n const { disabled, onClick, ...rest } =\n typeof nextButtonProps === \"function\" ? nextButtonProps(viewMode) : nextButtonProps;\n\n return (\n <ButtonIcon\n shape={EButtonIconShape.CIRCLE}\n disabled={disabled || isNextButtonDisabled()}\n onClick={handlePageButtonClick(\"add\", onClick)}\n {...rest}\n >\n <CaretrightStrokeSrvIcon24 paletteIndex={5} />\n </ButtonIcon>\n );\n };\n\n /** Рендер кнопки \"изменить вид\". */\n const renderViewButton = () => {\n const { onClick, ...rest } =\n typeof viewButtonProps === \"function\" ? viewButtonProps(viewMode) : viewButtonProps;\n\n return (\n <Button\n id={periodId}\n aria-live=\"polite\"\n theme={EButtonTheme.LINK}\n size={EComponentSize.SM}\n onClick={handleViewButtonClick(onClick)}\n {...rest}\n >\n {children}\n </Button>\n );\n };\n\n /** Проверяет, является ли кнопка \"назад\" отключенной. */\n const isPrevButtonDisabled = () => {\n const date = viewDate.clone();\n\n if (viewMode === ECalendarViewMode.DAYS) {\n date.startOf(\"month\");\n } else if (viewMode === ECalendarViewMode.MONTHS) {\n date.startOf(\"year\");\n } else if (viewMode === ECalendarViewMode.YEARS) {\n date.startOf(\"year\").subtract(5, \"years\");\n }\n\n return date.subtract(1, \"day\").isBefore(limitRange.dateFrom || globalLimitRange.dateFrom, \"day\");\n };\n\n /** Проверяет, является ли кнопка \"вперёд\" отключенной. */\n const isNextButtonDisabled = () => {\n const date = viewDate.clone();\n\n if (viewMode === ECalendarViewMode.DAYS) {\n date.endOf(\"month\");\n } else if (viewMode === ECalendarViewMode.MONTHS) {\n date.endOf(\"year\");\n } else if (viewMode === ECalendarViewMode.YEARS) {\n date.endOf(\"year\").add(6, \"years\");\n }\n\n return date.add(1, \"day\").isAfter(limitRange.dateTo || globalLimitRange.dateTo, \"day\");\n };\n\n /** Обработчик клика на кнопку переключения страницы (\"назад\" / \"вперёд\"). */\n const handlePageButtonClick =\n (operation: TCalendarShiftOperation, onClick?: React.MouseEventHandler<HTMLButtonElement>) =>\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const date = shiftDate(viewDate.clone(), { operation, ...PAGE_SHIFT_BY_VIEW_MODE[viewMode] });\n\n onPageChange(date, viewMode);\n onClick?.(event);\n };\n\n /** Обработчик клика на кнопку \"изменить вид\". */\n const handleViewButtonClick =\n (onClick?: React.MouseEventHandler<HTMLButtonElement>) => (event: React.MouseEvent<HTMLButtonElement>) => {\n if (viewMode === ECalendarViewMode.DAYS) {\n onViewChange(viewDate, ECalendarViewMode.MONTHS);\n } else if (viewMode === ECalendarViewMode.MONTHS) {\n onViewChange(viewDate, ECalendarViewMode.YEARS);\n }\n\n onClick?.(event);\n };\n\n return (\n <div className={styles.calendarControls}>\n {renderPrevButton()}\n {viewMode === ECalendarViewMode.YEARS ? (\n <span id={periodId} tabIndex={-1} aria-live=\"polite\">\n {children}\n </span>\n ) : (\n renderViewButton()\n )}\n {renderNextButton()}\n </div>\n );\n};\n\nCalendarControls.displayName = \"CalendarControls\";\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import { c as clsx } from "../../../chunks/vendor-BtZO8a0z.js";
|
|
3
|
+
const calendarFooter = "calendarFooter__ccf276ed";
|
|
3
4
|
const styles = {
|
|
4
5
|
calendarFooter
|
|
5
6
|
};
|
|
6
|
-
const CalendarFooter = ({ children }) => /* @__PURE__ */ jsx("div", { className: styles.calendarFooter, children });
|
|
7
|
+
const CalendarFooter = ({ children, className, ...rest }) => /* @__PURE__ */ jsx("div", { className: clsx(styles.calendarFooter, className), ...rest, children });
|
|
7
8
|
CalendarFooter.displayName = "CalendarFooter";
|
|
8
9
|
export {
|
|
9
10
|
CalendarFooter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarFooter.js","sources":["../../../../src/components/Calendar/components/CalendarFooter.tsx"],"sourcesContent":["import React from \"react\";\nimport styles from \"../styles/CalendarFooter.module.less\";\n\n/** Свойства компонента CalendarFooter. */\nexport interface ICalendarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/** Футер календаря. */\nexport const CalendarFooter: React.FC<ICalendarFooterProps> = ({ children }) => (\n <div className={styles.calendarFooter}
|
|
1
|
+
{"version":3,"file":"CalendarFooter.js","sources":["../../../../src/components/Calendar/components/CalendarFooter.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport styles from \"../styles/CalendarFooter.module.less\";\n\n/** Свойства компонента CalendarFooter. */\nexport interface ICalendarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/** Футер календаря. */\nexport const CalendarFooter: React.FC<ICalendarFooterProps> = ({ children, className, ...rest }) => (\n <div className={clsx(styles.calendarFooter, className)} {...rest}>\n {children}\n </div>\n);\n\nCalendarFooter.displayName = \"CalendarFooter\";\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,iBAAiD,CAAC,EAAE,UAAU,WAAW,GAAG,WACrF,oBAAC,OAAA,EAAI,WAAW,KAAK,OAAO,gBAAgB,SAAS,GAAI,GAAG,MACvD,SAAA,CACL;AAGJ,eAAe,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.js","sources":["../../../../src/components/Calendar/components/CalendarView.tsx"],"sourcesContent":["import React, { useContext, useRef } from \"react\";\nimport { ICalendarViewProps } from \"../types\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { CalendarViewContext } from \"../CalendarViewContext\";\nimport { ECalendarViewMode } from \"../enums\";\nimport { CalendarViewDays } from \"./CalendarViewDays\";\nimport { CalendarViewMonths } from \"./CalendarViewMonths\";\nimport { CalendarViewYears } from \"./CalendarViewYears\";\n\n/** Вид календаря. */\nexport const CalendarView: React.FC<ICalendarViewProps> = ({\n dayHtmlAttributes,\n monthHtmlAttributes,\n yearHtmlAttributes,\n ...rest\n}) => {\n const { viewMode } = useContext(CalendarContext);\n const viewItemFocusedRef = useRef(false);\n\n /** Рендер текущего вида календаря. */\n const renderCurrentView = () => {\n switch (viewMode) {\n case ECalendarViewMode.DAYS:\n return <CalendarViewDays dayHtmlAttributes={dayHtmlAttributes} {...rest} />;\n case ECalendarViewMode.MONTHS:\n return <CalendarViewMonths monthHtmlAttributes={monthHtmlAttributes} {...rest} />;\n case ECalendarViewMode.YEARS:\n return <CalendarViewYears yearHtmlAttributes={yearHtmlAttributes} {...rest} />;\n }\n };\n\n return (\n <CalendarViewContext.Provider value={{ viewItemFocusedRef }}>\n {renderCurrentView()}\n </CalendarViewContext.Provider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAUO,MAAM,eAA6C,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAM;AACF,QAAM,EAAE,SAAA,IAAa,WAAW,eAAe;AAC/C,QAAM,qBAAqB,OAAO,KAAK;AAGvC,QAAM,oBAAoB,MAAM;AAC5B,YAAQ,UAAA;AAAA,MACJ,KAAK,kBAAkB;AACnB,eAAO,oBAAC,kBAAA,EAAiB,mBAAuC,GAAG,KAAA,CAAM;AAAA,MAC7E,KAAK,kBAAkB;AACnB,eAAO,oBAAC,oBAAA,EAAmB,qBAA2C,GAAG,KAAA,CAAM;AAAA,MACnF,KAAK,kBAAkB;AACnB,eAAO,oBAAC,mBAAA,EAAkB,oBAAyC,GAAG,KAAA,CAAM;AAAA,IAAA;AAAA,EAExF;AAEA,SACI,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,EAAE,sBAClC,UAAA,kBAAA,GACL;AAER;"}
|
|
1
|
+
{"version":3,"file":"CalendarView.js","sources":["../../../../src/components/Calendar/components/CalendarView.tsx"],"sourcesContent":["import React, { useContext, useRef } from \"react\";\nimport { ICalendarViewProps } from \"../types\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { CalendarViewContext } from \"../CalendarViewContext\";\nimport { ECalendarViewMode } from \"../enums\";\nimport { CalendarViewDays } from \"./CalendarViewDays\";\nimport { CalendarViewMonths } from \"./CalendarViewMonths\";\nimport { CalendarViewYears } from \"./CalendarViewYears\";\n\n/** Вид календаря. */\nexport const CalendarView: React.FC<ICalendarViewProps> = ({\n dayHtmlAttributes,\n monthHtmlAttributes,\n yearHtmlAttributes,\n ...rest\n}) => {\n const { viewMode } = useContext(CalendarContext);\n const viewItemFocusedRef = useRef(false);\n\n /** Рендер текущего вида календаря. */\n const renderCurrentView = () => {\n switch (viewMode) {\n case ECalendarViewMode.DAYS:\n return <CalendarViewDays dayHtmlAttributes={dayHtmlAttributes} {...rest} />;\n case ECalendarViewMode.MONTHS:\n return <CalendarViewMonths monthHtmlAttributes={monthHtmlAttributes} {...rest} />;\n case ECalendarViewMode.YEARS:\n return <CalendarViewYears yearHtmlAttributes={yearHtmlAttributes} {...rest} />;\n }\n };\n\n return (\n <CalendarViewContext.Provider value={{ viewItemFocusedRef }}>\n {renderCurrentView()}\n </CalendarViewContext.Provider>\n );\n};\n\nCalendarView.displayName = \"CalendarView\";\n"],"names":[],"mappings":";;;;;;;;AAUO,MAAM,eAA6C,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAM;AACF,QAAM,EAAE,SAAA,IAAa,WAAW,eAAe;AAC/C,QAAM,qBAAqB,OAAO,KAAK;AAGvC,QAAM,oBAAoB,MAAM;AAC5B,YAAQ,UAAA;AAAA,MACJ,KAAK,kBAAkB;AACnB,eAAO,oBAAC,kBAAA,EAAiB,mBAAuC,GAAG,KAAA,CAAM;AAAA,MAC7E,KAAK,kBAAkB;AACnB,eAAO,oBAAC,oBAAA,EAAmB,qBAA2C,GAAG,KAAA,CAAM;AAAA,MACnF,KAAK,kBAAkB;AACnB,eAAO,oBAAC,mBAAA,EAAkB,oBAAyC,GAAG,KAAA,CAAM;AAAA,IAAA;AAAA,EAExF;AAEA,SACI,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,EAAE,sBAClC,UAAA,kBAAA,GACL;AAER;AAEA,aAAa,cAAc;"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useContext, useCallback, useState, useEffect } from "react";
|
|
3
3
|
import moment from "moment";
|
|
4
|
-
import { c as clsx } from "../../../chunks/vendor-
|
|
5
|
-
import { isDateOutOfRange, isDayDisabled } from "../utils.js";
|
|
6
|
-
import { WEEKDAYS_SET } from "../../../consts/DateConst.js";
|
|
4
|
+
import { c as clsx } from "../../../chunks/vendor-BtZO8a0z.js";
|
|
5
|
+
import { isDateOutOfRange, isDayDisabled, getFirstEnabledDate, getNavigationShift, shiftDate } from "../utils.js";
|
|
6
|
+
import { WEEKDAYS_SET, WEEKS_SET } from "../../../consts/DateConst.js";
|
|
7
7
|
import { CalendarViewContext } from "../CalendarViewContext.js";
|
|
8
|
-
import { s as styles, C as CalendarViewItem } from "../../../chunks/CalendarViewItem-
|
|
9
|
-
import { isKey } from "../../../utils/keyboard.js";
|
|
8
|
+
import { s as styles, C as CalendarViewItem } from "../../../chunks/CalendarViewItem-RCL-JeQJ.js";
|
|
10
9
|
import { ECalendarDateMarkType, ECalendarViewMode } from "../enums.js";
|
|
11
10
|
import { CalendarContext } from "../CalendarContext.js";
|
|
11
|
+
const NAVIGATION_STEPS = {
|
|
12
|
+
horizontal: { amount: 1, unit: "day" },
|
|
13
|
+
vertical: { amount: 1, unit: "week" },
|
|
14
|
+
page: { amount: 1, unit: "month" }
|
|
15
|
+
};
|
|
12
16
|
const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
13
17
|
const { format, periodId, limitRange, viewDate, markedDays, disabledDays, onDateSelect, onPageChange } = useContext(CalendarContext);
|
|
14
18
|
const { viewItemFocusedRef } = useContext(CalendarViewContext);
|
|
@@ -20,15 +24,9 @@ const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
|
20
24
|
const getInitialTabbableDate = useCallback(() => {
|
|
21
25
|
if (pickedDate && pickedDate.isSame(viewDate, "month")) {
|
|
22
26
|
return pickedDate;
|
|
23
|
-
} else {
|
|
24
|
-
const date = viewDate.clone().startOf("month");
|
|
25
|
-
for (let i = 0; i < date.daysInMonth(); i++) {
|
|
26
|
-
date.add(i, "day");
|
|
27
|
-
if (!isDisabledDate(date)) {
|
|
28
|
-
return date;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
27
|
}
|
|
28
|
+
const startOfMonth = viewDate.clone().startOf("month");
|
|
29
|
+
return getFirstEnabledDate(startOfMonth, startOfMonth.daysInMonth(), "day", isDisabledDate);
|
|
32
30
|
}, [pickedDate, viewDate, isDisabledDate]);
|
|
33
31
|
const [tabbableDate, setTabbableDate] = useState(getInitialTabbableDate());
|
|
34
32
|
useEffect(() => {
|
|
@@ -49,7 +47,7 @@ const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
|
49
47
|
`calendar-table-header-${header}`
|
|
50
48
|
)) }) });
|
|
51
49
|
};
|
|
52
|
-
const renderTableBody = () => /* @__PURE__ */ jsx("tbody", { className: styles.calendarViewDaysBody, children:
|
|
50
|
+
const renderTableBody = () => /* @__PURE__ */ jsx("tbody", { className: styles.calendarViewDaysBody, children: WEEKS_SET.map((row) => /* @__PURE__ */ jsx("tr", { children: WEEKDAYS_SET.map((cell) => renderTableData(row, cell)) }, `calendar-table-row-${row}`)) });
|
|
53
51
|
const renderTableData = (row, cell) => {
|
|
54
52
|
const date = moment(startDate).add(row * 7 + cell, "day");
|
|
55
53
|
const classNames = clsx({ [styles.current]: isCurrentDate(date) });
|
|
@@ -71,7 +69,7 @@ const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
|
71
69
|
muted,
|
|
72
70
|
markType,
|
|
73
71
|
onKeyDown: handleItemKeyDown(date),
|
|
74
|
-
onDateSelect
|
|
72
|
+
onDateSelect,
|
|
75
73
|
children: date.date()
|
|
76
74
|
},
|
|
77
75
|
`calendar-table-data-${cell}`
|
|
@@ -100,63 +98,40 @@ const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
|
100
98
|
return ECalendarDateMarkType.BASIC;
|
|
101
99
|
}
|
|
102
100
|
} else if (day in markedDays) {
|
|
103
|
-
return markedDays[
|
|
101
|
+
return markedDays[day];
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
};
|
|
107
|
-
const getShiftedDate = (currentDate,
|
|
105
|
+
const getShiftedDate = (currentDate, shift) => {
|
|
108
106
|
const day = currentDate.clone();
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
subtract: moment.fn.subtract.bind(day)
|
|
112
|
-
}[operation];
|
|
113
|
-
while (shiftDay(amount, unit)) {
|
|
107
|
+
do {
|
|
108
|
+
shiftDate(day, shift);
|
|
114
109
|
if (isDateOutOfRange(day, limitRange, "day")) {
|
|
115
110
|
return currentDate;
|
|
116
111
|
}
|
|
117
|
-
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
112
|
+
} while (isDisabledDate(day));
|
|
121
113
|
return day;
|
|
122
114
|
};
|
|
123
115
|
const handleItemKeyDown = (date) => (event) => {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
nextFocusedDate = getShiftedDate(date, "add", 1, "day");
|
|
128
|
-
event.preventDefault();
|
|
129
|
-
} else if (isKey(key, "ARROW_LEFT")) {
|
|
130
|
-
nextFocusedDate = getShiftedDate(date, "subtract", 1, "day");
|
|
131
|
-
event.preventDefault();
|
|
132
|
-
} else if (isKey(key, "ARROW_DOWN")) {
|
|
133
|
-
nextFocusedDate = getShiftedDate(date, "add", 1, "week");
|
|
134
|
-
event.preventDefault();
|
|
135
|
-
} else if (isKey(key, "ARROW_UP")) {
|
|
136
|
-
nextFocusedDate = getShiftedDate(date, "subtract", 1, "week");
|
|
137
|
-
event.preventDefault();
|
|
138
|
-
} else if (isKey(key, "PAGE_DOWN")) {
|
|
139
|
-
nextFocusedDate = getShiftedDate(date, "add", 1, "month");
|
|
140
|
-
event.preventDefault();
|
|
141
|
-
} else if (isKey(key, "PAGE_UP")) {
|
|
142
|
-
nextFocusedDate = getShiftedDate(date, "subtract", 1, "month");
|
|
143
|
-
event.preventDefault();
|
|
144
|
-
}
|
|
145
|
-
if (nextFocusedDate) {
|
|
146
|
-
changeTabbableDate(nextFocusedDate);
|
|
116
|
+
const shift = getNavigationShift(event.code || event.keyCode, NAVIGATION_STEPS);
|
|
117
|
+
if (!shift) {
|
|
118
|
+
return;
|
|
147
119
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
onDateSelect(date);
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
changeTabbableDate(getShiftedDate(date, shift));
|
|
151
122
|
};
|
|
152
123
|
const changeTabbableDate = (date) => {
|
|
153
124
|
setTabbableDate(date);
|
|
154
125
|
if (date.isBefore(viewDate, "month")) {
|
|
155
|
-
|
|
156
|
-
|
|
126
|
+
onPageChange(
|
|
127
|
+
shiftDate(viewDate.clone(), { operation: "subtract", ...NAVIGATION_STEPS.page }),
|
|
128
|
+
ECalendarViewMode.DAYS
|
|
129
|
+
);
|
|
157
130
|
} else if (date.isAfter(viewDate, "month")) {
|
|
158
|
-
|
|
159
|
-
|
|
131
|
+
onPageChange(
|
|
132
|
+
shiftDate(viewDate.clone(), { operation: "add", ...NAVIGATION_STEPS.page }),
|
|
133
|
+
ECalendarViewMode.DAYS
|
|
134
|
+
);
|
|
160
135
|
}
|
|
161
136
|
};
|
|
162
137
|
return /* @__PURE__ */ jsxs("table", { className: styles.calendarViewDays, role: "grid", "aria-labelledby": periodId, children: [
|
|
@@ -164,6 +139,7 @@ const CalendarViewDays = ({ pickedDate, dayHtmlAttributes = {} }) => {
|
|
|
164
139
|
renderTableBody()
|
|
165
140
|
] });
|
|
166
141
|
};
|
|
142
|
+
CalendarViewDays.displayName = "CalendarViewDays";
|
|
167
143
|
export {
|
|
168
144
|
CalendarViewDays
|
|
169
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarViewDays.js","sources":["../../../../src/components/Calendar/components/CalendarViewDays.tsx"],"sourcesContent":["import React, { useState, useEffect, useContext, useCallback } from \"react\";\nimport moment from \"moment\";\nimport clsx from \"clsx\";\nimport { isDateOutOfRange, isDayDisabled } from \"../utils\";\nimport { WEEKDAYS_SET } from \"../../../consts/DateConst\";\nimport { CalendarViewContext } from \"../CalendarViewContext\";\nimport { CalendarViewItem } from \"./CalendarViewItem\";\nimport { isKey } from \"../../../utils/keyboard\";\nimport { ECalendarDateMarkType, ECalendarViewMode } from \"../enums\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { ICalendarViewProps } from \"../types\";\nimport styles from \"../styles/CalendarView.module.less\";\n\n/** Свойства компонента CalendarViewDays. */\nexport interface ICalendarViewDaysProps extends Omit<\n ICalendarViewProps,\n \"monthHtmlAttributes\" | \"yearHtmlAttributes\"\n> {}\n\n/** Вид календаря с выбором дня. */\nexport const CalendarViewDays: React.FC<ICalendarViewDaysProps> = ({ pickedDate, dayHtmlAttributes = {} }) => {\n const { format, periodId, limitRange, viewDate, markedDays, disabledDays, onDateSelect, onPageChange } =\n useContext(CalendarContext);\n const { viewItemFocusedRef } = useContext(CalendarViewContext);\n const startDate = viewDate.clone().startOf(\"month\").startOf(\"week\");\n\n /** Проверяет, является ли дата отключенной. */\n const isDisabledDate = useCallback(\n (date: moment.Moment) =>\n isDateOutOfRange(date, limitRange, \"day\") || isDayDisabled(date.format(format), disabledDays),\n [limitRange, disabledDays, format],\n );\n\n /** Получить первую доступную для фокуса дату. */\n const getInitialTabbableDate = useCallback(() => {\n if (pickedDate && pickedDate.isSame(viewDate, \"month\")) {\n return pickedDate;\n } else {\n const date = viewDate.clone().startOf(\"month\");\n\n for (let i = 0; i < date.daysInMonth(); i++) {\n date.add(i, \"day\");\n\n if (!isDisabledDate(date)) {\n return date;\n }\n }\n }\n }, [pickedDate, viewDate, isDisabledDate]);\n\n const [tabbableDate, setTabbableDate] = useState(getInitialTabbableDate());\n\n useEffect(() => {\n if (!viewItemFocusedRef.current) {\n setTabbableDate(getInitialTabbableDate());\n }\n }, [viewDate, viewItemFocusedRef, getInitialTabbableDate]);\n\n /** Рендер заголовка таблицы. */\n const renderTableHead = () => {\n const weekdays = moment.weekdays(true);\n const weekdaysMin = moment.weekdaysMin(true);\n\n return (\n <thead>\n <tr>\n {WEEKDAYS_SET.map((header) => (\n <th\n key={`calendar-table-header-${header}`}\n className={styles.calendarViewDaysHeader}\n abbr={weekdays[header]}\n >\n {weekdaysMin[header]}\n </th>\n ))}\n </tr>\n </thead>\n );\n };\n\n /** Рендер тела таблицы. */\n const renderTableBody = () => (\n <tbody className={styles.calendarViewDaysBody}>\n {[0, 1, 2, 3, 4, 5].map((row) => (\n <tr key={`calendar-table-row-${row}`}>\n {[0, 1, 2, 3, 4, 5, 6].map((cell) => renderTableData(row, cell))}\n </tr>\n ))}\n </tbody>\n );\n\n /** Рендер ячейки таблицы. */\n const renderTableData = (row: number, cell: number) => {\n const date = moment(startDate).add(row * 7 + cell, \"day\");\n const classNames = clsx({ [styles.current]: isCurrentDate(date) });\n const active = isActiveDate(date);\n const disabled = isDisabledDate(date);\n const tabbable = !disabled && isTabbableDay(date);\n const muted = isMutedDate(date);\n const markType = getMarkType(date);\n\n return (\n <CalendarViewItem\n key={`calendar-table-data-${cell}`}\n className={classNames}\n {...(typeof dayHtmlAttributes === \"function\"\n ? dayHtmlAttributes({ marked: markType !== undefined })\n : dayHtmlAttributes)}\n date={date}\n unit=\"day\"\n active={active}\n disabled={disabled}\n tabbable={tabbable}\n muted={muted}\n markType={markType}\n onKeyDown={handleItemKeyDown(date)}\n onDateSelect={handleDateSelect}\n >\n {date.date()}\n </CalendarViewItem>\n );\n };\n\n /** Проверяет, может ли дата получить фокус при навигации. */\n const isTabbableDay = (date: moment.Moment) => {\n if (tabbableDate) {\n return date.isSame(tabbableDate, \"day\");\n }\n\n return false;\n };\n\n /** Проверяет, относится ли дата к текущему месяцу. */\n const isMutedDate = (date: moment.Moment) => {\n return !date.isSame(viewDate, \"month\");\n };\n\n /** Проверяет, является ли дата сегодняшней. */\n const isCurrentDate = (date: moment.Moment) => {\n return date.isSame(moment(), \"day\");\n };\n\n /** Проверяет, является ли дата активной. */\n const isActiveDate = (date: moment.Moment) => {\n return !!pickedDate && date.isSame(pickedDate, \"day\");\n };\n\n /** Проверяет, является ли дата отмеченной. */\n const getMarkType = (date: moment.Moment) => {\n if (markedDays) {\n const day = date.format(format);\n\n if (Array.isArray(markedDays)) {\n if (markedDays.includes(day)) {\n return ECalendarDateMarkType.BASIC;\n }\n } else if (day in markedDays) {\n return markedDays[date.format(format)];\n }\n }\n };\n\n /** Возвращает доступную для выбора дату после сдвига. */\n const getShiftedDate = (\n currentDate: moment.Moment,\n operation: \"add\" | \"subtract\",\n amount: number,\n unit: \"day\" | \"week\" | \"month\",\n ) => {\n const day = currentDate.clone();\n const shiftDay = {\n add: moment.fn.add.bind(day),\n subtract: moment.fn.subtract.bind(day),\n }[operation];\n\n while (shiftDay(amount, unit)) {\n // Если вышли за пределы доступного периода – возвращаем текущий день.\n if (isDateOutOfRange(day, limitRange, \"day\")) {\n return currentDate;\n }\n // Если день доступен для выбора – выходим из поиска.\n if (!isDisabledDate(day)) {\n break;\n }\n }\n\n return day;\n };\n\n /** Обработчик нажатия клавиши CalendarViewItem. */\n const handleItemKeyDown = (date: moment.Moment) => (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n const key = event.code || event.keyCode;\n let nextFocusedDate;\n\n if (isKey(key, \"ARROW_RIGHT\")) {\n nextFocusedDate = getShiftedDate(date, \"add\", 1, \"day\");\n event.preventDefault();\n } else if (isKey(key, \"ARROW_LEFT\")) {\n nextFocusedDate = getShiftedDate(date, \"subtract\", 1, \"day\");\n event.preventDefault();\n } else if (isKey(key, \"ARROW_DOWN\")) {\n nextFocusedDate = getShiftedDate(date, \"add\", 1, \"week\");\n event.preventDefault();\n } else if (isKey(key, \"ARROW_UP\")) {\n nextFocusedDate = getShiftedDate(date, \"subtract\", 1, \"week\");\n event.preventDefault();\n } else if (isKey(key, \"PAGE_DOWN\")) {\n nextFocusedDate = getShiftedDate(date, \"add\", 1, \"month\");\n event.preventDefault();\n } else if (isKey(key, \"PAGE_UP\")) {\n nextFocusedDate = getShiftedDate(date, \"subtract\", 1, \"month\");\n event.preventDefault();\n }\n\n if (nextFocusedDate) {\n changeTabbableDate(nextFocusedDate);\n }\n };\n\n /** Обработчик клика по дате. */\n const handleDateSelect = (date: moment.Moment) => {\n onDateSelect(date);\n };\n\n /** Изменение фокусируемой даты. */\n const changeTabbableDate = (date: moment.Moment) => {\n setTabbableDate(date);\n\n if (date.isBefore(viewDate, \"month\")) {\n date = viewDate.clone().subtract(1, \"month\");\n onPageChange(date, ECalendarViewMode.DAYS);\n } else if (date.isAfter(viewDate, \"month\")) {\n date = viewDate.clone().add(1, \"month\");\n onPageChange(date, ECalendarViewMode.DAYS);\n }\n };\n\n return (\n <table className={styles.calendarViewDays} role=\"grid\" aria-labelledby={periodId}>\n {renderTableHead()}\n {renderTableBody()}\n </table>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarViewDays.js","sources":["../../../../src/components/Calendar/components/CalendarViewDays.tsx"],"sourcesContent":["import React, { useState, useEffect, useContext, useCallback } from \"react\";\nimport moment from \"moment\";\nimport clsx from \"clsx\";\nimport {\n ICalendarNavigationShift,\n ICalendarNavigationSteps,\n getFirstEnabledDate,\n getNavigationShift,\n isDateOutOfRange,\n isDayDisabled,\n shiftDate,\n} from \"../utils\";\nimport { WEEKDAYS_SET, WEEKS_SET } from \"../../../consts/DateConst\";\nimport { CalendarViewContext } from \"../CalendarViewContext\";\nimport { CalendarViewItem } from \"./CalendarViewItem\";\nimport { ECalendarDateMarkType, ECalendarViewMode } from \"../enums\";\nimport { CalendarContext } from \"../CalendarContext\";\nimport { ICalendarViewProps } from \"../types\";\nimport styles from \"../styles/CalendarView.module.less\";\n\n/** Свойства компонента CalendarViewDays. */\nexport interface ICalendarViewDaysProps extends Omit<\n ICalendarViewProps,\n \"monthHtmlAttributes\" | \"yearHtmlAttributes\"\n> {}\n\n/** Величины сдвига даты при клавиатурной навигации по сетке дней. */\nconst NAVIGATION_STEPS: ICalendarNavigationSteps = {\n horizontal: { amount: 1, unit: \"day\" },\n vertical: { amount: 1, unit: \"week\" },\n page: { amount: 1, unit: \"month\" },\n};\n\n/** Вид календаря с выбором дня. */\nexport const CalendarViewDays: React.FC<ICalendarViewDaysProps> = ({ pickedDate, dayHtmlAttributes = {} }) => {\n const { format, periodId, limitRange, viewDate, markedDays, disabledDays, onDateSelect, onPageChange } =\n useContext(CalendarContext);\n const { viewItemFocusedRef } = useContext(CalendarViewContext);\n const startDate = viewDate.clone().startOf(\"month\").startOf(\"week\");\n\n /** Проверяет, является ли дата отключенной. */\n const isDisabledDate = useCallback(\n (date: moment.Moment) =>\n isDateOutOfRange(date, limitRange, \"day\") || isDayDisabled(date.format(format), disabledDays),\n [limitRange, disabledDays, format],\n );\n\n /** Получить первую доступную для фокуса дату. */\n const getInitialTabbableDate = useCallback(() => {\n if (pickedDate && pickedDate.isSame(viewDate, \"month\")) {\n return pickedDate;\n }\n\n const startOfMonth = viewDate.clone().startOf(\"month\");\n\n return getFirstEnabledDate(startOfMonth, startOfMonth.daysInMonth(), \"day\", isDisabledDate);\n }, [pickedDate, viewDate, isDisabledDate]);\n\n const [tabbableDate, setTabbableDate] = useState(getInitialTabbableDate());\n\n useEffect(() => {\n if (!viewItemFocusedRef.current) {\n setTabbableDate(getInitialTabbableDate());\n }\n }, [viewDate, viewItemFocusedRef, getInitialTabbableDate]);\n\n /** Рендер заголовка таблицы. */\n const renderTableHead = () => {\n const weekdays = moment.weekdays(true);\n const weekdaysMin = moment.weekdaysMin(true);\n\n return (\n <thead>\n <tr>\n {WEEKDAYS_SET.map((header) => (\n <th\n key={`calendar-table-header-${header}`}\n className={styles.calendarViewDaysHeader}\n abbr={weekdays[header]}\n >\n {weekdaysMin[header]}\n </th>\n ))}\n </tr>\n </thead>\n );\n };\n\n /** Рендер тела таблицы. */\n const renderTableBody = () => (\n <tbody className={styles.calendarViewDaysBody}>\n {WEEKS_SET.map((row) => (\n <tr key={`calendar-table-row-${row}`}>{WEEKDAYS_SET.map((cell) => renderTableData(row, cell))}</tr>\n ))}\n </tbody>\n );\n\n /** Рендер ячейки таблицы. */\n const renderTableData = (row: number, cell: number) => {\n const date = moment(startDate).add(row * 7 + cell, \"day\");\n const classNames = clsx({ [styles.current]: isCurrentDate(date) });\n const active = isActiveDate(date);\n const disabled = isDisabledDate(date);\n const tabbable = !disabled && isTabbableDay(date);\n const muted = isMutedDate(date);\n const markType = getMarkType(date);\n\n return (\n <CalendarViewItem\n key={`calendar-table-data-${cell}`}\n className={classNames}\n {...(typeof dayHtmlAttributes === \"function\"\n ? dayHtmlAttributes({ marked: markType !== undefined })\n : dayHtmlAttributes)}\n date={date}\n unit=\"day\"\n active={active}\n disabled={disabled}\n tabbable={tabbable}\n muted={muted}\n markType={markType}\n onKeyDown={handleItemKeyDown(date)}\n onDateSelect={onDateSelect}\n >\n {date.date()}\n </CalendarViewItem>\n );\n };\n\n /** Проверяет, может ли дата получить фокус при навигации. */\n const isTabbableDay = (date: moment.Moment) => {\n if (tabbableDate) {\n return date.isSame(tabbableDate, \"day\");\n }\n\n return false;\n };\n\n /** Проверяет, относится ли дата к текущему месяцу. */\n const isMutedDate = (date: moment.Moment) => {\n return !date.isSame(viewDate, \"month\");\n };\n\n /** Проверяет, является ли дата сегодняшней. */\n const isCurrentDate = (date: moment.Moment) => {\n return date.isSame(moment(), \"day\");\n };\n\n /** Проверяет, является ли дата активной. */\n const isActiveDate = (date: moment.Moment) => {\n return !!pickedDate && date.isSame(pickedDate, \"day\");\n };\n\n /** Проверяет, является ли дата отмеченной. */\n const getMarkType = (date: moment.Moment) => {\n if (markedDays) {\n const day = date.format(format);\n\n if (Array.isArray(markedDays)) {\n if (markedDays.includes(day)) {\n return ECalendarDateMarkType.BASIC;\n }\n } else if (day in markedDays) {\n return markedDays[day];\n }\n }\n };\n\n /** Возвращает доступную для выбора дату после сдвига. Недоступные дни пропускаются. */\n const getShiftedDate = (currentDate: moment.Moment, shift: ICalendarNavigationShift) => {\n const day = currentDate.clone();\n\n do {\n shiftDate(day, shift);\n\n // Если вышли за пределы доступного периода – возвращаем текущий день.\n if (isDateOutOfRange(day, limitRange, \"day\")) {\n return currentDate;\n }\n // Если день недоступен для выбора – продолжаем поиск в том же направлении.\n } while (isDisabledDate(day));\n\n return day;\n };\n\n /** Обработчик нажатия клавиши CalendarViewItem. */\n const handleItemKeyDown = (date: moment.Moment) => (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n const shift = getNavigationShift(event.code || event.keyCode, NAVIGATION_STEPS);\n\n if (!shift) {\n return;\n }\n\n event.preventDefault();\n changeTabbableDate(getShiftedDate(date, shift));\n };\n\n /** Изменение фокусируемой даты. При уходе даты за пределы страницы перелистывает страницу на шаг NAVIGATION_STEPS.page. */\n const changeTabbableDate = (date: moment.Moment) => {\n setTabbableDate(date);\n\n if (date.isBefore(viewDate, \"month\")) {\n onPageChange(\n shiftDate(viewDate.clone(), { operation: \"subtract\", ...NAVIGATION_STEPS.page }),\n ECalendarViewMode.DAYS,\n );\n } else if (date.isAfter(viewDate, \"month\")) {\n onPageChange(\n shiftDate(viewDate.clone(), { operation: \"add\", ...NAVIGATION_STEPS.page }),\n ECalendarViewMode.DAYS,\n );\n }\n };\n\n return (\n <table className={styles.calendarViewDays} role=\"grid\" aria-labelledby={periodId}>\n {renderTableHead()}\n {renderTableBody()}\n </table>\n );\n};\n\nCalendarViewDays.displayName = \"CalendarViewDays\";\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import "../../../chunks/vendor-
|
|
3
|
+
import "../../../chunks/vendor-BtZO8a0z.js";
|
|
4
4
|
import "../enums.js";
|
|
5
5
|
import "../CalendarViewContext.js";
|
|
6
6
|
import "../../../utils/keyboard.js";
|
|
7
|
-
import { C } from "../../../chunks/CalendarViewItem-
|
|
7
|
+
import { C } from "../../../chunks/CalendarViewItem-RCL-JeQJ.js";
|
|
8
8
|
export {
|
|
9
9
|
C as CalendarViewItem
|
|
10
10
|
};
|