@ryuzaki13/react-foundation-ui 1.8.11 → 1.8.12
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/chunks/defaultRenderers-u_Vep6Pj.js.map +1 -1
- package/dist/chunks/multi-select-DtmRtX6v.js.map +1 -1
- package/dist/chunks/select-MN6zDPKM.js.map +1 -1
- package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -1
- package/dist/multi-select/model/useODataMultiSelect.d.ts +1 -1
- package/dist/multi-select/model/useODataMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/defaultRenderers.d.ts +1 -1
- package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
- package/dist/select/model/useODataSelect.d.ts +1 -1
- package/dist/select/model/useODataSelect.d.ts.map +1 -1
- package/dist/select/model/useODataSelectBase.d.ts +1 -1
- package/dist/select/model/useODataSelectBase.d.ts.map +1 -1
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-select/model/buildODataTreeNodes.d.ts +1 -1
- package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -1
- package/package.json +3 -3
- package/storybook-static/assets/{Badge-BojMuOws.js → Badge-CveIo2LZ.js} +1 -1
- package/storybook-static/assets/{Badge.stories-C9gJRuIO.js → Badge.stories-Bd8M64xJ.js} +1 -1
- package/storybook-static/assets/{BadgeList-dNEWI7-O.js → BadgeList-xT41a0VL.js} +1 -1
- package/storybook-static/assets/{Button-Bbt3JzIY.js → Button-C5bBSb3k.js} +1 -1
- package/storybook-static/assets/{Button-CrTHXWYk.js → Button-DkDgfpHL.js} +1 -1
- package/storybook-static/assets/{Button.stories-BaYXOBeF.js → Button.stories-CeKPeGK5.js} +1 -1
- package/storybook-static/assets/{CalendarView-Dp0zus1o.js → CalendarView-CEqcrblx.js} +1 -1
- package/storybook-static/assets/{CheckBox-BiK9yWNt.js → CheckBox-DKeFkdOt.js} +1 -1
- package/storybook-static/assets/{CheckBox-UzYHaD6S.js → CheckBox-OVvAarW-.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-C2BOiWZj.js → CheckBox.stories-CfZ0p1yo.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-C5S4wUlD.js → Color-6AOWCN3U-BWW7zrfs.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BWQln_tb.js → ContextMenu-kia7is1N.js} +1 -1
- package/storybook-static/assets/{ContextMenu-D9EZxb7d.js → ContextMenu-xn2GtiLR.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-U38zPh9_.js → ContextMenu.stories-CYuy9uXF.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-COIOrxQn.js → CustomOptionButton-C4w-APws.js} +1 -1
- package/storybook-static/assets/DateInput-BiUFIihm.js +1 -0
- package/storybook-static/assets/{DateInput-C-entb-r.js → DateInput-DAzE5mCE.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-NmUXQLDU.js → DateInput.stories-BcowGCRD.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BM1L1KOo.js → DateRangePresetSelect-CQm4dNLR.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CAJzxaq0.js → DateRangePresetSelect-RIyqNBk9.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-CC47XLnD.js → DateRangePresetSelect.stories-ypGyuGfy.js} +1 -1
- package/storybook-static/assets/{Detail-CDluXtts.js → Detail-CEypL2Nh.js} +1 -1
- package/storybook-static/assets/{Detail.stories-DjniLC4n.js → Detail.stories-DNkT7B-u.js} +1 -1
- package/storybook-static/assets/{Dialog-bzRSgGU7.js → Dialog-BVFFQJDH.js} +1 -1
- package/storybook-static/assets/{Dialog-bw6cHUsz.js → Dialog-DD0grLG3.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-C6Rs6s_p.js → Dialog.stories-DSCypHqR.js} +1 -1
- package/storybook-static/assets/{Disclosure-DelA6FsQ.js → Disclosure-DauUgrev.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-D7yUinyb.js → Disclosure.stories-B1qB8vQZ.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-DbK7mU_Q.js → DisclosureGroup-D9oCCeHf.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-v3z0zVN1.js → DocsRenderer-JROSPFPF-CmSf6tXp.js} +1 -1
- package/storybook-static/assets/{DropZone-Cyy-ttEO.js → DropZone-D42ueN1w.js} +1 -1
- package/storybook-static/assets/{DropZone-CI3NW4AC.js → DropZone-D8hbPCAv.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-S0HSpGTB.js → DropZone.stories-DO-T_Bh4.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-Ct1bSZsE.js → DropdownMenu-CknJDoji.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-Oj3xlasj.js → ExpandableActionPanel-Dqi_bo3c.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-Ch7CLkpR.js → ExpandableActionPanel.stories-BD9QZGZN.js} +1 -1
- package/storybook-static/assets/{Flex-UiFm8Tkc.js → Flex-CaVn1IOP.js} +1 -1
- package/storybook-static/assets/{Flex.stories-CaDiVlBD.js → Flex.stories-Bp9Y6q6b.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-CTYV9W7T.js → FloatingPopover-U7tx-Jlw.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-D-ysSR3p.js → FormattedTableCell-pmmhsAbN.js} +1 -1
- package/storybook-static/assets/{Grid-CigBXPe2.js → Grid-CEpMNurH.js} +1 -1
- package/storybook-static/assets/{Grid.stories-ay3z9DQZ.js → Grid.stories-BM-gO5DN.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Dkce_ugb.js → ImageCropper.stories-BWz5XU6U.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-C9_EmGBW.js → ImageRenderer-BTYZEX5t.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-C7bXaNBI.js → ImageRenderer.stories-Dz2STM95.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-D-ZzGlk8.js → ImageView.stories-DBVe0an3.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-ItcRfxyy.js → ImageViewer.stories-C4Px97lD.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-eaupID36.js → ImageViewerRuntime-TJtlJVfa.js} +1 -1
- package/storybook-static/assets/{Input-op4j7Beh.js → Input-CIPgijvW.js} +1 -1
- package/storybook-static/assets/{Input-BUDNR96c.js → Input-D8io9jVS.js} +1 -1
- package/storybook-static/assets/{Input.stories-DwulvJIg.js → Input.stories-SUk3aYaC.js} +1 -1
- package/storybook-static/assets/{InputDateTime-B_cxOp6k.js → InputDateTime-DA5pIDuE.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-BueLF4HC.js → InputDateTime.stories-DeudzDSU.js} +1 -1
- package/storybook-static/assets/{InputFile-C8z6TPc1.js → InputFile-C5mp5Y5I.js} +1 -1
- package/storybook-static/assets/{InputFile-DSg7sugm.js → InputFile-CGAC7ruP.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-C6XSbIua.js → InputFile.stories-Cx1xQ6PE.js} +1 -1
- package/storybook-static/assets/{InputFiles-DoatLq3q.js → InputFiles-B7OBcPJN.js} +1 -1
- package/storybook-static/assets/{InputFiles-DeZ84Uu_.js → InputFiles-Hzl89Ghf.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-BMbE8SJU.js → InputFiles.stories-CG6QjDZH.js} +1 -1
- package/storybook-static/assets/{InputFilesList-CsfDDqaJ.js → InputFilesList-B6htWHF1.js} +1 -1
- package/storybook-static/assets/{InputImage-yJSq98EH.js → InputImage-BTa4S4Wp.js} +1 -1
- package/storybook-static/assets/{InputImage-D_YnB2Tw.js → InputImage-CQnoblAE.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-nivUG307.js → InputImage.stories-CEI44Eyz.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-IPkC_Rkg.js → InteractiveComponents-B0ypWz1x.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-D4VzVKZJ.js → InteractiveComponents.stories-BadApta9.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-aMzPN5Do.js → LayoutPicker-COB9GlV_.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-ZHkMi-LM.js → LayoutPicker-C_Uz7Tnj.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-DAzpzxn5.js → LayoutPicker.stories-Btp0IcaL.js} +1 -1
- package/storybook-static/assets/{Listbox-CR5nXC9J.js → Listbox-AAaZGSAl.js} +1 -1
- package/storybook-static/assets/{Listbox-BmfQOnrb.js → Listbox-CyfuZw7w.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-CeOpsKxB.js → Listbox.stories-NDKQmjyQ.js} +1 -1
- package/storybook-static/assets/{Modal-BStp52Zo.js → Modal-BJDnJ4zv.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CwGm5GYE.js → Modal.stories-D_X5lTLO.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-B5uUXWF9.js → ModalManagerProvider-ShDjozpW.js} +1 -1
- package/storybook-static/assets/{MultiSelect-BDs02MZh.js → MultiSelect-B5CElQ3-.js} +1 -1
- package/storybook-static/assets/{MultiSelect-308npb27.js → MultiSelect-DqXfrjcH.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-DRi_iTp4.js → MultiSelect.stories-fB3mcFmx.js} +1 -1
- package/storybook-static/assets/{NoData-ovaQEE9W.js → NoData-DDb0G7T8.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-BpeMWhLY.js → NotificationsHost-CIGL-pKX.js} +1 -1
- package/storybook-static/assets/NotificationsHost.stories-B_MRb3fs.js +29 -0
- package/storybook-static/assets/{ODataMultiSelect-qlft9L9L.js → ODataMultiSelect-DQAitH4N.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-CMPIoPiy.js → ODataMultiSelect.stories-DwW221S9.js} +2 -2
- package/storybook-static/assets/{ODataSelect-DKBQArAK.js → ODataSelect-tiZhOIhE.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DxYIhtwe.js → ODataSelect.stories-BhaatPjK.js} +2 -2
- package/storybook-static/assets/{ODataTreeMultiSelect-DAt6THP3.js → ODataTreeMultiSelect-B9WqJ-Un.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-CBNJP0mP.js → ODataTreeMultiSelect.stories-CAfKuhfU.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-Bzzt4CQC.js → ODataTreeSelect-Cel1phxZ.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-CWVvuqOt.js → ODataTreeSelect.stories-BpBCpBA9.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-BY5lz8qi.js → OneStepScroller-BSeGbz02.js} +1 -1
- package/storybook-static/assets/{Option-Rw8xwrPg.js → Option-BBtQ3GdK.js} +1 -1
- package/storybook-static/assets/{OptionButton-Br48w_Zg.js → OptionButton-B9nZuqqW.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DxSRwKw-.js → PeriodSelect-BGvhR3to.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-8-wpXz6w.js → PeriodSelect-DA_zjcdA.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-B-qgUzlS.js → PeriodSelect.stories-DDP1eXyM.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-C5xmysFh.js → PickerTriggerActions-BgvzqRBd.js} +1 -1
- package/storybook-static/assets/{Popover-Ds8PUigp.js → Popover-BQql18MF.js} +1 -1
- package/storybook-static/assets/{Popover-NJwt_vZZ.js → Popover-C0NebUMz.js} +1 -1
- package/storybook-static/assets/{Popover.stories-CUOFA_Xf.js → Popover.stories-CIyDUtlz.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-DyOpbkON.js → PresetRangeDateInput-BsgzPwCV.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Xk0bOy3S.js → PresetRangeDateInput-htbxc3ni.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CwjUlXj0.js → PresetRangeDateInput.stories-ClHM5Kah.js} +1 -1
- package/storybook-static/assets/{PresetSelect-Ddmr0niY.js → PresetSelect-Dcx0BOTx.js} +1 -1
- package/storybook-static/assets/README--LCKbep-.js +110 -0
- package/storybook-static/assets/{README-DRnlD7y8.js → README-5M8ajrJp.js} +1 -1
- package/storybook-static/assets/README-5NhzH8VL.js +95 -0
- package/storybook-static/assets/README-Am6Fa6-b.js +69 -0
- package/storybook-static/assets/README-B3bFglqG.js +82 -0
- package/storybook-static/assets/README-B45Cwj2a.js +95 -0
- package/storybook-static/assets/README-B6Nq7NCU.js +416 -0
- package/storybook-static/assets/{README-B4zYJg6u.js → README-B6ltJiw3.js} +1 -1
- package/storybook-static/assets/{README-BdPlV5nA.js → README-BB_JPejH.js} +1 -1
- package/storybook-static/assets/README-BIq-FXcN.js +2124 -0
- package/storybook-static/assets/README-BSh5XUR9.js +110 -0
- package/storybook-static/assets/README-BXJneZAJ.js +147 -0
- package/storybook-static/assets/README-BYSgTTZt.js +296 -0
- package/storybook-static/assets/{README-BzVni2ve.js → README-BmhhWWEk.js} +1 -1
- package/storybook-static/assets/README-Bqnqu1bC.js +118 -0
- package/storybook-static/assets/README-BuMMG4_N.js +192 -0
- package/storybook-static/assets/README-BxjYCoYA.js +186 -0
- package/storybook-static/assets/{README-MzcO5Z_P.js → README-ByALXSEH.js} +1 -1
- package/storybook-static/assets/README-Byo6DxIF.js +101 -0
- package/storybook-static/assets/README-C3UcjOGB.js +208 -0
- package/storybook-static/assets/README-C6BOdXNV.js +322 -0
- package/storybook-static/assets/README-C8E1O7DQ.js +230 -0
- package/storybook-static/assets/README-C9eh0JLs.js +64 -0
- package/storybook-static/assets/README-CAGQnLsv.js +90 -0
- package/storybook-static/assets/README-CC00hlZK.js +527 -0
- package/storybook-static/assets/README-CH_6ZIO2.js +64 -0
- package/storybook-static/assets/README-CHbo4O3Z.js +75 -0
- package/storybook-static/assets/{README-CTIBG4zH.js → README-CIGfHKKE.js} +1 -1
- package/storybook-static/assets/{README-BHw6MVjD.js → README-CM-7E-Jf.js} +1 -1
- package/storybook-static/assets/{README-C0BwTe5N.js → README-CNHemCS2.js} +1 -1
- package/storybook-static/assets/{README-DzTc6XmY.js → README-CWfPiPIB.js} +1 -1
- package/storybook-static/assets/{README-Dx3cpFMr.js → README-CeK4kfFO.js} +1 -1
- package/storybook-static/assets/README-Cj2e6HrF.js +178 -0
- package/storybook-static/assets/README-CsoHGRve.js +1844 -0
- package/storybook-static/assets/README-D9OypaFB.js +208 -0
- package/storybook-static/assets/{README-CkWglKbS.js → README-DDBqoI-T.js} +1 -1
- package/storybook-static/assets/README-DE2wk9-v.js +1282 -0
- package/storybook-static/assets/README-DEj2wSK0.js +264 -0
- package/storybook-static/assets/{README-D-XjRtAE.js → README-DIbfpC-2.js} +1 -1
- package/storybook-static/assets/{README-Dki94Nf2.js → README-DJHVgrpj.js} +1 -1
- package/storybook-static/assets/README-DN9HKtp_.js +124 -0
- package/storybook-static/assets/README-DNricOkt.js +136 -0
- package/storybook-static/assets/README-DV4fCpqN.js +1146 -0
- package/storybook-static/assets/{README-BzVHwvgo.js → README-DjCArsA5.js} +1 -1
- package/storybook-static/assets/README-Dl92E69Z.js +1704 -0
- package/storybook-static/assets/README-DnA-4W65.js +226 -0
- package/storybook-static/assets/README-DoCA4JXf.js +273 -0
- package/storybook-static/assets/{README-DqQDgJN-.js → README-DvAlDsh9.js} +1 -1
- package/storybook-static/assets/README-Ss-3t1nX.js +158 -0
- package/storybook-static/assets/README-eHCINzP3.js +154 -0
- package/storybook-static/assets/README-qHKxXU95.js +98 -0
- package/storybook-static/assets/README-tm9QH9cF.js +103 -0
- package/storybook-static/assets/README-ui-uanyg.js +672 -0
- package/storybook-static/assets/{RadioButton-oSvQ-gQh.js → RadioButton-CWtjclwT.js} +1 -1
- package/storybook-static/assets/{RadioButton-DWbkCY8u.js → RadioButton-YIQXt0wx.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-GNQ9XJZT.js → RadioButton.stories-Ah-CBpeC.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CvXjGXcV.js → RadioGroup-BnO-GL7A.js} +1 -1
- package/storybook-static/assets/{RadioGroup-eBYggurL.js → RadioGroup-CUS0etBD.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-C77j_cPv.js → RadioGroup.stories-DGwCawtU.js} +1 -1
- package/storybook-static/assets/{Scrollable-De6SdhI3.js → Scrollable-D85fA6pO.js} +1 -1
- package/storybook-static/assets/{Select-Bwc0bEpt.js → Select-CGCxJjL9.js} +1 -1
- package/storybook-static/assets/{Select-DQMoVjn4.js → Select-gRnfvfGh.js} +1 -1
- package/storybook-static/assets/{Select.stories-BSIJKJnM.js → Select.stories-CMwt4F9i.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-B73irNFR.js → SerializableSelect-BLXfKJ38.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-Z9q6g5v2.js → SerializableSelect.stories-Bca1a9ZU.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-Dq9LcjnS.js → SingleDateTimeInput-CyeQN0Rd.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-BHl6srqA.js → SingleDateTimeInput-xrmZckzw.js} +1 -1
- package/storybook-static/assets/SingleDateTimeInput.stories-BYFTQM9z.js +48 -0
- package/storybook-static/assets/{Slider-BiyKexKa.js → Slider-1yJ3uVeR.js} +1 -1
- package/storybook-static/assets/{Slider-CvM0N_kc.js → Slider-D8GtXVGI.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CdHAMDmY.js → Slider.stories-CyQ3ns_C.js} +1 -1
- package/storybook-static/assets/{SliderInput-Bx_oHUCV.js → SliderInput-BOzHhEUA.js} +1 -1
- package/storybook-static/assets/{SliderInput-DqHotbhB.js → SliderInput-ISSx9vH_.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-R5yDhghM.js → SliderInput.stories-7ooTghrS.js} +1 -1
- package/storybook-static/assets/{Sortable-D7pjTHO0.js → Sortable-CCLiMmfZ.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CVLG6pSH.js → Sortable.stories-B36szI6t.js} +1 -1
- package/storybook-static/assets/{Splitter-B1Du6XI2.js → Splitter-DQGhgRwx.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-D-FRLMCc.js → Splitter.stories-Hsq1wYaq.js} +1 -1
- package/storybook-static/assets/{StateSelect-zl-yZibY.js → StateSelect-C6hldFgO.js} +1 -1
- package/storybook-static/assets/{StateSelect-BJdUEUBc.js → StateSelect-DieNn4VC.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-DgidR5zR.js → StateSelect.stories-CvAhDMix.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-IucGrtIi.js → StringToggle.stories-CUT1tvt-.js} +1 -1
- package/storybook-static/assets/{Switch-BJrn2lIN.js → Switch-CX9p_uYU.js} +1 -1
- package/storybook-static/assets/{Switch-5dCshvVo.js → Switch-nEMRtcWe.js} +1 -1
- package/storybook-static/assets/{Switch.stories-Dp_l3_JL.js → Switch.stories-CPsHa2_m.js} +1 -1
- package/storybook-static/assets/{Table-BFAEcUde.js → Table-BhtITVtj.js} +1 -1
- package/storybook-static/assets/{Table.stories-CohejRQv.js → Table.stories-nWNhSydG.js} +2 -2
- package/storybook-static/assets/{Tabs-CI32QiHf.js → Tabs-DMQFh2BJ.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-Cr9d9ipA.js → Tabs.stories-D23_xvom.js} +1 -1
- package/storybook-static/assets/{TabsBox-BlDOUDMF.js → TabsBox-B5BsD_j_.js} +1 -1
- package/storybook-static/assets/{TagInput-YZ7eSv8W.js → TagInput-DO17z100.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-DrOvsiI5.js → TagInput.stories-CMMFnIzb.js} +1 -1
- package/storybook-static/assets/{Text-DK4jN26J.js → Text-ClnbDqRk.js} +1 -1
- package/storybook-static/assets/{Textarea-DxPuWBZj.js → Textarea-C2IO_zsP.js} +1 -1
- package/storybook-static/assets/{Textarea-CFh5f_lC.js → Textarea-DkhohiNc.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-CUeOGKYc.js → Textarea.stories-NL6Aq8Vc.js} +1 -1
- package/storybook-static/assets/{TimePanel-BUhFtwlb.js → TimePanel-DNEPDlSW.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-CpXpMBDN.js → TimePanel.stories-DlfdPsz1.js} +1 -1
- package/storybook-static/assets/{Toggle-BtApzBNH.js → Toggle-3U5CceQN.js} +1 -1
- package/storybook-static/assets/{Toggle-l2AvDbRn.js → Toggle-Cc6Ca-HI.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-Ca8otmAa.js → Toggle.stories-BR-hVLDp.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-nXC4ZB5b.js → TreeMultiSelect-B0oBc-4y.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-C9QDV63L.js → TreeMultiSelect-D9hMQN2O.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-6STRGJbF.js → TreeMultiSelect.stories-CslpbvPR.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-Cq7fSw3x.js → TreePickerBase-B_dMCe45.js} +1 -1
- package/storybook-static/assets/{TreeSelect-CITef9rp.js → TreeSelect-2lj0Q8gm.js} +1 -1
- package/storybook-static/assets/{TreeSelect-rMNyu_KT.js → TreeSelect-DEKNYF2b.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-B-Emz9yW.js → TreeSelect.stories-CVDxn8Vm.js} +1 -1
- package/storybook-static/assets/{TreeTable-CLiP0td3.js → TreeTable-CBIpzYRL.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-DJb9qt8k.js → TreeTable.stories-BMzrr2Kc.js} +2 -2
- package/storybook-static/assets/{blocks-DndFRxxW.js → blocks-B5YBxaaS.js} +3 -3
- package/storybook-static/assets/{check-CLkTJVXe.js → check-BjtdCRaW.js} +1 -1
- package/storybook-static/assets/{chevron-down-miCejSEn.js → chevron-down-B4u-y8Z1.js} +1 -1
- package/storybook-static/assets/{chevron-left-DhQIPej2.js → chevron-left-BQfWs7Ah.js} +1 -1
- package/storybook-static/assets/{chevron-right-DfBBx-fr.js → chevron-right-ChokKd-f.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-IdwKKJUw.js → chunk-W22LQPXL-meOkhzk4.js} +1 -1
- package/storybook-static/assets/{circle-alert-DOmVf8am.js → circle-alert-B1AnDRf_.js} +1 -1
- package/storybook-static/assets/{circle-check-e7eSQ2VD.js → circle-check-JYnlcC1F.js} +1 -1
- package/storybook-static/assets/{components-Bm4Cw8Ap.js → components-C_wl1sL5.js} +3 -3
- package/storybook-static/assets/{contextMenu-DpIKeJju.js → contextMenu-B-TUGs_1.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-m21aWJXz.js → defaultRenderers-DfmnIuod.js} +1 -1
- package/storybook-static/assets/{download-eAKjms6q.js → download-eR3X8I-h.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-DmilONq6.js → floating-ui.react-D95VPQ0b.js} +1 -1
- package/storybook-static/assets/formatters-D33Uh3si-CxrG0jsB.js +1 -0
- package/storybook-static/assets/foundationApi-QhHXpYLB.js +59 -0
- package/storybook-static/assets/foundationLib-CEAjnstw.js +30 -0
- package/storybook-static/assets/{hooks-RI5_2AXI.js → hooks-awde7r2r.js} +1 -1
- package/storybook-static/assets/iframe-DzQq_POR.js +1 -0
- package/storybook-static/assets/{iframe-Sr0umHM6.js → iframe-FSp_AjJa.js} +4 -4
- package/storybook-static/assets/{info-DhJTzwcL.js → info-12vmb1sT.js} +1 -1
- package/storybook-static/assets/odata-C0Kpvttz.js +1 -0
- package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +3 -0
- package/storybook-static/assets/{odataStoryFixtures-lgnWIUp7.js → odataStoryFixtures-BXZnk_C7.js} +1 -1
- package/storybook-static/assets/{react-YFbUKK0m.js → react-BlCqWuXr.js} +1 -1
- package/storybook-static/assets/{refresh-cw-C7WnxX9M.js → refresh-cw-Bf5ufPte.js} +1 -1
- package/storybook-static/assets/{settings-2-0NVvyKQl.js → settings-2-DR-dTXIC.js} +1 -1
- package/storybook-static/assets/{sortable-DDGG-Zfs.js → sortable-B5e5yb_-.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-CxWm8nc8.js → syntaxhighlighter-QEQV7K2Y-EVJARTec.js} +1 -1
- package/storybook-static/assets/{trash-2-BnceCuhg.js → trash-2-QP7TS18H.js} +1 -1
- package/storybook-static/assets/{triangle-alert-MPi3GVgt.js → triangle-alert-qw19mxHr.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-hmjK6chS.js → useODataSelectBase-Csu_Cct9.js} +1 -1
- package/storybook-static/assets/useODataTreeData-BAv-Twqf.js +1 -0
- package/storybook-static/assets/{usePickerQuery-CtsGhieD.js → usePickerQuery-Da-XM_Y0.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-EaI8W2G0.js → usePickerTriggerController-C0TdC2Pz.js} +1 -1
- package/storybook-static/assets/{x-CqPSvWfo.js → x-aCjYTirW.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/assets/DateInput-05Iy69_a.js +0 -1
- package/storybook-static/assets/NotificationsHost.stories-CgbFboVD.js +0 -29
- package/storybook-static/assets/SingleDateTimeInput.stories-C2RuBRAF.js +0 -48
- package/storybook-static/assets/async-SjiCjIjO.js +0 -625
- package/storybook-static/assets/formatters-CBgrBeSA-CqB1pZxS.js +0 -1
- package/storybook-static/assets/foundationLib-DRrox3tN.js +0 -25
- package/storybook-static/assets/iframe-DQo-3eW2.js +0 -1
- package/storybook-static/assets/odata-DhISMZkE.js +0 -1
- package/storybook-static/assets/odata-service-B6TxBSLm-Bq8Ya67E.js +0 -3
- package/storybook-static/assets/odataFetchFn-Dv6Xi5CI.js +0 -763
- package/storybook-static/assets/persisted-CUFiw53N.js +0 -600
- package/storybook-static/assets/useODataTreeData-CKuavbWc.js +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,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/Data/Currency`}),`
|
|
2
|
+
`,(0,c.jsxs)(t.h1,{id:`валютные-подписи-через-ryuzaki13react-foundation-libcurrency`,children:[`Валютные подписи через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/currency`})]}),`
|
|
3
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль связывает общий OData-параметр `,(0,c.jsx)(t.code,{children:`p_curr`}),` с отображаемой подписью показателя. Он определяет один из двух режимов валюты и добавляет соответствующий суффикс к label.`]}),`
|
|
4
|
+
`,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
|
|
5
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
6
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5`,children:`Назначение`})}),`
|
|
7
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
|
|
8
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#currencymode`,children:(0,c.jsx)(t.code,{children:`CurrencyMode`})})}),`
|
|
9
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#resolvecurrencymodefromodataparameters`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})})}),`
|
|
10
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#resolvecurrencyawarelabel`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})})}),`
|
|
11
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D1%8B%D0%B9-pipeline`,children:`Готовый pipeline`})}),`
|
|
12
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8`,children:`Ограничения и ошибки`})}),`
|
|
13
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#api-%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA`,children:`API-справочник`})}),`
|
|
14
|
+
`]}),`
|
|
15
|
+
`,(0,c.jsx)(t.h2,{id:`назначение`,children:`Назначение`}),`
|
|
16
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`wrapped OData params
|
|
17
|
+
{ p_curr: { value: true } }
|
|
18
|
+
│
|
|
19
|
+
▼
|
|
20
|
+
CurrencyMode "rub"
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
"Выручка" + ["за тн", "руб/тн"]
|
|
24
|
+
│
|
|
25
|
+
▼
|
|
26
|
+
"Выручка руб/тн"
|
|
27
|
+
`})}),`
|
|
28
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль не форматирует денежное число, не конвертирует валюту и не строит OData query. Для чисел используйте `,(0,c.jsx)(t.code,{children:`/formatters`}),`, для OData params — `,(0,c.jsx)(t.code,{children:`/odata-service`}),`.`]}),`
|
|
29
|
+
`,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
|
|
30
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { resolveCurrencyAwareLabel, resolveCurrencyModeFromODataParameters } from "@ryuzaki13/react-foundation-lib/currency";
|
|
31
|
+
|
|
32
|
+
import type { CurrencyMode } from "@ryuzaki13/react-foundation-lib/currency";
|
|
33
|
+
`})}),`
|
|
34
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль ESM, не требует React или browser API. Параметры должны иметь публичную wrapped-форму из `,(0,c.jsx)(t.code,{children:`/odata-service`}),`.`]}),`
|
|
35
|
+
`,(0,c.jsx)(t.h2,{id:`currencymode`,children:(0,c.jsx)(t.code,{children:`CurrencyMode`})}),`
|
|
36
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type CurrencyMode = "internal" | "rub";
|
|
37
|
+
`})}),`
|
|
38
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
39
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`internal`}),` — внутренний режим;`]}),`
|
|
40
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`rub`}),` — рублёвый режим.`]}),`
|
|
41
|
+
`]}),`
|
|
42
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`null`}),` используется resolver-функцией, когда режим определить нельзя.`]}),`
|
|
43
|
+
`,(0,c.jsx)(t.h2,{id:`resolvecurrencymodefromodataparameters`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})}),`
|
|
44
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const mode = resolveCurrencyModeFromODataParameters(params);
|
|
45
|
+
`})}),`
|
|
46
|
+
`,(0,c.jsxs)(t.p,{children:[`Функция читает только собственное поле `,(0,c.jsx)(t.code,{children:`p_curr.value`}),`:`]}),`
|
|
47
|
+
`,(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.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[`поля `,(0,c.jsx)(t.code,{children:`p_curr`}),` нет`]}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: false } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"internal"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: true } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"rub"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: "true" } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ p_curr: { value: 1 } }`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`null`})})]})]})]}),`
|
|
48
|
+
`,(0,c.jsxs)(t.p,{children:[`Строка `,(0,c.jsx)(t.code,{children:`"true"`}),` намеренно не приводится к boolean. Нормализуйте внешний payload на OData boundary, а не внутри UI label.`]}),`
|
|
49
|
+
`,(0,c.jsxs)(t.p,{children:[`Пример с helper `,(0,c.jsx)(t.code,{children:`/odata-service`}),`:`]}),`
|
|
50
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { wrapODataParams } from "@ryuzaki13/react-foundation-lib/odata-service";
|
|
51
|
+
|
|
52
|
+
const params = wrapODataParams({ p_curr: true });
|
|
53
|
+
const mode = resolveCurrencyModeFromODataParameters(params);
|
|
54
|
+
// "rub".
|
|
55
|
+
`})}),`
|
|
56
|
+
`,(0,c.jsx)(t.h2,{id:`resolvecurrencyawarelabel`,children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})}),`
|
|
57
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const label = resolveCurrencyAwareLabel("Выручка", ["за тн", "руб/тн"], "rub");
|
|
58
|
+
// "Выручка руб/тн".
|
|
59
|
+
`})}),`
|
|
60
|
+
`,(0,c.jsxs)(t.p,{children:[`Пара `,(0,c.jsx)(t.code,{children:`currencyLabels`}),` имеет фиксированный смысл:`]}),`
|
|
61
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`readonly[(internalLabel, rubLabel)];
|
|
62
|
+
`})}),`
|
|
63
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Mode`}),(0,c.jsx)(t.th,{style:{textAlign:`right`},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:`internal`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`rub`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`1`})]})]})]}),`
|
|
64
|
+
`,(0,c.jsx)(t.p,{children:`Точные правила:`}),`
|
|
65
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
66
|
+
`,(0,c.jsxs)(t.li,{children:[`без `,(0,c.jsx)(t.code,{children:`currencyLabels`}),` возвращается исходный `,(0,c.jsx)(t.code,{children:`label`}),`;`]}),`
|
|
67
|
+
`,(0,c.jsxs)(t.li,{children:[`при `,(0,c.jsx)(t.code,{children:`null`}),`/`,(0,c.jsx)(t.code,{children:`undefined`}),` mode возвращается исходный `,(0,c.jsx)(t.code,{children:`label`}),`;`]}),`
|
|
68
|
+
`,(0,c.jsxs)(t.li,{children:[`суффикс обрезается через `,(0,c.jsx)(t.code,{children:`trim()`}),`;`]}),`
|
|
69
|
+
`,(0,c.jsx)(t.li,{children:`пустой суффикс не добавляется;`}),`
|
|
70
|
+
`,(0,c.jsx)(t.li,{children:`обычно между label и суффиксом добавляется один пробел;`}),`
|
|
71
|
+
`,(0,c.jsx)(t.li,{children:`если обрезанный суффикс начинается с запятой, дополнительный пробел не добавляется.`}),`
|
|
72
|
+
`]}),`
|
|
73
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`resolveCurrencyAwareLabel("Выручка", [", за тн", ", руб/тн"], "rub");
|
|
74
|
+
// "Выручка, руб/тн".
|
|
75
|
+
|
|
76
|
+
resolveCurrencyAwareLabel("Выручка", ["", " "], "rub");
|
|
77
|
+
// "Выручка".
|
|
78
|
+
`})}),`
|
|
79
|
+
`,(0,c.jsxs)(t.p,{children:[`Исходный `,(0,c.jsx)(t.code,{children:`label`}),` не обрезается и не нормализуется.`]}),`
|
|
80
|
+
`,(0,c.jsx)(t.h2,{id:`готовый-pipeline`,children:`Готовый pipeline`}),`
|
|
81
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function buildMetricLabel(
|
|
82
|
+
baseLabel: string,
|
|
83
|
+
currencyLabels: readonly [string, string] | undefined,
|
|
84
|
+
params: WrappedODataParameters | undefined
|
|
85
|
+
) {
|
|
86
|
+
const mode = resolveCurrencyModeFromODataParameters(params);
|
|
87
|
+
return resolveCurrencyAwareLabel(baseLabel, currencyLabels, mode);
|
|
88
|
+
}
|
|
89
|
+
`})}),`
|
|
90
|
+
`,(0,c.jsx)(t.p,{children:`Resolver чистый: одинаковый вход даёт одинаковую строку и не меняет params/labels.`}),`
|
|
91
|
+
`,(0,c.jsx)(t.h2,{id:`ограничения-и-ошибки`,children:`Ограничения и ошибки`}),`
|
|
92
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
93
|
+
`,(0,c.jsxs)(t.li,{children:[`Поддерживается только параметр с точным id `,(0,c.jsx)(t.code,{children:`p_curr`}),`.`]}),`
|
|
94
|
+
`,(0,c.jsxs)(t.li,{children:[`Поддерживаются только два режима; код валюты `,(0,c.jsx)(t.code,{children:`USD`}),`, `,(0,c.jsx)(t.code,{children:`EUR`}),` и exchange rate не обрабатываются.`]}),`
|
|
95
|
+
`,(0,c.jsx)(t.li,{children:`Функция не проверяет грамматику и единицы измерения.`}),`
|
|
96
|
+
`,(0,c.jsxs)(t.li,{children:[`Запятая должна входить в сам суффикс, если нужна форма `,(0,c.jsx)(t.code,{children:`"Выручка, руб"`}),`.`]}),`
|
|
97
|
+
`,(0,c.jsxs)(t.li,{children:[`Не передавайте плоский `,(0,c.jsx)(t.code,{children:`{ p_curr: true }`}),`: ожидается `,(0,c.jsx)(t.code,{children:`{ p_curr: { value: true } }`}),`.`]}),`
|
|
98
|
+
`,(0,c.jsx)(t.li,{children:`Не используйте label helper для финансовых вычислений.`}),`
|
|
99
|
+
`]}),`
|
|
100
|
+
`,(0,c.jsx)(t.h2,{id:`api-справочник`,children:`API-справочник`}),`
|
|
101
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Export`}),(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:`CurrencyMode`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`"internal" | "rub"`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveCurrencyModeFromODataParameters`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`CurrencyMode | null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveCurrencyAwareLabel`})}),(0,c.jsx)(t.td,{children:`Итоговая display-строка`})]})]})]})]})}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};
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-FSp_AjJa.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B5YBxaaS.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/Date/Segments`}),`
|
|
2
|
+
`,(0,c.jsxs)(t.h1,{id:`сегменты-даты-и-времени-через-ryuzaki13react-foundation-libdate-segments`,children:[`Сегменты даты и времени через `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/date-segments`})]}),`
|
|
3
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль разбирает строковую маску на редактируемые сегменты и литералы, преобразует `,(0,c.jsx)(t.code,{children:`Date`}),` в значения полей и строго собирает `,(0,c.jsx)(t.code,{children:`Date`}),` обратно. Он предназначен для segment-based date/time inputs.`]}),`
|
|
4
|
+
`,(0,c.jsx)(t.p,{children:`Документ объясняет маски, индексы, local time, двухзначный год, неполный ввод и все публичные типы.`}),`
|
|
5
|
+
`,(0,c.jsx)(t.h2,{id:`содержание`,children:`Содержание`}),`
|
|
6
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
7
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B`,children:`Назначение и границы`})}),`
|
|
8
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82`,children:`Установка и импорт`})}),`
|
|
9
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F`,children:`Базовые понятия`})}),`
|
|
10
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-tokens`,children:`Поддерживаемые tokens`})}),`
|
|
11
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#parsedatesegmentmask`,children:(0,c.jsx)(t.code,{children:`parseDateSegmentMask`})})}),`
|
|
12
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#iseditabledatesegment`,children:(0,c.jsx)(t.code,{children:`isEditableDateSegment`})})}),`
|
|
13
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#datetoindexedsegmentvalues`,children:(0,c.jsx)(t.code,{children:`dateToIndexedSegmentValues`})})}),`
|
|
14
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#arealldatesegmentsempty`,children:(0,c.jsx)(t.code,{children:`areAllDateSegmentsEmpty`})})}),`
|
|
15
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#indexedsegmentstodate`,children:(0,c.jsx)(t.code,{children:`indexedSegmentsToDate`})})}),`
|
|
16
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9-input-pipeline`,children:`Полный input pipeline`})}),`
|
|
17
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#local-time-%D0%B8-%D0%BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D0%BD%D0%B0%D1%8F-%D1%81%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D0%BA%D0%B0`,children:`Local time и календарная семантика`})}),`
|
|
18
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`#api-%D0%B8-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8`,children:`API и ошибки`})}),`
|
|
19
|
+
`]}),`
|
|
20
|
+
`,(0,c.jsx)(t.h2,{id:`назначение-и-границы`,children:`Назначение и границы`}),`
|
|
21
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`"dd.MM.yyyy HH:mm"
|
|
22
|
+
│ parseDateSegmentMask
|
|
23
|
+
▼
|
|
24
|
+
[day, ".", month, ".", year, " ", hours, ":", minutes]
|
|
25
|
+
│ пользователь вводит значения по индексам
|
|
26
|
+
▼
|
|
27
|
+
Map { 0:"03", 2:"03", 4:"2026", 6:"18", 8:"03" }
|
|
28
|
+
│ indexedSegmentsToDate
|
|
29
|
+
▼
|
|
30
|
+
new Date(2026, 2, 3, 18, 3)
|
|
31
|
+
`})}),`
|
|
32
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль не рендерит input, не управляет focus/caret, не форматирует итоговую дату для UI/backend и не парсит ISO/OData строку. Для общего парсинга/форматирования используйте `,(0,c.jsx)(t.code,{children:`/formatters`}),`.`]}),`
|
|
33
|
+
`,(0,c.jsx)(t.h2,{id:`установка-и-импорт`,children:`Установка и импорт`}),`
|
|
34
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
35
|
+
areAllDateSegmentsEmpty,
|
|
36
|
+
dateToIndexedSegmentValues,
|
|
37
|
+
indexedSegmentsToDate,
|
|
38
|
+
isEditableDateSegment,
|
|
39
|
+
parseDateSegmentMask
|
|
40
|
+
} from "@ryuzaki13/react-foundation-lib/date-segments";
|
|
41
|
+
|
|
42
|
+
import type {
|
|
43
|
+
DateMaskSegment,
|
|
44
|
+
DateSegmentId,
|
|
45
|
+
EditableDateSegment,
|
|
46
|
+
LiteralDateSegment
|
|
47
|
+
} from "@ryuzaki13/react-foundation-lib/date-segments";
|
|
48
|
+
`})}),`
|
|
49
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль не зависит от React/DOM и использует локальные getters/constructor стандартного `,(0,c.jsx)(t.code,{children:`Date`}),`.`]}),`
|
|
50
|
+
`,(0,c.jsx)(t.h2,{id:`базовые-понятия`,children:`Базовые понятия`}),`
|
|
51
|
+
`,(0,c.jsx)(t.p,{children:`Маска состоит из двух видов сегментов.`}),`
|
|
52
|
+
`,(0,c.jsx)(t.p,{children:`Editable segment:`}),`
|
|
53
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`interface EditableDateSegment {
|
|
54
|
+
kind: "editable";
|
|
55
|
+
id: DateSegmentId;
|
|
56
|
+
token: string;
|
|
57
|
+
length: number;
|
|
58
|
+
min: number;
|
|
59
|
+
max: number;
|
|
60
|
+
placeholder: string;
|
|
61
|
+
ariaLabel: string;
|
|
62
|
+
}
|
|
63
|
+
`})}),`
|
|
64
|
+
`,(0,c.jsx)(t.p,{children:`Literal segment:`}),`
|
|
65
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`interface LiteralDateSegment {
|
|
66
|
+
kind: "literal";
|
|
67
|
+
text: string;
|
|
68
|
+
}
|
|
69
|
+
`})}),`
|
|
70
|
+
`,(0,c.jsx)(t.p,{children:`Литералы — точки, двоеточия, пробелы, слова и неподдерживаемые символы маски. Они показываются пользователю, но не имеют редактируемого значения.`}),`
|
|
71
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`DateMaskSegment`}),` — discriminated union. Поле `,(0,c.jsx)(t.code,{children:`kind`}),` позволяет безопасно сузить тип.`]}),`
|
|
72
|
+
`,(0,c.jsx)(t.h2,{id:`поддерживаемые-tokens`,children:`Поддерживаемые tokens`}),`
|
|
73
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Token`}),(0,c.jsx)(t.th,{children:(0,c.jsx)(t.code,{children:`id`})}),(0,c.jsx)(t.th,{style:{textAlign:`right`},children:`Длина`}),(0,c.jsx)(t.th,{children:`Диапазон`}),(0,c.jsx)(t.th,{children:`Placeholder`}),(0,c.jsx)(t.th,{children:`ARIA label`})]})}),(0,c.jsxs)(t.tbody,{children:[(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:(0,c.jsx)(t.code,{children:`year`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`4`}),(0,c.jsx)(t.td,{children:`1–9999`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`ГГГГ`})}),(0,c.jsx)(t.td,{children:`Год`})]}),(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:(0,c.jsx)(t.code,{children:`year`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`4`}),(0,c.jsx)(t.td,{children:`1–9999`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`гггг`})}),(0,c.jsx)(t.td,{children:`Год`})]}),(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:(0,c.jsx)(t.code,{children:`year`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`0–99`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`гг`})}),(0,c.jsx)(t.td,{children:`Год`})]}),(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:(0,c.jsx)(t.code,{children:`month`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`1–12`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`мм`})}),(0,c.jsx)(t.td,{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:(0,c.jsx)(t.code,{children:`day`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`1–31`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`ДД`})}),(0,c.jsx)(t.td,{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:(0,c.jsx)(t.code,{children:`day`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`1–31`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`дд`})}),(0,c.jsx)(t.td,{children:`День`})]}),(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:(0,c.jsx)(t.code,{children:`hours`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`0–23`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`чч`})}),(0,c.jsx)(t.td,{children:`Часы`})]}),(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:(0,c.jsx)(t.code,{children:`hours`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`0–23`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`чч`})}),(0,c.jsx)(t.td,{children:`Часы`})]}),(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:(0,c.jsx)(t.code,{children:`minutes`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`0–59`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`мм`})}),(0,c.jsx)(t.td,{children:`Минуты`})]}),(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:(0,c.jsx)(t.code,{children:`seconds`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`0–59`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`сс`})}),(0,c.jsx)(t.td,{children:`Секунды`})]})]})]}),`
|
|
74
|
+
`,(0,c.jsx)(t.p,{children:`Обратите внимание:`}),`
|
|
75
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
76
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`MM`}),` — месяц, `,(0,c.jsx)(t.code,{children:`mm`}),` — минуты;`]}),`
|
|
77
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`dd`}),`/`,(0,c.jsx)(t.code,{children:`DD`}),` — день;`]}),`
|
|
78
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`hh`}),` и `,(0,c.jsx)(t.code,{children:`HH`}),` оба означают 24-часовой диапазон `,(0,c.jsx)(t.code,{children:`0..23`}),`;`]}),`
|
|
79
|
+
`,(0,c.jsxs)(t.li,{children:[`одиночные `,(0,c.jsx)(t.code,{children:`d`}),`, `,(0,c.jsx)(t.code,{children:`M`}),`, `,(0,c.jsx)(t.code,{children:`H`}),`, `,(0,c.jsx)(t.code,{children:`m`}),`, `,(0,c.jsx)(t.code,{children:`s`}),` не являются tokens и станут literal text;`]}),`
|
|
80
|
+
`,(0,c.jsx)(t.li,{children:`tokens регистрозависимы.`}),`
|
|
81
|
+
`]}),`
|
|
82
|
+
`,(0,c.jsx)(t.h2,{id:`parsedatesegmentmask`,children:(0,c.jsx)(t.code,{children:`parseDateSegmentMask`})}),`
|
|
83
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const segments = parseDateSegmentMask("dd.MM.yyyy HH:mm");
|
|
84
|
+
`})}),`
|
|
85
|
+
`,(0,c.jsx)(t.p,{children:`Результат:`}),`
|
|
86
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`[
|
|
87
|
+
{ kind: "editable", id: "day", token: "dd", length: 2 /* ... */ },
|
|
88
|
+
{ kind: "literal", text: "." },
|
|
89
|
+
{ kind: "editable", id: "month", token: "MM", length: 2 /* ... */ },
|
|
90
|
+
{ kind: "literal", text: "." },
|
|
91
|
+
{ kind: "editable", id: "year", token: "yyyy", length: 4 /* ... */ },
|
|
92
|
+
{ kind: "literal", text: " " },
|
|
93
|
+
{ kind: "editable", id: "hours", token: "HH", length: 2 /* ... */ },
|
|
94
|
+
{ kind: "literal", text: ":" },
|
|
95
|
+
{ kind: "editable", id: "minutes", token: "mm", length: 2 /* ... */ }
|
|
96
|
+
];
|
|
97
|
+
`})}),`
|
|
98
|
+
`,(0,c.jsx)(t.p,{children:`Соседние literal characters объединяются в один segment:`}),`
|
|
99
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseDateSegmentMask("Дата: dd");
|
|
100
|
+
// literal "Дата: ", затем editable day.
|
|
101
|
+
`})}),`
|
|
102
|
+
`,(0,c.jsxs)(t.p,{children:[`Пустая маска возвращает пустой массив. Parser не валидирует обязательность года/месяца/дня и допускает повтор одного `,(0,c.jsx)(t.code,{children:`id`}),`; корректный набор задаёт host.`]}),`
|
|
103
|
+
`,(0,c.jsx)(t.h2,{id:`iseditabledatesegment`,children:(0,c.jsx)(t.code,{children:`isEditableDateSegment`})}),`
|
|
104
|
+
`,(0,c.jsx)(t.p,{children:`Type guard:`}),`
|
|
105
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const editable = segments.filter(isEditableDateSegment);
|
|
106
|
+
// EditableDateSegment[].
|
|
107
|
+
`})}),`
|
|
108
|
+
`,(0,c.jsxs)(t.p,{children:[`Он проверяет только `,(0,c.jsx)(t.code,{children:`segment.kind === "editable"`}),` и рассчитан на значения, полученные из parser или соответствующие публичному типу.`]}),`
|
|
109
|
+
`,(0,c.jsx)(t.h2,{id:`datetoindexedsegmentvalues`,children:(0,c.jsx)(t.code,{children:`dateToIndexedSegmentValues`})}),`
|
|
110
|
+
`,(0,c.jsxs)(t.p,{children:[`Функция создаёт `,(0,c.jsx)(t.code,{children:`Map<number, string>`}),`, где key — индекс segment в полном массиве, включая literals.`]}),`
|
|
111
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const segments = parseDateSegmentMask("dd.MM.yyyy HH:mm");
|
|
112
|
+
const values = dateToIndexedSegmentValues(new Date(2026, 2, 3, 18, 3), segments);
|
|
113
|
+
|
|
114
|
+
console.log([...values.entries()]);
|
|
115
|
+
// [[0,"03"], [2,"03"], [4,"2026"], [6,"18"], [8,"03"]]
|
|
116
|
+
`})}),`
|
|
117
|
+
`,(0,c.jsxs)(t.p,{children:[`Индексы `,(0,c.jsx)(t.code,{children:`1`}),`, `,(0,c.jsx)(t.code,{children:`3`}),`, `,(0,c.jsx)(t.code,{children:`5`}),`, `,(0,c.jsx)(t.code,{children:`7`}),` отсутствуют, потому что это literals.`]}),`
|
|
118
|
+
`,(0,c.jsxs)(t.p,{children:[`Для `,(0,c.jsx)(t.code,{children:`null`}),`, `,(0,c.jsx)(t.code,{children:`undefined`}),` или invalid `,(0,c.jsx)(t.code,{children:`Date`}),` каждая editable позиция получает `,(0,c.jsx)(t.code,{children:`""`}),`:`]}),`
|
|
119
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`dateToIndexedSegmentValues(null, segments);
|
|
120
|
+
dateToIndexedSegmentValues(new Date("bad"), segments);
|
|
121
|
+
`})}),`
|
|
122
|
+
`,(0,c.jsx)(t.p,{children:`Двухзначный year берёт последние две цифры полного года. Значения дополняются нулями слева до длины segment.`}),`
|
|
123
|
+
`,(0,c.jsx)(t.h2,{id:`arealldatesegmentsempty`,children:(0,c.jsx)(t.code,{children:`areAllDateSegmentsEmpty`})}),`
|
|
124
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const empty = areAllDateSegmentsEmpty(segments, values);
|
|
125
|
+
`})}),`
|
|
126
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает `,(0,c.jsx)(t.code,{children:`true`}),`, если у каждого editable segment значение отсутствует или является пустой строкой.`]}),`
|
|
127
|
+
`,(0,c.jsx)(t.p,{children:`Literal segments игнорируются. Строка из пробелов truthy и считается заполненной. Функция не проверяет длину/числовой формат.`}),`
|
|
128
|
+
`,(0,c.jsx)(t.h2,{id:`indexedsegmentstodate`,children:(0,c.jsx)(t.code,{children:`indexedSegmentsToDate`})}),`
|
|
129
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const date = indexedSegmentsToDate(segments, values);
|
|
130
|
+
`})}),`
|
|
131
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает строгий valid `,(0,c.jsx)(t.code,{children:`Date`}),` или `,(0,c.jsx)(t.code,{children:`null`}),`.`]}),`
|
|
132
|
+
`,(0,c.jsx)(t.h3,{id:`полный-ввод`,children:`Полный ввод`}),`
|
|
133
|
+
`,(0,c.jsxs)(t.p,{children:[`Каждый editable segment должен иметь строку длиной не меньше `,(0,c.jsx)(t.code,{children:`segment.length`}),`:`]}),`
|
|
134
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`values.set(dayIndex, "3"); // Для token dd длины недостаточно.
|
|
135
|
+
indexedSegmentsToDate(segments, values); // null.
|
|
136
|
+
`})}),`
|
|
137
|
+
`,(0,c.jsxs)(t.p,{children:[`Проверка длины не гарантирует numeric input. `,(0,c.jsx)(t.code,{children:`"ab"`}),` пройдёт length-check, но `,(0,c.jsx)(t.code,{children:`parseInt`}),` не даст valid component и итог будет `,(0,c.jsx)(t.code,{children:`null`}),`.`]}),`
|
|
138
|
+
`,(0,c.jsx)(t.h3,{id:`календарная-строгость`,children:`Календарная строгость`}),`
|
|
139
|
+
`,(0,c.jsxs)(t.p,{children:[`После сборки компоненты сверяются с полученным `,(0,c.jsx)(t.code,{children:`Date`}),`:`]}),`
|
|
140
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// 31 февраля не превращается автоматически в март.
|
|
141
|
+
indexedSegmentsToDate(segments, february31Values); // null.
|
|
142
|
+
|
|
143
|
+
// 24:00 не принимается.
|
|
144
|
+
indexedSegmentsToDate(segments, hour24Values); // null.
|
|
145
|
+
`})}),`
|
|
146
|
+
`,(0,c.jsxs)(t.p,{children:[`Проверяются month `,(0,c.jsx)(t.code,{children:`1..12`}),`, day `,(0,c.jsx)(t.code,{children:`1..31`}),`, hours `,(0,c.jsx)(t.code,{children:`0..23`}),`, minutes/seconds `,(0,c.jsx)(t.code,{children:`0..59`}),`, а затем реальная календарная дата.`]}),`
|
|
147
|
+
`,(0,c.jsxs)(t.h3,{id:`отсутствующие-части-и-defaultdate`,children:[`Отсутствующие части и `,(0,c.jsx)(t.code,{children:`defaultDate`})]}),`
|
|
148
|
+
`,(0,c.jsxs)(t.p,{children:[`Если маска не содержит некоторый тип segment, компонент берётся из `,(0,c.jsx)(t.code,{children:`defaultDate`}),`:`]}),`
|
|
149
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const timeSegments = parseDateSegmentMask("HH:mm");
|
|
150
|
+
const values = new Map([
|
|
151
|
+
[0, "09"],
|
|
152
|
+
[2, "15"]
|
|
153
|
+
]);
|
|
154
|
+
|
|
155
|
+
const result = indexedSegmentsToDate(timeSegments, values, {
|
|
156
|
+
defaultDate: new Date(2026, 2, 3, 18, 3)
|
|
157
|
+
});
|
|
158
|
+
// 3 марта 2026, 09:15 local time.
|
|
159
|
+
`})}),`
|
|
160
|
+
`,(0,c.jsxs)(t.p,{children:[`Default fallback без options — `,(0,c.jsx)(t.code,{children:`new Date(1970, 0, 1, 0, 0, 0, 0)`}),` в local timezone.`]}),`
|
|
161
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`defaultDate`}),` не валидируется отдельно. Invalid fallback обычно приведёт к `,(0,c.jsx)(t.code,{children:`null`}),` после итоговой проверки.`]}),`
|
|
162
|
+
`,(0,c.jsx)(t.h3,{id:`двухзначный-год`,children:`Двухзначный год`}),`
|
|
163
|
+
`,(0,c.jsxs)(t.p,{children:[`Для token `,(0,c.jsx)(t.code,{children:`yy`}),`:`]}),`
|
|
164
|
+
`,(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,{style:{textAlign:`right`},children:`Полный год`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`00`}),`–`,(0,c.jsx)(t.code,{children:`69`})]}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2000–2069`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`70`}),`–`,(0,c.jsx)(t.code,{children:`99`})]}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`1970–1999`})]})]})]}),`
|
|
165
|
+
`,(0,c.jsx)(t.p,{children:`Порог фиксирован и не зависит от текущего года.`}),`
|
|
166
|
+
`,(0,c.jsx)(t.h2,{id:`полный-input-pipeline`,children:`Полный input pipeline`}),`
|
|
167
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-tsx`,children:`const segments = parseDateSegmentMask("dd.MM.yyyy");
|
|
168
|
+
const [values, setValues] = useState(() => dateToIndexedSegmentValues(initialDate, segments));
|
|
169
|
+
|
|
170
|
+
function updateSegment(index: number, value: string) {
|
|
171
|
+
setValues((current) => {
|
|
172
|
+
const next = new Map(current);
|
|
173
|
+
next.set(index, value);
|
|
174
|
+
return next;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function commit() {
|
|
179
|
+
if (areAllDateSegmentsEmpty(segments, values)) {
|
|
180
|
+
onChange(null);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const nextDate = indexedSegmentsToDate(segments, values);
|
|
185
|
+
if (nextDate === null) {
|
|
186
|
+
showValidationError("Введите корректную дату");
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
onChange(nextDate);
|
|
191
|
+
}
|
|
192
|
+
`})}),`
|
|
193
|
+
`,(0,c.jsxs)(t.p,{children:[`UI самостоятельно отвечает за digits-only input, `,(0,c.jsx)(t.code,{children:`aria-label`}),`, focus movement, paste, validation message и controlled state.`]}),`
|
|
194
|
+
`,(0,c.jsx)(t.h2,{id:`local-time-и-календарная-семантика`,children:`Local time и календарная семантика`}),`
|
|
195
|
+
`,(0,c.jsxs)(t.p,{children:[`Функции используют `,(0,c.jsx)(t.code,{children:`getFullYear`}),`, `,(0,c.jsx)(t.code,{children:`getMonth`}),`, `,(0,c.jsx)(t.code,{children:`getDate`}),`, `,(0,c.jsx)(t.code,{children:`getHours`}),` и `,(0,c.jsx)(t.code,{children:`new Date(year, ...)`}),`. Это local calendar/time, а не UTC.`]}),`
|
|
196
|
+
`,(0,c.jsx)(t.p,{children:`Не смешивайте segment input с автоматическим timezone conversion. Перед отправкой в OData/backend примените formatter, соответствующий контракту API.`}),`
|
|
197
|
+
`,(0,c.jsx)(t.h2,{id:`api-и-ошибки`,children:`API и ошибки`}),`
|
|
198
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Export`}),(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:`parseDateSegmentMask`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`DateMaskSegment[]`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`isEditableDateSegment`})}),(0,c.jsx)(t.td,{children:`Type guard`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`dateToIndexedSegmentValues`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`Map<number, string>`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`areAllDateSegmentsEmpty`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`boolean`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`indexedSegmentsToDate`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`Date | null`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`DateSegmentId`})}),(0,c.jsx)(t.td,{children:`year/month/day/hours/minutes/seconds`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`EditableDateSegment`})}),(0,c.jsx)(t.td,{children:`Metadata редактируемого segment`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`LiteralDateSegment`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`{ kind: "literal"; text: string }`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`DateMaskSegment`})}),(0,c.jsx)(t.td,{children:`Union editable/literal`})]})]})]}),`
|
|
199
|
+
`,(0,c.jsx)(t.p,{children:`Типичные ошибки:`}),`
|
|
200
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
201
|
+
`,(0,c.jsxs)(t.li,{children:[`Перепутать `,(0,c.jsx)(t.code,{children:`MM`}),` и `,(0,c.jsx)(t.code,{children:`mm`}),`.`]}),`
|
|
202
|
+
`,(0,c.jsx)(t.li,{children:`Хранить values по порядковому номеру editable fields вместо полного segment index.`}),`
|
|
203
|
+
`,(0,c.jsxs)(t.li,{children:[`Передать однозначную строку `,(0,c.jsx)(t.code,{children:`"3"`}),` для token длины `,(0,c.jsx)(t.code,{children:`2`}),` и ожидать автодополнение при сборке.`]}),`
|
|
204
|
+
`,(0,c.jsx)(t.li,{children:`Ожидать UTC.`}),`
|
|
205
|
+
`,(0,c.jsxs)(t.li,{children:[`Считать `,(0,c.jsx)(t.code,{children:`min/max`}),` metadata заменой UI input validation.`]}),`
|
|
206
|
+
`,(0,c.jsx)(t.li,{children:`Использовать произвольную маску с повторяющимися year/month segments.`}),`
|
|
207
|
+
`,(0,c.jsx)(t.li,{children:`Нормализовать пользовательский partial draft до команды commit.`}),`
|
|
208
|
+
`]})]})}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};
|