@ryuzaki13/react-foundation-ui 1.6.15 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/dist/advanced-search/index.js +2 -2
- package/dist/base-table/index.js +2 -2
- package/dist/base-table/lib/columnPinning.d.ts +15 -17
- package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
- package/dist/base-table/lib/mergeDuplicates.d.ts +4 -4
- package/dist/base-table/lib/mergeDuplicates.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnPinning.d.ts +2 -2
- package/dist/base-table/model/useTableColumnVisibility.d.ts +7 -6
- package/dist/base-table/model/useTableColumnVisibility.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +8 -9
- package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts +6 -6
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
- package/dist/chunks/{base-table-CTafaxo2.js → base-table-DNSYOO9t.js} +29 -29
- package/dist/chunks/base-table-DNSYOO9t.js.map +1 -0
- package/dist/chunks/{multi-select-Bs1GU5MD.js → multi-select-Clsst6DE.js} +129 -118
- package/dist/chunks/{multi-select-Bs1GU5MD.js.map → multi-select-Clsst6DE.js.map} +1 -1
- package/dist/chunks/odata-dependent-C_DCbKY2.js +45 -0
- package/dist/chunks/odata-dependent-C_DCbKY2.js.map +1 -0
- package/dist/chunks/select-B0xc6g81.js +355 -0
- package/dist/chunks/select-B0xc6g81.js.map +1 -0
- package/dist/chunks/{table-DOwANXnt.js → table-RO4dfMAj.js} +9 -9
- package/dist/chunks/table-RO4dfMAj.js.map +1 -0
- package/dist/multi-select/index.js +1 -1
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts +5 -13
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts +3 -20
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
- package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +29 -0
- package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -0
- package/dist/odata-dependent/index.d.ts +3 -0
- package/dist/odata-dependent/index.d.ts.map +1 -0
- package/dist/odata-dependent/index.js +2 -0
- package/dist/odata-dependent/model/useODataDependentSelection.d.ts +50 -0
- package/dist/odata-dependent/model/useODataDependentSelection.d.ts.map +1 -0
- package/dist/preset-select/index.js +1 -1
- package/dist/select/ODataDependentSegmentSelect.d.ts +12 -0
- package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +2 -2
- package/dist/simple-table/SimpleTable.d.ts +2 -2
- package/dist/simple-table/SimpleTable.d.ts.map +1 -1
- package/dist/simple-table/index.js +7 -10
- package/dist/simple-table/index.js.map +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/Table.d.ts +7 -8
- package/dist/table/Table.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/tree-select/index.js +1 -1
- package/dist/tree-table/TreeTable.d.ts +7 -8
- package/dist/tree-table/TreeTable.d.ts.map +1 -1
- package/dist/tree-table/index.js +104 -105
- package/dist/tree-table/index.js.map +1 -1
- package/package.json +13 -9
- package/storybook-static/assets/{Badge-y59HS6Mh.js → Badge-Dis0WdSI.js} +1 -1
- package/storybook-static/assets/{Badge.stories-CmAFVzHL.js → Badge.stories-DKUJOyg3.js} +1 -1
- package/storybook-static/assets/{BadgeList-B-LJdCLU.js → BadgeList-C_ImRsat.js} +1 -1
- package/storybook-static/assets/{Button-CbGK6ujA.js → Button-BSsRzaxX.js} +1 -1
- package/storybook-static/assets/{Button-CVhc13mG.js → Button-DxGg9rB3.js} +1 -1
- package/storybook-static/assets/{Button.stories-BxBE5epv.js → Button.stories-fHvDvt2w.js} +1 -1
- package/storybook-static/assets/{CalendarView-DC1MoZHd.js → CalendarView-BFcwl9Vq.js} +1 -1
- package/storybook-static/assets/{CheckBox-CJuQmvgS.js → CheckBox-CSbi2BEU.js} +1 -1
- package/storybook-static/assets/{CheckBox-CTF0MTwi.js → CheckBox-SuVeN-FY.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-Cgcw4ZWi.js → CheckBox.stories-C6PF0zG1.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-BQ0wHxzY.js → Color-6AOWCN3U-DX3p6XEG.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DKFfj-4J.js → ContextMenu-BhGu3QoC.js} +1 -1
- package/storybook-static/assets/{ContextMenu-CHa5JD2q.js → ContextMenu-f0QZPgBQ.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-BrFpb6Zf.js → ContextMenu.stories-V9d5mjak.js} +1 -1
- package/storybook-static/assets/{DateInput-C4NbLkP1.js → DateInput-BmL4c3wO.js} +1 -1
- package/storybook-static/assets/{DateInput-DMar_jSh.js → DateInput-C0K0JvWe.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-9NUN5Y-h.js → DateInput.stories-65WMYAML.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-C2YQ1Ta2.js → DateRangePresetSelect-DVAqXJt1.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BNM2Z8v-.js → DateRangePresetSelect-DdpNa-Yj.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-CU57n31Y.js → DateRangePresetSelect.stories-BGgd7TOu.js} +1 -1
- package/storybook-static/assets/{Detail-ClrynTH8.js → Detail-1rmVP04K.js} +1 -1
- package/storybook-static/assets/{Detail.stories-D8uN6AEx.js → Detail.stories-CW2YXAPy.js} +1 -1
- package/storybook-static/assets/{Dialog-F6geiNP6.js → Dialog-CszRheXL.js} +1 -1
- package/storybook-static/assets/{Dialog-B3yVDNey.js → Dialog-DcdGv_Bv.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BUISgmFq.js → Dialog.stories-CN9vtGuI.js} +1 -1
- package/storybook-static/assets/{Disclosure-D8eee9jT.js → Disclosure-DWeZZ2i8.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-C81bKGvm.js → Disclosure.stories-pZXR5BOM.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-Dql74J3c.js → DisclosureGroup-BWba17wI.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-B_i8iiBi.js → DocsRenderer-JROSPFPF-BYN3Mg4U.js} +1 -1
- package/storybook-static/assets/{DropZone-CjYwzdtm.js → DropZone-BCe20YiO.js} +1 -1
- package/storybook-static/assets/{DropZone-CWU49UGV.js → DropZone-ByDIyQgI.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-Bu9astzV.js → DropZone.stories-CLXe7D8H.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CIQZ1s_d.js → DropdownMenu-BD-pc32j.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-a-wSXVqz.js → ExpandableActionPanel-v-DZaEKX.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-B5kDNMOA.js → ExpandableActionPanel.stories-BhHYM4mJ.js} +1 -1
- package/storybook-static/assets/{Flex-C-LVVZu8.js → Flex-DukB58MF.js} +1 -1
- package/storybook-static/assets/{Flex.stories-C3UyARP_.js → Flex.stories-DQmoW5jb.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-C3jr4qCd.js → FloatingPopover-fnwAyZil.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-CY3E21k8.css → FormattedTableCell-AZc2IHfK.css} +1 -1
- package/storybook-static/assets/FormattedTableCell-CK1yXePp.js +15 -0
- package/storybook-static/assets/{Grid-T44eQhRH.js → Grid-BoLaxbR_.js} +1 -1
- package/storybook-static/assets/{Grid.stories-CCyTn5oG.js → Grid.stories-CSuOTbao.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Ctj0tTWD.js → ImageCropper.stories-BRi_qlO4.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-BmzXaLnX.js → ImageRenderer-BiV2g53B.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-BchLDd9U.js → ImageRenderer.stories-Da7QE7_Q.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-wZChQ7t6.js → ImageView.stories-DSFBxOa6.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-CjwPt6ux.js → ImageViewer.stories-D2rcovap.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-CwHTx5CR.js → ImageViewerRuntime-B2CS1UFL.js} +1 -1
- package/storybook-static/assets/{Input-B9nkOQ6L.js → Input-BIy4zhlA.js} +1 -1
- package/storybook-static/assets/{Input-ByxjsYlG.js → Input-CVs7SVMJ.js} +1 -1
- package/storybook-static/assets/{Input.stories-Bcyy4kLt.js → Input.stories-BBXrateo.js} +1 -1
- package/storybook-static/assets/{InputDateTime-DfpHtYTi.js → InputDateTime-VUiW2Znv.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-WDuCOx_6.js → InputDateTime.stories-lqECZY7T.js} +1 -1
- package/storybook-static/assets/{InputFile-DAko5xMV.js → InputFile-D0aHVW1q.js} +1 -1
- package/storybook-static/assets/{InputFile-DQUxyiai.js → InputFile-DEeRFq2f.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-X6set_bl.js → InputFile.stories-9fBhIus4.js} +1 -1
- package/storybook-static/assets/{InputFiles-CYo3-wOK.js → InputFiles-C_KIqiN9.js} +1 -1
- package/storybook-static/assets/{InputFiles-B0Gs4B9M.js → InputFiles-DTy038xW.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-D04gwM6v.js → InputFiles.stories-CspkI6-Y.js} +1 -1
- package/storybook-static/assets/{InputFilesList-V2ras_Is.js → InputFilesList-BQdSFOI1.js} +1 -1
- package/storybook-static/assets/{InputImage-CuuPUX-y.js → InputImage-C0kyUtT0.js} +1 -1
- package/storybook-static/assets/{InputImage-CsAsZufs.js → InputImage-VJaqApEh.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-ClhlRcMN.js → InputImage.stories-DKXeva5i.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-BjG6Uxcq.js → InteractiveComponents-B8zzCcZ_.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-ljjqMc9s.js → InteractiveComponents.stories-DP0Jma43.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-C3i1T7zB.js → LayoutPicker-BpcPcCDz.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-C1APKtbC.js → LayoutPicker-DjUZ5y7M.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-Cn66HQfj.js → LayoutPicker.stories-POpVHww7.js} +1 -1
- package/storybook-static/assets/{Listbox-BhzabNF9.js → Listbox-Cg1OczYK.js} +1 -1
- package/storybook-static/assets/{Listbox-BQZFMdE4.js → Listbox-gHitzePa.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BmKd1TN6.js → Listbox.stories-Dw3IdYZA.js} +1 -1
- package/storybook-static/assets/{Modal-CrDusmmr.js → Modal-CY7qfD1u.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CK7BwByp.js → Modal.stories-Boa7oW-a.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-CP_LR9Sf.js → ModalManagerProvider-GYXaQe-7.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DY9PZi68.js → MultiSelect-D8qN-i5f.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DnqTZr96.js → MultiSelect-DToMWi-I.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-CVX122Ie.js → MultiSelect.stories-DLuXOl9Q.js} +1 -1
- package/storybook-static/assets/{NoData-DtfUdNbp.js → NoData-Bzj7vNCz.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-7zqHt4bx.js → NotificationsHost-Bs93X8Nv.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-Idv-3hmN.js → NotificationsHost.stories-DxVOVOf8.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CvzIsU5t.js → ODataMultiSelect-Dh33YJP6.js} +3 -2
- package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +139 -0
- package/storybook-static/assets/{ODataSelect-Cg4PjB9T.js → ODataSelect-lpN9sKth.js} +3 -1
- package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +161 -0
- package/storybook-static/assets/{ODataTreeMultiSelect-DovHjUl1.js → ODataTreeMultiSelect-DFY2FJBX.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-DgzqY4r0.js → ODataTreeMultiSelect.stories-B_Izm4eH.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-JJ2vuX2u.js → ODataTreeSelect-DdniMRRE.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-C1htwHhJ.js → ODataTreeSelect.stories-DxNhuLVU.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-Cj_Sots6.js → OneStepScroller-CHvIHlYx.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BCmsFuv0.js → PeriodSelect-BgAak8GG.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-umbZa6Vz.js → PeriodSelect-T1qaj11S.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-iZew0d5P.js → PeriodSelect.stories-DYEtD47p.js} +1 -1
- package/storybook-static/assets/{PickerSelectionToolbar-BpRSRbT3.js → PickerSelectionToolbar-DWtGYc4E.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-BBpUiawn.js → PickerTriggerActions-BIH8_o_b.js} +1 -1
- package/storybook-static/assets/{Popover-DlwBQ91i.js → Popover-BVP-wMdK.js} +1 -1
- package/storybook-static/assets/{Popover-COZU5MVS.js → Popover-DQKHL6wc.js} +1 -1
- package/storybook-static/assets/{Popover.stories-BsjqePTd.js → Popover.stories-Pt4-7Aof.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Dk5jJC5w.js → PresetRangeDateInput-C4_NegG_.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-QfbYKw0Z.js → PresetRangeDateInput-DQ3rlCp5.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-BuykZTZe.js → PresetRangeDateInput.stories-3AzmySZv.js} +1 -1
- package/storybook-static/assets/{PresetSelect-CZ7mJxKl.js → PresetSelect-BTh53LoO.js} +1 -1
- package/storybook-static/assets/{RadioButton-_kpqtWIo.js → RadioButton-BfBSX73Y.js} +1 -1
- package/storybook-static/assets/{RadioButton-ism7L8zl.js → RadioButton-Ci25eUL_.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-DfjhjPnV.js → RadioButton.stories-JVGXFlz8.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DxYjpIR1.js → RadioGroup-CL7EHd6O.js} +1 -1
- package/storybook-static/assets/{RadioGroup-B7so-JDF.js → RadioGroup-CW39hD_-.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DpVtRTBk.js → RadioGroup.stories-MS9Jl6AT.js} +1 -1
- package/storybook-static/assets/{Scrollable-D6rD81Kz.js → Scrollable-Bo4197LC.js} +1 -1
- package/storybook-static/assets/{Select-DffwCANA.js → Select-CxQqH8H5.js} +1 -1
- package/storybook-static/assets/{Select-Ci-axJ2e.js → Select-DBsWg0wv.js} +1 -1
- package/storybook-static/assets/{Select.stories-C9LrrykH.js → Select.stories-DfjNWXba.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-DFbLFeJp.js → SelectOptionContent-Bie2pzia.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CE_lhNql.js → SerializableSelect-BktENdyg.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-DV6F91Gh.js → SerializableSelect.stories-B8zxcu66.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DaL7cpjM.js → SingleDateTimeInput-DZBRm3dM.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CGEUodYr.js → SingleDateTimeInput-DvpU1DkI.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-C7qfFiPV.js → SingleDateTimeInput.stories-Bku5Zc05.js} +1 -1
- package/storybook-static/assets/{Slider-BrukeE6j.js → Slider-BJkB6IoW.js} +1 -1
- package/storybook-static/assets/{Slider-m5BO0wFz.js → Slider-BN2xXBOi.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CNqzSJqp.js → Slider.stories-CM3yNojO.js} +1 -1
- package/storybook-static/assets/{SliderInput-D0UlZx-t.js → SliderInput-2ZiuvbpQ.js} +1 -1
- package/storybook-static/assets/{SliderInput-CS9d2VpF.js → SliderInput-CPX2bJK3.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-B5-aln-T.js → SliderInput.stories-dJX-tRtA.js} +1 -1
- package/storybook-static/assets/{Sortable-CSt-VcmM.js → Sortable-Bkr-xnO4.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CVUdrXGv.js → Sortable.stories-BPEg99e5.js} +1 -1
- package/storybook-static/assets/{Splitter-DcsxH_9j.js → Splitter-D4en_f5n.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-BBfUYDeq.js → Splitter.stories-Cynn_kHV.js} +1 -1
- package/storybook-static/assets/{StateSelect-BDJRQxjc.js → StateSelect-BgbwMGGc.js} +1 -1
- package/storybook-static/assets/{StateSelect-CCQIdUHC.js → StateSelect-PcH0VuO_.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-7wPKSG6b.js → StateSelect.stories-CShqVH9Y.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-DRiRwW1z.js → StringToggle.stories-CypR3oB_.js} +1 -1
- package/storybook-static/assets/{Switch-Cw3jDgSx.js → Switch-BVN6TcVZ.js} +1 -1
- package/storybook-static/assets/{Switch-BtZXCfQa.js → Switch-D-cSDh8j.js} +1 -1
- package/storybook-static/assets/{Switch.stories-DprDLnyc.js → Switch.stories-C0s7gvBf.js} +1 -1
- package/storybook-static/assets/{Table-C0C6gEXh.js → Table-CwXJDDe6.js} +1 -1
- package/storybook-static/assets/Table.stories-vqttnROX.js +207 -0
- package/storybook-static/assets/{Tabs-Cmm9Be8c.js → Tabs-BRSEvQpk.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-TZO3cqOu.js → Tabs.stories-R_7jiTQc.js} +1 -1
- package/storybook-static/assets/{TabsBox-CMleIsIx.js → TabsBox-CqSxAUdJ.js} +1 -1
- package/storybook-static/assets/{TagInput-C1w6bPXM.js → TagInput-C3ahaF-B.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-DjZGRNf8.js → TagInput.stories-C3O2gBUY.js} +1 -1
- package/storybook-static/assets/{Text-B7BlP612.js → Text-b8fMr5Hd.js} +1 -1
- package/storybook-static/assets/{Textarea-QCTMJrzh.js → Textarea-BDL_MwcM.js} +1 -1
- package/storybook-static/assets/{Textarea-CR1BsDCZ.js → Textarea-CCgxNL6F.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-BXVDnedp.js → Textarea.stories-kc_LXBix.js} +1 -1
- package/storybook-static/assets/{TimePanel-sVNwfNVp.js → TimePanel-BCotjEKQ.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-CgWwUSUo.js → TimePanel.stories-B8paqA-_.js} +1 -1
- package/storybook-static/assets/{Toggle-yuE_iKax.js → Toggle-CT4IyZPI.js} +1 -1
- package/storybook-static/assets/{Toggle-CsN8aXvZ.js → Toggle-CbsKNs_c.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-cYH_nCrO.js → Toggle.stories-YsQZk4DA.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BUZ-QzJc.js → TreeMultiSelect-CmAa_Gin.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Bb8lGllH.js → TreeMultiSelect-DRLoUCXF.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-x-F-Y4_h.js → TreeMultiSelect.stories-CV65ZVUo.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-DOT734vD.js → TreePickerBase-rB-Q9Uwf.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DDgqDh2L.js → TreeSelect-CsYGUC6s.js} +1 -1
- package/storybook-static/assets/{TreeSelect-dx0121sD.js → TreeSelect-FhEH7bMx.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-Ef4wBpPe.js → TreeSelect.stories-Cw4IkrNG.js} +1 -1
- package/storybook-static/assets/{TreeTable-DSBZR5Ak.js → TreeTable-Bajr80HM.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-ypxZKEv5.js → TreeTable.stories-DDCGoB2u.js} +4 -4
- package/storybook-static/assets/{async-B9dg7eWG.js → async-CWrFMaux.js} +1 -1
- package/storybook-static/assets/{blocks-Cta1XrWW.js → blocks-CrYcG0WD.js} +3 -3
- package/storybook-static/assets/{browserAndReact-BQ_KR_3d.js → browserAndReact-DSxaVMjM.js} +1 -1
- package/storybook-static/assets/{check-R_o7C6xx.js → check-Cnuffb78.js} +1 -1
- package/storybook-static/assets/{chevron-down-cKT7IMMQ.js → chevron-down-ChPfAmdy.js} +1 -1
- package/storybook-static/assets/{chevron-left-CiDPsfyq.js → chevron-left-CEB5eAVk.js} +1 -1
- package/storybook-static/assets/{chevron-right-C19a7OR-.js → chevron-right-DHw2yjh1.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-DxKkuEyo.js → chunk-W22LQPXL-i9Cm4c-p.js} +1 -1
- package/storybook-static/assets/{circle-alert-DBOiovw1.js → circle-alert-B0REyiCt.js} +1 -1
- package/storybook-static/assets/{circle-check-7XeWOdm4.js → circle-check-D6WZ24rj.js} +1 -1
- package/storybook-static/assets/components-BCe0UvQp.js +241 -0
- package/storybook-static/assets/{contextMenu-CJYmqLQb.js → contextMenu-De66k1si.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-CbaqmJz1.js → defaultRenderers-D0Z-7t0H.js} +1 -1
- package/storybook-static/assets/{download-7lMMZoAs.js → download-C1DiezfA.js} +1 -1
- package/storybook-static/assets/{filesAndExcel-ecqcdsWK.js → filesAndExcel-BVMGH9OS.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-BZQpsoBF.js → floating-ui.react-BswSORmJ.js} +1 -1
- package/storybook-static/assets/{formatters-CVj-3Vn0-BFaHJqZL.js → formatters-CBgrBeSA-DY6OIAc8.js} +1 -1
- package/storybook-static/assets/{formatters-Do_IyKhx.js → formatters-D27XMzPd.js} +1 -1
- package/storybook-static/assets/{formatters-runtime-BzeLCcNv.js → formatters-runtime-B_C8yQOS.js} +1 -1
- package/storybook-static/assets/{foundationLib-llmpMqxO.js → foundationLib-BmwSyi1e.js} +1 -1
- package/storybook-static/assets/{hooks-C3kva5fu.js → hooks-CXlVTo5i.js} +1 -1
- package/storybook-static/assets/{iframe-dENsI_HJ.js → iframe-Bbj4T0X2.js} +4 -4
- package/storybook-static/assets/iframe-DLZ4F2nx.js +1 -0
- package/storybook-static/assets/{info-DNxF2xdK.js → info-D_YlGthq.js} +1 -1
- package/storybook-static/assets/odata-CDuIqs1a.js +1 -0
- package/storybook-static/assets/{odataAndTables-D36xYvsu.js → odataAndTables-D4R4KHZc.js} +3 -3
- package/storybook-static/assets/{odataFetchFn-38rx5VG-.js → odataFetchFn-Sw0FicJe.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-CorPZlzg.js → odataStoryFixtures-z1HaQHNb.js} +2 -2
- package/storybook-static/assets/{persisted-8ua2a009.js → persisted-TRx901TV.js} +1 -1
- package/storybook-static/assets/{pureUtilities-ikdtRVqv.js → pureUtilities-B8KVYaZx.js} +1 -1
- package/storybook-static/assets/{react-B3i_po7W.js → react-CTGFMmtV.js} +1 -1
- package/storybook-static/assets/{refresh-cw-BauD2hhl.js → refresh-cw-BuhtDwqw.js} +1 -1
- package/storybook-static/assets/{runtimeAndState-BpTnjVHY.js → runtimeAndState-DDPlVhTs.js} +1 -1
- package/storybook-static/assets/{settings-2-BniDrt2R.js → settings-2-DESCgIcH.js} +1 -1
- package/storybook-static/assets/shim-BUMlC1GG.js +1 -0
- package/storybook-static/assets/{sortable-BVQGL4Rj.js → sortable-BxGw7kip.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-DX_O-alN.js → syntaxhighlighter-T5IQBZDB-B0d7LXTh.js} +1 -1
- package/storybook-static/assets/{trash-2-BN_08GUs.js → trash-2-D0Ed43_3.js} +1 -1
- package/storybook-static/assets/{triangle-alert-CA9F5VpH.js → triangle-alert-CpgcfVSf.js} +1 -1
- package/storybook-static/assets/useODataSelectBase-CFR7eJND.js +1 -0
- package/storybook-static/assets/{useODataTreeData-BIIUO50-.js → useODataTreeData-DgEKknmd.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-Di5pbi3P.js → usePickerQuery-Be3WSeUa.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-Bk7ww9go.js → usePickerTriggerController-BZZv-jDV.js} +1 -1
- package/storybook-static/assets/{x-BF_8tdj4.js → x-_GQ6nyHW.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/project.json +1 -1
- package/dist/chunks/base-table-CTafaxo2.js.map +0 -1
- package/dist/chunks/select-DeeGYtVc.js +0 -328
- package/dist/chunks/select-DeeGYtVc.js.map +0 -1
- package/dist/chunks/table-DOwANXnt.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-D4NXq8Pu.js +0 -18
- package/storybook-static/assets/ODataMultiSelect.stories-DATnsk6a.js +0 -137
- package/storybook-static/assets/ODataSelect.stories-DgJvyuln.js +0 -207
- package/storybook-static/assets/Table.stories-BgxeP7Dj.js +0 -207
- package/storybook-static/assets/components-CR7XtYhK.js +0 -241
- package/storybook-static/assets/iframe-BsjDYyde.js +0 -1
- package/storybook-static/assets/odata-KQkU-pBI.js +0 -1
- package/storybook-static/assets/useODataSelectBase-goRS7Fgm.js +0 -1
- /package/storybook-static/assets/{odata-service-B5w4YBao-BW9QLSrS.js → odata-service-B6TxBSLm-BW9QLSrS.js} +0 -0
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./ui.module-DHVTOqZ0.js";
|
|
2
|
-
import { u as t } from "./input-CCdBtl-C.js";
|
|
3
|
-
import { a as n, c as r, f as i, i as a, l as o, o as s, p as c, r as l, t as u, u as d } from "./picker-CrRdwdA5.js";
|
|
4
|
-
import { n as f, r as p } from "./useODataSelectBase-Bq36Wp1U.js";
|
|
5
|
-
import { Fragment as m, useCallback as h, useMemo as g, useRef as ee, useState as te } from "react";
|
|
6
|
-
import { useODataCollectionModel as _ } from "@ryuzaki13/react-foundation-api/odata";
|
|
7
|
-
import { cn as v } from "@ryuzaki13/react-foundation-lib/utils";
|
|
8
|
-
import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
9
|
-
import { CheckIcon as ne, XIcon as re } from "lucide-react";
|
|
10
|
-
//#region src/select/lib/getOptionSearchText.ts
|
|
11
|
-
function ie({ option: e, getOptionLabel: t, getOptionCode: n, getOptionGroup: r }) {
|
|
12
|
-
return [
|
|
13
|
-
s(t(e)),
|
|
14
|
-
s(n?.(e)),
|
|
15
|
-
s(r?.(e)?.label)
|
|
16
|
-
].filter((e) => !!e).join(" ").toLowerCase();
|
|
17
|
-
}
|
|
18
|
-
function S(e, t, n) {
|
|
19
|
-
return e.find((e) => e.value === t) ?? n;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/select/model/useODataSelect.ts
|
|
23
|
-
function ae({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
|
|
24
|
-
let o = f({
|
|
25
|
-
odata: e,
|
|
26
|
-
segment: t,
|
|
27
|
-
model: n,
|
|
28
|
-
value: r ? [r] : [],
|
|
29
|
-
dependencies: i
|
|
30
|
-
}), s = o.selectedItems[0], c = g(() => s ? [s, ...o.filteredItems] : o.filteredItems, [o.filteredItems, s]), l = (e) => {
|
|
31
|
-
a(e?.[o.selectionKey]);
|
|
32
|
-
};
|
|
33
|
-
return {
|
|
34
|
-
...o,
|
|
35
|
-
selectedItem: s,
|
|
36
|
-
options: c,
|
|
37
|
-
handleChange: l
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
//#endregion
|
|
41
|
-
//#region src/select/lib/createSelectOptionSections.ts
|
|
42
|
-
function oe(e, t) {
|
|
43
|
-
let n = [];
|
|
44
|
-
return e.forEach((e, r) => {
|
|
45
|
-
let i = t(e), a = n.at(-1), o = a?.group?.key === i?.key;
|
|
46
|
-
if (a && o) {
|
|
47
|
-
a.items.push({
|
|
48
|
-
option: e,
|
|
49
|
-
index: r
|
|
50
|
-
});
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
n.push({
|
|
54
|
-
group: i,
|
|
55
|
-
items: [{
|
|
56
|
-
option: e,
|
|
57
|
-
index: r
|
|
58
|
-
}]
|
|
59
|
-
});
|
|
60
|
-
}), n;
|
|
61
|
-
}
|
|
62
|
-
var C = {
|
|
63
|
-
inputWithOverlay: "aEEqH1",
|
|
64
|
-
valueOverlay: "_4HQKa7"
|
|
65
|
-
};
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region src/select/Select.tsx
|
|
68
|
-
function w(t) {
|
|
69
|
-
let { label: f, description: p, disabled: _, placeholder: S, size: ae, options: w, value: T, onChange: E, getOptionKey: D, getOptionLabel: O, getOptionCode: k, getOptionDisabled: A, getOptionAriaLabel: se, getOptionGroup: j, getOptionClassName: ce, renderOption: M, renderValue: N, className: le, buttonClassName: ue, optionsClassName: de, optionsMaxWidth: fe, optionsContentClassName: pe, searchable: P = !1, defaultFilter: me = !0, query: he, defaultQuery: ge, onQuery: _e, renderPopupHeader: ve, emptyState: ye, isLoading: be, errorState: xe, placement: Se = "bottom-start", clearable: F = !1 } = t, I = E, L = ee(null), [R, Ce] = te(!1), z = P ? "search-single" : "display", B = T === void 0 ? void 0 : D(T), V = B === void 0 ? void 0 : w.find((e) => D(e) === B) ?? T, { query: H, setQuery: U, resetQueryOnClose: we } = l({
|
|
70
|
-
query: he,
|
|
71
|
-
defaultQuery: ge,
|
|
72
|
-
onQuery: _e,
|
|
73
|
-
triggerMode: z
|
|
74
|
-
}), Te = (e) => {
|
|
75
|
-
R && !e && we && U(""), Ce(e);
|
|
76
|
-
}, Ee = h((e) => ie({
|
|
77
|
-
option: e,
|
|
78
|
-
getOptionLabel: O,
|
|
79
|
-
getOptionCode: k,
|
|
80
|
-
getOptionGroup: j
|
|
81
|
-
}), [
|
|
82
|
-
k,
|
|
83
|
-
j,
|
|
84
|
-
O
|
|
85
|
-
]), W = n({
|
|
86
|
-
options: w,
|
|
87
|
-
query: H,
|
|
88
|
-
enabled: P && me,
|
|
89
|
-
getSearchText: Ee
|
|
90
|
-
}), G = g(() => j ? oe(W, j) : void 0, [j, W]), De = B === void 0 ? -1 : W.findIndex((e) => D(e) === B), { activeIndex: Oe, context: ke, floatingStyles: Ae, getFloatingProps: je, setReference: Me, setFloating: Ne, setOptionRef: Pe, close: K, openList: Fe, toggleOpen: Ie, selectOption: Le, selectActiveOption: Re, handleReferenceKeyDown: ze, handleFloatingKeyDown: Be, getOptionId: Ve, getActiveOptionId: q } = a({
|
|
91
|
-
options: W,
|
|
92
|
-
selectedIndex: De,
|
|
93
|
-
open: R,
|
|
94
|
-
onOpenChange: Te,
|
|
95
|
-
getOptionDisabled: A,
|
|
96
|
-
onSelect: I,
|
|
97
|
-
disabled: _,
|
|
98
|
-
placement: Se,
|
|
99
|
-
triggerMode: z
|
|
100
|
-
}), J = W.length > 0, Y = V === void 0 ? void 0 : O(V), X = V === void 0 ? void 0 : N ? N(V) : Y, He = s(Y), Ue = V === void 0 ? void 0 : s(k?.(V)), We = s(X) ?? He ?? Ue ?? (B === void 0 ? "" : String(B)), Z = P && (R || H.length > 0), Ge = Z ? H : V === void 0 ? "" : We, Q = V !== void 0 && X !== void 0 && s(X) === void 0 && !Z, $ = u({
|
|
101
|
-
mode: z,
|
|
102
|
-
open: R,
|
|
103
|
-
currentQuery: H,
|
|
104
|
-
hasDisplayValue: V !== void 0,
|
|
105
|
-
inputRef: L,
|
|
106
|
-
setQuery: U,
|
|
107
|
-
openList: Fe,
|
|
108
|
-
close: K,
|
|
109
|
-
toggleOpen: Ie
|
|
110
|
-
}), Ke = (e) => {
|
|
111
|
-
L.current = e;
|
|
112
|
-
}, qe = () => {
|
|
113
|
-
F && I(void 0), U(""), K();
|
|
114
|
-
}, Je = (t, n, r) => {
|
|
115
|
-
let i = D(n), a = B !== void 0 && i === B, o = r === Oe, s = A?.(n) ?? !1, c = {
|
|
116
|
-
active: o,
|
|
117
|
-
selected: a,
|
|
118
|
-
disabled: s
|
|
119
|
-
};
|
|
120
|
-
return /* @__PURE__ */ b("div", {
|
|
121
|
-
id: Ve(t, r),
|
|
122
|
-
ref: (e) => Pe(r, e),
|
|
123
|
-
role: "option",
|
|
124
|
-
"aria-selected": a,
|
|
125
|
-
"aria-disabled": s || void 0,
|
|
126
|
-
"aria-label": se?.(n),
|
|
127
|
-
className: v(e.uiPopupOption, s && e.disabled, o && e.uiPopupOptionActive, a && e.selected, ce?.(n, c)),
|
|
128
|
-
onClick: () => Le(n),
|
|
129
|
-
children: M ? M(n, c) : /* @__PURE__ */ x(y, { children: [
|
|
130
|
-
b(a ? ne : "span", { className: e.uiPopupOptionIcon }),
|
|
131
|
-
/* @__PURE__ */ b("div", {
|
|
132
|
-
className: e.uiOptionText,
|
|
133
|
-
children: O(n)
|
|
134
|
-
}),
|
|
135
|
-
k && /* @__PURE__ */ b("div", {
|
|
136
|
-
className: e.uiOptionCode,
|
|
137
|
-
children: k(n)
|
|
138
|
-
})
|
|
139
|
-
] })
|
|
140
|
-
}, i);
|
|
141
|
-
};
|
|
142
|
-
return /* @__PURE__ */ b(c, {
|
|
143
|
-
label: f,
|
|
144
|
-
description: p,
|
|
145
|
-
disabled: _,
|
|
146
|
-
size: ae,
|
|
147
|
-
className: le,
|
|
148
|
-
children: ({ controlId: t, labelId: n, describedBy: a }) => {
|
|
149
|
-
let s = `${t}-listbox`;
|
|
150
|
-
return /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(r, {
|
|
151
|
-
ref: Ke,
|
|
152
|
-
rootRef: Me,
|
|
153
|
-
id: t,
|
|
154
|
-
type: "text",
|
|
155
|
-
disabled: _,
|
|
156
|
-
readOnly: !P,
|
|
157
|
-
autoComplete: "off",
|
|
158
|
-
role: "combobox",
|
|
159
|
-
isLoading: be,
|
|
160
|
-
value: Ge,
|
|
161
|
-
placeholder: V === void 0 || Z ? `${S ?? f ?? ""} <${w.length}>` : void 0,
|
|
162
|
-
"aria-labelledby": n,
|
|
163
|
-
"aria-describedby": a,
|
|
164
|
-
"aria-haspopup": "listbox",
|
|
165
|
-
"aria-expanded": R,
|
|
166
|
-
"aria-controls": R ? s : void 0,
|
|
167
|
-
"aria-autocomplete": P ? "list" : "none",
|
|
168
|
-
"aria-activedescendant": R ? q(s) : void 0,
|
|
169
|
-
inputClassName: v(Q && C.inputWithOverlay, ue, "textOverflow"),
|
|
170
|
-
overlay: Q ? /* @__PURE__ */ b("div", {
|
|
171
|
-
className: C.valueOverlay,
|
|
172
|
-
children: X
|
|
173
|
-
}) : void 0,
|
|
174
|
-
endAdornment: /* @__PURE__ */ b(o, {
|
|
175
|
-
open: R,
|
|
176
|
-
disabled: _,
|
|
177
|
-
onToggleMouseDown: $.handleToggleMouseDown,
|
|
178
|
-
onToggleClick: $.handleToggleClick,
|
|
179
|
-
children: F && V !== void 0 && !_ ? /* @__PURE__ */ b("button", {
|
|
180
|
-
type: "button",
|
|
181
|
-
className: e.uiClearButton,
|
|
182
|
-
"data-ui": "select-clear-button",
|
|
183
|
-
"data-action": "clear-select",
|
|
184
|
-
onMouseDown: (e) => {
|
|
185
|
-
e.preventDefault(), e.stopPropagation();
|
|
186
|
-
},
|
|
187
|
-
onClick: (e) => {
|
|
188
|
-
e.preventDefault(), e.stopPropagation(), qe();
|
|
189
|
-
},
|
|
190
|
-
"aria-label": "Очистить выбор",
|
|
191
|
-
children: /* @__PURE__ */ b(re, {})
|
|
192
|
-
}) : null
|
|
193
|
-
}),
|
|
194
|
-
onChange: (e) => {
|
|
195
|
-
P && $.handleTriggerInputChange(e.target.value);
|
|
196
|
-
},
|
|
197
|
-
onClick: $.handleTriggerClick,
|
|
198
|
-
onFocus: (e) => {
|
|
199
|
-
$.handleTriggerFocus(e.currentTarget);
|
|
200
|
-
},
|
|
201
|
-
onKeyDown: (e) => {
|
|
202
|
-
ze(e), !e.defaultPrevented && $.handleTriggerKeyDown({
|
|
203
|
-
event: e,
|
|
204
|
-
onActivateWhenOpen: Re,
|
|
205
|
-
enableSpaceActivation: !P
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
}), /* @__PURE__ */ b(i, {
|
|
209
|
-
open: R,
|
|
210
|
-
context: ke,
|
|
211
|
-
floatingStyles: Ae,
|
|
212
|
-
listId: s,
|
|
213
|
-
labelId: n,
|
|
214
|
-
descriptionId: a,
|
|
215
|
-
activeOptionId: J ? q(s) : void 0,
|
|
216
|
-
setFloating: Ne,
|
|
217
|
-
getFloatingProps: je,
|
|
218
|
-
onKeyDown: Be,
|
|
219
|
-
className: v(e.uiPopupOptions, de),
|
|
220
|
-
maxWidth: fe,
|
|
221
|
-
header: ve,
|
|
222
|
-
children: /* @__PURE__ */ b("div", {
|
|
223
|
-
className: v(pe, "h100 scrollable"),
|
|
224
|
-
children: J ? G ? G.map((t, n) => {
|
|
225
|
-
let r = t.group ? `${s}-group-${n}` : void 0, i = t.items.map(({ option: e, index: t }) => Je(s, e, t));
|
|
226
|
-
return t.group ? /* @__PURE__ */ x("div", {
|
|
227
|
-
role: "group",
|
|
228
|
-
"aria-labelledby": r,
|
|
229
|
-
children: [/* @__PURE__ */ b("div", {
|
|
230
|
-
id: r,
|
|
231
|
-
className: e.uiPopupGroupLabel,
|
|
232
|
-
children: t.group.label
|
|
233
|
-
}), i]
|
|
234
|
-
}, `group-${String(t.group.key)}-${n}`) : /* @__PURE__ */ b(m, { children: i }, `options-${n}`);
|
|
235
|
-
}) : W.map((e, t) => Je(s, e, t)) : /* @__PURE__ */ b(d, {
|
|
236
|
-
emptyState: ye,
|
|
237
|
-
errorState: xe
|
|
238
|
-
})
|
|
239
|
-
})
|
|
240
|
-
})] });
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
//#endregion
|
|
245
|
-
//#region src/select/ODataSelect.tsx
|
|
246
|
-
function T(e, t, n) {
|
|
247
|
-
return e ? t || Object.keys(e).find((e) => e !== n) || n : t || n;
|
|
248
|
-
}
|
|
249
|
-
var E = ({ odata: e, segment: n, model: r, size: i, label: a, description: o, disabled: s, value: c, dependencies: l, onChange: u, clearable: d }) => {
|
|
250
|
-
let f = ae({
|
|
251
|
-
odata: e,
|
|
252
|
-
segment: n,
|
|
253
|
-
model: _(r),
|
|
254
|
-
value: c,
|
|
255
|
-
dependencies: l,
|
|
256
|
-
onChange: u
|
|
257
|
-
});
|
|
258
|
-
if (f.isLoading) return /* @__PURE__ */ b(t, {
|
|
259
|
-
size: i,
|
|
260
|
-
label: a,
|
|
261
|
-
description: o
|
|
262
|
-
});
|
|
263
|
-
let m = n.hideCode ?? e.hideCode, h = T(f.selectedItem ?? f.options[0], f.textKey, f.codeKey);
|
|
264
|
-
return /* @__PURE__ */ b(w, {
|
|
265
|
-
size: i,
|
|
266
|
-
label: a,
|
|
267
|
-
description: o,
|
|
268
|
-
options: f.options,
|
|
269
|
-
value: f.selectedItem,
|
|
270
|
-
onChange: f.handleChange,
|
|
271
|
-
getOptionKey: (e) => e[f.codeKey],
|
|
272
|
-
getOptionLabel: (e) => e[h],
|
|
273
|
-
getOptionCode: m ? void 0 : (e) => e[f.codeKey],
|
|
274
|
-
getOptionAriaLabel: (e) => m || e[h] === e[f.codeKey] ? String(e[h]) : `${e[h]} ${e[f.codeKey]}`,
|
|
275
|
-
renderValue: (e) => /* @__PURE__ */ b(p, {
|
|
276
|
-
label: e[h],
|
|
277
|
-
code: m ? void 0 : e[f.codeKey]
|
|
278
|
-
}),
|
|
279
|
-
renderOption: (e) => /* @__PURE__ */ b(p, {
|
|
280
|
-
label: e[h],
|
|
281
|
-
code: m ? void 0 : e[f.codeKey],
|
|
282
|
-
highlight: f.debouncedQuery
|
|
283
|
-
}),
|
|
284
|
-
searchable: !0,
|
|
285
|
-
query: f.query,
|
|
286
|
-
onQuery: f.setQuery,
|
|
287
|
-
defaultFilter: !1,
|
|
288
|
-
disabled: s || f.isLoading,
|
|
289
|
-
placeholder: f.placeholder,
|
|
290
|
-
isLoading: f.isLoading,
|
|
291
|
-
errorState: f.isError ? "Ошибка загрузки" : void 0,
|
|
292
|
-
emptyState: !f.isLoading && !f.isError ? "Нет данных" : void 0,
|
|
293
|
-
clearable: d
|
|
294
|
-
});
|
|
295
|
-
};
|
|
296
|
-
//#endregion
|
|
297
|
-
//#region src/select/SerializableSelect.tsx
|
|
298
|
-
function D(e, t) {
|
|
299
|
-
return e[t];
|
|
300
|
-
}
|
|
301
|
-
function O(e, t, n) {
|
|
302
|
-
let r = e[t];
|
|
303
|
-
if (typeof r == "string" || typeof r == "number") return r;
|
|
304
|
-
let i = D(e, n);
|
|
305
|
-
return typeof i == "string" || typeof i == "number" ? i : String(i);
|
|
306
|
-
}
|
|
307
|
-
function k({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u, className: d, clearable: f }) {
|
|
308
|
-
let p = o === void 0 ? void 0 : a.find((e) => D(e, c) === o);
|
|
309
|
-
return /* @__PURE__ */ b(w, {
|
|
310
|
-
label: e,
|
|
311
|
-
description: t,
|
|
312
|
-
disabled: n,
|
|
313
|
-
placeholder: r,
|
|
314
|
-
size: i,
|
|
315
|
-
options: a,
|
|
316
|
-
value: p,
|
|
317
|
-
onChange: (e) => s(e ? D(e, c) : void 0),
|
|
318
|
-
getOptionKey: (e) => D(e, c),
|
|
319
|
-
getOptionLabel: (e) => O(e, l, c),
|
|
320
|
-
getOptionCode: u ? (e) => D(e, c) : void 0,
|
|
321
|
-
className: d,
|
|
322
|
-
clearable: f
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
//#endregion
|
|
326
|
-
export { S as i, E as n, w as r, k as t };
|
|
327
|
-
|
|
328
|
-
//# sourceMappingURL=select-DeeGYtVc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-DeeGYtVc.js","names":[],"sources":["../../src/select/lib/getOptionSearchText.ts","../../src/select/model/useODataSelect.ts","../../src/select/lib/createSelectOptionSections.ts","../../src/select/Select.module.scss","../../src/select/Select.tsx","../../src/select/ODataSelect.tsx","../../src/select/SerializableSelect.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { extractPickerTextContent } from \"../../picker\";\nimport { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport function getOptionSearchText<T extends InputType>({\n\toption,\n\tgetOptionLabel,\n\tgetOptionCode,\n\tgetOptionGroup\n}: {\n\toption: T;\n\tgetOptionLabel: (option: T) => ReactNode;\n\tgetOptionCode?: (option: T) => ReactNode;\n\tgetOptionGroup?: (option: T) => SelectOptionGroup | undefined;\n}) {\n\treturn [\n\t\textractPickerTextContent(getOptionLabel(option)),\n\t\textractPickerTextContent(getOptionCode?.(option)),\n\t\textractPickerTextContent(getOptionGroup?.(option)?.label)\n\t]\n\t\t.filter((part): part is string => Boolean(part))\n\t\t.join(\" \")\n\t\t.toLowerCase();\n}\n\n/** Находит selected option по value и возвращает fallback, если значение еще не нормализовано. */\nexport function resolveSelectedOption<TOption extends { value: string }>(\n\toptions: readonly TOption[],\n\tvalue: string,\n\tfallback: TOption\n): TOption {\n\treturn options.find((option) => option.value === value) ?? fallback;\n}\n","import { useMemo } from \"react\";\n\nimport { ODataCollectionModel, ODataSingleSelectProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { useODataSelectBase } from \"./useODataSelectBase\";\n\ninterface UseODataSelectOptions extends Omit<ODataSingleSelectProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (value: string | undefined) => void;\n}\n\nexport function useODataSelect({ odata, segment, model, value, dependencies, onChange }: UseODataSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue: value ? [value] : [],\n\t\tdependencies\n\t});\n\n\tconst selectedItem = odataModel.selectedItems[0];\n\tconst options = useMemo(() => {\n\t\tif (!selectedItem) {\n\t\t\treturn odataModel.filteredItems;\n\t\t}\n\n\t\treturn [selectedItem, ...odataModel.filteredItems];\n\t}, [odataModel.filteredItems, selectedItem]);\n\n\tconst handleChange = (item: CollectionItem | undefined) => {\n\t\tonChange(item?.[odataModel.selectionKey]);\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\tselectedItem,\n\t\toptions,\n\t\thandleChange\n\t};\n}\n","import { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport type SelectOptionSectionItem<TOption> = {\n\treadonly option: TOption;\n\treadonly index: number;\n};\n\nexport type SelectOptionSection<TOption> = {\n\treadonly group: SelectOptionGroup | undefined;\n\treadonly items: readonly SelectOptionSectionItem<TOption>[];\n};\n\n/**\n * Собирает соседние опции с одинаковым group key в секции, сохраняя исходные индексы для клавиатурной навигации listbox.\n */\nexport function createSelectOptionSections<TOption>(\n\toptions: readonly TOption[],\n\tgetOptionGroup: (option: TOption) => SelectOptionGroup | undefined\n): readonly SelectOptionSection<TOption>[] {\n\tconst sections: Array<{ group: SelectOptionGroup | undefined; items: SelectOptionSectionItem<TOption>[] }> = [];\n\n\toptions.forEach((option, index) => {\n\t\tconst group = getOptionGroup(option);\n\t\tconst currentSection = sections.at(-1);\n\t\tconst belongsToCurrentSection = currentSection?.group?.key === group?.key;\n\n\t\tif (currentSection && belongsToCurrentSection) {\n\t\t\tcurrentSection.items.push({ option, index });\n\t\t\treturn;\n\t\t}\n\n\t\tsections.push({\n\t\t\tgroup,\n\t\t\titems: [{ option, index }]\n\t\t});\n\t});\n\n\treturn sections;\n}\n",".inputWithOverlay {\n\tcolor: transparent;\n\tcaret-color: transparent;\n}\n\n.valueOverlay {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) + var(--space-xs)) 0 var(--space-md);\n\tdisplay: flex;\n\talign-items: center;\n\tpointer-events: none;\n\toverflow: hidden;\n}\n","import { type CSSProperties, Fragment, ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon, XIcon } from \"lucide-react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerTriggerController\n} from \"../picker\";\nimport { ChangeHandler, UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { getOptionSearchText } from \"./lib\";\nimport { createSelectOptionSections } from \"./lib/createSelectOptionSections\";\nimport styles from \"./Select.module.scss\";\nimport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport type SelectOptionState = {\n\tactive: boolean;\n\tselected: boolean;\n\tdisabled: boolean;\n};\n\ntype SelectSharedProps<TOption extends InputType> = Omit<UiBaseProps<TOption, TOption | undefined>, \"onChange\"> & {\n\toptions: readonly TOption[];\n\tgetOptionKey: (option: TOption) => SelectOptionKey;\n\tgetOptionLabel: (option: TOption) => ReactNode;\n\tgetOptionCode?: (option: TOption) => ReactNode;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionAriaLabel?: (option: TOption) => string;\n\tgetOptionGroup?: (option: TOption) => SelectOptionGroup | undefined;\n\tgetOptionClassName?: (option: TOption, state: SelectOptionState) => string | undefined;\n\trenderOption?: (option: TOption, state: SelectOptionState) => ReactNode;\n\trenderValue?: (option: TOption) => ReactNode;\n\tclassName?: string;\n\tbuttonClassName?: string;\n\toptionsClassName?: string;\n\toptionsMaxWidth?: CSSProperties[\"maxWidth\"];\n\toptionsContentClassName?: string;\n\tsearchable?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\tisLoading?: boolean;\n\trenderPopupHeader?: ReactNode;\n\temptyState?: ReactNode;\n\terrorState?: ReactNode;\n\tplacement?: Placement;\n};\n\ntype SelectChangeValue<TOption extends InputType, TClearable extends boolean | undefined> = true extends TClearable\n\t? TOption | undefined\n\t: TOption;\n\nexport type SelectProps<TOption extends InputType, TClearable extends boolean | undefined = false> = SelectSharedProps<TOption> & {\n\tclearable?: TClearable;\n\tonChange: ChangeHandler<SelectChangeValue<TOption, TClearable>>;\n};\n\n/**\n * Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.\n */\nexport function Select<TOption extends InputType, TClearable extends boolean | undefined = false>(props: SelectProps<TOption, TClearable>) {\n\tconst {\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tplaceholder,\n\t\tsize,\n\t\toptions,\n\t\tvalue,\n\t\tonChange,\n\t\tgetOptionKey,\n\t\tgetOptionLabel,\n\t\tgetOptionCode,\n\t\tgetOptionDisabled,\n\t\tgetOptionAriaLabel,\n\t\tgetOptionGroup,\n\t\tgetOptionClassName,\n\t\trenderOption,\n\t\trenderValue,\n\t\tclassName,\n\t\tbuttonClassName,\n\t\toptionsClassName,\n\t\toptionsMaxWidth,\n\t\toptionsContentClassName,\n\t\tsearchable = false,\n\t\tdefaultFilter = true,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\trenderPopupHeader,\n\t\temptyState,\n\t\tisLoading,\n\t\terrorState,\n\t\tplacement = \"bottom-start\",\n\t\tclearable = false\n\t} = props;\n\tconst emitChange = onChange as ChangeHandler<TOption | undefined>;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = searchable ? \"search-single\" : \"display\";\n\tconst selectedKey = value === undefined ? undefined : getOptionKey(value);\n\tconst selectedOption =\n\t\tselectedKey === undefined ? undefined : (options.find((option) => getOptionKey(option) === selectedKey) ?? value);\n\tconst {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tresetQueryOnClose\n\t} = usePickerQuery({\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\tsetQuery(\"\");\n\t\t}\n\n\t\tsetOpen(nextOpen);\n\t};\n\tconst getSearchText = useCallback(\n\t\t(option: TOption) =>\n\t\t\tgetOptionSearchText({\n\t\t\t\toption,\n\t\t\t\tgetOptionLabel,\n\t\t\t\tgetOptionCode,\n\t\t\t\tgetOptionGroup\n\t\t\t}),\n\t\t[getOptionCode, getOptionGroup, getOptionLabel]\n\t);\n\tconst visibleOptions = usePickerDefaultFilter({\n\t\toptions,\n\t\tquery: currentQuery,\n\t\tenabled: searchable && defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst optionSections = useMemo(\n\t\t() => (getOptionGroup ? createSelectOptionSections(visibleOptions, getOptionGroup) : undefined),\n\t\t[getOptionGroup, visibleOptions]\n\t);\n\tconst selectedIndex = selectedKey === undefined ? -1 : visibleOptions.findIndex((option) => getOptionKey(option) === selectedKey);\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: visibleOptions,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: handleOpenChange,\n\t\tgetOptionDisabled,\n\t\tonSelect: emitChange,\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode\n\t});\n\n\tconst hasOptions = visibleOptions.length > 0;\n\tconst labelContent = selectedOption !== undefined ? getOptionLabel(selectedOption) : undefined;\n\tconst displayContent = selectedOption !== undefined ? (renderValue ? renderValue(selectedOption) : labelContent) : undefined;\n\tconst labelText = extractPickerTextContent(labelContent);\n\tconst codeText = selectedOption !== undefined ? extractPickerTextContent(getOptionCode?.(selectedOption)) : undefined;\n\tconst displayText =\n\t\textractPickerTextContent(displayContent) ?? labelText ?? codeText ?? (selectedKey !== undefined ? String(selectedKey) : \"\");\n\tconst showSearchValue = searchable && (open || currentQuery.length > 0);\n\tconst inputValue = showSearchValue ? currentQuery : selectedOption !== undefined ? displayText : \"\";\n\tconst showDisplayOverlay =\n\t\tselectedOption !== undefined &&\n\t\tdisplayContent !== undefined &&\n\t\textractPickerTextContent(displayContent) === undefined &&\n\t\t!showSearchValue;\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: triggerMode,\n\t\topen,\n\t\tcurrentQuery,\n\t\thasDisplayValue: selectedOption !== undefined,\n\t\tinputRef,\n\t\tsetQuery,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\tconst handleClear = () => {\n\t\tif (clearable) {\n\t\t\temitChange(undefined);\n\t\t}\n\n\t\tsetQuery(\"\");\n\t\tclose();\n\t};\n\tconst renderOptionNode = (listId: string, option: TOption, index: number) => {\n\t\tconst optionKey = getOptionKey(option);\n\t\tconst selected = selectedKey !== undefined && optionKey === selectedKey;\n\t\tconst active = index === activeIndex;\n\t\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\t\tconst optionState = { active, selected, disabled: optionDisabled };\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={optionKey}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\taria-label={getOptionAriaLabel?.(option)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\tgetOptionClassName?.(option, optionState)\n\t\t\t\t)}\n\t\t\t\tonClick={() => selectOption(option)}>\n\t\t\t\t{renderOption ? (\n\t\t\t\t\trenderOption(option, optionState)\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{selected ? <CheckIcon className={uiStyles.uiPopupOptionIcon} /> : <span className={uiStyles.uiPopupOptionIcon} />}\n\t\t\t\t\t\t<div className={uiStyles.uiOptionText}>{getOptionLabel(option)}</div>\n\t\t\t\t\t\t{getOptionCode && <div className={uiStyles.uiOptionCode}>{getOptionCode(option)}</div>}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTriggerInput\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={!searchable}\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\tselectedOption === undefined || showSearchValue\n\t\t\t\t\t\t\t\t\t? `${placeholder ?? label ?? \"\"} <${options.length}>`\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-autocomplete={searchable ? \"list\" : \"none\"}\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tinputClassName={cn(showDisplayOverlay && styles.inputWithOverlay, buttonClassName, \"textOverflow\")}\n\t\t\t\t\t\t\toverlay={showDisplayOverlay ? <div className={styles.valueOverlay}>{displayContent}</div> : undefined}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t{clearable && selectedOption !== undefined && !disabled ? (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-select\"\n\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить выбор\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tif (!searchable) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: !searchable\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={hasOptions ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(uiStyles.uiPopupOptions, optionsClassName)}\n\t\t\t\t\t\t\tmaxWidth={optionsMaxWidth}\n\t\t\t\t\t\t\theader={renderPopupHeader}>\n\t\t\t\t\t\t\t<div className={cn(optionsContentClassName, \"h100 scrollable\")}>\n\t\t\t\t\t\t\t\t{hasOptions ? (\n\t\t\t\t\t\t\t\t\toptionSections ? (\n\t\t\t\t\t\t\t\t\t\toptionSections.map((section, sectionIndex) => {\n\t\t\t\t\t\t\t\t\t\t\tconst groupLabelId = section.group ? `${listId}-group-${sectionIndex}` : undefined;\n\t\t\t\t\t\t\t\t\t\t\tconst optionNodes = section.items.map(({ option, index }) =>\n\t\t\t\t\t\t\t\t\t\t\t\trenderOptionNode(listId, option, index)\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\treturn section.group ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`group-${String(section.group.key)}-${sectionIndex}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-labelledby={groupLabelId}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id={groupLabelId} className={uiStyles.uiPopupGroupLabel}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{section.group.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{optionNodes}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Fragment key={`options-${sectionIndex}`}>{optionNodes}</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tvisibleOptions.map((option, index) => renderOptionNode(listId, option, index))\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<PickerStatus emptyState={emptyState} errorState={errorState} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n","import React from \"react\";\n\nimport { ODataSingleSelectProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { InputUILoading } from \"../input\";\nimport { UiBaseProps } from \"../types\";\n\nimport { useODataSelect } from \"./model/useODataSelect\";\nimport { Select } from \"./Select\";\nimport { SelectOptionContent } from \"./SelectOptionContent\";\n\ntype ODataSelectProps = Omit<ODataSingleSelectProps, \"value\"> & UiBaseProps<string | undefined> & { clearable?: boolean };\n\nfunction getODataOptionTextKey(item: CollectionItem | undefined, textKey: string, codeKey: string) {\n\tif (!item) {\n\t\treturn textKey || codeKey;\n\t}\n\n\treturn textKey || Object.keys(item).find((key) => key !== codeKey) || codeKey;\n}\n\nexport const ODataSelect: React.FC<ODataSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tsize,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tclearable\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\tif (odataModel.isLoading) {\n\t\treturn <InputUILoading size={size} label={label} description={description} />;\n\t}\n\n\tconst hideCode = segment.hideCode ?? odata.hideCode;\n\tconst resolvedTextKey = getODataOptionTextKey(odataModel.selectedItem ?? odataModel.options[0], odataModel.textKey, odataModel.codeKey);\n\n\treturn (\n\t\t<Select\n\t\t\tsize={size}\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\toptions={odataModel.options}\n\t\t\tvalue={odataModel.selectedItem}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tgetOptionKey={(item) => item[odataModel.codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey]}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[odataModel.codeKey]}\n\t\t\tgetOptionAriaLabel={(item) =>\n\t\t\t\thideCode || item[resolvedTextKey] === item[odataModel.codeKey]\n\t\t\t\t\t? String(item[resolvedTextKey])\n\t\t\t\t\t: `${item[resolvedTextKey]} ${item[odataModel.codeKey]}`\n\t\t\t}\n\t\t\trenderValue={(item) => (\n\t\t\t\t<SelectOptionContent label={item[resolvedTextKey]} code={hideCode ? undefined : item[odataModel.codeKey]} />\n\t\t\t)}\n\t\t\trenderOption={(item) => (\n\t\t\t\t<SelectOptionContent\n\t\t\t\t\tlabel={item[resolvedTextKey]}\n\t\t\t\t\tcode={hideCode ? undefined : item[odataModel.codeKey]}\n\t\t\t\t\thighlight={odataModel.debouncedQuery}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tsearchable\n\t\t\tquery={odataModel.query}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tdefaultFilter={false}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\tisLoading={odataModel.isLoading}\n\t\t\terrorState={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t\temptyState={!odataModel.isLoading && !odataModel.isError ? \"Нет данных\" : undefined}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n};\n","import { Select } from \"./Select\";\n\nimport type { UiBaseProps } from \"../types\";\nimport type { SelectOptionKey } from \"./Select\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], SelectOptionKey> extends never ? never : K;\n}[keyof TOption];\n\ntype SerializableOptionValue<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>> = Extract<\n\tTOption[TOptionKey],\n\tSelectOptionKey\n>;\n\nexport interface SerializableSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends Omit<UiBaseProps<SerializableOptionValue<TOption, TOptionKey> | undefined>, \"onChange\"> {\n\toptions: readonly TOption[];\n\tonChange: (value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void;\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n\tclassName?: string;\n\tclearable?: boolean;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], SelectOptionKey> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], SelectOptionKey>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string | number {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\" || typeof label === \"number\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" || typeof key === \"number\" ? key : String(key);\n}\n\nexport function SerializableSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode,\n\tclassName,\n\tclearable\n}: SerializableSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\tconst selectedOption =\n\t\tvalue === undefined ? undefined : options.find((option) => getSerializableOptionKey(option, optionKey) === value);\n\n\treturn (\n\t\t<Select\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\toptions={options}\n\t\t\tvalue={selectedOption}\n\t\t\tonChange={(option: TOption | undefined) => onChange(option ? getSerializableOptionKey(option, optionKey) : undefined)}\n\t\t\tgetOptionKey={(option: TOption) => getSerializableOptionKey(option, optionKey)}\n\t\t\tgetOptionLabel={(option: TOption) => getSerializableOptionLabel(option, optionLabel, optionKey)}\n\t\t\tgetOptionCode={renderCode ? (option: TOption) => getSerializableOptionKey(option, optionKey) : undefined}\n\t\t\tclassName={className}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table-DOwANXnt.js","names":[],"sources":["../../src/table/Table.module.scss","../../src/table/Table.tsx"],"sourcesContent":[".selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.sentinel {\n\theight: 1px;\n}\n","/* eslint-disable react-hooks/incompatible-library */\nimport { useEffect, useEffectEvent, useMemo, useRef } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\nimport {\n\ttype TableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\ttype TableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { getCoreRowModel, useReactTable, type Row, type VisibilityState } from \"@tanstack/react-table\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./Table.module.scss\";\n\n/**\n * Возвращает индекс как строковый id, если внешний id не передан.\n */\nfunction defaultGetRowId<TData>(_row: TData, index: number): string {\n\treturn String(index);\n}\n\n/**\n * Пропсы компонента Table.\n *\n * Компонент предназначен для плоских данных и по API осознанно сближен с TreeTable.\n */\nexport interface TableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок таблицы.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Внешний список выбранных строк.\n\t *\n\t * Если передан, таблица синхронизирует визуальное выделение с этим набором id.\n\t */\n\tselectedRowIds?: readonly string[];\n\t/**\n\t * Стабильный идентификатор строки.\n\t *\n\t * Если не задан, используется индекс строки.\n\t */\n\tgetRowId?: (row: TData, index: number) => string;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\tminHeight?: `${number}em` | `${number}%`;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: VisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: VisibilityState;\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние left-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние left-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: VisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения left-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Используется для общих runtime-действий\n\t * вроде server sorting без встраивания доменной логики в shared-таблицу.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TData>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\t *\n\t * В отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n\t * `defaultContent` уже содержит отформатированное значение, если оно применимо.\n\t */\n\trenderCellContent?: BaseTableProps<TData>[\"renderCellContent\"];\n}\n\n/**\n * Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.\n */\nexport function Table<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\tselectionMode = \"none\",\n\tselectedRowIds,\n\tgetRowId,\n\tclassName,\n\tminHeight,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TableProps<TData>) {\n\tconst tableData = useMemo(() => data ?? [], [data]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst resolveRowId = getRowId ?? defaultGetRowId<TData>;\n\tconst rowById = useMemo(() => new Map(tableData.map((row, index) => [resolveRowId(row, index), row])), [resolveRowId, tableData]);\n\tconst availableRowIds = useMemo(() => Array.from(rowById.keys()), [rowById]);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds,\n\t\trowById,\n\t\tselectionMode,\n\t\tselectedRowIds,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, tableData.length]);\n\n\tconst table = useReactTable<TData>({\n\t\tdata: tableData as TData[],\n\t\tcolumns: columns as TableColumnDef<TData>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\trowSelection\n\t\t},\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tgetRowId: (row, index) => resolveRowId(row, index),\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(row.original) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns]\n\t);\n\tconst leadingColumnId = visibleLeafColumns[0]?.id;\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: Row<TData>) => {\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(row.original);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\tminHeight={minHeight}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => getRowClassName?.(row.original)}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcell.column.id === leadingColumnId && row.getIsSelected() ? styles.selectedIndicatorCell : undefined\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: args.row.original as TableFormulaRowData,\n\t\t\t\t\trowKind: \"plain\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = !shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t) : (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t);\n\n\t\t\t\tif (renderCellContent) {\n\t\t\t\t\treturn renderCellContent({\n\t\t\t\t\t\t...args,\n\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn defaultContent;\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|