@ryuzaki13/react-foundation-ui 1.1.6 → 1.1.8

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 (245) hide show
  1. package/dist/advanced-search/index.js +136 -136
  2. package/dist/base-table/index.js +2 -2
  3. package/dist/chunks/{CalendarView-C0gJvre1.js → CalendarView-KCkhCtK-.js} +101 -101
  4. package/dist/chunks/{CalendarView-C0gJvre1.js.map → CalendarView-KCkhCtK-.js.map} +1 -1
  5. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +27 -0
  6. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +1 -0
  7. package/dist/chunks/{TextEditorLexicalClient-DYZ32dnX.js → TextEditorLexicalClient-DeBA6fQX.js} +157 -157
  8. package/dist/chunks/{TextEditorLexicalClient-DYZ32dnX.js.map → TextEditorLexicalClient-DeBA6fQX.js.map} +1 -1
  9. package/dist/chunks/{base-table-BXKFSgIk.js → base-table-Dv9i3CAT.js} +73 -73
  10. package/dist/chunks/{base-table-BXKFSgIk.js.map → base-table-Dv9i3CAT.js.map} +1 -1
  11. package/dist/chunks/{date-input-DKkW7_uw.js → date-input-DT9E8dhk.js} +44 -44
  12. package/dist/chunks/{date-input-DKkW7_uw.js.map → date-input-DT9E8dhk.js.map} +1 -1
  13. package/dist/chunks/{date-range-preset-select-UgsfaOeM.js → date-range-preset-select-BLnY47cv.js} +20 -20
  14. package/dist/chunks/{date-range-preset-select-UgsfaOeM.js.map → date-range-preset-select-BLnY47cv.js.map} +1 -1
  15. package/dist/chunks/{input-CZLUUggm.js → input-BCJfUdK_.js} +43 -43
  16. package/dist/chunks/{input-CZLUUggm.js.map → input-BCJfUdK_.js.map} +1 -1
  17. package/dist/chunks/{input-files-aB8iaqGk.js → input-files-Dcc5K-_1.js} +2 -2
  18. package/dist/chunks/{input-files-aB8iaqGk.js.map → input-files-Dcc5K-_1.js.map} +1 -1
  19. package/dist/chunks/{input-search-eMvnvgV0.js → input-search-B7HmrAM7.js} +2 -2
  20. package/dist/chunks/{input-search-eMvnvgV0.js.map → input-search-B7HmrAM7.js.map} +1 -1
  21. package/dist/chunks/misc-DIF5h9ba.js.map +1 -1
  22. package/dist/chunks/{multi-select-DaOKgHKE.js → multi-select-BCpRct-k.js} +105 -104
  23. package/dist/chunks/{multi-select-DaOKgHKE.js.map → multi-select-BCpRct-k.js.map} +1 -1
  24. package/dist/chunks/{picker-BZ05h_ZJ.js → picker-DTZk09Ag.js} +27 -27
  25. package/dist/chunks/{picker-BZ05h_ZJ.js.map → picker-DTZk09Ag.js.map} +1 -1
  26. package/dist/chunks/select-Bd48kVI3.js +328 -0
  27. package/dist/chunks/{select-Dj3FfpS0.js.map → select-Bd48kVI3.js.map} +1 -1
  28. package/dist/chunks/{table-BdpMzhLH.js → table-BtXVqa2I.js} +10 -10
  29. package/dist/chunks/{table-BdpMzhLH.js.map → table-BtXVqa2I.js.map} +1 -1
  30. package/dist/chunks/{table-column-interactions-6RGjmiI5.js → table-column-interactions-BGd5Lwy9.js} +19 -19
  31. package/dist/chunks/{table-column-interactions-6RGjmiI5.js.map → table-column-interactions-BGd5Lwy9.js.map} +1 -1
  32. package/dist/chunks/{useODataSelectBase-BxAvhDww.js → useODataSelectBase-wZ07hQFv.js} +10 -10
  33. package/dist/chunks/{useODataSelectBase-BxAvhDww.js.map → useODataSelectBase-wZ07hQFv.js.map} +1 -1
  34. package/dist/date-input/index.js +2 -2
  35. package/dist/date-range-preset-select/index.js +1 -1
  36. package/dist/date-time-input/index.js +41 -41
  37. package/dist/drop-zone/index.js +1 -1
  38. package/dist/errors/index.js +39 -39
  39. package/dist/image/index.js +2 -2
  40. package/dist/input/index.js +1 -1
  41. package/dist/input-date-time/index.js +1 -1
  42. package/dist/input-file/index.js +1 -1
  43. package/dist/input-files/index.js +1 -1
  44. package/dist/input-image/index.js +1 -1
  45. package/dist/input-search/index.js +1 -1
  46. package/dist/layout-picker/index.js +1 -1
  47. package/dist/multi-select/index.js +1 -1
  48. package/dist/notifications/index.js +26 -26
  49. package/dist/period-select/index.js +19 -19
  50. package/dist/picker/index.js +1 -1
  51. package/dist/preset-range-date-input/index.js +2 -2
  52. package/dist/preset-select/index.js +1 -1
  53. package/dist/select/index.js +1 -1
  54. package/dist/simple-table/index.js +1 -1
  55. package/dist/slider/index.js +312 -312
  56. package/dist/slider/index.js.map +1 -1
  57. package/dist/state-select/index.js +14 -14
  58. package/dist/styles.css +1 -1
  59. package/dist/table/index.js +1 -1
  60. package/dist/table-column-interactions/index.js +1 -1
  61. package/dist/tag-input/index.js +1 -1
  62. package/dist/text/index.js +10 -10
  63. package/dist/text-editor/index.js +1 -1
  64. package/dist/textarea/index.js +1 -1
  65. package/dist/tree-select/index.js +240 -239
  66. package/dist/tree-select/index.js.map +1 -1
  67. package/dist/tree-table/index.js +15 -15
  68. package/package.json +2 -1
  69. package/storybook-static/assets/{Badge-DTbZvGvY.js → Badge-Dn74JUF_.js} +1 -1
  70. package/storybook-static/assets/{Badge.stories-C0FRO6mR.js → Badge.stories-0f2dBkFF.js} +1 -1
  71. package/storybook-static/assets/{Button-CwOxcrRy.js → Button-C1TJgYBn.js} +1 -1
  72. package/storybook-static/assets/{Button-DBvM6sOi.js → Button-DDo_z6nQ.js} +1 -1
  73. package/storybook-static/assets/{Button.stories-wRxT1tys.js → Button.stories-CEhM2nmB.js} +1 -1
  74. package/storybook-static/assets/{CheckBox-6vNLr5mN.js → CheckBox-Brecn2Go.js} +1 -1
  75. package/storybook-static/assets/{CheckBox-B2PYacPl.js → CheckBox-Dou46_Q2.js} +1 -1
  76. package/storybook-static/assets/{CheckBox.stories-BsgDlKB1.js → CheckBox.stories-BX0rAtSE.js} +1 -1
  77. package/storybook-static/assets/{Color-KMSTOMOX-CSNKZs5h.js → Color-KMSTOMOX-BWvVg2h-.js} +1 -1
  78. package/storybook-static/assets/{ContextMenu-BrkKv7rm.js → ContextMenu-wm9Jh9ZJ.js} +1 -1
  79. package/storybook-static/assets/{ContextMenu.stories-Bu0PKs77.js → ContextMenu.stories-BNgeqlBC.js} +1 -1
  80. package/storybook-static/assets/{DateInput-Dk6Oy1Y5.js → DateInput-BvCdgET8.js} +1 -1
  81. package/storybook-static/assets/{DateInput-CpD5ET6Z.js → DateInput-C4POi6jK.js} +1 -1
  82. package/storybook-static/assets/{DateInput.stories-PxSyhXdr.js → DateInput.stories-Co44UsPz.js} +1 -1
  83. package/storybook-static/assets/{DateRangePresetSelect-DngfCkUZ.js → DateRangePresetSelect-CFRcBK8Q.js} +1 -1
  84. package/storybook-static/assets/{DateRangePresetSelect-Y_jVJn8B.js → DateRangePresetSelect-DS2LFGpx.js} +1 -1
  85. package/storybook-static/assets/{DateRangePresetSelect.stories-C8lPJh_i.js → DateRangePresetSelect.stories-Bw2wid1f.js} +1 -1
  86. package/storybook-static/assets/{Detail-VfH3Ddln.js → Detail-DRVWmbKj.js} +1 -1
  87. package/storybook-static/assets/{Detail.stories-HC_fB5JL.js → Detail.stories-DiPu8idx.js} +1 -1
  88. package/storybook-static/assets/{Dialog-BqF8Stct.js → Dialog-DWwwmwKU.js} +1 -1
  89. package/storybook-static/assets/{Dialog.stories-CZREWQ1k.js → Dialog.stories-H65hC3at.js} +1 -1
  90. package/storybook-static/assets/{Disclosure-DdQCtfOv.js → Disclosure-DXCJIvn2.js} +1 -1
  91. package/storybook-static/assets/{Disclosure.stories-BipF9KGl.js → Disclosure.stories-BtvyHQlf.js} +1 -1
  92. package/storybook-static/assets/{DocsRenderer-JROSPFPF-C_tirLBz.js → DocsRenderer-JROSPFPF-BIOn2Yw2.js} +2 -2
  93. package/storybook-static/assets/{DropZone-GYL3kQCI.js → DropZone-B5GgSTT6.js} +1 -1
  94. package/storybook-static/assets/{DropZone.stories-CruH4C9l.js → DropZone.stories-DXQz-psy.js} +1 -1
  95. package/storybook-static/assets/{DropdownMenu-E1ylGqL9.js → DropdownMenu-DiCKdtJQ.js} +1 -1
  96. package/storybook-static/assets/{ExpandableActionPanel.stories-BBsU-gui.js → ExpandableActionPanel.stories--iDMcu7P.js} +1 -1
  97. package/storybook-static/assets/{Flex-C6fgzqXv.js → Flex-COhmAKNn.js} +1 -1
  98. package/storybook-static/assets/{Flex-DMLdHG7d.js → Flex-Cl2bB8Po.js} +1 -1
  99. package/storybook-static/assets/{Flex.stories-CP5WdLD3.js → Flex.stories-DMuAAT19.js} +1 -1
  100. package/storybook-static/assets/{Grid-p6sY7en9.js → Grid-Df08ACJK.js} +1 -1
  101. package/storybook-static/assets/{Grid-DzBMbNYT.js → Grid-PM5n8eI2.js} +1 -1
  102. package/storybook-static/assets/{Grid.stories-rHEEhmA4.js → Grid.stories-Do5Od8Vw.js} +1 -1
  103. package/storybook-static/assets/{ImageCropper.stories-DXzbQ5FJ.js → ImageCropper.stories-EvtSYfKt.js} +1 -1
  104. package/storybook-static/assets/{ImageRenderer-CPYOOx0n.js → ImageRenderer-B2AC5NZh.js} +1 -1
  105. package/storybook-static/assets/{ImageRenderer.stories-B5a4BoWt.js → ImageRenderer.stories-DzFi_sDQ.js} +1 -1
  106. package/storybook-static/assets/{ImageView.stories-sTO611LR.js → ImageView.stories-B1g_OpL2.js} +1 -1
  107. package/storybook-static/assets/{ImageViewer.stories-CwIqVtTH.js → ImageViewer.stories-b0cFqboR.js} +2 -2
  108. package/storybook-static/assets/{ImageViewerRuntime-CkiRw9AS.js → ImageViewerRuntime-D_IBJyiC.js} +1 -1
  109. package/storybook-static/assets/{Input-Cgz-Bx_e.js → Input-CyGgeUCG.js} +1 -1
  110. package/storybook-static/assets/{Input-JhUvY-Jm.js → Input-y5ZPRO5m.js} +1 -1
  111. package/storybook-static/assets/{Input.stories-CZjEUeuS.js → Input.stories-Dhv3f6d7.js} +1 -1
  112. package/storybook-static/assets/{InputDateTime-BkN07v28.js → InputDateTime-ZXVROSAW.js} +1 -1
  113. package/storybook-static/assets/{InputDateTime.stories-DYM7WEl_.js → InputDateTime.stories-NMpK5Peb.js} +1 -1
  114. package/storybook-static/assets/{InputFile-C7jAf-Im.js → InputFile-BR2c0rNb.js} +1 -1
  115. package/storybook-static/assets/{InputFile.stories-D_etMzJL.js → InputFile.stories-BuNiPkPF.js} +1 -1
  116. package/storybook-static/assets/{InputFiles-CQ30jms7.js → InputFiles-BdhvE0kz.js} +1 -1
  117. package/storybook-static/assets/{InputFiles-DzpHx6LX.js → InputFiles-BlGer_7z.js} +1 -1
  118. package/storybook-static/assets/{InputFiles.stories-CAvuu19z.js → InputFiles.stories-BPGnbszv.js} +1 -1
  119. package/storybook-static/assets/{InputImage-CZQnxU3r.js → InputImage-zHzuV5NX.js} +1 -1
  120. package/storybook-static/assets/{InputImage.stories-CC5rWT7x.js → InputImage.stories-BXKgBMoQ.js} +1 -1
  121. package/storybook-static/assets/{LayoutPicker-Csk591Gq.js → LayoutPicker-L-0F9Vrb.js} +1 -1
  122. package/storybook-static/assets/{LayoutPicker.stories-HSzDTfbl.js → LayoutPicker.stories-s1valXGj.js} +1 -1
  123. package/storybook-static/assets/{Listbox-Cs3PEOu7.js → Listbox-YWvaCK77.js} +1 -1
  124. package/storybook-static/assets/{Listbox.stories-DKxQyANQ.js → Listbox.stories-BSJmd-mH.js} +1 -1
  125. package/storybook-static/assets/{Modal-D56cSUlx.js → Modal-CQW1mNSz.js} +1 -1
  126. package/storybook-static/assets/{Modal.stories-DBhh8Oex.js → Modal.stories-BEpdLX9t.js} +1 -1
  127. package/storybook-static/assets/{MultiSelect-hFHpaUjE.js → MultiSelect-DbjbyS6f.js} +1 -1
  128. package/storybook-static/assets/{MultiSelect-DfN6F5Zf.js → MultiSelect-HXlabU2B.js} +1 -1
  129. package/storybook-static/assets/{MultiSelect.stories-DdiJtud4.js → MultiSelect.stories-CflQTXbQ.js} +1 -1
  130. package/storybook-static/assets/{NotificationsHost-VRe_IYdJ.js → NotificationsHost-s71CKpxG.js} +1 -1
  131. package/storybook-static/assets/{NotificationsHost.stories-CgomuZqK.js → NotificationsHost.stories-Ovu7jDcj.js} +1 -1
  132. package/storybook-static/assets/{ODataMultiSelect-CaKU5cyu.js → ODataMultiSelect-B-u9xRiQ.js} +1 -1
  133. package/storybook-static/assets/{ODataMultiSelect.stories-BHHcSft9.js → ODataMultiSelect.stories-DajVZbpu.js} +1 -1
  134. package/storybook-static/assets/{ODataSelect-BT-YqgRv.js → ODataSelect-3wE4Syu-.js} +1 -1
  135. package/storybook-static/assets/{ODataSelect-B5Lo66gN.js → ODataSelect-DCGV65OH.js} +1 -1
  136. package/storybook-static/assets/{ODataSelect.stories-DhfSQYto.js → ODataSelect.stories-C4ymfrRw.js} +1 -1
  137. package/storybook-static/assets/{ODataTreeMultiSelect-mPwmusDm.js → ODataTreeMultiSelect-fFgkMoG7.js} +1 -1
  138. package/storybook-static/assets/{ODataTreeMultiSelect.stories-zU72m_nT.js → ODataTreeMultiSelect.stories-Ac6Y2rRQ.js} +1 -1
  139. package/storybook-static/assets/{ODataTreeSelect-HRpdPLA2.js → ODataTreeSelect-DHsV3AcR.js} +1 -1
  140. package/storybook-static/assets/{ODataTreeSelect.stories-BtSzrEr2.js → ODataTreeSelect.stories-Dfv4WQyR.js} +1 -1
  141. package/storybook-static/assets/{PeriodSelect-ZBGWb2Xt.js → PeriodSelect-DlcFkHM4.js} +1 -1
  142. package/storybook-static/assets/{PeriodSelect.stories-B0nOV7yZ.js → PeriodSelect.stories-DWwvypiE.js} +1 -1
  143. package/storybook-static/assets/{Popover-CuZWq4ir.js → Popover-CDhH2vdG.js} +1 -1
  144. package/storybook-static/assets/{Popover.stories-UomYS0vU.js → Popover.stories-DE7VCujJ.js} +1 -1
  145. package/storybook-static/assets/{PresetRangeDateInput-D3rjN3XZ.js → PresetRangeDateInput-CrsxXLDG.js} +1 -1
  146. package/storybook-static/assets/{PresetRangeDateInput.stories-wy7GVVdF.js → PresetRangeDateInput.stories-DEG3r-qf.js} +1 -1
  147. package/storybook-static/assets/{RadioButton-DPL0ufmD.js → RadioButton-C46MFmRl.js} +1 -1
  148. package/storybook-static/assets/{RadioButton.stories-DLzOE3FX.js → RadioButton.stories-C3--ehs5.js} +1 -1
  149. package/storybook-static/assets/{RadioGroup-BRuTj9Ey.js → RadioGroup-Cj_foF9x.js} +1 -1
  150. package/storybook-static/assets/{RadioGroup-jjU7Wc3l.js → RadioGroup-wy1BaQ9o.js} +1 -1
  151. package/storybook-static/assets/{RadioGroup.stories-Bbs7gPeI.js → RadioGroup.stories-Bi9_WOVj.js} +1 -1
  152. package/storybook-static/assets/{Select-DrdEDezx.js → Select-B36pVYvS.js} +1 -1
  153. package/storybook-static/assets/{Select-CSQfHGXO.js → Select-Bgg-NjIq.js} +1 -1
  154. package/storybook-static/assets/{Select.stories-B482Sdsv.js → Select.stories-Bl6_HqCh.js} +1 -1
  155. package/storybook-static/assets/{SelectOptionContent-KmIjKWiS.js → SelectOptionContent-CeSDFaTr.js} +1 -1
  156. package/storybook-static/assets/{SerializableSelect-RadwUlKf.js → SerializableSelect-CCcdn7s3.js} +1 -1
  157. package/storybook-static/assets/{SerializableSelect-Bt1FrgBB.js → SerializableSelect-EIZrsX_q.js} +1 -1
  158. package/storybook-static/assets/{SerializableSelect.stories-B_0no7si.js → SerializableSelect.stories-D85sap4g.js} +1 -1
  159. package/storybook-static/assets/{SingleDateTimeInput-DhyidxjF.js → SingleDateTimeInput-BJdvvXVc.js} +1 -1
  160. package/storybook-static/assets/{SingleDateTimeInput.stories-B61QM3vF.js → SingleDateTimeInput.stories-Cpq8DLvn.js} +1 -1
  161. package/storybook-static/assets/{Slider-DIH0-2GV.js → Slider-CqkHk2lK.js} +1 -1
  162. package/storybook-static/assets/{Slider.stories-DECV07rR.js → Slider.stories-DmW9jsnD.js} +1 -1
  163. package/storybook-static/assets/{SliderInput-B59f8oMg.js → SliderInput-DkekHTab.js} +1 -1
  164. package/storybook-static/assets/{SliderInput.stories-DLnxLEkD.js → SliderInput.stories-CqQh0HWR.js} +1 -1
  165. package/storybook-static/assets/{Sortable-B8WbzmlP.js → Sortable-BBYH-Tva.js} +1 -1
  166. package/storybook-static/assets/{Sortable.stories-DqUlCVvw.js → Sortable.stories-DjEGWs4-.js} +1 -1
  167. package/storybook-static/assets/{Splitter-C4yDAl_u.js → Splitter-G3aR-zi9.js} +1 -1
  168. package/storybook-static/assets/{Splitter.stories-CcgiUjmr.js → Splitter.stories-XKGTUPMP.js} +1 -1
  169. package/storybook-static/assets/{StateSelect-CV-8pxhw.js → StateSelect-DhzkYW8p.js} +1 -1
  170. package/storybook-static/assets/{StateSelect.stories-BK9ivlmG.js → StateSelect.stories-BAxN3YfG.js} +1 -1
  171. package/storybook-static/assets/{Switch-DE7nHbwh.js → Switch-NVpZLd3g.js} +1 -1
  172. package/storybook-static/assets/{Switch.stories-CMfzzp_X.js → Switch.stories-BBowyrzJ.js} +1 -1
  173. package/storybook-static/assets/{Table-C6MOZ4T6.js → Table-C9r-j5hO.js} +1 -1
  174. package/storybook-static/assets/{Table.stories-STJ__NxI.js → Table.stories-CkoEoxYB.js} +1 -1
  175. package/storybook-static/assets/{Tabs-CD1hcYPu.js → Tabs-tH37q7nI.js} +1 -1
  176. package/storybook-static/assets/{Tabs.stories-BvqssX2z.js → Tabs.stories-aIywaszH.js} +1 -1
  177. package/storybook-static/assets/{TagInput.stories-ma0idG2o.js → TagInput.stories-BX4XcJaC.js} +1 -1
  178. package/storybook-static/assets/{Textarea-Bg8GLfKh.js → Textarea-DDn4pvJF.js} +1 -1
  179. package/storybook-static/assets/{Textarea.stories-DFvplu2w.js → Textarea.stories-BZVZYh4p.js} +1 -1
  180. package/storybook-static/assets/{TimePanel-CZ-zOdHh.js → TimePanel-vKlzE6gd.js} +1 -1
  181. package/storybook-static/assets/{TimePanel.stories-DFH-UUBq.js → TimePanel.stories-BfdDWhtQ.js} +1 -1
  182. package/storybook-static/assets/{Toggle-CDPkOx6F.js → Toggle-DAb5_sHq.js} +1 -1
  183. package/storybook-static/assets/{Toggle.stories-Ccw3JBaV.js → Toggle.stories-Bp99WoMR.js} +1 -1
  184. package/storybook-static/assets/{TreeMultiSelect-cz0brPQw.js → TreeMultiSelect-CG09ybVB.js} +1 -1
  185. package/storybook-static/assets/{TreeMultiSelect-D-tS9rvA.js → TreeMultiSelect-CkNDwWuK.js} +1 -1
  186. package/storybook-static/assets/{TreeMultiSelect.stories-C92b10QI.js → TreeMultiSelect.stories-DE6tQFRY.js} +1 -1
  187. package/storybook-static/assets/{TreePickerBase-B39PMNf_.js → TreePickerBase-DhZ9tbrV.js} +1 -1
  188. package/storybook-static/assets/{TreeSelect-tdrV0FoI.js → TreeSelect-BYYl0yhs.js} +1 -1
  189. package/storybook-static/assets/{TreeSelect-CyHcbvrN.js → TreeSelect-D3tOqZzi.js} +1 -1
  190. package/storybook-static/assets/{TreeSelect.stories-C-7CmDg1.js → TreeSelect.stories-C56cleOX.js} +1 -1
  191. package/storybook-static/assets/{TreeTable-C_WN8FQo.js → TreeTable-CPctUXOv.js} +1 -1
  192. package/storybook-static/assets/{TreeTable.stories-DSkbQoFG.js → TreeTable.stories-D-R0a5NF.js} +1 -1
  193. package/storybook-static/assets/{WithTooltip-7X4HQR7L-Ccl2HZl-.js → WithTooltip-7X4HQR7L-DYINYmJM.js} +1 -1
  194. package/storybook-static/assets/{base-table-CB4WoiOm.js → base-table-CTBvWnIb.js} +1 -1
  195. package/storybook-static/assets/{blocks-xFhW5LuA.js → blocks-D2VXMZGt.js} +6 -6
  196. package/storybook-static/assets/{button-LL06NtwK.js → button-CofLsODD.js} +1 -1
  197. package/storybook-static/assets/{check-box-B2R83vBX.js → check-box-BUYji84r.js} +1 -1
  198. package/storybook-static/assets/{chunk-3LY4VQVK-CrLkroEp.js → chunk-3LY4VQVK-Dk0vkvRJ.js} +1 -1
  199. package/storybook-static/assets/{chunk-LITCR56V-CwP5uBgf.js → chunk-LITCR56V-DgP8YOaP.js} +1 -1
  200. package/storybook-static/assets/{contextMenu-C412_f6X.js → contextMenu-MmOUI04g.js} +1 -1
  201. package/storybook-static/assets/{error-CVV9NONe.js → error-D6G67nWf.js} +1 -1
  202. package/storybook-static/assets/{flex-BsIB-Bk2.js → flex-DEzwJFBs.js} +1 -1
  203. package/storybook-static/assets/{floating-ui.react-BUVR6RTk.js → floating-ui.react-DeHGyTLR.js} +1 -1
  204. package/storybook-static/assets/formatter-L2YTDE3Q-Cz7NqHTg.js +1 -0
  205. package/storybook-static/assets/{formatters-C2NH5oG9.js → formatters-DO-Bplkc.js} +1 -1
  206. package/storybook-static/assets/grid-CUgqbILF.js +1 -0
  207. package/storybook-static/assets/{hooks-B3VxCLy3.js → hooks-3gvuoU6a.js} +1 -1
  208. package/storybook-static/assets/{iframe-DflW120b.js → iframe-BlBhvHwk.js} +3 -3
  209. package/storybook-static/assets/{input-BaHg50eA.js → input-DM0LWdwF.js} +1 -1
  210. package/storybook-static/assets/{lucide-react-VWiBigaj.js → lucide-react-DMR456up.js} +1 -1
  211. package/storybook-static/assets/{mdx-react-shim-C4qR84IJ.js → mdx-react-shim-BXKB7xbF.js} +1 -1
  212. package/storybook-static/assets/{media-D0ZLoHC-.js → media-BZMZJXu3.js} +1 -1
  213. package/storybook-static/assets/misc-BElIqBdV.css +1 -0
  214. package/storybook-static/assets/{misc-C9Lkw27O.js → misc-_mjs2DH3.js} +1 -1
  215. package/storybook-static/assets/{notifications-vHR6fNDB.js → notifications-BxYiooNp.js} +1 -1
  216. package/storybook-static/assets/{odata-Fxs_Fy9_.js → odata-B4-s71TA.js} +1 -1
  217. package/storybook-static/assets/odata-service-BHLtW14i.js +1 -0
  218. package/storybook-static/assets/{odataStoryFixtures-B9hZmWqf.js → odataStoryFixtures-D5fZfJe7.js} +1 -1
  219. package/storybook-static/assets/{picker-Cv_Ql1NL.js → picker-RP6lU_O4.js} +1 -1
  220. package/storybook-static/assets/{popover-DrE0FDTT.js → popover-B40B8LiS.js} +1 -1
  221. package/storybook-static/assets/{preset-select-B31k-k9Y.js → preset-select-CH5-L7v5.js} +1 -1
  222. package/storybook-static/assets/{react-18-DHZovjkP.js → react-18-BGjST092.js} +1 -1
  223. package/storybook-static/assets/{react-DzyGsyH7.js → react-BRNfkHvq.js} +1 -1
  224. package/storybook-static/assets/{react-dom-CchAcezr.js → react-dom-Dymo4Ige.js} +1 -1
  225. package/storybook-static/assets/select-DDFRb6jY.js +1 -0
  226. package/storybook-static/assets/{slider-CjYK3ZGn.js → slider-CZr1wjo-.js} +1 -1
  227. package/storybook-static/assets/{sortable-BdcqlSP1.js → sortable-Do0zRVl3.js} +1 -1
  228. package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-7I_ZEDBS.js → syntaxhighlighter-RTCFPKCB-YpNtMx0l.js} +1 -1
  229. package/storybook-static/assets/{text-C1j_wRlP.js → text-BBt8S4hV.js} +1 -1
  230. package/storybook-static/assets/{theming-BBiKrPJV.js → theming-C9D6rg4N.js} +1 -1
  231. package/storybook-static/assets/ui-5r8X6Kmj.js +1 -0
  232. package/storybook-static/assets/{useODataSelectBase-CXv-4xSN.js → useODataSelectBase-Vi75dcI2.js} +1 -1
  233. package/storybook-static/assets/{useODataTreeData-DsCRTvwe.js → useODataTreeData-3VDV4NsS.js} +1 -1
  234. package/storybook-static/assets/{utils-G8NqhJFu.js → utils-De5IM4sM.js} +1 -1
  235. package/storybook-static/iframe.html +1 -1
  236. package/storybook-static/project.json +1 -1
  237. package/dist/chunks/SelectOptionContent-lfEtHXfO.js +0 -1132
  238. package/dist/chunks/SelectOptionContent-lfEtHXfO.js.map +0 -1
  239. package/dist/chunks/select-Dj3FfpS0.js +0 -327
  240. package/storybook-static/assets/formatter-L2YTDE3Q-B_BDMouG.js +0 -1
  241. package/storybook-static/assets/grid-g_iBhVr4.js +0 -1
  242. package/storybook-static/assets/misc-D9dXokhF.css +0 -1
  243. package/storybook-static/assets/odata-service-R4sN6H36.js +0 -1
  244. package/storybook-static/assets/select-DYPSEJF1.js +0 -1
  245. package/storybook-static/assets/ui-BdaKEyAd.js +0 -1
