@ryuzaki13/react-foundation-ui 1.8.2 → 1.8.4

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 (423) hide show
  1. package/dist/advanced-search/index.js +8 -8
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DGElHRTJ.js → CalendarView-BJx6akIp.js} +2 -2
  7. package/dist/chunks/{CalendarView-DGElHRTJ.js.map → CalendarView-BJx6akIp.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js → TextEditorLexicalClient-Ca89d-Db.js} +6 -6
  10. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js.map → TextEditorLexicalClient-Ca89d-Db.js.map} +1 -1
  11. package/dist/chunks/{badge-DMM8cOHd.js → badge-DUI2ET6q.js} +2 -2
  12. package/dist/chunks/{badge-DMM8cOHd.js.map → badge-DUI2ET6q.js.map} +1 -1
  13. package/dist/chunks/{base-table-DNSYOO9t.js → base-table-CsnUiMTe.js} +2 -2
  14. package/dist/chunks/{base-table-DNSYOO9t.js.map → base-table-CsnUiMTe.js.map} +1 -1
  15. package/dist/chunks/{button-BsvHGWPc.js → button-C53OkqTg.js} +3 -3
  16. package/dist/chunks/{button-BsvHGWPc.js.map → button-C53OkqTg.js.map} +1 -1
  17. package/dist/chunks/{check-box-sfGjYczQ.js → check-box-CC8CDnSR.js} +3 -3
  18. package/dist/chunks/{check-box-sfGjYczQ.js.map → check-box-CC8CDnSR.js.map} +1 -1
  19. package/dist/chunks/context-menu-C8sA7xCN.js +525 -0
  20. package/dist/chunks/context-menu-C8sA7xCN.js.map +1 -0
  21. package/dist/chunks/{date-input-C4GcKul6.js → date-input-g6l1iDmf.js} +5 -5
  22. package/dist/chunks/{date-input-C4GcKul6.js.map → date-input-g6l1iDmf.js.map} +1 -1
  23. package/dist/chunks/defaultRenderers-Dbhg2hHc.js +38 -0
  24. package/dist/chunks/defaultRenderers-Dbhg2hHc.js.map +1 -0
  25. package/dist/chunks/{input-CCdBtl-C.js → input-d08WN5FV.js} +2 -2
  26. package/dist/chunks/{input-CCdBtl-C.js.map → input-d08WN5FV.js.map} +1 -1
  27. package/dist/chunks/{input-files-TXdXrSAs.js → input-files-_NdSQM_3.js} +3 -3
  28. package/dist/chunks/{input-files-TXdXrSAs.js.map → input-files-_NdSQM_3.js.map} +1 -1
  29. package/dist/chunks/{input-search-Ca8iqeK2.js → input-search-BjtTMoRu.js} +2 -2
  30. package/dist/chunks/{input-search-Ca8iqeK2.js.map → input-search-BjtTMoRu.js.map} +1 -1
  31. package/dist/chunks/{modal-DLRYn-Lr.js → modal-Bar-j5a4.js} +2 -2
  32. package/dist/chunks/{modal-DLRYn-Lr.js.map → modal-Bar-j5a4.js.map} +1 -1
  33. package/dist/chunks/multi-select-Cvjz9W07.js +466 -0
  34. package/dist/chunks/multi-select-Cvjz9W07.js.map +1 -0
  35. package/dist/chunks/picker-0I1yMKIY.js +435 -0
  36. package/dist/chunks/picker-0I1yMKIY.js.map +1 -0
  37. package/dist/chunks/{radio-group-BAeJjyZ5.js → radio-group-DhpP7JSJ.js} +2 -2
  38. package/dist/chunks/{radio-group-BAeJjyZ5.js.map → radio-group-DhpP7JSJ.js.map} +1 -1
  39. package/dist/chunks/select-CUQ91FIc.js +363 -0
  40. package/dist/chunks/select-CUQ91FIc.js.map +1 -0
  41. package/dist/chunks/{table-RO4dfMAj.js → table-z9kyd9U3.js} +2 -2
  42. package/dist/chunks/{table-RO4dfMAj.js.map → table-z9kyd9U3.js.map} +1 -1
  43. package/dist/chunks/{ui.module-DHVTOqZ0.js → ui.module-BsDio9A3.js} +4 -3
  44. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -0
  45. package/dist/chunks/{uiClasses-UkaejTdf.js → uiClasses-BVwFzzsr.js} +2 -2
  46. package/dist/chunks/{uiClasses-UkaejTdf.js.map → uiClasses-BVwFzzsr.js.map} +1 -1
  47. package/dist/chunks/useODataSelectBase-DR4PrY1j.js +117 -0
  48. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -0
  49. package/dist/context-menu/components/ContextMenu.d.ts +2 -1
  50. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  51. package/dist/context-menu/components/DropdownMenu.d.ts +2 -1
  52. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuItem.d.ts +6 -6
  55. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuRoot.d.ts +1 -1
  57. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  58. package/dist/context-menu/index.js +1 -1
  59. package/dist/date-input/index.js +2 -2
  60. package/dist/date-time-input/index.js +3 -3
  61. package/dist/disclosure/index.js +2 -2
  62. package/dist/drop-zone/index.js +1 -1
  63. package/dist/expandable-action-panel/index.js +1 -1
  64. package/dist/image/index.js +4 -4
  65. package/dist/input/index.js +1 -1
  66. package/dist/input-date-time/index.js +2 -2
  67. package/dist/input-file/index.js +2 -2
  68. package/dist/input-files/index.js +1 -1
  69. package/dist/input-image/index.js +2 -2
  70. package/dist/input-search/index.js +1 -1
  71. package/dist/layout-picker/index.js +66 -68
  72. package/dist/layout-picker/index.js.map +1 -1
  73. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  74. package/dist/listbox/Listbox.d.ts +1 -1
  75. package/dist/listbox/Listbox.d.ts.map +1 -1
  76. package/dist/listbox/index.js +71 -59
  77. package/dist/listbox/index.js.map +1 -1
  78. package/dist/modal/index.js +1 -1
  79. package/dist/multi-select/index.js +2 -2
  80. package/dist/multi-select/ui/MultiSelect.d.ts +11 -1
  81. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  82. package/dist/multi-select/ui/defaultRenderers.d.ts +6 -4
  83. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  84. package/dist/multi-select/ui/index.d.ts +0 -1
  85. package/dist/multi-select/ui/index.d.ts.map +1 -1
  86. package/dist/notifications/index.js +1 -1
  87. package/dist/option/CustomOptionButton.d.ts +6 -0
  88. package/dist/option/CustomOptionButton.d.ts.map +1 -0
  89. package/dist/option/Option.d.ts +14 -0
  90. package/dist/option/Option.d.ts.map +1 -0
  91. package/dist/option/OptionButton.d.ts +8 -0
  92. package/dist/option/OptionButton.d.ts.map +1 -0
  93. package/dist/option/OptionCode.d.ts +6 -0
  94. package/dist/option/OptionCode.d.ts.map +1 -0
  95. package/dist/option/OptionContent.d.ts +19 -0
  96. package/dist/option/OptionContent.d.ts.map +1 -0
  97. package/dist/option/OptionHotkey.d.ts +6 -0
  98. package/dist/option/OptionHotkey.d.ts.map +1 -0
  99. package/dist/option/OptionIcon.d.ts +6 -0
  100. package/dist/option/OptionIcon.d.ts.map +1 -0
  101. package/dist/option/OptionLink.d.ts +8 -0
  102. package/dist/option/OptionLink.d.ts.map +1 -0
  103. package/dist/option/OptionText.d.ts +6 -0
  104. package/dist/option/OptionText.d.ts.map +1 -0
  105. package/dist/option/index.d.ts +10 -0
  106. package/dist/option/index.d.ts.map +1 -0
  107. package/dist/option/index.js +112 -0
  108. package/dist/option/index.js.map +1 -0
  109. package/dist/picker/PickerClearButton.d.ts +9 -0
  110. package/dist/picker/PickerClearButton.d.ts.map +1 -0
  111. package/dist/picker/PickerOptions.d.ts +22 -0
  112. package/dist/picker/PickerOptions.d.ts.map +1 -0
  113. package/dist/picker/PickerPlaceholder.d.ts +14 -0
  114. package/dist/picker/PickerPlaceholder.d.ts.map +1 -0
  115. package/dist/picker/PickerPopup.d.ts +4 -3
  116. package/dist/picker/PickerPopup.d.ts.map +1 -1
  117. package/dist/picker/PickerSelectedToken.d.ts +7 -0
  118. package/dist/picker/PickerSelectedToken.d.ts.map +1 -0
  119. package/dist/picker/PickerTrigger.d.ts +29 -0
  120. package/dist/picker/PickerTrigger.d.ts.map +1 -0
  121. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  122. package/dist/picker/PickerTriggerInput.d.ts +1 -2
  123. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  124. package/dist/picker/index.d.ts +5 -0
  125. package/dist/picker/index.d.ts.map +1 -1
  126. package/dist/picker/index.js +2 -2
  127. package/dist/picker/model/extractPickerTextContent.d.ts +1 -1
  128. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -1
  129. package/dist/preset-range-date-input/index.js +1 -1
  130. package/dist/preset-select/PresetSelect.d.ts +1 -1
  131. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  132. package/dist/preset-select/index.js +1 -1
  133. package/dist/preset-select/index.js.map +1 -1
  134. package/dist/radio-button/index.js +2 -2
  135. package/dist/radio-group/index.js +1 -1
  136. package/dist/select/Select.d.ts +4 -2
  137. package/dist/select/Select.d.ts.map +1 -1
  138. package/dist/select/SelectOptionGroup.d.ts +1 -1
  139. package/dist/select/SelectOptionGroup.d.ts.map +1 -1
  140. package/dist/select/index.js +1 -1
  141. package/dist/simple-table/index.js +1 -1
  142. package/dist/slider/index.js +3 -3
  143. package/dist/state-select/StateSelect.d.ts +1 -1
  144. package/dist/state-select/StateSelect.d.ts.map +1 -1
  145. package/dist/state-select/index.js +1 -1
  146. package/dist/state-select/index.js.map +1 -1
  147. package/dist/styles.css +1 -1
  148. package/dist/switch/index.js +1 -1
  149. package/dist/table/index.js +1 -1
  150. package/dist/table-sorting/index.js +1 -1
  151. package/dist/tabs/index.js +2 -2
  152. package/dist/tag-input/index.js +2 -2
  153. package/dist/text-editor/index.js +1 -1
  154. package/dist/textarea/index.js +2 -2
  155. package/dist/toggle/index.js +1 -1
  156. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  157. package/dist/tree-select/TreeNodeContent.d.ts +2 -1
  158. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  159. package/dist/tree-select/TreePickerBase.d.ts +4 -1
  160. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  161. package/dist/tree-select/index.js +322 -353
  162. package/dist/tree-select/index.js.map +1 -1
  163. package/dist/tree-table/index.js +1 -1
  164. package/package.json +5 -1
  165. package/src/styles/themes/_interactive-surface.scss +67 -0
  166. package/storybook-static/assets/{Badge-Dis0WdSI.js → Badge-BazfGubN.js} +1 -1
  167. package/storybook-static/assets/{Badge.stories-DKUJOyg3.js → Badge.stories-VRDt3jMW.js} +1 -1
  168. package/storybook-static/assets/{BadgeList-C_ImRsat.js → BadgeList-CCz0WCRb.js} +1 -1
  169. package/storybook-static/assets/{Button-BSsRzaxX.js → Button-CMYD3NJ-.js} +1 -1
  170. package/storybook-static/assets/{Button-DxGg9rB3.js → Button-DWcNl5Zj.js} +1 -1
  171. package/storybook-static/assets/{Button.stories-fHvDvt2w.js → Button.stories-B3Apb2Ql.js} +1 -1
  172. package/storybook-static/assets/{CalendarView-BFcwl9Vq.js → CalendarView-PEudhNak.js} +1 -1
  173. package/storybook-static/assets/{CheckBox-CSbi2BEU.js → CheckBox-BJzDZz1m.js} +1 -1
  174. package/storybook-static/assets/CheckBox-DWrG0yT0.css +1 -0
  175. package/storybook-static/assets/{CheckBox-SuVeN-FY.js → CheckBox-yw29uS-5.js} +1 -1
  176. package/storybook-static/assets/{CheckBox.stories-C6PF0zG1.js → CheckBox.stories-s55oWii9.js} +1 -1
  177. package/storybook-static/assets/{Color-6AOWCN3U-DX3p6XEG.js → Color-6AOWCN3U-Cv5TeHjl.js} +1 -1
  178. package/storybook-static/assets/{ContextMenu-f0QZPgBQ.js → ContextMenu-B4wKUE8V.js} +1 -1
  179. package/storybook-static/assets/ContextMenu-CFPrlO2u.css +1 -0
  180. package/storybook-static/assets/ContextMenu-Py3xGtjx.js +1 -0
  181. package/storybook-static/assets/ContextMenu.stories-D0tE2Py7.js +37 -0
  182. package/storybook-static/assets/CustomOptionButton-DfUeGOyK.js +1 -0
  183. package/storybook-static/assets/{DateInput-C0K0JvWe.js → DateInput-CAh9jnPm.js} +1 -1
  184. package/storybook-static/assets/{DateInput-BmL4c3wO.js → DateInput-PGhcIb-N.js} +1 -1
  185. package/storybook-static/assets/{DateInput.stories-65WMYAML.js → DateInput.stories-3PkULX39.js} +1 -1
  186. package/storybook-static/assets/{DateRangePresetSelect-DVAqXJt1.js → DateRangePresetSelect-BAul11Hu.js} +1 -1
  187. package/storybook-static/assets/{DateRangePresetSelect-DdpNa-Yj.js → DateRangePresetSelect-QD9hMhTi.js} +1 -1
  188. package/storybook-static/assets/DateRangePresetSelect.stories-DHZcrIJ5.js +19 -0
  189. package/storybook-static/assets/{Detail-1rmVP04K.js → Detail-B4bZrxtj.js} +1 -1
  190. package/storybook-static/assets/{Detail.stories-CW2YXAPy.js → Detail.stories-BqZjQl2L.js} +1 -1
  191. package/storybook-static/assets/{Dialog-CszRheXL.js → Dialog-DnXPYFBh.js} +1 -1
  192. package/storybook-static/assets/{Dialog-DcdGv_Bv.js → Dialog-r6FZVhKu.js} +1 -1
  193. package/storybook-static/assets/{Dialog.stories-CN9vtGuI.js → Dialog.stories-BpFQ8-23.js} +1 -1
  194. package/storybook-static/assets/{Disclosure-DWeZZ2i8.js → Disclosure-DOU_WgGj.js} +1 -1
  195. package/storybook-static/assets/{Disclosure.stories-pZXR5BOM.js → Disclosure.stories-C9wGRzxY.js} +1 -1
  196. package/storybook-static/assets/{DisclosureGroup-BWba17wI.js → DisclosureGroup-D6JXQUMx.js} +1 -1
  197. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BYN3Mg4U.js → DocsRenderer-JROSPFPF-CgT68qHp.js} +1 -1
  198. package/storybook-static/assets/{DropZone-ByDIyQgI.js → DropZone-B_9dX3jy.js} +1 -1
  199. package/storybook-static/assets/{DropZone-BCe20YiO.js → DropZone-Cx2F0t9p.js} +1 -1
  200. package/storybook-static/assets/{DropZone.stories-CLXe7D8H.js → DropZone.stories-quFSsVRn.js} +1 -1
  201. package/storybook-static/assets/{DropdownMenu-BD-pc32j.js → DropdownMenu-BOSAD3oH.js} +1 -1
  202. package/storybook-static/assets/{ExpandableActionPanel-v-DZaEKX.js → ExpandableActionPanel-D6NDXTu4.js} +1 -1
  203. package/storybook-static/assets/{ExpandableActionPanel.stories-BhHYM4mJ.js → ExpandableActionPanel.stories-CVjY1iX5.js} +1 -1
  204. package/storybook-static/assets/{Flex-DukB58MF.js → Flex-BLsAxNZH.js} +1 -1
  205. package/storybook-static/assets/{Flex.stories-DQmoW5jb.js → Flex.stories-COgd-m61.js} +1 -1
  206. package/storybook-static/assets/{FloatingPopover-fnwAyZil.js → FloatingPopover-BHoALAyc.js} +1 -1
  207. package/storybook-static/assets/{FormattedTableCell-CK1yXePp.js → FormattedTableCell-jahnzzXB.js} +1 -1
  208. package/storybook-static/assets/{Grid-BoLaxbR_.js → Grid-D6u5WD3Q.js} +1 -1
  209. package/storybook-static/assets/{Grid.stories-CSuOTbao.js → Grid.stories-CcoCu0LK.js} +1 -1
  210. package/storybook-static/assets/{ImageCropper.stories-BRi_qlO4.js → ImageCropper.stories-BltZdz_w.js} +1 -1
  211. package/storybook-static/assets/{ImageRenderer-BiV2g53B.js → ImageRenderer-BTz3VRCH.js} +1 -1
  212. package/storybook-static/assets/{ImageRenderer.stories-Da7QE7_Q.js → ImageRenderer.stories-Bgaa216V.js} +1 -1
  213. package/storybook-static/assets/{ImageView.stories-DSFBxOa6.js → ImageView.stories-DNR6oWH-.js} +1 -1
  214. package/storybook-static/assets/{ImageViewer.stories-D2rcovap.js → ImageViewer.stories-BN4RTTO5.js} +2 -2
  215. package/storybook-static/assets/{ImageViewerRuntime-B2CS1UFL.js → ImageViewerRuntime-DaiwPOBp.js} +1 -1
  216. package/storybook-static/assets/{Input-CVs7SVMJ.js → Input-Ctu1FLAo.js} +1 -1
  217. package/storybook-static/assets/{Input-BIy4zhlA.js → Input-gekKw4Qs.js} +1 -1
  218. package/storybook-static/assets/{Input.stories-BBXrateo.js → Input.stories-BggH3U4m.js} +1 -1
  219. package/storybook-static/assets/{InputDateTime-VUiW2Znv.js → InputDateTime-BilfVxzl.js} +1 -1
  220. package/storybook-static/assets/{InputDateTime.stories-lqECZY7T.js → InputDateTime.stories-Dg12XqNR.js} +1 -1
  221. package/storybook-static/assets/{InputFile-D0aHVW1q.js → InputFile-CgfUHLMj.js} +1 -1
  222. package/storybook-static/assets/{InputFile-DEeRFq2f.js → InputFile-GlyPqFhE.js} +1 -1
  223. package/storybook-static/assets/{InputFile.stories-9fBhIus4.js → InputFile.stories-67US4MbA.js} +1 -1
  224. package/storybook-static/assets/{InputFiles-C_KIqiN9.js → InputFiles-CEfoc97w.js} +1 -1
  225. package/storybook-static/assets/{InputFiles-DTy038xW.js → InputFiles-DgoOF_5y.js} +1 -1
  226. package/storybook-static/assets/{InputFiles.stories-CspkI6-Y.js → InputFiles.stories-O8pudhPC.js} +1 -1
  227. package/storybook-static/assets/{InputFilesList-BQdSFOI1.js → InputFilesList-_qhXHNH0.js} +1 -1
  228. package/storybook-static/assets/{InputImage-C0kyUtT0.js → InputImage-BPUac2Z0.js} +1 -1
  229. package/storybook-static/assets/{InputImage-VJaqApEh.js → InputImage-BR8hGCOw.js} +1 -1
  230. package/storybook-static/assets/{InputImage.stories-DKXeva5i.js → InputImage.stories-BAa0Lev5.js} +1 -1
  231. package/storybook-static/assets/{InteractiveComponents-B8zzCcZ_.js → InteractiveComponents-Cc3uRY7X.js} +1 -1
  232. package/storybook-static/assets/{InteractiveComponents.stories-DP0Jma43.js → InteractiveComponents.stories-nMxOIkmX.js} +1 -1
  233. package/storybook-static/assets/LayoutPicker-BY4-fUQa.css +1 -0
  234. package/storybook-static/assets/{LayoutPicker-BpcPcCDz.js → LayoutPicker-Cb4v3x_G.js} +1 -1
  235. package/storybook-static/assets/LayoutPicker-KZTxqlGf.js +376 -0
  236. package/storybook-static/assets/{LayoutPicker.stories-POpVHww7.js → LayoutPicker.stories-BbV9ZXzc.js} +1 -1
  237. package/storybook-static/assets/Listbox-C92C4jC8.js +1 -0
  238. package/storybook-static/assets/{Listbox-gHitzePa.js → Listbox-DkvAwfwh.js} +1 -1
  239. package/storybook-static/assets/{Listbox.stories-Dw3IdYZA.js → Listbox.stories-DTXTRenl.js} +1 -1
  240. package/storybook-static/assets/{Modal-CY7qfD1u.js → Modal-CIwNzxbo.js} +1 -1
  241. package/storybook-static/assets/{Modal.stories-Boa7oW-a.js → Modal.stories-9ktsjdlT.js} +1 -1
  242. package/storybook-static/assets/{ModalManagerProvider-GYXaQe-7.js → ModalManagerProvider-CqG-xbfj.js} +1 -1
  243. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +1 -0
  244. package/storybook-static/assets/{MultiSelect-DToMWi-I.js → MultiSelect-DQm2lbrO.js} +1 -1
  245. package/storybook-static/assets/MultiSelect-qwlU7fvU.js +2 -0
  246. package/storybook-static/assets/{MultiSelect.stories-DLuXOl9Q.js → MultiSelect.stories-bq1Xkq9E.js} +1 -1
  247. package/storybook-static/assets/{NoData-Bzj7vNCz.js → NoData-CeVr2a_m.js} +1 -1
  248. package/storybook-static/assets/{NotificationsHost-Bs93X8Nv.js → NotificationsHost-ubJMdXdC.js} +1 -1
  249. package/storybook-static/assets/{NotificationsHost.stories-DxVOVOf8.js → NotificationsHost.stories-CZQ9euOx.js} +1 -1
  250. package/storybook-static/assets/{ODataMultiSelect-Dh33YJP6.js → ODataMultiSelect-BHIpg_P7.js} +1 -1
  251. package/storybook-static/assets/ODataMultiSelect.stories-B8XwUQQ6.js +126 -0
  252. package/storybook-static/assets/{ODataSelect-lpN9sKth.js → ODataSelect-CE3b_939.js} +1 -1
  253. package/storybook-static/assets/ODataSelect.stories-DICkWxpb.js +148 -0
  254. package/storybook-static/assets/{ODataTreeMultiSelect-DFY2FJBX.js → ODataTreeMultiSelect-D-qt-iEB.js} +1 -1
  255. package/storybook-static/assets/ODataTreeMultiSelect.stories-D01WD4zP.js +74 -0
  256. package/storybook-static/assets/{ODataTreeSelect-DdniMRRE.js → ODataTreeSelect-IZZlfBOq.js} +1 -1
  257. package/storybook-static/assets/ODataTreeSelect.stories-B__1Vzqt.js +46 -0
  258. package/storybook-static/assets/{OneStepScroller-CHvIHlYx.js → OneStepScroller-CyJbFkoT.js} +1 -1
  259. package/storybook-static/assets/Option-CJBK9i2B.css +1 -0
  260. package/storybook-static/assets/Option-DQa5SXb3.js +10 -0
  261. package/storybook-static/assets/OptionButton-Dl4UZEH-.js +1 -0
  262. package/storybook-static/assets/{PeriodSelect-T1qaj11S.js → PeriodSelect-C_1wt-mw.js} +1 -1
  263. package/storybook-static/assets/{PeriodSelect-BgAak8GG.js → PeriodSelect-CexnILTv.js} +1 -1
  264. package/storybook-static/assets/{PeriodSelect.stories-DYEtD47p.js → PeriodSelect.stories-Dkne0t8f.js} +1 -1
  265. package/storybook-static/assets/PickerTriggerActions-BceJ6-XM.js +1 -0
  266. package/storybook-static/assets/{Popover-BVP-wMdK.js → Popover-BYKBmS3g.js} +1 -1
  267. package/storybook-static/assets/{Popover-DQKHL6wc.js → Popover-Dp9cqgB7.js} +1 -1
  268. package/storybook-static/assets/{Popover.stories-Pt4-7Aof.js → Popover.stories-CVddfiw-.js} +1 -1
  269. package/storybook-static/assets/{PresetRangeDateInput-C4_NegG_.js → PresetRangeDateInput-B0L3i9jd.js} +1 -1
  270. package/storybook-static/assets/{PresetRangeDateInput-DQ3rlCp5.js → PresetRangeDateInput-CdWhErE7.js} +1 -1
  271. package/storybook-static/assets/{PresetRangeDateInput.stories-3AzmySZv.js → PresetRangeDateInput.stories-zF3rsqzw.js} +1 -1
  272. package/storybook-static/assets/{PresetSelect-BTh53LoO.js → PresetSelect-Cgy9Fxp1.js} +1 -1
  273. package/storybook-static/assets/{RadioButton-BfBSX73Y.js → RadioButton-C2vBV1hA.js} +1 -1
  274. package/storybook-static/assets/{RadioButton-Ci25eUL_.js → RadioButton-CXC1Cx3U.js} +1 -1
  275. package/storybook-static/assets/{RadioButton.stories-JVGXFlz8.js → RadioButton.stories-BB8LUjRM.js} +1 -1
  276. package/storybook-static/assets/{RadioGroup-CL7EHd6O.js → RadioGroup-BtbFmZdj.js} +1 -1
  277. package/storybook-static/assets/{RadioGroup-CW39hD_-.js → RadioGroup-t3X9UtTe.js} +1 -1
  278. package/storybook-static/assets/{RadioGroup.stories-MS9Jl6AT.js → RadioGroup.stories-9zY5fs7x.js} +1 -1
  279. package/storybook-static/assets/{Scrollable-Bo4197LC.js → Scrollable-BJ9U5zou.js} +1 -1
  280. package/storybook-static/assets/{Select-CxQqH8H5.js → Select-BvTVuFC9.js} +1 -1
  281. package/storybook-static/assets/Select-C714MPRu.js +12 -0
  282. package/storybook-static/assets/{Select.stories-DfjNWXba.js → Select.stories-4Q5T_g3F.js} +1 -1
  283. package/storybook-static/assets/{SerializableSelect-BktENdyg.js → SerializableSelect-D-Zq3RWA.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect.stories-B8zxcu66.js → SerializableSelect.stories-CMP1sVcs.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-DZBRm3dM.js → SingleDateTimeInput-CFu-yAx-.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput-DvpU1DkI.js → SingleDateTimeInput-CRF8VyEy.js} +1 -1
  287. package/storybook-static/assets/{SingleDateTimeInput.stories-Bku5Zc05.js → SingleDateTimeInput.stories-D-3ZQXEM.js} +1 -1
  288. package/storybook-static/assets/{Slider-BN2xXBOi.js → Slider-C1IZK88-.js} +1 -1
  289. package/storybook-static/assets/{Slider-BJkB6IoW.js → Slider-DkVzyjnU.js} +1 -1
  290. package/storybook-static/assets/{Slider.stories-CM3yNojO.js → Slider.stories-CL2kGwWV.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-2ZiuvbpQ.js → SliderInput-CrWP_doO.js} +1 -1
  292. package/storybook-static/assets/{SliderInput-CPX2bJK3.js → SliderInput-qSo8a1-L.js} +1 -1
  293. package/storybook-static/assets/{SliderInput.stories-dJX-tRtA.js → SliderInput.stories-C_55M3Rx.js} +1 -1
  294. package/storybook-static/assets/{Sortable-Bkr-xnO4.js → Sortable-DQN5jv9g.js} +1 -1
  295. package/storybook-static/assets/{Sortable.stories-BPEg99e5.js → Sortable.stories-D6JJK92g.js} +1 -1
  296. package/storybook-static/assets/{Splitter-D4en_f5n.js → Splitter-3xKtU1Lb.js} +1 -1
  297. package/storybook-static/assets/{Splitter.stories-Cynn_kHV.js → Splitter.stories-BX8ALiZg.js} +1 -1
  298. package/storybook-static/assets/{StateSelect-PcH0VuO_.js → StateSelect-BpPBAs_C.js} +3 -3
  299. package/storybook-static/assets/{StateSelect-BgbwMGGc.js → StateSelect-CRvQIHMd.js} +1 -1
  300. package/storybook-static/assets/{StateSelect.stories-CShqVH9Y.js → StateSelect.stories-BjFEEWVC.js} +1 -1
  301. package/storybook-static/assets/{StringToggle.stories-CypR3oB_.js → StringToggle.stories-CAHHreic.js} +1 -1
  302. package/storybook-static/assets/{Switch-D-cSDh8j.js → Switch-QlzemgHG.js} +1 -1
  303. package/storybook-static/assets/{Switch-BVN6TcVZ.js → Switch-ams7jd2Z.js} +1 -1
  304. package/storybook-static/assets/{Switch.stories-C0s7gvBf.js → Switch.stories-CYHyTttw.js} +1 -1
  305. package/storybook-static/assets/{Table-CwXJDDe6.js → Table-CQdV4VHj.js} +1 -1
  306. package/storybook-static/assets/{Table.stories-vqttnROX.js → Table.stories-DruTDpdl.js} +1 -1
  307. package/storybook-static/assets/{Tabs-BRSEvQpk.js → Tabs-BJSbr7kb.js} +1 -1
  308. package/storybook-static/assets/{Tabs.stories-R_7jiTQc.js → Tabs.stories-lf-mDq_D.js} +1 -1
  309. package/storybook-static/assets/{TabsBox-CqSxAUdJ.js → TabsBox-ZVImR6p0.js} +1 -1
  310. package/storybook-static/assets/{TagInput-C3ahaF-B.js → TagInput-DQytVtEo.js} +1 -1
  311. package/storybook-static/assets/{TagInput.stories-C3O2gBUY.js → TagInput.stories-BQqHbyr3.js} +1 -1
  312. package/storybook-static/assets/{Text-b8fMr5Hd.js → Text-B5iDs3oJ.js} +1 -1
  313. package/storybook-static/assets/{Textarea-BDL_MwcM.js → Textarea-8wa0S9LS.js} +1 -1
  314. package/storybook-static/assets/{Textarea-CCgxNL6F.js → Textarea-D70Fh5jz.js} +1 -1
  315. package/storybook-static/assets/{Textarea.stories-kc_LXBix.js → Textarea.stories-CbBM7a9o.js} +1 -1
  316. package/storybook-static/assets/{TimePanel-BCotjEKQ.js → TimePanel-Cef9klO_.js} +1 -1
  317. package/storybook-static/assets/{TimePanel.stories-B8paqA-_.js → TimePanel.stories-DFhohiAp.js} +1 -1
  318. package/storybook-static/assets/{Toggle-CT4IyZPI.js → Toggle-DNQFJhW_.js} +1 -1
  319. package/storybook-static/assets/{Toggle-CbsKNs_c.js → Toggle-v-5-JSE0.js} +1 -1
  320. package/storybook-static/assets/{Toggle.stories-YsQZk4DA.js → Toggle.stories-cZNfdzmw.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect-DRLoUCXF.js → TreeMultiSelect-BnE3mYFf.js} +1 -1
  322. package/storybook-static/assets/TreeMultiSelect-CxPv6whw.js +1 -0
  323. package/storybook-static/assets/{TreeMultiSelect.stories-CV65ZVUo.js → TreeMultiSelect.stories-DlYN_GCe.js} +1 -1
  324. package/storybook-static/assets/TreePickerBase-B6DED6Hz.css +1 -0
  325. package/storybook-static/assets/TreePickerBase-C7qpkbpz.js +34 -0
  326. package/storybook-static/assets/{TreeSelect-FhEH7bMx.js → TreeSelect-CIEqH8S9.js} +1 -1
  327. package/storybook-static/assets/{TreeSelect-CsYGUC6s.js → TreeSelect-hddQ7fyj.js} +1 -1
  328. package/storybook-static/assets/TreeSelect.stories-D40eyoD9.js +32 -0
  329. package/storybook-static/assets/{TreeTable-Bajr80HM.js → TreeTable-CpYB4MSV.js} +1 -1
  330. package/storybook-static/assets/{TreeTable.stories-DDCGoB2u.js → TreeTable.stories-DOy9GHlG.js} +1 -1
  331. package/storybook-static/assets/{async-CWrFMaux.js → async-MCpAOgGj.js} +1 -1
  332. package/storybook-static/assets/{blocks-CrYcG0WD.js → blocks-B8O-SmXz.js} +3 -3
  333. package/storybook-static/assets/{browserAndReact-DSxaVMjM.js → browserAndReact-CWhfyF1v.js} +1 -1
  334. package/storybook-static/assets/{check-Cnuffb78.js → check-CABFFBZp.js} +1 -1
  335. package/storybook-static/assets/{chevron-down-ChPfAmdy.js → chevron-down-D9EpqOx3.js} +1 -1
  336. package/storybook-static/assets/{chevron-left-CEB5eAVk.js → chevron-left-lXvtYh2L.js} +1 -1
  337. package/storybook-static/assets/{chevron-right-DHw2yjh1.js → chevron-right-DEPi2-vh.js} +1 -1
  338. package/storybook-static/assets/{chunk-W22LQPXL-i9Cm4c-p.js → chunk-W22LQPXL-BnFjL7A4.js} +1 -1
  339. package/storybook-static/assets/{circle-alert-B0REyiCt.js → circle-alert-BFTgQNUa.js} +1 -1
  340. package/storybook-static/assets/{circle-check-D6WZ24rj.js → circle-check-BwBhaE4u.js} +1 -1
  341. package/storybook-static/assets/{components-BCe0UvQp.js → components-b7MrsXAu.js} +3 -3
  342. package/storybook-static/assets/{contextMenu-De66k1si.js → contextMenu-CgfU49vo.js} +1 -1
  343. package/storybook-static/assets/defaultRenderers-V5HI39JH.js +1 -0
  344. package/storybook-static/assets/{download-C1DiezfA.js → download-C27enrZU.js} +1 -1
  345. package/storybook-static/assets/{filesAndExcel-BVMGH9OS.js → filesAndExcel-BiY4Bovb.js} +1 -1
  346. package/storybook-static/assets/{floating-ui.react-BswSORmJ.js → floating-ui.react-DEyIFiNo.js} +1 -1
  347. package/storybook-static/assets/{formatters-D27XMzPd.js → formatters-g8ZqvE1G.js} +1 -1
  348. package/storybook-static/assets/{formatters-runtime-B_C8yQOS.js → formatters-runtime-CXUIlmJj.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-BmwSyi1e.js → foundationLib-BPodAJdq.js} +1 -1
  350. package/storybook-static/assets/{hooks-CXlVTo5i.js → hooks-e6Pq1dhk.js} +1 -1
  351. package/storybook-static/assets/{iframe-Baz8D-0E.css → iframe-BIt4o49Q.css} +1 -1
  352. package/storybook-static/assets/{iframe-Bbj4T0X2.js → iframe-MGtmawLC.js} +3 -3
  353. package/storybook-static/assets/iframe-arpq4Gv1.js +1 -0
  354. package/storybook-static/assets/{info-D_YlGthq.js → info-BaBKhExm.js} +1 -1
  355. package/storybook-static/assets/{odata-CDuIqs1a.js → odata-CU8OqBfR.js} +1 -1
  356. package/storybook-static/assets/{odataAndTables-D4R4KHZc.js → odataAndTables-owHlC75n.js} +1 -1
  357. package/storybook-static/assets/{odataFetchFn-Sw0FicJe.js → odataFetchFn-I0wds8hr.js} +1 -1
  358. package/storybook-static/assets/{odataStoryFixtures-z1HaQHNb.js → odataStoryFixtures-B8Q5eYoW.js} +2 -2
  359. package/storybook-static/assets/{persisted-TRx901TV.js → persisted-ia9NSjyZ.js} +1 -1
  360. package/storybook-static/assets/{pureUtilities-B8KVYaZx.js → pureUtilities-qAyFc8Y7.js} +1 -1
  361. package/storybook-static/assets/{react-CTGFMmtV.js → react-CDRSjgW9.js} +1 -1
  362. package/storybook-static/assets/{refresh-cw-BuhtDwqw.js → refresh-cw-Cy7nKRWv.js} +1 -1
  363. package/storybook-static/assets/{runtimeAndState-DDPlVhTs.js → runtimeAndState-CnHg6P7-.js} +1 -1
  364. package/storybook-static/assets/{settings-2-DESCgIcH.js → settings-2-C_voZFm1.js} +1 -1
  365. package/storybook-static/assets/{sortable-BxGw7kip.js → sortable-CjH0UUUz.js} +1 -1
  366. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-B0d7LXTh.js → syntaxhighlighter-T5IQBZDB-Ckcddreo.js} +1 -1
  367. package/storybook-static/assets/{trash-2-D0Ed43_3.js → trash-2-EOy5mjuJ.js} +1 -1
  368. package/storybook-static/assets/{triangle-alert-CpgcfVSf.js → triangle-alert-BRrEHiq1.js} +1 -1
  369. package/storybook-static/assets/{ui-BMhMvV6y.css → ui-CatTcSJL.css} +1 -1
  370. package/storybook-static/assets/ui.module-D4CuGr8r.js +1 -0
  371. package/storybook-static/assets/{uiClasses-DiXn3Hc-.js → uiClasses-CVGbL980.js} +1 -1
  372. package/storybook-static/assets/{useODataSelectBase-CFR7eJND.js → useODataSelectBase-69zlLmHt.js} +1 -1
  373. package/storybook-static/assets/{useODataTreeData-DgEKknmd.js → useODataTreeData-BLZGLxQw.js} +1 -1
  374. package/storybook-static/assets/usePickerQuery-mBLwpp5S.js +1 -0
  375. package/storybook-static/assets/usePickerTriggerController-B3JWoIjX.js +6 -0
  376. package/storybook-static/assets/{x-_GQ6nyHW.js → x-DGdEDv4r.js} +1 -1
  377. package/storybook-static/iframe.html +3 -3
  378. package/storybook-static/project.json +1 -1
  379. package/dist/chunks/context-menu-6nJkPmKV.js +0 -535
  380. package/dist/chunks/context-menu-6nJkPmKV.js.map +0 -1
  381. package/dist/chunks/multi-select-Clsst6DE.js +0 -538
  382. package/dist/chunks/multi-select-Clsst6DE.js.map +0 -1
  383. package/dist/chunks/picker-CrRdwdA5.js +0 -340
  384. package/dist/chunks/picker-CrRdwdA5.js.map +0 -1
  385. package/dist/chunks/select-B0xc6g81.js +0 -355
  386. package/dist/chunks/select-B0xc6g81.js.map +0 -1
  387. package/dist/chunks/ui.module-DHVTOqZ0.js.map +0 -1
  388. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js +0 -141
  389. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js.map +0 -1
  390. package/dist/multi-select/ui/MultiSelectOption.d.ts +0 -14
  391. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +0 -1
  392. package/dist/multi-select/ui/MultiSelectToken.d.ts +0 -9
  393. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +0 -1
  394. package/storybook-static/assets/CheckBox-BnO90VKX.css +0 -1
  395. package/storybook-static/assets/ContextMenu-BgzIzwzM.css +0 -1
  396. package/storybook-static/assets/ContextMenu-BhGu3QoC.js +0 -1
  397. package/storybook-static/assets/ContextMenu.stories-V9d5mjak.js +0 -37
  398. package/storybook-static/assets/DateRangePresetSelect.stories-BGgd7TOu.js +0 -19
  399. package/storybook-static/assets/LayoutPicker-DjUZ5y7M.js +0 -376
  400. package/storybook-static/assets/LayoutPicker-DudPIiwb.css +0 -1
  401. package/storybook-static/assets/Listbox-Cg1OczYK.js +0 -1
  402. package/storybook-static/assets/MultiSelect-D8qN-i5f.js +0 -2
  403. package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +0 -139
  404. package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +0 -161
  405. package/storybook-static/assets/ODataTreeMultiSelect.stories-B_Izm4eH.js +0 -87
  406. package/storybook-static/assets/ODataTreeSelect.stories-DxNhuLVU.js +0 -55
  407. package/storybook-static/assets/PickerSelectionToolbar-DWtGYc4E.js +0 -2
  408. package/storybook-static/assets/PickerTriggerActions-BIH8_o_b.js +0 -1
  409. package/storybook-static/assets/Select-CO4ZHP9h.css +0 -1
  410. package/storybook-static/assets/Select-DBsWg0wv.js +0 -12
  411. package/storybook-static/assets/SelectOptionContent-Bie2pzia.js +0 -1
  412. package/storybook-static/assets/TreeMultiSelect-CmAa_Gin.js +0 -1
  413. package/storybook-static/assets/TreePickerBase-hyMFakp7.css +0 -1
  414. package/storybook-static/assets/TreePickerBase-rB-Q9Uwf.js +0 -24
  415. package/storybook-static/assets/TreeSelect.stories-Cw4IkrNG.js +0 -40
  416. package/storybook-static/assets/defaultRenderers-B7PDT-nL.css +0 -1
  417. package/storybook-static/assets/defaultRenderers-D0Z-7t0H.js +0 -1
  418. package/storybook-static/assets/iframe-DLZ4F2nx.js +0 -1
  419. package/storybook-static/assets/ui.module-CiLQZm_L.js +0 -1
  420. package/storybook-static/assets/usePickerQuery-Be3WSeUa.js +0 -1
  421. package/storybook-static/assets/usePickerTriggerController-BZZv-jDV.js +0 -1
  422. package/storybook-static/assets/usePickerTriggerController-DzBkX15M.css +0 -1
  423. /package/storybook-static/assets/{CheckBox.module-BNQm6HXI.js → CheckBox.module-CoYygdZx.js} +0 -0
