@ryuzaki13/react-foundation-ui 1.1.8 → 1.2.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 (251) hide show
  1. package/dist/advanced-search/index.js +1 -1
  2. package/dist/check-box/CheckBox.d.ts +3 -1
  3. package/dist/check-box/CheckBox.d.ts.map +1 -1
  4. package/dist/check-box/index.js +1 -1
  5. package/dist/chunks/{CheckBox.module-D0Ze9qh3.js → CheckBox.module-C5SjPwSj.js} +2 -1
  6. package/dist/chunks/{CheckBox.module-D0Ze9qh3.js.map → CheckBox.module-C5SjPwSj.js.map} +1 -1
  7. package/dist/chunks/{TextEditorLexicalClient-DeBA6fQX.js → TextEditorLexicalClient-D2P2VLL0.js} +2 -2
  8. package/dist/chunks/{TextEditorLexicalClient-DeBA6fQX.js.map → TextEditorLexicalClient-D2P2VLL0.js.map} +1 -1
  9. package/dist/chunks/check-box-Dd3YFuxd.js +51 -0
  10. package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -0
  11. package/dist/chunks/{multi-select-BCpRct-k.js → multi-select-Bg7Psslp.js} +56 -81
  12. package/dist/chunks/multi-select-Bg7Psslp.js.map +1 -0
  13. package/dist/chunks/{picker-DTZk09Ag.js → picker-BAQ9NeHe.js} +117 -88
  14. package/dist/chunks/picker-BAQ9NeHe.js.map +1 -0
  15. package/dist/chunks/{select-Bd48kVI3.js → select-DKbSVCp4.js} +16 -16
  16. package/dist/chunks/{select-Bd48kVI3.js.map → select-DKbSVCp4.js.map} +1 -1
  17. package/dist/layout-picker/index.js +50 -48
  18. package/dist/layout-picker/index.js.map +1 -1
  19. package/dist/layout-picker/ui/LayoutPicker.d.ts +6 -1
  20. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  21. package/dist/multi-select/index.js +1 -1
  22. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  23. package/dist/picker/PickerPopup.d.ts +4 -1
  24. package/dist/picker/PickerPopup.d.ts.map +1 -1
  25. package/dist/picker/PickerSelectionToolbar.d.ts +13 -0
  26. package/dist/picker/PickerSelectionToolbar.d.ts.map +1 -0
  27. package/dist/picker/index.d.ts +1 -0
  28. package/dist/picker/index.d.ts.map +1 -1
  29. package/dist/picker/index.js +2 -2
  30. package/dist/picker/model/usePickerFloatingListbox.d.ts +2 -0
  31. package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -1
  32. package/dist/preset-select/index.js +1 -1
  33. package/dist/radio-button/index.js +1 -1
  34. package/dist/select/index.js +1 -1
  35. package/dist/slider/index.js +1 -1
  36. package/dist/state-select/index.js +1 -1
  37. package/dist/styles.css +1 -1
  38. package/dist/text-editor/index.js +1 -1
  39. package/dist/tree-select/ODataTreeMultiSelect.d.ts +4 -2
  40. package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
  41. package/dist/tree-select/TreeMultiSelect.d.ts +4 -2
  42. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  43. package/dist/tree-select/TreeNodeContent.d.ts +4 -2
  44. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  45. package/dist/tree-select/TreePickerBase.d.ts +8 -2
  46. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  47. package/dist/tree-select/index.js +340 -235
  48. package/dist/tree-select/index.js.map +1 -1
  49. package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts +22 -0
  50. package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts.map +1 -0
  51. package/dist/tree-select/model/treeUtils.d.ts +6 -0
  52. package/dist/tree-select/model/treeUtils.d.ts.map +1 -1
  53. package/dist/tree-select/types.d.ts +2 -0
  54. package/dist/tree-select/types.d.ts.map +1 -1
  55. package/package.json +2 -2
  56. package/storybook-static/assets/{Badge-Dn74JUF_.js → Badge-D7v1JZZ8.js} +1 -1
  57. package/storybook-static/assets/{Badge.stories-0f2dBkFF.js → Badge.stories-ByDc-8tr.js} +1 -1
  58. package/storybook-static/assets/{Button-DDo_z6nQ.js → Button-C5Ybi_6I.js} +1 -1
  59. package/storybook-static/assets/{Button-C1TJgYBn.js → Button-DKzqaITD.js} +1 -1
  60. package/storybook-static/assets/{Button.stories-CEhM2nmB.js → Button.stories-DX0MePOq.js} +1 -1
  61. package/storybook-static/assets/{CheckBox-Brecn2Go.js → CheckBox-BbBVCd-t.js} +1 -1
  62. package/storybook-static/assets/CheckBox-CG7erYfw.js +2 -0
  63. package/storybook-static/assets/{CheckBox-B1xm2kwz.css → CheckBox-CT1_Mjc0.css} +1 -1
  64. package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +1 -0
  65. package/storybook-static/assets/{CheckBox.stories-BX0rAtSE.js → CheckBox.stories-DzB9XnzM.js} +1 -1
  66. package/storybook-static/assets/{Color-KMSTOMOX-BWvVg2h-.js → Color-KMSTOMOX-DkRZLrHN.js} +1 -1
  67. package/storybook-static/assets/{ContextMenu-wm9Jh9ZJ.js → ContextMenu-BAhISS2o.js} +1 -1
  68. package/storybook-static/assets/{ContextMenu.stories-BNgeqlBC.js → ContextMenu.stories-B4v0sOgu.js} +1 -1
  69. package/storybook-static/assets/{DateInput-C4POi6jK.js → DateInput-BXTSi08q.js} +1 -1
  70. package/storybook-static/assets/{DateInput-BvCdgET8.js → DateInput-CwxInHA8.js} +1 -1
  71. package/storybook-static/assets/{DateInput.stories-Co44UsPz.js → DateInput.stories-7gdC4CVg.js} +1 -1
  72. package/storybook-static/assets/{DateRangePresetSelect-CFRcBK8Q.js → DateRangePresetSelect-BJnOqHar.js} +1 -1
  73. package/storybook-static/assets/{DateRangePresetSelect-DS2LFGpx.js → DateRangePresetSelect-BYeBU5zB.js} +1 -1
  74. package/storybook-static/assets/{DateRangePresetSelect.stories-Bw2wid1f.js → DateRangePresetSelect.stories-C7z1iucY.js} +1 -1
  75. package/storybook-static/assets/{Detail-DRVWmbKj.js → Detail-DH7ZmSPc.js} +1 -1
  76. package/storybook-static/assets/{Detail.stories-DiPu8idx.js → Detail.stories-BSv9uWqB.js} +1 -1
  77. package/storybook-static/assets/{Dialog-DWwwmwKU.js → Dialog-Dpcmx3OO.js} +1 -1
  78. package/storybook-static/assets/{Dialog.stories-H65hC3at.js → Dialog.stories-CySTfqZJ.js} +1 -1
  79. package/storybook-static/assets/{Disclosure-DXCJIvn2.js → Disclosure-GuRERHI1.js} +1 -1
  80. package/storybook-static/assets/{Disclosure.stories-BtvyHQlf.js → Disclosure.stories-DYOViMcd.js} +1 -1
  81. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BIOn2Yw2.js → DocsRenderer-JROSPFPF-mXFEHzID.js} +2 -2
  82. package/storybook-static/assets/{DropZone-B5GgSTT6.js → DropZone-ueGIp3x3.js} +1 -1
  83. package/storybook-static/assets/{DropZone.stories-DXQz-psy.js → DropZone.stories-DR_AdNgw.js} +1 -1
  84. package/storybook-static/assets/{DropdownMenu-DiCKdtJQ.js → DropdownMenu-CK5lznDK.js} +1 -1
  85. package/storybook-static/assets/{ExpandableActionPanel.stories--iDMcu7P.js → ExpandableActionPanel.stories-2CQ1AWdx.js} +1 -1
  86. package/storybook-static/assets/{Flex-COhmAKNn.js → Flex-BOk2MClD.js} +1 -1
  87. package/storybook-static/assets/{Flex-Cl2bB8Po.js → Flex-DW-ftapu.js} +1 -1
  88. package/storybook-static/assets/{Flex.stories-DMuAAT19.js → Flex.stories-HzEHXSGa.js} +1 -1
  89. package/storybook-static/assets/{Grid-PM5n8eI2.js → Grid-D1SjHhSh.js} +1 -1
  90. package/storybook-static/assets/{Grid-Df08ACJK.js → Grid-zr1rxPoi.js} +1 -1
  91. package/storybook-static/assets/{Grid.stories-Do5Od8Vw.js → Grid.stories-BLEMxz0Y.js} +1 -1
  92. package/storybook-static/assets/{ImageCropper.stories-EvtSYfKt.js → ImageCropper.stories-B9PtK7QG.js} +1 -1
  93. package/storybook-static/assets/{ImageRenderer-B2AC5NZh.js → ImageRenderer-DEGHLXPn.js} +1 -1
  94. package/storybook-static/assets/{ImageRenderer.stories-DzFi_sDQ.js → ImageRenderer.stories-ukNyUK8o.js} +1 -1
  95. package/storybook-static/assets/{ImageView.stories-B1g_OpL2.js → ImageView.stories-BszL_0Zc.js} +1 -1
  96. package/storybook-static/assets/{ImageViewer.stories-b0cFqboR.js → ImageViewer.stories-GO-di0mo.js} +2 -2
  97. package/storybook-static/assets/{ImageViewerRuntime-D_IBJyiC.js → ImageViewerRuntime-C7pZfqPI.js} +1 -1
  98. package/storybook-static/assets/{Input-y5ZPRO5m.js → Input-BTierf74.js} +1 -1
  99. package/storybook-static/assets/{Input-CyGgeUCG.js → Input-Bt2IerRO.js} +1 -1
  100. package/storybook-static/assets/{Input.stories-Dhv3f6d7.js → Input.stories-DhNpohII.js} +1 -1
  101. package/storybook-static/assets/{InputDateTime-ZXVROSAW.js → InputDateTime-BtZX5hDd.js} +1 -1
  102. package/storybook-static/assets/{InputDateTime.stories-NMpK5Peb.js → InputDateTime.stories-BTehTQnn.js} +1 -1
  103. package/storybook-static/assets/{InputFile-BR2c0rNb.js → InputFile-DHcad0UA.js} +1 -1
  104. package/storybook-static/assets/{InputFile.stories-BuNiPkPF.js → InputFile.stories-EhvFRZEW.js} +1 -1
  105. package/storybook-static/assets/{InputFiles-BdhvE0kz.js → InputFiles-BIPBlJCX.js} +1 -1
  106. package/storybook-static/assets/{InputFiles-BlGer_7z.js → InputFiles-v2NJm_qh.js} +1 -1
  107. package/storybook-static/assets/{InputFiles.stories-BPGnbszv.js → InputFiles.stories-BayzozA6.js} +1 -1
  108. package/storybook-static/assets/{InputImage-zHzuV5NX.js → InputImage-DGj2RHDF.js} +1 -1
  109. package/storybook-static/assets/{InputImage.stories-BXKgBMoQ.js → InputImage.stories-DyULIi5J.js} +1 -1
  110. package/storybook-static/assets/{LayoutPicker-L-0F9Vrb.js → LayoutPicker-BhMHQ6qN.js} +4 -3
  111. package/storybook-static/assets/LayoutPicker.stories-q8iUnVpY.js +449 -0
  112. package/storybook-static/assets/{Listbox-YWvaCK77.js → Listbox-C_Exppg-.js} +1 -1
  113. package/storybook-static/assets/{Listbox.stories-BSJmd-mH.js → Listbox.stories-CGkGgr1a.js} +1 -1
  114. package/storybook-static/assets/{Modal-CQW1mNSz.js → Modal-Bovqf5pf.js} +1 -1
  115. package/storybook-static/assets/{Modal.stories-BEpdLX9t.js → Modal.stories-BK00bPl-.js} +1 -1
  116. package/storybook-static/assets/{MultiSelect-CUQV67Ev.css → MultiSelect-BoIwmje6.css} +1 -1
  117. package/storybook-static/assets/MultiSelect-CrQL1Ipo.js +2 -0
  118. package/storybook-static/assets/{MultiSelect-HXlabU2B.js → MultiSelect-Cuhm_3qG.js} +1 -1
  119. package/storybook-static/assets/{MultiSelect.stories-CflQTXbQ.js → MultiSelect.stories-DzpE4zRQ.js} +1 -1
  120. package/storybook-static/assets/{NotificationsHost-s71CKpxG.js → NotificationsHost-ch3PRXY1.js} +1 -1
  121. package/storybook-static/assets/{NotificationsHost.stories-Ovu7jDcj.js → NotificationsHost.stories-C2_Yv4hp.js} +1 -1
  122. package/storybook-static/assets/{ODataMultiSelect-B-u9xRiQ.js → ODataMultiSelect-BaHv24bR.js} +1 -1
  123. package/storybook-static/assets/{ODataMultiSelect.stories-DajVZbpu.js → ODataMultiSelect.stories-CirB5r0U.js} +1 -1
  124. package/storybook-static/assets/{ODataSelect-3wE4Syu-.js → ODataSelect-DCpmIrxn.js} +1 -1
  125. package/storybook-static/assets/{ODataSelect-DCGV65OH.js → ODataSelect-DRobtrxL.js} +1 -1
  126. package/storybook-static/assets/{ODataSelect.stories-C4ymfrRw.js → ODataSelect.stories-BfDzSEYh.js} +1 -1
  127. package/storybook-static/assets/{ODataTreeMultiSelect-fFgkMoG7.js → ODataTreeMultiSelect-BKtVg8_t.js} +1 -1
  128. package/storybook-static/assets/ODataTreeMultiSelect.stories-Cy_hJFR7.js +28 -0
  129. package/storybook-static/assets/{ODataTreeSelect-DHsV3AcR.js → ODataTreeSelect-CtcR9xTc.js} +1 -1
  130. package/storybook-static/assets/{ODataTreeSelect.stories-Dfv4WQyR.js → ODataTreeSelect.stories-CflBmWSY.js} +1 -1
  131. package/storybook-static/assets/{PeriodSelect-DlcFkHM4.js → PeriodSelect-Bb9RLrAP.js} +1 -1
  132. package/storybook-static/assets/{PeriodSelect.stories-DWwvypiE.js → PeriodSelect.stories-BVWGwTxF.js} +1 -1
  133. package/storybook-static/assets/{Popover-CDhH2vdG.js → Popover-DHxAzBcZ.js} +1 -1
  134. package/storybook-static/assets/{Popover.stories-DE7VCujJ.js → Popover.stories-CSsXOlfQ.js} +1 -1
  135. package/storybook-static/assets/{PresetRangeDateInput-CrsxXLDG.js → PresetRangeDateInput-BtT9qT_X.js} +1 -1
  136. package/storybook-static/assets/{PresetRangeDateInput.stories-DEG3r-qf.js → PresetRangeDateInput.stories-CdDhCVhC.js} +1 -1
  137. package/storybook-static/assets/{RadioButton-C46MFmRl.js → RadioButton-g8BzgLBx.js} +1 -1
  138. package/storybook-static/assets/{RadioButton.stories-C3--ehs5.js → RadioButton.stories-DDkpHQZh.js} +1 -1
  139. package/storybook-static/assets/{RadioGroup-Cj_foF9x.js → RadioGroup-DEiqietc.js} +1 -1
  140. package/storybook-static/assets/{RadioGroup-wy1BaQ9o.js → RadioGroup-DmC3Kq0U.js} +1 -1
  141. package/storybook-static/assets/{RadioGroup.stories-Bi9_WOVj.js → RadioGroup.stories-Cmj7AdLG.js} +1 -1
  142. package/storybook-static/assets/{Select-B36pVYvS.js → Select-CmKYViuR.js} +1 -1
  143. package/storybook-static/assets/{Select-Bgg-NjIq.js → Select-HhIbNmso.js} +1 -1
  144. package/storybook-static/assets/{Select.stories-Bl6_HqCh.js → Select.stories-CWJxI41B.js} +1 -1
  145. package/storybook-static/assets/{SelectOptionContent-CeSDFaTr.js → SelectOptionContent-DptMfd-O.js} +1 -1
  146. package/storybook-static/assets/{SerializableSelect-EIZrsX_q.js → SerializableSelect-BkSgKWRB.js} +1 -1
  147. package/storybook-static/assets/{SerializableSelect-CCcdn7s3.js → SerializableSelect-CQA10vMJ.js} +1 -1
  148. package/storybook-static/assets/{SerializableSelect.stories-D85sap4g.js → SerializableSelect.stories-BFCuuz2t.js} +1 -1
  149. package/storybook-static/assets/{SingleDateTimeInput-BJdvvXVc.js → SingleDateTimeInput-BfcECgA3.js} +1 -1
  150. package/storybook-static/assets/{SingleDateTimeInput.stories-Cpq8DLvn.js → SingleDateTimeInput.stories-DyowjiLp.js} +1 -1
  151. package/storybook-static/assets/{Slider-CqkHk2lK.js → Slider-CPLgIEaw.js} +1 -1
  152. package/storybook-static/assets/{Slider.stories-DmW9jsnD.js → Slider.stories-CnImlj4A.js} +1 -1
  153. package/storybook-static/assets/{SliderInput-DkekHTab.js → SliderInput-C2Q1T0vU.js} +1 -1
  154. package/storybook-static/assets/{SliderInput.stories-CqQh0HWR.js → SliderInput.stories-CJUN89pc.js} +1 -1
  155. package/storybook-static/assets/{Sortable-BBYH-Tva.js → Sortable-DPyfih4N.js} +1 -1
  156. package/storybook-static/assets/{Sortable.stories-DjEGWs4-.js → Sortable.stories-DItOzu5t.js} +1 -1
  157. package/storybook-static/assets/{Splitter-G3aR-zi9.js → Splitter-gmjouNuu.js} +1 -1
  158. package/storybook-static/assets/{Splitter.stories-XKGTUPMP.js → Splitter.stories-CCSZIcqs.js} +1 -1
  159. package/storybook-static/assets/{StateSelect-DhzkYW8p.js → StateSelect-CG7RPOcH.js} +1 -1
  160. package/storybook-static/assets/{StateSelect.stories-BAxN3YfG.js → StateSelect.stories-C1vyXGQT.js} +1 -1
  161. package/storybook-static/assets/{Switch-NVpZLd3g.js → Switch-D74-uQCk.js} +1 -1
  162. package/storybook-static/assets/{Switch.stories-BBowyrzJ.js → Switch.stories-BT3z4Ejw.js} +1 -1
  163. package/storybook-static/assets/{Table-C9r-j5hO.js → Table-BrFX0-DO.js} +1 -1
  164. package/storybook-static/assets/{Table.stories-CkoEoxYB.js → Table.stories-C6oPBhy0.js} +1 -1
  165. package/storybook-static/assets/{Tabs-tH37q7nI.js → Tabs-DqP4L44q.js} +1 -1
  166. package/storybook-static/assets/{Tabs.stories-aIywaszH.js → Tabs.stories-AJuiuYg6.js} +1 -1
  167. package/storybook-static/assets/{TagInput.stories-BX4XcJaC.js → TagInput.stories-BNKEqixk.js} +1 -1
  168. package/storybook-static/assets/{Textarea-DDn4pvJF.js → Textarea-B60jfl8B.js} +1 -1
  169. package/storybook-static/assets/{Textarea.stories-BZVZYh4p.js → Textarea.stories-BcDp6M7a.js} +1 -1
  170. package/storybook-static/assets/{TimePanel-vKlzE6gd.js → TimePanel-DLhzWAkt.js} +1 -1
  171. package/storybook-static/assets/{TimePanel.stories-BfdDWhtQ.js → TimePanel.stories-EAF0Iwzy.js} +1 -1
  172. package/storybook-static/assets/{Toggle-DAb5_sHq.js → Toggle-zLmaeFxV.js} +1 -1
  173. package/storybook-static/assets/{Toggle.stories-Bp99WoMR.js → Toggle.stories-CXCqTlgq.js} +1 -1
  174. package/storybook-static/assets/TreeMultiSelect-Cqzvsvll.js +1 -0
  175. package/storybook-static/assets/{TreeMultiSelect-CkNDwWuK.js → TreeMultiSelect-DqCeanEK.js} +1 -1
  176. package/storybook-static/assets/TreeMultiSelect.stories-CLgN86i0.js +18 -0
  177. package/storybook-static/assets/TreePickerBase-B35lReuv.css +1 -0
  178. package/storybook-static/assets/TreePickerBase-BZAJrNmY.js +22 -0
  179. package/storybook-static/assets/TreeSelect-CGEhTrwZ.js +1 -0
  180. package/storybook-static/assets/{TreeSelect-BYYl0yhs.js → TreeSelect-CxXbMUuz.js} +1 -1
  181. package/storybook-static/assets/{TreeSelect.stories-C56cleOX.js → TreeSelect.stories-D6JsuirR.js} +1 -1
  182. package/storybook-static/assets/{TreeTable-CPctUXOv.js → TreeTable-CHcN_J4f.js} +1 -1
  183. package/storybook-static/assets/{TreeTable.stories-D-R0a5NF.js → TreeTable.stories-Chf80BCf.js} +1 -1
  184. package/storybook-static/assets/{WithTooltip-7X4HQR7L-DYINYmJM.js → WithTooltip-7X4HQR7L-ClNgbWeP.js} +1 -1
  185. package/storybook-static/assets/{base-table-CTBvWnIb.js → base-table-DFNAHbOh.js} +3 -3
  186. package/storybook-static/assets/{blocks-D2VXMZGt.js → blocks-Cvma_IcF.js} +6 -6
  187. package/storybook-static/assets/{button-CofLsODD.js → button-kPwSLavu.js} +1 -1
  188. package/storybook-static/assets/{check-box-BUYji84r.js → check-box-lrsmWYyx.js} +1 -1
  189. package/storybook-static/assets/{chunk-3LY4VQVK-Dk0vkvRJ.js → chunk-3LY4VQVK-BTM7iIVH.js} +1 -1
  190. package/storybook-static/assets/{chunk-LITCR56V-DgP8YOaP.js → chunk-LITCR56V-ArT2yDYL.js} +1 -1
  191. package/storybook-static/assets/{contextMenu-MmOUI04g.js → contextMenu-Ca1VYkz6.js} +1 -1
  192. package/storybook-static/assets/{error-D6G67nWf.js → error-DuNJO9vV.js} +1 -1
  193. package/storybook-static/assets/{flex-DEzwJFBs.js → flex-BGvA-XpI.js} +1 -1
  194. package/storybook-static/assets/{floating-ui.react-DeHGyTLR.js → floating-ui.react-DQwZi-9a.js} +1 -1
  195. package/storybook-static/assets/formatter-L2YTDE3Q-DE5ZvVwE.js +1 -0
  196. package/storybook-static/assets/{formatters-DO-Bplkc.js → formatters-h4ZtB1KQ.js} +1 -1
  197. package/storybook-static/assets/grid-D9Cj-9Hk.js +1 -0
  198. package/storybook-static/assets/hooks-0JTkzX8v.js +5 -0
  199. package/storybook-static/assets/{iframe-BlBhvHwk.js → iframe-DOzGPw3M.js} +3 -3
  200. package/storybook-static/assets/{input-DM0LWdwF.js → input-CfG8dfNR.js} +1 -1
  201. package/storybook-static/assets/{lucide-react-DMR456up.js → lucide-react-CXmxxiwZ.js} +1 -1
  202. package/storybook-static/assets/{mdx-react-shim-BXKB7xbF.js → mdx-react-shim-Dt6mwzpn.js} +1 -1
  203. package/storybook-static/assets/{media-BZMZJXu3.js → media-C2c8Madb.js} +1 -1
  204. package/storybook-static/assets/{misc-_mjs2DH3.js → misc-BetQ78R5.js} +1 -1
  205. package/storybook-static/assets/{notifications-BxYiooNp.js → notifications-JG54VOrf.js} +1 -1
  206. package/storybook-static/assets/{odata-B4-s71TA.js → odata-CfPigtOy.js} +1 -1
  207. package/storybook-static/assets/odata-service-CXxiscbG.js +1 -0
  208. package/storybook-static/assets/{odataStoryFixtures-D5fZfJe7.js → odataStoryFixtures-x2DUwBVr.js} +1 -1
  209. package/storybook-static/assets/picker-C3kxY39P.js +2 -0
  210. package/storybook-static/assets/{picker-BmTTr59E.css → picker-DzBkX15M.css} +1 -1
  211. package/storybook-static/assets/{popover-B40B8LiS.js → popover-DK9hrPJ3.js} +1 -1
  212. package/storybook-static/assets/{preset-select-CH5-L7v5.js → preset-select-DI74dY8m.js} +1 -1
  213. package/storybook-static/assets/{react-18-BGjST092.js → react-18-BDmeTisq.js} +1 -1
  214. package/storybook-static/assets/{react-BRNfkHvq.js → react-DWEKtw6N.js} +1 -1
  215. package/storybook-static/assets/{react-dom-Dymo4Ige.js → react-dom-C1-d-rN9.js} +1 -1
  216. package/storybook-static/assets/select-Clm8A0Fz.js +1 -0
  217. package/storybook-static/assets/{slider-CZr1wjo-.js → slider-Dyk9y0wa.js} +1 -1
  218. package/storybook-static/assets/{sortable-Do0zRVl3.js → sortable-V1-iQvjL.js} +1 -1
  219. package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-YpNtMx0l.js → syntaxhighlighter-RTCFPKCB-fdaSGWy2.js} +1 -1
  220. package/storybook-static/assets/{text-BBt8S4hV.js → text-BDg3R98B.js} +1 -1
  221. package/storybook-static/assets/{theming-C9D6rg4N.js → theming-Cpt7iVYH.js} +1 -1
  222. package/storybook-static/assets/ui-DKM94Yn2.js +1 -0
  223. package/storybook-static/assets/{useODataSelectBase-Vi75dcI2.js → useODataSelectBase-CfKXO11g.js} +1 -1
  224. package/storybook-static/assets/{useODataTreeData-3VDV4NsS.js → useODataTreeData-CNz5U2G8.js} +1 -1
  225. package/storybook-static/assets/{utils-De5IM4sM.js → utils-D2Si_EM1.js} +1 -1
  226. package/storybook-static/iframe.html +1 -1
  227. package/storybook-static/index.json +1 -1
  228. package/storybook-static/project.json +1 -1
  229. package/dist/chunks/check-box-BowNqqd3.js +0 -48
  230. package/dist/chunks/check-box-BowNqqd3.js.map +0 -1
  231. package/dist/chunks/multi-select-BCpRct-k.js.map +0 -1
  232. package/dist/chunks/picker-DTZk09Ag.js.map +0 -1
  233. package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts +0 -8
  234. package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts.map +0 -1
  235. package/storybook-static/assets/CheckBox-Dou46_Q2.js +0 -2
  236. package/storybook-static/assets/CheckBox.module-Hr3mvdAC.js +0 -1
  237. package/storybook-static/assets/LayoutPicker.stories-s1valXGj.js +0 -449
  238. package/storybook-static/assets/MultiSelect-DbjbyS6f.js +0 -2
  239. package/storybook-static/assets/ODataTreeMultiSelect.stories-Ac6Y2rRQ.js +0 -24
  240. package/storybook-static/assets/TreeMultiSelect-CG09ybVB.js +0 -1
  241. package/storybook-static/assets/TreeMultiSelect.stories-DE6tQFRY.js +0 -14
  242. package/storybook-static/assets/TreePickerBase-DhZ9tbrV.js +0 -19
  243. package/storybook-static/assets/TreePickerBase-qreyVjhY.css +0 -1
  244. package/storybook-static/assets/TreeSelect-D3tOqZzi.js +0 -1
  245. package/storybook-static/assets/formatter-L2YTDE3Q-Cz7NqHTg.js +0 -1
  246. package/storybook-static/assets/grid-CUgqbILF.js +0 -1
  247. package/storybook-static/assets/hooks-3gvuoU6a.js +0 -5
  248. package/storybook-static/assets/odata-service-BHLtW14i.js +0 -1
  249. package/storybook-static/assets/picker-RP6lU_O4.js +0 -1
  250. package/storybook-static/assets/select-DDFRb6jY.js +0 -1
  251. package/storybook-static/assets/ui-5r8X6Kmj.js +0 -1
