@ryuzaki13/react-foundation-ui 3.8.3 → 3.9.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 (389) hide show
  1. package/dist/base-table/index.js +1 -1
  2. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js → TextEditorLexicalClient-BQH41FFT.js} +2 -2
  3. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js.map → TextEditorLexicalClient-BQH41FFT.js.map} +1 -1
  4. package/dist/chunks/{base-table-BMesCx6H.js → base-table-9H5YuVvB.js} +2 -2
  5. package/dist/chunks/{base-table-BMesCx6H.js.map → base-table-9H5YuVvB.js.map} +1 -1
  6. package/dist/chunks/{context-menu-CrSXJxQL.js → context-menu-BV8636Ou.js} +2 -2
  7. package/dist/chunks/{context-menu-CrSXJxQL.js.map → context-menu-BV8636Ou.js.map} +1 -1
  8. package/dist/chunks/{date-input-CzCDou4s.js → date-input-B7iG9cA7.js} +2 -2
  9. package/dist/chunks/{date-input-CzCDou4s.js.map → date-input-B7iG9cA7.js.map} +1 -1
  10. package/dist/chunks/{input-CuRK9Vbz.js → input-KXI7o06g.js} +7 -7
  11. package/dist/chunks/input-KXI7o06g.js.map +1 -0
  12. package/dist/chunks/{input-files-B8j6Pb_M.js → input-files-CnBNlJo0.js} +2 -2
  13. package/dist/chunks/{input-files-B8j6Pb_M.js.map → input-files-CnBNlJo0.js.map} +1 -1
  14. package/dist/chunks/{picker-SJXnHwsj.js → picker-DagDe9OH.js} +17 -16
  15. package/dist/chunks/picker-DagDe9OH.js.map +1 -0
  16. package/dist/chunks/select-C-1U-ujV.js +368 -0
  17. package/dist/chunks/select-C-1U-ujV.js.map +1 -0
  18. package/dist/chunks/{table-OvvWkKfy.js → table-BRC1OTyE.js} +2 -2
  19. package/dist/chunks/{table-OvvWkKfy.js.map → table-BRC1OTyE.js.map} +1 -1
  20. package/dist/context-menu/index.js +1 -1
  21. package/dist/date-input/index.js +1 -1
  22. package/dist/date-time-input/index.js +1 -1
  23. package/dist/drop-zone/index.js +1 -1
  24. package/dist/image/index.js +2 -2
  25. package/dist/input/Input.d.ts +2 -2
  26. package/dist/input/Input.d.ts.map +1 -1
  27. package/dist/input/index.js +1 -1
  28. package/dist/input-date-time/index.js +1 -1
  29. package/dist/input-file/index.js +1 -1
  30. package/dist/input-files/index.js +1 -1
  31. package/dist/input-image/index.js +1 -1
  32. package/dist/input-search/index.js +1 -1
  33. package/dist/layout-picker/index.js +1 -1
  34. package/dist/listbox/index.js +1 -1
  35. package/dist/multi-select/index.js +171 -161
  36. package/dist/multi-select/index.js.map +1 -1
  37. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts +2 -0
  38. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts.map +1 -1
  39. package/dist/multi-select/ui/MultiSelect.d.ts +3 -0
  40. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  41. package/dist/multi-select/ui/MultiSelectCore.d.ts +1 -1
  42. package/dist/multi-select/ui/MultiSelectCore.d.ts.map +1 -1
  43. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
  44. package/dist/multi-select/ui/ODataMultiSelect.d.ts +5 -2
  45. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
  46. package/dist/multi-select/ui/SerializableMultiSelect.d.ts +3 -1
  47. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
  48. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +4 -0
  49. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -1
  50. package/dist/period-select/PeriodSelect.d.ts +2 -0
  51. package/dist/period-select/PeriodSelect.d.ts.map +1 -1
  52. package/dist/period-select/index.js.map +1 -1
  53. package/dist/picker/PickerField.d.ts +1 -1
  54. package/dist/picker/PickerField.d.ts.map +1 -1
  55. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  56. package/dist/picker/index.js +1 -1
  57. package/dist/picker/types.d.ts +2 -0
  58. package/dist/picker/types.d.ts.map +1 -1
  59. package/dist/preset-range-date-input/index.js +1 -1
  60. package/dist/preset-select/PresetSelect.d.ts +2 -0
  61. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  62. package/dist/preset-select/index.js +1 -1
  63. package/dist/preset-select/index.js.map +1 -1
  64. package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -1
  65. package/dist/select/ODataSelect.d.ts +3 -1
  66. package/dist/select/ODataSelect.d.ts.map +1 -1
  67. package/dist/select/Select.d.ts +3 -0
  68. package/dist/select/Select.d.ts.map +1 -1
  69. package/dist/select/SerializableSelect.d.ts +3 -1
  70. package/dist/select/SerializableSelect.d.ts.map +1 -1
  71. package/dist/select/index.js +1 -1
  72. package/dist/simple-table/index.js +1 -1
  73. package/dist/slider/index.js +2 -2
  74. package/dist/state-select/StateSelect.d.ts +3 -1
  75. package/dist/state-select/StateSelect.d.ts.map +1 -1
  76. package/dist/state-select/index.js +10 -8
  77. package/dist/state-select/index.js.map +1 -1
  78. package/dist/table/index.js +1 -1
  79. package/dist/table-editor/index.js +1 -1
  80. package/dist/table-sorting/index.js +1 -1
  81. package/dist/tag-input/index.js +1 -1
  82. package/dist/text-editor/index.js +1 -1
  83. package/dist/textarea/index.js +1 -1
  84. package/dist/tree-select/ODataTreeMultiSelect.d.ts +3 -1
  85. package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
  86. package/dist/tree-select/ODataTreeSelect.d.ts +3 -1
  87. package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -1
  88. package/dist/tree-select/TreeMultiSelect.d.ts +4 -1
  89. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  90. package/dist/tree-select/TreePickerBase.d.ts +3 -1
  91. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  92. package/dist/tree-select/TreeSelect.d.ts +4 -1
  93. package/dist/tree-select/TreeSelect.d.ts.map +1 -1
  94. package/dist/tree-select/index.js +271 -259
  95. package/dist/tree-select/index.js.map +1 -1
  96. package/dist/tree-table/index.js +1 -1
  97. package/package.json +1 -1
  98. package/storybook-static/assets/{Badge-Exgo2liR.js → Badge-CL58JilM.js} +1 -1
  99. package/storybook-static/assets/{Badge.stories-BSZPB2hP.js → Badge.stories-CXFTvV3D.js} +1 -1
  100. package/storybook-static/assets/{BadgeList-vXAflISJ.js → BadgeList-DLssobfd.js} +1 -1
  101. package/storybook-static/assets/{BarcodeScannerDialog.stories-B5JJTqxe.js → BarcodeScannerDialog.stories-CpMywpKq.js} +1 -1
  102. package/storybook-static/assets/{Button-W5ftYk1w.js → Button-CSbLv1K7.js} +1 -1
  103. package/storybook-static/assets/{Button-BzRtAjtM.js → Button-DMAPWgMI.js} +1 -1
  104. package/storybook-static/assets/{Button.stories-DcuEJMqp.js → Button.stories-CU1kYMvA.js} +1 -1
  105. package/storybook-static/assets/{CalendarView-C8taheM_.js → CalendarView-DuCLo_x5.js} +1 -1
  106. package/storybook-static/assets/{CheckBox-C-EWY4_-.js → CheckBox-BBPasWSk.js} +1 -1
  107. package/storybook-static/assets/{CheckBox-Cahw6EU8.js → CheckBox-Bfcdvr2o.js} +1 -1
  108. package/storybook-static/assets/{CheckBox.stories-DL49eu_s.js → CheckBox.stories-sGH6EuU4.js} +1 -1
  109. package/storybook-static/assets/{Color-6AOWCN3U-B0iuSBAP.js → Color-6AOWCN3U-5NJhf8m9.js} +1 -1
  110. package/storybook-static/assets/{ContextMenu-DqLKk-wW.js → ContextMenu-CxuYkXjJ.js} +1 -1
  111. package/storybook-static/assets/{ContextMenu-k1Mubm6h.js → ContextMenu-z6NKmD0I.js} +1 -1
  112. package/storybook-static/assets/{ContextMenu.stories-CNnrfTxO.js → ContextMenu.stories-CI5IW_KX.js} +1 -1
  113. package/storybook-static/assets/{DateInput-CgBBiqYK.js → DateInput-A8NURpCX.js} +1 -1
  114. package/storybook-static/assets/{DateInput-NSuuc0Vu.js → DateInput-BkCbK0M5.js} +1 -1
  115. package/storybook-static/assets/{DateInput.stories-eWY9Pqwp.js → DateInput.stories-DnzeyBpg.js} +1 -1
  116. package/storybook-static/assets/{DateRangePresetSelect-Ch6rsktY.js → DateRangePresetSelect-Bh7qMFTr.js} +1 -1
  117. package/storybook-static/assets/{DateRangePresetSelect-DibXoV_U.js → DateRangePresetSelect-CGZkf8Ty.js} +1 -1
  118. package/storybook-static/assets/{DateRangePresetSelect.stories-B8yndfPd.js → DateRangePresetSelect.stories-Drm2FCnJ.js} +1 -1
  119. package/storybook-static/assets/{DeprecatedMultiSelect-D8BCr3qw.js → DeprecatedMultiSelect-8TWWhsLi.js} +1 -1
  120. package/storybook-static/assets/{DeprecatedMultiSelect-1K4GSVRr.js → DeprecatedMultiSelect-BebYsPmQ.js} +1 -1
  121. package/storybook-static/assets/{DeprecatedMultiSelect.stories-DH7fIprL.js → DeprecatedMultiSelect.stories-7iL6YOgh.js} +1 -1
  122. package/storybook-static/assets/{Detail-CzQ7DLhL.js → Detail-BOZkPwOI.js} +1 -1
  123. package/storybook-static/assets/{Detail.stories-DzmSAGkt.js → Detail.stories-RZALoKmD.js} +1 -1
  124. package/storybook-static/assets/{Dialog-DEDDnDtQ.js → Dialog-BsslYClj.js} +1 -1
  125. package/storybook-static/assets/{Dialog-Cm7gLcJI.js → Dialog-CeukIYpx.js} +1 -1
  126. package/storybook-static/assets/{Dialog.stories-BzvBjaiX.js → Dialog.stories-y7MpdGQr.js} +1 -1
  127. package/storybook-static/assets/{Disclosure-Bpji7KuP.js → Disclosure-CiTnWx5y.js} +1 -1
  128. package/storybook-static/assets/{Disclosure.stories-Bwuzf5fl.js → Disclosure.stories-UWW9oheF.js} +1 -1
  129. package/storybook-static/assets/{DisclosureGroup-bCpsF5YE.js → DisclosureGroup-CT3BdQXr.js} +1 -1
  130. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DQRIOLjc.js → DocsRenderer-JROSPFPF-x50rjjKP.js} +1 -1
  131. package/storybook-static/assets/{DropZone-Diu_Hlgs.js → DropZone-DUn9vW2w.js} +1 -1
  132. package/storybook-static/assets/{DropZone-qvCLdJmm.js → DropZone-gWSeoAx6.js} +1 -1
  133. package/storybook-static/assets/{DropZone.stories-DHgexefI.js → DropZone.stories-CmaVl9to.js} +1 -1
  134. package/storybook-static/assets/{DropdownMenu-Bl2IPF3Q.js → DropdownMenu-DkeS8gOF.js} +1 -1
  135. package/storybook-static/assets/{ExpandableActionPanel-B3iQGrX8.js → ExpandableActionPanel-DdqWZDe2.js} +1 -1
  136. package/storybook-static/assets/{ExpandableActionPanel.stories-DRnMPxSP.js → ExpandableActionPanel.stories-CA-dpb07.js} +1 -1
  137. package/storybook-static/assets/{Flex-CrWmRoxc.js → Flex-DpQpF63N.js} +1 -1
  138. package/storybook-static/assets/{Flex.stories-Db20If9k.js → Flex.stories-DtlKiJno.js} +1 -1
  139. package/storybook-static/assets/{FlexContainer-YYPiKtpT.js → FlexContainer-C1d63I55.js} +1 -1
  140. package/storybook-static/assets/{FlexItem-CXY6tvoB.js → FlexItem-DsoW-br3.js} +1 -1
  141. package/storybook-static/assets/{FloatingPopover-DSRofmW2.js → FloatingPopover-7MpESGU4.js} +1 -1
  142. package/storybook-static/assets/{FormattedTableCell-B-t0D2oX.js → FormattedTableCell-B4RRbSFK.js} +1 -1
  143. package/storybook-static/assets/{Grid-Ad2q9giD.js → Grid-DsCUaz46.js} +1 -1
  144. package/storybook-static/assets/{Grid-CUmJniwF.js → Grid-eqZxtRIA.js} +1 -1
  145. package/storybook-static/assets/{Grid.stories-CsohhjMJ.js → Grid.stories-DAGg0GWi.js} +1 -1
  146. package/storybook-static/assets/{GridContainer-DfZnU_h-.js → GridContainer-B9JaLUGE.js} +1 -1
  147. package/storybook-static/assets/{ImageCropper.stories-Bdg7E1B6.js → ImageCropper.stories-W76XOOMv.js} +1 -1
  148. package/storybook-static/assets/{ImageRenderer-DEsg7Nf5.js → ImageRenderer-DYg7BkPO.js} +1 -1
  149. package/storybook-static/assets/{ImageRenderer.stories-C2uPYFbK.js → ImageRenderer.stories-rgJV0OBp.js} +1 -1
  150. package/storybook-static/assets/{ImageView.stories-qFIo_3jG.js → ImageView.stories-D9h6sg3j.js} +1 -1
  151. package/storybook-static/assets/{ImageViewer.stories-D6RoxWRG.js → ImageViewer.stories-Bd0WJOp1.js} +2 -2
  152. package/storybook-static/assets/{ImageViewerRuntime-DEVRfnpp.js → ImageViewerRuntime-DOjvjbv0.js} +1 -1
  153. package/storybook-static/assets/Input-7N70tL0u.js +3 -0
  154. package/storybook-static/assets/{Input-CXSVW4qb.js → Input-BxrxwNyD.js} +1 -1
  155. package/storybook-static/assets/{Input.stories-CKUo8mda.js → Input.stories-Df1j802b.js} +1 -1
  156. package/storybook-static/assets/{InputDateTime-CBgevl2k.js → InputDateTime-UdemHZXV.js} +1 -1
  157. package/storybook-static/assets/{InputDateTime.stories-Dc_yRirT.js → InputDateTime.stories-yRwAe5_5.js} +1 -1
  158. package/storybook-static/assets/{InputFile-VkGuvstd.js → InputFile-5LpFR1Fq.js} +1 -1
  159. package/storybook-static/assets/{InputFile-BX9qIipq.js → InputFile-DDhf7A_J.js} +1 -1
  160. package/storybook-static/assets/{InputFile.stories-VernHNAn.js → InputFile.stories-BVDT-BAx.js} +1 -1
  161. package/storybook-static/assets/{InputFiles-BpSb2G11.js → InputFiles-CgM2BwNO.js} +1 -1
  162. package/storybook-static/assets/{InputFiles-CRFuNd-6.js → InputFiles-D3CPIXiK.js} +1 -1
  163. package/storybook-static/assets/{InputFiles.stories-CfrGV2lA.js → InputFiles.stories-XMHBA9Fn.js} +1 -1
  164. package/storybook-static/assets/{InputFilesList-BoL4jQmC.js → InputFilesList-DSivq9iT.js} +1 -1
  165. package/storybook-static/assets/{InputImage-BKfXCZHx.js → InputImage-BG_QyAh3.js} +1 -1
  166. package/storybook-static/assets/{InputImage-BcUm7aKp.js → InputImage-CY0A9Xz-.js} +1 -1
  167. package/storybook-static/assets/{InputImage.stories-l1xnaTXn.js → InputImage.stories-DiGXytZU.js} +1 -1
  168. package/storybook-static/assets/{InteractiveComponents-DKix-b3k.js → InteractiveComponents-Bf9KitNR.js} +5 -5
  169. package/storybook-static/assets/{InteractiveComponents.stories-CK118Tbj.js → InteractiveComponents.stories-TwALUGGN.js} +1 -1
  170. package/storybook-static/assets/{LayoutPicker-Ca57uusp.js → LayoutPicker-BLrNe8g_.js} +1 -1
  171. package/storybook-static/assets/{LayoutPicker-BqI2-D2r.js → LayoutPicker-MhA9N4WI.js} +1 -1
  172. package/storybook-static/assets/{LayoutPicker.stories-BDRBBnj-.js → LayoutPicker.stories-BCME5Ogr.js} +1 -1
  173. package/storybook-static/assets/{Listbox-lrvI9Fx9.js → Listbox-B8F2xWvs.js} +1 -1
  174. package/storybook-static/assets/{Listbox-D_Qgzkw1.js → Listbox-y_3VijHU.js} +1 -1
  175. package/storybook-static/assets/{Listbox.stories-Djb1uju9.js → Listbox.stories-mp0p0NpO.js} +1 -1
  176. package/storybook-static/assets/{Modal-BpqYaQXu.js → Modal-DgEV0vBs.js} +1 -1
  177. package/storybook-static/assets/{Modal-CLZFIZH2.js → Modal-qIsW7BkG.js} +1 -1
  178. package/storybook-static/assets/{Modal.stories-DNpMq9oL.js → Modal.stories-CQ-Hn4GK.js} +1 -1
  179. package/storybook-static/assets/{ModalManagerProvider-DMlNCo5h.js → ModalManagerProvider-DEoq4q_O.js} +1 -1
  180. package/storybook-static/assets/MultiSelect-D-6XHQUG.js +79 -0
  181. package/storybook-static/assets/{MultiSelect-C593f3VV.js → MultiSelect-PGooEkAK.js} +1 -1
  182. package/storybook-static/assets/MultiSelect.stories-B0JzMViN.js +81 -0
  183. package/storybook-static/assets/MultiSelectCore-B0VbnEBc.js +3 -0
  184. package/storybook-static/assets/{NoData-Bvl_1jH4.js → NoData-DCuuvSoD.js} +1 -1
  185. package/storybook-static/assets/{NotificationsHost-CdPm_hcB.js → NotificationsHost-CWqG91Yh.js} +1 -1
  186. package/storybook-static/assets/{NotificationsHost.stories-Bo_dwZZe.js → NotificationsHost.stories-CEp-AppV.js} +1 -1
  187. package/storybook-static/assets/{ODataMultiSelect-BVlJ8U90.js → ODataMultiSelect-CwVneYzi.js} +1 -1
  188. package/storybook-static/assets/{ODataMultiSelect.stories-CqHpctYU.js → ODataMultiSelect.stories-BRnVOZsK.js} +1 -1
  189. package/storybook-static/assets/{ODataSelect-BCl-z6Sg.js → ODataSelect-DyKTFqk7.js} +1 -1
  190. package/storybook-static/assets/ODataSelect.stories-B-3GaeU4.js +148 -0
  191. package/storybook-static/assets/{ODataTreeMultiSelect-1CrmEPOx.js → ODataTreeMultiSelect-16xNi9qI.js} +1 -1
  192. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B2YMNMyr.js → ODataTreeMultiSelect.stories-DI9tH2qD.js} +1 -1
  193. package/storybook-static/assets/{ODataTreeSelect-BqP9H4QH.js → ODataTreeSelect-Dk262plK.js} +1 -1
  194. package/storybook-static/assets/{ODataTreeSelect.stories-x_GCdGW8.js → ODataTreeSelect.stories-DfaL0dci.js} +1 -1
  195. package/storybook-static/assets/{OneStepScroller-B1H-Yg0P.js → OneStepScroller-DI8qlm5c.js} +1 -1
  196. package/storybook-static/assets/{Option-ChGr-plg.js → Option-CG3bU2cY.js} +1 -1
  197. package/storybook-static/assets/{OptionButton-D6mT04a1.js → OptionButton-DF0E8aU5.js} +1 -1
  198. package/storybook-static/assets/{OptionContent-CXc6K3fK.js → OptionContent-BZ3FiJQ4.js} +1 -1
  199. package/storybook-static/assets/{OptionContentContainer-D0p7mbft.js → OptionContentContainer-CyI5IfqU.js} +1 -1
  200. package/storybook-static/assets/{PeriodSelect-CpnYgcOA.js → PeriodSelect-_gAbt3E6.js} +1 -1
  201. package/storybook-static/assets/{PeriodSelect-Bm9WdjpG.js → PeriodSelect-uR-Xk4vQ.js} +1 -1
  202. package/storybook-static/assets/{PeriodSelect.stories-4Im6GLjq.js → PeriodSelect.stories-D-Lp7QtA.js} +1 -1
  203. package/storybook-static/assets/PickerField-CByAoAAO.js +1 -0
  204. package/storybook-static/assets/{PickerTriggerActions-BCupttoF.js → PickerTriggerActions-CYM-UvRz.js} +1 -1
  205. package/storybook-static/assets/{Popover-CbgP8DJy.js → Popover-CRcVoLur.js} +1 -1
  206. package/storybook-static/assets/{Popover-CCHTXorF.js → Popover-CdnsB1ss.js} +1 -1
  207. package/storybook-static/assets/{Popover.stories-zZ2fYcQb.js → Popover.stories-Dxdt7Jc5.js} +1 -1
  208. package/storybook-static/assets/{PresetRangeDateInput-D-Xf5CL3.js → PresetRangeDateInput-BQkK3Nmd.js} +1 -1
  209. package/storybook-static/assets/{PresetRangeDateInput-cmWbFoHz.js → PresetRangeDateInput-BmAGj8ye.js} +1 -1
  210. package/storybook-static/assets/{PresetRangeDateInput.stories-C3VxU77P.js → PresetRangeDateInput.stories-CUIwCB6T.js} +1 -1
  211. package/storybook-static/assets/{PresetSelect-BmTJNeUt.js → PresetSelect-C7HG9CjN.js} +2 -2
  212. package/storybook-static/assets/{README-Bl2m1JMK.js → README-9DTI05kd.js} +1 -1
  213. package/storybook-static/assets/{README-DEOe-D4O.js → README-B-ihyEBx.js} +1 -1
  214. package/storybook-static/assets/{README-B_TP46xP.js → README-B0iHgO_3.js} +1 -1
  215. package/storybook-static/assets/{README-DcMAIy3x.js → README-B1GSwjas.js} +1 -1
  216. package/storybook-static/assets/{README-lHhj1ioe.js → README-BAjs7T_d.js} +1 -1
  217. package/storybook-static/assets/{README-BcSaq4c4.js → README-BEYMpavt.js} +1 -1
  218. package/storybook-static/assets/{README-DVPc9Io_.js → README-BL0-uTlP.js} +1 -1
  219. package/storybook-static/assets/{README-EmDsFxzc.js → README-BR8bdUjV.js} +1 -1
  220. package/storybook-static/assets/{README-jg6CIybs.js → README-BUnl1FiN.js} +1 -1
  221. package/storybook-static/assets/{README-BC4nu9of.js → README-BbUo3mGT.js} +1 -1
  222. package/storybook-static/assets/{README-BiyBf-O3.js → README-Bdir2bPK.js} +1 -1
  223. package/storybook-static/assets/{README-BMXu-jQk.js → README-BmwSZfOQ.js} +1 -1
  224. package/storybook-static/assets/{README-IkL3xuvr.js → README-BquP2lux.js} +1 -1
  225. package/storybook-static/assets/{README-Cu9QJjVK.js → README-BurB0dhj.js} +1 -1
  226. package/storybook-static/assets/{README-DLtEU6xV.js → README-ByIhL9zr.js} +1 -1
  227. package/storybook-static/assets/{README-DFF21yas.js → README-ByT9u_7g.js} +1 -1
  228. package/storybook-static/assets/{README-BkJ_PjJk.js → README-C41zKsq6.js} +1 -1
  229. package/storybook-static/assets/{README-HRwASuVm.js → README-C5-oc7fP.js} +1 -1
  230. package/storybook-static/assets/{README-CnX5IOsQ.js → README-C7NhXX-n.js} +1 -1
  231. package/storybook-static/assets/{README-T35eDlrl.js → README-C8jcwgeL.js} +1 -1
  232. package/storybook-static/assets/{README-DkgiAGPo.js → README-CNnGqdkH.js} +1 -1
  233. package/storybook-static/assets/{README-B7kN5fdq.js → README-CQlujiXR.js} +1 -1
  234. package/storybook-static/assets/{README-BZW-Ku8G.js → README-CTBkJ27k.js} +1 -1
  235. package/storybook-static/assets/{README-BsvaCxyJ.js → README-CTGZXXVP.js} +1 -1
  236. package/storybook-static/assets/{README-B3bdpv3F.js → README-CUghXL33.js} +1 -1
  237. package/storybook-static/assets/{README-xMu2rAZ4.js → README-CiJ5wkhQ.js} +1 -1
  238. package/storybook-static/assets/{README-CaZGDS4o.js → README-CoENtXo_.js} +1 -1
  239. package/storybook-static/assets/{README-UcG-T3oc.js → README-CoQeAVdv.js} +1 -1
  240. package/storybook-static/assets/{README-k2-wWcjY.js → README-CpJmZHQJ.js} +1 -1
  241. package/storybook-static/assets/{README-zF7TglyH.js → README-CtZBJdo2.js} +1 -1
  242. package/storybook-static/assets/{README-BfbEWAVW.js → README-CvP9yRMR.js} +1 -1
  243. package/storybook-static/assets/{README-CLTYPp6T.js → README-D-urpNSn.js} +1 -1
  244. package/storybook-static/assets/{README-3VGZSgWz.js → README-DAH3lVWd.js} +1 -1
  245. package/storybook-static/assets/{README-CXLnU8PY.js → README-DCWk-Vga.js} +1 -1
  246. package/storybook-static/assets/{README-5uy1ulgc.js → README-DMZYAdN0.js} +1 -1
  247. package/storybook-static/assets/{README-C_zVigpw.js → README-DNrPuueH.js} +1 -1
  248. package/storybook-static/assets/{README-D7IHIZJQ.js → README-DQ1aeQ_i.js} +1 -1
  249. package/storybook-static/assets/{README-vCy3YlCq.js → README-DTMZk60G.js} +1 -1
  250. package/storybook-static/assets/{README-CwqRXSIJ.js → README-DY7lgi4q.js} +1 -1
  251. package/storybook-static/assets/{README-Bc63jJ_g.js → README-DaaS2c7L.js} +1 -1
  252. package/storybook-static/assets/{README-Dv4LnFqu.js → README-De3j71sQ.js} +1 -1
  253. package/storybook-static/assets/{README-DnkVTJ7s.js → README-DevTRU4A.js} +1 -1
  254. package/storybook-static/assets/{README-CZciBX1A.js → README-DfRan6KR.js} +1 -1
  255. package/storybook-static/assets/{README-C4vu077M.js → README-Dhptn6UE.js} +1 -1
  256. package/storybook-static/assets/{README-BRE26E-6.js → README-DxTRj-9a.js} +1 -1
  257. package/storybook-static/assets/{README-Bfp-2y9L.js → README-DyKegKG_.js} +1 -1
  258. package/storybook-static/assets/{README-BW8ukk_3.js → README-KCmlmH_Z.js} +1 -1
  259. package/storybook-static/assets/{README-Iwf47F8s.js → README-VNB_Dj5F.js} +1 -1
  260. package/storybook-static/assets/{README-DXajBW2j.js → README-_8pxMMC7.js} +1 -1
  261. package/storybook-static/assets/{README-BeMdGWkW.js → README-j-Czw7ww.js} +1 -1
  262. package/storybook-static/assets/{README-DEtA9vXg.js → README-n4utUGcX.js} +1 -1
  263. package/storybook-static/assets/{README-Bf9aqOSG.js → README-xrMkjHIm.js} +1 -1
  264. package/storybook-static/assets/{README-CjwMWiHf.js → README-zlaX5PMG.js} +1 -1
  265. package/storybook-static/assets/{RadioButton-Cy_jQtud.js → RadioButton-CDIyYuS9.js} +1 -1
  266. package/storybook-static/assets/{RadioButton-BBfQWcy3.js → RadioButton-DV8K96H6.js} +1 -1
  267. package/storybook-static/assets/{RadioButton.stories-9V4bon68.js → RadioButton.stories-CRNqKsyz.js} +1 -1
  268. package/storybook-static/assets/{RadioGroup-TwFpisuE.js → RadioGroup-BnYFRvmn.js} +1 -1
  269. package/storybook-static/assets/{RadioGroup-BndgLwX8.js → RadioGroup-CIIw962S.js} +1 -1
  270. package/storybook-static/assets/{RadioGroup.stories-DJLxesgz.js → RadioGroup.stories-K4AidbLa.js} +1 -1
  271. package/storybook-static/assets/{Scrollable-DtB02dAG.js → Scrollable-BI1k9ogH.js} +1 -1
  272. package/storybook-static/assets/{Scrollable-pBI6H_we.js → Scrollable-DAghtYuE.js} +1 -1
  273. package/storybook-static/assets/{Scrollable.stories-CahJ5rFA.js → Scrollable.stories-B6Doakiv.js} +1 -1
  274. package/storybook-static/assets/Select-BNHTGJqG.js +66 -0
  275. package/storybook-static/assets/Select-BlnKV8rc.js +12 -0
  276. package/storybook-static/assets/Select.stories-DZPAoL4J.js +86 -0
  277. package/storybook-static/assets/{Separator-BQlVHMcy.js → Separator-BCUzEQRV.js} +1 -1
  278. package/storybook-static/assets/{Separator-BdOz35ux.js → Separator-CiETy9yM.js} +1 -1
  279. package/storybook-static/assets/{Separator.stories-DRmR0Kda.js → Separator.stories-DTzurpM_.js} +1 -1
  280. package/storybook-static/assets/{SerializableSelect-ClSz_VvD.js → SerializableSelect-CnQurr7F.js} +1 -1
  281. package/storybook-static/assets/SerializableSelect.stories-qJaV_fjJ.js +73 -0
  282. package/storybook-static/assets/{ShimmerText-CuhrU7uk.js → ShimmerText-I292TqXa.js} +1 -1
  283. package/storybook-static/assets/{ShimmerText.stories-Djb6DvbN.js → ShimmerText.stories-AKqXqp1k.js} +1 -1
  284. package/storybook-static/assets/{SingleDateTimeInput-hC1Ft3qs.js → SingleDateTimeInput-BrNi93tH.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-C4jzvJ05.js → SingleDateTimeInput-DSn0vaW-.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput.stories-D-HmSpnz.js → SingleDateTimeInput.stories-C910kkYc.js} +1 -1
  287. package/storybook-static/assets/{Slider-u0qKNrgI.js → Slider-CXA5Zwku.js} +1 -1
  288. package/storybook-static/assets/{Slider-WLUfmHyw.js → Slider-DO460-pY.js} +1 -1
  289. package/storybook-static/assets/{Slider.stories-CX8fS5Ax.js → Slider.stories-B874XxeK.js} +1 -1
  290. package/storybook-static/assets/{SliderInput-BEirf0Ys.js → SliderInput-DTidinPI.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-ibTyal5l.js → SliderInput-DsV8o7Yy.js} +1 -1
  292. package/storybook-static/assets/{SliderInput.stories-xuycnRN_.js → SliderInput.stories-CDWNO90y.js} +1 -1
  293. package/storybook-static/assets/{Sortable-p0kUHa8E.js → Sortable-CML34YIF.js} +1 -1
  294. package/storybook-static/assets/{Sortable.stories-BdCtmfnr.js → Sortable.stories-C-_fvnHM.js} +1 -1
  295. package/storybook-static/assets/{Splitter-BzAg1cZ0.js → Splitter-BcuA2qce.js} +1 -1
  296. package/storybook-static/assets/{Splitter.stories-C5zZ4lHf.js → Splitter.stories-CA0-L_Ja.js} +1 -1
  297. package/storybook-static/assets/StateSelect--FDEb4-v.js +4 -0
  298. package/storybook-static/assets/{StateSelect-CyjHfKNv.js → StateSelect-B23bb_PO.js} +1 -1
  299. package/storybook-static/assets/{StateSelect.stories-D94g21N9.js → StateSelect.stories-CEVPThtC.js} +1 -1
  300. package/storybook-static/assets/{StatusIndicator-ylfiroPh.js → StatusIndicator-BbTCS7Ku.js} +1 -1
  301. package/storybook-static/assets/{StatusIndicator.stories-BB7y4KGW.js → StatusIndicator.stories-BIps_Ecm.js} +1 -1
  302. package/storybook-static/assets/{StringToggle.stories-BwuTZAGa.js → StringToggle.stories-vhOfzslq.js} +1 -1
  303. package/storybook-static/assets/{Switch-BXWiUOXs.js → Switch-DibS4nSc.js} +1 -1
  304. package/storybook-static/assets/{Switch-DRLWRp0P.js → Switch-jJgwtWFK.js} +1 -1
  305. package/storybook-static/assets/{Switch.stories-taC_bi5a.js → Switch.stories-Cvky3KQz.js} +1 -1
  306. package/storybook-static/assets/{Table-BYiIQfjA.js → Table-DcNGLEI6.js} +1 -1
  307. package/storybook-static/assets/{Table.stories-B9u81cAN.js → Table.stories-DbEzudxD.js} +1 -1
  308. package/storybook-static/assets/{TableEditor.stories-CG0ULNok.js → TableEditor.stories-Be9nCkds.js} +1 -1
  309. package/storybook-static/assets/{Tabs-BYp06IN2.js → Tabs-CTL4MnkZ.js} +1 -1
  310. package/storybook-static/assets/{Tabs.stories-BCkUYsqs.js → Tabs.stories-CIVbz7kW.js} +1 -1
  311. package/storybook-static/assets/{TabsBox-DBm2a1iA.js → TabsBox-C9g1p4du.js} +1 -1
  312. package/storybook-static/assets/{TagInput-D9gedxBU.js → TagInput-DuJLeiyT.js} +1 -1
  313. package/storybook-static/assets/{TagInput.stories-6eOGQ16t.js → TagInput.stories-BLVFWr-T.js} +1 -1
  314. package/storybook-static/assets/{Text-CcgH9LXI.js → Text-Cr_TUUgL.js} +1 -1
  315. package/storybook-static/assets/{Textarea-DXOTj2Y7.js → Textarea-BImI6Q6v.js} +1 -1
  316. package/storybook-static/assets/{Textarea-aGrLpQXu.js → Textarea-DGaanGLG.js} +1 -1
  317. package/storybook-static/assets/{Textarea.stories-BwqxG2lk.js → Textarea.stories-DvQ2dDNh.js} +1 -1
  318. package/storybook-static/assets/{TimePanel-DroAbbvD.js → TimePanel-Cg2G5Hab.js} +1 -1
  319. package/storybook-static/assets/{TimePanel.stories-DgU6ia4A.js → TimePanel.stories-qy5mb3YN.js} +1 -1
  320. package/storybook-static/assets/{Toggle-BUSzQ1ww.js → Toggle-CroC7YOK.js} +1 -1
  321. package/storybook-static/assets/{Toggle-B7MbU9HB.js → Toggle-Dj8Ic_Ak.js} +1 -1
  322. package/storybook-static/assets/{Toggle.stories-BYU9hS62.js → Toggle.stories-CmyyubM8.js} +1 -1
  323. package/storybook-static/assets/TreeMultiSelect-BHNmPW50.js +1 -0
  324. package/storybook-static/assets/TreeMultiSelect-DBQYLjnA.js +22 -0
  325. package/storybook-static/assets/TreeMultiSelect.stories-BNsE1zgF.js +68 -0
  326. package/storybook-static/assets/TreePickerBase-ZEBy3EVT.js +76 -0
  327. package/storybook-static/assets/TreeSelect-T7G2pkyK.js +1 -0
  328. package/storybook-static/assets/TreeSelect-aiPeW2uJ.js +19 -0
  329. package/storybook-static/assets/TreeSelect.stories-E6ObkYJe.js +40 -0
  330. package/storybook-static/assets/{TreeTable-AIcYVdfl.js → TreeTable-C0ORe5Pe.js} +1 -1
  331. package/storybook-static/assets/{TreeTable.stories-BKbbLMK7.js → TreeTable.stories-PtGT_1X5.js} +1 -1
  332. package/storybook-static/assets/{blocks-Bdsl8TP-.js → blocks-DR4JL0hD.js} +3 -3
  333. package/storybook-static/assets/{check-DGqyuB4O.js → check-PtABqMc1.js} +1 -1
  334. package/storybook-static/assets/{chevron-down-BykqjXRq.js → chevron-down-BaujB0G_.js} +1 -1
  335. package/storybook-static/assets/{chevron-left-Z5uCO076.js → chevron-left-C1SZ4PrE.js} +1 -1
  336. package/storybook-static/assets/{chevron-right-C8yfwmkk.js → chevron-right-CfCjHN8b.js} +1 -1
  337. package/storybook-static/assets/{chunk-W22LQPXL-hfBk2z5K.js → chunk-W22LQPXL-Cis7lFT9.js} +1 -1
  338. package/storybook-static/assets/{circle-alert-C9sxb8DT.js → circle-alert-Mymt-6wl.js} +1 -1
  339. package/storybook-static/assets/{circle-check-BLrYJ_8h.js → circle-check-DzqMvzJX.js} +1 -1
  340. package/storybook-static/assets/{components-xYnqEbBt.js → components-Do91qDh3.js} +3 -3
  341. package/storybook-static/assets/{contextMenu-C-b4jBpY.js → contextMenu-8NKKgKoy.js} +1 -1
  342. package/storybook-static/assets/{download-g1fk8W6J.js → download-Cn6H3Bnv.js} +1 -1
  343. package/storybook-static/assets/{floating-ui.react-cCWtY5RA.js → floating-ui.react-BFqa49jG.js} +1 -1
  344. package/storybook-static/assets/{foundationApi-Ci5vPKh_.js → foundationApi-CChPwNx-.js} +1 -1
  345. package/storybook-static/assets/{foundationLib-DNlIsEyf.js → foundationLib-ClEyfTpa.js} +1 -1
  346. package/storybook-static/assets/{hooks-XqeLihmr.js → hooks-DUKyfcb_.js} +1 -1
  347. package/storybook-static/assets/{iframe-ltYEol2F.js → iframe-1Nw_zWMi.js} +3 -3
  348. package/storybook-static/assets/iframe-BgBwFMGW.js +1 -0
  349. package/storybook-static/assets/{info-CBSXRv7d.js → info-DMI56qGy.js} +1 -1
  350. package/storybook-static/assets/{odata-Dd_3_5NS.js → odata-D9M3xPIL.js} +1 -1
  351. package/storybook-static/assets/{odataStoryFixtures-3lOfs9T6.js → odataStoryFixtures-eHJgW7OK.js} +1 -1
  352. package/storybook-static/assets/{react-BxWB81Qy.js → react-DidV4ORc.js} +1 -1
  353. package/storybook-static/assets/{refresh-cw-FKHfW9eG.js → refresh-cw-B1ChlhvT.js} +1 -1
  354. package/storybook-static/assets/{settings-2-Cz1PtqGa.js → settings-2-BxwqnB9r.js} +1 -1
  355. package/storybook-static/assets/{sortable-BelHSus7.js → sortable-DMBM69Jm.js} +1 -1
  356. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-gGot_qSq.js → syntaxhighlighter-QEQV7K2Y-BJZNAUo-.js} +1 -1
  357. package/storybook-static/assets/{trash-2-BT2kW3r-.js → trash-2-B768_PZU.js} +1 -1
  358. package/storybook-static/assets/{triangle-alert-CPiJJHYc.js → triangle-alert-B8H-k2Bq.js} +1 -1
  359. package/storybook-static/assets/{useODataSelectBase-bPN0T_Xm.js → useODataSelectBase-BKAZcf4R.js} +1 -1
  360. package/storybook-static/assets/{useODataTreeData-CIpE4LZu.js → useODataTreeData-Bxlcmpg8.js} +1 -1
  361. package/storybook-static/assets/{usePickerQuery-OTz4Oze6.js → usePickerQuery-DJj2HmX9.js} +1 -1
  362. package/storybook-static/assets/{usePickerTriggerController-vNC5e_t0.js → usePickerTriggerController-CiD33ccS.js} +2 -2
  363. package/storybook-static/assets/{x-BdAuXjBq.js → x-Dt9SO3SL.js} +1 -1
  364. package/storybook-static/iframe.html +2 -2
  365. package/storybook-static/index.json +1 -1
  366. package/storybook-static/project.json +1 -1
  367. package/dist/chunks/input-CuRK9Vbz.js.map +0 -1
  368. package/dist/chunks/picker-SJXnHwsj.js.map +0 -1
  369. package/dist/chunks/select--oIrv7SC.js +0 -357
  370. package/dist/chunks/select--oIrv7SC.js.map +0 -1
  371. package/storybook-static/assets/Input-b2F0zrLw.js +0 -3
  372. package/storybook-static/assets/MultiSelect-DmC3DaMc.js +0 -76
  373. package/storybook-static/assets/MultiSelect.stories-R6JTKnFI.js +0 -64
  374. package/storybook-static/assets/MultiSelectCore-BaRmQrD-.js +0 -3
  375. package/storybook-static/assets/ODataSelect.stories-Cm-Xkq40.js +0 -148
  376. package/storybook-static/assets/PickerField-w1JCZyzA.js +0 -1
  377. package/storybook-static/assets/Select-BOnv-Uuv.js +0 -63
  378. package/storybook-static/assets/Select-CClfxa48.js +0 -12
  379. package/storybook-static/assets/Select.stories-C0X5pvUk.js +0 -69
  380. package/storybook-static/assets/SerializableSelect.stories-DozN_Quy.js +0 -73
  381. package/storybook-static/assets/StateSelect-bHA1Vf6z.js +0 -4
  382. package/storybook-static/assets/TreeMultiSelect-BhFYUbr0.js +0 -1
  383. package/storybook-static/assets/TreeMultiSelect-CZIyMaIZ.js +0 -20
  384. package/storybook-static/assets/TreeMultiSelect.stories-DG_mdSkQ.js +0 -60
  385. package/storybook-static/assets/TreePickerBase-CbULuQpp.js +0 -76
  386. package/storybook-static/assets/TreeSelect-CMSolQHr.js +0 -17
  387. package/storybook-static/assets/TreeSelect-Cu1BsepL.js +0 -1
  388. package/storybook-static/assets/TreeSelect.stories-B2J0N4ke.js +0 -32
  389. package/storybook-static/assets/iframe-TsWsvoxA.js +0 -1