@@ -1,23 +1,23 @@
1
1
  import { t as e } from "./ui.module-BisoTevy.js";
2
- import { i as t, l as n, s as r } from "./input-CZLUUggm.js";
2
+ import { i as t, l as n, s as r } from "./input-BCJfUdK_.js";
3
3
  import { t as i } from "./separator-B72Aq-6a.js";
4
4
  import { forwardRef as a, useEffect as o, useEffectEvent as s, useMemo as c, useRef as l, useState as u } from "react";
5
5
  import { cn as d } from "@ryuzaki13/react-foundation-lib/utils";
6
- import { normalizeTextToLower as f } from "@ryuzaki13/react-foundation-lib/formatters";
7
- import { ChevronDownIcon as p } from "lucide-react";
8
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
6
+ import { ChevronDownIcon as f } from "lucide-react";
7
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
8
+ import { normalizeTextToLower as h } from "@ryuzaki13/react-foundation-lib/formatters";
9
9
  import { FloatingFocusManager as g, FloatingPortal as _ } from "@floating-ui/react";
10
10
  import { useFloatingListbox as v } from "@ryuzaki13/react-foundation-lib/hooks";
11
11
  import { AnimatePresence as y, motion as b } from "motion/react";
12
12
  //#region src/picker/PickerField.tsx