@@ -0,0 +1,51 @@
1
+ import { t as e } from "./ui.module-BisoTevy.js";
2
+ import { n as t } from "./uiClasses-BNjBunnY.js";
3
+ import { t as n } from "./CheckBox.module-C5SjPwSj.js";
4
+ import { useId as r } from "react";
5
+ import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
6
+ import { MinusIcon as a, SquareIcon as o } from "lucide-react";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ //#region src/check-box/CheckBox.tsx
9
+ function l({ label: l, description: u, placeholder: d, disabled: f, size: p, className: m, onChange: h, value: g, noWrap: _, id: v, tone: y = "neutral", indeterminate: b = !1, ...x }) {
10
+ let S = r(), C = v ?? S, w = u ? `${C}-description` : void 0, T = l ?? d, E = g ?? !1, D = (e) => {
11
+ e && (e.indeterminate = b);
12
+ };
13
+ return /* @__PURE__ */ c("div", {
14
+ className: i(e.uiElement, p && e.uiSizable, p && e[p], f && e.disabled, m),
15
+ "aria-disabled": f || void 0,
16
+ children: [/* @__PURE__ */ c("div", {
17
+ className: n.row,
18
+ children: [/* @__PURE__ */ c("div", {
19
+ className: i(n.wrapper, t(y)),
20
+ children: [/* @__PURE__ */ s("input", {
21
+ ...x,
22
+ ref: D,
23
+ id: C,
24
+ type: "checkbox",
25
+ checked: E,
26
+ disabled: f,
27
+ "aria-checked": b ? "mixed" : E,
28
+ "aria-describedby": w,
29
+ className: i(e.uiSelectionControl, n.input, b && n.inputIndeterminate),
30
+ onChange: () => h?.(!E)
31
+ }), /* @__PURE__ */ s("div", {
32
+ className: i(e.uiSelectionIcon, n.icon),
33
+ "aria-hidden": "true",
34
+ children: s(b ? a : o, {})
35
+ })]
36
+ }), T && /* @__PURE__ */ s("label", {
37
+ htmlFor: C,
38
+ className: i(e.uiLabelBase, _ && "textNoWrap"),
39
+ children: T
40
+ })]
41
+ }), u && /* @__PURE__ */ s("p", {
42
+ id: w,
43
+ className: e.uiDescription,
44
+ children: u
45
+ })]
46
+ });
47
+ }
48
+ //#endregion
49
+ export { l as t };
50
+
51
+ //# sourceMappingURL=check-box-Dd3YFuxd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-box-Dd3YFuxd.js","names":[],"sources":["../../src/check-box/CheckBox.tsx"],"sourcesContent":["import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { MinusIcon, SquareIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\nimport { getUiToneClassName } from \"../uiClasses\";\n\nimport styles from \"./CheckBox.module.scss\";\n\nimport type { UiBaseProps, UiTone } from \"../types\";\n\ninterface CheckBoxProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\ttone?: UiTone;\n\tnoWrap?: boolean;\n\t/** Показывает частично выбранную группу и публикует `aria-checked=\"mixed\"`. */\n\tindeterminate?: boolean;\n}\n\n/**\n * Компонент флажка для выбора булевого значения в формах и списках.\n * Поддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.\n */\nexport function CheckBox({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tnoWrap,\n\tid: externalId,\n\ttone = \"neutral\",\n\tindeterminate = false,\n\t...props\n}: CheckBoxProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst checked = value ?? false;\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tif (node) {\n\t\t\tnode.indeterminate = indeterminate;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, size && uiStyles.uiSizable, size && uiStyles[size], disabled && uiStyles.disabled, className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t<div className={cn(styles.wrapper, getUiToneClassName(tone))}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={indeterminate ? \"mixed\" : checked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiSelectionControl, styles.input, indeterminate && styles.inputIndeterminate)}\n\t\t\t\t\t\tonChange={() => onChange?.(!checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={cn(uiStyles.uiSelectionIcon, styles.icon)} aria-hidden=\"true\">\n\t\t\t\t\t\t{indeterminate ? <MinusIcon /> : <SquareIcon />}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{text && (\n\t\t\t\t\t<label htmlFor={id} className={cn(uiStyles.uiLabelBase, noWrap && \"textNoWrap\")}>\n\t\t\t\t\t\t{text}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,EAAS,EACxB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,WACA,IAAI,GACJ,UAAO,WACP,mBAAgB,IAChB,GAAG,KACc;CACjB,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAU,KAAS,IACnB,KAAgB,MAAkC;EACvD,AAAI,MACH,EAAK,gBAAgB;CAEvB;CAEA,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,KAAY,EAAS,UAAU,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACC,kBAAC,OAAD;IAAK,WAAW,EAAG,EAAO,SAAS,EAAmB,CAAI,CAAC;cAA3D,CACC,kBAAC,SAAD;KACC,GAAI;KACJ,KAAK;KACD;KACJ,MAAK;KACI;KACC;KACV,gBAAc,IAAgB,UAAU;KACxC,oBAAkB;KAClB,WAAW,EAAG,EAAS,oBAAoB,EAAO,OAAO,KAAiB,EAAO,kBAAkB;KACnG,gBAAgB,IAAW,CAAC,CAAO;IACnC,CAAA,GACD,kBAAC,OAAD;KAAK,WAAW,EAAG,EAAS,iBAAiB,EAAO,IAAI;KAAG,eAAY;eACrD,EAAhB,IAAiB,IAAgB,GAAjB,CAAY,CAAiB;IAC1C,CAAA,CACD;OACJ,KACA,kBAAC,SAAD;IAAO,SAAS;IAAI,WAAW,EAAG,EAAS,aAAa,KAAU,YAAY;cAC5E;GACK,CAAA,CAEJ;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
@@ -1,8 +1,7 @@
1
1
  import { Text as e } from "../text/index.js";
