@ryuzaki13/react-foundation-ui 3.8.3 → 3.10.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.
Files changed (403) hide show
  1. package/dist/base-table/index.js +1 -1
  2. package/dist/base-table/ui/BaseTable.d.ts +9 -1
  3. package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
  4. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js → TextEditorLexicalClient-BQH41FFT.js} +2 -2
  5. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js.map → TextEditorLexicalClient-BQH41FFT.js.map} +1 -1
  6. package/dist/chunks/{base-table-BMesCx6H.js → base-table-CacTH3BE.js} +130 -112
  7. package/dist/chunks/base-table-CacTH3BE.js.map +1 -0
  8. package/dist/chunks/{context-menu-CrSXJxQL.js → context-menu-BV8636Ou.js} +2 -2
  9. package/dist/chunks/{context-menu-CrSXJxQL.js.map → context-menu-BV8636Ou.js.map} +1 -1
  10. package/dist/chunks/{date-input-CzCDou4s.js → date-input-B7iG9cA7.js} +2 -2
  11. package/dist/chunks/{date-input-CzCDou4s.js.map → date-input-B7iG9cA7.js.map} +1 -1
  12. package/dist/chunks/{input-CuRK9Vbz.js → input-KXI7o06g.js} +7 -7
  13. package/dist/chunks/input-KXI7o06g.js.map +1 -0
  14. package/dist/chunks/{input-files-B8j6Pb_M.js → input-files-CnBNlJo0.js} +2 -2
  15. package/dist/chunks/{input-files-B8j6Pb_M.js.map → input-files-CnBNlJo0.js.map} +1 -1
  16. package/dist/chunks/{picker-SJXnHwsj.js → picker-DagDe9OH.js} +17 -16
  17. package/dist/chunks/picker-DagDe9OH.js.map +1 -0
  18. package/dist/chunks/select-C-1U-ujV.js +368 -0
  19. package/dist/chunks/select-C-1U-ujV.js.map +1 -0
  20. package/dist/chunks/table-Cx__DvpN.js +154 -0
  21. package/dist/chunks/table-Cx__DvpN.js.map +1 -0
  22. package/dist/context-menu/index.js +1 -1
  23. package/dist/date-input/index.js +1 -1
  24. package/dist/date-time-input/index.js +1 -1
  25. package/dist/drop-zone/index.js +1 -1
  26. package/dist/image/index.js +2 -2
  27. package/dist/input/Input.d.ts +2 -2
  28. package/dist/input/Input.d.ts.map +1 -1
  29. package/dist/input/index.js +1 -1
  30. package/dist/input-date-time/index.js +1 -1
  31. package/dist/input-file/index.js +1 -1
  32. package/dist/input-files/index.js +1 -1
  33. package/dist/input-image/index.js +1 -1
  34. package/dist/input-search/index.js +1 -1
  35. package/dist/layout-picker/index.js +1 -1
  36. package/dist/listbox/index.js +1 -1
  37. package/dist/multi-select/index.js +171 -161
  38. package/dist/multi-select/index.js.map +1 -1
  39. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts +2 -0
  40. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts.map +1 -1
  41. package/dist/multi-select/ui/MultiSelect.d.ts +3 -0
  42. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  43. package/dist/multi-select/ui/MultiSelectCore.d.ts +1 -1
  44. package/dist/multi-select/ui/MultiSelectCore.d.ts.map +1 -1
  45. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
  46. package/dist/multi-select/ui/ODataMultiSelect.d.ts +5 -2
  47. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
  48. package/dist/multi-select/ui/SerializableMultiSelect.d.ts +3 -1
  49. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
  50. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +4 -0
  51. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -1
  52. package/dist/period-select/PeriodSelect.d.ts +2 -0
  53. package/dist/period-select/PeriodSelect.d.ts.map +1 -1
  54. package/dist/period-select/index.js.map +1 -1
  55. package/dist/picker/PickerField.d.ts +1 -1
  56. package/dist/picker/PickerField.d.ts.map +1 -1
  57. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  58. package/dist/picker/index.js +1 -1
  59. package/dist/picker/types.d.ts +2 -0
  60. package/dist/picker/types.d.ts.map +1 -1
  61. package/dist/preset-range-date-input/index.js +1 -1
  62. package/dist/preset-select/PresetSelect.d.ts +2 -0
  63. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  64. package/dist/preset-select/index.js +1 -1
  65. package/dist/preset-select/index.js.map +1 -1
  66. package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -1
  67. package/dist/select/ODataSelect.d.ts +3 -1
  68. package/dist/select/ODataSelect.d.ts.map +1 -1
  69. package/dist/select/Select.d.ts +3 -0
  70. package/dist/select/Select.d.ts.map +1 -1
  71. package/dist/select/SerializableSelect.d.ts +3 -1
  72. package/dist/select/SerializableSelect.d.ts.map +1 -1
  73. package/dist/select/index.js +1 -1
  74. package/dist/simple-table/index.js +1 -1
  75. package/dist/slider/index.js +2 -2
  76. package/dist/state-select/StateSelect.d.ts +3 -1
  77. package/dist/state-select/StateSelect.d.ts.map +1 -1
  78. package/dist/state-select/index.js +10 -8
  79. package/dist/state-select/index.js.map +1 -1
  80. package/dist/table/Table.d.ts +10 -1
  81. package/dist/table/Table.d.ts.map +1 -1
  82. package/dist/table/index.js +1 -1
  83. package/dist/table-editor/index.js +1 -1
  84. package/dist/table-sorting/index.js +1 -1
  85. package/dist/tag-input/index.js +1 -1
  86. package/dist/text-editor/index.js +1 -1
  87. package/dist/textarea/index.js +1 -1
  88. package/dist/tree-select/ODataTreeMultiSelect.d.ts +3 -1
  89. package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
  90. package/dist/tree-select/ODataTreeSelect.d.ts +3 -1
  91. package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -1
  92. package/dist/tree-select/TreeMultiSelect.d.ts +4 -1
  93. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  94. package/dist/tree-select/TreePickerBase.d.ts +3 -1
  95. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  96. package/dist/tree-select/TreeSelect.d.ts +4 -1
  97. package/dist/tree-select/TreeSelect.d.ts.map +1 -1
  98. package/dist/tree-select/index.js +271 -259
  99. package/dist/tree-select/index.js.map +1 -1
  100. package/dist/tree-table/index.js +1 -1
  101. package/package.json +1 -1
  102. package/storybook-static/assets/{Badge-Exgo2liR.js → Badge-DxGi2POg.js} +1 -1
  103. package/storybook-static/assets/{Badge.stories-BSZPB2hP.js → Badge.stories-D6Em1fN8.js} +1 -1
  104. package/storybook-static/assets/{BadgeList-vXAflISJ.js → BadgeList-DemBuxUQ.js} +1 -1
  105. package/storybook-static/assets/{BarcodeScannerDialog.stories-B5JJTqxe.js → BarcodeScannerDialog.stories-Bxnb0wH3.js} +1 -1
  106. package/storybook-static/assets/{Button-W5ftYk1w.js → Button-9vGUTM3m.js} +1 -1
  107. package/storybook-static/assets/{Button-BzRtAjtM.js → Button-dlGIhkja.js} +1 -1
  108. package/storybook-static/assets/{Button.stories-DcuEJMqp.js → Button.stories-WOE1_ovM.js} +1 -1
  109. package/storybook-static/assets/{CalendarView-C8taheM_.js → CalendarView-Co2EiQf9.js} +1 -1
  110. package/storybook-static/assets/{CheckBox-Cahw6EU8.js → CheckBox-CwJshQX2.js} +1 -1
  111. package/storybook-static/assets/{CheckBox-C-EWY4_-.js → CheckBox-Dpg2QsvS.js} +1 -1
  112. package/storybook-static/assets/{CheckBox.stories-DL49eu_s.js → CheckBox.stories-K8wng7-q.js} +1 -1
  113. package/storybook-static/assets/{Color-6AOWCN3U-B0iuSBAP.js → Color-6AOWCN3U-D-64SqRn.js} +1 -1
  114. package/storybook-static/assets/{ContextMenu-k1Mubm6h.js → ContextMenu-C1zzFMni.js} +1 -1
  115. package/storybook-static/assets/{ContextMenu-DqLKk-wW.js → ContextMenu-DbmUWR4I.js} +1 -1
  116. package/storybook-static/assets/{ContextMenu.stories-CNnrfTxO.js → ContextMenu.stories-D0tclMo1.js} +1 -1
  117. package/storybook-static/assets/{DateInput-CgBBiqYK.js → DateInput-BDxg1E80.js} +1 -1
  118. package/storybook-static/assets/{DateInput-NSuuc0Vu.js → DateInput-DxpENevn.js} +1 -1
  119. package/storybook-static/assets/{DateInput.stories-eWY9Pqwp.js → DateInput.stories-De_AOkrK.js} +1 -1
  120. package/storybook-static/assets/{DateRangePresetSelect-Ch6rsktY.js → DateRangePresetSelect-CD7jNInU.js} +1 -1
  121. package/storybook-static/assets/{DateRangePresetSelect-DibXoV_U.js → DateRangePresetSelect-CD8qu2LL.js} +1 -1
  122. package/storybook-static/assets/{DateRangePresetSelect.stories-B8yndfPd.js → DateRangePresetSelect.stories-phHkk3Q1.js} +1 -1
  123. package/storybook-static/assets/{DeprecatedMultiSelect-1K4GSVRr.js → DeprecatedMultiSelect-B4VEjiTj.js} +1 -1
  124. package/storybook-static/assets/{DeprecatedMultiSelect-D8BCr3qw.js → DeprecatedMultiSelect-Bdv505U3.js} +1 -1
  125. package/storybook-static/assets/{DeprecatedMultiSelect.stories-DH7fIprL.js → DeprecatedMultiSelect.stories-DdPzDJjx.js} +1 -1
  126. package/storybook-static/assets/{Detail-CzQ7DLhL.js → Detail-BoazSWw_.js} +1 -1
  127. package/storybook-static/assets/{Detail.stories-DzmSAGkt.js → Detail.stories-Cc9fEkdx.js} +1 -1
  128. package/storybook-static/assets/{Dialog-Cm7gLcJI.js → Dialog-VJ62BLtp.js} +1 -1
  129. package/storybook-static/assets/{Dialog-DEDDnDtQ.js → Dialog-ieE9mpAU.js} +1 -1
  130. package/storybook-static/assets/{Dialog.stories-BzvBjaiX.js → Dialog.stories-CUyAMGoD.js} +1 -1
  131. package/storybook-static/assets/{Disclosure-Bpji7KuP.js → Disclosure-BP8VhRCA.js} +1 -1
  132. package/storybook-static/assets/{Disclosure.stories-Bwuzf5fl.js → Disclosure.stories-DwIo-o1J.js} +1 -1
  133. package/storybook-static/assets/{DisclosureGroup-bCpsF5YE.js → DisclosureGroup-LjgDW-Z6.js} +1 -1
  134. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DQRIOLjc.js → DocsRenderer-JROSPFPF-BjRaiNDG.js} +1 -1
  135. package/storybook-static/assets/{DropZone-Diu_Hlgs.js → DropZone-BMT4jv2L.js} +1 -1
  136. package/storybook-static/assets/{DropZone-qvCLdJmm.js → DropZone-Dg3GZxY8.js} +1 -1
  137. package/storybook-static/assets/{DropZone.stories-DHgexefI.js → DropZone.stories-szOGIPHx.js} +1 -1
  138. package/storybook-static/assets/{DropdownMenu-Bl2IPF3Q.js → DropdownMenu-B0EI5ePH.js} +1 -1
  139. package/storybook-static/assets/{ExpandableActionPanel-B3iQGrX8.js → ExpandableActionPanel-D_qy2JID.js} +1 -1
  140. package/storybook-static/assets/{ExpandableActionPanel.stories-DRnMPxSP.js → ExpandableActionPanel.stories-wdmlBDmK.js} +1 -1
  141. package/storybook-static/assets/{Flex-CrWmRoxc.js → Flex-DYXuexPG.js} +1 -1
  142. package/storybook-static/assets/{Flex.stories-Db20If9k.js → Flex.stories-DH1BReS-.js} +1 -1
  143. package/storybook-static/assets/{FlexContainer-YYPiKtpT.js → FlexContainer-DO3X5f_1.js} +1 -1
  144. package/storybook-static/assets/{FlexItem-CXY6tvoB.js → FlexItem-BE_4juAd.js} +1 -1
  145. package/storybook-static/assets/{FloatingPopover-DSRofmW2.js → FloatingPopover-DHxMCBdS.js} +1 -1
  146. package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +15 -0
  147. package/storybook-static/assets/{Grid-CUmJniwF.js → Grid-0NnWfTJ7.js} +1 -1
  148. package/storybook-static/assets/{Grid-Ad2q9giD.js → Grid-ChS0GzNg.js} +1 -1
  149. package/storybook-static/assets/{Grid.stories-CsohhjMJ.js → Grid.stories-ClZzgSfZ.js} +1 -1
  150. package/storybook-static/assets/{GridContainer-DfZnU_h-.js → GridContainer-BHSfIiml.js} +1 -1
  151. package/storybook-static/assets/{ImageCropper.stories-Bdg7E1B6.js → ImageCropper.stories-Cf5ogf7p.js} +1 -1
  152. package/storybook-static/assets/{ImageRenderer-DEsg7Nf5.js → ImageRenderer-CsN1-IP6.js} +1 -1
  153. package/storybook-static/assets/{ImageRenderer.stories-C2uPYFbK.js → ImageRenderer.stories-DIC-UR-l.js} +1 -1
  154. package/storybook-static/assets/{ImageView.stories-qFIo_3jG.js → ImageView.stories-DT6QZR-1.js} +1 -1
  155. package/storybook-static/assets/{ImageViewer.stories-D6RoxWRG.js → ImageViewer.stories-DxpCKbpk.js} +2 -2
  156. package/storybook-static/assets/{ImageViewerRuntime-DEVRfnpp.js → ImageViewerRuntime-COhNh4_y.js} +1 -1
  157. package/storybook-static/assets/{Input-CXSVW4qb.js → Input-BJ3sPHt1.js} +1 -1
  158. package/storybook-static/assets/Input-D2eqioLp.js +3 -0
  159. package/storybook-static/assets/{Input.stories-CKUo8mda.js → Input.stories-MtAx6H2F.js} +1 -1
  160. package/storybook-static/assets/{InputDateTime-CBgevl2k.js → InputDateTime-CNNqhoo6.js} +1 -1
  161. package/storybook-static/assets/{InputDateTime.stories-Dc_yRirT.js → InputDateTime.stories-DT3CvxRy.js} +1 -1
  162. package/storybook-static/assets/{InputFile-BX9qIipq.js → InputFile-DiI_0QV5.js} +1 -1
  163. package/storybook-static/assets/{InputFile-VkGuvstd.js → InputFile-RfdomZEH.js} +1 -1
  164. package/storybook-static/assets/{InputFile.stories-VernHNAn.js → InputFile.stories-CiqGBnkS.js} +1 -1
  165. package/storybook-static/assets/{InputFiles-CRFuNd-6.js → InputFiles-CBrPDNlV.js} +1 -1
  166. package/storybook-static/assets/{InputFiles-BpSb2G11.js → InputFiles-CgyVXpI1.js} +1 -1
  167. package/storybook-static/assets/{InputFiles.stories-CfrGV2lA.js → InputFiles.stories-QHNxJjiV.js} +1 -1
  168. package/storybook-static/assets/{InputFilesList-BoL4jQmC.js → InputFilesList-BEIBTAEK.js} +1 -1
  169. package/storybook-static/assets/{InputImage-BKfXCZHx.js → InputImage-BBJr8TWl.js} +1 -1
  170. package/storybook-static/assets/{InputImage-BcUm7aKp.js → InputImage-vXbhnE46.js} +1 -1
  171. package/storybook-static/assets/{InputImage.stories-l1xnaTXn.js → InputImage.stories-VoVU0QZB.js} +1 -1
  172. package/storybook-static/assets/{InteractiveComponents-DKix-b3k.js → InteractiveComponents-CjkX3vU6.js} +5 -5
  173. package/storybook-static/assets/{InteractiveComponents.stories-CK118Tbj.js → InteractiveComponents.stories-Gc_Ju4xJ.js} +1 -1
  174. package/storybook-static/assets/{LayoutPicker-Ca57uusp.js → LayoutPicker-DwpDr_Is.js} +1 -1
  175. package/storybook-static/assets/{LayoutPicker-BqI2-D2r.js → LayoutPicker-ONnrtLDR.js} +1 -1
  176. package/storybook-static/assets/{LayoutPicker.stories-BDRBBnj-.js → LayoutPicker.stories-B-HIq6DD.js} +1 -1
  177. package/storybook-static/assets/{Listbox-lrvI9Fx9.js → Listbox-DoF5nZIP.js} +1 -1
  178. package/storybook-static/assets/{Listbox-D_Qgzkw1.js → Listbox-XIi0yHgl.js} +1 -1
  179. package/storybook-static/assets/{Listbox.stories-Djb1uju9.js → Listbox.stories-DT8FJQ3z.js} +1 -1
  180. package/storybook-static/assets/{Modal-CLZFIZH2.js → Modal-C3F4r2UA.js} +1 -1
  181. package/storybook-static/assets/{Modal-BpqYaQXu.js → Modal-Ml7EuSvu.js} +1 -1
  182. package/storybook-static/assets/{Modal.stories-DNpMq9oL.js → Modal.stories-DRwnYxst.js} +1 -1
  183. package/storybook-static/assets/{ModalManagerProvider-DMlNCo5h.js → ModalManagerProvider-CmqdB_ni.js} +1 -1
  184. package/storybook-static/assets/MultiSelect-B1QokJ3C.js +79 -0
  185. package/storybook-static/assets/{MultiSelect-C593f3VV.js → MultiSelect-CAg-L0dM.js} +1 -1
  186. package/storybook-static/assets/MultiSelect.stories-Dfh2Lp0N.js +81 -0
  187. package/storybook-static/assets/MultiSelectCore-GRGtCBO1.js +3 -0
  188. package/storybook-static/assets/{NoData-Bvl_1jH4.js → NoData-BZhNhaYV.js} +1 -1
  189. package/storybook-static/assets/{NotificationsHost-CdPm_hcB.js → NotificationsHost-BUPLrDM3.js} +1 -1
  190. package/storybook-static/assets/{NotificationsHost.stories-Bo_dwZZe.js → NotificationsHost.stories-CKbR-_nq.js} +1 -1
  191. package/storybook-static/assets/{ODataMultiSelect-BVlJ8U90.js → ODataMultiSelect-CDW0B1az.js} +1 -1
  192. package/storybook-static/assets/{ODataMultiSelect.stories-CqHpctYU.js → ODataMultiSelect.stories-BbKrxs7t.js} +1 -1
  193. package/storybook-static/assets/{ODataSelect-BCl-z6Sg.js → ODataSelect-C5G0dCnn.js} +1 -1
  194. package/storybook-static/assets/ODataSelect.stories-DcX50cyD.js +148 -0
  195. package/storybook-static/assets/{ODataTreeMultiSelect-1CrmEPOx.js → ODataTreeMultiSelect-4mTjhnlJ.js} +1 -1
  196. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B2YMNMyr.js → ODataTreeMultiSelect.stories-B-4UUg5l.js} +1 -1
  197. package/storybook-static/assets/{ODataTreeSelect-BqP9H4QH.js → ODataTreeSelect-D-wcx2OH.js} +1 -1
  198. package/storybook-static/assets/{ODataTreeSelect.stories-x_GCdGW8.js → ODataTreeSelect.stories-uB_sG4ga.js} +1 -1
  199. package/storybook-static/assets/{OneStepScroller-B1H-Yg0P.js → OneStepScroller-DQI5POnJ.js} +1 -1
  200. package/storybook-static/assets/{Option-ChGr-plg.js → Option-CrEWqsFF.js} +1 -1
  201. package/storybook-static/assets/{OptionButton-D6mT04a1.js → OptionButton-BEQ2oSPf.js} +1 -1
  202. package/storybook-static/assets/{OptionContent-CXc6K3fK.js → OptionContent-C8S7IjI3.js} +1 -1
  203. package/storybook-static/assets/{OptionContentContainer-D0p7mbft.js → OptionContentContainer-ljQts_jY.js} +1 -1
  204. package/storybook-static/assets/{PeriodSelect-Bm9WdjpG.js → PeriodSelect-BTdDU06N.js} +1 -1
  205. package/storybook-static/assets/{PeriodSelect-CpnYgcOA.js → PeriodSelect-DuqatGdk.js} +1 -1
  206. package/storybook-static/assets/{PeriodSelect.stories-4Im6GLjq.js → PeriodSelect.stories-CX4DSFJG.js} +1 -1
  207. package/storybook-static/assets/PickerField-Cgcm-Y5T.js +1 -0
  208. package/storybook-static/assets/{PickerTriggerActions-BCupttoF.js → PickerTriggerActions-DWe2uX0K.js} +1 -1
  209. package/storybook-static/assets/{Popover-CbgP8DJy.js → Popover-0QfSvwRS.js} +1 -1
  210. package/storybook-static/assets/{Popover-CCHTXorF.js → Popover-C55I0GTn.js} +1 -1
  211. package/storybook-static/assets/{Popover.stories-zZ2fYcQb.js → Popover.stories-Bgjomdgb.js} +1 -1
  212. package/storybook-static/assets/{PresetRangeDateInput-D-Xf5CL3.js → PresetRangeDateInput-C-vQa5BZ.js} +1 -1
  213. package/storybook-static/assets/{PresetRangeDateInput-cmWbFoHz.js → PresetRangeDateInput-Cai5fvRb.js} +1 -1
  214. package/storybook-static/assets/{PresetRangeDateInput.stories-C3VxU77P.js → PresetRangeDateInput.stories-CWtIukRG.js} +1 -1
  215. package/storybook-static/assets/{PresetSelect-BmTJNeUt.js → PresetSelect-HqtmoRLb.js} +2 -2
  216. package/storybook-static/assets/{README-DVPc9Io_.js → README-2lBx3R6g.js} +1 -1
  217. package/storybook-static/assets/{README-CXLnU8PY.js → README-B1IMnjhg.js} +1 -1
  218. package/storybook-static/assets/{README-Cu9QJjVK.js → README-B41_J33v.js} +1 -1
  219. package/storybook-static/assets/{README-Iwf47F8s.js → README-B5Lc1yT4.js} +1 -1
  220. package/storybook-static/assets/{README-Dv4LnFqu.js → README-B5wBU6mA.js} +1 -1
  221. package/storybook-static/assets/{README-DFF21yas.js → README-B8RrtmaZ.js} +1 -1
  222. package/storybook-static/assets/{README-T35eDlrl.js → README-BEypAdTE.js} +1 -1
  223. package/storybook-static/assets/{README-BRE26E-6.js → README-BFjx8Jxa.js} +1 -1
  224. package/storybook-static/assets/{README-UcG-T3oc.js → README-BHrzFd3i.js} +1 -1
  225. package/storybook-static/assets/{README-C_zVigpw.js → README-BNLmyDfy.js} +1 -1
  226. package/storybook-static/assets/{README-zF7TglyH.js → README-BRJHDPaP.js} +1 -1
  227. package/storybook-static/assets/{README-3VGZSgWz.js → README-BTk3TSh8.js} +1 -1
  228. package/storybook-static/assets/{README-CaZGDS4o.js → README-BUKlvu1v.js} +1 -1
  229. package/storybook-static/assets/{README-BW8ukk_3.js → README-BgbNoj4_.js} +1 -1
  230. package/storybook-static/assets/{README-DcMAIy3x.js → README-BhvWyeL_.js} +1 -1
  231. package/storybook-static/assets/{README-BZW-Ku8G.js → README-Bk6x-7we.js} +1 -1
  232. package/storybook-static/assets/{README-BcSaq4c4.js → README-BkFTTVE2.js} +1 -1
  233. package/storybook-static/assets/{README-IkL3xuvr.js → README-Bl1rJEQE.js} +1 -1
  234. package/storybook-static/assets/{README-jg6CIybs.js → README-BqMpFJKP.js} +1 -1
  235. package/storybook-static/assets/{README-BsvaCxyJ.js → README-Brd9di5k.js} +1 -1
  236. package/storybook-static/assets/{README-Bl2m1JMK.js → README-BzIE9gSk.js} +1 -1
  237. package/storybook-static/assets/{README-DEOe-D4O.js → README-C1BajdmC.js} +1 -1
  238. package/storybook-static/assets/{README-DXajBW2j.js → README-C2xdMez4.js} +1 -1
  239. package/storybook-static/assets/{README-CZciBX1A.js → README-C6ryhIOV.js} +1 -1
  240. package/storybook-static/assets/{README-vCy3YlCq.js → README-C702dbsS.js} +1 -1
  241. package/storybook-static/assets/{README-DkgiAGPo.js → README-C8oftQ5c.js} +1 -1
  242. package/storybook-static/assets/{README-Bfp-2y9L.js → README-CM5yZ6jf.js} +1 -1
  243. package/storybook-static/assets/{README-B3bdpv3F.js → README-CUUPvXQd.js} +1 -1
  244. package/storybook-static/assets/{README-B_TP46xP.js → README-CdMmAh_G.js} +1 -1
  245. package/storybook-static/assets/{README-BfbEWAVW.js → README-CdnQbIDn.js} +1 -1
  246. package/storybook-static/assets/{README-D7IHIZJQ.js → README-ClH6EKpO.js} +1 -1
  247. package/storybook-static/assets/{README-5uy1ulgc.js → README-CxEn3Q3j.js} +1 -1
  248. package/storybook-static/assets/{README-CLTYPp6T.js → README-CxMmicr4.js} +1 -1
  249. package/storybook-static/assets/{README-DnkVTJ7s.js → README-CxsbsDff.js} +1 -1
  250. package/storybook-static/assets/{README-BiyBf-O3.js → README-DAozVWEl.js} +1 -1
  251. package/storybook-static/assets/{README-BkJ_PjJk.js → README-DBpH2nf1.js} +1 -1
  252. package/storybook-static/assets/{README-HRwASuVm.js → README-DF3qw7Jo.js} +1 -1
  253. package/storybook-static/assets/{README-BeMdGWkW.js → README-DFGUcAOx.js} +1 -1
  254. package/storybook-static/assets/{README-EmDsFxzc.js → README-DUShQLyj.js} +1 -1
  255. package/storybook-static/assets/{README-CnX5IOsQ.js → README-DfVaZ9rz.js} +1 -1
  256. package/storybook-static/assets/{README-DEtA9vXg.js → README-DitsKP8x.js} +1 -1
  257. package/storybook-static/assets/{README-CwqRXSIJ.js → README-Dk7syFq-.js} +1 -1
  258. package/storybook-static/assets/{README-BC4nu9of.js → README-DlBBM40-.js} +1 -1
  259. package/storybook-static/assets/{README-CjwMWiHf.js → README-DycS0KDV.js} +1 -1
  260. package/storybook-static/assets/{README-BMXu-jQk.js → README-QWeHqOh2.js} +1 -1
  261. package/storybook-static/assets/{README-xMu2rAZ4.js → README-QZrJnhYv.js} +1 -1
  262. package/storybook-static/assets/{README-k2-wWcjY.js → README-RGQ7HMZR.js} +1 -1
  263. package/storybook-static/assets/{README-B7kN5fdq.js → README-SafL9Bz5.js} +1 -1
  264. package/storybook-static/assets/{README-lHhj1ioe.js → README-UC0a4Wh9.js} +1 -1
  265. package/storybook-static/assets/{README-C4vu077M.js → README-_K214jGV.js} +1 -1
  266. package/storybook-static/assets/{README-Bf9aqOSG.js → README-eRuOqnaA.js} +1 -1
  267. package/storybook-static/assets/{README-DLtEU6xV.js → README-kvlO41U2.js} +1 -1
  268. package/storybook-static/assets/{README-Bc63jJ_g.js → README-mxJzt2Xo.js} +1 -1
  269. package/storybook-static/assets/{RadioButton-Cy_jQtud.js → RadioButton-BKsBk3--.js} +1 -1
  270. package/storybook-static/assets/{RadioButton-BBfQWcy3.js → RadioButton-CsM-RT0A.js} +1 -1
  271. package/storybook-static/assets/{RadioButton.stories-9V4bon68.js → RadioButton.stories-D5PGiHj5.js} +1 -1
  272. package/storybook-static/assets/{RadioGroup-TwFpisuE.js → RadioGroup-B3bLu8Qg.js} +1 -1
  273. package/storybook-static/assets/{RadioGroup-BndgLwX8.js → RadioGroup-BZY_jeje.js} +1 -1
  274. package/storybook-static/assets/{RadioGroup.stories-DJLxesgz.js → RadioGroup.stories-DMfcZFp0.js} +1 -1
  275. package/storybook-static/assets/{Scrollable-DtB02dAG.js → Scrollable-DLyQwImF.js} +1 -1
  276. package/storybook-static/assets/{Scrollable-pBI6H_we.js → Scrollable-DdXQmkMU.js} +1 -1
  277. package/storybook-static/assets/{Scrollable.stories-CahJ5rFA.js → Scrollable.stories-Du5joHAp.js} +1 -1
  278. package/storybook-static/assets/Select-8PYQeQRR.js +66 -0
  279. package/storybook-static/assets/Select-CT_wwcDN.js +12 -0
  280. package/storybook-static/assets/Select.stories-DIqia2Hb.js +86 -0
  281. package/storybook-static/assets/{Separator-BdOz35ux.js → Separator-CelBAATq.js} +1 -1
  282. package/storybook-static/assets/{Separator-BQlVHMcy.js → Separator-DJ93-Cvq.js} +1 -1
  283. package/storybook-static/assets/{Separator.stories-DRmR0Kda.js → Separator.stories-DBEDpiqL.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect-ClSz_VvD.js → SerializableSelect-C-00d6wC.js} +1 -1
  285. package/storybook-static/assets/SerializableSelect.stories-CP7fJBNa.js +73 -0
  286. package/storybook-static/assets/{ShimmerText-CuhrU7uk.js → ShimmerText-qA7CslLE.js} +1 -1
  287. package/storybook-static/assets/{ShimmerText.stories-Djb6DvbN.js → ShimmerText.stories-CiGIbhCm.js} +1 -1
  288. package/storybook-static/assets/{SingleDateTimeInput-hC1Ft3qs.js → SingleDateTimeInput-B7tnYWQl.js} +1 -1
  289. package/storybook-static/assets/{SingleDateTimeInput-C4jzvJ05.js → SingleDateTimeInput-DJ2vRS9H.js} +1 -1
  290. package/storybook-static/assets/{SingleDateTimeInput.stories-D-HmSpnz.js → SingleDateTimeInput.stories-BK59HKLf.js} +1 -1
  291. package/storybook-static/assets/{Slider-u0qKNrgI.js → Slider-CXcIxUE3.js} +1 -1
  292. package/storybook-static/assets/{Slider-WLUfmHyw.js → Slider-Cm6kd77G.js} +1 -1
  293. package/storybook-static/assets/{Slider.stories-CX8fS5Ax.js → Slider.stories-BuhFWvUX.js} +1 -1
  294. package/storybook-static/assets/{SliderInput-BEirf0Ys.js → SliderInput-DI2h4X8P.js} +1 -1
  295. package/storybook-static/assets/{SliderInput-ibTyal5l.js → SliderInput-DpmYS5Zb.js} +1 -1
  296. package/storybook-static/assets/{SliderInput.stories-xuycnRN_.js → SliderInput.stories-CLdLS0_8.js} +1 -1
  297. package/storybook-static/assets/{Sortable-p0kUHa8E.js → Sortable-CpjAZLxn.js} +1 -1
  298. package/storybook-static/assets/{Sortable.stories-BdCtmfnr.js → Sortable.stories-Ck2MHBoR.js} +1 -1
  299. package/storybook-static/assets/{Splitter-BzAg1cZ0.js → Splitter-Cpk_5dTf.js} +1 -1
  300. package/storybook-static/assets/{Splitter.stories-C5zZ4lHf.js → Splitter.stories-BIf9NNWq.js} +1 -1
  301. package/storybook-static/assets/{StateSelect-CyjHfKNv.js → StateSelect-BznE9WIu.js} +1 -1
  302. package/storybook-static/assets/StateSelect-C5tnrhWT.js +4 -0
  303. package/storybook-static/assets/{StateSelect.stories-D94g21N9.js → StateSelect.stories-DLvSnAcF.js} +1 -1
  304. package/storybook-static/assets/{StatusIndicator-ylfiroPh.js → StatusIndicator-vJAPPq2m.js} +1 -1
  305. package/storybook-static/assets/{StatusIndicator.stories-BB7y4KGW.js → StatusIndicator.stories-B7PGK2_C.js} +1 -1
  306. package/storybook-static/assets/{StringToggle.stories-BwuTZAGa.js → StringToggle.stories-DBpxJZL-.js} +1 -1
  307. package/storybook-static/assets/{Switch-BXWiUOXs.js → Switch-BkTvYjyQ.js} +1 -1
  308. package/storybook-static/assets/{Switch-DRLWRp0P.js → Switch-DlRrk6o7.js} +1 -1
  309. package/storybook-static/assets/{Switch.stories-taC_bi5a.js → Switch.stories-BtctkC2W.js} +1 -1
  310. package/storybook-static/assets/Table-xOdM6spm.js +219 -0
  311. package/storybook-static/assets/Table.stories-FORIU5CX.js +184 -0
  312. package/storybook-static/assets/{TableEditor.stories-CG0ULNok.js → TableEditor.stories-GU46gl20.js} +1 -1
  313. package/storybook-static/assets/{Tabs-BYp06IN2.js → Tabs-Cg_IYAXs.js} +1 -1
  314. package/storybook-static/assets/{Tabs.stories-BCkUYsqs.js → Tabs.stories-2cS0B94o.js} +1 -1
  315. package/storybook-static/assets/{TabsBox-DBm2a1iA.js → TabsBox-Dz3AsaoR.js} +1 -1
  316. package/storybook-static/assets/{TagInput-D9gedxBU.js → TagInput-CCTgbRhQ.js} +1 -1
  317. package/storybook-static/assets/{TagInput.stories-6eOGQ16t.js → TagInput.stories-CevhCeXY.js} +1 -1
  318. package/storybook-static/assets/{Text-CcgH9LXI.js → Text-CDCeYwIB.js} +1 -1
  319. package/storybook-static/assets/{Textarea-DXOTj2Y7.js → Textarea-Ba4MyNoY.js} +1 -1
  320. package/storybook-static/assets/{Textarea-aGrLpQXu.js → Textarea-CNsrFSip.js} +1 -1
  321. package/storybook-static/assets/{Textarea.stories-BwqxG2lk.js → Textarea.stories-laVFWVXL.js} +1 -1
  322. package/storybook-static/assets/{TimePanel-DroAbbvD.js → TimePanel-Ddy67nzH.js} +1 -1
  323. package/storybook-static/assets/{TimePanel.stories-DgU6ia4A.js → TimePanel.stories-OLefy0XD.js} +1 -1
  324. package/storybook-static/assets/{Toggle-BUSzQ1ww.js → Toggle-BGbyfmSW.js} +1 -1
  325. package/storybook-static/assets/{Toggle-B7MbU9HB.js → Toggle-BlCBtQd1.js} +1 -1
  326. package/storybook-static/assets/{Toggle.stories-BYU9hS62.js → Toggle.stories-BjeTDL90.js} +1 -1
  327. package/storybook-static/assets/TreeMultiSelect-BJnAzsFO.js +1 -0
  328. package/storybook-static/assets/TreeMultiSelect-ZVSLdnCU.js +22 -0
  329. package/storybook-static/assets/TreeMultiSelect.stories-BJOtdIDe.js +68 -0
  330. package/storybook-static/assets/TreePickerBase-BQKfhufH.js +76 -0
  331. package/storybook-static/assets/TreeSelect-BSr4FMlq.js +1 -0
  332. package/storybook-static/assets/TreeSelect-DSHQjGD1.js +19 -0
  333. package/storybook-static/assets/TreeSelect.stories-GRcEv-kN.js +40 -0
  334. package/storybook-static/assets/{TreeTable-AIcYVdfl.js → TreeTable-CzmxD2ee.js} +1 -1
  335. package/storybook-static/assets/{TreeTable.stories-BKbbLMK7.js → TreeTable.stories-35ufhVh1.js} +1 -1
  336. package/storybook-static/assets/{array-D-_yMMUK-DnJ_b27D.js → array-D-_yMMUK-BBmW5vUr.js} +1 -1
  337. package/storybook-static/assets/{blocks-Bdsl8TP-.js → blocks-SX-KK9Lg.js} +3 -3
  338. package/storybook-static/assets/{check-DGqyuB4O.js → check-BYM7OgKl.js} +1 -1
  339. package/storybook-static/assets/{chevron-down-BykqjXRq.js → chevron-down-Mu7usNfR.js} +1 -1
  340. package/storybook-static/assets/{chevron-left-Z5uCO076.js → chevron-left-CiOR-CGA.js} +1 -1
  341. package/storybook-static/assets/{chevron-right-C8yfwmkk.js → chevron-right-5Rrk5UhO.js} +1 -1
  342. package/storybook-static/assets/{chunk-W22LQPXL-hfBk2z5K.js → chunk-W22LQPXL-Cj8Y9DHq.js} +1 -1
  343. package/storybook-static/assets/{circle-alert-C9sxb8DT.js → circle-alert-BXB7LSDS.js} +1 -1
  344. package/storybook-static/assets/{circle-check-BLrYJ_8h.js → circle-check-DrVuYn1Q.js} +1 -1
  345. package/storybook-static/assets/{components-xYnqEbBt.js → components-BEDJAYMp.js} +3 -3
  346. package/storybook-static/assets/{contextMenu-C-b4jBpY.js → contextMenu-BaB_e0Tl.js} +1 -1
  347. package/storybook-static/assets/{download-g1fk8W6J.js → download-W-Vr_TI7.js} +1 -1
  348. package/storybook-static/assets/{floating-ui.react-cCWtY5RA.js → floating-ui.react-BTEwHffF.js} +1 -1
  349. package/storybook-static/assets/{formatMultiSelectOptionCount-xGq1uM2H.js → formatMultiSelectOptionCount-BxXwE0wd.js} +1 -1
  350. package/storybook-static/assets/{formatters-DVE1YVNQ-YIdRxgw-.js → formatters-DVE1YVNQ-CJCkXjuI.js} +1 -1
  351. package/storybook-static/assets/{foundationApi-Ci5vPKh_.js → foundationApi-BcoJ1zeX.js} +1 -1
  352. package/storybook-static/assets/{foundationLib-DNlIsEyf.js → foundationLib-B2kQ07LT.js} +1 -1
  353. package/storybook-static/assets/{hooks-XqeLihmr.js → hooks-BgMXxXbY.js} +1 -1
  354. package/storybook-static/assets/{iframe-ltYEol2F.js → iframe-CU98mtpe.js} +3 -3
  355. package/storybook-static/assets/iframe-DaZCH1M-.js +1 -0
  356. package/storybook-static/assets/{info-CBSXRv7d.js → info-BhHmytIH.js} +1 -1
  357. package/storybook-static/assets/{odata-Dd_3_5NS.js → odata-yWIAioh9.js} +1 -1
  358. package/storybook-static/assets/{odataStoryFixtures-3lOfs9T6.js → odataStoryFixtures-CnZ_YrUb.js} +1 -1
  359. package/storybook-static/assets/{react-BxWB81Qy.js → react-C2mSveWL.js} +1 -1
  360. package/storybook-static/assets/{refresh-cw-FKHfW9eG.js → refresh-cw-D8_L8K4Y.js} +1 -1
  361. package/storybook-static/assets/{settings-2-Cz1PtqGa.js → settings-2-jWGaWGT0.js} +1 -1
  362. package/storybook-static/assets/{sortable-BelHSus7.js → sortable-BteEe6X0.js} +1 -1
  363. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-gGot_qSq.js → syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js} +1 -1
  364. package/storybook-static/assets/{trash-2-BT2kW3r-.js → trash-2-CwmbYA8i.js} +1 -1
  365. package/storybook-static/assets/{triangle-alert-CPiJJHYc.js → triangle-alert-TRLt6Woa.js} +1 -1
  366. package/storybook-static/assets/{useODataSelectBase-bPN0T_Xm.js → useODataSelectBase-BxHmAh7D.js} +1 -1
  367. package/storybook-static/assets/{useODataTreeData-CIpE4LZu.js → useODataTreeData-dSt1HJsq.js} +1 -1
  368. package/storybook-static/assets/{usePickerDefaultFilter-ien2ZY7g.js → usePickerDefaultFilter-Djn1liy6.js} +1 -1
  369. package/storybook-static/assets/{usePickerQuery-OTz4Oze6.js → usePickerQuery-ByBt1NRd.js} +1 -1
  370. package/storybook-static/assets/{usePickerTriggerController-vNC5e_t0.js → usePickerTriggerController-CqdXiV2q.js} +2 -2
  371. package/storybook-static/assets/{x-BdAuXjBq.js → x-BPRzfyys.js} +1 -1
  372. package/storybook-static/iframe.html +2 -2
  373. package/storybook-static/index.json +1 -1
  374. package/storybook-static/project.json +1 -1
  375. package/dist/chunks/base-table-BMesCx6H.js.map +0 -1
  376. package/dist/chunks/input-CuRK9Vbz.js.map +0 -1
  377. package/dist/chunks/picker-SJXnHwsj.js.map +0 -1
  378. package/dist/chunks/select--oIrv7SC.js +0 -357
  379. package/dist/chunks/select--oIrv7SC.js.map +0 -1
  380. package/dist/chunks/table-OvvWkKfy.js +0 -141
  381. package/dist/chunks/table-OvvWkKfy.js.map +0 -1
  382. package/storybook-static/assets/FormattedTableCell-B-t0D2oX.js +0 -15
  383. package/storybook-static/assets/Input-b2F0zrLw.js +0 -3
  384. package/storybook-static/assets/MultiSelect-DmC3DaMc.js +0 -76
  385. package/storybook-static/assets/MultiSelect.stories-R6JTKnFI.js +0 -64
  386. package/storybook-static/assets/MultiSelectCore-BaRmQrD-.js +0 -3
  387. package/storybook-static/assets/ODataSelect.stories-Cm-Xkq40.js +0 -148
  388. package/storybook-static/assets/PickerField-w1JCZyzA.js +0 -1
  389. package/storybook-static/assets/Select-BOnv-Uuv.js +0 -63
  390. package/storybook-static/assets/Select-CClfxa48.js +0 -12
  391. package/storybook-static/assets/Select.stories-C0X5pvUk.js +0 -69
  392. package/storybook-static/assets/SerializableSelect.stories-DozN_Quy.js +0 -73
  393. package/storybook-static/assets/StateSelect-bHA1Vf6z.js +0 -4
  394. package/storybook-static/assets/Table-BYiIQfjA.js +0 -197
  395. package/storybook-static/assets/Table.stories-B9u81cAN.js +0 -178
  396. package/storybook-static/assets/TreeMultiSelect-BhFYUbr0.js +0 -1
  397. package/storybook-static/assets/TreeMultiSelect-CZIyMaIZ.js +0 -20
  398. package/storybook-static/assets/TreeMultiSelect.stories-DG_mdSkQ.js +0 -60
  399. package/storybook-static/assets/TreePickerBase-CbULuQpp.js +0 -76
  400. package/storybook-static/assets/TreeSelect-CMSolQHr.js +0 -17
  401. package/storybook-static/assets/TreeSelect-Cu1BsepL.js +0 -1
  402. package/storybook-static/assets/TreeSelect.stories-B2J0N4ke.js +0 -32
  403. package/storybook-static/assets/iframe-TsWsvoxA.js +0 -1
