@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,338 @@
|
|
|
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`,ol:`ol`,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/Number`}),`
|
|
2
|
+
`,(0,c.jsx)(t.h1,{id:`числовые-форматтеры`,children:`Числовые форматтеры`}),`
|
|
3
|
+
`,(0,c.jsx)(t.p,{children:`Модуль форматирует числа для интерфейса, читает распространённые SAP-подобные числовые строки и управляет реестром именованных presets.`}),`
|
|
4
|
+
`,(0,c.jsx)(t.p,{children:`Все API доступны через один публичный entrypoint:`}),`
|
|
5
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
6
|
+
formatNumber,
|
|
7
|
+
formatNumberAsDecimal2,
|
|
8
|
+
formatNumberAsInteger,
|
|
9
|
+
isZeroValue,
|
|
10
|
+
parseNumber,
|
|
11
|
+
toFiniteNumber
|
|
12
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
13
|
+
`})}),`
|
|
14
|
+
`,(0,c.jsxs)(t.p,{children:[`Импорта `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters/number`}),` нет.`]}),`
|
|
15
|
+
`,(0,c.jsx)(t.h2,{id:`быстрый-старт`,children:`Быстрый старт`}),`
|
|
16
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
17
|
+
formatNumberAsDecimal2,
|
|
18
|
+
formatNumberAsInteger,
|
|
19
|
+
formatNumberAsPercent,
|
|
20
|
+
toFiniteNumber
|
|
21
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
22
|
+
|
|
23
|
+
formatNumberAsInteger(1234.6); // "1\xA0235"
|
|
24
|
+
formatNumberAsDecimal2(1234.5); // "1\xA0234,50"
|
|
25
|
+
formatNumberAsPercent(12.345); // "12,35"
|
|
26
|
+
|
|
27
|
+
toFiniteNumber("1 234,50"); // 1234.5
|
|
28
|
+
`})}),`
|
|
29
|
+
`,(0,c.jsxs)(t.p,{children:[`Пробел между группами в результате обычно неразрывный (`,(0,c.jsx)(t.code,{children:`U+00A0`}),` или `,(0,c.jsx)(t.code,{children:`U+202F`}),` в зависимости от JavaScript-среды). Внешне он выглядит как обычный пробел.`]}),`
|
|
30
|
+
`,(0,c.jsx)(t.h2,{id:`два-разных-пути-обработки`,children:`Два разных пути обработки`}),`
|
|
31
|
+
`,(0,c.jsx)(t.p,{children:`В модуле есть важное разделение:`}),`
|
|
32
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`внешняя строка SAP/UI ──→ toFiniteNumber / parseNumber ──→ number
|
|
33
|
+
готовое JS-значение ────→ formatNumber ──────────────────→ string для UI
|
|
34
|
+
`})}),`
|
|
35
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatNumber`}),` не вызывает SAP-like parser. Она использует обычный `,(0,c.jsx)(t.code,{children:`Number(value)`}),`. Поэтому:`]}),`
|
|
36
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber("1234.5", "decimal-2"); // "1\xA0234,50"
|
|
37
|
+
formatNumber("1 234,5", "decimal-2"); // "0"
|
|
38
|
+
`})}),`
|
|
39
|
+
`,(0,c.jsx)(t.p,{children:`Если строка пришла от пользователя или SAP и содержит разделители, сначала парсите её:`}),`
|
|
40
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const value = toFiniteNumber("1 234,5");
|
|
41
|
+
const text = value === undefined ? "Некорректно" : formatNumber(value, "decimal-2");
|
|
42
|
+
`})}),`
|
|
43
|
+
`,(0,c.jsx)(t.h2,{id:`встроенные-presets`,children:`Встроенные presets`}),`
|
|
44
|
+
`,(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.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:`integer`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`}),(0,c.jsx)(t.td,{children:`Целое число`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`1`}),(0,c.jsx)(t.td,{children:`Обычное дробное число`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal-2`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsx)(t.td,{children:`Два знака после запятой`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal-3`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`3`}),(0,c.jsx)(t.td,{children:`Три знака после запятой`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`currency`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`}),(0,c.jsx)(t.td,{children:`Денежное число без символа валюты`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`price`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`}),(0,c.jsx)(t.td,{children:`Цена без символа валюты`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`percent`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`2`}),(0,c.jsxs)(t.td,{children:[`Процентное число без автоматического умножения и знака `,(0,c.jsx)(t.code,{children:`%`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`tonnage`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`1`}),(0,c.jsx)(t.td,{children:`Тоннаж`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-currency`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`}),(0,c.jsx)(t.td,{children:`Компактное число, усечение`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-currency-round`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`0`}),(0,c.jsx)(t.td,{children:`Компактное число, округление`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-percent`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`до 2`}),(0,c.jsx)(t.td,{children:`Компактный процент, усечение`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-percent-round`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`до 2`}),(0,c.jsx)(t.td,{children:`Компактный процент, округление`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-tonnage`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`до 1`}),(0,c.jsx)(t.td,{children:`Компактный тоннаж, усечение`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`compact-tonnage-round`})}),(0,c.jsx)(t.td,{style:{textAlign:`right`},children:`до 1`}),(0,c.jsx)(t.td,{children:`Компактный тоннаж, округление`})]})]})]}),`
|
|
45
|
+
`,(0,c.jsx)(t.p,{children:`Имена регистрозависимы и записываются в нижнем регистре:`}),`
|
|
46
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(10, "integer"); // корректно
|
|
47
|
+
// formatNumber(10, "Integer"); // Error: preset не найден
|
|
48
|
+
`})}),`
|
|
49
|
+
`,(0,c.jsxs)(t.p,{children:[`Константа `,(0,c.jsx)(t.code,{children:`DEFAULT_NUMBER_PRESET_NAMES`}),` позволяет не дублировать строки:`]}),`
|
|
50
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { DEFAULT_NUMBER_PRESET_NAMES, formatNumber } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
51
|
+
|
|
52
|
+
formatNumber(1234.5, DEFAULT_NUMBER_PRESET_NAMES.decimal2);
|
|
53
|
+
`})}),`
|
|
54
|
+
`,(0,c.jsx)(t.h2,{id:`formatnumbervalue-presetorname`,children:(0,c.jsx)(t.code,{children:`formatNumber(value, presetOrName)`})}),`
|
|
55
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function formatNumber(value: unknown, presetOrName: string | NumberFormatPreset): string;
|
|
56
|
+
`})}),`
|
|
57
|
+
`,(0,c.jsx)(t.p,{children:`Функция:`}),`
|
|
58
|
+
`,(0,c.jsxs)(t.ol,{children:[`
|
|
59
|
+
`,(0,c.jsxs)(t.li,{children:[`отдельно превращает пустую/пробельную строку в `,(0,c.jsx)(t.code,{children:`"0"`}),`;`]}),`
|
|
60
|
+
`,(0,c.jsxs)(t.li,{children:[`вызывает `,(0,c.jsx)(t.code,{children:`Number(value)`}),`;`]}),`
|
|
61
|
+
`,(0,c.jsxs)(t.li,{children:[`для `,(0,c.jsx)(t.code,{children:`NaN`}),` и бесконечности возвращает `,(0,c.jsx)(t.code,{children:`"0"`}),`;`]}),`
|
|
62
|
+
`,(0,c.jsx)(t.li,{children:`находит preset по имени или использует переданный объект;`}),`
|
|
63
|
+
`,(0,c.jsx)(t.li,{children:`округляет и форматирует число;`}),`
|
|
64
|
+
`,(0,c.jsx)(t.li,{children:`применяет compact-семантику, если она задана.`}),`
|
|
65
|
+
`]}),`
|
|
66
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(1234.56, "decimal-2"); // "1\xA0234,56"
|
|
67
|
+
formatNumber(1234.56, "integer"); // "1\xA0235"
|
|
68
|
+
formatNumber("", "decimal"); // "0"
|
|
69
|
+
formatNumber("abc", "decimal"); // "0"
|
|
70
|
+
`})}),`
|
|
71
|
+
`,(0,c.jsxs)(t.h3,{id:`неожиданная-javascript-семантика-number`,children:[`Неожиданная JavaScript-семантика `,(0,c.jsx)(t.code,{children:`Number`})]}),`
|
|
72
|
+
`,(0,c.jsxs)(t.p,{children:[`Поскольку вход имеет тип `,(0,c.jsx)(t.code,{children:`unknown`}),`, обычное преобразование JavaScript допускает случаи:`]}),`
|
|
73
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(null, "integer"); // "0"
|
|
74
|
+
formatNumber(false, "integer"); // "0"
|
|
75
|
+
formatNumber(true, "integer"); // "1"
|
|
76
|
+
formatNumber([], "integer"); // "0"
|
|
77
|
+
`})}),`
|
|
78
|
+
`,(0,c.jsx)(t.p,{children:`Не используйте эти преобразования как бизнес-валидацию. Проверяйте внешние данные до форматирования.`}),`
|
|
79
|
+
`,(0,c.jsxs)(t.p,{children:[`Если значение не преобразовалось в конечное число, функция возвращает `,(0,c.jsx)(t.code,{children:`"0"`}),` ещё до поиска preset. Поэтому неизвестный preset для невалидного значения может не выбросить ошибку:`]}),`
|
|
80
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber("abc", "unknown"); // "0"
|
|
81
|
+
formatNumber(10, "unknown"); // Error
|
|
82
|
+
`})}),`
|
|
83
|
+
`,(0,c.jsx)(t.h3,{id:`округление`,children:`Округление`}),`
|
|
84
|
+
`,(0,c.jsxs)(t.p,{children:[`Обычные presets используют `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat`}),`, то есть округляют до заданного количества знаков:`]}),`
|
|
85
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(1.26, "decimal"); // "1,3"
|
|
86
|
+
`})}),`
|
|
87
|
+
`,(0,c.jsx)(t.p,{children:`Старое предположение об усечении для обычных presets неверно. Усечение используется по умолчанию только внутри compact-настроек.`}),`
|
|
88
|
+
`,(0,c.jsx)(t.h2,{id:`готовые-wrappers`,children:`Готовые wrappers`}),`
|
|
89
|
+
`,(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:`Preset`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsInteger`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`integer`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsCurrency`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`currency`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsDecimal`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsDecimal2`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal-2`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsDecimal3`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`decimal-3`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsPercent`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`percent`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsPrice`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`price`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumberAsTonnage`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`tonnage`})})]})]})]}),`
|
|
90
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumberAsDecimal(12); // "12,0"
|
|
91
|
+
formatNumberAsDecimal2(12); // "12,00"
|
|
92
|
+
formatNumberAsDecimal3(12); // "12,000"
|
|
93
|
+
`})}),`
|
|
94
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`currency`}),`, `,(0,c.jsx)(t.code,{children:`price`}),` и `,(0,c.jsx)(t.code,{children:`percent`}),` не добавляют обозначение единицы. Они задают только числовой вид:`]}),`
|
|
95
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumberAsCurrency(1250); // "1\xA0250", без ₽
|
|
96
|
+
formatNumberAsPercent(12.5); // "12,50", без %
|
|
97
|
+
`})}),`
|
|
98
|
+
`,(0,c.jsx)(t.p,{children:`Если нужен суффикс, добавляйте его на UI-уровне или используйте специализированный модуль единиц измерения.`}),`
|
|
99
|
+
`,(0,c.jsxs)(t.h2,{id:`wrappers-orempty`,children:[`Wrappers `,(0,c.jsx)(t.code,{children:`OrEmpty`})]}),`
|
|
100
|
+
`,(0,c.jsx)(t.p,{children:`Для каждого wrapper существует вариант, который скрывает семантический ноль:`}),`
|
|
101
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
102
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsIntegerOrEmpty`}),`;`]}),`
|
|
103
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsCurrencyOrEmpty`}),`;`]}),`
|
|
104
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsDecimalOrEmpty`}),`;`]}),`
|
|
105
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsDecimal2OrEmpty`}),`;`]}),`
|
|
106
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsDecimal3OrEmpty`}),`;`]}),`
|
|
107
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsPercentOrEmpty`}),`;`]}),`
|
|
108
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsPriceOrEmpty`}),`;`]}),`
|
|
109
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsTonnageOrEmpty`}),`.`]}),`
|
|
110
|
+
`]}),`
|
|
111
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumberAsDecimalOrEmpty(0); // ""
|
|
112
|
+
formatNumberAsDecimalOrEmpty("0,00"); // ""
|
|
113
|
+
formatNumberAsDecimalOrEmpty(" "); // "0"
|
|
114
|
+
formatNumberAsDecimalOrEmpty("abc"); // "0"
|
|
115
|
+
`})}),`
|
|
116
|
+
`,(0,c.jsxs)(t.p,{children:[`Последние два результата объясняются тем, что `,(0,c.jsx)(t.code,{children:`isZeroValue`}),` не считает пустой или невалидный ввод числовым нулём, после чего обычный formatter даёт свой fallback `,(0,c.jsx)(t.code,{children:`"0"`}),`.`]}),`
|
|
117
|
+
`,(0,c.jsx)(t.h2,{id:`compact-форматирование`,children:`Compact-форматирование`}),`
|
|
118
|
+
`,(0,c.jsx)(t.p,{children:`Compact presets сокращают большие значения:`}),`
|
|
119
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
120
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`тыс`}),` — тысячи;`]}),`
|
|
121
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`млн`}),` — миллионы;`]}),`
|
|
122
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`млрд`}),` — миллиарды;`]}),`
|
|
123
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`трлн`}),` — триллионы.`]}),`
|
|
124
|
+
`]}),`
|
|
125
|
+
`,(0,c.jsxs)(t.p,{children:[`По умолчанию compact включается при абсолютном значении от `,(0,c.jsx)(t.code,{children:`1000`}),`. Знак отрицательного числа сохраняется.`]}),`
|
|
126
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(1_500, "compact-tonnage"); // компактное представление с "тыс"
|
|
127
|
+
formatNumber(2_000_000, "compact-currency"); // представление с "млн"
|
|
128
|
+
`})}),`
|
|
129
|
+
`,(0,c.jsxs)(t.p,{children:[`Если `,(0,c.jsx)(t.code,{children:`maxDecimals`}),` не задан, нормализованные значения меньше `,(0,c.jsx)(t.code,{children:`10`}),` получают до одного дробного знака, а значения от `,(0,c.jsx)(t.code,{children:`10`}),` — целое представление.`]}),`
|
|
130
|
+
`,(0,c.jsx)(t.h3,{id:`усечение-и-округление`,children:`Усечение и округление`}),`
|
|
131
|
+
`,(0,c.jsxs)(t.p,{children:[`Presets без `,(0,c.jsx)(t.code,{children:`-round`}),` используют `,(0,c.jsx)(t.code,{children:`roundingMode: "trunc"`}),`. Парные presets с `,(0,c.jsx)(t.code,{children:`-round`}),` используют математическое `,(0,c.jsx)(t.code,{children:`round`}),`.`]}),`
|
|
132
|
+
`,(0,c.jsxs)(t.p,{children:[`Для положительного числа усечение просто отбрасывает остаток; для отрицательного оно движется к нулю. Это отличается от `,(0,c.jsx)(t.code,{children:`floor`}),`, который движется к минус бесконечности.`]}),`
|
|
133
|
+
`,(0,c.jsx)(t.h3,{id:`собственные-compact-units`,children:`Собственные compact units`}),`
|
|
134
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import type { NumberFormatPreset } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
135
|
+
|
|
136
|
+
const preset: NumberFormatPreset = {
|
|
137
|
+
name: "custom-compact",
|
|
138
|
+
decimals: 1,
|
|
139
|
+
decimalSeparator: ",",
|
|
140
|
+
grouping: true,
|
|
141
|
+
groupingSeparator: " ",
|
|
142
|
+
groupingSize: 3,
|
|
143
|
+
compact: {
|
|
144
|
+
minCompactValue: 10_000,
|
|
145
|
+
maxDecimals: 1,
|
|
146
|
+
roundingMode: "round",
|
|
147
|
+
suffixSeparator: " ",
|
|
148
|
+
units: [
|
|
149
|
+
{ value: 1_000_000, suffix: "M" },
|
|
150
|
+
{ value: 1_000, suffix: "K" }
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
formatNumber(1_250_000, preset); // "1,3 M"
|
|
156
|
+
`})}),`
|
|
157
|
+
`,(0,c.jsxs)(t.p,{children:[`Располагайте units от большей к меньшей: выбирается первая единица, чей `,(0,c.jsx)(t.code,{children:`value`}),` не превышает абсолютное число.`]}),`
|
|
158
|
+
`,(0,c.jsx)(t.h2,{id:`чтение-числовых-строк`,children:`Чтение числовых строк`}),`
|
|
159
|
+
`,(0,c.jsx)(t.h3,{id:`tofinitenumbervalue`,children:(0,c.jsx)(t.code,{children:`toFiniteNumber(value)`})}),`
|
|
160
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function toFiniteNumber(value: unknown): number | undefined;
|
|
161
|
+
`})}),`
|
|
162
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает только конечное число или `,(0,c.jsx)(t.code,{children:`undefined`}),`.`]}),`
|
|
163
|
+
`,(0,c.jsx)(t.p,{children:`Поддерживаются:`}),`
|
|
164
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
165
|
+
`,(0,c.jsxs)(t.li,{children:[`готовый `,(0,c.jsx)(t.code,{children:`number`}),`;`]}),`
|
|
166
|
+
`,(0,c.jsx)(t.li,{children:`стандартная числовая строка JavaScript;`}),`
|
|
167
|
+
`,(0,c.jsx)(t.li,{children:`пробел, NBSP, narrow NBSP и апостроф как разделители групп;`}),`
|
|
168
|
+
`,(0,c.jsx)(t.li,{children:`запятая как десятичный разделитель, если в строке нет точки;`}),`
|
|
169
|
+
`,(0,c.jsxs)(t.li,{children:[`формат `,(0,c.jsx)(t.code,{children:`1,234.56`}),`, где запятые считаются группировкой.`]}),`
|
|
170
|
+
`]}),`
|
|
171
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`toFiniteNumber(12.5); // 12.5
|
|
172
|
+
toFiniteNumber(" 12.5 "); // 12.5
|
|
173
|
+
toFiniteNumber("1 234,56"); // 1234.56
|
|
174
|
+
toFiniteNumber("1\\u00a0234,56"); // 1234.56
|
|
175
|
+
toFiniteNumber("1'234,56"); // 1234.56
|
|
176
|
+
toFiniteNumber("1,234.56"); // 1234.56
|
|
177
|
+
toFiniteNumber(""); // undefined
|
|
178
|
+
toFiniteNumber("abc"); // undefined
|
|
179
|
+
toFiniteNumber(Infinity); // undefined
|
|
180
|
+
toFiniteNumber(null); // undefined
|
|
181
|
+
`})}),`
|
|
182
|
+
`,(0,c.jsxs)(t.p,{children:[`Стандартный `,(0,c.jsx)(t.code,{children:`Number(trimmed)`}),` выполняется первым, поэтому поддерживаются и его синтаксисы, включая exponent и шестнадцатеричную строку:`]}),`
|
|
183
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`toFiniteNumber("1e3"); // 1000
|
|
184
|
+
toFiniteNumber("0x10"); // 16
|
|
185
|
+
`})}),`
|
|
186
|
+
`,(0,c.jsx)(t.h3,{id:`важное-ограничение-двух-разделителей`,children:`Важное ограничение двух разделителей`}),`
|
|
187
|
+
`,(0,c.jsx)(t.p,{children:`Если присутствуют и запятая, и точка, все запятые считаются группировкой:`}),`
|
|
188
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`toFiniteNumber("1,234.56"); // 1234.56
|
|
189
|
+
toFiniteNumber("1.234,56"); // 1.23456, не 1234.56
|
|
190
|
+
`})}),`
|
|
191
|
+
`,(0,c.jsx)(t.p,{children:`То есть европейская запись с точкой-группировкой и запятой-дробью не поддерживается. Нормализуйте такой источник по его явной locale-схеме до вызова.`}),`
|
|
192
|
+
`,(0,c.jsx)(t.h3,{id:`parsenumbervalue`,children:(0,c.jsx)(t.code,{children:`parseNumber(value)`})}),`
|
|
193
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function parseNumber(value: unknown): number;
|
|
194
|
+
`})}),`
|
|
195
|
+
`,(0,c.jsxs)(t.p,{children:[`Это `,(0,c.jsx)(t.code,{children:`toFiniteNumber(value) ?? 0`}),`:`]}),`
|
|
196
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`parseNumber("1 234,5"); // 1234.5
|
|
197
|
+
parseNumber("abc"); // 0
|
|
198
|
+
parseNumber(undefined); // 0
|
|
199
|
+
`})}),`
|
|
200
|
+
`,(0,c.jsxs)(t.p,{children:[`Используйте её для арифметики, где невалидный вход действительно должен считаться нулём. Если отсутствие данных важно отличать от нуля, используйте `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),`.`]}),`
|
|
201
|
+
`,(0,c.jsx)(t.h3,{id:`ispositivevaluevalue`,children:(0,c.jsx)(t.code,{children:`isPositiveValue(value)`})}),`
|
|
202
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает `,(0,c.jsx)(t.code,{children:`true`}),`, только если значение успешно разобрано и строго больше нуля:`]}),`
|
|
203
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`isPositiveValue("0,1"); // true
|
|
204
|
+
isPositiveValue(0); // false
|
|
205
|
+
isPositiveValue(-1); // false
|
|
206
|
+
isPositiveValue("abc"); // false
|
|
207
|
+
`})}),`
|
|
208
|
+
`,(0,c.jsx)(t.h3,{id:`topositiveintegervalue`,children:(0,c.jsx)(t.code,{children:`toPositiveInteger(value)`})}),`
|
|
209
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает положительное целое число либо `,(0,c.jsx)(t.code,{children:`undefined`}),`:`]}),`
|
|
210
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`toPositiveInteger("12"); // 12
|
|
211
|
+
toPositiveInteger("12,5"); // undefined
|
|
212
|
+
toPositiveInteger(0); // undefined
|
|
213
|
+
toPositiveInteger(-2); // undefined
|
|
214
|
+
`})}),`
|
|
215
|
+
`,(0,c.jsx)(t.h3,{id:`iszerovaluevalue`,children:(0,c.jsx)(t.code,{children:`isZeroValue(value)`})}),`
|
|
216
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает `,(0,c.jsx)(t.code,{children:`true`}),`, если `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),` успешно получил ровно `,(0,c.jsx)(t.code,{children:`0`}),`:`]}),`
|
|
217
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`isZeroValue(0); // true
|
|
218
|
+
isZeroValue(-0); // true
|
|
219
|
+
isZeroValue("0,00"); // true
|
|
220
|
+
isZeroValue(" 0 "); // true
|
|
221
|
+
isZeroValue(""); // false
|
|
222
|
+
isZeroValue(null); // false
|
|
223
|
+
isZeroValue("abc"); // false
|
|
224
|
+
`})}),`
|
|
225
|
+
`,(0,c.jsxs)(t.p,{children:[`BigInt фактически не проходит через `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),`, поэтому `,(0,c.jsx)(t.code,{children:`0n`}),` также возвращает `,(0,c.jsx)(t.code,{children:`false`}),` в текущем публичном поведении.`]}),`
|
|
226
|
+
`,(0,c.jsx)(t.h2,{id:`реестр-presets`,children:`Реестр presets`}),`
|
|
227
|
+
`,(0,c.jsx)(t.h3,{id:`getnumberpresetname`,children:(0,c.jsx)(t.code,{children:`getNumberPreset(name)`})}),`
|
|
228
|
+
`,(0,c.jsxs)(t.p,{children:[`Возвращает preset или `,(0,c.jsx)(t.code,{children:`undefined`}),`:`]}),`
|
|
229
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const preset = getNumberPreset("decimal-2");
|
|
230
|
+
`})}),`
|
|
231
|
+
`,(0,c.jsx)(t.p,{children:`Возвращается сам объект из глобального реестра, а не clone. Не мутируйте его.`}),`
|
|
232
|
+
`,(0,c.jsx)(t.h3,{id:`getnumberpresetnames`,children:(0,c.jsx)(t.code,{children:`getNumberPresetNames()`})}),`
|
|
233
|
+
`,(0,c.jsx)(t.p,{children:`Возвращает новый массив имён в порядке регистрации. Подходит для UI выбора preset.`}),`
|
|
234
|
+
`,(0,c.jsx)(t.h3,{id:`registernumberpresetconfig`,children:(0,c.jsx)(t.code,{children:`registerNumberPreset(config)`})}),`
|
|
235
|
+
`,(0,c.jsxs)(t.p,{children:[`Регистрирует или перезаписывает preset. Все отсутствующие поля поверхностно берутся из `,(0,c.jsx)(t.code,{children:`NUMBER_FORMAT_DEFAULTS`}),`:`]}),`
|
|
236
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`registerNumberPreset({
|
|
237
|
+
name: "accounting-2",
|
|
238
|
+
decimals: 2,
|
|
239
|
+
groupingSeparator: " ",
|
|
240
|
+
decimalSeparator: ","
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
formatNumber(1234.5, "accounting-2"); // "1 234,50"
|
|
244
|
+
`})}),`
|
|
245
|
+
`,(0,c.jsx)(t.p,{children:`Регистрация глобальна для текущего экземпляра модуля. Выполняйте её один раз при старте приложения до компиляции formatter pipeline.`}),`
|
|
246
|
+
`,(0,c.jsx)(t.p,{children:`Имя не trim-ится и поля не валидируются. Передавайте непустое устойчивое имя, не меняйте встроенные presets без явной необходимости и проверяйте числовые параметры.`}),`
|
|
247
|
+
`,(0,c.jsx)(t.h3,{id:`resetnumberpresets`,children:(0,c.jsx)(t.code,{children:`resetNumberPresets()`})}),`
|
|
248
|
+
`,(0,c.jsx)(t.p,{children:`Очищает реестр и восстанавливает только встроенные presets. Основной сценарий — изоляция тестов. Пользовательские presets после сброса исчезают.`}),`
|
|
249
|
+
`,(0,c.jsx)(t.h3,{id:`number_format_defaults`,children:(0,c.jsx)(t.code,{children:`NUMBER_FORMAT_DEFAULTS`})}),`
|
|
250
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`{
|
|
251
|
+
decimals: 1,
|
|
252
|
+
decimalSeparator: ",",
|
|
253
|
+
grouping: true,
|
|
254
|
+
groupingSeparator: /* ru-RU group char */,
|
|
255
|
+
groupingSize: 3
|
|
256
|
+
}
|
|
257
|
+
`})}),`
|
|
258
|
+
`,(0,c.jsx)(t.p,{children:`Объект экспортируется, но не заморожен. Относитесь к нему как к read-only константе: мутация изменит будущие регистрации и сделает поведение глобально непредсказуемым.`}),`
|
|
259
|
+
`,(0,c.jsx)(t.h2,{id:`объектный-preset-без-регистрации`,children:`Объектный preset без регистрации`}),`
|
|
260
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatNumber`}),` принимает готовый `,(0,c.jsx)(t.code,{children:`NumberFormatPreset`}),`:`]}),`
|
|
261
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(1234567.89, {
|
|
262
|
+
name: "inline",
|
|
263
|
+
decimals: 2,
|
|
264
|
+
decimalSeparator: ".",
|
|
265
|
+
grouping: true,
|
|
266
|
+
groupingSeparator: "_",
|
|
267
|
+
groupingSize: 3
|
|
268
|
+
});
|
|
269
|
+
// "1_234_567.89"
|
|
270
|
+
`})}),`
|
|
271
|
+
`,(0,c.jsx)(t.p,{children:`Такой объект не попадает в реестр. Он полезен для локального стабильного правила; переиспользуемый формат лучше зарегистрировать централизованно.`}),`
|
|
272
|
+
`,(0,c.jsx)(t.p,{children:`Параметры не валидируются. Используйте:`}),`
|
|
273
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
274
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`decimals`}),` — целое неотрицательное число в диапазоне, допустимом `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat`}),`;`]}),`
|
|
275
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`groupingSize`}),` — положительное целое число;`]}),`
|
|
276
|
+
`,(0,c.jsxs)(t.li,{children:[`конечные положительные `,(0,c.jsx)(t.code,{children:`unit.value`}),`;`]}),`
|
|
277
|
+
`,(0,c.jsxs)(t.li,{children:[`известный `,(0,c.jsx)(t.code,{children:`roundingMode`}),`.`]}),`
|
|
278
|
+
`]}),`
|
|
279
|
+
`,(0,c.jsxs)(t.p,{children:[`Нулевой или отрицательный `,(0,c.jsx)(t.code,{children:`groupingSize`}),` в ручной ветке группировки может привести к незавершающемуся циклу. Не передавайте непроверенный пользовательский объект напрямую.`]}),`
|
|
280
|
+
`,(0,c.jsx)(t.h2,{id:`truncatenumbernum-decimals`,children:(0,c.jsx)(t.code,{children:`truncateNumber(num, decimals)`})}),`
|
|
281
|
+
`,(0,c.jsx)(t.p,{children:`Низкоуровневая математическая функция усекает дробную часть без округления:`}),`
|
|
282
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`truncateNumber(123.789, 1); // 123.7
|
|
283
|
+
truncateNumber(-123.789, 1); // -123.7
|
|
284
|
+
truncateNumber(123.789, 0); // 123
|
|
285
|
+
truncateNumber(123.789, -1); // 120
|
|
286
|
+
`})}),`
|
|
287
|
+
`,(0,c.jsxs)(t.p,{children:[`Функция не валидирует параметры и не используется обычным `,(0,c.jsx)(t.code,{children:`formatNumber`}),` для standard presets.`]}),`
|
|
288
|
+
`,(0,c.jsxs)(t.h2,{id:`кеш-intlnumberformat`,children:[`Кеш `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat`})]}),`
|
|
289
|
+
`,(0,c.jsxs)(t.p,{children:[`Модуль кеширует formatter по комбинации `,(0,c.jsx)(t.code,{children:`decimals + grouping`}),`, что важно для сотен ячеек таблицы.`]}),`
|
|
290
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`clearFormatCache();
|
|
291
|
+
`})}),`
|
|
292
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`clearFormatCache`}),` очищает только кеш `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat`}),`. Она не очищает и не сбрасывает реестр presets. В прикладном коде вызывать её обычно не нужно.`]}),`
|
|
293
|
+
`,(0,c.jsx)(t.h2,{id:`практические-рецепты`,children:`Практические рецепты`}),`
|
|
294
|
+
`,(0,c.jsx)(t.h3,{id:`безопасный-вывод-значения-api`,children:`Безопасный вывод значения API`}),`
|
|
295
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const parsed = toFiniteNumber(response.amount);
|
|
296
|
+
const amountText = parsed === undefined ? "—" : formatNumberAsDecimal2(parsed);
|
|
297
|
+
`})}),`
|
|
298
|
+
`,(0,c.jsx)(t.h3,{id:`поле-где-ноль-нужно-скрыть`,children:`Поле, где ноль нужно скрыть`}),`
|
|
299
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const text = formatNumberAsIntegerOrEmpty(row.count);
|
|
300
|
+
`})}),`
|
|
301
|
+
`,(0,c.jsx)(t.h3,{id:`проверка-положительного-page-size`,children:`Проверка положительного page size`}),`
|
|
302
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const pageSize = toPositiveInteger(search.pageSize) ?? 20;
|
|
303
|
+
`})}),`
|
|
304
|
+
`,(0,c.jsx)(t.h3,{id:`собственный-preset-на-старте-приложения`,children:`Собственный preset на старте приложения`}),`
|
|
305
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`export function configureFormatters(): void {
|
|
306
|
+
registerNumberPreset({
|
|
307
|
+
name: "quantity-4",
|
|
308
|
+
decimals: 4,
|
|
309
|
+
grouping: false
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
`})}),`
|
|
313
|
+
`,(0,c.jsx)(t.h2,{id:`частые-ошибки`,children:`Частые ошибки`}),`
|
|
314
|
+
`,(0,c.jsxs)(t.h3,{id:`передавать-локализованную-строку-прямо-в-formatnumber`,children:[`Передавать локализованную строку прямо в `,(0,c.jsx)(t.code,{children:`formatNumber`})]}),`
|
|
315
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// Неправильно
|
|
316
|
+
formatNumber("1 234,5", "decimal-2"); // "0"
|
|
317
|
+
|
|
318
|
+
// Правильно
|
|
319
|
+
const parsed = toFiniteNumber("1 234,5");
|
|
320
|
+
const text = parsed === undefined ? "—" : formatNumber(parsed, "decimal-2");
|
|
321
|
+
`})}),`
|
|
322
|
+
`,(0,c.jsxs)(t.h3,{id:`считать-percent-математическим-процентом`,children:[`Считать `,(0,c.jsx)(t.code,{children:`percent`}),` математическим процентом`]}),`
|
|
323
|
+
`,(0,c.jsxs)(t.p,{children:[`Preset не умножает `,(0,c.jsx)(t.code,{children:`0.25`}),` на 100 и не добавляет `,(0,c.jsx)(t.code,{children:`%`}),`. Он выведет `,(0,c.jsx)(t.code,{children:`0,25`}),`.`]}),`
|
|
324
|
+
`,(0,c.jsx)(t.h3,{id:`ожидать-валютный-символ`,children:`Ожидать валютный символ`}),`
|
|
325
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`currency`}),` и `,(0,c.jsx)(t.code,{children:`price`}),` форматируют число, но не знают валюту.`]}),`
|
|
326
|
+
`,(0,c.jsx)(t.h3,{id:`мутировать-полученный-preset`,children:`Мутировать полученный preset`}),`
|
|
327
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getNumberPreset`}),` возвращает реестровый объект. Создайте новый объект или вызовите `,(0,c.jsx)(t.code,{children:`registerNumberPreset`}),` с полной новой конфигурацией.`]}),`
|
|
328
|
+
`,(0,c.jsx)(t.h3,{id:`регистрировать-preset-во-время-рендера`,children:`Регистрировать preset во время рендера`}),`
|
|
329
|
+
`,(0,c.jsx)(t.p,{children:`Это глобальное изменение. Настраивайте реестр один раз до построения runtime.`}),`
|
|
330
|
+
`,(0,c.jsx)(t.h2,{id:`api-справка`,children:`API-справка`}),`
|
|
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:`Семейство`}),(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:`Универсальное форматирование`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`formatNumber`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Готовые форматы`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`formatNumberAsInteger`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsCurrency`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal2`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal3`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsPercent`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsPrice`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsTonnage`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Ноль как пустое`}),(0,c.jsxs)(t.td,{children:[`все перечисленные wrappers с суффиксом `,(0,c.jsx)(t.code,{children:`OrEmpty`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Парсинг`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`toFiniteNumber`}),`, `,(0,c.jsx)(t.code,{children:`parseNumber`}),`, `,(0,c.jsx)(t.code,{children:`isPositiveValue`}),`, `,(0,c.jsx)(t.code,{children:`toPositiveInteger`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Проверка нуля`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`isZeroValue`})})]}),(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:`DEFAULT_NUMBER_PRESET_NAMES`}),`, `,(0,c.jsx)(t.code,{children:`NUMBER_FORMAT_DEFAULTS`}),`, `,(0,c.jsx)(t.code,{children:`getNumberPreset`}),`, `,(0,c.jsx)(t.code,{children:`getNumberPresetNames`}),`, `,(0,c.jsx)(t.code,{children:`registerNumberPreset`}),`, `,(0,c.jsx)(t.code,{children:`resetNumberPresets`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Низкоуровневое`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`truncateNumber`}),`, `,(0,c.jsx)(t.code,{children:`clearFormatCache`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Типы`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`NumberFormatPreset`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatPresetConfig`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatCompactOptions`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatCompactUnit`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatCompactRoundingMode`})]})]})]})]}),`
|
|
332
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatCompactNumber`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsChartAxis`}),` и `,(0,c.jsx)(t.code,{children:`resolveNumberPreset`}),` не входят в публичный entrypoint. Compact-поведение доступно через встроенные или собственные presets.`]}),`
|
|
333
|
+
`,(0,c.jsx)(t.h2,{id:`связанная-документация`,children:`Связанная документация`}),`
|
|
334
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
335
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsxs)(t.a,{href:`../README.mdx`,children:[`Обзор `,(0,c.jsx)(t.code,{children:`formatters`})]})}),`
|
|
336
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`../strings/README.mdx`,children:`Строковая нормализация`})}),`
|
|
337
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`../pipeline/README.mdx`,children:`Formatter pipeline`})}),`
|
|
338
|
+
`]})]})}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};
|