2
2
  import { t } from "./ui.module-BisoTevy.js";
3
- import { t as n } from "./grid-dI94AAbi.js";
4
- import { t as r } from "./check-box-BowNqqd3.js";
5
- import { a as i, c as a, d as o, f as s, i as c, l, n as u, r as d, t as f, u as p } from "./picker-DTZk09Ag.js";
3
+ import { t as n } from "./check-box-Dd3YFuxd.js";
4
+ import { a as r, c as i, d as a, f as o, i as s, l as c, n as l, p as u, r as d, t as f, u as p } from "./picker-BAQ9NeHe.js";
6
5
  import { t as ee } from "./separator-B72Aq-6a.js";
7
6
  import { t as m } from "./SelectOptionContent-CI7wq9Oi.js";
8
7
  import { n as h, t as g } from "./useODataSelectBase-wZ07hQFv.js";
@@ -22,33 +21,9 @@ function se({ item: e, textKey: t, codeKey: n, highlight: r }) {
22
21
  var C = {
23
22
  multiSelect: "_9oSdQi",
24
23
  multiSelectTokens: "iobHig",
25
- multiSelectToken: "yatXso",
26
- selectAllButton: "h2aA6E"
24
+ multiSelectToken: "yatXso"
27
25
  };
28
26
  //#endregion
29
- //#region src/multi-select/ui/MultiSelectOptionsToolbar.tsx
30
- function ce({ onSelectAll: e, onDeselectAll: t }) {
31
- return /* @__PURE__ */ S(n.Container, {
32
- gap: "xs",
33
- templateColumns: "1fr 1fr",
34
- children: [/* @__PURE__ */ x("button", {
35
- type: "button",
36
- className: C.selectAllButton,
37
- onClick: e,
38
- "data-ui": "multi-select-select-all",
39
- "data-action": "select-all",
40
- children: "Выбрать все"
41
- }), /* @__PURE__ */ x("button", {
42
- type: "button",
43
- className: C.selectAllButton,
44
- onClick: t,
45
- "data-ui": "multi-select-deselect-all",
46
- "data-action": "deselect-all",
47
- children: "Снять выбор"
48
- })]
49
- });
50
- }
51
- //#endregion
52
27
  //#region src/multi-select/ui/MultiSelectToken.tsx
53
28
  function w({ value: e }) {
54
29
  return e ? /* @__PURE__ */ x("div", {
@@ -72,18 +47,18 @@ function E(e, t, n) {
72
47
  let r = T(e, t, n);
73
48
  return e[0]?.[r] ?? e[0]?.[t];
74
49
  }
75
- function le(e) {
50
+ function ce(e) {
76
51
  return function(t) {
77
52
  return /* @__PURE__ */ x(w, { value: E(t.selectedItems, e.codeKey, e.textKey) });
78
53
  };
79
54
  }
80
- function ue(e) {
81
- return /* @__PURE__ */ x(ce, {
55
+ function le(e) {
56
+ return /* @__PURE__ */ x(a, {
82
57
  onSelectAll: e.selectAll,
83
58
  onDeselectAll: e.deselectAll
84
59
  });
85
60
  }
86
- function de(e) {
61
+ function ue(e) {
87
62
  return function(t, n) {
88
63
  return /* @__PURE__ */ x(se, {
89
64
  item: t,
@@ -107,33 +82,33 @@ function D({ text: n, isError: r }) {
107
82
  }
108
83
  //#endregion
109
84
  //#region src/multi-select/ui/MultiSelect.tsx
110
- function fe({ isNoData: e, isLoading: t, error: n, children: r }) {
85
+ function de({ isNoData: e, isLoading: t, error: n, children: r }) {
111
86
  return e ? /* @__PURE__ */ x(p, { emptyState: /* @__PURE__ */ x(D, { text: "Нет данных" }) }) : t ? /* @__PURE__ */ x(p, { loadingState: /* @__PURE__ */ x(D, { text: "Загрузка..." }) }) : n ? /* @__PURE__ */ x(p, { errorState: /* @__PURE__ */ x(D, {
112
87
  isError: !0,
113
88
  text: "Ошибка загрузки"
114
89
  }) }) : /* @__PURE__ */ x(oe, { children: r });
115
90
  }
116
- var pe = [];
91
+ var fe = [];
117
92
  function O(e, t) {
118
93
  return e[t];
119
94
  }
120
- function me(e, t, n) {
95
+ function pe(e, t, n) {
121
96
  return Array.from(/* @__PURE__ */ new Set([
122
97
  e[n],
123
98
  e[t],
124
99
  ...Object.values(e)
125
100
  ]));
126
101
  }
127
- function he(e, t, n) {
102
+ function me(e, t, n) {
128
103
  if (e.length !== t.length) return !1;
129
104
  let r = new Set(t.map((e) => O(e, n)));
130
105
  return e.every((e) => r.has(O(e, n)));
131
106
  }
132
- function ge({ entries: e, listId: n, activeIndex: i, selectedKeys: a, codeKey: o, query: s, highlightQuery: c, getOptionDisabled: l, getOptionId: u, setOptionRef: d, toggleOption: f, selectOnlyOption: p, renderItem: ee }) {
107
+ function he({ entries: e, listId: r, activeIndex: i, selectedKeys: a, codeKey: o, query: s, highlightQuery: c, getOptionDisabled: l, getOptionId: u, setOptionRef: d, toggleOption: f, selectOnlyOption: p, renderItem: ee }) {
133
108
  return e.map(({ item: e, index: m }) => {
134
109
  let h = m === i, g = a.has(O(e, o)), _ = l?.(e) ?? !1;
135
110
  return /* @__PURE__ */ S("div", {
136
- id: u(n, m),
111
+ id: u(r, m),
137
112
  ref: (e) => d(m, e),
138
113
  role: "option",
139
114
  "aria-selected": g,
@@ -146,7 +121,7 @@ function ge({ entries: e, listId: n, activeIndex: i, selectedKeys: a, codeKey: o
146
121
  onClick: (e) => {
147
122
  e.stopPropagation();
148
123
  },
149
- children: /* @__PURE__ */ x(r, {
124
+ children: /* @__PURE__ */ x(n, {
150
125
  value: g,
151
126
  disabled: _,
152
127
  onChange: () => {
@@ -175,8 +150,8 @@ function ge({ entries: e, listId: n, activeIndex: i, selectedKeys: a, codeKey: o
175
150
  }, `${O(e, o)}-${m}`);
176
151
  });
177
152
  }
178
- var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange: h, label: g, description: _, placeholder: b, size: re, query: ie, defaultQuery: se, highlightQuery: ce, onQuery: w, defaultFilter: E = !0, onOpen: D, onClose: k, getOptionDisabled: A, disabled: j, error: M, isLoading: N, renderToken: P, renderToolbar: F, renderItem: _e }, I) => {
179
- let ve = ne(null), [L, ye] = y(!1), R = "search-multi", z = m ?? pe, be = v(() => new Set(z.map((t) => O(t, e))), [e, z]), xe = v(() => p.filter((t) => !be.has(O(t, e))), [
153
+ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange: h, label: g, description: _, placeholder: b, size: re, query: ie, defaultQuery: se, highlightQuery: w, onQuery: E, defaultFilter: D = !0, onOpen: k, onClose: ge, getOptionDisabled: A, disabled: j, error: M, isLoading: N, renderToken: P, renderToolbar: F, renderItem: _e }, I) => {
154
+ let ve = ne(null), [L, ye] = y(!1), R = "search-multi", z = m ?? fe, be = v(() => new Set(z.map((t) => O(t, e))), [e, z]), xe = v(() => p.filter((t) => !be.has(O(t, e))), [
180
155
  e,
181
156
  be,
182
157
  p
@@ -189,25 +164,25 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
189
164
  open: L,
190
165
  query: ie,
191
166
  defaultQuery: se,
192
- onQuery: w,
167
+ onQuery: E,
193
168
  triggerMode: R
194
- }), H = i({
169
+ }), H = r({
195
170
  options: z,
196
171
  query: V,
197
- enabled: E,
198
- getSearchText: (t) => me(t, e, B)
199
- }), U = i({
172
+ enabled: D,
173
+ getSearchText: (t) => pe(t, e, B)
174
+ }), U = r({
200
175
  options: xe,
201
176
  query: V,
202
- enabled: E,
203
- getSearchText: (t) => me(t, e, B)
204
- }), W = v(() => [...H, ...U], [U, H]), Ce = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: we } = u({
177
+ enabled: D,
178
+ getSearchText: (t) => pe(t, e, B)
179
+ }), W = v(() => [...H, ...U], [U, H]), Ce = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: we } = l({
205
180
  value: z,
206
181
  open: L,
207
182
  onCommit: h,
208
- onOpen: D,
209
- onClose: k,
210
- isEqual: (t, n) => he(t, n, e)
183
+ onOpen: k,
184
+ onClose: ge,
185
+ isEqual: (t, n) => me(t, n, e)
211
186
  }), q = v(() => new Set(G.map((t) => O(t, e))), [e, G]), Te = v(() => ({
212
187
  selectedItems: G,
213
188
  committedSelectedItems: z,
@@ -218,7 +193,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
218
193
  G,
219
194
  L,
220
195
  q
221
- ]), J = te((e) => A?.(e, Te) ?? !1, [A, Te]), { activeIndex: Y, context: Ee, floatingStyles: De, getFloatingProps: Oe, setReference: ke, setFloating: Ae, setOptionRef: je, close: Me, openList: Ne, toggleOpen: Pe, selectActiveOption: Fe, handleReferenceKeyDown: Ie, handleFloatingKeyDown: Le, getOptionId: Re, getActiveOptionId: ze } = c({
196
+ ]), J = te((e) => A?.(e, Te) ?? !1, [A, Te]), { activeIndex: Y, context: Ee, floatingStyles: De, getFloatingProps: Oe, setReference: ke, setFloating: Ae, setOptionRef: je, close: Me, openList: Ne, toggleOpen: Pe, selectActiveOption: Fe, handleReferenceKeyDown: Ie, handleFloatingKeyDown: Le, getOptionId: Re, getActiveOptionId: ze } = s({
222
197
  options: W,
223
198
  selectedIndex: Ce,
224
199
  open: L,
@@ -229,7 +204,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
229
204
  closeOnSelect: !1,
230
205
  allowOpenWithoutOptions: !0,
231
206
  triggerMode: R
232
- }), Be = ce ?? V, X = (t) => {
207
+ }), Be = w ?? V, X = (t) => {
233
208
  let n = O(t, e);
234
209
  K((r) => r.some((t) => O(t, e) === n) ? r.filter((t) => O(t, e) !== n) : J(t) ? r : [...r, t]);
235
210
  }, Ve = (e) => {
@@ -262,13 +237,13 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
262
237
  clearSelection: He,
263
238
  selectAll: Ue,
264
239
  deselectAll: We
265
- }, Je = P === void 0 ? le({
240
+ }, Je = P === void 0 ? ce({
266
241
  codeKey: e,
267
242
  textKey: B
268
- }) : P, Ye = F === void 0 ? ue : F, Xe = _e ?? de({
243
+ }) : P, Ye = F === void 0 ? le : F, Xe = _e ?? ue({
269
244
  codeKey: e,
270
245
  textKey: B,
271
- hideCode: r
246
+ hideCode: a
272
247
  }), Ze = typeof Je == "function" ? Je(qe) : null, Qe = typeof Ye == "function" ? Ye(qe) : null, Q = H.map((e, t) => ({
273
248
  item: e,
274
249
  index: t
@@ -289,16 +264,16 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
289
264
  L || we();
290
265
  }
291
266
  });
292
- return /* @__PURE__ */ x(s, {
267
+ return /* @__PURE__ */ x(u, {
293
268
  label: g,
294
269
  description: _,
295
270
  disabled: j,
296
271
  placeholder: b,
297
272
  size: re,
298
273
  className: C.multiSelect,
299
- children: ({ controlId: n, labelId: r, describedBy: i }) => {
274
+ children: ({ controlId: n, labelId: r, describedBy: a }) => {
300
275
  let s = `${n}-listbox`;
301
- return /* @__PURE__ */ S(oe, { children: [/* @__PURE__ */ x(a, {
276
+ return /* @__PURE__ */ S(oe, { children: [/* @__PURE__ */ x(i, {
302
277
  ref: Ve,
303
278
  rootRef: ke,
304
279
  id: n,
@@ -309,14 +284,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
309
284
  value: V,
310
285
  placeholder: Ke ? void 0 : b,
311
286
  "aria-labelledby": r,
312
- "aria-describedby": i,
287
+ "aria-describedby": a,
313
288
  "aria-haspopup": "listbox",
314
289
  "aria-expanded": L,
315
290
  "aria-controls": L ? s : void 0,
316
291
  "aria-autocomplete": "list",
317
292
  "aria-activedescendant": L ? ze(s) : void 0,
318
293
  rootClassName: "flex alignItemsCenter",
319
- endAdornment: /* @__PURE__ */ S(l, {
294
+ endAdornment: /* @__PURE__ */ S(c, {
320
295
  open: L,
321
296
  disabled: j,
322
297
  onToggleMouseDown: $.handleToggleMouseDown,
@@ -362,7 +337,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
362
337
  floatingStyles: De,
363
338
  listId: s,
364
339
  labelId: r,
365
- descriptionId: i,
340
+ descriptionId: a,
366
341
  activeOptionId: L ? ze(s) : void 0,
367
342
  setFloating: Ae,
368
343
  getFloatingProps: Oe,
@@ -372,14 +347,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
372
347
  tabIndex: -1,
373
348
  className: t.uiPopupOptions,
374
349
  header: Qe,
375
- children: /* @__PURE__ */ x(fe, {
350
+ children: /* @__PURE__ */ x(de, {
376
351
  isNoData: et,
377
352
  isLoading: N,
378
353
  error: M,
379
354
  children: /* @__PURE__ */ S("div", {
380
355
  className: "scrollable h100",
381
356
  children: [
382
- /* @__PURE__ */ x(ge, {
357
+ /* @__PURE__ */ x(he, {
383
358
  entries: Q,
384
359
  listId: s,
385
360
  activeIndex: Y,
@@ -395,7 +370,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
395
370
  renderItem: Xe
396
371
  }),
397
372
  Q.length > 0 && xe.length > 0 && /* @__PURE__ */ x(ee, { className: "marginBlockSm" }),
398
- /* @__PURE__ */ x(ge, {
373
+ /* @__PURE__ */ x(he, {
399
374
  entries: $e,
400
375
  listId: s,
401
376
  activeIndex: Y,
@@ -420,7 +395,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
420
395
  k.displayName = "MultiSelect";
421
396
  //#endregion
422
397
  //#region src/multi-select/model/useODataMultiSelect.ts
423
- function A({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
398
+ function ge({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
424
399
  let o = h({
425
400
  odata: e,
426
401
  segment: t,
@@ -437,8 +412,8 @@ function A({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange
437
412
  }
438
413
  //#endregion
439
414
  //#region src/multi-select/ui/ODataMultiSelect.tsx
440
- var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a, value: o, dependencies: s, onChange: c, size: l }) => {
441
- let u = A({
415
+ var A = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a, value: o, dependencies: s, onChange: c, size: l }) => {
416
+ let u = ge({
442
417
  odata: e,
443
418
  segment: t,
444
419
  model: re(n),
@@ -464,7 +439,7 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
464
439
  placeholder: u.placeholder,
465
440
  error: u.isError ? "Ошибка загрузки" : void 0
466
441
  });
467
- }, M = ({ item: e, values: t, onChange: n, width: r = 15 }) => {
442
+ }, j = ({ item: e, values: t, onChange: n, width: r = 15 }) => {
468
443
  let [i, a] = y({}), o = t ?? i, s = `calc(${r}em + var(--width-add))`, c = te((r) => {
469
444
  let i = {
470
445
  ...o,
@@ -482,7 +457,7 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
482
457
  maxWidth: s,
483
458
  minWidth: s
484
459
  },
485
- children: /* @__PURE__ */ x(j, {
460
+ children: /* @__PURE__ */ x(A, {
486
461
  odata: e.odata,
487
462
  segment: e.segment,
488
463
  model: e.model,
@@ -491,13 +466,13 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
491
466
  onChange: c
492
467
  })
493
468
  });
494
- }, N = ({ width: e = 15, odata: t, segments: n, model: r, values: i, onChange: a }) => {
469
+ }, M = ({ width: e = 15, odata: t, segments: n, model: r, values: i, onChange: a }) => {
495
470
  let [o, s] = y({}), c = i ?? o;
496
471
  return b([{
497
472
  odata: t,
498
473
  segments: n,
499
474
  model: r
500
- }]).map((t) => /* @__PURE__ */ x(M, {
475
+ }]).map((t) => /* @__PURE__ */ x(j, {
501
476
  item: t,
502
477
  values: c,
503
478
  onChange: (e) => {
@@ -508,19 +483,19 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
508
483
  };
509
484
  //#endregion
510
485
  //#region src/multi-select/ui/SerializableMultiSelect.tsx
511
- function P(e, t) {
486
+ function N(e, t) {
512
487
  return e[t];
513
488
  }
514
- function F(e, t, n) {
489
+ function P(e, t, n) {
515
490
  let r = e[t];
516
491
  if (typeof r == "string") return r;
517
- let i = P(e, n);
492
+ let i = N(e, n);
518
493
  return typeof i == "string" ? i : String(i);
519
494
  }
520
- function _e({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u }) {
495
+ function F({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u }) {
521
496
  let d = a.map((e) => ({
522
- key: String(P(e, c)),
523
- text: F(e, l, c)
497
+ key: String(N(e, c)),
498
+ text: P(e, l, c)
524
499
  })), f = new Set((o ?? []).map((e) => String(e))), p = d.filter((e) => f.has(e.key));
525
500
  return /* @__PURE__ */ x(k, {
526
501
  label: e,
@@ -537,6 +512,6 @@ function _e({ label: e, description: t, disabled: n, placeholder: r, size: i, op
537
512
  });
538
513
  }
539
514
  //#endregion
540
- export { k as a, j as i, N as n, w as o, M as r, _e as t };
515
+ export { k as a, A as i, M as n, w as o, j as r, F as t };
541
516
 
542
- //# sourceMappingURL=multi-select-BCpRct-k.js.map
517
+ //# sourceMappingURL=multi-select-Bg7Psslp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select-Bg7Psslp.js","names":[],"sources":["../../src/multi-select/ui/MultiSelectOption.tsx","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectToken.tsx","../../src/multi-select/ui/defaultRenderers.tsx","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelect.tsx","../../src/multi-select/model/useODataMultiSelect.ts","../../src/multi-select/ui/ODataMultiSelect.tsx","../../src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx","../../src/multi-select/ui/ODataDependentMultiSelect.tsx","../../src/multi-select/ui/SerializableMultiSelect.tsx"],"sourcesContent":["import { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { SelectOptionContent } from \"../../select/SelectOptionContent\";\n\ninterface MultiSelectOptionProps {\n\titem: CollectionItem;\n\ttextKey: string;\n\tcodeKey?: string;\n\thighlight?: string;\n\tselected: boolean;\n}\n\n/**\n * Отдельная опция внутри `MultiSelect`. Отрисовывает состояние выбора и подсветку текста для найденных совпадений.\n */\nexport function MultiSelectOption({ item, textKey, codeKey, highlight }: MultiSelectOptionProps) {\n\treturn <SelectOptionContent label={item[textKey]} code={codeKey && item[codeKey]} highlight={highlight} />;\n}\n","@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.multiSelectTokens {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\theight: calc(100% - var(--space-sm));\n\tmax-width: calc(100% - var(--control-height) * 2);\n\n\t// overflow: hidden;\n\n\t&:empty {\n\t\tdisplay: none;\n\t}\n}\n\n.multiSelectToken {\n\t// font-size: var(--font-size-sm);\n\n\t// flex: 1 1 0%;\n\t// min-width: 0;\n\tmax-width: 70%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\tword-break: normal;\n\ttext-overflow: ellipsis;\n\n\tpointer-events: none;\n}\n","import styles from \"./MultiSelect.module.scss\";\n\ninterface MultiSelectTokenProps {\n\tvalue: string | undefined;\n}\n\n/**\n * Токен выбранного значения в `MultiSelect`. Показывает выбранный элемент и кнопку его удаления из текущего набора.\n */\nexport function MultiSelectToken({ value }: MultiSelectTokenProps) {\n\tif (!value) return null;\n\n\treturn (\n\t\t<div className={styles.multiSelectTokens}>\n\t\t\t<div className={styles.multiSelectToken}>{value}</div>\n\t\t</div>\n\t);\n}\n","import { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { PickerSelectionToolbar } from \"../../picker\";\n\nimport { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectToken } from \"./MultiSelectToken\";\n\nimport type { MultiSelectItemState, MultiSelectRenderContext } from \"./MultiSelect\";\n\ninterface MultiSelectRendererConfig {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n}\n\nexport function resolveMultiSelectTextKey(items: CollectionItem[], codeKey: string, textKey?: string) {\n\tif (textKey) {\n\t\treturn textKey;\n\t}\n\n\tconst sampleItem = items[0];\n\n\tif (!sampleItem) {\n\t\treturn codeKey;\n\t}\n\n\treturn Object.keys(sampleItem).find((key) => key !== codeKey) ?? codeKey;\n}\n\nexport function getDefaultMultiSelectTokenValue(items: CollectionItem[], codeKey: string, textKey?: string) {\n\tif (items.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (items.length > 1) {\n\t\treturn `${items.length} элемент${items.length > 5 ? \"ов\" : \"а\"})`;\n\t}\n\n\tconst resolvedTextKey = resolveMultiSelectTextKey(items, codeKey, textKey);\n\treturn items[0]?.[resolvedTextKey] ?? items[0]?.[codeKey];\n}\n\nexport function createDefaultMultiSelectTokenRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultToken(context: MultiSelectRenderContext) {\n\t\treturn <MultiSelectToken value={getDefaultMultiSelectTokenValue(context.selectedItems, config.codeKey, config.textKey)} />;\n\t};\n}\n\nexport function renderDefaultMultiSelectToolbar(context: MultiSelectRenderContext) {\n\treturn <PickerSelectionToolbar onSelectAll={context.selectAll} onDeselectAll={context.deselectAll} />;\n}\n\nexport function createDefaultMultiSelectItemRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultItem(item: CollectionItem, state: MultiSelectItemState) {\n\t\treturn (\n\t\t\t<MultiSelectOption\n\t\t\t\titem={item}\n\t\t\t\tselected={state.selected}\n\t\t\t\thighlight={state.highlightQuery}\n\t\t\t\ttextKey={resolveMultiSelectTextKey([item], config.codeKey, config.textKey)}\n\t\t\t\tcodeKey={config.hideCode ? undefined : config.codeKey}\n\t\t\t/>\n\t\t);\n\t};\n}\n","import { Text } from \"../../text\";\nimport uiStyles from \"../../ui.module.scss\";\n\ninterface MultiSelectOptionSkeletonProps {\n\ttext: string;\n\tisError?: boolean;\n}\n\n/**\n * Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.\n */\nexport function MultiSelectOptionSkeleton({ text, isError }: MultiSelectOptionSkeletonProps) {\n\treturn (\n\t\t<div className={uiStyles.uiPopupOption}>\n\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t<Text color={isError ? \"error\" : \"primary\"}>{text}</Text>\n\t\t</div>\n\t);\n}\n","import React, { forwardRef, type PropsWithChildren, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\nimport uiStyles from \"../../ui.module.scss\";\n\nimport {\n\tcreateDefaultMultiSelectItemRenderer,\n\tcreateDefaultMultiSelectTokenRenderer,\n\trenderDefaultMultiSelectToolbar,\n\tresolveMultiSelectTextKey\n} from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, isLoading, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\tif (isLoading) return <PickerStatus loadingState={<MultiSelectOptionSkeleton text=\"Загрузка...\" />} />;\n\tif (error) return <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\n\treturn <>{children}</>;\n}\n\nexport interface MultiSelectItemState {\n\tselected: boolean;\n\tactive: boolean;\n\tdisabled: boolean;\n\tquery: string;\n\thighlightQuery: string;\n}\n\nexport interface MultiSelectRenderContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tavailableItems: CollectionItem[];\n\tquery: string;\n\topen: boolean;\n\tclearSelection: () => void;\n\tselectAll: () => void;\n\tdeselectAll: () => void;\n}\n\nexport interface MultiSelectOptionDisableContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tselectedKeys: ReadonlySet<string>;\n\topen: boolean;\n}\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => React.ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: MultiSelectItemState) => React.ReactNode;\n}\n\nexport interface MultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\thighlightQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\titems: TOption[];\n\tgetOptionDisabled?: (item: TOption, context: MultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\nconst fallback: CollectionItem[] = [];\n\nfunction getItemKey(item: CollectionItem, codeKey: string) {\n\treturn item[codeKey];\n}\n\nfunction getItemSearchParts(item: CollectionItem, codeKey: string, textKey: string) {\n\treturn Array.from(new Set([item[textKey], item[codeKey], ...Object.values(item)]));\n}\n\nfunction areSelectionsEqual(left: CollectionItem[], right: CollectionItem[], codeKey: string) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map((item) => getItemKey(item, codeKey)));\n\n\treturn left.every((item) => rightKeys.has(getItemKey(item, codeKey)));\n}\n\ninterface MultiSelectOptionEntry {\n\titem: CollectionItem;\n\tindex: number;\n}\n\ninterface MultiSelectOptionGroupProps {\n\tentries: MultiSelectOptionEntry[];\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: Set<string>;\n\tcodeKey: string;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionDisabled?: (item: CollectionItem) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (item: CollectionItem) => void;\n\tselectOnlyOption: (item: CollectionItem) => void;\n\trenderItem: (item: CollectionItem, state: MultiSelectItemState) => React.ReactNode;\n}\n\nfunction MultiSelectOptionGroup({\n\tentries,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tcodeKey,\n\tquery,\n\thighlightQuery,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderItem\n}: MultiSelectOptionGroupProps) {\n\treturn entries.map(({ item, index }) => {\n\t\tconst active = index === activeIndex;\n\t\tconst selected = selectedKeys.has(getItemKey(item, codeKey));\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={`${getItemKey(item, codeKey)}-${index}`}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tuiStyles.uiSelectOption,\n\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\tactive && uiStyles.uiPopupOptionActive\n\t\t\t\t)}\n\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}}>\n\t\t\t\t<div\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}}>\n\t\t\t\t\t<CheckBox\n\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\tonChange={() => {\n\t\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\t\ttoggleOption(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"overflowHidden\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\tselectOnlyOption(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t{renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery })}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t});\n}\n\n/**\n * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.\n * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.\n */\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\tcodeKey,\n\t\t\ttextKey,\n\t\t\thideCode,\n\t\t\titems,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tplaceholder,\n\t\t\tsize,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\thighlightQuery,\n\t\t\tonQuery,\n\t\t\tdefaultFilter = true,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tgetOptionDisabled,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tisLoading,\n\t\t\trenderToken,\n\t\t\trenderToolbar,\n\t\t\trenderItem\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\t\tconst [open, setOpen] = useState(false);\n\t\tconst triggerMode = \"search-multi\";\n\t\tconst committedSelectedItems = value ?? fallback;\n\t\tconst committedSelectedKeys = useMemo(\n\t\t\t() => new Set(committedSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedItems]\n\t\t);\n\t\tconst availableItems = useMemo(\n\t\t\t() => items.filter((item) => !committedSelectedKeys.has(getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedKeys, items]\n\t\t);\n\t\tconst resolvedTextKey = useMemo(\n\t\t\t() => resolveMultiSelectTextKey([...committedSelectedItems, ...items], codeKey, textKey),\n\t\t\t[codeKey, committedSelectedItems, items, textKey]\n\t\t);\n\t\tconst { query: currentQuery, setQuery } = usePickerQuery({\n\t\t\topen,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\n\t\t});\n\t\tconst filteredCommittedSelectedItems = usePickerDefaultFilter({\n\t\t\toptions: committedSelectedItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst filteredAvailableItems = usePickerDefaultFilter({\n\t\t\toptions: availableItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst visibleOptions = useMemo(\n\t\t\t() => [...filteredCommittedSelectedItems, ...filteredAvailableItems],\n\t\t\t[filteredAvailableItems, filteredCommittedSelectedItems]\n\t\t);\n\t\tconst selectedIndex = filteredCommittedSelectedItems.length > 0 ? 0 : -1;\n\t\tconst {\n\t\t\tdraftValue: draftSelectedItems,\n\t\t\tsetDraftValue: setDraftSelectedItems,\n\t\t\tprepareOpen\n\t\t} = usePickerSelectionLifecycle({\n\t\t\tvalue: committedSelectedItems,\n\t\t\topen,\n\t\t\tonCommit: onChange,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tisEqual: (left, right) => areSelectionsEqual(left, right, codeKey)\n\t\t});\n\t\tconst selectedKeys = useMemo(\n\t\t\t() => new Set(draftSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, draftSelectedItems]\n\t\t);\n\t\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext>(\n\t\t\t() => ({\n\t\t\t\tselectedItems: draftSelectedItems,\n\t\t\t\tcommittedSelectedItems,\n\t\t\t\tselectedKeys,\n\t\t\t\topen\n\t\t\t}),\n\t\t\t[committedSelectedItems, draftSelectedItems, open, selectedKeys]\n\t\t);\n\t\tconst isOptionDisabled = useCallback(\n\t\t\t(item: CollectionItem) => getOptionDisabled?.(item, optionDisableContext) ?? false,\n\t\t\t[getOptionDisabled, optionDisableContext]\n\t\t);\n\t\tconst {\n\t\t\tactiveIndex,\n\t\t\tcontext,\n\t\t\tfloatingStyles,\n\t\t\tgetFloatingProps,\n\t\t\tsetReference,\n\t\t\tsetFloating,\n\t\t\tsetOptionRef,\n\t\t\tclose,\n\t\t\topenList,\n\t\t\ttoggleOpen,\n\t\t\tselectActiveOption,\n\t\t\thandleReferenceKeyDown,\n\t\t\thandleFloatingKeyDown,\n\t\t\tgetOptionId,\n\t\t\tgetActiveOptionId\n\t\t} = usePickerFloatingListbox({\n\t\t\toptions: visibleOptions,\n\t\t\tselectedIndex,\n\t\t\topen,\n\t\t\tonOpenChange: setOpen,\n\t\t\tonSelect: undefined,\n\t\t\tdisabled,\n\t\t\tgetOptionDisabled: isOptionDisabled,\n\t\t\tcloseOnSelect: false,\n\t\t\tallowOpenWithoutOptions: true,\n\t\t\ttriggerMode\n\t\t});\n\n\t\tconst currentHighlightQuery = highlightQuery ?? currentQuery;\n\t\tconst toggleDraftSelection = (item: CollectionItem) => {\n\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst isSelected = currentItems.some((selectedItem) => getItemKey(selectedItem, codeKey) === itemKey);\n\n\t\t\t\tif (isSelected) {\n\t\t\t\t\treturn currentItems.filter((selectedItem) => getItemKey(selectedItem, codeKey) !== itemKey);\n\t\t\t\t}\n\n\t\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\t\treturn currentItems;\n\t\t\t\t}\n\n\t\t\t\treturn [...currentItems, item];\n\t\t\t});\n\t\t};\n\n\t\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\t\tinputRef.current = node;\n\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\tref(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ref) {\n\t\t\t\tref.current = node;\n\t\t\t}\n\t\t};\n\n\t\tconst clearSelection = () => {\n\t\t\tsetDraftSelectedItems([]);\n\n\t\t\tif (!open) {\n\t\t\t\tonChange([]);\n\t\t\t}\n\t\t};\n\n\t\tconst selectAll = () => {\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst nextItems = [...currentItems];\n\t\t\t\tconst selectedKeys = new Set(currentItems.map((item) => getItemKey(item, codeKey)));\n\n\t\t\t\tfor (const item of visibleOptions) {\n\t\t\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\t\t\tif (!selectedKeys.has(itemKey) && !isOptionDisabled(item)) {\n\t\t\t\t\t\tselectedKeys.add(itemKey);\n\t\t\t\t\t\tnextItems.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nextItems;\n\t\t\t});\n\t\t};\n\n\t\tconst deselectAll = () => {\n\t\t\tsetDraftSelectedItems([]);\n\t\t};\n\n\t\tconst selectOnlyOption = (item: CollectionItem) => {\n\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetDraftSelectedItems([item]);\n\t\t\tclose();\n\t\t};\n\n\t\tconst currentSelectedItems = open ? draftSelectedItems : committedSelectedItems;\n\t\tconst hasSelectedItems = currentSelectedItems.length > 0;\n\t\tconst renderContext: MultiSelectRenderContext = {\n\t\t\tselectedItems: currentSelectedItems,\n\t\t\tcommittedSelectedItems,\n\t\t\tavailableItems: filteredAvailableItems,\n\t\t\tquery: currentQuery,\n\t\t\topen,\n\t\t\tclearSelection,\n\t\t\tselectAll,\n\t\t\tdeselectAll\n\t\t};\n\t\tconst tokenRenderer =\n\t\t\trenderToken === undefined ? createDefaultMultiSelectTokenRenderer({ codeKey, textKey: resolvedTextKey }) : renderToken;\n\t\tconst toolbarRenderer = renderToolbar === undefined ? renderDefaultMultiSelectToolbar : renderToolbar;\n\t\tconst itemRenderer =\n\t\t\trenderItem ??\n\t\t\tcreateDefaultMultiSelectItemRenderer({\n\t\t\t\tcodeKey,\n\t\t\t\ttextKey: resolvedTextKey,\n\t\t\t\thideCode\n\t\t\t});\n\t\tconst tokenNode = typeof tokenRenderer === \"function\" ? tokenRenderer(renderContext) : null;\n\t\tconst toolbarNode = typeof toolbarRenderer === \"function\" ? toolbarRenderer(renderContext) : null;\n\t\t// const hasToken = tokenNode !== null && tokenNode !== undefined;\n\t\tconst selectedEntries = filteredCommittedSelectedItems.map((item, index) => ({ item, index }));\n\t\tconst itemEntries = filteredAvailableItems.map((item, index) => ({ item, index: index + selectedEntries.length }));\n\t\tconst isNoData = !isLoading && !error && visibleOptions.length === 0;\n\t\tconst triggerController = usePickerTriggerController({\n\t\t\tmode: triggerMode,\n\t\t\topen,\n\t\t\tcurrentQuery,\n\t\t\thasDisplayValue: false,\n\t\t\tinputRef,\n\t\t\tsetQuery,\n\t\t\topenList,\n\t\t\tclose,\n\t\t\ttoggleOpen,\n\t\t\tonBeforeOpen: () => {\n\t\t\t\tif (!open) {\n\t\t\t\t\tprepareOpen();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<PickerField\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tsize={size}\n\t\t\t\tclassName={styles.multiSelect}>\n\t\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PickerTriggerInput\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\t\tplaceholder={hasSelectedItems ? undefined : placeholder}\n\t\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\trootClassName=\"flex alignItemsCenter\"\n\t\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t\t{tokenNode}\n\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasSelectedItems}\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"multi-select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-multi-select\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить все\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\tonActivateWhenOpen: () => {\n\t\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeItem);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tselectActiveOption();\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tenableClosedArrowDownOpen: true,\n\t\t\t\t\t\t\t\t\t\tsuppressClosedArrowUp: true\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\t\tactiveOptionId={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t\t\t\treturnFocus={false}\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\tclassName={uiStyles.uiPopupOptions}\n\t\t\t\t\t\t\t\theader={toolbarNode}>\n\t\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} isLoading={isLoading} error={error}>\n\t\t\t\t\t\t\t\t\t<div className=\"scrollable h100\">\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableItems.length > 0 && <Separator className=\"marginBlockSm\" />}\n\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={itemEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</MultiSelectOptionsWrapper>\n\t\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t</PickerField>\n\t\t);\n\t}\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n","import { ODataCollectionModel, ODataSelectBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { mapSelectedItemsToValues, useODataSelectBase } from \"../../select/model/useODataSelectBase\";\n\ninterface UseODataMultiSelectOptions extends Omit<ODataSelectBaseProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (keys: string[]) => void;\n}\n\nexport function useODataMultiSelect({ odata, segment, model, value, dependencies, onChange }: UseODataMultiSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies\n\t});\n\n\tconst handleChange = (items: CollectionItem[]) => {\n\t\tonChange(mapSelectedItemsToValues(items, odataModel.selectionKey));\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\thandleChange\n\t};\n}\n","import React from \"react\";\n\nimport { ODataSelectBaseProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { UiBaseProps } from \"../../types\";\nimport { useODataMultiSelect } from \"../model/useODataMultiSelect\";\n\nimport { MultiSelect } from \"./MultiSelect\";\n\ntype ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, \"placeholder\"> & {};\n\nexport const ODataMultiSelect: React.FC<ODataMultiSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tsize\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataMultiSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tsize={size}\n\t\t\tcodeKey={odataModel.codeKey}\n\t\t\ttextKey={odataModel.textKey}\n\t\t\thideCode={segment.hideCode ?? odata.hideCode}\n\t\t\titems={odataModel.filteredItems}\n\t\t\tvalue={odataModel.selectedItems}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tquery={odataModel.query}\n\t\t\tdefaultFilter={false}\n\t\t\thighlightQuery={odataModel.debouncedQuery}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback, useState } from \"react\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentItem } from \"@ryuzaki13/react-foundation-api/odata\";\n\ninterface ODataDependentSegmentMultiSelectProps {\n\titem: ODataDependentSegmentItem;\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentSegmentMultiSelect: React.FC<ODataDependentSegmentMultiSelectProps> = ({\n\titem,\n\tvalues,\n\tonChange,\n\twidth = 15\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tconst nextSelectedValues = {\n\t\t\t\t...selectedValues,\n\t\t\t\t[item.id]: keys\n\t\t\t};\n\n\t\t\tif (!values) {\n\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t}\n\n\t\t\tonChange?.(nextSelectedValues);\n\t\t},\n\t\t[item.id, onChange, selectedValues, values]\n\t);\n\n\treturn (\n\t\t<div style={{ maxWidth: widthStyle, minWidth: widthStyle }}>\n\t\t\t<ODataMultiSelect\n\t\t\t\todata={item.odata}\n\t\t\t\tsegment={item.segment}\n\t\t\t\tmodel={item.model}\n\t\t\t\tdependencies={selectedValues}\n\t\t\t\tvalue={selectedValues[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useState } from \"react\";\n\nimport { flattenODataDependentServices, ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\ninterface ODataDependentMultiSelectProps extends ODataDependentBaseProps {\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentMultiSelect: React.FC<ODataDependentMultiSelectProps> = ({\n\twidth = 15,\n\todata,\n\tsegments,\n\tmodel,\n\tvalues,\n\tonChange\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\n\tconst items = flattenODataDependentServices([\n\t\t{\n\t\t\todata,\n\t\t\tsegments,\n\t\t\tmodel\n\t\t}\n\t]);\n\n\treturn items.map((item) => (\n\t\t<ODataDependentSegmentMultiSelect\n\t\t\tkey={item.id}\n\t\t\titem={item}\n\t\t\tvalues={selectedValues}\n\t\t\tonChange={(nextSelectedValues) => {\n\t\t\t\tif (!values) {\n\t\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t\t}\n\n\t\t\t\tonChange?.(nextSelectedValues);\n\t\t\t}}\n\t\t\twidth={width}\n\t\t/>\n\t));\n};\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { UiBaseProps } from \"../../types\";\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], string> extends never ? never : K;\n}[keyof TOption];\n\nexport interface SerializableMultiSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends UiBaseProps<Extract<TOption[TOptionKey], string>[]> {\n\toptions: readonly TOption[];\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], string> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], string>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" ? key : String(key);\n}\n\nexport function SerializableMultiSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode\n}: SerializableMultiSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\t// Как будто можно не мемоизировать, нет смысла\n\tconst items = options.map<CollectionItem>((option) => ({\n\t\tkey: String(getSerializableOptionKey(option, optionKey)),\n\t\ttext: getSerializableOptionLabel(option, optionLabel, optionKey)\n\t}));\n\tconst selectedKeys = new Set((value ?? []).map((item) => String(item)));\n\tconst selectedItems = items.filter((item) => selectedKeys.has(item.key));\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\titems={items}\n\t\t\tcodeKey=\"key\"\n\t\t\ttextKey=\"text\"\n\t\t\thideCode={renderCode ? undefined : true}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={(nextItems) => onChange(nextItems.map((item) => item.key) as Extract<TOption[TOptionKey], string>[])}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}