@@ -1,15 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./circle-alert-C9sxb8DT.js";import{n as i,t as a}from"./circle-check-BLrYJ_8h.js";import{i as o,n as s,r as c,t as l}from"./info-CBSXRv7d.js";import{n as u,r as d,t as f}from"./sortable-BelHSus7.js";import{n as p}from"./iframe-ltYEol2F.js";import{C as m,S as h,b as g,c as _,f as v,l as ee,m as te,p as ne,u as re,v as y,w as b,x as ie,y as ae}from"./odata-Dd_3_5NS.js";import{a as x,i as S,n as oe}from"./utils-tg3ibbzi.js";import{a as C,i as se,t as w}from"./array-D-_yMMUK-DnJ_b27D.js";import{h as T,l as E,y as D}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{i as ce,n as le,r as ue,t as de}from"./NoData-Bvl_1jH4.js";import{n as fe,t as pe}from"./GridContainer-DfZnU_h-.js";import{c as O,m as k,n as me,o as A,p as he,r as j}from"./hooks-XqeLihmr.js";import{i as M,r as ge}from"./useTable-CK68Q4S4.js";import{n as N,t as _e}from"./Scrollable-DtB02dAG.js";import{n as ve,t as ye}from"./ContextMenu-DqLKk-wW.js";import{At as P,Mt as F}from"./tableFeatures-Dx3U-F9E.js";var I,L,be,xe,Se,Ce,we,R;function Te(){return(Te=e((()=>{I=`UMTbLD`,L=`cz57Fx`,be=`oPzAxu`,xe=`MBu26r`,Se=`_03z-1l`,Ce=`_0RqsqJ`,we=`mXkUoM`,R={stateWrapper:I,status:L,information:be,success:xe,warning:Se,error:Ce,state:we}})))()}function Ee({state:e}){switch(e){case`error`:return(0,z.jsx)(De,{});case`warning`:return(0,z.jsx)(Oe,{});case`success`:return(0,z.jsx)(ke,{});case`information`:return(0,z.jsx)(Ae,{});default:return null}}function De(){return(0,z.jsx)(c,{className:x(R.state,R.error)})}function Oe(){return(0,z.jsx)(r,{className:x(R.state,R.warning)})}function ke(){return(0,z.jsx)(a,{className:x(R.state,R.success)})}function Ae(){return(0,z.jsx)(l,{className:x(R.state,R.information)})}var z;function je(){return(je=e((()=>{S(),n(),i(),o(),s(),Te(),z=p(),Ee.__docgenInfo={description:``,methods:[],displayName:`RenderStateIcon`,props:{state:{required:!1,tsType:{name:`State`},description:``}}},De.__docgenInfo={description:``,methods:[],displayName:`ErrorIcon`},Oe.__docgenInfo={description:``,methods:[],displayName:`WarningIcon`},ke.__docgenInfo={description:``,methods:[],displayName:`SuccessIcon`},Ae.__docgenInfo={description:``,methods:[],displayName:`InformationIcon`}})))()}var Me,Ne;function Pe(){return(Pe=e((()=>{Me=`YJUVjb`,Ne={resizeHandle:Me}})))()}function Fe(e,t){let n=e.closest(`th`)?.getBoundingClientRect().width;return m(typeof n==`number`&&Number.isFinite(n)?n:t,t)}function Ie({columnId:e,className:t,minWidth:n,keyboardStep:r=Re,ariaLabel:i=`Изменить ширину колонки`,getStartWidth:a,onResize:o,onResizeEnd:s,onReset:c}){let l=n??60,u=(0,B.useRef)(0),d=(0,B.useRef)(0),f=(0,B.useRef)(0),p=(0,B.useRef)(!1),h=(0,B.useRef)(!1),g=t=>{let n=a?.(e,t)??Fe(t,l);return m(n,l)},_=e=>{(e.button===0||e.pointerType!==`mouse`)&&(p.current=!0,h.current=!1,u.current=e.clientX,d.current=g(e.currentTarget),f.current=d.current,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation())},v=t=>{if(!p.current)return;let n=m(d.current+t.clientX-u.current,l);f.current=n,h.current=!0,o(e,n),t.preventDefault(),t.stopPropagation()},ee=t=>{if(p.current){p.current=!1,h.current&&s?.(e,f.current);try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}t.preventDefault(),t.stopPropagation()}};return(0,Le.jsx)(`div`,{role:`separator`,"aria-label":i,"aria-orientation":`vertical`,tabIndex:0,onPointerDown:_,onPointerMove:v,onPointerUp:ee,onPointerCancel:ee,onKeyDown:t=>{if(t.key!==`ArrowLeft`&&t.key!==`ArrowRight`&&t.key!==`Home`)return;if(t.preventDefault(),t.stopPropagation(),t.key===`Home`){c?.(e);return}let n=t.key===`ArrowRight`?1:-1,i=g(t.currentTarget),a=m(i+n*r,l);o(e,a),s?.(e,a)},onDoubleClick:t=>{t.preventDefault(),t.stopPropagation(),c?.(e)},className:x(Ne.resizeHandle,t)})}var B,Le,Re;function ze(){return(ze=e((()=>{B=t(),g(),S(),Pe(),Le=p(),Re=8,Ie.__docgenInfo={description:``,methods:[],displayName:`TableColumnResizeHandle`,props:{columnId:{required:!0,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minWidth:{required:!1,tsType:{name:`number`},description:``},keyboardStep:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`8`,computed:!1}},ariaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Изменить ширину колонки"`,computed:!1}},getStartWidth:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, element: HTMLElement) => number`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`HTMLElement`},name:`element`}],return:{name:`number`}}},description:``},onResize:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onResizeEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onReset:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}}},description:``}}}})))()}function Be(e,t){return typeof e==`function`?e(t):e}function Ve({columnId:e,children:t,dragDisabled:n=!1,draggingClassName:r,resizeHandle:i,className:a,style:o,...s}){let{attributes:c,listeners:l,setActivatorNodeRef:u,setNodeRef:d,transform:f,isDragging:p,rect:m}=O({id:e,disabled:n}),h=p?m.current?.width:void 0,g={transform:he.Translate.toString(f),zIndex:p?`calc(var(--z-header) + 1)`:void 0,...h?{width:h,minWidth:h}:{},...o},_={attributes:c,listeners:l,setActivatorElement:u,disabled:n,isDragging:p};return(0,V.jsxs)(`th`,{...s,ref:d,className:x(a,p&&r),style:g,children:[Be(t,_),i?(0,V.jsx)(Ie,{...i}):null]})}var V;function He(){return(He=e((()=>{A(),k(),S(),ze(),V=p(),Ve.__docgenInfo={description:``,methods:[],displayName:`TableHeaderInteractionCell`,props:{columnId:{required:!0,tsType:{name:`UniqueIdentifier`},description:``},children:{required:!0,tsType:{name:`union`,raw:`ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode)`,elements:[{name:`ReactNode`},{name:`unknown`}]},description:``},dragDisabled:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},draggingClassName:{required:!1,tsType:{name:`string`},description:``},resizeHandle:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
2
- columnId: string;
3
- className?: string;
4
- minWidth?: number;
5
- keyboardStep?: number;
6
- ariaLabel?: string;
7
- getStartWidth?: (columnId: string, element: HTMLElement) => number;
8
- onResize: (columnId: string, width: number) => void;
9
- onResizeEnd?: (columnId: string, width: number) => void;
10
- onReset?: (columnId: string) => void;
11
- }`,signature:{properties:[{key:`columnId`,value:{name:`string`,required:!0}},{key:`className`,value:{name:`string`,required:!1}},{key:`minWidth`,value:{name:`number`,required:!1}},{key:`keyboardStep`,value:{name:`number`,required:!1}},{key:`ariaLabel`,value:{name:`string`,required:!1}},{key:`getStartWidth`,value:{name:`signature`,type:`function`,raw:`(columnId: string, element: HTMLElement) => number`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`HTMLElement`},name:`element`}],return:{name:`number`}},required:!1}},{key:`onResize`,value:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}},required:!0}},{key:`onResizeEnd`,value:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}},required:!1}},{key:`onReset`,value:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}},required:!1}}]}},description:``}}}})))()}function Ue(e){return{start:Array.from(new Set((e?.start??[]).filter(e=>typeof e==`string`&&e.trim().length>0))),end:[]}}function We(e,t){let n=t?.[e.id];if(typeof n==`number`&&Number.isFinite(n)&&n>0)return`${Math.floor(n)}px`;let r=v(e.columnDef)?.width??4;return typeof r==`number`&&(r=Math.max(r,4)),ae(r)}function H(e,t){let n=e.getAllLeafColumns().filter(e=>e.getIsVisible()),r=new Map(n.map(e=>[e.id,e])),i=n.map(e=>e.id),a=w(t.columnPinning.start,i),o=w(t.columnPinning.end,i),s=new Set([...a,...o]),c=[];for(let e of n)s.has(e.id)||c.push(e.id);let l=y({ids:c,order:t.columnOrder});return C([...a,...l,...o],r)}function Ge(e,t){let n=H(e,t),r=new Map(n.map(e=>[e.id,e]));return h({ids:n.map(e=>e.id),getWidth:e=>{let n=r.get(e);return n?We(n,t.columnSizing):`0px`}}).flatMap(e=>{let t=r.get(e.id);return t?[{...e,column:t}]:[]})}function Ke(e,t){let n={},r=[];for(let i of H(e,t))i.getIsPinned()===`start`&&(n[i.id]=qe(r),r.push(We(i,t.columnSizing)));return n}function qe(e){return e.length===0?`0px`:e.length===1?e[0]:`calc(${e.join(` + `)})`}function U(){return(U=e((()=>{se(),g()})))()}function Je(e){if(typeof e.id==`string`&&e.id.trim())return e.id;if(`accessorKey`in e&&typeof e.accessorKey==`string`&&e.accessorKey.trim())return e.accessorKey}function Ye(e){return`cell`in e&&e.cell!=null}function Xe(e,t){for(let n of e){if(`columns`in n&&Array.isArray(n.columns)&&n.columns.length>0){Xe(n.columns,t);continue}t(n)}}function Ze(e){let t={},n=new Set;return Xe(e,e=>{let r=Je(e);if(!r)return;Ye(e)&&n.add(r);let i=_(e);i&&(t[r]={...i,id:i.id??r,role:i.role??`dimension`,type:i.type??`string`})}),{runtimeByColumnId:E(t),customCellColumnIds:n}}function Qe(e){return!e.customCellColumnIds.has(e.columnId)&&!!e.runtimeByColumnId[e.columnId]}function $e(){return($e=e((()=>{T(),g()})))()}function et(e){return e!=null&&e!==``}function tt(e,t){return e.map(e=>({row:e,boundaryKey:t(e),cellByColumnId:new Map(e.getVisibleCells().map(e=>[e.column.id,e]))}))}function nt({rows:e,columns:t,resolveRowBoundaryKey:n=()=>`__all_rows__`,excludeColumnIds:r}){let i=t.filter(e=>!r?.has(e.id)&&v(e.columnDef)?.mergeDuplicates===!0);if(e.length===0||i.length===0)return new Map;let a=tt(e,n),o=new Map;for(let e of i){let t=-1,n,r,i=i=>{if(t!==-1){if(i-t<=1){t=-1,n=void 0,r=void 0;return}for(let n=t;n<i;n+=1){let r=a[n]?.cellByColumnId.get(e.id)?.id;r&&o.set(r,{hideContent:n>t,mergeWithNext:n<i-1})}t=-1,n=void 0,r=void 0}};for(let o=0;o<a.length;o+=1){let s=a[o],c=s?.cellByColumnId.get(e.id),l=c?.getValue();if(!c||!et(l)){i(o);continue}if(t===-1){t=o,n=l,r=s?.boundaryKey;continue}(!Object.is(r,s?.boundaryKey)||!Object.is(n,l))&&(i(o),t=o,n=l,r=s?.boundaryKey)}i(a.length)}return o}function rt(){return(rt=e((()=>{g()})))()}function it({columnOrder:e,defaultColumnOrder:t,onColumnOrderChange:n}){let[r,i]=(0,W.useState)(void 0),a=(0,W.useMemo)(()=>b(e??r??t),[e,t,r]);return{columnOrder:a,onColumnOrderChange:(0,W.useCallback)(t=>{let r=b(P(t,a));e===void 0&&i(r),n?.(r)},[e,n,a])}}var W;function at(){return(at=e((()=>{W=t(),g(),F()})))()}function ot({columnPinning:e,defaultColumnPinning:t,onColumnPinningChange:n}){let[r,i]=(0,G.useState)(void 0),a=(0,G.useMemo)(()=>Ue(e??r??t),[e,t,r]);return{columnPinning:a,onColumnPinningChange:(0,G.useCallback)(t=>{let r={start:Ue(P(t,a)).start};e===void 0&&i(r),n?.(r)},[e,n,a])}}var G;function st(){return(st=e((()=>{G=t(),F(),U()})))()}function ct({columnSizing:e,defaultColumnSizing:t,columnResizeMinWidth:n,onColumnSizingChange:r}){let[i,a]=(0,K.useState)(void 0),o=(0,K.useMemo)(()=>te(e??i??t,n),[n,e,t,i]);return{columnSizing:o,onColumnSizingChange:(0,K.useCallback)(t=>{let i=te(P(t,o),n);e===void 0&&a(i),r?.(i)},[n,e,r,o])}}var K;function lt(){return(lt=e((()=>{K=t(),g(),F()})))()}function ut({columnVisibility:e,defaultColumnVisibility:t,onColumnVisibilityChange:n}){let[r,i]=(0,q.useState)(void 0),a=(0,q.useMemo)(()=>e??r??t??{},[e,t,r]);return{columnVisibility:a,onColumnVisibilityChange:(0,q.useCallback)(t=>{let r=P(t,a);e===void 0&&i(r),n?.(r)},[e,n,a])}}var q;function dt(){return(dt=e((()=>{q=t(),F()})))()}var ft;function pt(){return(pt=e((()=>{k(),ft=e=>{let{transform:t}=e;return{...t,y:0}}})))()}var mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,J;function Pt(){return(Pt=e((()=>{mt=`_0rNBMr`,ht=`gp-7Db`,gt=`Ck-sXP`,_t=`-F3gli`,vt=`V5tPM-`,yt=`_2VJbvj`,bt=`AD8NkG`,xt=`qqixKn`,St=`dVDRNv`,Ct=`klOoMz`,wt=`fJvFJA`,Tt=`_7D8xa9`,Et=`_3j87pS`,Dt=`uwojkJ`,Ot=`lLsmW6`,kt=`uYvZ5P`,At=`QIS3xA`,jt=`a580w0`,Mt=`UOhaMF`,Nt=`DtKAgs`,J={root:mt,headerContextMenuTrigger:ht,table:gt,head:_t,pinnedStartBoundary:vt,headerRow:yt,headerCell:bt,headerCellContent:xt,headerCellDraggable:St,headerCellDragging:Ct,headerCellPinnedStart:wt,bodyRow:Tt,bodyRowInteractive:Et,bodyCell:Dt,bodyRowSelected:Ot,bodyCellPinnedStart:kt,bodyCellMergedWithNext:At,feedbackCell:jt,fetchingRow:Mt,noData:Nt}})))()}function Ft({header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:i,enableColumnResizing:a,enableColumnReordering:o,columnResizeMinWidth:s,renderHeaderContent:c,onResizeColumn:l,onResetColumnWidth:u}){return(0,Y.jsx)(Ve,{columnId:e.column.id,colSpan:e.colSpan,dragDisabled:!o||i,draggingClassName:J.headerCellDragging,className:x(J.headerCell,t&&J.headerCellPinnedStart,r&&J.pinnedStartBoundary),style:{...t?{insetInlineStart:n}:{}},resizeHandle:a&&!e.isPlaceholder?{columnId:e.column.id,minWidth:s,onResize:l,onReset:u}:void 0,children:({listeners:t,setActivatorElement:n})=>(0,Y.jsx)(`div`,{ref:o&&!i?n:void 0,className:x(J.headerCellContent,o&&!i&&J.headerCellDraggable),...o&&!i?t??{}:{},children:c(e)})})}var Y;function It(){return(It=e((()=>{S(),He(),Pt(),Y=p(),Ft.__docgenInfo={description:``,methods:[],displayName:`BaseTableHeaderCell`,props:{header:{required:!0,tsType:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},description:``},isPinnedStart:{required:!0,tsType:{name:`boolean`},description:``},insetInlineStart:{required:!1,tsType:{name:`string`},description:``},isPinnedBoundary:{required:!0,tsType:{name:`boolean`},description:``},isDragDisabled:{required:!0,tsType:{name:`boolean`},description:``},enableColumnResizing:{required:!0,tsType:{name:`boolean`},description:``},enableColumnReordering:{required:!0,tsType:{name:`boolean`},description:``},columnResizeMinWidth:{required:!0,tsType:{name:`union`,raw:`number | undefined`,elements:[{name:`number`},{name:`undefined`}]},description:``},renderHeaderContent:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(header: FoundationTableHeader<TData>) => ReactNode`,signature:{arguments:[{type:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},name:`header`}],return:{name:`ReactNode`}}},description:``},onResizeColumn:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onResetColumnWidth:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}}},description:``}}}})))()}function Lt(e,t){let n=e.getLeafHeaders().map(e=>t.get(e.column.id)).filter(e=>typeof e==`number`);return n.length?Math.min(...n):2**53-1}function Rt(e,t){let n=e.getStartHeaderGroups(),r=e.getCenterHeaderGroups(),i=e.getEndHeaderGroups(),a=Math.max(n.length,r.length,i.length);return Array.from({length:a},(e,a)=>[...n[a]?.headers??[],...r[a]?.headers??[],...i[a]?.headers??[]].filter(e=>e.isPlaceholder?!0:e.getLeafHeaders().some(e=>t.has(e.column.id))).sort((e,n)=>Lt(e,t)-Lt(n,t)))}function zt(e,t,n){let r=e.getLeafHeaders().map(e=>e.column.id);return r.length>0&&r.every(e=>e in t)?{isPinnedStart:!0,insetInlineStart:t[r[0]]??`0px`,isPinnedBoundary:!!(n&&r.includes(n))}:{isPinnedStart:!1,isPinnedBoundary:!1}}function Bt(e,t){let n=e.getAllLeafColumns().map(e=>e.id);return y({ids:n,order:t.columnOrder})}function Vt({table:e,columnState:t,title:n,isLoading:r,isFetching:i,className:a,minHeight:o=`15em`,tableClassName:s,selectionMode:c=`none`,scrollableRef:l,interactiveElementSelector:u,onActivateRow:p,isRowInteractive:m,getRowClassName:h,getCellClassName:g,getCellStyle:_,getCellLayout:te,renderCellContent:y,renderHeaderContextMenu:b,enableColumnResizing:ae=!1,enableColumnReordering:S=!1,columnResizeMinWidth:C,afterTableContent:se}){let w=Ge(e,t),T=(0,X.useMemo)(()=>w.map(e=>e.column),[w]),E=(0,X.useMemo)(()=>w.map(e=>e.id),[w]),D=(0,X.useMemo)(()=>new Map(E.map((e,t)=>[e,t])),[E]),ce=(0,X.useMemo)(()=>new Set(E),[E]),le=me({activationDistance:8}),fe=Rt(e,D),O=Ke(e,t),k=T.filter(e=>e.getIsPinned()===`start`).at(-1)?.id,A=(0,X.useMemo)(()=>t.columnPinning.start??[],[t.columnPinning.start]),he=(0,X.useMemo)(()=>new Set(A),[A]),j=e.getRowModel(),M=!!n,N=j.rows.length>0,ve=(0,X.useCallback)(e=>[...e].sort((e,t)=>(D.get(e.column.id)??2**53-1)-(D.get(t.column.id)??2**53-1)),[D]),P=(0,X.useCallback)((t,n)=>{e.setColumnSizing(e=>re(e,t,n,C))},[C,e]),F=(0,X.useCallback)(t=>{e.setColumnSizing(e=>ee(e,t))},[e]),I=(0,X.useCallback)(n=>{let r=d({event:n,items:E});if(!r)return;let i=Bt(e,t),a=ne({order:i,headerIds:E,pinnedIds:A,activeId:String(r.activeId),overId:String(r.overId)});a&&e.setColumnOrder(a)},[t,A,e,E]),L=e=>{if(e.isPlaceholder)return null;let t=ge(e.column.columnDef.header,e.getContext()),n=b?.(e);return n?(0,Z.jsxs)(ye,{children:[(0,Z.jsx)(ye.Trigger,{children:(0,Z.jsx)(`div`,{className:J.headerContextMenuTrigger,tabIndex:0,children:t})}),(0,Z.jsx)(ye.Content,{children:n})]}):t},be=(e,t)=>{!(m?.(t)??!!p)||!p||ie(e.target,u)||p(t)},xe=(e,t)=>{!(m?.(t)??!!p)||!p||ie(e.target,u)||oe(e,()=>p(t))};return(0,Z.jsxs)(pe,{templateRows:M?`auto 1fr`:`1fr`,className:x(`overflowHidden w100 h100`,J.root,a),style:{minHeight:o},children:[M&&(0,Z.jsx)(`h3`,{className:`marginBottomXs`,children:n}),(0,Z.jsxs)(`div`,{className:`surface0 overflowHidden relative w100 h100`,children:[(0,Z.jsx)(_e,{ref:l,className:`w100 h100`,children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`table`,{className:x(J.table,s),children:[(0,Z.jsx)(`colgroup`,{children:w.map(e=>(0,Z.jsx)(`col`,{style:e.width?{width:e.width}:void 0},e.id))}),(0,Z.jsx)(`thead`,{className:x(`stickyTop`,J.head),children:S?(0,Z.jsx)(f.Root,{sensors:le,modifiers:[ft],onDragEnd:I,children:(0,Z.jsx)(f.Container,{containerId:`base-table-header`,items:E,layout:`horizontal`,children:fe.map((e,t)=>(0,Z.jsx)(`tr`,{className:J.headerRow,children:e.map(e=>{let{isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r}=zt(e,O,k),i=e.isPlaceholder||!ce.has(e.column.id)||he.has(e.column.id);return(0,Z.jsx)(Ft,{header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:i,enableColumnResizing:ae,enableColumnReordering:S,columnResizeMinWidth:C,renderHeaderContent:L,onResizeColumn:P,onResetColumnWidth:F},e.id)})},`header-group-${t}`))})}):fe.map((e,t)=>(0,Z.jsx)(`tr`,{className:J.headerRow,children:e.map(e=>{let{isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r}=zt(e,O,k);return(0,Z.jsx)(Ft,{header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:!0,enableColumnResizing:ae,enableColumnReordering:S,columnResizeMinWidth:C,renderHeaderContent:L,onResizeColumn:P,onResetColumnWidth:F},e.id)})},`header-group-${t}`))}),(0,Z.jsxs)(`tbody`,{children:[j.rows.map(e=>{let t=m?.(e)??!!p;return(0,Z.jsx)(`tr`,{className:x(J.bodyRow,t&&J.bodyRowInteractive,e.getIsSelected()&&J.bodyRowSelected,h?.(e)),"aria-selected":c===`none`?void 0:e.getIsSelected(),tabIndex:t?0:void 0,onClick:t=>be(t,e),onKeyDown:t=>xe(t,e),children:ve([...e.getStartVisibleCells(),...e.getCenterVisibleCells(),...e.getEndVisibleCells()]).map(t=>{let n=v(t.column.columnDef),r=ge(t.column.columnDef.cell,t.getContext()),i={row:e,cell:t,defaultContent:r,columnMeta:n},a=te?.(i),o=t.column.getIsPinned()===`start`,s=t.column.id===k,c={...n?.align?{textAlign:n.align}:{},...o?{insetInlineStart:O[t.column.id]??`0px`}:{},..._?.(i)??{}};return(0,Z.jsx)(`td`,{className:x(J.bodyCell,o&&J.bodyCellPinnedStart,s&&J.pinnedStartBoundary,a?.mergeWithNext&&J.bodyCellMergedWithNext,g?.(i)),style:c,children:a?.hideContent?null:y?y(i):r},t.id)})},e.id)}),i&&N&&(0,Z.jsx)(`tr`,{className:J.fetchingRow,children:(0,Z.jsx)(`td`,{colSpan:Math.max(T.length,1),className:J.feedbackCell,children:(0,Z.jsx)(ue,{})})})]})]}),se]})}),(0,Z.jsxs)(`div`,{className:`absolute inset0 border`,style:{pointerEvents:`none`,zIndex:20},children:[!r&&!i&&!N&&(0,Z.jsx)(de,{className:J.noData}),r&&!N&&(0,Z.jsx)(ue,{className:`h100 w100`})]})]})]})}var X,Z;function Ht(){return(Ht=e((()=>{X=t(),pt(),j(),g(),S(),M(),ve(),fe(),ce(),le(),N(),u(),U(),Pt(),It(),Z=p(),Vt.__docgenInfo={description:"Базовая таблица с общим UI-каркасом для Table и TreeTable.\n\n@NOTE: не для использования напрямую, это база для `Table` и `TreeTable`",methods:[],displayName:`BaseTable`,props:{table:{required:!0,tsType:{name:`FoundationTableInstance`,elements:[{name:`TData`}],raw:`FoundationTableInstance<TData>`},description:``},columnState:{required:!0,tsType:{name:`Pick`,elements:[{name:`FoundationTableState`},{name:`union`,raw:`"columnOrder" | "columnPinning" | "columnSizing" | "columnVisibility"`,elements:[{name:`literal`,value:`"columnOrder"`},{name:`literal`,value:`"columnPinning"`},{name:`literal`,value:`"columnSizing"`},{name:`literal`,value:`"columnVisibility"`}]}],raw:`Pick<FoundationTableState, "columnOrder" | "columnPinning" | "columnSizing" | "columnVisibility">`},description:``},title:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},isFetching:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:"`${number}em` | `${number}%`",elements:[{name:`literal`,value:"`${number}em`"},{name:`literal`,value:"`${number}%`"}]},description:``,defaultValue:{value:`"15em"`,computed:!1}},tableClassName:{required:!1,tsType:{name:`string`},description:``},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:``,defaultValue:{value:`"none"`,computed:!1}},scrollableRef:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLDivElement`}],raw:`Ref<HTMLDivElement>`},description:``},interactiveElementSelector:{required:!1,tsType:{name:`string`},description:``},onActivateRow:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => void`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`void`}}},description:``},isRowInteractive:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => boolean`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`boolean`}}},description:``},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => string | undefined`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},getCellClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => string | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},getCellStyle:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => CSSProperties | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`CSSProperties | undefined`,elements:[{name:`CSSProperties`},{name:`undefined`}]}}},description:``},getCellLayout:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => BaseTableCellLayout | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`BaseTableCellLayout | undefined`,elements:[{name:`BaseTableCellLayout`},{name:`undefined`}]}}},description:``},renderCellContent:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => ReactNode`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`ReactNode`}}},description:``},renderHeaderContextMenu:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(header: FoundationTableHeader<TData>) => ReactNode`,signature:{arguments:[{type:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},name:`header`}],return:{name:`ReactNode`}}},description:`Общий слот контекстного меню заголовка.
12
-
13
- BaseTable намеренно не знает про сортировку, группировку или доменные
14
- действия. Он только сохраняет единый доступный способ открыть меню для
15
- \`Table\` и \`TreeTable\`, а содержимое передает потребитель.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:``},afterTableContent:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}var Ut,Wt,Gt,Q;function Kt(){return(Kt=e((()=>{Ut=`jPPyP7`,Wt=`Oa7e5P`,Gt=`KhQtgF`,Q={formattedCellValue:Ut,formattedCell:Wt,formattedCellInner:Gt}})))()}function qt({displayValue:e,align:t=`left`}){let n=(0,Jt.useRef)(null),r=e.showValue,i=e.showIcon?e.icon:void 0,a=r&&e.value!=null?String(e.value):``,o=D(e.state),s=t===`right`?`flex-end`:t===`center`?`center`:`flex-start`,c=t===`center`?`center`:t===`right`?`right`:`left`;return(0,Jt.useEffect)(()=>{let t=n.current;if(!t)return;let r=()=>{if(!e.overflowTooltip||!a){t.removeAttribute(`title`);return}if(t.scrollWidth>t.clientWidth+1){t.setAttribute(`title`,a);return}t.removeAttribute(`title`)};if(r(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(r);return i.observe(t),()=>{i.disconnect()}},[e.overflowTooltip,a]),(0,$.jsx)(`div`,{className:x(Q.formattedCell,o),children:(0,$.jsxs)(`div`,{className:Q.formattedCellInner,style:{justifyContent:s},children:[e.iconPosition===`left`?(0,$.jsx)(Ee,{state:i}):null,r?(0,$.jsx)(`span`,{ref:n,className:x(`textOverflow`,Q.formattedCellValue),style:{textAlign:c},children:a}):null,e.iconPosition===`right`?(0,$.jsx)(Ee,{state:i}):null]})})}var Jt,$;function Yt(){return(Yt=e((()=>{Jt=t(),T(),S(),je(),Kt(),$=p(),qt.__docgenInfo={description:"Общий renderer форматированной ячейки для `Table` и будущего `TreeTable`.\n\nКомпонент отвечает только за UI-отрисовку уже вычисленного display-result:\nruntime и бизнес-логика вычисления значения в него не входят.",methods:[],displayName:`FormattedTableCell`,props:{displayValue:{required:!0,tsType:{name:`FormattersPipelineDisplayValue`},description:`Нормализованный display-result из formatting-runtime.`},align:{required:!1,tsType:{name:`TableColumnAlign`},description:`Табличное выравнивание содержимого.`,defaultValue:{value:`"left"`,computed:!1}}}}})))()}export{Qe as _,dt as a,ct as c,at as d,it as f,$e as g,Ze as h,Ht as i,st as l,rt as m,Yt as n,ut as o,nt as p,Vt as r,lt as s,qt as t,ot as u,H as v,U as y};
@@ -1,3 +0,0 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./x-BdAuXjBq.js";import{n as a}from"./iframe-ltYEol2F.js";import{a as o,i as s}from"./utils-tg3ibbzi.js";import{g as c,p as l}from"./odata-service-CWkHASdw-DAt28ZWr.js";import{n as u,t as d}from"./ui.module-l7VCYIW-.js";var f,p,m,h,g,_,v,y,b,x;function S(){return(S=t((()=>{f=`lRn5ye`,p=`_0CSWJY`,m=`ce5HAY`,h=`_8TObqB`,g=`Gx3Wbd`,_=`cpwaYo`,v=`itlmix`,y=`aITEGl`,b=`ekyJIt`,x={controlLayout:f,inputUI:p,input:m,inputNumber:h,controlWithEndAdornment:g,controlEndAdornment:_,endAdornmentGroup:v,clearButton:y,error:b}})))()}function C({id:e,hasLabel:t,hasDescription:n,hasError:r}){let i=(0,w.useId)(),a=e??i,o=t?`${a}-label`:void 0,s=n?`${a}-description`:void 0,c=r?`${a}-error`:void 0;return{controlId:a,labelId:o,descriptionId:s,errorId:c,describedBy:[s,c].filter(Boolean).join(` `)||void 0}}var w;function T(){return(T=t((()=>{w=n()})))()}function E({label:e,controlId:t,labelId:n}){return(0,R.jsx)(`label`,{id:n,htmlFor:t,className:u.uiLabel,children:e})}function D(){return(0,R.jsx)(`div`,{className:o(u.uiInputControlFake,`skeletonLine`)})}function O({label:e,description:t,size:n,disabled:r,isLoading:i,className:a}){let{controlId:s,labelId:c,descriptionId:l}=C({hasLabel:e!=null,hasDescription:!!t});return(0,R.jsxs)(`div`,{className:o(u.uiElement,u.uiSizable,n&&u[n],u.disabled,a),"aria-disabled":r||void 0,children:[e&&(0,R.jsx)(E,{label:e,controlId:s,labelId:c}),t&&(0,R.jsx)(`p`,{id:l,className:u.uiDescription,children:t}),(0,R.jsx)(`div`,{className:o(u.uiInputControlFake,i&&`skeletonLine`)})]})}function k(e){return(0,R.jsx)(O,{...e,isLoading:!0})}function A({label:e,description:t,disabled:n,className:r,error:i,size:a,controlId:s,labelId:c,descriptionId:l,errorId:d,required:f,children:p}){return(0,R.jsxs)(`div`,{className:o(x.inputUI,u.uiElement,u.uiSizable,a&&u[a],n&&u.disabled,f&&u.required,r),"aria-disabled":n||void 0,children:[e&&(0,R.jsx)(E,{label:e,controlId:s,labelId:c}),t&&(0,R.jsx)(`p`,{id:l,className:u.uiDescription,children:t}),(0,R.jsxs)(`div`,{className:x.controlLayout,children:[p,i&&(0,R.jsx)(`p`,{id:d,className:x.error,role:`alert`,children:i})]})]})}function j({className:e,endAdornment:t,endAdornmentClassName:n,endAdornmentWidth:r,children:i}){let a=t!=null,s=a&&r?{"--input-end-adornment-width":r}:void 0;return(0,R.jsxs)(`div`,{className:o(x.controlLayout,e),style:s,children:[i({controlClassName:a?x.controlWithEndAdornment:void 0}),a&&(0,R.jsx)(`div`,{className:o(x.controlEndAdornment,n),children:t})]})}function M({onClick:e,disabled:t,className:n,ariaLabel:r=`Очистить значение`}){return(0,R.jsx)(`button`,{type:`button`,disabled:t||!e,className:o(x.clearButton,n),onClick:e,"aria-label":r,children:(0,R.jsx)(i,{})})}function N(e,t,n){if(n)return n;if(e&&t)return`calc((var(--control-height) * 2) + var(--space-xs))`;if(e||t)return`var(--control-height)`}function P({endAdornment:e,onClear:t,disabled:n}){if(!(e==null&&!t))return(0,R.jsxs)(`div`,{className:x.endAdornmentGroup,children:[e,t&&(0,R.jsx)(M,{onClick:t,disabled:n})]})}function F({label:e,description:t,disabled:n,className:r,onClear:i,error:a,onClearError:s,onChange:c,value:l,size:d,allowedPattern:f,endAdornment:p,endAdornmentClassName:m,endAdornmentWidth:h,type:g=`text`,..._}){let[v,y]=(0,L.useState)(!1),b=e=>{let t=e.target.value;f!==void 0&&y(t!==``&&!f.test(t)),c(t),a&&s&&s()},S=!!(l&&l.length>0),w=S?a:void 0,{controlId:T,labelId:E,descriptionId:D,errorId:O,describedBy:k}=C({id:_.id,hasLabel:e!=null,hasDescription:!!t,hasError:!!w}),M=S&&(!!a||v),F=P({endAdornment:p,onClear:i,disabled:n||!S}),I=N(p!=null,!!i,h);return(0,R.jsx)(A,{label:e,description:t,disabled:n,required:_.required,className:r,size:d,error:w,controlId:T,labelId:E,descriptionId:D,errorId:O,children:(0,R.jsx)(j,{endAdornment:F,endAdornmentClassName:m,endAdornmentWidth:I,children:({controlClassName:e})=>(0,R.jsx)(`input`,{..._,id:T,type:g,disabled:n,value:l,"aria-invalid":M||void 0,"aria-labelledby":E,"aria-describedby":k,"data-invalid":M?``:void 0,className:o(u.uiInputControl,x.input,e),onChange:b})})})}function I({label:e,description:t,disabled:n,className:r,onClear:i,error:a,onClearError:s,onChange:c,value:d,size:f,endAdornment:p,endAdornmentClassName:m,endAdornmentWidth:h,...g}){let _=g,{controlId:v,labelId:y,descriptionId:b,errorId:S,describedBy:w}=C({id:g.id,hasLabel:e!=null,hasDescription:!!t,hasError:!!a}),T=(0,L.useRef)(null),E=(0,L.useRef)(null),D=d!==void 0&&typeof d==`number`&&!isNaN(d)?String(d):``;(0,L.useLayoutEffect)(()=>{let e=E.current;if(e&&Object.is(e.value,d)){T.current&&T.current.value!==e.raw&&(T.current.value=e.raw);return}E.current=null,T.current&&T.current.value!==D&&(T.current.value=D)},[D,d]);let O=i?()=>{i()}:void 0,k=e=>{let t=e.target.value,n=l(t);E.current={value:n,raw:t},c(n),a&&s&&s()},M=P({endAdornment:p,onClear:O,disabled:n}),F=N(p!=null,!!O,h);return(0,R.jsx)(A,{label:e,description:t,disabled:n,required:g.required,className:r,size:f,error:a,controlId:v,labelId:y,descriptionId:b,errorId:S,children:(0,R.jsx)(j,{endAdornment:M,endAdornmentClassName:m,endAdornmentWidth:F,children:({controlClassName:e})=>(0,R.jsx)(`input`,{..._,ref:T,id:v,type:`number`,inputMode:`decimal`,disabled:n,defaultValue:D,"aria-labelledby":y,"aria-describedby":w,className:o(u.uiInputControl,x.input,x.inputNumber,e),onChange:k})})})}var L,R,z;function B(){return(B=t((()=>{L=e(n(),1),c(),s(),r(),d(),S(),T(),R=a(),z=F,D.__docgenInfo={description:``,methods:[],displayName:`InputLoadingFrame`},O.__docgenInfo={description:``,methods:[],displayName:`InputUIFrame`,props:{isLoading:{required:!1,tsType:{name:`boolean`},description:``}}},k.__docgenInfo={description:``,methods:[],displayName:`InputUILoading`},A.__docgenInfo={description:`Низкоуровневая оболочка поля ввода с общими элементами оформления.`,methods:[],displayName:`InputUI`,props:{className:{required:!1,tsType:{name:`string`},description:``},error:{required:!1,tsType:{name:`string`},description:``},controlId:{required:!1,tsType:{name:`string`},description:``},labelId:{required:!1,tsType:{name:`string`},description:``},descriptionId:{required:!1,tsType:{name:`string`},description:``},errorId:{required:!1,tsType:{name:`string`},description:``},required:{required:!1,tsType:{name:`boolean`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}},composes:[`Omit`]},j.__docgenInfo={description:``,methods:[],displayName:`InputControl`,props:{className:{required:!1,tsType:{name:`string`},description:``},endAdornment:{required:!1,tsType:{name:`ReactNode`},description:``},endAdornmentClassName:{required:!1,tsType:{name:`string`},description:``},endAdornmentWidth:{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(props: InputControlRenderProps) => ReactNode`,signature:{arguments:[{type:{name:`InputControlRenderProps`},name:`props`}],return:{name:`ReactNode`}}},description:``}}},M.__docgenInfo={description:``,methods:[],displayName:`InputClearButton`,props:{onClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Очистить значение"`,computed:!1}}}},F.__docgenInfo={description:`Базовое текстовое поле ввода для строковых значений.`,methods:[],displayName:`InputText`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`T`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},onClear:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},endAdornment:{required:!1,tsType:{name:`ReactNode`},description:``},endAdornmentClassName:{required:!1,tsType:{name:`string`},description:``},endAdornmentWidth:{required:!1,tsType:{name:`string`},description:``},type:{required:!1,tsType:{name:`union`,raw:`"email" | "password" | "search" | "tel" | "text" | "url"`,elements:[{name:`literal`,value:`"email"`},{name:`literal`,value:`"password"`},{name:`literal`,value:`"search"`},{name:`literal`,value:`"tel"`},{name:`literal`,value:`"text"`},{name:`literal`,value:`"url"`}]},description:``,defaultValue:{value:`"text"`,computed:!1}},allowedPattern:{required:!1,tsType:{name:`RegExp`},description:`Регулярное выражение для валидации всего введённого значения.
2
- При несоответствии поле подсвечивается как невалидное, но текст не удаляется.
3
- Пример: \`/^\\d*$/\``}},composes:[`Omit`]},I.__docgenInfo={description:`Числовое поле ввода с нормализацией значения и защитой от промежуточного невалидного ввода.`,methods:[],displayName:`InputNumber`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},onClear:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},defaultValue:{required:!1,tsType:{name:`T`},description:``},endAdornment:{required:!1,tsType:{name:`ReactNode`},description:``},endAdornmentClassName:{required:!1,tsType:{name:`string`},description:``},endAdornmentWidth:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}})))()}export{I as a,k as c,C as d,D as i,B as l,M as n,F as o,j as r,A as s,z as t,T as u};
@@ -1,76 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Bdsl8TP-.js";import{a as p,i as m,n as h,r as g,t as _}from"./MultiSelect.stories-R6JTKnFI.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
- `,(0,b.jsx)(u,{children:`MultiSelect`}),`
3
- `,(0,b.jsx)(o,{children:`Типобезопасный getter-based мультиселект для произвольных option`}),`
4
- `,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`MultiSelect<TOption>`}),` сохраняет исходный тип option на всём пути от `,(0,b.jsx)(t.code,{children:`options`}),` и `,(0,b.jsx)(t.code,{children:`value`}),` до `,(0,b.jsx)(t.code,{children:`onChange`}),`.
5
- Компонент не требует `,(0,b.jsx)(t.code,{children:`CollectionItem`}),` и независимо получает identity, основной текст, отображаемый код, группу и поисковое представление.`]}),`
6
- `,(0,b.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
- `,(0,b.jsx)(f,{}),`
8
- `,(0,b.jsx)(i,{of:g}),`
9
- `,(0,b.jsx)(t.pre,{children:(0,b.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
-
11
- import { MultiSelect } from "@ryuzaki13/react-foundation-ui/multi-select";
12
-
13
- type DepartmentOption = {
14
- id: string;
15
- name: string;
16
- displayCode: string;
17
- };
18
-
19
- const options: DepartmentOption[] = [
20
- { id: "education:north", name: "Учебное отделение «Север»", displayCode: "УО-01" },
21
- { id: "education:south", name: "Учебное отделение «Юг»", displayCode: "УО-01" }
22
- ];
23
-
24
- export function Example() {
25
- const [value, setValue] = useState<DepartmentOption[]>([]);
26
-
27
- return (
28
- <MultiSelect
29
- label="Подразделения"
30
- options={options}
31
- value={value}
32
- onChange={setValue}
33
- getOptionKey={(option) => option.id}
34
- getOptionLabel={(option) => option.name}
35
- getOptionCode={(option) => option.displayCode}
36
- />
37
- );
38
- }
39
- `})}),`
40
- `,(0,b.jsx)(t.h2,{id:`контракт-selector-функций`,children:`Контракт selector-функций`}),`
41
- `,(0,b.jsxs)(t.ul,{children:[`
42
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`getOptionKey`}),` задаёт единственный identity option. Строковый ключ должен быть уникальным и устойчивым; числовой domain-id следует явно преобразовать через `,(0,b.jsx)(t.code,{children:`String(id)`}),`.`]}),`
43
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`getOptionLabel`}),` возвращает основной текст, а `,(0,b.jsx)(t.code,{children:`getOptionCode`}),` — независимый дополнительный код. Одинаковый отображаемый code не объединяет option, если их key различаются.`]}),`
44
- `,(0,b.jsxs)(t.li,{children:[`По умолчанию поиск учитывает label, code и текст заголовка группы. `,(0,b.jsx)(t.code,{children:`getOptionSearchText`}),` полностью заменяет это представление и подходит для скрытых синонимов, транслитерации или заранее нормализованного индекса.`]}),`
45
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`getOptionGroup`}),` объединяет соседние option с одинаковым `,(0,b.jsx)(t.code,{children:`group.key`}),`. Выбранная и доступная секции группируются независимо, поэтому один заголовок может появиться в обеих секциях.`]}),`
46
- `]}),`
47
- `,(0,b.jsx)(t.h2,{id:`draft-и-commit`,children:`Draft и commit`}),`
48
- `,(0,b.jsxs)(t.p,{children:[`При открытии компонент создаёт draft из контролируемого `,(0,b.jsx)(t.code,{children:`value`}),`. Checkbox изменяет draft, не вызывая `,(0,b.jsx)(t.code,{children:`onChange`}),` немедленно; закрытие popup подтверждает его через `,(0,b.jsx)(t.code,{children:`onChange`}),` и передаёт то же значение в `,(0,b.jsx)(t.code,{children:`onClose`}),`.
49
- Кнопка с названием option выбирает только эту option и сразу закрывает popup. `,(0,b.jsx)(t.code,{children:`getOptionDisabled`}),` получает `,(0,b.jsx)(t.code,{children:`selectedOptions`}),` и `,(0,b.jsx)(t.code,{children:`selectedKeys`}),` текущего draft, а также `,(0,b.jsx)(t.code,{children:`committedSelectedOptions`}),`, поэтому взаимозависимые ограничения обновляются ещё до commit.`]}),`
50
- `,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`renderToken`}),` и `,(0,b.jsx)(t.code,{children:`renderToolbar`}),` получают тот же текущий выбор: draft, пока popup открыт, и подтверждённое значение после закрытия.`]}),`
51
- `,(0,b.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
52
- `,(0,b.jsx)(t.h3,{id:`identity-независимо-от-отображаемого-code`,children:`Identity независимо от отображаемого code`}),`
53
- `,(0,b.jsxs)(t.p,{children:[`У двух option намеренно одинаковый `,(0,b.jsx)(t.code,{children:`code`}),`, но разные `,(0,b.jsx)(t.code,{children:`id`}),`. Их можно выбирать независимо без преобразования в `,(0,b.jsx)(t.code,{children:`CollectionItem`}),`.`]}),`
54
- `,(0,b.jsx)(d,{of:g}),`
55
- `,(0,b.jsx)(t.h3,{id:`группировка-и-selected-first`,children:`Группировка и selected-first`}),`
56
- `,(0,b.jsx)(t.p,{children:`Подтверждённые option отображаются первыми. После них идёт доступная секция; внутри обеих секций соседние option группируются отдельно.`}),`
57
- `,(0,b.jsx)(d,{of:h}),`
58
- `,(0,b.jsx)(t.h3,{id:`контекстная-блокировка-и-поисковый-индекс`,children:`Контекстная блокировка и поисковый индекс`}),`
59
- `,(0,b.jsxs)(t.p,{children:[`Option «Все подразделения» взаимоисключается с частным выбором через draft-aware `,(0,b.jsx)(t.code,{children:`getOptionDisabled`}),`.
60
- `,(0,b.jsx)(t.code,{children:`getOptionSearchText`}),` добавляет невидимые поисковые синонимы: например, запрос `,(0,b.jsx)(t.code,{children:`СПО`}),` находит оба учебных отделения.`]}),`
61
- `,(0,b.jsx)(d,{of:_}),`
62
- `,(0,b.jsx)(t.h2,{id:`миграция-с-deprecatedmultiselect`,children:`Миграция с DeprecatedMultiSelect`}),`
63
- `,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`DeprecatedMultiSelect`}),` сохраняет `,(0,b.jsx)(t.code,{children:`CollectionItem`}),` и OData-ориентированный `,(0,b.jsx)(t.code,{children:`codeKey`}),`/`,(0,b.jsx)(t.code,{children:`textKey`}),` API. Для перехода на канонический `,(0,b.jsx)(t.code,{children:`MultiSelect`}),` замените:`]}),`
64
- `,(0,b.jsxs)(t.ul,{children:[`
65
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`items`}),` на `,(0,b.jsx)(t.code,{children:`options`}),`;`]}),`
66
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`codeKey`}),` на `,(0,b.jsx)(t.code,{children:`getOptionKey`}),`;`]}),`
67
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`textKey`}),` на `,(0,b.jsx)(t.code,{children:`getOptionLabel`}),`;`]}),`
68
- `,(0,b.jsxs)(t.li,{children:[`использование identity как видимого code на отдельный `,(0,b.jsx)(t.code,{children:`getOptionCode`}),`;`]}),`
69
- `,(0,b.jsxs)(t.li,{children:[(0,b.jsx)(t.code,{children:`renderItem`}),`, если он только вычислял text/code, на `,(0,b.jsx)(t.code,{children:`getOptionLabel`}),` и `,(0,b.jsx)(t.code,{children:`getOptionCode`}),`; сложную структурированную пару можно вернуть через `,(0,b.jsx)(t.code,{children:`renderOption`}),`.`]}),`
70
- `]}),`
71
- `,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`onChange`}),` после миграции получает `,(0,b.jsx)(t.code,{children:`TOption[]`}),`, поэтому адаптер к `,(0,b.jsx)(t.code,{children:`CollectionItem`}),` больше не нужен. `,(0,b.jsx)(t.code,{children:`ODataMultiSelect`}),` продолжает использовать `,(0,b.jsx)(t.code,{children:`DeprecatedMultiSelect`}),` внутри пакета.`]}),`
72
- `,(0,b.jsxs)(t.p,{children:[`Старый контракт с `,(0,b.jsx)(t.code,{children:`codeKey`}),`/`,(0,b.jsx)(t.code,{children:`items`}),` доступен через `,(0,b.jsx)(t.code,{children:`DeprecatedMultiSelect`}),`; новый код должен использовать selector API `,(0,b.jsx)(t.code,{children:`MultiSelect`}),`.`]}),`
73
- `,(0,b.jsx)(t.h2,{id:`api`,children:`API`}),`
74
- `,(0,b.jsx)(l,{of:m}),`
75
- `,(0,b.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
76
- `,(0,b.jsx)(a,{includePrimary:!1})]})}function y(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,b.jsx)(t,{...e,children:(0,b.jsx)(v,{...e})}):v(e)}var b;function x(){return(x=e((()=>{b=t(),r(),c(),p()})))()}x();export{y as default};
@@ -1,64 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-ltYEol2F.js";import{n as r,t as i}from"./MultiSelect-C593f3VV.js";var a=t({ContextualDisabledAndSearch:()=>p,GroupedSelectedFirst:()=>f,IndependentIdentity:()=>d,__namedExportsOrder:()=>m,default:()=>u}),o,s,c,l,u,d,f,p,m;function h(){return(h=e((()=>{r(),o=n(),{useArgs:s}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:c}=__STORYBOOK_MODULE_TEST__,l=[{id:`all-departments`,name:`Все подразделения`,code:`*`,direction:`Общий выбор`,searchAliases:[`вся организация`]},{id:`education:north`,name:`Учебное отделение «Север»`,code:`УО-01`,direction:`Учебные подразделения`,searchAliases:[`СПО`,`северный корпус`]},{id:`education:south`,name:`Учебное отделение «Юг»`,code:`УО-01`,direction:`Учебные подразделения`,searchAliases:[`СПО`,`южный корпус`]},{id:`support:methodology`,name:`Методический отдел`,code:`МЕТОД`,direction:`Подразделения сопровождения`,searchAliases:[`методисты`,`образовательные программы`]},{id:`support:it`,name:`Отдел цифровых сервисов`,code:`ИТ`,direction:`Подразделения сопровождения`,searchAliases:[`техническая поддержка`,`информационные технологии`]}],u={title:`UI/MultiSelect`,component:i,args:{label:`Подразделения`,description:`Выберите одно или несколько подразделений.`,placeholder:`Начните вводить`,options:l,value:[],onChange:c(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Типобезопасный getter-based мультиселект для произвольных option. Identity, текст, отображаемый код, группа и поисковое представление задаются независимо.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст пустого поля.`,control:`text`},options:{description:`Исходные типизированные option без промежуточного CollectionItem.`,control:!1},value:{description:`Контролируемый набор выбранных option целиком.`,control:!1},onChange:{description:`Подтверждает выбор массивом исходных option.`,control:!1},getOptionKey:{description:`Возвращает устойчивый уникальный identity option.`,control:!1},getOptionLabel:{description:`Возвращает основной отображаемый текст option.`,control:!1},getOptionCode:{description:`Возвращает дополнительный отображаемый код, независимый от identity.`,control:!1},getOptionGroup:{description:`Объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionSearchText:{description:`Задаёт поисковое представление option; может вернуть строку или набор строк.`,control:!1},getOptionDisabled:{description:`Блокирует option с учётом draft-выбора и подтверждённого значения.`,control:!1},query:{description:`Контролируемый поисковый запрос.`,control:`text`},defaultQuery:{description:`Начальный запрос в uncontrolled-режиме.`,control:`text`},highlightQuery:{description:`Отдельный запрос для подсветки совпадений.`,control:`text`},onQuery:{description:`Вызывается при изменении поискового запроса.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},onOpen:{description:`Вызывается при открытии списка.`,control:!1},onClose:{description:`Вызывается после закрытия и подтверждения draft-выбора.`,control:!1},error:{description:`Текст ошибки получения option.`,control:`text`},isLoading:{description:`Показывает состояние загрузки.`,control:`boolean`},renderToken:{description:`Кастомный рендер значения в trigger.`,control:!1},renderToolbar:{description:`Кастомный рендер панели действий popup.`,control:!1},renderOption:{description:`Возвращает структурированные text и code для строки option.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={name:`Identity независимо от code`,render:function(e){let[,t]=s();return(0,o.jsx)(i,{...e,value:e.value??[l[1]],onChange:n=>{e.onChange(n),t({value:n})}})},args:{description:`Обе учебные option имеют code УО-01, но остаются независимыми благодаря разным id.`,value:[l[1]]}},f={name:`Группы и выбранные option первыми`,render:function(e){let[,t]=s();return(0,o.jsx)(i,{...e,getOptionGroup:e=>({key:e.direction,label:e.direction}),onChange:n=>{e.onChange(n),t({value:n})}})},args:{description:`Подтверждённые option показаны первыми; внутри выбранной и доступной секций группы строятся независимо.`,value:[l[1],l[3]]}},p={name:`Контекстная блокировка и поиск`,render:function(e){let[,t]=s(),n=e.query??``;return(0,o.jsx)(i,{...e,query:n,onQuery:n=>{e.onQuery?.(n),t({query:n})},getOptionSearchText:e=>[e.name,e.code,...e.searchAliases],getOptionDisabled:(e,t)=>{let n=l[0].id,r=t.selectedKeys.has(n);return e.id===n?[...t.selectedKeys].some(e=>e!==n):r},onChange:n=>{e.onChange(n),t({value:n})}})},args:{description:`«Все подразделения» взаимоисключается с частным выбором. Поиск учитывает скрытые синонимы, например «СПО».`,query:``,onQuery:c(),value:[]}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
- name: "Identity независимо от code",
3
- render: function Render(args) {
4
- const [, updateArgs] = useArgs<MultiSelectProps<DepartmentOption>>();
5
- return <MultiSelect {...args} value={args.value ?? [departmentOptions[1]]} onChange={value => {
6
- args.onChange(value);
7
- updateArgs({
8
- value
9
- });
10
- }} />;
11
- },
12
- args: {
13
- description: "Обе учебные option имеют code УО-01, но остаются независимыми благодаря разным id.",
14
- value: [departmentOptions[1]]
15
- }
16
- }`,...d.parameters?.docs?.source}}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
17
- name: "Группы и выбранные option первыми",
18
- render: function Render(args) {
19
- const [, updateArgs] = useArgs<MultiSelectProps<DepartmentOption>>();
20
- return <MultiSelect {...args} getOptionGroup={option => ({
21
- key: option.direction,
22
- label: option.direction
23
- })} onChange={value => {
24
- args.onChange(value);
25
- updateArgs({
26
- value
27
- });
28
- }} />;
29
- },
30
- args: {
31
- description: "Подтверждённые option показаны первыми; внутри выбранной и доступной секций группы строятся независимо.",
32
- value: [departmentOptions[1], departmentOptions[3]]
33
- }
34
- }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
35
- name: "Контекстная блокировка и поиск",
36
- render: function Render(args) {
37
- const [, updateArgs] = useArgs<MultiSelectProps<DepartmentOption>>();
38
- const query = args.query ?? "";
39
- return <MultiSelect {...args} query={query} onQuery={nextQuery => {
40
- args.onQuery?.(nextQuery);
41
- updateArgs({
42
- query: nextQuery
43
- });
44
- }} getOptionSearchText={option => [option.name, option.code, ...option.searchAliases]} getOptionDisabled={(option, context) => {
45
- const allDepartmentsKey = departmentOptions[0].id;
46
- const hasAllDepartments = context.selectedKeys.has(allDepartmentsKey);
47
- if (option.id === allDepartmentsKey) {
48
- return [...context.selectedKeys].some(key => key !== allDepartmentsKey);
49
- }
50
- return hasAllDepartments;
51
- }} onChange={value => {
52
- args.onChange(value);
53
- updateArgs({
54
- value
55
- });
56
- }} />;
57
- },
58
- args: {
59
- description: "«Все подразделения» взаимоисключается с частным выбором. Поиск учитывает скрытые синонимы, например «СПО».",
60
- query: "",
61
- onQuery: fn<(value: string) => void>(),
62
- value: []
63
- }
64
- }`,...p.parameters?.docs?.source}}},m=[`IndependentIdentity`,`GroupedSelectedFirst`,`ContextualDisabledAndSearch`]})))()}export{h as a,a as i,f as n,d as r,p as t};
@@ -1,3 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./CheckBox-C-EWY4_-.js";import{n as i}from"./iframe-ltYEol2F.js";import{n as a,t as o}from"./Text-CcgH9LXI.js";import{n as s,t as c}from"./ui.module-l7VCYIW-.js";import{n as l,t as ee}from"./PickerField-w1JCZyzA.js";import{c as u,d as te,f as d,i as ne,l as f,n as re,r as p,s as m,t as h,u as ie}from"./usePickerTriggerController-vNC5e_t0.js";import{n as ae,t as oe}from"./Separator-BQlVHMcy.js";import{n as se,t as g}from"./Option-ChGr-plg.js";import{i as ce,n as le,r as _,t as v}from"./usePickerQuery-OTz4Oze6.js";import{n as ue,t as y}from"./usePickerDefaultFilter-ien2ZY7g.js";import{i as de,n as b,r as x,t as fe}from"./formatMultiSelectOptionCount-xGq1uM2H.js";import{n as S,t as C}from"./OptionButton-D6mT04a1.js";function pe(e,t=!1){return t&&Array.isArray(e)?e:[...e]}function w(){return(w=e((()=>{})))()}function me(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(n));return e.every(e=>r.has(n(e)))}var T,E,D,O;function k(){return(k=e((()=>{T=`_9oSdQi`,E=`d9SDKQ`,D=`xCo7w9`,O={multiSelect:T,optionCheckBox:E,optionActionCell:D}})))()}function A(e,t){let n=[];for(let r of e){let e=t(r.option),i=n.at(-1),a=i?.group?.key===e?.key;if(i&&a){i.entries.push(r);continue}n.push({group:e,entries:[r]})}return n}function j({option:e,index:t,listId:n,activeIndex:i,selectedKeys:a,query:o,highlightQuery:s,getOptionKey:c,getOptionDisabled:l,getOptionId:ee,setOptionRef:u,toggleOption:te,selectOnlyOption:d,renderOption:ne}){let f=t===i,re=c(e),p=a.has(re),m=l?.(e)??!1,h=ne(e,{selected:p,active:f,disabled:m,query:o,highlightQuery:s});return(0,M.jsxs)(g,{id:ee(n,t),ref:e=>u(t,e),role:`row`,"aria-selected":p,"aria-disabled":m||void 0,selected:p,active:f,disabled:m,children:[(0,M.jsx)(`div`,{role:`gridcell`,className:O.optionCheckBox,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:e=>e.stopPropagation(),children:(0,M.jsx)(r,{value:p,disabled:m,"aria-label":`${p?`Убрать`:`Добавить`} «${h.text}» ${p?`из выбора`:`в выбор`}`,onChange:()=>te(e)})}),(0,M.jsx)(`div`,{role:`gridcell`,className:O.optionActionCell,children:(0,M.jsx)(C,{tabIndex:-1,disabled:m,"aria-label":`Выбрать только «${h.text}»`,text:h.text,code:h.code,searchText:s,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e)})})]})}var M;function N(){return(N=e((()=>{n(),se(),S(),k(),M=i(),j.__docgenInfo={description:`Одна интерактивная строка grid: checkbox меняет draft, основная кнопка подтверждает только эту опцию.`,methods:[],displayName:`MultiSelectOptionRow`}})))()}function he({entries:e,sectionId:t,getOptionGroup:n,...r}){return(n?A(e,n):[{group:void 0,entries:e}]).map((e,n)=>{let i=e.entries.map(({option:e,index:t})=>(0,F.jsx)(j,{option:e,index:t,...r},`${r.getOptionKey(e)}-${t}`));if(!e.group)return(0,F.jsx)(P.Fragment,{children:i},`${t}-ungrouped-${n}`);let a=`${t}-group-${n}`;return(0,F.jsxs)(`div`,{role:`rowgroup`,"aria-labelledby":a,children:[(0,F.jsx)(`div`,{id:a,role:`row`,className:s.uiPopupGroupLabel,children:(0,F.jsx)(`div`,{role:`gridcell`,children:e.group.label})}),i]},`${t}-${e.group.key}-${n}`)})}var P,F;function I(){return(I=e((()=>{P=t(),c(),N(),F=i()})))()}function L({text:e,isError:t}){return(0,R.jsxs)(`div`,{className:s.uiPopupOption,children:[(0,R.jsx)(`span`,{className:s.uiPopupOptionIcon}),(0,R.jsx)(o,{color:t?`error`:`primary`,children:e})]})}var R;function z(){return(z=e((()=>{a(),c(),R=i(),L.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function ge({isNoData:e,error:t,children:n}){return e?(0,B.jsx)(_,{emptyState:(0,B.jsx)(L,{text:`Нет данных`})}):t?(0,B.jsx)(_,{errorState:(0,B.jsx)(L,{isError:!0,text:`Ошибка загрузки`})}):(0,B.jsx)(B.Fragment,{children:n})}var B;function V(){return(V=e((()=>{ce(),z(),B=i(),ge.__docgenInfo={description:`Выбирает одно доступное состояние тела popup, не меняя структуру самого grid.`,methods:[],displayName:`MultiSelectOptionsWrapper`}})))()}function H({ref:e,options:t,value:n,onChange:r,getOptionKey:i,getOptionLabel:a,getOptionCode:o,getOptionGroup:s,getOptionSearchText:c,label:l,description:u,placeholder:d,size:p,query:h,defaultQuery:ie,highlightQuery:ae,onQuery:se,defaultFilter:g=!0,onOpen:ce,onClose:_,getOptionDisabled:v,disabled:y,error:b,isLoading:x,renderToken:S,renderToolbar:C,renderOption:w,preserveOptionArrayReference:T=!1}){let E=(0,U.useRef)(null),[D,k]=(0,U.useState)(!1),A=`search-multi`,j=(0,U.useMemo)(()=>pe(n,T),[T,n]),M=(0,U.useMemo)(()=>new Set(j.map(i)),[j,i]),N=(0,U.useMemo)(()=>t.filter(e=>!M.has(i(e))),[M,i,t]),{query:P,setQuery:F,resetQueryOnClose:I}=le({query:h,defaultQuery:ie,onQuery:se,triggerMode:A}),L=e=>{D&&!e&&I&&F(``),k(e)},R=(0,U.useCallback)(e=>c?.(e)??[a(e),o?.(e),te(s?.(e)?.label)].filter(e=>!!e),[o,s,a,c]),z=ue({options:j,query:P,enabled:g,getSearchText:R}),B=ue({options:N,query:P,enabled:g,getSearchText:R}),V=(0,U.useMemo)(()=>[...z,...B],[B,z]),H=z.length>0?0:-1,G=(0,U.useCallback)((e,t)=>me(e,t,i),[i]),{draftValue:K,setDraftValue:q,prepareOpen:_e}=de({value:j,open:D,onCommit:r,onOpen:ce,onClose:_,isEqual:G}),J=(0,U.useMemo)(()=>new Set(K.map(i)),[K,i]),ve=(0,U.useMemo)(()=>({selectedOptions:K,committedSelectedOptions:j,selectedKeys:J,open:D}),[j,K,D,J]),Y=(0,U.useCallback)(e=>v?.(e,ve)??!1,[v,ve]),{activeIndex:X,context:ye,floatingStyles:be,getFloatingProps:xe,setReference:Se,setFloating:Ce,setOptionRef:we,close:Te,openList:Ee,toggleOpen:De,handleReferenceKeyDown:Oe,handleFloatingKeyDown:ke,getOptionId:Ae,getActiveOptionId:je}=ne({options:V,selectedIndex:H,open:D,onOpenChange:L,onSelect:void 0,disabled:y,getOptionDisabled:Y,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:A}),Me=ae??P,Z=e=>{let t=i(e);q(n=>n.some(e=>i(e)===t)?n.filter(e=>i(e)!==t):Y(e)?n:[...n,e])},Ne=(0,U.useCallback)(t=>{if(E.current=t,typeof e==`function`){e(t);return}e&&(e.current=t)},[e]),Pe=()=>{q([]),D||r([])},Fe=()=>{q(e=>{let t=[...e],n=new Set(e.map(i));for(let e of V){let r=i(e);!n.has(r)&&!Y(e)&&(n.add(r),t.push(e))}return t})},Ie=()=>{q([])},Le=e=>{Y(e)||(q([e]),Te())},Q=D?K:j,Re=Q.length>0,ze={selectedOptions:Q,committedSelectedOptions:j,availableOptions:B,query:P,open:D,clearSelection:Pe,selectAll:Fe,deselectAll:Ie},Be=Q.length>1?fe(Q.length):Q.length===1?a(Q[0]):void 0,Ve=S===void 0?Be:typeof S==`function`?S(ze):null,He=typeof C==`function`?C(ze):C,Ue=(0,U.useCallback)(e=>({text:a(e),code:o?.(e)}),[o,a]),We=w??Ue,Ge=z.map((e,t)=>({option:e,index:t})),Ke=B.map((e,t)=>({option:e,index:t+Ge.length})),qe=!x&&!b&&V.length===0,$=re({mode:A,open:D,currentQuery:P,hasDisplayValue:!1,inputRef:E,setQuery:F,openList:Ee,close:Te,toggleOpen:De,onBeforeOpen:()=>{D||_e()}});return(0,W.jsx)(ee,{label:l,description:u,disabled:y,size:p,className:O.multiSelect,children:({controlId:e,labelId:n,describedBy:r})=>{let a=`${e}-grid`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(m,{ref:Ne,rootRef:Se,id:e,type:`text`,role:`combobox`,autoComplete:`off`,isLoading:x,disabled:y,open:D,optionCount:t.length,label:l,placeholder:d,placeholderFallback:`Выберите значения`,value:P,selectedValue:Ve,hasSelection:Re,showSelectedValue:Re&&P.length===0,clearable:!0,onClear:Pe,clearAriaLabel:`Очистить все`,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,"aria-labelledby":n,"aria-describedby":r,"aria-haspopup":`grid`,"aria-expanded":D,"aria-controls":D?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":D?je(a):void 0,rootClassName:`flex alignItemsCenter`,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{if(Oe(e),!e.defaultPrevented){if(D&&e.ctrlKey&&e.key===` `){e.preventDefault();let t=V[X];X>=0&&X<V.length&&Z(t);return}$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{let e=V[X];X>=0&&X<V.length&&Le(e)},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}}),(0,W.jsx)(f,{open:D,context:ye,floatingStyles:be,listId:a,labelId:n,descriptionId:r,activeOptionId:D?je(a):void 0,ariaMultiselectable:!0,popupRole:`grid`,setFloating:Ce,getFloatingProps:xe,onKeyDown:ke,initialFocus:-1,returnFocus:!1,tabIndex:-1,toolbar:He,selectionActions:C===void 0?{onSelectAll:Fe,onDeselectAll:Ie}:void 0,children:(0,W.jsx)(ge,{isNoData:qe,error:b,children:(0,W.jsxs)(`div`,{role:`presentation`,className:`scrollable overscroll h100`,children:[(0,W.jsx)(he,{entries:Ge,sectionId:`${a}-selected`,listId:a,activeIndex:X,selectedKeys:J,query:P,highlightQuery:Me,getOptionKey:i,getOptionGroup:s,getOptionDisabled:Y,getOptionId:Ae,setOptionRef:we,toggleOption:Z,selectOnlyOption:Le,renderOption:We}),Ge.length>0&&Ke.length>0&&(0,W.jsx)(oe,{"aria-hidden":`true`,className:`marginBlockSm`}),(0,W.jsx)(he,{entries:Ke,sectionId:`${a}-available`,listId:a,activeIndex:X,selectedKeys:J,query:P,highlightQuery:Me,getOptionKey:i,getOptionGroup:s,getOptionDisabled:Y,getOptionId:Ae,setOptionRef:we,toggleOption:Z,selectOnlyOption:Le,renderOption:We})]})})})]})}})}var U,W;function G(){return(G=e((()=>{U=t(),d(),l(),ie(),u(),y(),p(),v(),x(),h(),ae(),b(),k(),I(),V(),W=i(),H.__docgenInfo={description:`Единая generic-реализация множественного выбора. Публичные компоненты только
2
- адаптируют свои контракты к этим selector-функциям, поэтому focus и a11y
3
- поведение не расходятся между новым и legacy API.`,methods:[],displayName:`MultiSelectCore`,props:{defaultFilter:{defaultValue:{value:`true`,computed:!1},required:!1},preserveOptionArrayReference:{defaultValue:{value:`false`,computed:!1},required:!1}}}})))()}export{pe as i,G as n,w as r,H as t};
@@ -1,148 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-ltYEol2F.js";import{a as i,s as a,t as o}from"./odata-Dd_3_5NS.js";import{a as s,i as c}from"./utils-tg3ibbzi.js";import{a as l,c as u,i as d,o as f,r as p,s as m}from"./OptionContent-CXc6K3fK.js";import{n as ee,t as h}from"./createControlledStoryRender-BouhvX-R.js";import{c as te,l as ne}from"./Input-b2F0zrLw.js";import{n as re,t as ie}from"./Select-CClfxa48.js";import{a as g,i as _,r as ae,t as v}from"./useODataSelectBase-bPN0T_Xm.js";import{a as oe,c as se,i as ce,l as le,n as y,o as b,r as ue,s as x,t as S,u as C}from"./odataStoryFixtures-3lOfs9T6.js";function w({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=ae({odata:e,segment:t,model:n,value:r?[r]:[],dependencies:i}),s=o.selectedItems[0],c=(0,T.useMemo)(()=>s?[s,...o.filteredItems]:o.filteredItems,[o.filteredItems,s]),l=e=>{a(e?.[o.selectionKey])};return{...o,selectedItem:s,options:c,handleChange:l}}var T;function E(){return(E=e((()=>{T=n(),v()})))()}function D({label:e,code:t,highlight:n,labelClassName:r,codeClassName:i}){return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(p,{className:s(`flexEllipsis`,r),children:(0,O.jsx)(m,{text:e,highlight:n})}),t&&(0,O.jsx)(l,{className:i,children:(0,O.jsx)(m,{text:t,highlight:n})})]})}var O;function k(){return(k=e((()=>{c(),f(),d(),u(),O=r(),D.__docgenInfo={description:`Универсальный рендерер опции. Используется и в single-select, и в multi-select.`,methods:[],displayName:`SelectOptionContent`,props:{label:{required:!0,tsType:{name:`string`},description:``},code:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},labelClassName:{required:!1,tsType:{name:`string`},description:`Приватный визуальный modifier label для специализированного владельца option.`},codeClassName:{required:!1,tsType:{name:`string`},description:`Отдельный modifier code, потому что code задаёт собственный variable-font weight.`}}}})))()}function A(e,t,n){return e?t||Object.keys(e).find(e=>e!==n)||n:t||n}function j({odata:e,segment:t,model:n,size:r,label:i,description:o,disabled:s,value:c,dependencies:l,onChange:u,clearable:d}){let f=w({odata:e,segment:t,model:a(n),value:c,dependencies:l,onChange:u});if(f.isLoading)return(0,M.jsx)(te,{size:r,label:i,description:o});let p=t.hideCode??e.hideCode,m=A(f.selectedItem??f.options[0],f.textKey,f.codeKey);return(0,M.jsx)(ie,{size:r,label:i,description:o,options:f.options,value:f.selectedItem,onChange:f.handleChange,getOptionKey:e=>e[f.codeKey],getOptionLabel:e=>e[m],getOptionCode:p?void 0:e=>e[f.codeKey],getOptionAriaLabel:e=>p||e[m]===e[f.codeKey]?String(e[m]):`${e[m]} ${e[f.codeKey]}`,renderValue:e=>(0,M.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey]}),renderOption:e=>(0,M.jsx)(D,{label:e[m],code:p?void 0:e[f.codeKey],highlight:f.debouncedQuery}),searchable:!0,query:f.query,onQuery:f.setQuery,defaultFilter:!1,disabled:s||f.isLoading,placeholder:f.placeholder,isLoading:f.isLoading,errorState:f.isError?`Ошибка загрузки`:void 0,emptyState:!f.isLoading&&!f.isError?`Нет данных`:void 0,clearable:d})}var M;function N(){return(N=e((()=>{i(),ne(),E(),re(),k(),M=r(),j.__docgenInfo={description:``,methods:[],displayName:`ODataSelect`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function P(e){let{item:t,disabled:n,label:r,description:i,size:a,width:o=15,clearable:s}=e,c=g(e),{updateSegment:l}=c,u=`calc(${o}em + var(--width-add))`,d=(0,F.useCallback)(e=>{l(t.id,e===void 0?[]:[e])},[t.id,l]);return(0,I.jsx)(`div`,{style:{maxWidth:u,minWidth:u},children:(0,I.jsx)(j,{odata:t.odata,segment:t.segment,model:t.model,dependencies:c.values,value:c.values[t.id]?.[0],onChange:d,disabled:n||c.isSegmentDisabled(t.id),label:r,description:i,size:a,clearable:s})})}var F,I;function L(){return(L=e((()=>{F=n(),_(),N(),I=r(),P.__docgenInfo={description:`Адаптирует один развёрнутый зависимый OData-сегмент к single-select UI.
2
- Общий снимок остаётся массивным, поэтому совместим с \`dependencies\` и
3
- может совместно использоваться с segment-level MultiSelect-контролами.`,methods:[],displayName:`ODataDependentSegmentSelect`,props:{values:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Внешний снимок значений. При наличии включает controlled-режим.`},defaultValues:{required:!1,tsType:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},description:`Начальный снимок для uncontrolled-режима.`},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(values: ODataDependentSelectionValues) => void`,signature:{arguments:[{type:{name:`Record`,elements:[{name:`string`},{name:`Array`,elements:[{name:`string`}],raw:`string[]`}],raw:`Record<string, string[]>`},name:`values`}],return:{name:`void`}}},description:`Получает полный снимок после каждого изменения сегмента.`},item:{required:!0,tsType:{name:`ODataDependentSegmentItem`},description:`Развёрнутое описание конкретного OData-сегмента.`},disabled:{required:!1,tsType:{name:`boolean`},description:`Дополнительная внешняя блокировка поверх sequential-policy.`},label:{required:!1,tsType:{name:`ReactNode`},description:`Заголовок поля.`},description:{required:!1,tsType:{name:`string`},description:`Дополнительное описание поля.`},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:`Размер базового Select или MultiSelect.`},width:{required:!1,tsType:{name:`number`},description:`Ширина элемента в \`em\` без служебной добавки базового input.
4
-
5
- @default 15`},clearable:{required:!1,tsType:{name:`boolean`},description:`Показывает действие очистки выбранного значения.`}}}})))()}var de=t({BasicDivision:()=>W,CollectionError:()=>Z,HideCode:()=>G,LinkedFilters:()=>J,LinkedFiltersDemo:()=>R,LoadingState:()=>Y,MetadataError:()=>X,SelectTextValue:()=>K,StaticDependency:()=>q,__namedExportsOrder:()=>Q,default:()=>U});function fe({args:e,updateArgs:t}){return(0,z.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,z.jsx)(j,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,z.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value||`пусто`]})]})}function R(){let e=g({selectionMode:`sequential`,segmentOrder:V});return(0,z.jsxs)(`div`,{style:{display:`grid`,gap:16,maxWidth:720},children:[B.map((t,n)=>(0,z.jsx)(P,{item:t,values:e.values,onChange:e.updateValues,selectionMode:`sequential`,segmentOrder:V,label:t.segment.placeholder,description:n===0?`Первый уровень доступен сразу.`:`Уровень включается после заполнения всего предыдущего пути.`,width:30,clearable:!0},t.id)),(0,z.jsx)(`div`,{style:{display:`grid`,gap:4,fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:(0,z.jsxs)(`div`,{children:[`Общий снимок: `,JSON.stringify(e.values)]})})]})}var z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q;function $(){return($=e((()=>{i(),ee(),_(),L(),N(),ce(),z=r(),B=o([{odata:y,segments:se,model:S}]),V=B.map(e=>e.id),H=h((e,t)=>(0,z.jsx)(fe,{args:e,updateArgs:t})),U={title:`UI/ODataSelect`,component:j,decorators:[C],beforeEach:oe,parameters:{atomicCanvas:!0,layout:`padded`,odataMockMode:`success`},args:{label:`Регион`,description:`Пример OData Select на основе конфигурации ui control.`,odata:y,model:S,segment:ue,value:void 0,onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},odata:{description:`Конфигурация OData-источника.`,control:!1},model:{description:`Модель OData-коллекции и codeKey.`,control:!1},segment:{description:`Конфигурация отображения сегмента.`,control:!1},dependencies:{description:`Выбранные значения upstream-сегментов.`,control:!1},value:{description:`Контролируемый код или текст выбранной option.`,control:!1},onChange:{description:`Вызывается с новым значением option.`,control:!1},clearable:{description:`Показывает действие очистки выбора.`,control:`boolean`},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},W={name:`Базовый регион`,render:H,args:{label:`Регион`,description:`Базовая настройка single-select для выбора кода REGION.`,model:{...S,codeKey:`REGION`},segment:{placeholder:`Регион`},value:x.region}},G={name:`Скрытый код`,render:H,args:{label:`Подразделение`,description:`Код скрыт и в выпадающем списке, и в выбранном значении.`,model:{...S,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`,hideCode:!0},value:x.branch}},K={name:`Выбор текста вместо кода`,render:H,args:{label:`Регион по тексту`,description:`Снаружи хранится текстовое значение, а не код.`,model:{...S,codeKey:`REGION`},segment:{placeholder:`Регион`,selectText:!0},value:x.regionText}},q={name:`Зависимость от региона`,render:H,args:{label:`Подразделение c зависимостью`,description:`Фильтрация подразделений по уже выбранному региону через props.dependencies.`,model:{...S,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`},dependencies:{REGION:[x.region]},value:x.branch}},J={name:`Связанная цепочка фильтров`,render:()=>(0,z.jsx)(R,{})},Y={name:`Состояние загрузки`,parameters:{odataMockMode:`loading`},render:H,args:{odata:b.loading,label:`Команда`,description:`Mock с задержкой ответа, чтобы проверить loading-state.`,model:{...S,codeKey:`TEAM`},segment:{placeholder:`Команда`}}},X={name:`Ошибка metadata`,decorators:[le],parameters:{odataMockMode:`metadataError`},render:H,args:{odata:b.metadataError,label:`Регион`,description:`Сервис возвращает ошибку metadata.`,model:{...S,codeKey:`REGION`},segment:{placeholder:`Регион`}}},Z={name:`Деградация при ошибке коллекции`,parameters:{odataMockMode:`collectionError`},render:H,args:{odata:b.collectionError,label:`Ответственный`,description:`Transport возвращает 500, а текущий API-контракт безопасно показывает пустой список.`,model:{...S,codeKey:`OWNER`},segment:{placeholder:`Ответственный`}}},R.__docgenInfo={description:``,methods:[],displayName:`LinkedFiltersDemo`},R.parameters={...R.parameters,docs:{...R.parameters?.docs,source:{originalSource:`function LinkedFiltersDemo() {
6
- const selection = useODataDependentSelection({
7
- selectionMode: "sequential",
8
- segmentOrder: linkedSegmentOrder
9
- });
10
- return <div style={{
11
- display: "grid",
12
- gap: 16,
13
- maxWidth: 720
14
- }}>
15
- {linkedSegmentItems.map((item, index) => <ODataDependentSegmentSelect key={item.id} item={item} values={selection.values} onChange={selection.updateValues} selectionMode="sequential" segmentOrder={linkedSegmentOrder} label={item.segment.placeholder} description={index === 0 ? "Первый уровень доступен сразу." : "Уровень включается после заполнения всего предыдущего пути."} width={30} clearable />)}
16
- <div style={{
17
- display: "grid",
18
- gap: 4,
19
- fontSize: "var(--font-size-sm)",
20
- color: "var(--content-1)"
21
- }}>
22
- <div>Общий снимок: {JSON.stringify(selection.values)}</div>
23
- </div>
24
- </div>;
25
- }`,...R.parameters?.docs?.source}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
26
- name: "Базовый регион",
27
- render: renderODataSelectStory,
28
- args: {
29
- label: "Регион",
30
- description: "Базовая настройка single-select для выбора кода REGION.",
31
- model: {
32
- ...baseModel,
33
- codeKey: "REGION"
34
- },
35
- segment: {
36
- placeholder: "Регион"
37
- },
38
- value: storyValues.region
39
- }
40
- }`,...W.parameters?.docs?.source}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
41
- name: "Скрытый код",
42
- render: renderODataSelectStory,
43
- args: {
44
- label: "Подразделение",
45
- description: "Код скрыт и в выпадающем списке, и в выбранном значении.",
46
- model: {
47
- ...baseModel,
48
- codeKey: "BRANCH"
49
- },
50
- segment: {
51
- placeholder: "Подразделение",
52
- hideCode: true
53
- },
54
- value: storyValues.branch
55
- }
56
- }`,...G.parameters?.docs?.source}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
57
- name: "Выбор текста вместо кода",
58
- render: renderODataSelectStory,
59
- args: {
60
- label: "Регион по тексту",
61
- description: "Снаружи хранится текстовое значение, а не код.",
62
- model: {
63
- ...baseModel,
64
- codeKey: "REGION"
65
- },
66
- segment: {
67
- placeholder: "Регион",
68
- selectText: true
69
- },
70
- value: storyValues.regionText
71
- }
72
- }`,...K.parameters?.docs?.source}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
73
- name: "Зависимость от региона",
74
- render: renderODataSelectStory,
75
- args: {
76
- label: "Подразделение c зависимостью",
77
- description: "Фильтрация подразделений по уже выбранному региону через props.dependencies.",
78
- model: {
79
- ...baseModel,
80
- codeKey: "BRANCH"
81
- },
82
- segment: {
83
- placeholder: "Подразделение"
84
- },
85
- dependencies: {
86
- REGION: [storyValues.region]
87
- },
88
- value: storyValues.branch
89
- }
90
- }`,...q.parameters?.docs?.source}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
91
- name: "Связанная цепочка фильтров",
92
- render: () => <LinkedFiltersDemo />
93
- }`,...J.parameters?.docs?.source}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
94
- name: "Состояние загрузки",
95
- parameters: {
96
- odataMockMode: "loading"
97
- },
98
- render: renderODataSelectStory,
99
- args: {
100
- odata: odataStoryOData.loading,
101
- label: "Команда",
102
- description: "Mock с задержкой ответа, чтобы проверить loading-state.",
103
- model: {
104
- ...baseModel,
105
- codeKey: "TEAM"
106
- },
107
- segment: {
108
- placeholder: "Команда"
109
- }
110
- }
111
- }`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
112
- name: "Ошибка metadata",
113
- decorators: [withODataMetadataErrorStoryBoundary],
114
- parameters: {
115
- odataMockMode: "metadataError"
116
- },
117
- render: renderODataSelectStory,
118
- args: {
119
- odata: odataStoryOData.metadataError,
120
- label: "Регион",
121
- description: "Сервис возвращает ошибку metadata.",
122
- model: {
123
- ...baseModel,
124
- codeKey: "REGION"
125
- },
126
- segment: {
127
- placeholder: "Регион"
128
- }
129
- }
130
- }`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
131
- name: "Деградация при ошибке коллекции",
132
- parameters: {
133
- odataMockMode: "collectionError"
134
- },
135
- render: renderODataSelectStory,
136
- args: {
137
- odata: odataStoryOData.collectionError,
138
- label: "Ответственный",
139
- description: "Transport возвращает 500, а текущий API-контракт безопасно показывает пустой список.",
140
- model: {
141
- ...baseModel,
142
- codeKey: "OWNER"
143
- },
144
- segment: {
145
- placeholder: "Ответственный"
146
- }
147
- }
148
- }`,...Z.parameters?.docs?.source}}},Q=[`LinkedFiltersDemo`,`BasicDivision`,`HideCode`,`SelectTextValue`,`StaticDependency`,`LinkedFilters`,`LoadingState`,`MetadataError`,`CollectionError`]})))()}export{Y as a,K as c,J as i,q as l,Z as n,X as o,G as r,de as s,W as t,$ as u};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{d as n,l as r,s as i,u as a}from"./Input-b2F0zrLw.js";function o({id:e,label:t,description:r,disabled:a,size:o,className:c,error:l,children:u}){let{controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h}=n({id:e,hasLabel:t!=null,hasDescription:!!r,hasError:!!l});return(0,s.jsx)(i,{label:t,description:r,disabled:a,size:o,className:c,error:l,controlId:d,labelId:f,descriptionId:p,errorId:m,children:u({controlId:d,labelId:f,descriptionId:p,errorId:m,describedBy:h})})}var s;function c(){return(c=e((()=>{r(),a(),s=t(),o.__docgenInfo={description:``,methods:[],displayName:`PickerField`,props:{id:{required:!1,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},error:{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(context: PickerFieldContext) => ReactNode`,signature:{arguments:[{type:{name:`PickerFieldContext`},name:`context`}],return:{name:`ReactNode`}}},description:``}},composes:[`Omit`]}})))()}export{c as n,o as t};
@@ -1,63 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Bdsl8TP-.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./Select.stories-C0X5pvUk.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{of:y,parameters:{docs:{toc:!0}}}),`
2
- `,(0,C.jsx)(u,{children:`Select`}),`
3
- `,(0,C.jsx)(o,{children:`Getter-based select для примитивов и сложных объектных option`}),`
4
- `,(0,C.jsx)(t.p,{children:`Select уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
5
- Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны заблокированные состояния.`}),`
6
- `,(0,C.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
- `,(0,C.jsx)(f,{}),`
8
- `,(0,C.jsx)(i,{of:b}),`
9
- `,(0,C.jsx)(t.pre,{children:(0,C.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
-
11
- import { Select } from "@ryuzaki13/react-foundation-ui";
12
-
13
- const options = [
14
- { id: 1, name: "Отдел продаж", code: "SLS" },
15
- { id: 2, name: "Закупки", code: "PRC" }
16
- ];
17
-
18
- export function Example() {
19
- const [value, setValue] = useState(undefined);
20
-
21
- return (
22
- <Select
23
- label="Подразделение"
24
- value={value}
25
- onChange={setValue}
26
- options={options}
27
- getOptionKey={(option) => option.id}
28
- getOptionLabel={(option) => option.name}
29
- getOptionCode={(option) => option.code}
30
- />
31
- );
32
- }
33
- `})}),`
34
- `,(0,C.jsx)(t.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
35
- `,(0,C.jsxs)(t.ul,{children:[`
36
- `,(0,C.jsx)(t.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
37
- `,(0,C.jsxs)(t.li,{children:[`Popup следует ARIA-модели `,(0,C.jsx)(t.code,{children:`combobox/listbox`}),`: каждая строка является единственной `,(0,C.jsx)(t.code,{children:`option`}),`, поэтому `,(0,C.jsx)(t.code,{children:`renderOption`}),` должен возвращать только неинтерактивное содержимое.`]}),`
38
- `,(0,C.jsxs)(t.li,{children:[`Стрелки меняют активную опцию, `,(0,C.jsx)(t.code,{children:`Enter`}),` выбирает её, а `,(0,C.jsx)(t.code,{children:`Escape`}),` закрывает popup и возвращает управление trigger.`]}),`
39
- `]}),`
40
- `,(0,C.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
41
- `,(0,C.jsx)(t.h3,{id:`работа-с-объектами-как-со-значениями-option`,children:`Работа с объектами как со значениями option`}),`
42
- `,(0,C.jsx)(t.p,{children:`Работа с объектами как со значениями option.`}),`
43
- `,(0,C.jsx)(d,{of:b}),`
44
- `,(0,C.jsx)(t.h3,{id:`работа-с-примитивными-option`,children:`Работа с примитивными option`}),`
45
- `,(0,C.jsx)(t.p,{children:`Работа с примитивными option.`}),`
46
- `,(0,C.jsx)(d,{of:_}),`
47
- `,(0,C.jsx)(t.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
48
- `,(0,C.jsx)(t.p,{children:`Поведение без выбранного значения.`}),`
49
- `,(0,C.jsx)(d,{of:p}),`
50
- `,(0,C.jsx)(t.h3,{id:`группировка-опций`,children:`Группировка опций`}),`
51
- `,(0,C.jsxs)(t.p,{children:[(0,C.jsx)(t.code,{children:`getOptionGroup`}),` объединяет соседние опции с одинаковым `,(0,C.jsx)(t.code,{children:`key`}),` под доступным заголовком. Опции без группы остаются обычными элементами списка.
52
- Для длинных заголовков ширину popup можно ограничить через `,(0,C.jsx)(t.code,{children:`optionsMaxWidth`}),`, например `,(0,C.jsx)(t.code,{children:`optionsMaxWidth="40rem"`}),`.`]}),`
53
- `,(0,C.jsx)(d,{of:h}),`
54
- `,(0,C.jsx)(t.h3,{id:`кастомный-рендер-option-и-выбранного-значения`,children:`Кастомный рендер option и выбранного значения`}),`
55
- `,(0,C.jsx)(t.p,{children:`Кастомный рендер option и выбранного значения.`}),`
56
- `,(0,C.jsx)(d,{of:g}),`
57
- `,(0,C.jsx)(t.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
58
- `,(0,C.jsx)(t.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
59
- `,(0,C.jsx)(d,{of:v}),`
60
- `,(0,C.jsx)(t.h2,{id:`api`,children:`API`}),`
61
- `,(0,C.jsx)(l,{of:y}),`
62
- `,(0,C.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
63
- `,(0,C.jsx)(a,{includePrimary:!1})]})}function S(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,C.jsx)(t,{...e,children:(0,C.jsx)(x,{...e})}):x(e)}var C;function w(){return(w=e((()=>{C=t(),r(),c(),m()})))()}w();export{S as default};
@@ -1,12 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./check-DGqyuB4O.js";import{n as i}from"./iframe-ltYEol2F.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as s,t as ee}from"./OptionContent-CXc6K3fK.js";import{n as c,t as l}from"./ui.module-l7VCYIW-.js";import{n as u,t as te}from"./PickerField-w1JCZyzA.js";import{c as d,d as f,f as p,i as ne,l as re,n as ie,r as m,s as h,t as g,u as _}from"./usePickerTriggerController-vNC5e_t0.js";import{n as v,t as ae}from"./Option-ChGr-plg.js";import{i as y,n as oe,r as se,t as b}from"./usePickerQuery-OTz4Oze6.js";import{n as x,t as S}from"./usePickerDefaultFilter-ien2ZY7g.js";import{n as C,t as w}from"./OptionContentContainer-D0p7mbft.js";function ce({option:e,getOptionLabel:t,getOptionCode:n,getOptionGroup:r}){return[f(t(e)),f(n?.(e)),f(r?.(e)?.label)].filter(e=>!!e).join(` `).toLowerCase()}function T(){return(T=e((()=>{p()})))()}function le(e,t){let n=[];return e.forEach((e,r)=>{let i=t(e),a=n.at(-1),o=a?.group?.key===i?.key;if(a&&o){a.items.push({option:e,index:r});return}n.push({group:i,items:[{option:e,index:r}]})}),n}function E(e){let{label:t,description:n,disabled:i,placeholder:o,size:s,options:l,value:u,onChange:d,getOptionKey:p,getOptionLabel:m,getOptionCode:g,getOptionSearchText:_,getOptionDisabled:v,getOptionAriaLabel:y,getOptionGroup:b,getOptionClassName:S,renderOption:C,renderValue:T,className:E,buttonClassName:k,optionsClassName:ue,optionsMaxWidth:de,optionsContentClassName:fe,searchable:A=!1,defaultFilter:pe=!0,query:me,defaultQuery:he,onQuery:ge,renderPopupHeader:_e,emptyState:ve,isLoading:j,errorState:M,placement:N=`bottom-start`,clearable:P=!1}=e,F=d,I=(0,D.useRef)(null),[L,ye]=(0,D.useState)(!1),R=A?`search-single`:`display`,z=u===void 0?void 0:p(u),B=z===void 0?void 0:l.find(e=>p(e)===z)??u,{query:V,setQuery:H,resetQueryOnClose:be}=oe({query:me,defaultQuery:he,onQuery:ge,triggerMode:R}),xe=e=>{L&&!e&&be&&H(``),ye(e)},Se=(0,D.useCallback)(e=>_?.(e)??ce({option:e,getOptionLabel:m,getOptionCode:g,getOptionGroup:b}),[_,g,b,m]),U=x({options:l,query:V,enabled:A&&pe,getSearchText:Se}),W=(0,D.useMemo)(()=>b?le(U,b):void 0,[b,U]),Ce=z===void 0?-1:U.findIndex(e=>p(e)===z),{activeIndex:we,context:Te,floatingStyles:Ee,getFloatingProps:De,setReference:Oe,setFloating:ke,setOptionRef:Ae,close:G,openList:je,toggleOpen:Me,selectOption:Ne,selectActiveOption:Pe,handleReferenceKeyDown:Fe,handleFloatingKeyDown:Ie,getOptionId:Le,getActiveOptionId:K}=ne({options:U,selectedIndex:Ce,open:L,onOpenChange:xe,getOptionDisabled:v,onSelect:F,disabled:i,placement:N,triggerMode:R}),q=U.length>0,J=B===void 0?void 0:m(B),Y=B===void 0?void 0:T?T(B):J,Re=f(J),ze=B===void 0?void 0:f(g?.(B)),X=f(Y)??Re??ze??(z===void 0?``:String(z)),Z=A&&(L||V.length>0)?V:B===void 0?``:X,Q=ie({mode:R,open:L,currentQuery:V,hasDisplayValue:B!==void 0,inputRef:I,setQuery:H,openList:je,close:G,toggleOpen:Me}),Be=e=>{I.current=e},Ve=()=>{P&&F(void 0),H(``),G()},$=(e,t,n)=>{let i=p(t),a=z!==void 0&&i===z,o=n===we,s=v?.(t)??!1,c={active:o,selected:a,disabled:s};return(0,O.jsx)(ae,{id:Le(e,n),ref:e=>Ae(n,e),role:`option`,"aria-selected":a,"aria-disabled":s||void 0,"aria-label":y?.(t),active:o,selected:a,disabled:s,className:S?.(t,c),onMouseDown:e=>e.preventDefault(),onClick:()=>Ne(t),children:C?(0,O.jsx)(w,{children:C(t,c)}):(0,O.jsx)(w,{children:(0,O.jsx)(ee,{icon:a?(0,O.jsx)(r,{}):(0,O.jsx)(`span`,{}),text:m(t),code:g?.(t)})})},i)};return(0,O.jsx)(te,{label:t,description:n,disabled:i,size:s,className:E,children:({controlId:e,labelId:n,describedBy:r})=>{let s=`${e}-listbox`;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(h,{ref:Be,rootRef:Oe,id:e,type:`text`,disabled:i,readOnly:!A,autoComplete:`off`,role:`combobox`,isLoading:j,open:L,optionCount:l.length,label:t,placeholder:o,value:Z,selectedValue:Y??X,hasSelection:B!==void 0,showSelectedValue:!1,clearable:!!P,onClear:Ve,onToggleMouseDown:Q.handleToggleMouseDown,onToggleClick:Q.handleToggleClick,"aria-labelledby":n,"aria-describedby":r,"aria-haspopup":`listbox`,"aria-expanded":L,"aria-controls":L?s:void 0,"aria-autocomplete":A?`list`:`none`,"aria-activedescendant":L?K(s):void 0,inputClassName:a(k,`textOverflow`),onChange:e=>{A&&Q.handleTriggerInputChange(e.target.value)},onClick:Q.handleTriggerClick,onFocus:e=>{Q.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Fe(e),!e.defaultPrevented&&Q.handleTriggerKeyDown({event:e,onActivateWhenOpen:Pe,enableSpaceActivation:!A})}}),(0,O.jsx)(re,{open:L,context:Te,floatingStyles:Ee,listId:s,labelId:n,descriptionId:r,activeOptionId:q?K(s):void 0,setFloating:ke,getFloatingProps:De,onKeyDown:Ie,className:ue,maxWidth:de,toolbar:_e,children:(0,O.jsx)(`div`,{role:`presentation`,className:a(fe,`h100 scrollable overscroll`),children:q?W?W.map((e,t)=>{let n=e.group?`${s}-group-${t}`:void 0,r=e.items.map(({option:e,index:t})=>$(s,e,t));return e.group?(0,O.jsxs)(`div`,{role:`group`,"aria-labelledby":n,children:[(0,O.jsx)(`div`,{id:n,className:c.uiPopupGroupLabel,children:e.group.label}),r]},`group-${String(e.group.key)}-${t}`):(0,O.jsx)(D.Fragment,{children:r},`options-${t}`)}):U.map((e,t)=>$(s,e,t)):(0,O.jsx)(se,{emptyState:ve,errorState:M})})})]})}})}var D,O;function k(){return(k=e((()=>{D=t(),o(),n(),v(),s(),C(),p(),u(),_(),y(),d(),S(),m(),b(),g(),l(),T(),O=i(),E.__docgenInfo={description:`Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.`,methods:[],displayName:`Select`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},getOptionKey:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => SelectOptionKey`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionLabel:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionSearchText:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string | readonly string[]`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`union`,raw:`string | readonly string[]`,elements:[{name:`string`},{name:`unknown`}]}}},description:`Явный поисковый текст для опции с произвольным ReactNode-render.`},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionGroup:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => SelectOptionGroup | undefined`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`union`,raw:`SelectOptionGroup | undefined`,elements:[{name:`signature`,type:`object`,raw:`{
2
- readonly key: SelectOptionKey;
3
- readonly label: ReactNode;
4
- }`,signature:{properties:[{key:`key`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`ReactNode`,required:!0}}]}},{name:`undefined`}]}}},description:``},getOptionClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => string | undefined`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
5
- active: boolean;
6
- selected: boolean;
7
- disabled: boolean;
8
- }`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
9
- active: boolean;
10
- selected: boolean;
11
- disabled: boolean;
12
- }`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`ReactNode`}}},description:``},renderValue:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},className:{required:!1,tsType:{name:`string`},description:``},buttonClassName:{required:!1,tsType:{name:`string`},description:``},optionsClassName:{required:!1,tsType:{name:`string`},description:``},optionsMaxWidth:{required:!1,tsType:{name:`CSSProperties["maxWidth"]`,raw:`CSSProperties["maxWidth"]`},description:``},optionsContentClassName:{required:!1,tsType:{name:`string`},description:``},searchable:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},renderPopupHeader:{required:!1,tsType:{name:`ReactNode`},description:``},emptyState:{required:!1,tsType:{name:`ReactNode`},description:``},errorState:{required:!1,tsType:{name:`ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``},clearable:{required:!1,tsType:{name:`TClearable`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`unknown`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}export{k as n,E as t};