@ryuzaki13/react-foundation-ui 1.8.6 → 1.8.8
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/dist/advanced-search/index.js +2 -2
- package/dist/base-table/index.js +1 -1
- package/dist/chunks/{base-table-CYbtifH0.js → base-table-CdcVMDGY.js} +2 -2
- package/dist/chunks/{base-table-CYbtifH0.js.map → base-table-CdcVMDGY.js.map} +1 -1
- package/dist/chunks/{context-menu-L4KM0FRD.js → context-menu-CE_wfxct.js} +2 -2
- package/dist/chunks/{context-menu-L4KM0FRD.js.map → context-menu-CE_wfxct.js.map} +1 -1
- package/dist/chunks/date-input-g6l1iDmf.js.map +1 -1
- package/dist/chunks/{multi-select-CCgoTHWI.js → multi-select-CHZhWoq6.js} +2 -2
- package/dist/chunks/{multi-select-CCgoTHWI.js.map → multi-select-CHZhWoq6.js.map} +1 -1
- package/dist/chunks/{picker-Cb3D2Hts.js → picker-BcB3rSQt.js} +2 -2
- package/dist/chunks/picker-BcB3rSQt.js.map +1 -0
- package/dist/chunks/{select-Baek-IUe.js → select-BorNxjrG.js} +2 -2
- package/dist/chunks/{select-Baek-IUe.js.map → select-BorNxjrG.js.map} +1 -1
- package/dist/chunks/{table-CrQiurtA.js → table-DcABGh_F.js} +2 -2
- package/dist/chunks/{table-CrQiurtA.js.map → table-DcABGh_F.js.map} +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tree-select/index.js +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +4 -4
- package/storybook-static/assets/{Badge-CV8uR5lW.js → Badge-CxQIV1VM.js} +1 -1
- package/storybook-static/assets/{Badge.stories-DqTFDEB6.js → Badge.stories-BJkImUYK.js} +1 -1
- package/storybook-static/assets/{BadgeList-CVWvhSS7.js → BadgeList-DCcUez-d.js} +1 -1
- package/storybook-static/assets/{Button-C5Z6nJ9s.js → Button-BM_JnsIi.js} +1 -1
- package/storybook-static/assets/{Button-DtySOeyD.js → Button-Dh35R_JE.js} +1 -1
- package/storybook-static/assets/{Button.stories--Wr67DaY.js → Button.stories-BsgEwN-G.js} +1 -1
- package/storybook-static/assets/{CalendarView-ZzqQ8UIe.js → CalendarView-Bu5aaqrw.js} +1 -1
- package/storybook-static/assets/{CheckBox-BfNP6vO6.js → CheckBox-B93BCdtW.js} +1 -1
- package/storybook-static/assets/{CheckBox-BBNTe4u8.js → CheckBox-DB_H7Jkd.js} +1 -1
- package/storybook-static/assets/{CheckBox.module-CoYygdZx.js → CheckBox.module-BOAVN-Ny.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-B4Sv2TXp.js → CheckBox.stories-ChtE7IN-.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-Ce5w8Y2l.js → Color-6AOWCN3U-CuY1qZ6d.js} +1 -1
- package/storybook-static/assets/{ContextMenu-Boi0R7-s.js → ContextMenu-B30yur26.js} +1 -1
- package/storybook-static/assets/{ContextMenu-D-lV53Zc.js → ContextMenu-DeoYEX8n.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-D_rxDbLk.js → ContextMenu.stories-B80uu025.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-VYfjUfhW.js → CustomOptionButton-DQp71AHJ.js} +1 -1
- package/storybook-static/assets/{DateInput-f-RcBdOb.js → DateInput-CMhHGS-s.js} +1 -1
- package/storybook-static/assets/{DateInput-q2hPsJcH.js → DateInput-wIlcdKHD.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-zQzjIsfx.js → DateInput.stories-DS45syC3.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DQBOF8f5.js → DateRangePresetSelect-31S_37_9.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-Ciikik1_.js → DateRangePresetSelect-DgpOHDW1.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-BF8IP5Ep.js → DateRangePresetSelect.stories-3VlGka98.js} +1 -1
- package/storybook-static/assets/{Detail-CEl8URNQ.js → Detail-CxFnUUkK.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Mr3ypLAA.js → Detail.stories-DqgQuwn1.js} +1 -1
- package/storybook-static/assets/{Dialog-Dj2y3EO1.js → Dialog-B0VCykP7.js} +1 -1
- package/storybook-static/assets/{Dialog-BydPFV17.js → Dialog-CdJK__QW.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-C1WlZdyp.js → Dialog.stories-C1ABO4hq.js} +1 -1
- package/storybook-static/assets/{Disclosure-DH77E5hY.js → Disclosure-g89eWjtw.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-B9ZVczUX.js → Disclosure.stories-B2CCl9Dg.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-CIoFeosY.js → DisclosureGroup-DZ-1k-kK.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-CbJN3X6f.js → DocsRenderer-JROSPFPF-C54xfLi3.js} +2 -2
- package/storybook-static/assets/{DropZone-DTBV-X-J.js → DropZone-CpVX5FJc.js} +1 -1
- package/storybook-static/assets/{DropZone-CR7xRn_b.js → DropZone-FboQPtkt.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-Cw_og1Cs.js → DropZone.stories-Dtt5tKix.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CVIeHT8N.js → DropdownMenu--_ifmQMt.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-D8U6v8X7.js → ExpandableActionPanel-B2g9YRDI.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-D42CZyOc.js → ExpandableActionPanel.stories-DnhAdkcl.js} +1 -1
- package/storybook-static/assets/{Flex-Bcsl0U5O.js → Flex-B-x1Ohkp.js} +1 -1
- package/storybook-static/assets/{Flex.stories-C0vSa3mh.js → Flex.stories-BYEkhW_Q.js} +1 -1
- package/storybook-static/assets/{FlexContainer-LmZIdhq2.js → FlexContainer-BWyPlTMB.js} +1 -1
- package/storybook-static/assets/{FlexItem-vkDYa5tA.js → FlexItem-pu3E11Sf.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-DvU3oc_q.js → FloatingPopover-DOyMIo2-.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-Cja58sq0.js +15 -0
- package/storybook-static/assets/{Grid-BCzygAqy.js → Grid-CzO0Ae1r.js} +1 -1
- package/storybook-static/assets/{Grid-Wl0Y0YAh.js → Grid-DDQ5Q1Zu.js} +1 -1
- package/storybook-static/assets/{Grid.stories-G6gMmKCP.js → Grid.stories-Bh-o6XTQ.js} +1 -1
- package/storybook-static/assets/{GridContainer-qDguE1HS.js → GridContainer-fKYgDsLl.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-u6rOvDbd.js → ImageCropper.stories-Dy2RiAcH.js} +3 -3
- package/storybook-static/assets/{ImageRenderer-BYIRHN5G.js → ImageRenderer-qllJTZXD.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-BMEHEIVH.js → ImageRenderer.stories-DvE7n1QW.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DiEA93Yz.js → ImageView.stories-BmxCb-j1.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-DyxctGxM.js → ImageViewer.stories-7cW5swP8.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime--h_3C2s0.js → ImageViewerRuntime-CZu7J7wR.js} +2 -2
- package/storybook-static/assets/{Input-B2kOwWOU.js → Input-DWC0iHTm.js} +1 -1
- package/storybook-static/assets/{Input-CViRQ_rj.js → Input-JgKfpyoY.js} +1 -1
- package/storybook-static/assets/{Input.stories-D9eo9MWc.js → Input.stories-D_3AMqSf.js} +1 -1
- package/storybook-static/assets/{InputDateTime-T9_iyG4G.js → InputDateTime-DZOKr9oV.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-DzegljaN.js → InputDateTime.stories-CFVXMtGS.js} +1 -1
- package/storybook-static/assets/{InputFile-CA3YpXnm.js → InputFile-BM_2v8Vr.js} +1 -1
- package/storybook-static/assets/{InputFile-Cvdj6RfC.js → InputFile-QkBKG4MF.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-C18UaXPS.js → InputFile.stories-y_bqA0ji.js} +1 -1
- package/storybook-static/assets/{InputFiles-nS_qsXY7.js → InputFiles-0MQlpVXZ.js} +1 -1
- package/storybook-static/assets/{InputFiles-C4OkTG9M.js → InputFiles-CPMaf-0m.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-BYd0Pe0R.js → InputFiles.stories-FvkbnEu9.js} +1 -1
- package/storybook-static/assets/{InputFilesList-CXPf7Ui_.js → InputFilesList-LSKKFWI2.js} +1 -1
- package/storybook-static/assets/{InputImage-kd50L1Gf.js → InputImage-BtWMRvPj.js} +1 -1
- package/storybook-static/assets/{InputImage-jDVIxP7S.js → InputImage-CtHvsmW2.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-D-xmS4Qj.js → InputImage.stories-DB4Dpqrp.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-D13nzSK7.js → InteractiveComponents-TycCPNdw.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-yITzDh-Y.js → InteractiveComponents.stories-BPL6ph-t.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BfYXGIKb.js → LayoutPicker-121F1oKo.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-9FVo0bF3.js → LayoutPicker-amQe8EyF.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-B-UnuGFM.js → LayoutPicker.stories-DpcjEEH4.js} +1 -1
- package/storybook-static/assets/{Listbox-9LVlsDzw.js → Listbox-D-Sqd9jb.js} +1 -1
- package/storybook-static/assets/{Listbox-C53-i-L6.js → Listbox-P5hFPYDA.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-CCN72ABE.js → Listbox.stories-CL85ceLu.js} +1 -1
- package/storybook-static/assets/{Modal-CoXpuByh.js → Modal-Cn7uJut0.js} +1 -1
- package/storybook-static/assets/{Modal.stories-DAj_oPSt.js → Modal.stories-DgRduIwP.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-C7pGT0B3.js → ModalManagerProvider-BpTBqDR5.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DZ2krz-D.js → MultiSelect-BAHGljvC.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DqeGNK15.js → MultiSelect-Bdq-guyW.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-BoVHXMbn.js → MultiSelect.stories-6C-TQL1s.js} +1 -1
- package/storybook-static/assets/{NoData-N6Pbu0LD.js → NoData-mxG4mL4e.js} +1 -1
- package/storybook-static/assets/{NotificationsHost--uPz1G3j.js → NotificationsHost-CygepfX-.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-B-X-Ljxs.js → NotificationsHost.stories-B7ZmvjI6.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-7U6nJdqB.js → ODataMultiSelect-BHl4B00F.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-B-t6MsOr.js → ODataMultiSelect.stories-BHSj5rjf.js} +1 -1
- package/storybook-static/assets/{ODataSelect-Dy-fSgE6.js → ODataSelect-foaFaP6d.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DhqHtcmD.js → ODataSelect.stories-82q9oBl6.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-Ol0nuytU.js → ODataTreeMultiSelect-CyFx96Sj.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-BupVzhbY.js → ODataTreeMultiSelect.stories-zLBWRIRi.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-EkpDmDyk.js → ODataTreeSelect-DyPqYfQa.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-CFdbwyEg.js → ODataTreeSelect.stories-BSowZVpd.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-rmyPl9f5.js → OneStepScroller-B_7N8BYz.js} +1 -1
- package/storybook-static/assets/Option-CVAAv8AB.css +1 -0
- package/storybook-static/assets/{Option-72PrSDkj.js → Option-DvXrygAo.js} +1 -1
- package/storybook-static/assets/{OptionButton-Br8QoJL7.js → OptionButton-CaiIhG8s.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DEZVGWGR.js → PeriodSelect-CcheHEx9.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-C5Xk-g4Y.js → PeriodSelect-DQWcrf3z.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-BVBP97HW.js → PeriodSelect.stories-BoZAwgxD.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-DSmRHX1I.js → PickerTriggerActions-C7iwI6po.js} +1 -1
- package/storybook-static/assets/{Popover-BpbeIq6-.js → Popover-BA61XeKS.js} +1 -1
- package/storybook-static/assets/{Popover-1KQwBxEJ.js → Popover-DemWjUAR.js} +1 -1
- package/storybook-static/assets/{Popover.stories-6RDZ0TND.js → Popover.stories-BZtYXuDy.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-BdkKzY69.js → PresetRangeDateInput-BPRlqmwn.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-CDhgmyFs.js → PresetRangeDateInput-QZD02nll.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-BoE41IUK.js → PresetRangeDateInput.stories-fqhQho_t.js} +1 -1
- package/storybook-static/assets/{PresetSelect-CA5AyOOy.js → PresetSelect-604ElKuM.js} +1 -1
- package/storybook-static/assets/README-BSfoRcmy.js +648 -0
- package/storybook-static/assets/README-B_PcyrCy.js +876 -0
- package/storybook-static/assets/README-Bbmv2xJo.js +860 -0
- package/storybook-static/assets/README-C1ki7lL7.js +417 -0
- package/storybook-static/assets/README-CFCpUZA-.js +1093 -0
- package/storybook-static/assets/README-CMoAGNQ5.js +282 -0
- package/storybook-static/assets/README-CN_Y4pYZ.js +273 -0
- package/storybook-static/assets/README-COR9RMzk.js +1487 -0
- package/storybook-static/assets/README-CRfJujEw.js +1309 -0
- package/storybook-static/assets/README-CZ49-EeH.js +347 -0
- package/storybook-static/assets/README-D01AizPk.js +288 -0
- package/storybook-static/assets/README-DL6uUTPo.js +694 -0
- package/storybook-static/assets/README-DSHEoxUa.js +334 -0
- package/storybook-static/assets/README-Q-znYcgF.js +338 -0
- package/storybook-static/assets/README-qNwFrtLd.js +420 -0
- package/storybook-static/assets/{RadioButton-IDzSzftl.js → RadioButton-CbD6ZIHI.js} +1 -1
- package/storybook-static/assets/{RadioButton-DCoo55ld.js → RadioButton-DndugDg6.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-BEk1uc2x.js → RadioButton.stories-DLBVXRhH.js} +1 -1
- package/storybook-static/assets/{RadioGroup-VSiqFUI1.js → RadioGroup-CtB8u1R5.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CbBmuFtC.js → RadioGroup-Cvgo5T_8.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DR7Vskyy.js → RadioGroup.stories-L1ZkFYiC.js} +1 -1
- package/storybook-static/assets/{Scrollable-CDZ18AWy.js → Scrollable-CGvhxTPd.js} +1 -1
- package/storybook-static/assets/{Select-IWQpo0LQ.js → Select-ByBilOog.js} +1 -1
- package/storybook-static/assets/{Select-YjugVUKX.js → Select-D4MdId1m.js} +1 -1
- package/storybook-static/assets/{Select.stories-4JpnXfaB.js → Select.stories-Dt-IM20Z.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-oxnbV26a.js → SerializableSelect-nkDX-4xv.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-CjVcuU4t.js → SerializableSelect.stories-BWozK3v0.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DFPke7bv.js → SingleDateTimeInput-BM3iEHnL.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CQ1_ABKA.js → SingleDateTimeInput-DwIACH7q.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories--Nky_yBh.js → SingleDateTimeInput.stories-GluT9Gra.js} +1 -1
- package/storybook-static/assets/{Slider-DGVl0dbV.js → Slider-Cijr3rDj.js} +1 -1
- package/storybook-static/assets/{Slider-L7pqW7xG.js → Slider-DZF2K2Ew.js} +1 -1
- package/storybook-static/assets/{Slider.stories-DkqUavTk.js → Slider.stories-CKkDEud8.js} +1 -1
- package/storybook-static/assets/{SliderInput-B7U8M2UN.js → SliderInput-BpmhOQah.js} +1 -1
- package/storybook-static/assets/{SliderInput-Dn5-Dt4w.js → SliderInput-D_DduGKi.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-B9WBQOiA.js → SliderInput.stories-vb6qkP3q.js} +1 -1
- package/storybook-static/assets/{Sortable-DxdXjG1a.js → Sortable-CbhgYqYI.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-D1rp2l9M.js → Sortable.stories-BGYwnEIs.js} +1 -1
- package/storybook-static/assets/{Splitter-yZpkev96.js → Splitter-CIrkYu0w.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-C3TCKNhu.js → Splitter.stories-BiWcwOKt.js} +1 -1
- package/storybook-static/assets/{StateSelect-CaAFL9Jr.js → StateSelect-PvcnwH-_.js} +1 -1
- package/storybook-static/assets/{StateSelect-DZjPblfU.js → StateSelect-ZSH1VqJo.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-D7EwT0sO.js → StateSelect.stories-XIHGksRX.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-DuaWy2LK.js → StringToggle.stories-ZIPWDjST.js} +1 -1
- package/storybook-static/assets/{Switch-C0GQ2oXw.js → Switch-Bf1TvVDU.js} +1 -1
- package/storybook-static/assets/{Switch-DCNQT47U.js → Switch-DHkppwyI.js} +1 -1
- package/storybook-static/assets/{Switch.stories-CAIEfQb6.js → Switch.stories-DflM2SkS.js} +1 -1
- package/storybook-static/assets/{Table-Be1uta4G.js → Table-CzJkgWa8.js} +1 -1
- package/storybook-static/assets/Table.stories-BaalIcC1.js +207 -0
- package/storybook-static/assets/{Tabs-Co7Z92UK.js → Tabs-Cys2Volu.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-D84U8aJM.js → Tabs.stories-D_fVcYeD.js} +2 -2
- package/storybook-static/assets/{TabsBox-CUpOXGdh.js → TabsBox-B9W9qy2m.js} +1 -1
- package/storybook-static/assets/{TagInput-BbLK6uxZ.js → TagInput-CnPuhz64.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-D34JCfyM.js → TagInput.stories-CU9IW-n_.js} +1 -1
- package/storybook-static/assets/{Text-DtJw3wMU.js → Text-CellD6Ua.js} +1 -1
- package/storybook-static/assets/{Textarea-C9MWeqLC.js → Textarea-BIne8oBO.js} +1 -1
- package/storybook-static/assets/{Textarea-Cz6RWJdh.js → Textarea-CNJiLJKb.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-DqK16XGS.js → Textarea.stories-BfgWsqEp.js} +1 -1
- package/storybook-static/assets/{TimePanel-DcZ-UUgO.js → TimePanel-BY8XyZeb.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-BafOmX3I.js → TimePanel.stories-BEqFKJd3.js} +1 -1
- package/storybook-static/assets/{Toggle-oYTkCbEJ.js → Toggle-CTmUXxr_.js} +1 -1
- package/storybook-static/assets/{Toggle-CgU6o7qM.js → Toggle-Dyiyi7DV.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-CbmOBWIu.js → Toggle.stories-DysLQdUc.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-B4WfXc4Z.js → TreeMultiSelect-CDOGzEjr.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DN_CYg-F.js → TreeMultiSelect-DUQQUlTr.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-DYVj6Rm6.js → TreeMultiSelect.stories-Ca1Ezfej.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-8gA_hIXn.js → TreePickerBase-CHdoSW2m.js} +1 -1
- package/storybook-static/assets/{TreeSelect-2bjYl5ox.js → TreeSelect-DBpqAEoz.js} +1 -1
- package/storybook-static/assets/{TreeSelect-CTtmHF-B.js → TreeSelect-DvmeQO0H.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-BEAY61pJ.js → TreeSelect.stories-zRpBXhMU.js} +1 -1
- package/storybook-static/assets/{TreeTable-B4BaHybr.js → TreeTable-Dpr1hsTN.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-lLwH2Gzl.js → TreeTable.stories-D4mBQSif.js} +2 -2
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-Cakt_JaX.js → WithTooltip-7X4HQR7L-DQ4Qthn2.js} +1 -1
- package/storybook-static/assets/{array-D-_yMMUK-CIRmlF93.js → array-D-_yMMUK-BQ0uu1hZ.js} +1 -1
- package/storybook-static/assets/{async-DFALSYBD.js → async-phnLSjcK.js} +1 -1
- package/storybook-static/assets/axe-_9eNhXQJ.js +20 -0
- package/storybook-static/assets/{blocks-Dr191OF5.js → blocks-Dx5UE11l.js} +6 -6
- package/storybook-static/assets/check-Bn8-yPh2.js +1 -0
- package/storybook-static/assets/chevron-down-BZ9pvYFr.js +1 -0
- package/storybook-static/assets/chevron-left-DWqaY-om.js +1 -0
- package/storybook-static/assets/chevron-right-NPmcbCK0.js +1 -0
- package/storybook-static/assets/{chunk-242VQQM5-BMWWiybC.js → chunk-242VQQM5-bHL6qIJq.js} +1 -1
- package/storybook-static/assets/{chunk-DRQKCCAG-CqE-Zrl9.js → chunk-DRQKCCAG-DvsmU7ha.js} +1 -1
- package/storybook-static/assets/{chunk-IMSF75WX-yvVUwIQZ.js → chunk-IMSF75WX-CGYlPTyG.js} +1 -1
- package/storybook-static/assets/{chunk-KJHJLCBK-D-yQfkOi.js → chunk-KJHJLCBK-yRlRMfNs.js} +1 -1
- package/storybook-static/assets/{chunk-QQBDHPVZ-B98qboss.js → chunk-QQBDHPVZ-DC5n6Pix.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-BR_vFDlt.js → chunk-W22LQPXL-BYQdtiug.js} +1 -1
- package/storybook-static/assets/{circle-alert-Is-jAV5H.js → circle-alert-CJwtzjGy.js} +1 -1
- package/storybook-static/assets/circle-check-DwTtGRlB.js +1 -0
- package/storybook-static/assets/{components-DqFIc_sf.js → components-Cs2kpiik.js} +12 -12
- package/storybook-static/assets/{contextMenu-CWKJO78E.js → contextMenu-B5c0sszu.js} +1 -1
- package/storybook-static/assets/{createControlledStoryRender-DHsyXc1B.js → createControlledStoryRender-BouhvX-R.js} +1 -1
- package/storybook-static/assets/{date-segments-D3HouZ37.js → date-segments-DeoMkKv9.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-V5HI39JH.js → defaultRenderers-BHXboKuy.js} +1 -1
- package/storybook-static/assets/{dom-B3G_GtJw.js → dom-DBd_DWF8.js} +1 -1
- package/storybook-static/assets/{download-B61X2hm8.js → download-r-5pPKGQ.js} +1 -1
- package/storybook-static/assets/{error-BZrNlEUO.js → error-De9R4E_F.js} +1 -1
- package/storybook-static/assets/{file-vPGnhPr-.js → file-CwRoWxeB.js} +1 -1
- package/storybook-static/assets/floating-ui.react-69N16zFe.js +1 -0
- package/storybook-static/assets/formatter-L2YTDE3Q-CRGuSxAF.js +1 -0
- package/storybook-static/assets/{formatters-CBgrBeSA-DY6OIAc8.js → formatters-CBgrBeSA-CqB1pZxS.js} +1 -1
- package/storybook-static/assets/{foundationLib-10USAmEi.js → foundationLib-BIHXPLOP.js} +1 -1
- package/storybook-static/assets/{hooks-C8GJ9Cvf.js → hooks-DC_oxxhF.js} +2 -2
- package/storybook-static/assets/{iframe-Bu7ux79g.js → iframe-C5-IVaAZ.js} +23 -23
- package/storybook-static/assets/iframe-CKeBtmwl.js +1 -0
- package/storybook-static/assets/{info-CnuHFdaB.js → info-CNW3iwvW.js} +1 -1
- package/storybook-static/assets/{matchers-JIUQ3HVY-DvR2XErZ.js → matchers-JIUQ3HVY-C789_MAK.js} +1 -1
- package/storybook-static/assets/{media-BycWpjAl.js → media-D9cE2tzi.js} +1 -1
- package/storybook-static/assets/odata-CGxTTNvg.js +1 -0
- package/storybook-static/assets/{odata-service-B6TxBSLm-BW9QLSrS.js → odata-service-B6TxBSLm-Bq8Ya67E.js} +1 -1
- package/storybook-static/assets/{odataFetchFn-CAzdQ6ar.js → odataFetchFn-BS9TBmIl.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-CX6euJaD.js → odataStoryFixtures-C83OxXaj.js} +2 -2
- package/storybook-static/assets/{persisted-BKBboERB.js → persisted-BPpV66dG.js} +1 -1
- package/storybook-static/assets/{preload-helper-BHmFeTtP.js → preload-helper-wdlQj8DP.js} +1 -1
- package/storybook-static/assets/react-18-D4o7zN8K.js +9 -0
- package/storybook-static/assets/react-B0_DoKoo.js +9 -0
- package/storybook-static/assets/{react-C21x__mS.js → react-BZJXY1be.js} +1 -1
- package/storybook-static/assets/{react-qN2cStNd.js → react-Bl2r1tuC.js} +1 -1
- package/storybook-static/assets/{react-CvkUhHUq.js → react-GkniIHEK.js} +1 -1
- package/storybook-static/assets/{react-dom-2o2phaJG.js → react-dom-BzEl8usk.js} +1 -1
- package/storybook-static/assets/{refresh-cw-ByNiehPJ.js → refresh-cw-BIVSqnGe.js} +1 -1
- package/storybook-static/assets/{rolldown-runtime-C0FnF6B9.js → rolldown-runtime-DkW27tQK.js} +1 -1
- package/storybook-static/assets/{settings-2-BGG8WBgX.js → settings-2-9-qrKLUO.js} +1 -1
- package/storybook-static/assets/{shim-BUMlC1GG.js → shim-DlYORV19.js} +1 -1
- package/storybook-static/assets/{sortable-6C6S-hq-.js → sortable-BTkW6ZiT.js} +1 -1
- package/storybook-static/assets/syntaxhighlighter-QEQV7K2Y-Ch82sVZk.js +6 -0
- package/storybook-static/assets/{theming-mTWhffkp.js → theming-Cvtrnj7n.js} +1 -1
- package/storybook-static/assets/{trash-2-EYPGQg68.js → trash-2-D4oKWLBp.js} +1 -1
- package/storybook-static/assets/{treeStoryFixtures-Ci7STpiz.js → treeStoryFixtures-DXHh9GL3.js} +1 -1
- package/storybook-static/assets/{triangle-alert-qcSLqRkW.js → triangle-alert-CBOrIa31.js} +1 -1
- package/storybook-static/assets/{ui.module-D4CuGr8r.js → ui.module-Cat84Nza.js} +1 -1
- package/storybook-static/assets/{uiClasses-CVGbL980.js → uiClasses-B9c6dZuu.js} +1 -1
- package/storybook-static/assets/{useFlexClasses-Gn9spXEB.js → useFlexClasses-SgVG37Bb.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-LQU24QnI.js → useODataSelectBase-B6fc-K7G.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-0I485gNf.js → useODataTreeData-BEHsAQxw.js} +1 -1
- package/storybook-static/assets/usePickerDefaultFilter-5Q1pAV4d.js +1 -0
- package/storybook-static/assets/{usePickerQuery-B0a5nSeM.js → usePickerQuery-B-2MddV7.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-DMRm063p.js → usePickerTriggerController-CyBsILzT.js} +1 -1
- package/storybook-static/assets/{utils-DUM89eIj.js → utils-tg3ibbzi.js} +1 -1
- package/storybook-static/assets/x-BZ_zKXO5.js +1 -0
- package/storybook-static/iframe.html +7 -7
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +35 -33
- package/storybook-static/sb-manager/globals-runtime.js +7 -7
- package/storybook-static/sb-manager/globals.js +1 -1
- package/storybook-static/sb-manager/runtime.js +88 -89
- package/storybook-static/vite-inject-mocker-entry.js +2 -2
- package/dist/chunks/picker-Cb3D2Hts.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-CGREP0wz.js +0 -15
- package/storybook-static/assets/Option-CwetjUM8.css +0 -1
- package/storybook-static/assets/Table.stories-ByUJbaZl.js +0 -207
- package/storybook-static/assets/axe-Bq-2xuso.js +0 -20
- package/storybook-static/assets/browserAndReact-BDUP5jYY.js +0 -70
- package/storybook-static/assets/check-D56EYchd.js +0 -1
- package/storybook-static/assets/chevron-down-CzEzTRkp.js +0 -1
- package/storybook-static/assets/chevron-left-Dl69q13G.js +0 -1
- package/storybook-static/assets/chevron-right-CJNjsAmt.js +0 -1
- package/storybook-static/assets/circle-check-6tyIZ3Kl.js +0 -1
- package/storybook-static/assets/filesAndExcel-Bs3kqlsI.js +0 -92
- package/storybook-static/assets/floating-ui.react-bhmHzD7p.js +0 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +0 -1
- package/storybook-static/assets/formatters-NGPd1d-h.js +0 -202
- package/storybook-static/assets/formatters-runtime-CCfGWt-f.js +0 -329
- package/storybook-static/assets/iframe-BEvUkaBB.js +0 -1
- package/storybook-static/assets/odata-BslPtJet.js +0 -1
- package/storybook-static/assets/odataAndTables-Cyl3UJOz.js +0 -77
- package/storybook-static/assets/pureUtilities-Bj6GraNW.js +0 -30
- package/storybook-static/assets/react-18-CgkwBzTo.js +0 -9
- package/storybook-static/assets/react-CjYyitxm.js +0 -9
- package/storybook-static/assets/runtimeAndState-mq-BaPyx.js +0 -93
- package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-B5rzfkHU.js +0 -6
- package/storybook-static/assets/usePickerDefaultFilter-Be420WNF.js +0 -1
- package/storybook-static/assets/x-FZLq51ZK.js +0 -1
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-C5-IVaAZ.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-Dx5UE11l.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/API/Formatters/Date`}),`
|
|
2
|
+
`,(0,c.jsx)(t.h1,{id:`даты-время-и-календарные-диапазоны`,children:`Даты, время и календарные диапазоны`}),`
|
|
3
|
+
`,(0,c.jsx)(t.p,{children:`Модуль решает четыре связанные задачи:`}),`
|
|
4
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
5
|
+
`,(0,c.jsx)(t.li,{children:`парсит даты из JavaScript, ISO, OData и ABAP-представлений;`}),`
|
|
6
|
+
`,(0,c.jsx)(t.li,{children:`форматирует их через встроенные или пользовательские presets;`}),`
|
|
7
|
+
`,(0,c.jsx)(t.li,{children:`выполняет календарную арифметику без скрытого timezone-сдвига;`}),`
|
|
8
|
+
`,(0,c.jsx)(t.li,{children:`строит обычные, относительные и учебные диапазоны дат.`}),`
|
|
9
|
+
`]}),`
|
|
10
|
+
`,(0,c.jsx)(t.p,{children:`Все функции и типы экспортируются через общий entrypoint:`}),`
|
|
11
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
12
|
+
formatDateAsDate,
|
|
13
|
+
getCalendarPeriod,
|
|
14
|
+
normalizeDateRange,
|
|
15
|
+
parseDate,
|
|
16
|
+
parseDateTZ
|
|
17
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
18
|
+
`})}),`
|
|
19
|
+
`,(0,c.jsxs)(t.p,{children:[`Импорта `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters/date`}),` нет.`]}),`
|
|
20
|
+
`,(0,c.jsx)(t.h2,{id:`самое-важное-две-timezone-семантики`,children:`Самое важное: две timezone-семантики`}),`
|
|
21
|
+
`,(0,c.jsx)(t.p,{children:`Модуль различает календарные компоненты и абсолютный момент времени.`}),`
|
|
22
|
+
`,(0,c.jsx)(t.h3,{id:`floating-сохранить-видимые-компоненты`,children:`Floating: сохранить видимые компоненты`}),`
|
|
23
|
+
`,(0,c.jsxs)(t.p,{children:[`Обычные `,(0,c.jsx)(t.code,{children:`parseDateValue`}),` и `,(0,c.jsx)(t.code,{children:`parseDate`}),` намеренно не пересчитывают ISO/OData timezone в timezone компьютера пользователя.`]}),`
|
|
24
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const date = parseDate("2026-03-03T18:03:50+05:00");
|
|
25
|
+
|
|
26
|
+
date?.getFullYear(); // 2026
|
|
27
|
+
date?.getMonth(); // 2, то есть март
|
|
28
|
+
date?.getHours(); // 18
|
|
29
|
+
`})}),`
|
|
30
|
+
`,(0,c.jsx)(t.p,{children:`Это полезно для календарных UI-значений: расписания, периода отчёта, дня документа, фильтра «с/по». Пользователь видит те компоненты, которые пришли от сервиса.`}),`
|
|
31
|
+
`,(0,c.jsx)(t.h3,{id:`instant-сохранить-реальный-момент`,children:`Instant: сохранить реальный момент`}),`
|
|
32
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`parseDateValueTZ`}),` и `,(0,c.jsx)(t.code,{children:`parseDateTZ`}),` применяют явный timezone и сохраняют Unix instant:`]}),`
|
|
33
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const date = parseDateTZ("2026-03-03T18:03:50+05:00");
|
|
34
|
+
|
|
35
|
+
date?.toISOString(); // "2026-03-03T13:03:50.000Z"
|
|
36
|
+
`})}),`
|
|
37
|
+
`,(0,c.jsxs)(t.p,{children:[`Локальные getters такого `,(0,c.jsx)(t.code,{children:`Date`}),` зависят от timezone среды. Используйте TZ-вариант, когда значение означает настоящий момент события: timestamp аудита, время серверного события, instant для сортировки между часовыми поясами.`]}),`
|
|
38
|
+
`,(0,c.jsx)(t.h3,{id:`простое-правило-выбора`,children:`Простое правило выбора`}),`
|
|
39
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Значение означает`}),(0,c.jsx)(t.th,{children:`Использовать`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Видимую календарную дату/время`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`parseDate`}),`, `,(0,c.jsx)(t.code,{children:`parseDateValue`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Абсолютный момент времени`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`parseDateTZ`}),`, `,(0,c.jsx)(t.code,{children:`parseDateValueTZ`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Строку для обычного UI`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`formatDate*`}),` — внутри floating parser`]})]})]})]}),`
|
|
40
|
+
`,(0,c.jsxs)(t.p,{children:[`Не выбирайте вариант по наличию буквы `,(0,c.jsx)(t.code,{children:`Z`}),` во входе. Выбирайте по бизнес-смыслу данных.`]}),`
|
|
41
|
+
`,(0,c.jsx)(t.h2,{id:`быстрый-старт`,children:`Быстрый старт`}),`
|
|
42
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { formatDateAsDate, formatDateAsDateTime, formatDateAsODataDate, parseDate } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
43
|
+
|
|
44
|
+
formatDateAsDate("20260303"); // "03.03.2026"
|
|
45
|
+
formatDateAsDateTime("2026-03-03T18:03:00"); // "03.03.2026 18:03"
|
|
46
|
+
formatDateAsODataDate(new Date(2026, 2, 3)); // "2026-03-03"
|
|
47
|
+
|
|
48
|
+
const date = parseDate("03.03.2026"); // Date | null
|
|
49
|
+
`})}),`
|
|
50
|
+
`,(0,c.jsx)(t.p,{children:`Для невалидного значения formatter по умолчанию возвращает пустую строку:`}),`
|
|
51
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDateAsDate("not-a-date"); // ""
|
|
52
|
+
formatDateAsDate("not-a-date", { fallback: "—" }); // "—"
|
|
53
|
+
`})}),`
|
|
54
|
+
`,(0,c.jsx)(t.h2,{id:`поддерживаемые-входы`,children:`Поддерживаемые входы`}),`
|
|
55
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`parseDateValue`}),`/`,(0,c.jsx)(t.code,{children:`parseDate`}),` принимают `,(0,c.jsx)(t.code,{children:`unknown`}),`, но распознают только конкретные контракты.`]}),`
|
|
56
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Источник`}),(0,c.jsx)(t.th,{children:`Пример`}),(0,c.jsxs)(t.th,{children:[(0,c.jsx)(t.code,{children:`source`}),` detailed-result`]})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`Date`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`new Date(...)`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`date-object`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Unix seconds`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`1_772_563_200`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`timestamp`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Unix milliseconds`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`1_772_563_200_000`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`timestamp`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`OData v2 ticks`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`/Date(1772563200000+0500)/`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`odata-ticks`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`OData literal`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`datetime'2026-03-03T18:03:50'`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`odata-literal`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`ABAP date`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`20260303`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`abap-compact`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`ABAP timestamp`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`20260303180350`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`abap-timestamp`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Dotted`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03.2026`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`abap-dotted`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Slash`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03/03/2026`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`slash-date`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`ISO local`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`2026-03-03T18:03:50`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`iso-local`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`ISO zoned`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`2026-03-03T18:03:50Z`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`iso-zoned`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`ISO duration`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`PT02H30M`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`iso-duration`})})]})]})]}),`
|
|
57
|
+
`,(0,c.jsxs)(t.p,{children:[`Slash-формат интерпретируется как `,(0,c.jsx)(t.code,{children:`MM/DD/YYYY`}),`, а не `,(0,c.jsx)(t.code,{children:`DD/MM/YYYY`}),`:`]}),`
|
|
58
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDate("12/31/2026"); // 31 декабря
|
|
59
|
+
`})}),`
|
|
60
|
+
`,(0,c.jsx)(t.p,{children:`Невалидные календарные компоненты отклоняются, а не переносятся автоматически:`}),`
|
|
61
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDate("31.02.2026"); // null
|
|
62
|
+
parseDate("2026-13-01"); // null
|
|
63
|
+
`})}),`
|
|
64
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`null`}),`, `,(0,c.jsx)(t.code,{children:`undefined`}),`, пустая строка и строки `,(0,c.jsx)(t.code,{children:`"null"`}),`/`,(0,c.jsx)(t.code,{children:`"undefined"`}),` без учёта регистра считаются пустыми.`]}),`
|
|
65
|
+
`,(0,c.jsx)(t.h2,{id:`detailed-parsing`,children:`Detailed parsing`}),`
|
|
66
|
+
`,(0,c.jsx)(t.h3,{id:`parsedatevaluevalue`,children:(0,c.jsx)(t.code,{children:`parseDateValue(value)`})}),`
|
|
67
|
+
`,(0,c.jsx)(t.p,{children:`Возвращает tagged union:`}),`
|
|
68
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type ParsedDateValue =
|
|
69
|
+
{ kind: "date-time"; source: DateInputSource; date: Date } | { kind: "duration"; source: "iso-duration"; durationMs: number };
|
|
70
|
+
`})}),`
|
|
71
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const parsed = parseDateValue("PT02H30M");
|
|
72
|
+
|
|
73
|
+
if (parsed?.kind === "duration") {
|
|
74
|
+
parsed.durationMs; // 9_000_000
|
|
75
|
+
}
|
|
76
|
+
`})}),`
|
|
77
|
+
`,(0,c.jsx)(t.p,{children:`Используйте этот API, когда нужно отличить duration от календарной даты или знать распознанный источник.`}),`
|
|
78
|
+
`,(0,c.jsx)(t.h3,{id:`parsedatevaluetzvalue`,children:(0,c.jsx)(t.code,{children:`parseDateValueTZ(value)`})}),`
|
|
79
|
+
`,(0,c.jsx)(t.p,{children:`Возвращает такую же структуру, но timestamp, ISO zoned и OData ticks интерпретируются как instant. Форматы без timezone всё равно остаются локальными календарными компонентами.`}),`
|
|
80
|
+
`,(0,c.jsxs)(t.h3,{id:`parsedatevalue-и-parsedatetzvalue`,children:[(0,c.jsx)(t.code,{children:`parseDate(value)`}),` и `,(0,c.jsx)(t.code,{children:`parseDateTZ(value)`})]}),`
|
|
81
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращают только `,(0,c.jsx)(t.code,{children:`Date | null`}),`. Duration также превращается в `,(0,c.jsx)(t.code,{children:`Date`}),`, построенный из длительности относительно Unix epoch. Если продолжительность важна именно как величина, используйте `,(0,c.jsx)(t.code,{children:`parseDateValue`}),`, а не `,(0,c.jsx)(t.code,{children:`Date`}),`.`]}),`
|
|
82
|
+
`,(0,c.jsx)(t.h3,{id:`unix-seconds-и-milliseconds`,children:`Unix seconds и milliseconds`}),`
|
|
83
|
+
`,(0,c.jsxs)(t.p,{children:[`Число с абсолютным значением меньше `,(0,c.jsx)(t.code,{children:`1e12`}),` считается секундами, иначе миллисекундами:`]}),`
|
|
84
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDate(1_772_563_200); // seconds
|
|
85
|
+
parseDate(1_772_563_200_000); // milliseconds
|
|
86
|
+
`})}),`
|
|
87
|
+
`,(0,c.jsx)(t.p,{children:`Это эвристика. Не передавайте маленькое число как «год» или «дни с начала периода».`}),`
|
|
88
|
+
`,(0,c.jsx)(t.h3,{id:`iso-duration`,children:`ISO duration`}),`
|
|
89
|
+
`,(0,c.jsx)(t.p,{children:`Поддерживаются годы, месяцы, дни, часы, минуты, секунды и знак. Для duration:`}),`
|
|
90
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
91
|
+
`,(0,c.jsx)(t.li,{children:`год приблизительно равен 365 суткам;`}),`
|
|
92
|
+
`,(0,c.jsx)(t.li,{children:`месяц приблизительно равен 30 суткам;`}),`
|
|
93
|
+
`,(0,c.jsx)(t.li,{children:`доли секунды ограничиваются миллисекундами;`}),`
|
|
94
|
+
`,(0,c.jsxs)(t.li,{children:[`полностью пустое `,(0,c.jsx)(t.code,{children:`P`}),`/`,(0,c.jsx)(t.code,{children:`PT`}),` не считается duration.`]}),`
|
|
95
|
+
`]}),`
|
|
96
|
+
`,(0,c.jsxs)(t.p,{children:[`Для календарных расчётов «через один месяц» используйте `,(0,c.jsx)(t.code,{children:`addCalendarMonths`}),`, а не duration `,(0,c.jsx)(t.code,{children:`P1M`}),`: календарный месяц не всегда равен 30 дням.`]}),`
|
|
97
|
+
`,(0,c.jsx)(t.h2,{id:`строгий-парсинг-по-шаблону`,children:`Строгий парсинг по шаблону`}),`
|
|
98
|
+
`,(0,c.jsx)(t.h3,{id:`parsedatebypatternvalue-pattern-options`,children:(0,c.jsx)(t.code,{children:`parseDateByPattern(value, pattern, options?)`})}),`
|
|
99
|
+
`,(0,c.jsx)(t.p,{children:`Поддерживает токены:`}),`
|
|
100
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Токен`}),(0,c.jsx)(t.th,{children:`Значение`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`dd`})}),(0,c.jsx)(t.td,{children:`день, ровно 2 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`MM`})}),(0,c.jsx)(t.td,{children:`месяц, ровно 2 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyy`})}),(0,c.jsx)(t.td,{children:`год, ровно 4 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yy`})}),(0,c.jsx)(t.td,{children:`год, ровно 2 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`HH`})}),(0,c.jsx)(t.td,{children:`часы, ровно 2 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`mm`})}),(0,c.jsx)(t.td,{children:`минуты, ровно 2 цифры`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`ss`})}),(0,c.jsx)(t.td,{children:`секунды, ровно 2 цифры`})]})]})]}),`
|
|
101
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDateByPattern("03-03-2026 18:05", "dd-MM-yyyy HH:mm");
|
|
102
|
+
parseDateByPattern("03.03.26", "dd.MM.yy");
|
|
103
|
+
`})}),`
|
|
104
|
+
`,(0,c.jsxs)(t.p,{children:[`Двузначные годы `,(0,c.jsx)(t.code,{children:`00–69`}),` становятся `,(0,c.jsx)(t.code,{children:`2000–2069`}),`, а `,(0,c.jsx)(t.code,{children:`70–99`}),` — `,(0,c.jsx)(t.code,{children:`1970–1999`}),`.`]}),`
|
|
105
|
+
`,(0,c.jsxs)(t.p,{children:[`Литералы шаблона сравниваются буквально. Токенов переменной длины (`,(0,c.jsx)(t.code,{children:`d`}),`, `,(0,c.jsx)(t.code,{children:`M`}),`, `,(0,c.jsx)(t.code,{children:`H`}),`) нет.`]}),`
|
|
106
|
+
`,(0,c.jsxs)(t.p,{children:[`Опция `,(0,c.jsx)(t.code,{children:`precision`}),` может быть:`]}),`
|
|
107
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
108
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`day`}),` — нужны год, месяц и день;`]}),`
|
|
109
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`month`}),` — нужны год и месяц, день становится `,(0,c.jsx)(t.code,{children:`1`}),`;`]}),`
|
|
110
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`year`}),` — нужен год, дата становится 1 января.`]}),`
|
|
111
|
+
`]}),`
|
|
112
|
+
`,(0,c.jsxs)(t.p,{children:[`Если вход не является строкой, функция делегирует обычному `,(0,c.jsx)(t.code,{children:`parseDateValue`}),`, а pattern не применяется.`]}),`
|
|
113
|
+
`,(0,c.jsx)(t.h3,{id:`parsedatebyformatvalue-dateformat-options`,children:(0,c.jsx)(t.code,{children:`parseDateByFormat(value, dateFormat?, options?)`})}),`
|
|
114
|
+
`,(0,c.jsx)(t.p,{children:`Принимает:`}),`
|
|
115
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
116
|
+
`,(0,c.jsx)(t.li,{children:`имя зарегистрированного preset;`}),`
|
|
117
|
+
`,(0,c.jsxs)(t.li,{children:[`style alias `,(0,c.jsx)(t.code,{children:`short`}),`, `,(0,c.jsx)(t.code,{children:`medium`}),`, `,(0,c.jsx)(t.code,{children:`long`}),`;`]}),`
|
|
118
|
+
`,(0,c.jsx)(t.li,{children:`ручной pattern;`}),`
|
|
119
|
+
`,(0,c.jsx)(t.li,{children:`человекочитаемую строку, созданную Intl preset текущей locale.`}),`
|
|
120
|
+
`]}),`
|
|
121
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDateByFormat("03.03.2026", "date");
|
|
122
|
+
parseDateByFormat("3 марта 2026 г.", "date-long");
|
|
123
|
+
parseDateByFormat("2026/03/03", "yyyy/MM/dd");
|
|
124
|
+
`})}),`
|
|
125
|
+
`,(0,c.jsx)(t.p,{children:`Опции:`}),`
|
|
126
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type ParseDateByFormatOptions = {
|
|
127
|
+
defaultFormat?: string;
|
|
128
|
+
locale?: string;
|
|
129
|
+
precision?: "day" | "month" | "year";
|
|
130
|
+
referenceDate?: Date;
|
|
131
|
+
};
|
|
132
|
+
`})}),`
|
|
133
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`referenceDate`}),` задаёт год для presets `,(0,c.jsx)(t.code,{children:`month-short`}),`, `,(0,c.jsx)(t.code,{children:`month-medium`}),`, `,(0,c.jsx)(t.code,{children:`month-long`}),`, которые выводят день и месяц без года. По умолчанию используется текущий календарный год, поэтому для тестов передавайте reference явно.`]}),`
|
|
134
|
+
`,(0,c.jsx)(t.h2,{id:`форматирование`,children:`Форматирование`}),`
|
|
135
|
+
`,(0,c.jsx)(t.h3,{id:`formatdatevalue-presetorname-options`,children:(0,c.jsx)(t.code,{children:`formatDate(value, presetOrName?, options?)`})}),`
|
|
136
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function formatDate(
|
|
137
|
+
value: unknown,
|
|
138
|
+
presetOrName?: string | DateFormatPreset,
|
|
139
|
+
options?: { fallback?: string; precision?: DateFormatPrecision }
|
|
140
|
+
): string;
|
|
141
|
+
`})}),`
|
|
142
|
+
`,(0,c.jsxs)(t.p,{children:[`По умолчанию используется preset `,(0,c.jsx)(t.code,{children:`date`}),` и precision `,(0,c.jsx)(t.code,{children:`day`}),`.`]}),`
|
|
143
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDate("20260303"); // "03.03.2026"
|
|
144
|
+
formatDate("20260303", "abap-date"); // "20260303"
|
|
145
|
+
formatDate("bad", "date", { fallback: "—" }); // "—"
|
|
146
|
+
`})}),`
|
|
147
|
+
`,(0,c.jsxs)(t.p,{children:[`Неизвестное имя preset выбрасывает `,(0,c.jsx)(t.code,{children:`Error`}),` до форматирования входа:`]}),`
|
|
148
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDate("bad", "unknown"); // Error: preset не найден
|
|
149
|
+
`})}),`
|
|
150
|
+
`,(0,c.jsx)(t.h3,{id:`precision`,children:`Precision`}),`
|
|
151
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDate(date, "date-long", { precision: "day" }); // день, месяц, год
|
|
152
|
+
formatDate(date, "date-long", { precision: "month" }); // месяц и год
|
|
153
|
+
formatDate(date, "date-long", { precision: "year" }); // год
|
|
154
|
+
`})}),`
|
|
155
|
+
`,(0,c.jsx)(t.p,{children:`Для pattern preset лишние токены даты удаляются вместе с промежуточными литералами. Time-only preset не приобретает календарные части.`}),`
|
|
156
|
+
`,(0,c.jsx)(t.h2,{id:`готовые-datetime-wrappers`,children:`Готовые date/time wrappers`}),`
|
|
157
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Функция`}),(0,c.jsx)(t.th,{children:`Типичный результат`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDate`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03.2026`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDateTime`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03.2026 18:03`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsTime`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`18:03`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsTimeSeconds`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`18:03:50`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDateShort`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03.2026`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDateMedium`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 мар. 2026 г.`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDateLong`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 марта 2026 г.`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsMonthShort`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsMonthMedium`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 мар.`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsMonthLong`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 марта`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsMonthYearMedium`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`мар. 2026`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsMonthYearLong`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`март 2026`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsTimeShort`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`18:03`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsTimeMedium`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`18:03:50`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsTimeLong`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`18:03:50`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDatetimeShort`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`03.03.2026, 18:03`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDatetimeMedium`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 мар. 2026 г., 18:03:50`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsDatetimeLong`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`3 марта 2026 г., 18:03:50`})})]})]})]}),`
|
|
158
|
+
`,(0,c.jsx)(t.p,{children:`Точный punctuation и пробельные символы Intl могут слегка зависеть от JavaScript runtime/ICU. Не разбирайте человекочитаемый результат вручную, если нужен машинный контракт.`}),`
|
|
159
|
+
`,(0,c.jsx)(t.h2,{id:`машинные-wrappers-abapodata`,children:`Машинные wrappers ABAP/OData`}),`
|
|
160
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Функция`}),(0,c.jsx)(t.th,{children:`Результат`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsAbapYear`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyy`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsAbapMonth`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyyMM`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsAbapDate`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyyMMdd`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsAbapDatetime`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyyMMddHHmmss`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsODataDate`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyy-MM-dd`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsODataDatetime`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`yyyy-MM-ddTHH:mm:ss`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatDateAsODataTime`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`PT00H00M00S`})})]})]})]}),`
|
|
161
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDateAsAbapDate(new Date(2026, 2, 3)); // "20260303"
|
|
162
|
+
formatDateAsODataDatetime(new Date(2026, 2, 3, 18, 5, 9));
|
|
163
|
+
// "2026-03-03T18:05:09"
|
|
164
|
+
`})}),`
|
|
165
|
+
`,(0,c.jsx)(t.p,{children:`Эти строки собираются из локальных календарных компонентов и не добавляют timezone marker.`}),`
|
|
166
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatDateAsODataTime`}),` принимает как дату, так и ISO duration:`]}),`
|
|
167
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDateAsODataTime("PT02H30M05S"); // "PT02H30M05S"
|
|
168
|
+
`})}),`
|
|
169
|
+
`,(0,c.jsx)(t.h2,{id:`formatdaterange`,children:(0,c.jsx)(t.code,{children:`formatDateRange`})}),`
|
|
170
|
+
`,(0,c.jsxs)(t.p,{children:[`Форматирует две границы одним preset и соединяет через `,(0,c.jsx)(t.code,{children:`-`}),`:`]}),`
|
|
171
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDateRange("20260301", "20260331");
|
|
172
|
+
// "01.03.2026 - 31.03.2026"
|
|
173
|
+
`})}),`
|
|
174
|
+
`,(0,c.jsxs)(t.p,{children:[`Если хотя бы одна граница не распарсилась или отформатировалась в пустой результат, возвращается общий fallback. Функция не сортирует границы. Для нормализации порядка сначала используйте `,(0,c.jsx)(t.code,{children:`normalizeDateRange`}),`.`]}),`
|
|
175
|
+
`,(0,c.jsx)(t.h2,{id:`presets`,children:`Presets`}),`
|
|
176
|
+
`,(0,c.jsx)(t.h3,{id:`встроенные-имена`,children:`Встроенные имена`}),`
|
|
177
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`DEFAULT_DATE_PRESET_NAMES`}),` содержит:`]}),`
|
|
178
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`date, date-short, date-medium, date-long
|
|
179
|
+
month-short, month-medium, month-long
|
|
180
|
+
month-year-medium, month-year-long
|
|
181
|
+
datetime, datetime-seconds
|
|
182
|
+
datetime-short, datetime-medium, datetime-long
|
|
183
|
+
time, time-seconds
|
|
184
|
+
time-short, time-medium, time-long
|
|
185
|
+
odata-date, odata-datetime
|
|
186
|
+
abap-datetime, abap-date, abap-month, abap-year
|
|
187
|
+
`})}),`
|
|
188
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`DATE_FORMAT_STYLE_PRESET_NAMES`}),` связывает aliases `,(0,c.jsx)(t.code,{children:`short`}),`, `,(0,c.jsx)(t.code,{children:`medium`}),`, `,(0,c.jsx)(t.code,{children:`long`}),` с `,(0,c.jsx)(t.code,{children:`date-short`}),`, `,(0,c.jsx)(t.code,{children:`date-medium`}),`, `,(0,c.jsx)(t.code,{children:`date-long`}),`.`]}),`
|
|
189
|
+
`,(0,c.jsxs)(t.h3,{id:`getdatepreset-и-getdatepresetnames`,children:[(0,c.jsx)(t.code,{children:`getDatePreset`}),` и `,(0,c.jsx)(t.code,{children:`getDatePresetNames`})]}),`
|
|
190
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const preset = getDatePreset("date-long");
|
|
191
|
+
const names = getDatePresetNames();
|
|
192
|
+
`})}),`
|
|
193
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getDatePreset`}),` возвращает реестровый объект, не clone. Не мутируйте его. `,(0,c.jsx)(t.code,{children:`getDatePresetNames`}),` возвращает новый массив в порядке регистрации.`]}),`
|
|
194
|
+
`,(0,c.jsx)(t.h3,{id:`registerdatepresetconfig`,children:(0,c.jsx)(t.code,{children:`registerDatePreset(config)`})}),`
|
|
195
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`registerDatePreset({
|
|
196
|
+
name: "report-date",
|
|
197
|
+
pattern: "dd/MM/yyyy",
|
|
198
|
+
invalidFallback: "—"
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
formatDate("20260303", "report-date"); // "03/03/2026"
|
|
202
|
+
`})}),`
|
|
203
|
+
`,(0,c.jsxs)(t.p,{children:[`Недостающие поля берутся из `,(0,c.jsx)(t.code,{children:`DATE_FORMAT_DEFAULTS`}),`: locale `,(0,c.jsx)(t.code,{children:`ru-RU`}),`, стандартные Intl date fields и пустой invalid fallback.`]}),`
|
|
204
|
+
`,(0,c.jsx)(t.p,{children:`Вместо pattern можно использовать:`}),`
|
|
205
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
206
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`intlOptions`}),` для единого formatter-а;`]}),`
|
|
207
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`intlDateOptions`}),` + `,(0,c.jsx)(t.code,{children:`intlTimeOptions`}),` + optional `,(0,c.jsx)(t.code,{children:`intlJoiner`}),`;`]}),`
|
|
208
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`durationPattern`}),` для ISO durations.`]}),`
|
|
209
|
+
`]}),`
|
|
210
|
+
`,(0,c.jsxs)(t.p,{children:[`Настройки `,(0,c.jsx)(t.code,{children:`timeZone`}),` и `,(0,c.jsx)(t.code,{children:`timeZoneName`}),` намеренно удаляются: модуль сохраняет календарную семантику и не должен скрыто сдвигать компоненты.`]}),`
|
|
211
|
+
`,(0,c.jsx)(t.p,{children:`Регистрация глобальна. Делайте её один раз на старте до компиляции formatter pipeline. Имя и конфигурация не проходят полноценную пользовательскую валидацию.`}),`
|
|
212
|
+
`,(0,c.jsx)(t.h3,{id:`объектный-preset`,children:`Объектный preset`}),`
|
|
213
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const preset: DateFormatPreset = {
|
|
214
|
+
name: "inline",
|
|
215
|
+
pattern: "yyyy/MM/dd HH:mm",
|
|
216
|
+
locale: "ru-RU",
|
|
217
|
+
invalidFallback: "—"
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
formatDate(value, preset);
|
|
221
|
+
`})}),`
|
|
222
|
+
`,(0,c.jsxs)(t.p,{children:[`Объектный preset не регистрируется. Скомпилированная версия кешируется в `,(0,c.jsx)(t.code,{children:`WeakMap`}),` по identity объекта, поэтому переиспользуйте один стабильный объект вместо создания нового на каждую ячейку.`]}),`
|
|
223
|
+
`,(0,c.jsxs)(t.h3,{id:`resolvedateformatname-и-resolvedateformatpreset`,children:[(0,c.jsx)(t.code,{children:`resolveDateFormatName`}),` и `,(0,c.jsx)(t.code,{children:`resolveDateFormatPreset`})]}),`
|
|
224
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`resolveDateFormatName`}),` trim-ит вход, применяет default для пустого значения и преобразует style alias:`]}),`
|
|
225
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`resolveDateFormatName(" medium "); // "date-medium"
|
|
226
|
+
`})}),`
|
|
227
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`resolveDateFormatPreset`}),` возвращает:`]}),`
|
|
228
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
229
|
+
`,(0,c.jsx)(t.li,{children:`имя, если такой preset зарегистрирован;`}),`
|
|
230
|
+
`,(0,c.jsx)(t.li,{children:`кешируемый объектный pattern preset, если имя не найдено.`}),`
|
|
231
|
+
`]}),`
|
|
232
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const presetOrName = resolveDateFormatPreset("yyyy/MM/dd");
|
|
233
|
+
formatDate(value, presetOrName);
|
|
234
|
+
`})}),`
|
|
235
|
+
`,(0,c.jsx)(t.p,{children:`Эта функция считает любую неизвестную непустую строку ручным pattern. Если строка не содержит поддерживаемых tokens, результат будет в основном literal-текстом.`}),`
|
|
236
|
+
`,(0,c.jsx)(t.h3,{id:`resetdatepresets`,children:(0,c.jsx)(t.code,{children:`resetDatePresets()`})}),`
|
|
237
|
+
`,(0,c.jsx)(t.p,{children:`Удаляет пользовательские presets и восстанавливает встроенные. Используйте прежде всего в тестах.`}),`
|
|
238
|
+
`,(0,c.jsxs)(t.p,{children:[`Публичной функции `,(0,c.jsx)(t.code,{children:`clearDateFormatCache`}),` нет. Сброс реестра выполняется только `,(0,c.jsx)(t.code,{children:`resetDatePresets`}),`.`]}),`
|
|
239
|
+
`,(0,c.jsx)(t.h3,{id:`проверки-формата`,children:`Проверки формата`}),`
|
|
240
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`isDateFormatStyle("short"); // true
|
|
241
|
+
isDateFormatPrecision("month"); // true
|
|
242
|
+
`})}),`
|
|
243
|
+
`,(0,c.jsx)(t.p,{children:`Это type guards для строго заданных строк.`}),`
|
|
244
|
+
`,(0,c.jsx)(t.h2,{id:`pattern-constants`,children:`Pattern constants`}),`
|
|
245
|
+
`,(0,c.jsx)(t.p,{children:`Экспортируются:`}),`
|
|
246
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
247
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`DATE_PATTERN_DATE_TOKENS`}),`;`]}),`
|
|
248
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`DATE_PATTERN_TIME_TOKENS`}),`;`]}),`
|
|
249
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKENS`}),`;`]}),`
|
|
250
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKEN_RE`}),`.`]}),`
|
|
251
|
+
`]}),`
|
|
252
|
+
`,(0,c.jsxs)(t.p,{children:[`Массивы заморожены. Регулярное выражение имеет флаг `,(0,c.jsx)(t.code,{children:`g`}),`, поэтому при ручном вызове `,(0,c.jsx)(t.code,{children:`test`}),`/`,(0,c.jsx)(t.code,{children:`exec`}),` учитывайте изменяемый `,(0,c.jsx)(t.code,{children:`lastIndex`}),` или сбрасывайте его перед новым независимым проходом.`]}),`
|
|
253
|
+
`,(0,c.jsx)(t.h2,{id:`календарная-арифметика`,children:`Календарная арифметика`}),`
|
|
254
|
+
`,(0,c.jsx)(t.h3,{id:`создание-и-границы`,children:`Создание и границы`}),`
|
|
255
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`createCalendarDate(2026, 2, 3, 18, 5); // месяц zero-based: 2 === март
|
|
256
|
+
getStartOfDay(date); // 00:00:00.000
|
|
257
|
+
getEndOfDay(date); // 23:59:59.000
|
|
258
|
+
getStartOfMonth(date); // первое число, 00:00
|
|
259
|
+
getStartOfYear(date); // 1 января, 00:00
|
|
260
|
+
`})}),`
|
|
261
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`createCalendarDate`}),` повторяет нормализующее поведение конструктора `,(0,c.jsx)(t.code,{children:`new Date`}),`: например, лишний день переносится в следующий месяц. Она не является валидатором пользовательских компонентов.`]}),`
|
|
262
|
+
`,(0,c.jsxs)(t.p,{children:[`Обратите внимание: `,(0,c.jsx)(t.code,{children:`getEndOfDay`}),` возвращает миллисекунды `,(0,c.jsx)(t.code,{children:`000`}),`, а не `,(0,c.jsx)(t.code,{children:`999`}),`. Для включительного сравнения значений с миллисекундами в последней секунде дня это может быть важно.`]}),`
|
|
263
|
+
`,(0,c.jsx)(t.h3,{id:`неделя`,children:`Неделя`}),`
|
|
264
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getStartOfWeek(date); // понедельник по умолчанию
|
|
265
|
+
getStartOfWeek(date, 0); // воскресенье
|
|
266
|
+
`})}),`
|
|
267
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`weekStartsOn`}),` использует нумерацию `,(0,c.jsx)(t.code,{children:`Date.getDay()`}),`: `,(0,c.jsx)(t.code,{children:`0`}),` — воскресенье, `,(0,c.jsx)(t.code,{children:`1`}),` — понедельник. Целые значения нормализуются по модулю 7, нецелое значение заменяется на `,(0,c.jsx)(t.code,{children:`1`}),`.`]}),`
|
|
268
|
+
`,(0,c.jsx)(t.h3,{id:`сдвиги`,children:`Сдвиги`}),`
|
|
269
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`addCalendarDays(date, 1);
|
|
270
|
+
addCalendarMonths(date, -1);
|
|
271
|
+
addCalendarYears(date, 1);
|
|
272
|
+
`})}),`
|
|
273
|
+
`,(0,c.jsxs)(t.p,{children:[`Результаты создаются на начале суток. Используется нативное календарное переполнение JavaScript. Например, сдвиг 31 января на один месяц может перейти в март, потому что «31 февраля» нормализуется конструктором `,(0,c.jsx)(t.code,{children:`Date`}),`. Если нужен clamp к последнему дню целевого месяца, реализуйте это явным отдельным правилом.`]}),`
|
|
274
|
+
`,(0,c.jsx)(t.h3,{id:`сравнение-дня`,children:`Сравнение дня`}),`
|
|
275
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`isSameCalendarDay(left, right);
|
|
276
|
+
`})}),`
|
|
277
|
+
`,(0,c.jsxs)(t.p,{children:[`Сравнивает только локальные year/month/day. Для не-`,(0,c.jsx)(t.code,{children:`Date`}),` возвращает `,(0,c.jsx)(t.code,{children:`false`}),`; валидность `,(0,c.jsx)(t.code,{children:`Date#getTime()`}),` отдельно не проверяет.`]}),`
|
|
278
|
+
`,(0,c.jsx)(t.h2,{id:`обычные-диапазоны-дат`,children:`Обычные диапазоны дат`}),`
|
|
279
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type DateRange = readonly [Date, Date];
|
|
280
|
+
type NullableDateRange = readonly [Date | null, Date | null];
|
|
281
|
+
type DateRangeInput = Date | null | NullableDateRange;
|
|
282
|
+
`})}),`
|
|
283
|
+
`,(0,c.jsx)(t.h3,{id:`проверки-и-копирование`,children:`Проверки и копирование`}),`
|
|
284
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
285
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`isValidDate(value)`}),` — настоящий конечный `,(0,c.jsx)(t.code,{children:`Date`}),`;`]}),`
|
|
286
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`isDateRangeTuple(value)`}),` — runtime-проверка массива;`]}),`
|
|
287
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`cloneDate(date)`}),` — новый `,(0,c.jsx)(t.code,{children:`Date`}),` с тем же timestamp;`]}),`
|
|
288
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`orderDates(left, right)`}),` — упорядоченная пара, но те же исходные objects.`]}),`
|
|
289
|
+
`]}),`
|
|
290
|
+
`,(0,c.jsx)(t.h3,{id:`resolvedaterangepairvalue`,children:(0,c.jsx)(t.code,{children:`resolveDateRangePair(value)`})}),`
|
|
291
|
+
`,(0,c.jsx)(t.p,{children:`Нормализует форму диапазона без клонирования и без изменения времени:`}),`
|
|
292
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
293
|
+
`,(0,c.jsxs)(t.li,{children:[`одиночная дата → `,(0,c.jsx)(t.code,{children:`[date, date]`}),`;`]}),`
|
|
294
|
+
`,(0,c.jsx)(t.li,{children:`две валидные даты → упорядоченная пара;`}),`
|
|
295
|
+
`,(0,c.jsx)(t.li,{children:`одна валидная граница → эта дата в обеих позициях;`}),`
|
|
296
|
+
`,(0,c.jsxs)(t.li,{children:[`ни одной даты → `,(0,c.jsx)(t.code,{children:`null`}),`.`]}),`
|
|
297
|
+
`]}),`
|
|
298
|
+
`,(0,c.jsx)(t.h3,{id:`normalizedaterangevalue-options`,children:(0,c.jsx)(t.code,{children:`normalizeDateRange(value, options?)`})}),`
|
|
299
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const range = normalizeDateRange([end, start]);
|
|
300
|
+
`})}),`
|
|
301
|
+
`,(0,c.jsx)(t.p,{children:`По умолчанию:`}),`
|
|
302
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
303
|
+
`,(0,c.jsx)(t.li,{children:`упорядочивает границы;`}),`
|
|
304
|
+
`,(0,c.jsx)(t.li,{children:`клонирует их;`}),`
|
|
305
|
+
`,(0,c.jsx)(t.li,{children:`start приводит к началу суток;`}),`
|
|
306
|
+
`,(0,c.jsx)(t.li,{children:`end приводит к концу суток.`}),`
|
|
307
|
+
`]}),`
|
|
308
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`normalizeDateRange(value, { timeMode: "preserve" });
|
|
309
|
+
`})}),`
|
|
310
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`preserve`}),` сохраняет время после упорядочивания, но всё равно возвращает новые `,(0,c.jsx)(t.code,{children:`Date`}),` objects.`]}),`
|
|
311
|
+
`,(0,c.jsx)(t.h3,{id:`requiredaterangevalue-options`,children:(0,c.jsx)(t.code,{children:`requireDateRange(value, options?)`})}),`
|
|
312
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает нормализованный диапазон либо выбрасывает `,(0,c.jsx)(t.code,{children:`Error("Диапазон дат не задан")`}),`.`]}),`
|
|
313
|
+
`,(0,c.jsx)(t.h3,{id:`countcalendardaysindaterangevalue`,children:(0,c.jsx)(t.code,{children:`countCalendarDaysInDateRange(value)`})}),`
|
|
314
|
+
`,(0,c.jsx)(t.p,{children:`Считает календарные дни включительно и не зависит от DST-длины локальных суток:`}),`
|
|
315
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`countCalendarDaysInDateRange([new Date(2026, 2, 1), new Date(2026, 2, 1)]); // 1
|
|
316
|
+
`})}),`
|
|
317
|
+
`,(0,c.jsxs)(t.p,{children:[`Для пустого диапазона возвращает `,(0,c.jsx)(t.code,{children:`null`}),`.`]}),`
|
|
318
|
+
`,(0,c.jsx)(t.h2,{id:`календарные-периоды`,children:`Календарные периоды`}),`
|
|
319
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getCalendarPeriod(value, options?)`}),` строит включительные границы выбранного периода:`]}),`
|
|
320
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getCalendarPeriod(date, { selectionMode: "day" });
|
|
321
|
+
getCalendarPeriod(date, { selectionMode: "week", weekEndDay: "saturday" });
|
|
322
|
+
getCalendarPeriod(date, { selectionMode: "month" });
|
|
323
|
+
getCalendarPeriod(date, { selectionMode: "year" });
|
|
324
|
+
`})}),`
|
|
325
|
+
`,(0,c.jsxs)(t.p,{children:[`По умолчанию mode — `,(0,c.jsx)(t.code,{children:`day`}),`, а week заканчивается в воскресенье. Неделя всегда начинается в понедельник; `,(0,c.jsx)(t.code,{children:`weekEndDay`}),` может быть `,(0,c.jsx)(t.code,{children:`friday`}),`, `,(0,c.jsx)(t.code,{children:`saturday`}),` или `,(0,c.jsx)(t.code,{children:`sunday`}),`.`]}),`
|
|
326
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`isDateInsideCalendarPeriod(value, period)`}),` проверяет включение календарного дня. `,(0,c.jsx)(t.code,{children:`isCalendarPeriodWithinDateBounds(period, { minDate, maxDate })`}),` требует, чтобы весь период помещался между необязательными границами.`]}),`
|
|
327
|
+
`,(0,c.jsx)(t.h2,{id:`относительные-диапазоны`,children:`Относительные диапазоны`}),`
|
|
328
|
+
`,(0,c.jsx)(t.p,{children:`Все resolver-ы принимают явный контекст:`}),`
|
|
329
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const context = { referenceDate: new Date(2026, 2, 15, 12) };
|
|
330
|
+
`})}),`
|
|
331
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`API`}),(0,c.jsx)(t.th,{children:`Диапазон`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveTodayRange`})}),(0,c.jsx)(t.td,{children:`начало и конец reference day`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveYesterdayRange`})}),(0,c.jsx)(t.td,{children:`начало и конец предыдущего дня`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveMonthStartToTodayRange`})}),(0,c.jsx)(t.td,{children:`с 1-го числа по сегодня`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveMonthStartToYesterdayRange`})}),(0,c.jsx)(t.td,{children:`с 1-го числа по вчера`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveMonthAgoRange`})}),(0,c.jsx)(t.td,{children:`тот же календарный день прошлого месяца — сегодня`})]})]})]}),`
|
|
332
|
+
`,(0,c.jsxs)(t.p,{children:[`На первом числе `,(0,c.jsx)(t.code,{children:`resolveMonthStartToYesterdayRange`}),` прижимает end к началу текущего месяца, чтобы не получить инвертированный диапазон.`]}),`
|
|
333
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`normalizeDateRangeReferenceDate`}),` просто возвращает начало суток reference date.`]}),`
|
|
334
|
+
`,(0,c.jsx)(t.p,{children:`Передавайте reference date явно, особенно в тестах, SSR и timezone-sensitive сценариях.`}),`
|
|
335
|
+
`,(0,c.jsx)(t.h2,{id:`учебный-календарь`,children:`Учебный календарь`}),`
|
|
336
|
+
`,(0,c.jsx)(t.p,{children:`Учебный год начинается 1 сентября и заканчивается 31 августа. Учебная неделя отображает понедельник–субботу; воскресенье относится к следующей учебной неделе.`}),`
|
|
337
|
+
`,(0,c.jsx)(t.h3,{id:`ключ-даты-и-времени`,children:`Ключ даты и времени`}),`
|
|
338
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatEducationDateKey(new Date(2026, 2, 3)); // "2026-03-03"
|
|
339
|
+
parseEducationDateKey("2026-03-03"); // Date
|
|
340
|
+
formatEducationTimeKey(new Date(2026, 2, 3, 9, 5)); // "09:05"
|
|
341
|
+
createEducationDateTime("2026-03-03", "09:05:30"); // Date
|
|
342
|
+
`})}),`
|
|
343
|
+
`,(0,c.jsxs)(t.p,{children:[`Парсер date key строгий: только `,(0,c.jsx)(t.code,{children:`YYYY-MM-DD`}),` и реальная дата. Time key — `,(0,c.jsx)(t.code,{children:`HH:mm`}),` или `,(0,c.jsx)(t.code,{children:`HH:mm:ss`}),`, с проверкой диапазонов.`]}),`
|
|
344
|
+
`,(0,c.jsx)(t.p,{children:`Ключ не несёт timezone-семантики и строится из локальных календарных компонентов. Он подходит для URL, query key и SQL-параметра только если это соответствует контракту сервиса.`}),`
|
|
345
|
+
`,(0,c.jsx)(t.h3,{id:`учебный-год`,children:`Учебный год`}),`
|
|
346
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getEducationYear(date); // год, в котором учебный год начался
|
|
347
|
+
getEducationYearRange(date); // { year, start, end }
|
|
348
|
+
isEducationDateInCurrentYear(value, now); // boolean
|
|
349
|
+
`})}),`
|
|
350
|
+
`,(0,c.jsxs)(t.p,{children:[`Для даты в августе 2026 функция `,(0,c.jsx)(t.code,{children:`getEducationYear`}),` вернёт `,(0,c.jsx)(t.code,{children:`2025`}),`; для сентября 2026 — `,(0,c.jsx)(t.code,{children:`2026`}),`.`]}),`
|
|
351
|
+
`,(0,c.jsx)(t.h3,{id:`учебная-неделя`,children:`Учебная неделя`}),`
|
|
352
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getEducationWeekStartDate(date); // понедельник
|
|
353
|
+
getEducationWeekRange(date); // понедельник–суббота
|
|
354
|
+
getEducationWeekDays(date); // 6 ключей YYYY-MM-DD
|
|
355
|
+
getCurrentEducationWeekKey(now);
|
|
356
|
+
normalizeEducationWeekKey(input, now);
|
|
357
|
+
resolveEducationWeekKey(input, now);
|
|
358
|
+
isCurrentEducationWeek(key, now);
|
|
359
|
+
`})}),`
|
|
360
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`normalizeEducationWeekKey`}),` возвращает `,(0,c.jsx)(t.code,{children:`undefined`}),`, если ключ невалиден, находится вне текущего учебного года или его понедельник вышел за границы учебного года.`]}),`
|
|
361
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`resolveEducationWeekKey`}),` в таком случае возвращает текущую учебную неделю.`]}),`
|
|
362
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getEducationWeekDays`}),` имеет особый fallback: невалидная строка silently заменяется неделей текущей системной даты. Если это нежелательно, сначала вызовите `,(0,c.jsx)(t.code,{children:`parseEducationDateKey`}),`/`,(0,c.jsx)(t.code,{children:`normalizeEducationWeekKey`}),` самостоятельно.`]}),`
|
|
363
|
+
`,(0,c.jsxs)(t.p,{children:[`Для детерминированных тестов всегда передавайте `,(0,c.jsx)(t.code,{children:`now`}),` в функции, где он поддержан.`]}),`
|
|
364
|
+
`,(0,c.jsx)(t.h2,{id:`практические-рецепты`,children:`Практические рецепты`}),`
|
|
365
|
+
`,(0,c.jsx)(t.h3,{id:`ui-фильтр-диапазона`,children:`UI-фильтр диапазона`}),`
|
|
366
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const range = normalizeDateRange([draft.start, draft.end]);
|
|
367
|
+
|
|
368
|
+
if (!range) {
|
|
369
|
+
return undefined;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
const [from, to] = range;
|
|
373
|
+
`})}),`
|
|
374
|
+
`,(0,c.jsx)(t.h3,{id:`машинный-ключ-без-utc-сдвига`,children:`Машинный ключ без UTC-сдвига`}),`
|
|
375
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const date = parseDate(userValue);
|
|
376
|
+
const key = date ? formatDateAsODataDate(date) : undefined;
|
|
377
|
+
`})}),`
|
|
378
|
+
`,(0,c.jsx)(t.h3,{id:`настоящий-timestamp-события`,children:`Настоящий timestamp события`}),`
|
|
379
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const eventInstant = parseDateTZ(api.createdAt);
|
|
380
|
+
const unixMs = eventInstant?.getTime();
|
|
381
|
+
`})}),`
|
|
382
|
+
`,(0,c.jsx)(t.h3,{id:`безопасный-пользовательский-preset`,children:`Безопасный пользовательский preset`}),`
|
|
383
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`export function configureDateFormatters(): void {
|
|
384
|
+
registerDatePreset({
|
|
385
|
+
name: "document-date-time",
|
|
386
|
+
pattern: "dd.MM.yyyy HH:mm:ss",
|
|
387
|
+
invalidFallback: "—"
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
`})}),`
|
|
391
|
+
`,(0,c.jsx)(t.h2,{id:`частые-ошибки`,children:`Частые ошибки`}),`
|
|
392
|
+
`,(0,c.jsxs)(t.h3,{id:`использовать-new-dateyyyy-mm-dd-для-календарной-даты`,children:[`Использовать `,(0,c.jsx)(t.code,{children:`new Date("YYYY-MM-DD")`}),` для календарной даты`]}),`
|
|
393
|
+
`,(0,c.jsxs)(t.p,{children:[`Нативный parsing может включить UTC-семантику и сдвинуть видимый день. Используйте `,(0,c.jsx)(t.code,{children:`parseDate`}),` или `,(0,c.jsx)(t.code,{children:`parseEducationDateKey`}),` в зависимости от контракта.`]}),`
|
|
394
|
+
`,(0,c.jsx)(t.h3,{id:`ожидать-timezone-conversion-от-обычного-formatter-а`,children:`Ожидать timezone conversion от обычного formatter-а`}),`
|
|
395
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatDate`}),` использует floating parsing. Для instant сначала разберите `,(0,c.jsx)(t.code,{children:`parseDateTZ`}),`, а дальнейшее локальное/UTC отображение проектируйте явно.`]}),`
|
|
396
|
+
`,(0,c.jsxs)(t.h3,{id:`считать-getendofday-концом-с-999`,children:[`Считать `,(0,c.jsx)(t.code,{children:`getEndOfDay`}),` концом с `,(0,c.jsx)(t.code,{children:`.999`})]}),`
|
|
397
|
+
`,(0,c.jsxs)(t.p,{children:[`Текущий контракт — `,(0,c.jsx)(t.code,{children:`23:59:59.000`}),`.`]}),`
|
|
398
|
+
`,(0,c.jsxs)(t.h3,{id:`ожидать-clamp-от-addcalendarmonths`,children:[`Ожидать clamp от `,(0,c.jsx)(t.code,{children:`addCalendarMonths`})]}),`
|
|
399
|
+
`,(0,c.jsx)(t.p,{children:`Функция использует native overflow. Последний день месяца требует отдельного правила.`}),`
|
|
400
|
+
`,(0,c.jsx)(t.h3,{id:`использовать-human-readable-output-как-api-payload`,children:`Использовать human-readable output как API payload`}),`
|
|
401
|
+
`,(0,c.jsx)(t.p,{children:`Intl-форматы локализованы. Для API используйте ABAP/OData wrappers или отдельный transport serializer.`}),`
|
|
402
|
+
`,(0,c.jsx)(t.h3,{id:`регистрировать-preset-при-каждом-рендере`,children:`Регистрировать preset при каждом рендере`}),`
|
|
403
|
+
`,(0,c.jsx)(t.p,{children:`Реестр глобальный, а компиляция должна выполняться один раз. Настраивайте presets на bootstrap-stage.`}),`
|
|
404
|
+
`,(0,c.jsx)(t.h2,{id:`api-справка`,children:`API-справка`}),`
|
|
405
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Семейство`}),(0,c.jsx)(t.th,{children:`Публичный API`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Parsing`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`parseDateValue`}),`, `,(0,c.jsx)(t.code,{children:`parseDateValueTZ`}),`, `,(0,c.jsx)(t.code,{children:`parseDate`}),`, `,(0,c.jsx)(t.code,{children:`parseDateTZ`}),`, `,(0,c.jsx)(t.code,{children:`parseDateByPattern`}),`, `,(0,c.jsx)(t.code,{children:`parseDateByFormat`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Universal format`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`formatDate`}),`, `,(0,c.jsx)(t.code,{children:`formatDateRange`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`UI wrappers`}),(0,c.jsxs)(t.td,{children:[`все `,(0,c.jsx)(t.code,{children:`formatDateAsDate*`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsMonth*`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsTime*`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsDatetime*`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Machine wrappers`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`formatDateAsAbapYear`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapMonth`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapDate`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapDatetime`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsODataDate`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsODataDatetime`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsODataTime`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Presets`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`DATE_FORMAT_DEFAULTS`}),`, `,(0,c.jsx)(t.code,{children:`DEFAULT_DATE_PRESET_NAMES`}),`, `,(0,c.jsx)(t.code,{children:`DATE_FORMAT_STYLE_PRESET_NAMES`}),`, `,(0,c.jsx)(t.code,{children:`getDatePreset`}),`, `,(0,c.jsx)(t.code,{children:`getDatePresetNames`}),`, `,(0,c.jsx)(t.code,{children:`registerDatePreset`}),`, `,(0,c.jsx)(t.code,{children:`resetDatePresets`}),`, `,(0,c.jsx)(t.code,{children:`resolveDateFormatName`}),`, `,(0,c.jsx)(t.code,{children:`resolveDateFormatPreset`}),`, type guards`]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Calendar`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`createCalendarDate`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfDay`}),`, `,(0,c.jsx)(t.code,{children:`getEndOfDay`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfWeek`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfMonth`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfYear`}),`, `,(0,c.jsx)(t.code,{children:`addCalendarDays`}),`, `,(0,c.jsx)(t.code,{children:`addCalendarMonths`}),`, `,(0,c.jsx)(t.code,{children:`addCalendarYears`}),`, `,(0,c.jsx)(t.code,{children:`isSameCalendarDay`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Ranges`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`isValidDate`}),`, `,(0,c.jsx)(t.code,{children:`isDateRangeTuple`}),`, `,(0,c.jsx)(t.code,{children:`cloneDate`}),`, `,(0,c.jsx)(t.code,{children:`orderDates`}),`, `,(0,c.jsx)(t.code,{children:`resolveDateRangePair`}),`, `,(0,c.jsx)(t.code,{children:`normalizeDateRange`}),`, `,(0,c.jsx)(t.code,{children:`requireDateRange`}),`, `,(0,c.jsx)(t.code,{children:`countCalendarDaysInDateRange`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Periods`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`getCalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`isDateInsideCalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`isCalendarPeriodWithinDateBounds`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Relative ranges`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`normalizeDateRangeReferenceDate`}),`, `,(0,c.jsx)(t.code,{children:`resolveTodayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveYesterdayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthStartToTodayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthStartToYesterdayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthAgoRange`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Education`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`parseEducationDateKey`}),`, `,(0,c.jsx)(t.code,{children:`formatEducationDateKey`}),`, `,(0,c.jsx)(t.code,{children:`formatEducationTimeKey`}),`, `,(0,c.jsx)(t.code,{children:`createEducationDateTime`}),`, `,(0,c.jsx)(t.code,{children:`getEducationYear`}),`, `,(0,c.jsx)(t.code,{children:`getEducationYearRange`}),`, `,(0,c.jsx)(t.code,{children:`isEducationDateInCurrentYear`}),`, `,(0,c.jsx)(t.code,{children:`getEducationWeekStartDate`}),`, `,(0,c.jsx)(t.code,{children:`getEducationWeekRange`}),`, `,(0,c.jsx)(t.code,{children:`getEducationWeekDays`}),`, `,(0,c.jsx)(t.code,{children:`getCurrentEducationWeekKey`}),`, `,(0,c.jsx)(t.code,{children:`normalizeEducationWeekKey`}),`, `,(0,c.jsx)(t.code,{children:`resolveEducationWeekKey`}),`, `,(0,c.jsx)(t.code,{children:`isCurrentEducationWeek`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Pattern metadata`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`DATE_PATTERN_DATE_TOKENS`}),`, `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TIME_TOKENS`}),`, `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKENS`}),`, `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKEN_RE`})]})]})]})]}),`
|
|
406
|
+
`,(0,c.jsxs)(t.p,{children:[`Соответствующие types (`,(0,c.jsx)(t.code,{children:`DateFormatPreset`}),`, `,(0,c.jsx)(t.code,{children:`FormatDateOptions`}),`, range/period/education types и parse options) экспортируются из того же `,(0,c.jsx)(t.code,{children:`/formatters`}),` entrypoint.`]}),`
|
|
407
|
+
`,(0,c.jsx)(t.h3,{id:`каталог-публичных-типов`,children:`Каталог публичных типов`}),`
|
|
408
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Область`}),(0,c.jsx)(t.th,{children:`Типы`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Parsing и format`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`DateInputSource`}),`, `,(0,c.jsx)(t.code,{children:`ParsedDateValue`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPattern`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatStyle`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPrecision`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPreset`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPresetConfig`}),`, `,(0,c.jsx)(t.code,{children:`FormatDateOptions`}),`, `,(0,c.jsx)(t.code,{children:`ParseDateByPatternOptions`}),`, `,(0,c.jsx)(t.code,{children:`ParseDateByFormatOptions`}),`, `,(0,c.jsx)(t.code,{children:`ResolveDateFormatPresetOptions`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Диапазоны`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`NullableDateRange`}),`, `,(0,c.jsx)(t.code,{children:`DateRange`}),`, `,(0,c.jsx)(t.code,{children:`DateRangeInput`}),`, `,(0,c.jsx)(t.code,{children:`DateRangeTimeMode`}),`, `,(0,c.jsx)(t.code,{children:`NormalizeDateRangeOptions`}),`, `,(0,c.jsx)(t.code,{children:`DateRangeReferenceContext`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Периоды`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`CalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`CalendarPeriodOptions`}),`, `,(0,c.jsx)(t.code,{children:`CalendarPeriodSelectionMode`}),`, `,(0,c.jsx)(t.code,{children:`CalendarWeekEndDay`}),`, `,(0,c.jsx)(t.code,{children:`CalendarPeriodDateBounds`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Учебный календарь`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`EducationDateKey`}),`, `,(0,c.jsx)(t.code,{children:`EducationYearRange`}),`, `,(0,c.jsx)(t.code,{children:`EducationWeekRange`})]})]})]})]}),`
|
|
409
|
+
`,(0,c.jsxs)(t.p,{children:[`Импортируйте их с модификатором `,(0,c.jsx)(t.code,{children:`type`}),`, чтобы подчеркнуть отсутствие runtime-значения:`]}),`
|
|
410
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import type { DateFormatPresetConfig, DateRange, NormalizeDateRangeOptions } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
411
|
+
`})}),`
|
|
412
|
+
`,(0,c.jsx)(t.h2,{id:`связанная-документация`,children:`Связанная документация`}),`
|
|
413
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
414
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsxs)(t.a,{href:`../README.mdx`,children:[`Обзор `,(0,c.jsx)(t.code,{children:`formatters`})]})}),`
|
|
415
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`../pipeline/README.mdx`,children:`Formatter pipeline`})}),`
|
|
416
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`../number/README.mdx`,children:`Числовые форматтеры`})}),`
|
|
417
|
+
`]})]})}function s(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,c.jsx)(t,{...e,children:(0,c.jsx)(o,{...e})}):o(e)}var c;function l(){return(l=e((()=>{c=t(),r(),a()})))()}l();export{s as default};
|