@@ -1,538 +0,0 @@
1
- import { t as e } from "./ui.module-DHVTOqZ0.js";
2
- import { Text as t } from "../text/index.js";
3
- import { t as n } from "./check-box-sfGjYczQ.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-CrRdwdA5.js";
5
- import { t as ee } from "./separator-B72Aq-6a.js";
6
- import { n as m, r as h, t as g } from "./useODataSelectBase-Bq36Wp1U.js";
7
- import { t as _ } from "./odata-dependent-C_DCbKY2.js";
8
- import { forwardRef as te, useCallback as ne, useMemo as v, useRef as re, useState as ie } from "react";
9
- import { flattenODataDependentServices as y, useODataCollectionModel as b } from "@ryuzaki13/react-foundation-api/odata";
10
- import { cn as ae } from "@ryuzaki13/react-foundation-lib/utils";
11
- import { Fragment as oe, jsx as x, jsxs as S } from "react/jsx-runtime";
12
- import { XIcon as se } from "lucide-react";
13
- import { formatRussianPlural as ce } from "@ryuzaki13/react-foundation-lib/formatters";
14
- //#region src/multi-select/ui/MultiSelectOption.tsx
15
- function le({ item: e, textKey: t, codeKey: n, highlight: r }) {
16
- return /* @__PURE__ */ x(h, {
17
- label: e[t],
18
- code: n && e[n],
19
- highlight: r
20
- });
21
- }
22
- var C = {
23
- multiSelect: "_9oSdQi",
24
- multiSelectTokens: "iobHig",
25
- multiSelectToken: "yatXso"
26
- };
27
- //#endregion
28
- //#region src/multi-select/ui/MultiSelectToken.tsx
29
- function w({ value: e }) {
30
- return e ? /* @__PURE__ */ x("div", {
31
- className: C.multiSelectTokens,
32
- children: /* @__PURE__ */ x("div", {
33
- className: C.multiSelectToken,
34
- children: e
35
- })
36
- }) : null;
37
- }
38
- //#endregion
39
- //#region src/multi-select/ui/defaultRenderers.tsx
40
- var ue = {
41
- one: "элемент",
42
- few: "элемента",
43
- many: "элементов"
44
- };
45
- function T(e) {
46
- return ce(e, ue);
47
- }
48
- function E(e, t, n) {
49
- if (n) return n;
50
- let r = e[0];
51
- return r ? Object.keys(r).find((e) => e !== t) ?? t : t;
52
- }
53
- function D(e, t, n) {
54
- if (e.length === 0) return;
55
- if (e.length > 1) return T(e.length);
56
- let r = E(e, t, n);
57
- return e[0]?.[r] ?? e[0]?.[t];
58
- }
59
- function de(e) {
60
- return function(t) {
61
- return /* @__PURE__ */ x(w, { value: D(t.selectedItems, e.codeKey, e.textKey) });
62
- };
63
- }
64
- function fe(e) {
65
- return /* @__PURE__ */ x(a, {
66
- onSelectAll: e.selectAll,
67
- onDeselectAll: e.deselectAll
68
- });
69
- }
70
- function pe(e) {
71
- return function(t, n) {
72
- return /* @__PURE__ */ x(le, {
73
- item: t,
74
- selected: n.selected,
75
- highlight: n.highlightQuery,
76
- textKey: E([t], e.codeKey, e.textKey),
77
- codeKey: e.hideCode ? void 0 : e.codeKey
78
- });
79
- };
80
- }
81
- //#endregion
82
- //#region src/multi-select/ui/MultiSelectOptionSkeleton.tsx
83
- function O({ text: n, isError: r }) {
84
- return /* @__PURE__ */ S("div", {
85
- className: e.uiPopupOption,
86
- children: [/* @__PURE__ */ x("span", { className: e.uiPopupOptionIcon }), /* @__PURE__ */ x(t, {
87
- color: r ? "error" : "primary",
88
- children: n
89
- })]
90
- });
91
- }
92
- //#endregion
93
- //#region src/multi-select/ui/MultiSelect.tsx
94
- function me({ isNoData: e, error: t, children: n }) {
95
- return e ? /* @__PURE__ */ x(p, { emptyState: /* @__PURE__ */ x(O, { text: "Нет данных" }) }) : t ? /* @__PURE__ */ x(p, { errorState: /* @__PURE__ */ x(O, {
96
- isError: !0,
97
- text: "Ошибка загрузки"
98
- }) }) : /* @__PURE__ */ x(oe, { children: n });
99
- }
100
- var he = [];
101
- function k(e, t) {
102
- return e[t];
103
- }
104
- function ge(e, t, n) {
105
- return Array.from(/* @__PURE__ */ new Set([
106
- e[n],
107
- e[t],
108
- ...Object.values(e)
109
- ]));
110
- }
111
- function _e(e, t, n) {
112
- if (e.length !== t.length) return !1;
113
- let r = new Set(t.map((e) => k(e, n)));
114
- return e.every((e) => r.has(k(e, n)));
115
- }
116
- function ve({ entries: t, listId: r, activeIndex: i, selectedKeys: a, codeKey: o, query: s, highlightQuery: c, getOptionDisabled: l, getOptionId: u, setOptionRef: d, toggleOption: f, selectOnlyOption: p, renderItem: ee }) {
117
- return t.map(({ item: t, index: m }) => {
118
- let h = m === i, g = a.has(k(t, o)), _ = l?.(t) ?? !1;
119
- return /* @__PURE__ */ S("div", {
120
- id: u(r, m),
121
- ref: (e) => d(m, e),
122
- role: "option",
123
- "aria-selected": g,
124
- "aria-disabled": _ || void 0,
125
- className: ae(e.uiSelectOption, _ && e.disabled, g && e.selected, h && e.uiPopupOptionActive),
126
- onMouseDown: (e) => {
127
- e.preventDefault();
128
- },
129
- children: [/* @__PURE__ */ x("div", {
130
- onClick: (e) => {
131
- e.stopPropagation();
132
- },
133
- children: /* @__PURE__ */ x(n, {
134
- value: g,
135
- disabled: _,
136
- onChange: () => {
137
- _ || f(t);
138
- },
139
- onClick: (e) => {
140
- e.stopPropagation();
141
- },
142
- onMouseDown: (e) => {
143
- e.stopPropagation();
144
- }
145
- })
146
- }), /* @__PURE__ */ x("div", {
147
- className: "overflowHidden",
148
- onClick: () => {
149
- _ || p(t);
150
- },
151
- children: ee(t, {
152
- selected: g,
153
- active: h,
154
- disabled: _,
155
- query: s,
156
- highlightQuery: c
157
- })
158
- })]
159
- }, `${k(t, o)}-${m}`);
160
- });
161
- }
162
- var A = te(({ codeKey: t, textKey: n, hideCode: a, items: p, value: m, onChange: h, label: g, description: _, placeholder: te, size: y, query: b, defaultQuery: ae, highlightQuery: ce, onQuery: le, defaultFilter: w = !0, onOpen: ue, onClose: T, getOptionDisabled: D, disabled: O, error: A, isLoading: j, renderToken: M, renderToolbar: N, renderItem: P }, F) => {
163
- let I = re(null), [L, ye] = ie(!1), R = "search-multi", z = m ?? he, be = v(() => new Set(z.map((e) => k(e, t))), [t, z]), xe = v(() => p.filter((e) => !be.has(k(e, t))), [
164
- t,
165
- be,
166
- p
167
- ]), B = v(() => E([...z, ...p], t, n), [
168
- t,
169
- z,
170
- p,
171
- n
172
- ]), { query: V, setQuery: Se, resetQueryOnClose: Ce } = d({
173
- query: b,
174
- defaultQuery: ae,
175
- onQuery: le,
176
- triggerMode: R
177
- }), we = (e) => {
178
- L && !e && Ce && Se(""), ye(e);
179
- }, H = r({
180
- options: z,
181
- query: V,
182
- enabled: w,
183
- getSearchText: (e) => ge(e, t, B)
184
- }), U = r({
185
- options: xe,
186
- query: V,
187
- enabled: w,
188
- getSearchText: (e) => ge(e, t, B)
189
- }), W = v(() => [...H, ...U], [U, H]), Te = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: Ee } = l({
190
- value: z,
191
- open: L,
192
- onCommit: h,
193
- onOpen: ue,
194
- onClose: T,
195
- isEqual: (e, n) => _e(e, n, t)
196
- }), q = v(() => new Set(G.map((e) => k(e, t))), [t, G]), De = v(() => ({
197
- selectedItems: G,
198
- committedSelectedItems: z,
199
- selectedKeys: q,
200
- open: L
201
- }), [
202
- z,
203
- G,
204
- L,
205
- q
206
- ]), J = ne((e) => D?.(e, De) ?? !1, [D, De]), { activeIndex: Y, context: Oe, floatingStyles: ke, getFloatingProps: Ae, setReference: je, setFloating: Me, setOptionRef: Ne, close: Pe, openList: Fe, toggleOpen: Ie, selectActiveOption: Le, handleReferenceKeyDown: Re, handleFloatingKeyDown: ze, getOptionId: Be, getActiveOptionId: Ve } = s({
207
- options: W,
208
- selectedIndex: Te,
209
- open: L,
210
- onOpenChange: we,
211
- onSelect: void 0,
212
- disabled: O,
213
- getOptionDisabled: J,
214
- closeOnSelect: !1,
215
- allowOpenWithoutOptions: !0,
216
- triggerMode: R
217
- }), He = ce ?? V, X = (e) => {
218
- let n = k(e, t);
219
- K((r) => r.some((e) => k(e, t) === n) ? r.filter((e) => k(e, t) !== n) : J(e) ? r : [...r, e]);
220
- }, Ue = (e) => {
221
- if (I.current = e, typeof F == "function") {
222
- F(e);
223
- return;
224
- }
225
- F && (F.current = e);
226
- }, We = () => {
227
- K([]), L || h([]);
228
- }, Ge = () => {
229
- K((e) => {
230
- let n = [...e], r = new Set(e.map((e) => k(e, t)));
231
- for (let e of W) {
232
- let i = k(e, t);
233
- !r.has(i) && !J(e) && (r.add(i), n.push(e));
234
- }
235
- return n;
236
- });
237
- }, Ke = () => {
238
- K([]);
239
- }, qe = (e) => {
240
- J(e) || (K([e]), Pe());
241
- }, Je = L ? G : z, Ye = Je.length > 0, Z = {
242
- selectedItems: Je,
243
- committedSelectedItems: z,
244
- availableItems: U,
245
- query: V,
246
- open: L,
247
- clearSelection: We,
248
- selectAll: Ge,
249
- deselectAll: Ke
250
- }, Xe = M === void 0 ? de({
251
- codeKey: t,
252
- textKey: B
253
- }) : M, Ze = N === void 0 ? fe : N, Qe = P ?? pe({
254
- codeKey: t,
255
- textKey: B,
256
- hideCode: a
257
- }), $e = typeof Xe == "function" ? Xe(Z) : null, et = typeof Ze == "function" ? Ze(Z) : null, Q = H.map((e, t) => ({
258
- item: e,
259
- index: t
260
- })), tt = U.map((e, t) => ({
261
- item: e,
262
- index: t + Q.length
263
- })), nt = !j && !A && W.length === 0, $ = f({
264
- mode: R,
265
- open: L,
266
- currentQuery: V,
267
- hasDisplayValue: !1,
268
- inputRef: I,
269
- setQuery: Se,
270
- openList: Fe,
271
- close: Pe,
272
- toggleOpen: Ie,
273
- onBeforeOpen: () => {
274
- L || Ee();
275
- }
276
- });
277
- return /* @__PURE__ */ x(u, {
278
- label: g,
279
- description: _,
280
- disabled: O,
281
- size: y,
282
- className: C.multiSelect,
283
- children: ({ controlId: n, labelId: r, describedBy: a }) => {
284
- let s = `${n}-listbox`;
285
- return /* @__PURE__ */ S(oe, { children: [/* @__PURE__ */ x(i, {
286
- ref: Ue,
287
- rootRef: je,
288
- id: n,
289
- type: "text",
290
- role: "combobox",
291
- autoComplete: "off",
292
- isLoading: j,
293
- disabled: O,
294
- value: V,
295
- placeholder: Ye ? void 0 : `${te ?? g ?? "Выберите значения"} <${p.length}>`,
296
- "aria-labelledby": r,
297
- "aria-describedby": a,
298
- "aria-haspopup": "listbox",
299
- "aria-expanded": L,
300
- "aria-controls": L ? s : void 0,
301
- "aria-autocomplete": "list",
302
- "aria-activedescendant": L ? Ve(s) : void 0,
303
- rootClassName: "flex alignItemsCenter",
304
- endAdornment: /* @__PURE__ */ x(c, {
305
- open: L,
306
- disabled: O,
307
- onToggleMouseDown: $.handleToggleMouseDown,
308
- onToggleClick: $.handleToggleClick,
309
- children: /* @__PURE__ */ x("button", {
310
- type: "button",
311
- disabled: !Ye,
312
- className: e.uiClearButton,
313
- "data-ui": "multi-select-clear-button",
314
- "data-action": "clear-multi-select",
315
- onClick: We,
316
- "aria-label": "Очистить все",
317
- children: /* @__PURE__ */ x(se, {})
318
- })
319
- }),
320
- overlay: $e,
321
- onChange: (e) => {
322
- $.handleTriggerInputChange(e.target.value);
323
- },
324
- onClick: $.handleTriggerClick,
325
- onFocus: (e) => {
326
- $.handleTriggerFocus(e.currentTarget);
327
- },
328
- onKeyDown: (e) => {
329
- Re(e), !e.defaultPrevented && $.handleTriggerKeyDown({
330
- event: e,
331
- onActivateWhenOpen: () => {
332
- if (Y >= 0) {
333
- let e = W[Y];
334
- if (e) {
335
- X(e);
336
- return;
337
- }
338
- }
339
- Le();
340
- },
341
- enableClosedArrowDownOpen: !0,
342
- suppressClosedArrowUp: !0
343
- });
344
- }
345
- }), /* @__PURE__ */ x(o, {
346
- open: L,
347
- context: Oe,
348
- floatingStyles: ke,
349
- listId: s,
350
- labelId: r,
351
- descriptionId: a,
352
- activeOptionId: L ? Ve(s) : void 0,
353
- setFloating: Me,
354
- getFloatingProps: Ae,
355
- onKeyDown: ze,
356
- initialFocus: -1,
357
- returnFocus: !1,
358
- tabIndex: -1,
359
- className: e.uiPopupOptions,
360
- header: et,
361
- children: /* @__PURE__ */ x(me, {
362
- isNoData: nt,
363
- error: A,
364
- children: /* @__PURE__ */ S("div", {
365
- className: "scrollable h100",
366
- children: [
367
- /* @__PURE__ */ x(ve, {
368
- entries: Q,
369
- listId: s,
370
- activeIndex: Y,
371
- selectedKeys: q,
372
- codeKey: t,
373
- query: V,
374
- highlightQuery: He,
375
- getOptionDisabled: J,
376
- getOptionId: Be,
377
- setOptionRef: Ne,
378
- toggleOption: X,
379
- selectOnlyOption: qe,
380
- renderItem: Qe
381
- }),
382
- Q.length > 0 && xe.length > 0 && /* @__PURE__ */ x(ee, { className: "marginBlockSm" }),
383
- /* @__PURE__ */ x(ve, {
384
- entries: tt,
385
- listId: s,
386
- activeIndex: Y,
387
- selectedKeys: q,
388
- codeKey: t,
389
- query: V,
390
- highlightQuery: He,
391
- getOptionDisabled: J,
392
- getOptionId: Be,
393
- setOptionRef: Ne,
394
- toggleOption: X,
395
- selectOnlyOption: qe,
396
- renderItem: Qe
397
- })
398
- ]
399
- })
400
- })
401
- })] });
402
- }
403
- });
404
- });
405
- A.displayName = "MultiSelect";
406
- //#endregion
407
- //#region src/multi-select/model/useODataMultiSelect.ts
408
- function j({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
409
- let o = m({
410
- odata: e,
411
- segment: t,
412
- model: n,
413
- value: r,
414
- dependencies: i
415
- }), s = (e) => {
416
- a(g(e, o.selectionKey));
417
- };
418
- return {
419
- ...o,
420
- handleChange: s
421
- };
422
- }
423
- //#endregion
424
- //#region src/multi-select/ui/ODataMultiSelect.tsx
425
- var M = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a, value: o, dependencies: s, onChange: c, size: l }) => {
426
- let u = j({
427
- odata: e,
428
- segment: t,
429
- model: b(n),
430
- value: o,
431
- dependencies: s,
432
- onChange: c
433
- });
434
- return /* @__PURE__ */ x(A, {
435
- label: r,
436
- description: i,
437
- size: l,
438
- codeKey: u.codeKey,
439
- textKey: u.textKey,
440
- hideCode: t.hideCode ?? e.hideCode,
441
- items: u.filteredItems,
442
- value: u.selectedItems,
443
- onChange: u.handleChange,
444
- onQuery: u.setQuery,
445
- query: u.query,
446
- defaultFilter: !1,
447
- highlightQuery: u.debouncedQuery,
448
- isLoading: u.isLoading,
449
- disabled: a,
450
- placeholder: u.placeholder,
451
- error: u.isError ? "Ошибка загрузки" : void 0
452
- });
453
- };
454
- //#endregion
455
- //#region src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx
456
- function N(e) {
457
- let { item: t, disabled: n, label: r, description: i, size: a, width: o = 15 } = e, s = _(e), { updateSegment: c } = s, l = `calc(${o}em + var(--width-add))`, u = ne((e) => {
458
- c(t.id, e);
459
- }, [t.id, c]);
460
- return /* @__PURE__ */ x("div", {
461
- style: {
462
- maxWidth: l,
463
- minWidth: l
464
- },
465
- children: /* @__PURE__ */ x(M, {
466
- odata: t.odata,
467
- segment: t.segment,
468
- model: t.model,
469
- dependencies: s.values,
470
- value: s.values[t.id],
471
- onChange: u,
472
- disabled: n || s.isSegmentDisabled(t.id),
473
- label: r,
474
- description: i,
475
- size: a
476
- })
477
- });
478
- }
479
- //#endregion
480
- //#region src/multi-select/ui/ODataDependentMultiSelect.tsx
481
- function P(e) {
482
- let { width: t = 15, odata: n, segments: r, model: i, values: a, defaultValues: o, onChange: s, selectionMode: c, segmentOrder: l } = e, u = _({
483
- values: a,
484
- defaultValues: o,
485
- onChange: s
486
- }), d = c === "sequential" ? {
487
- selectionMode: "sequential",
488
- segmentOrder: l
489
- } : {
490
- selectionMode: c,
491
- segmentOrder: l
492
- };
493
- return y([{
494
- odata: n,
495
- segments: r,
496
- model: i
497
- }]).map((e) => /* @__PURE__ */ x(N, {
498
- item: e,
499
- values: u.values,
500
- onChange: u.updateValues,
501
- ...d,
502
- width: t
503
- }, e.id));
504
- }
505
- //#endregion
506
- //#region src/multi-select/ui/SerializableMultiSelect.tsx
507
- function F(e, t) {
508
- return e[t];
509
- }
510
- function I(e, t, n) {
511
- let r = e[t];
512
- if (typeof r == "string") return r;
513
- let i = F(e, n);
514
- return typeof i == "string" ? i : String(i);
515
- }
516
- function L({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u }) {
517
- let d = a.map((e) => ({
518
- key: String(F(e, c)),
519
- text: I(e, l, c)
520
- })), f = new Set((o ?? []).map((e) => String(e))), p = d.filter((e) => f.has(e.key));
521
- return /* @__PURE__ */ x(A, {
522
- label: e,
523
- description: t,
524
- disabled: n,
525
- placeholder: r,
526
- size: i,
527
- items: d,
528
- codeKey: "key",
529
- textKey: "text",
530
- hideCode: !u || void 0,
531
- value: p,
532
- onChange: (e) => s(e.map((e) => e.key))
533
- });
534
- }
535
- //#endregion
536
- export { A as a, M as i, P as n, T as o, N as r, w as s, L as t };
537
-
538
- //# sourceMappingURL=multi-select-Clsst6DE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-select-Clsst6DE.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\tposition: absolute;\n\tinset: 0 calc(var(--control-height) * 2) 0 var(--space-md);\n\n\tpointer-events: none;\n\toverflow: hidden;\n\n\t&:empty {\n\t\tdisplay: none;\n\t}\n}\n\n.multiSelectToken {\n\tfont-size: var(--font-size-sm);\n\t// font-weight: 300;\n\t// font-variation-settings: \"wght\" 300;\n\n\t// flex: 1 1 0%;\n\t// min-width: 0;\n\tmax-width: 100%;\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 { formatRussianPlural, type RussianPluralForms } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { PickerSelectionToolbar } from \"../../picker\";\n\nimport { type MultiSelectItemState, type MultiSelectRenderContext } from \"./MultiSelect\";\nimport { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectToken } from \"./MultiSelectToken\";\n\ninterface MultiSelectRendererConfig {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n}\n\nconst ELEMENT_FORMS: RussianPluralForms = {\n\tone: \"элемент\",\n\tfew: \"элемента\",\n\tmany: \"элементов\"\n};\n\nexport function formatOptionCount(count: number) {\n\treturn formatRussianPlural(count, ELEMENT_FORMS);\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 formatOptionCount(items.length);\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\t// isLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t// if (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 {\n\t\t\tquery: currentQuery,\n\t\t\tsetQuery,\n\t\t\tresetQueryOnClose\n\t\t} = usePickerQuery({\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\n\t\t});\n\t\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\t\tsetQuery(\"\");\n\t\t\t}\n\n\t\t\tsetOpen(nextOpen);\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: handleOpenChange,\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 label={label} description={description} disabled={disabled} size={size} className={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\tisLoading={isLoading}\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={\n\t\t\t\t\t\t\t\t\thasSelectedItems ? undefined : `${placeholder ?? label ?? \"Выберите значения\"} <${items.length}>`\n\t\t\t\t\t\t\t\t}\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<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\toverlay={tokenNode}\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} 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\tisLoading={odataModel.isLoading}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback } from \"react\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentControlProps } from \"../../odata-dependent\";\n\nexport type ODataDependentSegmentMultiSelectProps = ODataDependentSegmentControlProps;\n\nexport function ODataDependentSegmentMultiSelect(props: ODataDependentSegmentMultiSelectProps) {\n\tconst { item, disabled, label, description, size, width = 15 } = props;\n\tconst selection = useODataDependentSelection(props);\n\tconst { updateSegment } = selection;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tupdateSegment(item.id, keys);\n\t\t},\n\t\t[item.id, updateSegment]\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={selection.values}\n\t\t\t\tvalue={selection.values[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t\tdisabled={disabled || selection.isSegmentDisabled(item.id)}\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { flattenODataDependentServices, type ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\nimport type { UseODataDependentSelectionOptions } from \"../../odata-dependent\";\n\nexport type ODataDependentMultiSelectProps = Omit<ODataDependentBaseProps, \"dependencies\" | \"value\"> &\n\tUseODataDependentSelectionOptions & {\n\t\t/**\n\t\t * Ширина одного элемента в `em` единицах.\n\t\t *\n\t\t * @default 15\n\t\t */\n\t\twidth?: number;\n\t};\n\nexport function ODataDependentMultiSelect(props: ODataDependentMultiSelectProps) {\n\tconst { width = 15, odata, segments, model, values, defaultValues, onChange, selectionMode, segmentOrder } = props;\n\tconst selection = useODataDependentSelection({ values, defaultValues, onChange });\n\tconst segmentSelectionProps =\n\t\tselectionMode === \"sequential\" ? { selectionMode: \"sequential\" as const, segmentOrder } : { selectionMode, segmentOrder };\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={selection.values}\n\t\t\tonChange={selection.updateValues}\n\t\t\t{...segmentSelectionProps}\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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"}