@@ -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};
@@ -1,69 +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{n as i,t as a}from"./Select-CClfxa48.js";var o=t({ControlledObjects:()=>m,CustomOptionLayout:()=>v,Disabled:()=>y,GroupedOptions:()=>_,Placeholder:()=>g,PrimitiveOptions:()=>h,__namedExportsOrder:()=>b,default:()=>p}),s,c,l,u,d,f,p,m,h,g,_,v,y,b;function x(){return(x=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],f=[`Новый`,`В работе`,`Завершён`,`Архив`],p={title:`UI/Select`,component:a,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:d,onChange:u(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},buttonClassName:{description:`Класс trigger-кнопки Select без изменения корневого контейнера.`,control:`text`},optionsClassName:{description:`Класс popup со списком option.`,control:`text`},optionsContentClassName:{description:`Класс области содержимого popup, например для особой плотности списка.`,control:`text`},searchable:{description:`Включает поиск по option в trigger-поле.`,control:`boolean`},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},renderPopupHeader:{description:`Дополнительное содержимое над списком option.`,control:!1},emptyState:{description:`Содержимое при пустом списке option.`,control:!1},loadingState:{description:`Содержимое при загрузке option.`,control:!1},errorState:{description:`Содержимое при ошибке загрузки option.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранной option.`,control:`boolean`}}},m={name:`Объекты`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[1],onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:d[1]}},h={name:`Примитивы`,render:()=>{let[e,t]=(0,s.useState)(f[1]);return(0,c.jsx)(a,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:f,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},_={name:`Группированные опции`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})},getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},v={name:`Кастомный рендер`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[0],onChange:n=>{e.onChange(n),t({value:n})},renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,c.jsx)(`div`,{children:e.name}),(0,c.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,c.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},y={args:{disabled:!0,value:d[0]}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
- name: "Объекты",
3
- render: function Render(args) {
4
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
5
- return <Select {...args} value={args.value ?? departmentOptions[1]} onChange={value => {
6
- args.onChange(value);
7
- updateArgs({
8
- value
9
- });
10
- }} />;
11
- },
12
- args: {
13
- value: departmentOptions[1]
14
- }
15
- }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
16
- name: "Примитивы",
17
- render: () => {
18
- const [value, setValue] = useState<(typeof primitiveOptions)[number] | undefined>(primitiveOptions[1]);
19
- return <Select label="Статус" description="Пример использования низкоуровневого Select со строковыми значениями." placeholder="Выберите статус" options={primitiveOptions} value={value} onChange={setValue} getOptionKey={option => option} getOptionLabel={option => option} size="md" />;
20
- }
21
- }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
22
- render: function Render(args) {
23
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
24
- return <Select {...args} onChange={value => {
25
- args.onChange(value);
26
- updateArgs({
27
- value
28
- });
29
- }} />;
30
- }
31
- }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
32
- name: "Группированные опции",
33
- render: function Render(args) {
34
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
35
- return <Select {...args} onChange={value => {
36
- args.onChange(value);
37
- updateArgs({
38
- value
39
- });
40
- }} getOptionGroup={option => ({
41
- key: option.direction,
42
- label: option.direction
43
- })} optionsMaxWidth="40rem" />;
44
- }
45
- }`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
46
- name: "Кастомный рендер",
47
- render: function Render(args) {
48
- const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
49
- return <Select {...args} value={args.value ?? departmentOptions[0]} onChange={value => {
50
- args.onChange(value);
51
- updateArgs({
52
- value
53
- });
54
- }} renderValue={option => \`\${option.code} · \${option.name}\`} renderOption={(option, state) => <>
55
- <div className="flexEllipsis">
56
- <div>{option.name}</div>
57
- <div className="fontSizeSm content2">{option.manager}</div>
58
- </div>
59
- <div style={{
60
- opacity: state.selected ? 1 : 0.5
61
- }}>{option.code}</div>
62
- </>} />;
63
- }
64
- }`,...v.parameters?.docs?.source}}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
65
- args: {
66
- disabled: true,
67
- value: departmentOptions[0]
68
- }
69
- }`,...y.parameters?.docs?.source}}},b=[`ControlledObjects`,`PrimitiveOptions`,`Placeholder`,`GroupedOptions`,`CustomOptionLayout`,`Disabled`]})))()}export{g as a,x as c,_ as i,v as n,h as o,y as r,o as s,m as t};