13
13
  function x({ id: e, label: t, description: i, disabled: a, size: o, className: s, error: c, children: l }) {
14
- let { controlId: u, labelId: d, descriptionId: f, errorId: p, describedBy: h } = n({
14
+ let { controlId: u, labelId: d, descriptionId: f, errorId: m, describedBy: h } = n({
15
15
  id: e,
16
16
  hasLabel: t != null,
17
17
  hasDescription: !!i,
18
18
  hasError: !!c
19
19
  });
20
- return /* @__PURE__ */ m(r, {
20
+ return /* @__PURE__ */ p(r, {
21
21
  label: t,
22
22
  description: i,
23
23
  disabled: a,
@@ -27,12 +27,12 @@ function x({ id: e, label: t, description: i, disabled: a, size: o, className: s
27
27
  controlId: u,
28
28
  labelId: d,
29
29
  descriptionId: f,
30
- errorId: p,
30
+ errorId: m,
31
31
  children: l({
32
32
  controlId: u,
33
33
  labelId: d,
34
34
  descriptionId: f,
35
- errorId: p,
35
+ errorId: m,
36
36
  describedBy: h
37
37
  })
38
38
  });
@@ -49,13 +49,13 @@ var S = {
49
49
  function C(e) {
50
50
  e.stopPropagation();
51
51
  }
52
- function w({ open: e, context: t, floatingStyles: n, listId: r, labelId: a, descriptionId: o, activeOptionId: s, setFloating: c, getFloatingProps: l, onKeyDown: u, initialFocus: f = -1, returnFocus: p = !1, tabIndex: v = 0, className: x, maxWidth: w, layoutClassName: T, headerClassName: E, bodyClassName: D, header: O, children: k }) {
53
- return /* @__PURE__ */ m(y, { children: e && /* @__PURE__ */ m(_, { children: /* @__PURE__ */ m(g, {
52
+ function w({ open: e, context: t, floatingStyles: n, listId: r, labelId: a, descriptionId: o, activeOptionId: s, setFloating: c, getFloatingProps: l, onKeyDown: u, initialFocus: f = -1, returnFocus: h = !1, tabIndex: v = 0, className: x, maxWidth: w, layoutClassName: T, headerClassName: E, bodyClassName: D, header: O, children: k }) {
53
+ return /* @__PURE__ */ p(y, { children: e && /* @__PURE__ */ p(_, { children: /* @__PURE__ */ p(g, {
54
54
  context: t,
55
55
  modal: !1,
56
56
  initialFocus: f,
57
- returnFocus: p,
58
- children: /* @__PURE__ */ m(b.div, {
57
+ returnFocus: h,
58
+ children: /* @__PURE__ */ p(b.div, {
59
59
  ref: c,
60
60
  style: {
61
61
  ...n,
@@ -83,12 +83,12 @@ function w({ open: e, context: t, floatingStyles: n, listId: r, labelId: a, desc
83
83
  onKeyDown: u,
84
84
  className: x
85
85
  }),
86
- children: /* @__PURE__ */ h("div", {
86
+ children: /* @__PURE__ */ m("div", {
87
87
  className: d(S.popupLayout, T),
88
- children: [O ? /* @__PURE__ */ h("div", {
88
+ children: [O ? /* @__PURE__ */ m("div", {
89
89
  className: E,
90
- children: [O, /* @__PURE__ */ m(i, { className: "marginBlockSm" })]
91
- }) : /* @__PURE__ */ m("div", {}), /* @__PURE__ */ m("div", {
90
+ children: [O, /* @__PURE__ */ p(i, { className: "marginBlockSm" })]
91
+ }) : /* @__PURE__ */ p("div", {}), /* @__PURE__ */ p("div", {
92
92
  className: d(S.popupBody, D),
93
93
  children: k
94
94
  })]
@@ -100,7 +100,7 @@ function w({ open: e, context: t, floatingStyles: n, listId: r, labelId: a, desc
100
100
  //#region src/picker/PickerStatus.tsx
101
101
  function T({ emptyState: t, loadingState: n, errorState: r }) {
102
102
  let i = r ?? n ?? t;
103
- return i == null ? null : /* @__PURE__ */ m("div", {
103
+ return i == null ? null : /* @__PURE__ */ p("div", {
104
104
  className: d(e.uiPopupOption, S.status, r !== void 0 && S.statusError),
105
105
  "aria-disabled": !0,
106
106
  children: i
@@ -109,31 +109,31 @@ function T({ emptyState: t, loadingState: n, errorState: r }) {
109
109
  //#endregion
110
110
  //#region src/picker/PickerTriggerActions.tsx
111
111
  function E({ open: t, disabled: n, children: r, onToggleMouseDown: i, onToggleClick: a, openAriaLabel: o = "Открыть список", closeAriaLabel: s = "Закрыть список" }) {
112
- return /* @__PURE__ */ h("div", {
112
+ return /* @__PURE__ */ m("div", {
113
113
  className: e.uiToggleButtonContainer,
114
114
  "data-disabled": n || void 0,
115
115
  children: [
116
116
  r,
117
- /* @__PURE__ */ m("div", { className: e.uiButtonSeparator }),
118
- /* @__PURE__ */ m("button", {
117
+ /* @__PURE__ */ p("div", { className: e.uiButtonSeparator }),
118
+ /* @__PURE__ */ p("button", {
119
119
  type: "button",
120
120
  "aria-label": t ? s : o,
121
121
  className: e.uiToggleButton,
122
122
  onMouseDown: i,
123
123
  onClick: a,
124
- children: /* @__PURE__ */ m(p, { className: d(e.uiToggleIcon, t && e.uiToggleIconOpen) })
124
+ children: /* @__PURE__ */ p(f, { className: d(e.uiToggleIcon, t && e.uiToggleIconOpen) })
125
125
  })
126
126
  ]
127
127
  });
128
128
  }
129
129
  //#endregion
130
130
  //#region src/picker/PickerTriggerInput.tsx
131
- var D = a(({ rootRef: n, endAdornment: r, overlay: i, rootClassName: a, inputClassName: o, ...s }, c) => /* @__PURE__ */ h("div", {
131
+ var D = a(({ rootRef: n, endAdornment: r, overlay: i, rootClassName: a, inputClassName: o, ...s }, c) => /* @__PURE__ */ m("div", {
132
132
  ref: n,
133
133
  className: d(e.uiInputContainer, S.triggerContainer, a),
134
- children: [/* @__PURE__ */ m(t, {
134
+ children: [/* @__PURE__ */ p(t, {
135
135
  endAdornment: r,
136
- children: ({ controlClassName: t }) => /* @__PURE__ */ m("input", {
136
+ children: ({ controlClassName: t }) => /* @__PURE__ */ p("input", {
137
137
  ...s,
138
138
  ref: c,
139
139
  className: d(e.uiInputWithToggle, t, o)
@@ -186,10 +186,10 @@ function k(e) {
186
186
  //#endregion
187
187
  //#region src/picker/model/usePickerDefaultFilter.ts
188
188
  function A(e) {
189
- return f((Array.isArray(e) ? e : [e]).filter(Boolean).join(" "));
189
+ return h((Array.isArray(e) ? e : [e]).filter(Boolean).join(" "));
190
190
  }
191
191
  function j({ options: e, query: t, enabled: n = !0, getSearchText: r }) {
192
- let i = f(t);
192
+ let i = h(t);
193
193
  return c(() => !n || !i ? [...e] : e.filter((e) => A(r(e)).includes(i)), [
194
194
  n,
195
195
  r,
@@ -318,4 +318,4 @@ function I({ mode: e, open: t, currentQuery: n, hasDisplayValue: r, inputRef: i,
318
318
  //#endregion
319
319
  export { j as a, D as c, w as d, x as f, M as i, E as l, P as n, k as o, N as r, O as s, I as t, T as u };
320
320
 
321
- //# sourceMappingURL=picker-BZ05h_ZJ.js.map
321
+ //# sourceMappingURL=picker-DTZk09Ag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-BZ05h_ZJ.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n",".popupLayout {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\toverflow: hidden;\n\n\tflex: 1 1 auto;\n}\n\n.popupBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tmaxWidth?: CSSProperties[\"maxWidth\"];\n\tlayoutClassName?: string;\n\theaderClassName?: string;\n\tbodyClassName?: string;\n\theader?: ReactNode;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tdescriptionId,\n\tactiveOptionId,\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tmaxWidth,\n\tlayoutClassName,\n\theaderClassName,\n\tbodyClassName,\n\theader,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={{ ...floatingStyles, maxWidth }}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<div className={cn(styles.popupLayout, layoutClassName)}>\n\t\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t\t<div className={headerClassName}>\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t\t<Separator className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t</div>\n\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)}\n\t\t\t\t\t\t\t\t<div className={cn(styles.popupBody, bodyClassName)}>{children}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, loadingState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? loadingState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={rootRef} className={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}>\n\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t\t{overlay}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node.map(extractPickerTextContent).filter((value): value is string => Boolean(value));\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\treturn undefined;\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useFloatingListbox } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\topen: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\nexport function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst previousOpenRef = useRef(false);\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst syncResetInternalQuery = useEffectEvent(() => setInternalQuery(\"\"));\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open && resolvedResetOnClose) {\n\t\t\tif (!isControlled) {\n\t\t\t\tsyncResetInternalQuery();\n\t\t\t}\n\n\t\t\tonQuery?.(\"\");\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [isControlled, onQuery, open, resolvedResetOnClose]);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\")\n\t};\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\tconst syncDraftValue = useEffectEvent((value: TValue) => setDraftValue(value));\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsyncDraftValue(value);\n\t\t}\n\t}, [open, value]);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"picker-DTZk09Ag.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n",".popupLayout {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\toverflow: hidden;\n\n\tflex: 1 1 auto;\n}\n\n.popupBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tmaxWidth?: CSSProperties[\"maxWidth\"];\n\tlayoutClassName?: string;\n\theaderClassName?: string;\n\tbodyClassName?: string;\n\theader?: ReactNode;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tdescriptionId,\n\tactiveOptionId,\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tmaxWidth,\n\tlayoutClassName,\n\theaderClassName,\n\tbodyClassName,\n\theader,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={{ ...floatingStyles, maxWidth }}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<div className={cn(styles.popupLayout, layoutClassName)}>\n\t\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t\t<div className={headerClassName}>\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t\t<Separator className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t</div>\n\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)}\n\t\t\t\t\t\t\t\t<div className={cn(styles.popupBody, bodyClassName)}>{children}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, loadingState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? loadingState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={rootRef} className={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}>\n\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t\t{overlay}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node.map(extractPickerTextContent).filter((value): value is string => Boolean(value));\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\treturn undefined;\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useFloatingListbox } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\topen: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\nexport function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst previousOpenRef = useRef(false);\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst syncResetInternalQuery = useEffectEvent(() => setInternalQuery(\"\"));\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open && resolvedResetOnClose) {\n\t\t\tif (!isControlled) {\n\t\t\t\tsyncResetInternalQuery();\n\t\t\t}\n\n\t\t\tonQuery?.(\"\");\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [isControlled, onQuery, open, resolvedResetOnClose]);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\")\n\t};\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\tconst syncDraftValue = useEffectEvent((value: TValue) => setDraftValue(value));\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsyncDraftValue(value);\n\t\t}\n\t}, [open, value]);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
@@ -0,0 +1,328 @@
1
+ import { t as e } from "./ui.module-BisoTevy.js";
2
+ import { c as t } from "./input-BCJfUdK_.js";
3
+ import { a as n, c as r, d as i, f as a, i as o, l as s, o as c, r as l, t as u, u as d } from "./picker-DTZk09Ag.js";
4
+ import { t as f } from "./SelectOptionContent-CI7wq9Oi.js";
5
+ import { n as p } from "./useODataSelectBase-wZ07hQFv.js";
6
+ import { Fragment as m, useCallback as h, useMemo as g, useRef as ee, useState as te } from "react";
7
+ import { useODataCollectionModel as _ } from "@ryuzaki13/react-foundation-api/odata";
8
+ import { cn as v } from "@ryuzaki13/react-foundation-lib/utils";
9
+ import { CheckIcon as ne, XIcon as re } from "lucide-react";
10
+ import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
11
+ //#region src/select/lib/getOptionSearchText.ts
12
+ function ie({ option: e, getOptionLabel: t, getOptionCode: n, getOptionGroup: r }) {
13
+ return [
14
+ c(t(e)),
15
+ c(n?.(e)),
16
+ c(r?.(e)?.label)
17
+ ].filter((e) => !!e).join(" ").toLowerCase();
18
+ }
19
+ function S(e, t, n) {
20
+ return e.find((e) => e.value === t) ?? n;
21
+ }
22
+ //#endregion
23
+ //#region src/select/model/useODataSelect.ts
24
+ function C({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
25
+ let o = p({
26
+ odata: e,
27
+ segment: t,
28
+ model: n,
29
+ value: r ? [r] : [],
30
+ dependencies: i
31
+ }), s = o.selectedItems[0], c = g(() => s ? [s, ...o.filteredItems] : o.filteredItems, [o.filteredItems, s]), l = (e) => {
32
+ a(e?.[o.selectionKey]);
33
+ };
34
+ return {
35
+ ...o,
36
+ selectedItem: s,
37
+ options: c,
38
+ handleChange: l
39
+ };
40
+ }
41
+ //#endregion
42
+ //#region src/select/lib/createSelectOptionSections.ts
43
+ function ae(e, t) {
44
+ let n = [];
45
+ return e.forEach((e, r) => {
46
+ let i = t(e), a = n.at(-1), o = a?.group?.key === i?.key;
47
+ if (a && o) {
48
+ a.items.push({
49
+ option: e,
50
+ index: r
51
+ });
52
+ return;
53
+ }
54
+ n.push({
55
+ group: i,
56
+ items: [{
57
+ option: e,
58
+ index: r
59
+ }]
60
+ });
61
+ }), n;
62
+ }
63
+ var w = {
64
+ inputWithOverlay: "aEEqH1",
65
+ valueOverlay: "_4HQKa7"
66
+ };
67
+ //#endregion
68
+ //#region src/select/Select.tsx
69
+ function T(t) {
70
+ let { label: f, description: p, disabled: _, placeholder: S, size: C, options: T, value: E, onChange: D, getOptionKey: O, getOptionLabel: k, getOptionCode: A, getOptionDisabled: j, getOptionAriaLabel: oe, getOptionGroup: M, getOptionClassName: se, renderOption: N, renderValue: P, className: ce, buttonClassName: le, optionsClassName: ue, optionsMaxWidth: de, optionsContentClassName: fe, searchable: F = !1, defaultFilter: pe = !0, query: me, defaultQuery: he, onQuery: ge, renderPopupHeader: _e, emptyState: ve, loadingState: ye, errorState: be, placement: xe = "bottom-start", clearable: I = !1 } = t, L = D, R = ee(null), [z, Se] = te(!1), B = F ? "search-single" : "display", V = E === void 0 ? void 0 : O(E), H = V === void 0 ? void 0 : T.find((e) => O(e) === V) ?? E, { query: U, setQuery: W } = l({
71
+ open: z,
72
+ query: me,
73
+ defaultQuery: he,
74
+ onQuery: ge,
75
+ triggerMode: B
76
+ }), Ce = h((e) => ie({
77
+ option: e,
78
+ getOptionLabel: k,
79
+ getOptionCode: A,
80
+ getOptionGroup: M
81
+ }), [
82
+ A,
83
+ M,
84
+ k
85
+ ]), G = n({
86
+ options: T,
87
+ query: U,
88
+ enabled: F && pe,
89
+ getSearchText: Ce
90
+ }), K = g(() => M ? ae(G, M) : void 0, [M, G]), { activeIndex: we, context: Te, floatingStyles: Ee, getFloatingProps: De, setReference: Oe, setFloating: ke, setOptionRef: Ae, close: q, openList: je, toggleOpen: Me, selectOption: Ne, selectActiveOption: Pe, handleReferenceKeyDown: Fe, handleFloatingKeyDown: Ie, getOptionId: Le, getActiveOptionId: J } = o({
91
+ options: G,
92
+ selectedIndex: V === void 0 ? -1 : G.findIndex((e) => O(e) === V),
93
+ open: z,
94
+ onOpenChange: Se,
95
+ getOptionDisabled: j,
96
+ onSelect: L,
97
+ disabled: _,
98
+ placement: xe,
99
+ triggerMode: B
100
+ }), Y = G.length > 0, X = H === void 0 ? void 0 : k(H), Z = H === void 0 ? void 0 : P ? P(H) : X, Re = c(X), ze = H === void 0 ? void 0 : c(A?.(H)), Be = c(Z) ?? Re ?? ze ?? (V === void 0 ? "" : String(V)), Q = F && (z || U.length > 0), Ve = Q ? U : H === void 0 ? "" : Be, He = H !== void 0 && Z !== void 0 && c(Z) === void 0 && !Q, $ = u({
101
+ mode: B,
102
+ open: z,
103
+ currentQuery: U,
104
+ hasDisplayValue: H !== void 0,
105
+ inputRef: R,
106
+ setQuery: W,
107
+ openList: je,
108
+ close: q,
109
+ toggleOpen: Me
110
+ }), Ue = (e) => {
111
+ R.current = e;
112
+ }, We = () => {
113
+ I && L(void 0), W(""), q();
114
+ }, Ge = (t, n, r) => {
115
+ let i = O(n), a = V !== void 0 && i === V, o = r === we, s = j?.(n) ?? !1, c = {
116
+ active: o,
117
+ selected: a,
118
+ disabled: s
119
+ };
120
+ return /* @__PURE__ */ b("div", {
121
+ id: Le(t, r),
122
+ ref: (e) => Ae(r, e),
123
+ role: "option",
124
+ "aria-selected": a,
125
+ "aria-disabled": s || void 0,
126
+ "aria-label": oe?.(n),
127
+ className: v(e.uiPopupOption, s && e.disabled, o && e.uiPopupOptionActive, a && e.selected, se?.(n, c)),
128
+ onClick: () => Ne(n),
129
+ children: N ? N(n, c) : /* @__PURE__ */ x(y, { children: [
130
+ b(a ? ne : "span", { className: e.uiPopupOptionIcon }),
131
+ /* @__PURE__ */ b("div", {
132
+ className: e.uiOptionText,
133
+ children: k(n)
134
+ }),
135
+ A && /* @__PURE__ */ b("div", {
136
+ className: e.uiOptionCode,
137
+ children: A(n)
138
+ })
139
+ ] })
140
+ }, i);
141
+ };
142
+ return /* @__PURE__ */ b(a, {
143
+ label: f,
144
+ description: p,
145
+ disabled: _,
146
+ placeholder: S,
147
+ size: C,
148
+ className: ce,
149
+ children: ({ controlId: t, labelId: n, describedBy: a }) => {
150
+ let o = `${t}-listbox`;
151
+ return /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(r, {
152
+ ref: Ue,
153
+ rootRef: Oe,
154
+ id: t,
155
+ type: "text",
156
+ disabled: _,
157
+ readOnly: !F,
158
+ autoComplete: "off",
159
+ role: "combobox",
160
+ value: Ve,
161
+ placeholder: H === void 0 || Q ? S : void 0,
162
+ "aria-labelledby": n,
163
+ "aria-describedby": a,
164
+ "aria-haspopup": "listbox",
165
+ "aria-expanded": z,
166
+ "aria-controls": z ? o : void 0,
167
+ "aria-autocomplete": F ? "list" : "none",
168
+ "aria-activedescendant": z ? J(o) : void 0,
169
+ inputClassName: v(He && w.inputWithOverlay, le, "textOverflow"),
170
+ overlay: He ? /* @__PURE__ */ b("div", {
171
+ className: w.valueOverlay,
172
+ children: Z
173
+ }) : void 0,
174
+ endAdornment: /* @__PURE__ */ b(s, {
175
+ open: z,
176
+ disabled: _,
177
+ onToggleMouseDown: $.handleToggleMouseDown,
178
+ onToggleClick: $.handleToggleClick,
179
+ children: I && H !== void 0 && !_ ? /* @__PURE__ */ b("button", {
180
+ type: "button",
181
+ className: e.uiClearButton,
182
+ "data-ui": "select-clear-button",
183
+ "data-action": "clear-select",
184
+ onMouseDown: (e) => {
185
+ e.preventDefault(), e.stopPropagation();
186
+ },
187
+ onClick: (e) => {
188
+ e.preventDefault(), e.stopPropagation(), We();
189
+ },
190
+ "aria-label": "Очистить выбор",
191
+ children: /* @__PURE__ */ b(re, {})
192
+ }) : null
193
+ }),
194
+ onChange: (e) => {
195
+ F && $.handleTriggerInputChange(e.target.value);
196
+ },
197
+ onClick: $.handleTriggerClick,
198
+ onFocus: (e) => {
199
+ $.handleTriggerFocus(e.currentTarget);
200
+ },
201
+ onKeyDown: (e) => {
202
+ Fe(e), !e.defaultPrevented && $.handleTriggerKeyDown({
203
+ event: e,
204
+ onActivateWhenOpen: Pe,
205
+ enableSpaceActivation: !F
206
+ });
207
+ }
208
+ }), /* @__PURE__ */ b(i, {
209
+ open: z,
210
+ context: Te,
211
+ floatingStyles: Ee,
212
+ listId: o,
213
+ labelId: n,
214
+ descriptionId: a,
215
+ activeOptionId: Y ? J(o) : void 0,
216
+ setFloating: ke,
217
+ getFloatingProps: De,
218
+ onKeyDown: Ie,
219
+ className: v(e.uiPopupOptions, ue),
220
+ maxWidth: de,
221
+ header: _e,
222
+ children: /* @__PURE__ */ b("div", {
223
+ className: v(fe, "h100 scrollable"),
224
+ children: Y ? K ? K.map((t, n) => {
225
+ let r = t.group ? `${o}-group-${n}` : void 0, i = t.items.map(({ option: e, index: t }) => Ge(o, e, t));
226
+ return t.group ? /* @__PURE__ */ x("div", {
227
+ role: "group",
228
+ "aria-labelledby": r,
229
+ children: [/* @__PURE__ */ b("div", {
230
+ id: r,
231
+ className: e.uiPopupGroupLabel,
232
+ children: t.group.label
233
+ }), i]
234
+ }, `group-${String(t.group.key)}-${n}`) : /* @__PURE__ */ b(m, { children: i }, `options-${n}`);
235
+ }) : G.map((e, t) => Ge(o, e, t)) : /* @__PURE__ */ b(d, {
236
+ emptyState: ve,
237
+ loadingState: ye,
238
+ errorState: be
239
+ })
240
+ })
241
+ })] });
242
+ }
243
+ });
244
+ }
245
+ //#endregion
246
+ //#region src/select/ODataSelect.tsx
247
+ function E(e, t, n) {
248
+ return e ? t || Object.keys(e).find((e) => e !== n) || n : t || n;
249
+ }
250
+ var D = ({ odata: e, segment: n, model: r, size: i, label: a, description: o, disabled: s, value: c, dependencies: l, onChange: u, clearable: d }) => {
251
+ let p = C({
252
+ odata: e,
253
+ segment: n,
254
+ model: _(r),
255
+ value: c,
256
+ dependencies: l,
257
+ onChange: u
258
+ });
259
+ if (p.isLoading) return /* @__PURE__ */ b(t, {
260
+ size: i,
261
+ label: a,
262
+ description: o
263
+ });
264
+ let m = n.hideCode ?? e.hideCode, h = E(p.selectedItem ?? p.options[0], p.textKey, p.codeKey);
265
+ return /* @__PURE__ */ b(T, {
266
+ size: i,
267
+ label: a,
268
+ description: o,
269
+ options: p.options,
270
+ value: p.selectedItem,
271
+ onChange: p.handleChange,
272
+ getOptionKey: (e) => e[p.codeKey],
273
+ getOptionLabel: (e) => e[h],
274
+ getOptionCode: m ? void 0 : (e) => e[p.codeKey],
275
+ getOptionAriaLabel: (e) => m || e[h] === e[p.codeKey] ? String(e[h]) : `${e[h]} ${e[p.codeKey]}`,
276
+ renderValue: (e) => /* @__PURE__ */ b(f, {
277
+ label: e[h],
278
+ code: m ? void 0 : e[p.codeKey]
279
+ }),
280
+ renderOption: (e) => /* @__PURE__ */ b(f, {
281
+ label: e[h],
282
+ code: m ? void 0 : e[p.codeKey],
283
+ highlight: p.debouncedQuery
284
+ }),
285
+ searchable: !0,
286
+ query: p.query,
287
+ onQuery: p.setQuery,
288
+ defaultFilter: !1,
289
+ disabled: s || p.isLoading,
290
+ placeholder: p.placeholder,
291
+ loadingState: "Загрузка...",
292
+ errorState: p.isError ? "Ошибка загрузки" : void 0,
293
+ emptyState: !p.isLoading && !p.isError ? "Нет данных" : void 0,
294
+ clearable: d
295
+ });
296
+ };
297
+ //#endregion
298
+ //#region src/select/SerializableSelect.tsx
299
+ function O(e, t) {
300
+ return e[t];
301
+ }
302
+ function k(e, t, n) {
303
+ let r = e[t];
304
+ if (typeof r == "string" || typeof r == "number") return r;
305
+ let i = O(e, n);
306
+ return typeof i == "string" || typeof i == "number" ? i : String(i);
307
+ }
308
+ function A({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u, className: d, clearable: f }) {
309
+ return /* @__PURE__ */ b(T, {
310
+ label: e,
311
+ description: t,
312
+ disabled: n,
313
+ placeholder: r,
314
+ size: i,
315
+ options: a,
316
+ value: o === void 0 ? void 0 : a.find((e) => O(e, c) === o),
317
+ onChange: (e) => s(e ? O(e, c) : void 0),
318
+ getOptionKey: (e) => O(e, c),
319
+ getOptionLabel: (e) => k(e, l, c),
320
+ getOptionCode: u ? (e) => O(e, c) : void 0,
321
+ className: d,
322
+ clearable: f
323
+ });
324
+ }
325
+ //#endregion
326
+ export { S as i, D as n, T as r, A as t };
327
+
328
+ //# sourceMappingURL=select-Bd48kVI3.js.map