@ryuzaki13/react-foundation-ui 1.4.5 → 1.5.1

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 (451) hide show
  1. package/dist/advanced-search/index.js +9 -9
  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-Cfih7hjD.js +439 -0
  7. package/dist/chunks/{CalendarView-Z_XWk7aI.js.map → CalendarView-Cfih7hjD.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-CK8j3RA4.js → TextEditorLexicalClient-BSafrkLJ.js} +245 -279
  10. package/dist/chunks/TextEditorLexicalClient-BSafrkLJ.js.map +1 -0
  11. package/dist/chunks/{badge-DwIUjH0a.js → badge-CbclcpUi.js} +2 -2
  12. package/dist/chunks/{badge-DwIUjH0a.js.map → badge-CbclcpUi.js.map} +1 -1
  13. package/dist/chunks/{base-table-BFsVwXg3.js → base-table-X7aSSjXa.js} +3 -3
  14. package/dist/chunks/{base-table-BFsVwXg3.js.map → base-table-X7aSSjXa.js.map} +1 -1
  15. package/dist/chunks/{button-BU2kRzwu.js → button-BOl7hYmT.js} +4 -4
  16. package/dist/chunks/button-BOl7hYmT.js.map +1 -0
  17. package/dist/chunks/{check-box-Dd3YFuxd.js → check-box-6HGX_KOy.js} +5 -5
  18. package/dist/chunks/check-box-6HGX_KOy.js.map +1 -0
  19. package/dist/chunks/{context-menu-C6RO7soI.js → context-menu-tcD3kVAc.js} +59 -63
  20. package/dist/chunks/context-menu-tcD3kVAc.js.map +1 -0
  21. package/dist/chunks/date-input-Bsl9dxxY.js +341 -0
  22. package/dist/chunks/date-input-Bsl9dxxY.js.map +1 -0
  23. package/dist/chunks/{floating-arrow-BE-z4QkE.js → floating-arrow-DPKwJfww.js} +3 -3
  24. package/dist/chunks/{floating-arrow-BE-z4QkE.js.map → floating-arrow-DPKwJfww.js.map} +1 -1
  25. package/dist/chunks/{input-Bp6_Ucgr.js → input-CAw1Loze.js} +61 -52
  26. package/dist/chunks/input-CAw1Loze.js.map +1 -0
  27. package/dist/chunks/{input-files-D1JzSw_Y.js → input-files-CLtQ7p8j.js} +3 -3
  28. package/dist/chunks/{input-files-D1JzSw_Y.js.map → input-files-CLtQ7p8j.js.map} +1 -1
  29. package/dist/chunks/{input-search-Bkhcinru.js → input-search-F6MPrUGF.js} +2 -2
  30. package/dist/chunks/{input-search-Bkhcinru.js.map → input-search-F6MPrUGF.js.map} +1 -1
  31. package/dist/chunks/{misc-BYxxlJz6.js → misc-Cp_r022Z.js} +2 -2
  32. package/dist/chunks/{misc-BYxxlJz6.js.map → misc-Cp_r022Z.js.map} +1 -1
  33. package/dist/chunks/{modal-paexEF0j.js → modal-DPIXoMkB.js} +3 -3
  34. package/dist/chunks/{modal-paexEF0j.js.map → modal-DPIXoMkB.js.map} +1 -1
  35. package/dist/chunks/{multi-select-COEkc8Qc.js → multi-select-Dypew65l.js} +165 -154
  36. package/dist/chunks/multi-select-Dypew65l.js.map +1 -0
  37. package/dist/chunks/{picker-e6IsrMUG.js → picker-TYLwgl1c.js} +83 -93
  38. package/dist/chunks/picker-TYLwgl1c.js.map +1 -0
  39. package/dist/chunks/popover-BTT7zSqx.js +230 -0
  40. package/dist/chunks/{popover-CGU3MlsH.js.map → popover-BTT7zSqx.js.map} +1 -1
  41. package/dist/chunks/{radio-group-CM9Lg_nc.js → radio-group-4j2HbemI.js} +2 -2
  42. package/dist/chunks/{radio-group-CM9Lg_nc.js.map → radio-group-4j2HbemI.js.map} +1 -1
  43. package/dist/chunks/{select-BON0S9Dr.js → select-DCSNVEYW.js} +37 -36
  44. package/dist/chunks/select-DCSNVEYW.js.map +1 -0
  45. package/dist/chunks/{table-Dd5BcC0k.js → table-DihiNNJt.js} +2 -2
  46. package/dist/chunks/{table-Dd5BcC0k.js.map → table-DihiNNJt.js.map} +1 -1
  47. package/dist/chunks/{ui.module-BisoTevy.js → ui.module-BfaIVBba.js} +3 -1
  48. package/dist/chunks/ui.module-BfaIVBba.js.map +1 -0
  49. package/dist/chunks/{uiClasses-BNjBunnY.js → uiClasses-4atXOh0J.js} +2 -2
  50. package/dist/chunks/{uiClasses-BNjBunnY.js.map → uiClasses-4atXOh0J.js.map} +1 -1
  51. package/dist/chunks/{useODataSelectBase-CKe1AVMI.js → useODataSelectBase-DI_wwKgw.js} +2 -2
  52. package/dist/chunks/{useODataSelectBase-CKe1AVMI.js.map → useODataSelectBase-DI_wwKgw.js.map} +1 -1
  53. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  54. package/dist/context-menu/index.js +1 -1
  55. package/dist/date-input/index.js +2 -2
  56. package/dist/date-input/lib/dateInputValue.d.ts +2 -6
  57. package/dist/date-input/lib/dateInputValue.d.ts.map +1 -1
  58. package/dist/date-input/lib/types.d.ts +0 -4
  59. package/dist/date-input/lib/types.d.ts.map +1 -1
  60. package/dist/date-input/model/useDateInput.d.ts +2 -2
  61. package/dist/date-input/model/useDateInput.d.ts.map +1 -1
  62. package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
  63. package/dist/date-input/ui/DateInput.d.ts +0 -4
  64. package/dist/date-input/ui/DateInput.d.ts.map +1 -1
  65. package/dist/date-time-input/index.js +250 -254
  66. package/dist/date-time-input/index.js.map +1 -1
  67. package/dist/date-time-input/model/useDateTimeSegments.d.ts.map +1 -1
  68. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
  69. package/dist/disclosure/index.js +4 -3
  70. package/dist/disclosure/index.js.map +1 -1
  71. package/dist/drop-zone/index.js +1 -1
  72. package/dist/expandable-action-panel/index.js +2 -2
  73. package/dist/floating-arrow/index.js +1 -1
  74. package/dist/image/index.js +4 -4
  75. package/dist/input/Input.d.ts +2 -1
  76. package/dist/input/Input.d.ts.map +1 -1
  77. package/dist/input/index.js +1 -1
  78. package/dist/input-date-time/index.js +2 -2
  79. package/dist/input-file/index.js +2 -2
  80. package/dist/input-files/index.js +1 -1
  81. package/dist/input-image/index.js +2 -2
  82. package/dist/input-search/index.js +1 -1
  83. package/dist/layout-picker/index.js +94 -107
  84. package/dist/layout-picker/index.js.map +1 -1
  85. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  86. package/dist/list/List.d.ts.map +1 -1
  87. package/dist/list/index.js +75 -46
  88. package/dist/list/index.js.map +1 -1
  89. package/dist/list/useListVirtualizer.d.ts +13 -0
  90. package/dist/list/useListVirtualizer.d.ts.map +1 -0
  91. package/dist/listbox/Listbox.d.ts +1 -0
  92. package/dist/listbox/Listbox.d.ts.map +1 -1
  93. package/dist/listbox/index.js +39 -34
  94. package/dist/listbox/index.js.map +1 -1
  95. package/dist/misc/index.js +1 -1
  96. package/dist/modal/index.js +1 -1
  97. package/dist/multi-select/index.js +2 -2
  98. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  99. package/dist/multi-select/ui/defaultRenderers.d.ts +2 -1
  100. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  101. package/dist/notifications/index.js +1 -1
  102. package/dist/picker/index.js +1 -1
  103. package/dist/picker/model/usePickerQuery.d.ts +6 -2
  104. package/dist/picker/model/usePickerQuery.d.ts.map +1 -1
  105. package/dist/picker/model/usePickerSelectionLifecycle.d.ts.map +1 -1
  106. package/dist/popover/FloatingPopover.d.ts +5 -0
  107. package/dist/popover/FloatingPopover.d.ts.map +1 -1
  108. package/dist/popover/index.js +1 -1
  109. package/dist/preset-range-date-input/index.js +2 -3
  110. package/dist/preset-range-date-input/index.js.map +1 -1
  111. package/dist/preset-select/index.js +1 -1
  112. package/dist/radio-button/index.js +3 -3
  113. package/dist/radio-button/index.js.map +1 -1
  114. package/dist/radio-group/index.js +1 -1
  115. package/dist/select/Select.d.ts.map +1 -1
  116. package/dist/select/index.js +1 -1
  117. package/dist/simple-table/index.js +1 -1
  118. package/dist/slider/Slider.d.ts.map +1 -1
  119. package/dist/slider/SliderInput.d.ts.map +1 -1
  120. package/dist/slider/index.js +400 -343
  121. package/dist/slider/index.js.map +1 -1
  122. package/dist/state-select/index.js +1 -1
  123. package/dist/styles.css +1 -1
  124. package/dist/switch/index.js +1 -1
  125. package/dist/table/index.js +1 -1
  126. package/dist/table-sorting/index.js +1 -1
  127. package/dist/tabs/index.js +2 -2
  128. package/dist/tabs/index.js.map +1 -1
  129. package/dist/tag-input/TagInput.d.ts.map +1 -1
  130. package/dist/tag-input/index.js +2 -2
  131. package/dist/tag-input/index.js.map +1 -1
  132. package/dist/text/index.js +1 -1
  133. package/dist/text-editor/EmailDialog.d.ts +1 -2
  134. package/dist/text-editor/EmailDialog.d.ts.map +1 -1
  135. package/dist/text-editor/LinkDialog.d.ts +1 -2
  136. package/dist/text-editor/LinkDialog.d.ts.map +1 -1
  137. package/dist/text-editor/PhoneDialog.d.ts +1 -2
  138. package/dist/text-editor/PhoneDialog.d.ts.map +1 -1
  139. package/dist/text-editor/SemanticDialog.d.ts +1 -2
  140. package/dist/text-editor/SemanticDialog.d.ts.map +1 -1
  141. package/dist/text-editor/TextEditorDialogs.d.ts +2 -1
  142. package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -1
  143. package/dist/text-editor/TimeDialog.d.ts +1 -2
  144. package/dist/text-editor/TimeDialog.d.ts.map +1 -1
  145. package/dist/text-editor/index.js +2 -2
  146. package/dist/textarea/Textarea.d.ts.map +1 -1
  147. package/dist/textarea/index.js +3 -2
  148. package/dist/textarea/index.js.map +1 -1
  149. package/dist/toggle/index.js +1 -1
  150. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  151. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  152. package/dist/tree-select/index.js +206 -211
  153. package/dist/tree-select/index.js.map +1 -1
  154. package/dist/tree-table/index.js +1 -1
  155. package/package.json +8 -2
  156. package/src/styles/_base.scss +3 -3
  157. package/src/styles/config/_index.scss +43 -38
  158. package/src/styles/mixins/_controls.scss +17 -16
  159. package/storybook-static/assets/Badge-CD5894x5.css +1 -0
  160. package/storybook-static/assets/{Badge-Bh73-APE.js → Badge-DUTHAQCE.js} +1 -1
  161. package/storybook-static/assets/{Badge.stories-gNFtCWnR.js → Badge.stories-6iI-UG0f.js} +1 -1
  162. package/storybook-static/assets/{Button-O9QPAftp.js → Button-B0C3LMAw.js} +1 -1
  163. package/storybook-static/assets/{Button-mjF9HSg0.js → Button-CqVTrqw2.js} +1 -1
  164. package/storybook-static/assets/{Button-DtU4kGzD.css → Button-DuVDH6-g.css} +1 -1
  165. package/storybook-static/assets/{Button.stories-wkiE0c_a.js → Button.stories-DjUmGByS.js} +1 -1
  166. package/storybook-static/assets/CalendarView-hiZ9ETaP.js +1 -0
  167. package/storybook-static/assets/{CheckBox-Clpeg9q7.js → CheckBox-DBQ50PCI.js} +2 -2
  168. package/storybook-static/assets/{CheckBox-CB8fTQF0.js → CheckBox-De010n9y.js} +1 -1
  169. package/storybook-static/assets/CheckBox-Dw4nDCv8.css +1 -0
  170. package/storybook-static/assets/{CheckBox.stories-pfWBxvOy.js → CheckBox.stories-BfC6OQx3.js} +1 -1
  171. package/storybook-static/assets/{Color-6AOWCN3U-CVvkiihj.js → Color-6AOWCN3U-C_KzRv-S.js} +1 -1
  172. package/storybook-static/assets/ContextMenu-BwrqtNnY.js +1 -0
  173. package/storybook-static/assets/{ContextMenu-eGnlhRRu.js → ContextMenu-CGLg47OY.js} +1 -1
  174. package/storybook-static/assets/ContextMenu.stories-JnUlLk_E.js +90 -0
  175. package/storybook-static/assets/DateInput-4lH8A4HQ.css +1 -0
  176. package/storybook-static/assets/DateInput-BWbKmFEc.js +1 -0
  177. package/storybook-static/assets/{DateInput-DQDplLib.js → DateInput-CUPdoLCw.js} +1 -1
  178. package/storybook-static/assets/{DateInput.stories-BNpS4CND.js → DateInput.stories-DOOukQsB.js} +1 -1
  179. package/storybook-static/assets/{DateRangePresetSelect-DCBEf98i.js → DateRangePresetSelect-BWm1txZP.js} +1 -1
  180. package/storybook-static/assets/{DateRangePresetSelect-Bfx-d5qg.js → DateRangePresetSelect-CegjuKSa.js} +1 -1
  181. package/storybook-static/assets/{DateRangePresetSelect.stories-PAV2jgQb.js → DateRangePresetSelect.stories-BGCOqCf7.js} +1 -1
  182. package/storybook-static/assets/{Detail-DvmdQCue.js → Detail-DLDL5IhK.js} +1 -1
  183. package/storybook-static/assets/{Detail.stories-CEm00aSN.js → Detail.stories-BcP01iwW.js} +1 -1
  184. package/storybook-static/assets/{Dialog-3I2Y7jD7.js → Dialog-BYLrz-6d.js} +1 -1
  185. package/storybook-static/assets/Dialog-DcQbPiWK.js +1 -0
  186. package/storybook-static/assets/Dialog.stories-C5o4OhEy.js +31 -0
  187. package/storybook-static/assets/{Disclosure-DUIQ37oh.js → Disclosure-ChpGjvgZ.js} +1 -1
  188. package/storybook-static/assets/Disclosure.stories-CTL8h6Q3.js +40 -0
  189. package/storybook-static/assets/DisclosureGroup-CNoH2D1R.css +1 -0
  190. package/storybook-static/assets/DisclosureGroup-CUelavR4.js +2 -0
  191. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DwPk6ai7.js → DocsRenderer-JROSPFPF-BQTqLgKs.js} +1 -1
  192. package/storybook-static/assets/{DropZone-BGuCU5dq.js → DropZone-5Xw6HUNa.js} +1 -1
  193. package/storybook-static/assets/DropZone-ULl7tScR.js +9 -0
  194. package/storybook-static/assets/DropZone.stories-Btud72HY.js +36 -0
  195. package/storybook-static/assets/DropdownMenu-CZDVKXjD.js +1 -0
  196. package/storybook-static/assets/ExpandableActionPanel-CwamleZX.js +2 -0
  197. package/storybook-static/assets/ExpandableActionPanel.stories-BUBvJAPp.js +19 -0
  198. package/storybook-static/assets/{Flex-CBwbh1yu.js → Flex-cO3yZG-t.js} +1 -1
  199. package/storybook-static/assets/{Flex.stories-cdk6vRZq.js → Flex.stories-BAuXOTSJ.js} +1 -1
  200. package/storybook-static/assets/FloatingPopover-C56UHmzH.js +1 -0
  201. package/storybook-static/assets/{FloatingPopover-DC84VrV3.css → FloatingPopover-jwILx9b0.css} +1 -1
  202. package/storybook-static/assets/FormattedTableCell-B4ObrqF1.js +18 -0
  203. package/storybook-static/assets/{Grid-BkKqSMfk.js → Grid-B3-t0FmJ.js} +1 -1
  204. package/storybook-static/assets/{Grid.stories-828arrPi.js → Grid.stories-Cr_GpL6X.js} +1 -1
  205. package/storybook-static/assets/{ImageCropper.stories-CrIWrKKR.js → ImageCropper.stories-BDqwBC8C.js} +1 -1
  206. package/storybook-static/assets/{ImageRenderer-F3AaZx-K.js → ImageRenderer-CigIY2hD.js} +1 -1
  207. package/storybook-static/assets/{ImageRenderer.stories-l3PnRYxy.js → ImageRenderer.stories-CI8r-V1l.js} +1 -1
  208. package/storybook-static/assets/{ImageView.stories-C6uhkvCN.js → ImageView.stories-D_OG6Deg.js} +1 -1
  209. package/storybook-static/assets/{ImageViewer.stories-BSPiv5lU.js → ImageViewer.stories-CQSqogxL.js} +2 -2
  210. package/storybook-static/assets/{ImageViewerRuntime-BOpMGgz6.js → ImageViewerRuntime-DerEzrYU.js} +1 -1
  211. package/storybook-static/assets/{Input-D-ZrbHVw.js → Input-Bm1cMHGo.js} +1 -1
  212. package/storybook-static/assets/Input-Bot494Bx.js +3 -0
  213. package/storybook-static/assets/Input-Db2-9PJZ.css +1 -0
  214. package/storybook-static/assets/{Input.stories-vqPv6pLx.js → Input.stories-BovBOurM.js} +1 -1
  215. package/storybook-static/assets/{InputDateTime-DHBVbRii.js → InputDateTime-BekBAEPs.js} +1 -1
  216. package/storybook-static/assets/{InputDateTime.stories-BAvLMBuk.js → InputDateTime.stories-w3S5IslS.js} +1 -1
  217. package/storybook-static/assets/{InputFile-B9TVOEZV.js → InputFile-CuQb2x1k.js} +1 -1
  218. package/storybook-static/assets/InputFile-GBGGdgQh.js +1 -0
  219. package/storybook-static/assets/InputFile.stories-f_IZth6c.js +36 -0
  220. package/storybook-static/assets/InputFiles-C74DVQhN.js +1 -0
  221. package/storybook-static/assets/{InputFiles-CxZkOZFK.js → InputFiles-CrLCcwgR.js} +1 -1
  222. package/storybook-static/assets/InputFiles.stories-BsuddNi0.js +33 -0
  223. package/storybook-static/assets/{InputFilesList-OEX4zGI3.js → InputFilesList-Djxwuhlq.js} +1 -1
  224. package/storybook-static/assets/InputImage-CwlTJmns.js +7 -0
  225. package/storybook-static/assets/{InputImage-31A6fxSf.js → InputImage-DMaYEhTE.js} +1 -1
  226. package/storybook-static/assets/InputImage.stories-CnN_t-Bq.js +45 -0
  227. package/storybook-static/assets/InteractiveComponents.stories-B87LSnhG.js +303 -0
  228. package/storybook-static/assets/LayoutPicker-CZRoovVS.css +1 -0
  229. package/storybook-static/assets/{LayoutPicker-Dc55ovYM.js → LayoutPicker-DKMVqnzr.js} +1 -1
  230. package/storybook-static/assets/LayoutPicker-I0mjwTRq.js +376 -0
  231. package/storybook-static/assets/LayoutPicker-yb6IMmd2.css +1 -0
  232. package/storybook-static/assets/LayoutPicker.stories-B94m5_5E.js +74 -0
  233. package/storybook-static/assets/Listbox-2CNZxFrM.js +41 -0
  234. package/storybook-static/assets/Listbox-BOCPTICI.js +1 -0
  235. package/storybook-static/assets/Listbox.stories-DkRL364d.js +53 -0
  236. package/storybook-static/assets/{Modal-CXvDgktT.js → Modal-BF5Wtu_Z.js} +1 -1
  237. package/storybook-static/assets/Modal.stories-BuBDjhkS.js +180 -0
  238. package/storybook-static/assets/ModalManagerProvider-DtAfcujR.js +1 -0
  239. package/storybook-static/assets/{MultiSelect-DN4foQlG.js → MultiSelect-B5MJePks.js} +1 -1
  240. package/storybook-static/assets/MultiSelect-B75x42Va.js +2 -0
  241. package/storybook-static/assets/{MultiSelect.stories-CgKNQmma.js → MultiSelect.stories-pCDFxnvP.js} +1 -1
  242. package/storybook-static/assets/{NoData-W7wK8oTW.js → NoData-kWRpCxvl.js} +1 -1
  243. package/storybook-static/assets/{NotificationsHost-D1UoWmF8.js → NotificationsHost-lblab1gc.js} +1 -1
  244. package/storybook-static/assets/{NotificationsHost.stories-BWUuMmPl.js → NotificationsHost.stories-a3NIcVIj.js} +1 -1
  245. package/storybook-static/assets/{ODataMultiSelect-DE1V4el8.js → ODataMultiSelect-BDqBjXSe.js} +1 -1
  246. package/storybook-static/assets/{ODataMultiSelect.stories-Q1DUIL2W.js → ODataMultiSelect.stories-8nYfEOBa.js} +1 -1
  247. package/storybook-static/assets/{ODataSelect-CtoT2Wxx.js → ODataSelect-BmcZs-Q9.js} +1 -1
  248. package/storybook-static/assets/{ODataSelect.stories-DLi7Rwzk.js → ODataSelect.stories-fiEuKGVT.js} +1 -1
  249. package/storybook-static/assets/{ODataTreeMultiSelect-DEZfgyPK.js → ODataTreeMultiSelect-ZAlccR5J.js} +1 -1
  250. package/storybook-static/assets/{ODataTreeMultiSelect.stories-H42q78xI.js → ODataTreeMultiSelect.stories-sP-IANic.js} +1 -1
  251. package/storybook-static/assets/{ODataTreeSelect-BeylEiPN.js → ODataTreeSelect-DSpeH-SQ.js} +1 -1
  252. package/storybook-static/assets/{ODataTreeSelect.stories-MOILmtfY.js → ODataTreeSelect.stories-C_G-ryCy.js} +2 -2
  253. package/storybook-static/assets/{OneStepScroller-BSvYN6QP.js → OneStepScroller-BPYnBbTY.js} +1 -1
  254. package/storybook-static/assets/PeriodSelect-Dj1G9UDW.js +5 -0
  255. package/storybook-static/assets/{PeriodSelect-KQFGCxq6.js → PeriodSelect-v-ybkTTW.js} +1 -1
  256. package/storybook-static/assets/PeriodSelect.stories-DcAJ8fkJ.js +60 -0
  257. package/storybook-static/assets/{PickerSelectionToolbar-Cvv8vTZm.js → PickerSelectionToolbar-7gktfdu3.js} +1 -1
  258. package/storybook-static/assets/{PickerTriggerActions-BBZmXagt.js → PickerTriggerActions-Bd-vIbv8.js} +1 -1
  259. package/storybook-static/assets/{Popover-7YZIq8Fi.js → Popover-5dsoQ1_b.js} +1 -1
  260. package/storybook-static/assets/{Popover-D6gSyjaW.js → Popover-BoMs5h0y.js} +1 -1
  261. package/storybook-static/assets/{Popover.stories-DM69Ztws.js → Popover.stories-CbNVj_hu.js} +1 -1
  262. package/storybook-static/assets/{PresetRangeDateInput-Ch6GapcJ.js → PresetRangeDateInput-BeQMoRpC.js} +1 -1
  263. package/storybook-static/assets/PresetRangeDateInput-DyGnRjp4.js +1 -0
  264. package/storybook-static/assets/PresetRangeDateInput.stories-C7gwDup9.js +15 -0
  265. package/storybook-static/assets/{PresetSelect-C8uIYhPJ.js → PresetSelect-C8e1Xzbh.js} +1 -1
  266. package/storybook-static/assets/RadioButton-blBN8xkq.js +2 -0
  267. package/storybook-static/assets/{RadioButton-BQjiyASl.js → RadioButton-kIVy3cCo.js} +1 -1
  268. package/storybook-static/assets/RadioButton.stories-B8U30Wqk.js +35 -0
  269. package/storybook-static/assets/{RadioGroup-vw4ObVj-.js → RadioGroup-CuWLCtLr.js} +1 -1
  270. package/storybook-static/assets/{RadioGroup-DNqu6WaC.js → RadioGroup-D4fwjGGp.js} +1 -1
  271. package/storybook-static/assets/{RadioGroup.stories-B-WQzZW_.js → RadioGroup.stories-CGo-8-Bv.js} +1 -1
  272. package/storybook-static/assets/{Scrollable-DrxMuH2M.js → Scrollable-CeGzYD_u.js} +1 -1
  273. package/storybook-static/assets/{Select-BxigZNtu.js → Select-rdcqkPnE.js} +1 -1
  274. package/storybook-static/assets/Select-txovgbTh.js +12 -0
  275. package/storybook-static/assets/{Select.stories-BpTrYJSr.js → Select.stories-DPM22VkR.js} +1 -1
  276. package/storybook-static/assets/{SelectOptionContent-RAmgWCOm.js → SelectOptionContent-HqUICxHy.js} +1 -1
  277. package/storybook-static/assets/{SerializableSelect-CA9wjk2m.js → SerializableSelect-btIwjUkv.js} +1 -1
  278. package/storybook-static/assets/{SerializableSelect.stories-DXd4E-3U.js → SerializableSelect.stories-EodX_I8R.js} +1 -1
  279. package/storybook-static/assets/{SingleDateTimeInput-BeFLYUBF.js → SingleDateTimeInput-CMKsQ13r.js} +1 -1
  280. package/storybook-static/assets/SingleDateTimeInput-coulKUC8.js +1 -0
  281. package/storybook-static/assets/SingleDateTimeInput-dwDPQ0HY.css +1 -0
  282. package/storybook-static/assets/SingleDateTimeInput.stories-BkSaW82_.js +78 -0
  283. package/storybook-static/assets/Slider-BDjIIhGp.js +1 -0
  284. package/storybook-static/assets/Slider-BWuie2gr.css +1 -0
  285. package/storybook-static/assets/{Slider-BdWBkKp4.js → Slider-DhBLW1at.js} +1 -1
  286. package/storybook-static/assets/{Slider.stories-CgmOhVBs.js → Slider.stories-DpTr65-r.js} +1 -1
  287. package/storybook-static/assets/SliderInput-BEV5I_1l.js +2 -0
  288. package/storybook-static/assets/{SliderInput-QmF2VQWA.js → SliderInput-CiuILy6K.js} +1 -1
  289. package/storybook-static/assets/SliderInput.stories-CL7SlLhr.js +67 -0
  290. package/storybook-static/assets/{Sortable-D5OTpesH.js → Sortable-CtNygGoQ.js} +1 -1
  291. package/storybook-static/assets/{Sortable.stories-yz3c5EhY.js → Sortable.stories-BbNoyvN9.js} +1 -1
  292. package/storybook-static/assets/{Splitter-DVq6XBul.js → Splitter-BYaydk0U.js} +1 -1
  293. package/storybook-static/assets/{Splitter.stories-CopPw1_p.js → Splitter.stories-Bo2rHdcD.js} +1 -1
  294. package/storybook-static/assets/{StateSelect-ojwXeKmx.js → StateSelect-D2MILxIu.js} +1 -1
  295. package/storybook-static/assets/StateSelect-DNKjfPR-.js +4 -0
  296. package/storybook-static/assets/StateSelect.stories-D_NhQBcN.js +44 -0
  297. package/storybook-static/assets/{StringToggle.stories-ByYMmlXl.js → StringToggle.stories-CS507_cT.js} +1 -1
  298. package/storybook-static/assets/Switch-9gK7d4Is.js +1 -0
  299. package/storybook-static/assets/{Switch-Dy4Pahkn.js → Switch-i3aW21Wi.js} +1 -1
  300. package/storybook-static/assets/Switch.stories-BRIuS4_o.js +26 -0
  301. package/storybook-static/assets/{Table-BO6Oa4JV.js → Table-CytIsA37.js} +1 -1
  302. package/storybook-static/assets/{Table.stories--TpBKwmP.js → Table.stories-DYPLk3TC.js} +1 -1
  303. package/storybook-static/assets/{Tabs-7c93qVyH.js → Tabs-BMee-SUy.js} +1 -1
  304. package/storybook-static/assets/Tabs.stories-KqQTRqYo.js +57 -0
  305. package/storybook-static/assets/TabsBox-B5ugO318.css +1 -0
  306. package/storybook-static/assets/TabsBox-BM1mIOmT.js +2 -0
  307. package/storybook-static/assets/TagInput-ChmW4s9O.css +1 -0
  308. package/storybook-static/assets/TagInput-yEIGCMwZ.js +7 -0
  309. package/storybook-static/assets/TagInput.stories-DmuVnRfR.js +12 -0
  310. package/storybook-static/assets/{Text-BPlJUr3R.js → Text-DUN8T0sU.js} +1 -1
  311. package/storybook-static/assets/{Textarea-D3S4MkiX.js → Textarea-BeKW8LG0.js} +1 -1
  312. package/storybook-static/assets/Textarea-W648f4l-.js +1 -0
  313. package/storybook-static/assets/Textarea.stories-BbZ-hCVF.js +27 -0
  314. package/storybook-static/assets/{TimePanel-C2iZ9Qr6.js → TimePanel-D-RygTSo.js} +1 -1
  315. package/storybook-static/assets/{TimePanel.stories-JTjIv6z1.js → TimePanel.stories-CzVur3oq.js} +1 -1
  316. package/storybook-static/assets/{Toggle-OlKw8qaK.js → Toggle-CCZ3ekPb.js} +1 -1
  317. package/storybook-static/assets/{Toggle-CHmajZE5.js → Toggle-Dc5aTAHb.js} +1 -1
  318. package/storybook-static/assets/{Toggle.stories-k4Z8qQVs.js → Toggle.stories-R3abtezP.js} +1 -1
  319. package/storybook-static/assets/TreeMultiSelect-Bi-LirPw.js +1 -0
  320. package/storybook-static/assets/{TreeMultiSelect-dOg0l7rk.js → TreeMultiSelect-CzKVkvZd.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect.stories-CAzZRxn5.js → TreeMultiSelect.stories-Co_PUawN.js} +1 -1
  322. package/storybook-static/assets/TreePickerBase-BIbhsg5t.js +22 -0
  323. package/storybook-static/assets/{TreePickerBase-DMs9EpFv.css → TreePickerBase-BxLupQDs.css} +1 -1
  324. package/storybook-static/assets/{TreeSelect-CDecTnag.js → TreeSelect-B4G9gk8x.js} +1 -1
  325. package/storybook-static/assets/{TreeSelect-BrNyI_Qx.js → TreeSelect-Dm3zEY1S.js} +1 -1
  326. package/storybook-static/assets/{TreeSelect.stories-BUOw2Rwn.js → TreeSelect.stories-sRek_0PI.js} +1 -1
  327. package/storybook-static/assets/{TreeTable-BXw7lFBk.js → TreeTable-ybfR3-5k.js} +1 -1
  328. package/storybook-static/assets/{TreeTable.stories-z40pruPV.js → TreeTable.stories-BoZjeFKM.js} +1 -1
  329. package/storybook-static/assets/{async-BLDV04P4.js → async-Df2RUQlC.js} +1 -1
  330. package/storybook-static/assets/{blocks-BiaKjftm.js → blocks-BcJ54T3V.js} +3 -3
  331. package/storybook-static/assets/{browserAndReact-DX4H5rjQ.js → browserAndReact-Bfk1cWqT.js} +1 -1
  332. package/storybook-static/assets/{check-fB4gCKB_.js → check-Dl-iF50o.js} +1 -1
  333. package/storybook-static/assets/{chevron-down-B9GH0QvB.js → chevron-down-DOIDj8WF.js} +1 -1
  334. package/storybook-static/assets/{chevron-left-DjbyJeHO.js → chevron-left-DHEBK_X7.js} +1 -1
  335. package/storybook-static/assets/{chevron-right-D29uf09I.js → chevron-right-Cf6T-grH.js} +1 -1
  336. package/storybook-static/assets/{chunk-W22LQPXL-CGkHFiZ0.js → chunk-W22LQPXL-DLMJSt_s.js} +1 -1
  337. package/storybook-static/assets/{circle-alert-Dmd7-WNp.js → circle-alert-DmNt0Uwi.js} +1 -1
  338. package/storybook-static/assets/{circle-check-VtVMsaJJ.js → circle-check-DN8HwnBX.js} +1 -1
  339. package/storybook-static/assets/{components-CsfQDbHv.js → components-DI9O99vY.js} +3 -3
  340. package/storybook-static/assets/{contextMenu-CzdfaUsd.js → contextMenu-DWXX4ZHr.js} +1 -1
  341. package/storybook-static/assets/defaultRenderers-DwI2nLiY.js +1 -0
  342. package/storybook-static/assets/defaultRenderers-tFmVIvt_.css +1 -0
  343. package/storybook-static/assets/{download-CyVhTbv6.js → download-oMaZX_8z.js} +1 -1
  344. package/storybook-static/assets/{filesAndExcel-DlUnL-Uu.js → filesAndExcel-ur50Ve27.js} +1 -1
  345. package/storybook-static/assets/{floating-ui.react-DZ8IyUV4.js → floating-ui.react-zHdvT_EM.js} +1 -1
  346. package/storybook-static/assets/formatters-CVj-3Vn0-BFaHJqZL.js +1 -0
  347. package/storybook-static/assets/{formatters-BTz64vfu.js → formatters-CnFJmQFO.js} +16 -1
  348. package/storybook-static/assets/{formatters-runtime-DVi3RdYb.js → formatters-runtime-LyrD5drJ.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-CFj4J-Pc.js → foundationLib-D-8O61ay.js} +1 -1
  350. package/storybook-static/assets/{hooks-Ch5aYb7R.js → hooks-DbzqJvP-.js} +2 -2
  351. package/storybook-static/assets/iframe-D7iJQEr5.css +1 -0
  352. package/storybook-static/assets/iframe-hjgtoR20.js +1 -0
  353. package/storybook-static/assets/{iframe-DaN-XFub.js → iframe-jqJCNVG-.js} +4 -4
  354. package/storybook-static/assets/{info-Cirk1RKZ.js → info-DTU0XXKY.js} +1 -1
  355. package/storybook-static/assets/{odata-BtfB5Aje.js → odata-BBbQt4pn.js} +1 -1
  356. package/storybook-static/assets/odata-service-B5w4YBao-BW9QLSrS.js +3 -0
  357. package/storybook-static/assets/{odataAndTables-TEZyQ-TZ.js → odataAndTables-VK5X4V6B.js} +1 -1
  358. package/storybook-static/assets/{odataFetchFn-DEKVPDzV.js → odataFetchFn-T6FIbpPz.js} +1 -1
  359. package/storybook-static/assets/{odataStoryFixtures-CDDaJZKW.js → odataStoryFixtures-pMgI1q6n.js} +1 -1
  360. package/storybook-static/assets/{persisted-BzLLmgUK.js → persisted-EtS4vVCD.js} +1 -1
  361. package/storybook-static/assets/{pureUtilities-Dw249t3R.js → pureUtilities-BIjOnY3J.js} +1 -1
  362. package/storybook-static/assets/react-BG6GAoHo.js +9 -0
  363. package/storybook-static/assets/{refresh-cw-BN3JCsXv.js → refresh-cw-1qKqpsOV.js} +1 -1
  364. package/storybook-static/assets/{runtimeAndState-CCVgv3ck.js → runtimeAndState-BorNVnh8.js} +1 -1
  365. package/storybook-static/assets/{settings-2-jtcbbWm5.js → settings-2-CPrjOIso.js} +1 -1
  366. package/storybook-static/assets/{sortable-dNWaObUX.js → sortable-D6C8wTse.js} +1 -1
  367. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-hYwVxXYm.js → syntaxhighlighter-T5IQBZDB-ifBULuBx.js} +1 -1
  368. package/storybook-static/assets/{trash-2-DrVfT0z5.js → trash-2-CIrQtNzc.js} +1 -1
  369. package/storybook-static/assets/{triangle-alert-B1Q28Bq9.js → triangle-alert-D3piZGn9.js} +1 -1
  370. package/storybook-static/assets/ui-CD51AD-_.css +1 -0
  371. package/storybook-static/assets/ui.module-kfCm3RIG.js +1 -0
  372. package/storybook-static/assets/{uiClasses-CO3Cdv1E.js → uiClasses-BS9RPcty.js} +1 -1
  373. package/storybook-static/assets/{useODataSelectBase-DlbeGYUP.js → useODataSelectBase-CwDThJRi.js} +1 -1
  374. package/storybook-static/assets/{useODataTreeData-CvsoLfiG.js → useODataTreeData-C4v28uFV.js} +1 -1
  375. package/storybook-static/assets/{usePickerDefaultFilter-DdxyE_i8.js → usePickerDefaultFilter-Be420WNF.js} +1 -1
  376. package/storybook-static/assets/usePickerQuery-BodFjGup.js +1 -0
  377. package/storybook-static/assets/{usePickerTriggerController-BHBjSLtn.js → usePickerTriggerController-BjnU7tfr.js} +1 -1
  378. package/storybook-static/assets/{usePickerTriggerController-DzBkX15M.css → usePickerTriggerController-Q-ULIoGr.css} +1 -1
  379. package/storybook-static/assets/{x-Dh43gJN9.js → x-CaGImgpS.js} +1 -1
  380. package/storybook-static/iframe.html +3 -3
  381. package/storybook-static/index.json +1 -1
  382. package/storybook-static/project.json +1 -1
  383. package/dist/chunks/CalendarView-Z_XWk7aI.js +0 -439
  384. package/dist/chunks/TextEditorLexicalClient-CK8j3RA4.js.map +0 -1
  385. package/dist/chunks/button-BU2kRzwu.js.map +0 -1
  386. package/dist/chunks/check-box-Dd3YFuxd.js.map +0 -1
  387. package/dist/chunks/context-menu-C6RO7soI.js.map +0 -1
  388. package/dist/chunks/date-input-BzExUQnc.js +0 -340
  389. package/dist/chunks/date-input-BzExUQnc.js.map +0 -1
  390. package/dist/chunks/input-Bp6_Ucgr.js.map +0 -1
  391. package/dist/chunks/multi-select-COEkc8Qc.js.map +0 -1
  392. package/dist/chunks/picker-e6IsrMUG.js.map +0 -1
  393. package/dist/chunks/popover-CGU3MlsH.js +0 -222
  394. package/dist/chunks/select-BON0S9Dr.js.map +0 -1
  395. package/dist/chunks/ui.module-BisoTevy.js.map +0 -1
  396. package/storybook-static/assets/Badge-Cr7bAbxa.css +0 -1
  397. package/storybook-static/assets/CalendarView-CqKlnF8k.js +0 -1
  398. package/storybook-static/assets/CheckBox-CT1_Mjc0.css +0 -1
  399. package/storybook-static/assets/ContextMenu-Sv4wfyS3.js +0 -1
  400. package/storybook-static/assets/ContextMenu.stories-CVw3hOvY.js +0 -90
  401. package/storybook-static/assets/DateInput-D8_Oleoy.js +0 -1
  402. package/storybook-static/assets/DateInput-pmGiwdvw.css +0 -1
  403. package/storybook-static/assets/Dialog.stories-lcadmonM.js +0 -31
  404. package/storybook-static/assets/Disclosure-DzVnkjef.css +0 -1
  405. package/storybook-static/assets/Disclosure.stories-BeizaZWP.js +0 -41
  406. package/storybook-static/assets/DropZone.stories-B4J6OZ3T.js +0 -44
  407. package/storybook-static/assets/ExpandableActionPanel.stories-gCrqbhG6.js +0 -20
  408. package/storybook-static/assets/FloatingPopover-D4h-c24R.js +0 -1
  409. package/storybook-static/assets/FormattedTableCell-Dh-kHTOC.js +0 -18
  410. package/storybook-static/assets/Input-BioMOZju.css +0 -1
  411. package/storybook-static/assets/Input-Co--DMHY.js +0 -3
  412. package/storybook-static/assets/InputFile.stories-CypBLWFh.js +0 -36
  413. package/storybook-static/assets/InputFiles.stories-BGwCp7OC.js +0 -33
  414. package/storybook-static/assets/InputImage.stories-CdpOudXI.js +0 -51
  415. package/storybook-static/assets/LayoutPicker-9tLTatHF.css +0 -1
  416. package/storybook-static/assets/LayoutPicker.stories-DXcn-WXQ.js +0 -449
  417. package/storybook-static/assets/Listbox-DF8E6oMR.js +0 -38
  418. package/storybook-static/assets/Listbox.stories-C98_9wX3.js +0 -47
  419. package/storybook-static/assets/Modal.stories-DAC_QwN7.js +0 -180
  420. package/storybook-static/assets/MultiSelect-B-wX6JPo.js +0 -2
  421. package/storybook-static/assets/MultiSelectToken-DDu5n78h.css +0 -1
  422. package/storybook-static/assets/MultiSelectToken-fjW8p4YG.js +0 -1
  423. package/storybook-static/assets/PeriodSelect.stories-BIYx4_Yy.js +0 -64
  424. package/storybook-static/assets/PresetRangeDateInput.stories-Cqd4eb0N.js +0 -15
  425. package/storybook-static/assets/RadioButton.stories-Cbho4i83.js +0 -36
  426. package/storybook-static/assets/Select-X_O4M8Hi.js +0 -12
  427. package/storybook-static/assets/SingleDateTimeInput-mOllNfg2.css +0 -1
  428. package/storybook-static/assets/SingleDateTimeInput.stories-B1aZ754N.js +0 -78
  429. package/storybook-static/assets/Slider-BYrHesOR.js +0 -1
  430. package/storybook-static/assets/Slider-DMDFRH6B.css +0 -1
  431. package/storybook-static/assets/SliderInput.stories-MjSmhiOM.js +0 -68
  432. package/storybook-static/assets/StateSelect.stories-D46m5HNn.js +0 -47
  433. package/storybook-static/assets/Switch.stories-EiAb5Z-D.js +0 -26
  434. package/storybook-static/assets/Tabs-BLkTB6pp.css +0 -1
  435. package/storybook-static/assets/Tabs.stories-DXZ0r2ix.js +0 -58
  436. package/storybook-static/assets/TagInput-LeQAhDgs.css +0 -1
  437. package/storybook-static/assets/TagInput.stories-CoM8rXwa.js +0 -18
  438. package/storybook-static/assets/Textarea.stories-47k8uHdB.js +0 -27
  439. package/storybook-static/assets/TreeMultiSelect-BC_n1Wb-.js +0 -1
  440. package/storybook-static/assets/TreePickerBase-ycYQYQgi.js +0 -22
  441. package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +0 -1
  442. package/storybook-static/assets/iframe-CJQlmNUm.css +0 -1
  443. package/storybook-static/assets/iframe-Cr7AcW_R.js +0 -1
  444. package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +0 -3
  445. package/storybook-static/assets/react-KzpmXJc9.js +0 -9
  446. package/storybook-static/assets/ui-CSPaMpbi.css +0 -1
  447. package/storybook-static/assets/ui.module-DoMIk8Oc.js +0 -1
  448. package/storybook-static/assets/usePickerQuery-6rDaPaB0.js +0 -1
  449. /package/storybook-static/assets/{CheckBox.module-BBzuj5He.js → CheckBox.module-CM_GPl_E.js} +0 -0
  450. /package/storybook-static/assets/{Modal-BL_cTIW7.css → ModalManagerProvider-BL_cTIW7.css} +0 -0
  451. /package/storybook-static/assets/{array-BBSjoTRy-CIRmlF93.js → array-D-_yMMUK-CIRmlF93.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"picker-e6IsrMUG.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerSelectionToolbar.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\n.selectionActionButton {\n\tpadding-block: var(--space-xs);\n\tborder-radius: var(--radius-sm);\n\n\t&:hover {\n\t\tbackground-color: var(--surface-2);\n\t}\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\tpopupAriaLabel?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tariaMultiselectable?: boolean;\n\tpopupRole?: \"listbox\" | \"dialog\";\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\tpopupAriaLabel,\n\tdescriptionId,\n\tactiveOptionId,\n\tariaMultiselectable,\n\tpopupRole = \"listbox\",\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\trole: popupRole,\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-label\": labelId ? undefined : popupAriaLabel,\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\t\"aria-multiselectable\": ariaMultiselectable || undefined,\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 { type Ref } from \"react\";\n\nimport { Grid } from \"../grid\";\n\nimport styles from \"./Picker.module.scss\";\n\ntype PickerSelectionToolbarProps = {\n\tonSelectAll: () => void;\n\tonDeselectAll: () => void;\n\tselectAllButtonRef?: Ref<HTMLButtonElement>;\n};\n\n/**\n * Общая панель массовых действий для picker-компонентов с множественным выбором.\n * Компонент не знает формат значения и делегирует изменение владельцу selection-модели.\n */\nexport function PickerSelectionToolbar({ onSelectAll, onDeselectAll, selectAllButtonRef }: PickerSelectionToolbarProps) {\n\treturn (\n\t\t<Grid.Container gap=\"xs\" templateColumns=\"1fr 1fr\">\n\t\t\t<button\n\t\t\t\tref={selectAllButtonRef}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onSelectAll}\n\t\t\t\tdata-ui=\"picker-select-all\"\n\t\t\t\tdata-action=\"select-all\">\n\t\t\t\tВыбрать все\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onDeselectAll}\n\t\t\t\tdata-ui=\"picker-deselect-all\"\n\t\t\t\tdata-action=\"deselect-all\">\n\t\t\t\tСнять выбор\n\t\t\t</button>\n\t\t</Grid.Container>\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 {\n\ttype FloatingListboxPlacementStrategy,\n\ttype FloatingListboxSizeResolver,\n\tuseFloatingListbox\n} 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\tplacementStrategy?: FloatingListboxPlacementStrategy;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n\tresolveFloatingSize?: FloatingListboxSizeResolver;\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,222 +0,0 @@
1
- import { t as e } from "./floating-arrow-BE-z4QkE.js";
2
- import { cloneElement as t, createContext as n, useCallback as r, useContext as i, useEffect as a, useRef as o, useState as s } from "react";
3
- import { cn as c } from "@ryuzaki13/react-foundation-lib/utils";
4
- import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
5
- import { FloatingPortal as f, arrow as p, autoUpdate as m, flip as h, offset as g, shift as _, useDismiss as v, useFloating as y, useHover as b, useInteractions as x, useRole as S } from "@floating-ui/react";
6
- import { useClickOutside as C, useEscapeDismiss as w, useOverlayFocus as T } from "@ryuzaki13/react-foundation-lib/dom";
7
- import { createMissingContextError as E } from "@ryuzaki13/react-foundation-lib/error";
8
- import { createPortal as D } from "react-dom";
9
- var O = {
10
- popover: "JK2Y7t",
11
- primary: "_5QtpCJ",
12
- secondary: "hZuysP"
13
- }, k = n(null);
14
- function A() {
15
- let e = i(k);
16
- if (!e) throw E({
17
- hookName: "usePopoverContext",
18
- providerName: "Popover"
19
- });
20
- return e;
21
- }
22
- //#endregion
23
- //#region src/popover/components/PopoverContent.tsx
24
- var j = ({ children: t, onClose: n, closeOnOutside: i = !0, closeOnEscape: a = !0, disableOutsideClick: s = !1, background: l = "secondary" }) => {
25
- let { open: p, setOpen: m, refs: h, floatingStyles: g, middlewareData: _, placement: v, arrowRef: y } = A(), b = o(null), x = r((e) => {
26
- b.current = e, h.setFloating(e);
27
- }, [h]), S = T({
28
- active: p,
29
- initialFocus: "container",
30
- restoreFocus: !0,
31
- containerRef: b
32
- }), E = r(() => {
33
- p && (m(!1), n?.());
34
- }, [
35
- m,
36
- n,
37
- p
38
- ]);
39
- w({
40
- active: p,
41
- enabled: a,
42
- onDismiss: E,
43
- containerRef: S
44
- });
45
- let D = r(() => {
46
- !p || s || i && E();
47
- }, [
48
- p,
49
- s,
50
- i,
51
- E
52
- ]);
53
- return C([h.floating, h.reference], D), p ? /* @__PURE__ */ u(f, { children: /* @__PURE__ */ d("div", {
54
- ref: x,
55
- style: g,
56
- className: c(O.popover, O[l]),
57
- role: "dialog",
58
- "aria-modal": "true",
59
- tabIndex: -1,
60
- children: [typeof t == "function" ? t({ setClose: E }) : t, /* @__PURE__ */ u(e, {
61
- ref: y,
62
- placement: v,
63
- middlewareData: _
64
- })]
65
- }) }) : null;
66
- }, M = ({ passive: e, children: n }) => {
67
- let { open: i, setOpen: a, refs: o } = A(), s = r((t) => {
68
- n.props.onClick && n.props.onClick(t), !t.defaultPrevented && (t.preventDefault(), t.stopPropagation(), !e && a((e) => !e));
69
- }, [
70
- n,
71
- a,
72
- e
73
- ]);
74
- return t(n, {
75
- ref: o.setReference,
76
- "aria-expanded": i,
77
- onClick: s
78
- });
79
- }, N = Object.assign(({ children: e, open: t, defaultOpen: n, onOpenChange: i, placement: a = "bottom" }) => {
80
- let [c, l] = s(n ?? !1), d = t !== void 0, f = d ? t : c, v = r((e) => {
81
- let t = typeof e == "function" ? e(f) : e;
82
- d || l(t), i?.(t);
83
- }, [
84
- d,
85
- i,
86
- f
87
- ]), b = o(null), { refs: x, floatingStyles: S, middlewareData: C, placement: w } = y({
88
- open: f,
89
- onOpenChange: v,
90
- placement: a,
91
- middleware: [
92
- g(8),
93
- h(),
94
- _({ padding: 16 }),
95
- p({ element: b.current })
96
- ],
97
- whileElementsMounted: m
98
- });
99
- return /* @__PURE__ */ u(k.Provider, {
100
- value: {
101
- open: f,
102
- setOpen: v,
103
- refs: x,
104
- floatingStyles: S,
105
- placement: w,
106
- middlewareData: C,
107
- arrowRef: b
108
- },
109
- children: e
110
- });
111
- }, {
112
- Trigger: M,
113
- Content: j
114
- }), P = {
115
- tooltipPanel: "sZ0x6w",
116
- tooltip: "_538Ejd",
117
- negative: "fqciCO",
118
- information: "sHkUiQ",
119
- error: "bpGNoX",
120
- warning: "tYnRg-",
121
- success: "_8lflEh"
122
- }, F = ({ content: t, children: n, openOnHover: r = !0, placement: i = "bottom", openDelay: a = 200, closeDelay: f = 100, maxWidth: C, state: w, tooltip: T }) => {
123
- let [E, O] = s(!1), k = o(null), { refs: A, floatingStyles: j, middlewareData: M, context: N, placement: F } = y({
124
- open: E,
125
- onOpenChange: O,
126
- placement: i,
127
- middleware: [
128
- g(8),
129
- h({
130
- fallbackAxisSideDirection: "end",
131
- fallbackPlacements: [
132
- "top",
133
- "right",
134
- "bottom"
135
- ]
136
- }),
137
- _({ padding: 16 }),
138
- p({
139
- element: k,
140
- padding: 8
141
- })
142
- ],
143
- whileElementsMounted: m
144
- }), I = b(N, {
145
- enabled: r,
146
- move: !1,
147
- delay: {
148
- open: a,
149
- close: f
150
- }
151
- }), L = v(N), R = S(N), { getReferenceProps: z, getFloatingProps: B } = x([
152
- I,
153
- L,
154
- R
155
- ]);
156
- return /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("span", {
157
- ref: A.setReference,
158
- ...z(),
159
- style: { lineHeight: 1 },
160
- children: n
161
- }), E && D(/* @__PURE__ */ d("div", {
162
- ref: A.setFloating,
163
- style: {
164
- ...j,
165
- zIndex: "var(--z-tooltip)",
166
- maxWidth: C ? `${C}em` : void 0
167
- },
168
- ...B(),
169
- role: "tooltip",
170
- className: c(P.tooltipPanel, T && P.tooltip, w && P[w]),
171
- children: [t, /* @__PURE__ */ u(e, {
172
- ref: k,
173
- placement: F,
174
- middlewareData: M
175
- })]
176
- }), document.body)] });
177
- }, I = ({ x: t, y: n, children: r }) => {
178
- let i = o(null), { refs: s, floatingStyles: c, middlewareData: l, placement: f } = y({
179
- strategy: "absolute",
180
- placement: "top",
181
- middleware: [
182
- g(6),
183
- h(),
184
- _({ padding: 16 }),
185
- p({ element: i })
186
- ]
187
- });
188
- return a(() => {
189
- s.setReference && s.setReference({ getBoundingClientRect: () => ({
190
- x: t,
191
- y: n,
192
- width: 0,
193
- height: 0,
194
- top: n,
195
- left: t,
196
- bottom: n,
197
- right: t,
198
- toJSON: () => {}
199
- }) });
200
- }, [
201
- t,
202
- n,
203
- s
204
- ]), /* @__PURE__ */ d("div", {
205
- ref: s.setFloating,
206
- style: {
207
- ...c,
208
- position: "absolute",
209
- pointerEvents: "none"
210
- },
211
- className: P.tooltip,
212
- children: [r, /* @__PURE__ */ u(e, {
213
- ref: i,
214
- placement: f,
215
- middlewareData: l
216
- })]
217
- });
218
- };
219
- //#endregion
220
- export { j as a, M as i, F as n, A as o, N as r, I as t };
221
-
222
- //# sourceMappingURL=popover-CGU3MlsH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-BON0S9Dr.js","names":[],"sources":["../../src/select/lib/getOptionSearchText.ts","../../src/select/model/useODataSelect.ts","../../src/select/lib/createSelectOptionSections.ts","../../src/select/Select.module.scss","../../src/select/Select.tsx","../../src/select/ODataSelect.tsx","../../src/select/SerializableSelect.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { extractPickerTextContent } from \"../../picker\";\nimport { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport function getOptionSearchText<T extends InputType>({\n\toption,\n\tgetOptionLabel,\n\tgetOptionCode,\n\tgetOptionGroup\n}: {\n\toption: T;\n\tgetOptionLabel: (option: T) => ReactNode;\n\tgetOptionCode?: (option: T) => ReactNode;\n\tgetOptionGroup?: (option: T) => SelectOptionGroup | undefined;\n}) {\n\treturn [\n\t\textractPickerTextContent(getOptionLabel(option)),\n\t\textractPickerTextContent(getOptionCode?.(option)),\n\t\textractPickerTextContent(getOptionGroup?.(option)?.label)\n\t]\n\t\t.filter((part): part is string => Boolean(part))\n\t\t.join(\" \")\n\t\t.toLowerCase();\n}\n\n/** Находит selected option по value и возвращает fallback, если значение еще не нормализовано. */\nexport function resolveSelectedOption<TOption extends { value: string }>(\n\toptions: readonly TOption[],\n\tvalue: string,\n\tfallback: TOption\n): TOption {\n\treturn options.find((option) => option.value === value) ?? fallback;\n}\n","import { useMemo } from \"react\";\n\nimport { ODataCollectionModel, ODataSingleSelectProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { useODataSelectBase } from \"./useODataSelectBase\";\n\ninterface UseODataSelectOptions extends Omit<ODataSingleSelectProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (value: string | undefined) => void;\n}\n\nexport function useODataSelect({ odata, segment, model, value, dependencies, onChange }: UseODataSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue: value ? [value] : [],\n\t\tdependencies\n\t});\n\n\tconst selectedItem = odataModel.selectedItems[0];\n\tconst options = useMemo(() => {\n\t\tif (!selectedItem) {\n\t\t\treturn odataModel.filteredItems;\n\t\t}\n\n\t\treturn [selectedItem, ...odataModel.filteredItems];\n\t}, [odataModel.filteredItems, selectedItem]);\n\n\tconst handleChange = (item: CollectionItem | undefined) => {\n\t\tonChange(item?.[odataModel.selectionKey]);\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\tselectedItem,\n\t\toptions,\n\t\thandleChange\n\t};\n}\n","import { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport type SelectOptionSectionItem<TOption> = {\n\treadonly option: TOption;\n\treadonly index: number;\n};\n\nexport type SelectOptionSection<TOption> = {\n\treadonly group: SelectOptionGroup | undefined;\n\treadonly items: readonly SelectOptionSectionItem<TOption>[];\n};\n\n/**\n * Собирает соседние опции с одинаковым group key в секции, сохраняя исходные индексы для клавиатурной навигации listbox.\n */\nexport function createSelectOptionSections<TOption>(\n\toptions: readonly TOption[],\n\tgetOptionGroup: (option: TOption) => SelectOptionGroup | undefined\n): readonly SelectOptionSection<TOption>[] {\n\tconst sections: Array<{ group: SelectOptionGroup | undefined; items: SelectOptionSectionItem<TOption>[] }> = [];\n\n\toptions.forEach((option, index) => {\n\t\tconst group = getOptionGroup(option);\n\t\tconst currentSection = sections.at(-1);\n\t\tconst belongsToCurrentSection = currentSection?.group?.key === group?.key;\n\n\t\tif (currentSection && belongsToCurrentSection) {\n\t\t\tcurrentSection.items.push({ option, index });\n\t\t\treturn;\n\t\t}\n\n\t\tsections.push({\n\t\t\tgroup,\n\t\t\titems: [{ option, index }]\n\t\t});\n\t});\n\n\treturn sections;\n}\n",".inputWithOverlay {\n\tcolor: transparent;\n\tcaret-color: transparent;\n}\n\n.valueOverlay {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) + var(--space-xs)) 0 var(--space-md);\n\tdisplay: flex;\n\talign-items: center;\n\tpointer-events: none;\n\toverflow: hidden;\n}\n","import { type CSSProperties, Fragment, ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon, XIcon } from \"lucide-react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerTriggerController\n} from \"../picker\";\nimport { ChangeHandler, UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { getOptionSearchText } from \"./lib\";\nimport { createSelectOptionSections } from \"./lib/createSelectOptionSections\";\nimport styles from \"./Select.module.scss\";\nimport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport type SelectOptionState = {\n\tactive: boolean;\n\tselected: boolean;\n\tdisabled: boolean;\n};\n\ntype SelectSharedProps<TOption extends InputType> = Omit<UiBaseProps<TOption, TOption | undefined>, \"onChange\"> & {\n\toptions: readonly TOption[];\n\tgetOptionKey: (option: TOption) => SelectOptionKey;\n\tgetOptionLabel: (option: TOption) => ReactNode;\n\tgetOptionCode?: (option: TOption) => ReactNode;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionAriaLabel?: (option: TOption) => string;\n\tgetOptionGroup?: (option: TOption) => SelectOptionGroup | undefined;\n\tgetOptionClassName?: (option: TOption, state: SelectOptionState) => string | undefined;\n\trenderOption?: (option: TOption, state: SelectOptionState) => ReactNode;\n\trenderValue?: (option: TOption) => ReactNode;\n\tclassName?: string;\n\tbuttonClassName?: string;\n\toptionsClassName?: string;\n\toptionsMaxWidth?: CSSProperties[\"maxWidth\"];\n\toptionsContentClassName?: string;\n\tsearchable?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\trenderPopupHeader?: ReactNode;\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n\tplacement?: Placement;\n};\n\ntype SelectChangeValue<TOption extends InputType, TClearable extends boolean | undefined> = true extends TClearable\n\t? TOption | undefined\n\t: TOption;\n\nexport type SelectProps<TOption extends InputType, TClearable extends boolean | undefined = false> = SelectSharedProps<TOption> & {\n\tclearable?: TClearable;\n\tonChange: ChangeHandler<SelectChangeValue<TOption, TClearable>>;\n};\n\n/**\n * Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.\n */\nexport function Select<TOption extends InputType, TClearable extends boolean | undefined = false>(props: SelectProps<TOption, TClearable>) {\n\tconst {\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tplaceholder,\n\t\tsize,\n\t\toptions,\n\t\tvalue,\n\t\tonChange,\n\t\tgetOptionKey,\n\t\tgetOptionLabel,\n\t\tgetOptionCode,\n\t\tgetOptionDisabled,\n\t\tgetOptionAriaLabel,\n\t\tgetOptionGroup,\n\t\tgetOptionClassName,\n\t\trenderOption,\n\t\trenderValue,\n\t\tclassName,\n\t\tbuttonClassName,\n\t\toptionsClassName,\n\t\toptionsMaxWidth,\n\t\toptionsContentClassName,\n\t\tsearchable = false,\n\t\tdefaultFilter = true,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\trenderPopupHeader,\n\t\temptyState,\n\t\tloadingState,\n\t\terrorState,\n\t\tplacement = \"bottom-start\",\n\t\tclearable = false\n\t} = props;\n\tconst emitChange = onChange as ChangeHandler<TOption | undefined>;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = searchable ? \"search-single\" : \"display\";\n\tconst selectedKey = value === undefined ? undefined : getOptionKey(value);\n\tconst selectedOption =\n\t\tselectedKey === undefined ? undefined : (options.find((option) => getOptionKey(option) === selectedKey) ?? value);\n\tconst { query: currentQuery, setQuery } = usePickerQuery({\n\t\topen,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst getSearchText = useCallback(\n\t\t(option: TOption) =>\n\t\t\tgetOptionSearchText({\n\t\t\t\toption,\n\t\t\t\tgetOptionLabel,\n\t\t\t\tgetOptionCode,\n\t\t\t\tgetOptionGroup\n\t\t\t}),\n\t\t[getOptionCode, getOptionGroup, getOptionLabel]\n\t);\n\tconst visibleOptions = usePickerDefaultFilter({\n\t\toptions,\n\t\tquery: currentQuery,\n\t\tenabled: searchable && defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst optionSections = useMemo(\n\t\t() => (getOptionGroup ? createSelectOptionSections(visibleOptions, getOptionGroup) : undefined),\n\t\t[getOptionGroup, visibleOptions]\n\t);\n\tconst selectedIndex = selectedKey === undefined ? -1 : visibleOptions.findIndex((option) => getOptionKey(option) === selectedKey);\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: visibleOptions,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled,\n\t\tonSelect: emitChange,\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode\n\t});\n\n\tconst hasOptions = visibleOptions.length > 0;\n\tconst labelContent = selectedOption !== undefined ? getOptionLabel(selectedOption) : undefined;\n\tconst displayContent = selectedOption !== undefined ? (renderValue ? renderValue(selectedOption) : labelContent) : undefined;\n\tconst labelText = extractPickerTextContent(labelContent);\n\tconst codeText = selectedOption !== undefined ? extractPickerTextContent(getOptionCode?.(selectedOption)) : undefined;\n\tconst displayText =\n\t\textractPickerTextContent(displayContent) ?? labelText ?? codeText ?? (selectedKey !== undefined ? String(selectedKey) : \"\");\n\tconst showSearchValue = searchable && (open || currentQuery.length > 0);\n\tconst inputValue = showSearchValue ? currentQuery : selectedOption !== undefined ? displayText : \"\";\n\tconst showDisplayOverlay =\n\t\tselectedOption !== undefined &&\n\t\tdisplayContent !== undefined &&\n\t\textractPickerTextContent(displayContent) === undefined &&\n\t\t!showSearchValue;\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: triggerMode,\n\t\topen,\n\t\tcurrentQuery,\n\t\thasDisplayValue: selectedOption !== undefined,\n\t\tinputRef,\n\t\tsetQuery,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\tconst handleClear = () => {\n\t\tif (clearable) {\n\t\t\temitChange(undefined);\n\t\t}\n\n\t\tsetQuery(\"\");\n\t\tclose();\n\t};\n\tconst renderOptionNode = (listId: string, option: TOption, index: number) => {\n\t\tconst optionKey = getOptionKey(option);\n\t\tconst selected = selectedKey !== undefined && optionKey === selectedKey;\n\t\tconst active = index === activeIndex;\n\t\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\t\tconst optionState = { active, selected, disabled: optionDisabled };\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={optionKey}\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\taria-label={getOptionAriaLabel?.(option)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\tgetOptionClassName?.(option, optionState)\n\t\t\t\t)}\n\t\t\t\tonClick={() => selectOption(option)}>\n\t\t\t\t{renderOption ? (\n\t\t\t\t\trenderOption(option, optionState)\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{selected ? <CheckIcon className={uiStyles.uiPopupOptionIcon} /> : <span className={uiStyles.uiPopupOptionIcon} />}\n\t\t\t\t\t\t<div className={uiStyles.uiOptionText}>{getOptionLabel(option)}</div>\n\t\t\t\t\t\t{getOptionCode && <div className={uiStyles.uiOptionCode}>{getOptionCode(option)}</div>}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTriggerInput\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={!searchable}\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\tplaceholder={selectedOption === undefined || showSearchValue ? `${placeholder} <${options.length}>` : undefined}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-autocomplete={searchable ? \"list\" : \"none\"}\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tinputClassName={cn(showDisplayOverlay && styles.inputWithOverlay, buttonClassName, \"textOverflow\")}\n\t\t\t\t\t\t\toverlay={showDisplayOverlay ? <div className={styles.valueOverlay}>{displayContent}</div> : undefined}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t{clearable && selectedOption !== undefined && !disabled ? (\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\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-select\"\n\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t\t}}\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) : null}\n\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tif (!searchable) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: !searchable\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={hasOptions ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(uiStyles.uiPopupOptions, optionsClassName)}\n\t\t\t\t\t\t\tmaxWidth={optionsMaxWidth}\n\t\t\t\t\t\t\theader={renderPopupHeader}>\n\t\t\t\t\t\t\t<div className={cn(optionsContentClassName, \"h100 scrollable\")}>\n\t\t\t\t\t\t\t\t{hasOptions ? (\n\t\t\t\t\t\t\t\t\toptionSections ? (\n\t\t\t\t\t\t\t\t\t\toptionSections.map((section, sectionIndex) => {\n\t\t\t\t\t\t\t\t\t\t\tconst groupLabelId = section.group ? `${listId}-group-${sectionIndex}` : undefined;\n\t\t\t\t\t\t\t\t\t\t\tconst optionNodes = section.items.map(({ option, index }) =>\n\t\t\t\t\t\t\t\t\t\t\t\trenderOptionNode(listId, option, index)\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\treturn section.group ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`group-${String(section.group.key)}-${sectionIndex}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-labelledby={groupLabelId}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id={groupLabelId} className={uiStyles.uiPopupGroupLabel}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{section.group.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{optionNodes}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Fragment key={`options-${sectionIndex}`}>{optionNodes}</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tvisibleOptions.map((option, index) => renderOptionNode(listId, option, index))\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\t\t<PickerStatus emptyState={emptyState} loadingState={loadingState} errorState={errorState} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n","import React from \"react\";\n\nimport { ODataSingleSelectProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { InputUILoading } from \"../input\";\nimport { UiBaseProps } from \"../types\";\n\nimport { useODataSelect } from \"./model/useODataSelect\";\nimport { Select } from \"./Select\";\nimport { SelectOptionContent } from \"./SelectOptionContent\";\n\ntype ODataSelectProps = Omit<ODataSingleSelectProps, \"value\"> & UiBaseProps<string | undefined> & { clearable?: boolean };\n\nfunction getODataOptionTextKey(item: CollectionItem | undefined, textKey: string, codeKey: string) {\n\tif (!item) {\n\t\treturn textKey || codeKey;\n\t}\n\n\treturn textKey || Object.keys(item).find((key) => key !== codeKey) || codeKey;\n}\n\nexport const ODataSelect: React.FC<ODataSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tsize,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tclearable\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\tif (odataModel.isLoading) {\n\t\treturn <InputUILoading size={size} label={label} description={description} />;\n\t}\n\n\tconst hideCode = segment.hideCode ?? odata.hideCode;\n\tconst resolvedTextKey = getODataOptionTextKey(odataModel.selectedItem ?? odataModel.options[0], odataModel.textKey, odataModel.codeKey);\n\n\treturn (\n\t\t<Select\n\t\t\tsize={size}\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\toptions={odataModel.options}\n\t\t\tvalue={odataModel.selectedItem}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tgetOptionKey={(item) => item[odataModel.codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey]}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[odataModel.codeKey]}\n\t\t\tgetOptionAriaLabel={(item) =>\n\t\t\t\thideCode || item[resolvedTextKey] === item[odataModel.codeKey]\n\t\t\t\t\t? String(item[resolvedTextKey])\n\t\t\t\t\t: `${item[resolvedTextKey]} ${item[odataModel.codeKey]}`\n\t\t\t}\n\t\t\trenderValue={(item) => (\n\t\t\t\t<SelectOptionContent label={item[resolvedTextKey]} code={hideCode ? undefined : item[odataModel.codeKey]} />\n\t\t\t)}\n\t\t\trenderOption={(item) => (\n\t\t\t\t<SelectOptionContent\n\t\t\t\t\tlabel={item[resolvedTextKey]}\n\t\t\t\t\tcode={hideCode ? undefined : item[odataModel.codeKey]}\n\t\t\t\t\thighlight={odataModel.debouncedQuery}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tsearchable\n\t\t\tquery={odataModel.query}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tdefaultFilter={false}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\tloadingState=\"Загрузка...\"\n\t\t\terrorState={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t\temptyState={!odataModel.isLoading && !odataModel.isError ? \"Нет данных\" : undefined}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n};\n","import { Select } from \"./Select\";\n\nimport type { UiBaseProps } from \"../types\";\nimport type { SelectOptionKey } from \"./Select\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], SelectOptionKey> extends never ? never : K;\n}[keyof TOption];\n\ntype SerializableOptionValue<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>> = Extract<\n\tTOption[TOptionKey],\n\tSelectOptionKey\n>;\n\nexport interface SerializableSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends Omit<UiBaseProps<SerializableOptionValue<TOption, TOptionKey> | undefined>, \"onChange\"> {\n\toptions: readonly TOption[];\n\tonChange: (value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void;\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n\tclassName?: string;\n\tclearable?: boolean;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], SelectOptionKey> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], SelectOptionKey>;\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 | number {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\" || typeof label === \"number\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" || typeof key === \"number\" ? key : String(key);\n}\n\nexport function SerializableSelect<\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\tclassName,\n\tclearable\n}: SerializableSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\tconst selectedOption =\n\t\tvalue === undefined ? undefined : options.find((option) => getSerializableOptionKey(option, optionKey) === value);\n\n\treturn (\n\t\t<Select\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\toptions={options}\n\t\t\tvalue={selectedOption}\n\t\t\tonChange={(option: TOption | undefined) => onChange(option ? getSerializableOptionKey(option, optionKey) : undefined)}\n\t\t\tgetOptionKey={(option: TOption) => getSerializableOptionKey(option, optionKey)}\n\t\t\tgetOptionLabel={(option: TOption) => getSerializableOptionLabel(option, optionLabel, optionKey)}\n\t\t\tgetOptionCode={renderCode ? (option: TOption) => getSerializableOptionKey(option, optionKey) : undefined}\n\t\t\tclassName={className}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.module-BisoTevy.js","names":[],"sources":["../../src/ui.module.scss"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.uiSizable {\n\t--base-width: 100%;\n\n\twidth: var(--base-width);\n\n\t&.xs {\n\t\t--base-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n\t}\n\n\t&.sm {\n\t\t--base-width: calc(var(--drp-ui-width-sm, var(--ui-width-sm)) - var(--width-add));\n\t}\n\n\t&.md {\n\t\t--base-width: calc(var(--drp-ui-width-md, var(--ui-width-md)) - var(--width-add));\n\t}\n\n\t&.lg {\n\t\t--base-width: calc(var(--drp-ui-width-lg, var(--ui-width-lg)) - var(--width-add));\n\t}\n\n\t&.xl {\n\t\t--base-width: calc(var(--drp-ui-width-xl, var(--ui-width-xl)) - var(--width-add));\n\t}\n}\n\n// TODO: Тестовый класс\n.uiErrorElement {\n\t--grid-size: var(--space-sm);\n\t--grid-line-size: var(--border-width);\n\t--grid-line-color: var(--status-error-soft);\n\n\theight: var(--control-height);\n\twidth: 100%; // calc(10em - var(--width-add));\n\tflex-shrink: 0;\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\tborder: var(--focus-width) solid var(--status-error-border);\n\tborder-radius: var(--radius-sm);\n\toutline: none;\n\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tcolor: var(--status-error-text);\n\tbackground-color: var(--surface-0);\n\tbackground-image:\n\t\trepeating-linear-gradient(\n\t\t\t45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t),\n\t\trepeating-linear-gradient(\n\t\t\t-45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t);\n}\n\n.uiContainer {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.uiInputContainer {\n\t@extend .uiContainer;\n\n\t--padding-right: var(--control-height);\n}\n\n.uiLabelBase {\n\tdisplay: inline-block;\n\tfont-weight: 400;\n\tfont-variation-settings: \"wght\" 400;\n\n\t&:has(~ :required) {\n\t\t&::after {\n\t\t\tcontent: \" *\";\n\t\t\tcolor: var(--status-error-text);\n\t\t}\n\t}\n}\n\n.uiLabel {\n\t@extend .uiLabelBase;\n\n\tmargin-block: var(--space-xs);\n}\n\n.uiDescription {\n\t--paragraph-margin: 0;\n\n\tpadding-bottom: var(--space-xs);\n\tcolor: var(--content-2);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiLabel,\n.uiDescription {\n\tmargin-inline: var(--space-xs);\n\t// user-select: none;\n}\n\n.uiPlaceholder {\n\tcolor: var(--content-2);\n\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.uiControl {\n\t@include ui-tone(\"neutral\");\n\t@include ui-appearance-outline;\n\t@include ui-control-base;\n\n\t--ui-radius: var(--radius-sm);\n\n\t&.invalid,\n\t&:invalid {\n\t\t@include ui-tone(\"error\");\n\t\t@include ui-appearance-outline;\n\t}\n\n\t&::placeholder {\n\t\t@extend .uiPlaceholder;\n\t}\n}\n\n.uiToneNeutral {\n\t@include ui-tone(\"neutral\");\n}\n\n.uiToneError {\n\t@include ui-tone(\"error\");\n}\n\n.uiToneWarning {\n\t@include ui-tone(\"warning\");\n}\n\n.uiToneSuccess {\n\t@include ui-tone(\"success\");\n}\n\n.uiToneInfo {\n\t@include ui-tone(\"info\");\n}\n\n.uiAppearanceSolid {\n\t@include ui-appearance-solid;\n}\n\n.uiAppearanceOutline {\n\t@include ui-appearance-outline;\n}\n\n.uiAppearanceGhost {\n\t@include ui-appearance-ghost;\n}\n\n.uiAppearanceTransparent {\n\t@include ui-appearance-transparent;\n}\n\n.uiInputControl {\n\t@extend .uiControl;\n\n\theight: var(--control-height);\n}\n\n.uiInputWithToggle {\n\t@extend .uiInputControl;\n\n\tcolor: var(--content-0);\n\n\tpadding: 0 var(--padding-right) 0 var(--space-sm);\n\twidth: 100%;\n\ttext-align: left;\n\n\t// &[type=\"button\"] {\n\t// \twhite-space: nowrap;\n\t// }\n}\n\n.uiSelectionControl {\n\t// @extend .uiControl;\n\t@include ui-control-base;\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\t--ui-background: var(--surface-0);\n\t--ui-background-hover: var(--ui-tone-soft);\n\t--ui-background-active: var(--ui-tone-soft);\n\t--ui-border-color: var(--ui-tone-border);\n\t--ui-border-hover: var(--ui-tone-border-hover);\n\t--ui-border-active: var(--ui-tone-border-active);\n\t--ui-border-focus: var(--ui-tone-border-focus);\n\n\tappearance: none;\n\tmargin: 0;\n\tcursor: pointer;\n\n\t&:checked {\n\t\t& + .uiSelectionIcon {\n\t\t\tcolor: var(--ui-tone-fill);\n\t\t}\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\n\t\t--ui-border-color: var(--border-0);\n\n\t\t&:checked {\n\t\t\t& + .uiSelectionIcon {\n\t\t\t\tcolor: var(--border-0);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.uiSelectionIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tpointer-events: none;\n\tcolor: transparent;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\topacity var(--transition-fast) ease;\n}\n\n.uiElement,\n.uiSelectOption,\n.uiPopupOption {\n\t&.disabled,\n\t&:disabled {\n\t\tcursor: default;\n\t\tpointer-events: none;\n\t\tuser-select: none;\n\n\t\t.uiLabel,\n\t\t.uiDescription {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.uiPlaceholder,\n\t\t.uiOptionText,\n\t\t.uiOptionCode {\n\t\t\topacity: 0.25;\n\t\t}\n\t}\n}\n\n.uiPanel {\n\tbackground-color: var(--ui-panel-background, var(--surface-0));\n\tcolor: var(--content-0);\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-sm);\n}\n\n.uiPopupOptions {\n\t@extend .uiPanel;\n\n\tbackground-color: var(--surface-0);\n\n\t--anchor-gap: var(--space-xs);\n\t--anchor-padding: var(--space-xs);\n\t--anchor-offset: 0;\n\t--input-width: min(100vw, var(--base-width, 15em));\n\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tmin-width: var(--input-width);\n\ttransform-origin: top;\n\tbox-shadow: var(--shadow-md);\n\tz-index: var(--z-dropdown);\n\n\t&:empty {\n\t\tvisibility: hidden;\n\t}\n}\n\n.uiStateFocus {\n\t@include focusVisible;\n\n\tbackground-color: var(--surface-1);\n\tborder-color: var(--border-1);\n\tcursor: pointer;\n}\n\n.uiOptionBase {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tgap: var(--space-sm);\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.uiPopupOption {\n\t@extend .uiOptionBase;\n\n\theight: auto;\n\tpadding: var(--space-xs) var(--space-sm);\n}\n\n.uiSelectOption,\n.uiPopupOption {\n\tborder-radius: var(--radius-sm);\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: var(--content-0);\n\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t.uiMenuOptionIcon,\n\t.uiPopupOptionIcon {\n\t\tflex-shrink: 0;\n\t\twidth: var(--space-md);\n\t\theight: var(--space-md);\n\t}\n\n\t.uiMenuOptionIcon,\n\t.keyboard {\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--content-accent);\n\t\tcursor: default;\n\t}\n\n\t&.uiPopupOptionActive {\n\t\tbackground-color: var(--surface-1);\n\t}\n\n\t&:focus {\n\t\t@extend .uiStateFocus;\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-accent);\n\t\tcursor: pointer;\n\t}\n}\n\n.uiPopupOptionSeparator {\n\tborder-top: var(--border);\n\tmargin-block: var(--space-xs);\n}\n\n.uiPopupGroupLabel {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n\tfont-weight: 300;\n\ttext-transform: uppercase;\n\tfont-size: var(--font-size-sm);\n}\n\n.uiMenuOptionIcon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.uiSelectOption {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\tgap: var(--space-xs);\n\n\tpadding-right: var(--space-xs);\n}\n\n.uiOptionText {\n\t// font-size: var(--font-size-sm);\n\tflex: 1;\n\t// .flexEllipsis\n}\n\n.uiOptionCode {\n\tfont-family: var(--font-family-mono);\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--content-1);\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiToggleButtonContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\theight: 100%;\n\twidth: 100%;\n\n\ttransition-property: width;\n\ttransition-duration: var(--transition-fast);\n\ttransition-timing-function: cubic-bezier(1, 0, 0.5, 0.5);\n\n\t> button {\n\t\tbackground: transparent;\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: var(--control-height);\n\t\twidth: var(--control-height);\n\t\tborder-radius: var(--radius-sm);\n\t\tflex: 0 0 var(--control-height);\n\t}\n\n\t// &[data-disabled] {\n\t// \tcursor: default;\n\t// \tpointer-events: none;\n\t// \topacity: var(--disabled-opacity);\n\t// }\n}\n\n.uiToggleButton {\n\tcolor: var(--content-0);\n}\n\n.uiToggleIcon {\n\ttransition: transform var(--transition-fast) ease-in-out;\n\n\t&.uiToggleIconOpen {\n\t\ttransform: rotate(180deg);\n\t}\n}\n\n@include mobile {\n\t.uiPopupOptions {\n\t\t--input-width: calc(100dvw - var(--space-xl));\n\t}\n}\n\n// TODO: пока в свалку стили для дата-подобных компонентов\n\n// Для компонентов, который не являются input, но выставляют себя за него\n.uiInputControlFake {\n\t@extend .uiInputControl;\n\n\twidth: 100%;\n\tpadding: 0 var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\tdisplay: flex;\n\talign-items: center;\n\n\tcursor: text;\n}\n\n.uiClearButton {\n\tcolor: var(--status-error-text);\n\n\t&:disabled {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n}\n\n.uiButtonSeparator {\n\tborder-left: var(--border);\n\theight: calc(100% - var(--space-sm));\n}\n"],"mappings":""}
@@ -1 +0,0 @@
1
- .qBtmnH{color:var(--ui-color,var(--content-0));background-color:var(--ui-background,transparent);border:var(--border-width) solid var(--ui-border-color,transparent);border-radius:var(--ui-radius,var(--radius-sm));transition-property:border-color,color,background-color,opacity;transition-duration:var(--transition-fast);align-items:center;gap:var(--space-xs);max-width:100%;padding:0 var(--space-xs);font-variation-settings:"wght" 500;vertical-align:middle;font-weight:500;transition-timing-function:ease;display:inline-flex}.p-HsHY{pointer-events:none;-webkit-user-select:none;user-select:none}.u9tQAE{font-size:var(--font-size-xs)}.FRScRz{font-size:var(--font-size-sm)}.W13uQO{font-size:var(--font-size-md)}._3IRcM9{font-size:var(--font-size-lg)}.R3ybI7{font-size:var(--font-size-xl)}.DdWAaC{min-width:0}._5cXBQF{border-radius:var(--radius-xs);width:1.25em;height:1.25em;color:inherit;transition:color var(--transition-fast) ease, background-color var(--transition-fast) ease, scale var(--transition-fast) ease;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}._5cXBQF:hover{background-color:var(--status-error-soft);color:var(--status-error-text);scale:1.1}._5cXBQF:focus-visible{outline:var(--focus-width) solid var(--focus-ring);outline-offset:var(--focus-offset)}._5cXBQF svg{display:block}
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./chevron-left-DjbyJeHO.js";import{n as i,t as a}from"./chevron-right-D29uf09I.js";import{i as o,n as s,r as c}from"./iframe-DaN-XFub.js";import{a as l,i as u}from"./utils-DUM89eIj.js";import{S as d,a as f,b as p,f as m,h,m as g,n as _,p as v,s as y,x as b}from"./formatters--mhLir82-v41eaI4a.js";import{n as x,t as S}from"./Button-mjF9HSg0.js";var C,w;function T(){return(T=e((()=>{o(),C=[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M8 13h.01`,key:`1sbv64`}],[`path`,{d:`M12 13h.01`,key:`y0uutt`}],[`path`,{d:`M16 13h.01`,key:`wip0gl`}],[`path`,{d:`M8 17h.01`,key:`p3bg7i`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}],[`path`,{d:`M16 17h.01`,key:`ql8jdd`}]],w=c(`calendar-days`,C)})))()}function ee(e){return e===`month`?`month`:e===`year`?`year`:`day`}function E(e,t){return k.indexOf(e)>=k.indexOf(t)}function te(e,t){let n=ee(e);return E(n,t)?n:t}function D(e,t){return!e||!t?!1:e.start.getTime()===t.start.getTime()&&e.end.getTime()===t.end.getTime()}function ne(e,t,n){if(!e||!t||!n)return!1;let r=Math.min(t.start.getTime(),n.start.getTime()),i=Math.max(t.end.getTime(),n.end.getTime());return e.start.getTime()>=r&&e.end.getTime()<=i}function O({date:e,value:t,hoveredDate:n,selectsRange:r,selectionOptions:i}){let a=b(e,i),o=!r&&t instanceof Date?t:null,s=b(o,i);if(!r||!Array.isArray(t))return{selected:y(e,s),range:!1,rangeStart:!1,rangeEnd:!1};let[c,l]=t,u=b(c,i),d=b(l??(c?n:null),i),f=D(a,u),p=D(a,d);return{selected:!1,range:ne(a,u,d)&&!f&&!p,rangeStart:f,rangeEnd:p}}var k,re,ie;function A(){return(A=e((()=>{h(),k=[`day`,`month`,`year`],re=[`day`,`week`,`month`,`year`],ie=[`friday`,`saturday`,`sunday`]})))()}var ae,oe,se,ce,le,ue,de,fe,j,M,N,P,F,I,L,R,z;function B(){return(B=e((()=>{ae=`Dshr-j`,oe=`esetVt`,se=`i-LJYe`,ce=`XZsnCH`,le=`_2KDjTS`,ue=`o-freG`,de=`GcV08-`,fe=`UCrE-I`,j=`L2V3uq`,M=`Te9oCq`,N=`cUF2pQ`,P=`d1L5uw`,F=`LU0M9Y`,I=`MR3y5p`,L=`VDqDpm`,R=`CLR-7m`,z={dayView:ae,weekdays:oe,weekday:se,daysGrid:ce,week:le,day:ue,disabled:de,outsideMonth:fe,periodSelection:j,periodPreview:M,selected:N,range:P,rangeStart:F,rangeEnd:I,weekend:L,now:R}})))()}var V,H,pe,me,U;function he(){return(he=e((()=>{V=t(),h(),u(),B(),H=s(),pe=[`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`,`Вс`],me=new Intl.DateTimeFormat(`ru-RU`,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`}),U=({now:e,currentDate:t,value:n,onChange:r,minDate:i,maxDate:a,selectsRange:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,f]=(0,V.useState)(null),p={selectionMode:s,weekEndDay:c},h=(()=>{let e=t.getFullYear(),n=t.getMonth(),r=g(e,n,1),i=g(e,n+1,0),a=r.getDay()===0?6:r.getDay()-1,o=42-(a+i.getDate()),s=[],c=g(e,n,0).getDate();for(let t=a;t>0;--t)s.push(g(e,n-1,c-t+1));for(let t=1;t<=i.getDate();t+=1)s.push(g(e,n,t));for(let t=1;t<=o;t+=1)s.push(g(e,n+1,t));let l=[];for(let e=0;e<s.length;e+=7)l.push(s.slice(e,e+7));return l})(),v=o&&Array.isArray(n)?n[0]:null,x=o&&Array.isArray(n)?n[1]:null,S=b(o?null:n,p),C=b(u,p),w=x??(v?C?.end??null:null),T=s===`week`,ee=T&&(!o||!v),E=e=>{if(!o||!v||!w)return!1;let t=m(e).getTime(),n=v.getTime(),r=w.getTime();return t>=Math.min(n,r)&&t<=Math.max(n,r)},te=e=>!_(b(e,p),{minDate:i,maxDate:a}),D=(e,t)=>{t||(T&&f(e),!(!o||!v||x)&&(T||f(e)))};return(0,H.jsxs)(`div`,{className:z.dayView,children:[(0,H.jsx)(`div`,{className:z.weekdays,children:pe.map(e=>(0,H.jsx)(`div`,{className:z.weekday,children:e},e))}),(0,H.jsx)(`div`,{className:z.daysGrid,onMouseLeave:()=>{(T||!x)&&f(null)},children:h.map((n,i)=>(0,H.jsx)(`div`,{className:z.week,children:n.map((n,a)=>{let o=n.getMonth()===t.getMonth(),c=y(n,S),u=ee&&y(n,C),f=E(n),p=d(n,v),m=d(n,w),h=d(n,e),g=te(n);return(0,H.jsx)(`button`,{type:`button`,onClick:()=>!g&&r(n),onMouseEnter:()=>D(n,g),disabled:g,"data-ui":`calendar-day-button`,"data-action":`select-calendar-day`,className:l(z.day,{[z.outsideMonth]:!o,[z.periodSelection]:s===`week`,[z.periodPreview]:u&&!c,[z.selected]:c,[z.range]:f&&!p&&!m,[z.rangeStart]:p,[z.rangeEnd]:m,[z.disabled]:g,[z.weekend]:a>4,[z.now]:h}),"aria-label":me.format(n),"aria-pressed":c||f||p||m,children:n.getDate()},`${i}-${a}`)})},i))})]})},U.__docgenInfo={description:`Отображает сетку дней месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarDayView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var ge,_e,ve,ye,W,be,xe,Se,G;function Ce(){return(Ce=e((()=>{ge=`p5pRGW`,_e=`pUHpxD`,ve=`lwWv-z`,ye=`_8gn-3z`,W=`b57d-c`,be=`nGc5FO`,xe=`JLqjri`,Se=`UQMYwg`,G={monthView:ge,monthsGrid:_e,month:ve,disabled:ye,range:W,selected:be,rangeStart:xe,rangeEnd:Se}})))()}var we,K,Te,Ee,q;function De(){return(De=e((()=>{we=t(),h(),u(),A(),Ce(),K=s(),Te=new Intl.DateTimeFormat(`ru-RU`,{month:`short`}),Ee=new Intl.DateTimeFormat(`ru-RU`,{month:`long`,year:`numeric`}),q=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,we.useState)(null),f=Array.from({length:12},(e,t)=>t),p=e.getFullYear(),m={selectionMode:s,weekEndDay:c},h=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,y=e=>Te.format(g(p,e,1)),x=e=>{if(!r&&!i)return!1;let t=g(p,e,1),n=g(p,e+1,0,23,59,59);return o?!_(b(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},S=(e,t)=>{!a||!h||v||t||d(e)};return(0,K.jsx)(`div`,{className:G.monthView,children:(0,K.jsx)(`div`,{className:G.monthsGrid,onMouseLeave:()=>{v||d(null)},children:f.map(e=>{let r=x(e),i=g(p,e,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,K.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>S(i,r),disabled:r,"data-ui":`calendar-month-button`,"data-action":`select-calendar-month`,className:l(G.month,{[G.selected]:o.selected,[G.range]:o.range,[G.rangeStart]:o.rangeStart,[G.rangeEnd]:o.rangeEnd,[G.disabled]:r}),"aria-label":Ee.format(i),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:y(e)},e)})})})},q.__docgenInfo={description:`Отображает выбор месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarMonthView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var Oe,ke,J;function Ae(){return(Ae=e((()=>{Oe=`E35KE6`,ke=`L14Qef`,J={calendarView:Oe,calendarHeader:ke}})))()}var je,Me,Ne,Pe,Fe,Ie,Le,Re,Y;function ze(){return(ze=e((()=>{je=`_--xW7O`,Me=`-N-5Jk`,Ne=`hhY92S`,Pe=`IhX7jj`,Fe=`NWNpWj`,Ie=`d1SfcV`,Le=`Gkui4r`,Re=`_0dVZLW`,Y={yearView:je,yearsGrid:Me,year:Ne,disabled:Pe,range:Fe,selected:Ie,rangeStart:Le,rangeEnd:Re}})))()}var Be,X,Z;function Ve(){return(Ve=e((()=>{Be=t(),h(),u(),A(),ze(),X=s(),Z=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,Be.useState)(null),f=Math.floor(e.getFullYear()/12)*12,p=Array.from({length:12},(e,t)=>f+t),m={selectionMode:s,weekEndDay:c},h=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,y=e=>{if(!r&&!i)return!1;let t=g(e,0,1),n=g(e,11,31,23,59,59);return o?!_(b(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},x=(e,t)=>{!a||!h||v||t||d(e)};return(0,X.jsx)(`div`,{className:Y.yearView,children:(0,X.jsx)(`div`,{className:Y.yearsGrid,onMouseLeave:()=>{v||d(null)},children:p.map(e=>{let r=y(e),i=g(e,0,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,X.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>x(i,r),disabled:r,"data-ui":`calendar-year-button`,"data-action":`select-calendar-year`,className:l(Y.year,{[Y.selected]:o.selected,[Y.range]:o.range,[Y.rangeStart]:o.rangeStart,[Y.rangeEnd]:o.rangeEnd,[Y.disabled]:r}),"aria-label":e.toString(),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:e},e)})})})},Z.__docgenInfo={description:`Отображает выбор года в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarYearView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}function He({view:e,datePickerLevel:t,selectionMode:n=`day`,weekEndDay:i=`sunday`,onViewChange:o,...s}){let[c]=(0,Q.useState)(()=>m(new Date)),[l,u]=(0,Q.useState)(()=>s.selectsRange&&f(s.value)&&s.value[0]instanceof Date?s.value[0]:!s.selectsRange&&s.value instanceof Date?s.value:m(new Date)),d=s.currentDate??l,h={selectionMode:n,weekEndDay:i},g=e=>{let t=typeof e==`function`?e(d):e;s.currentDate===void 0&&u(t),s.onCurrentDateChange?.(t)},y=(0,Q.useEffectEvent)(e=>{if(s.selectsRange&&Array.isArray(e)&&e[0]instanceof Date){g(e[0]);return}!s.selectsRange&&e instanceof Date&&g(e)});(0,Q.useEffect)(()=>{y(s.value)},[s.value]);let x=()=>{if(e===`day`){g(e=>v(e,-1));return}if(e===`month`){g(e=>p(e,-1));return}g(e=>p(e,-12))},C=()=>{if(e===`day`){g(e=>v(e,1));return}if(e===`month`){g(e=>p(e,1));return}g(e=>p(e,12))};return(0,$.jsxs)(`div`,{className:J.calendarView,children:[(()=>{let t=``;if(e===`day`)t=d.toLocaleDateString(`ru-RU`,{month:`long`,year:`numeric`});else if(e===`month`)t=d.getFullYear().toString();else{let e=Math.floor(d.getFullYear()/12)*12;t=`${e} - ${e+11}`}return(0,$.jsxs)(`div`,{className:J.calendarHeader,children:[(0,$.jsx)(S,{icon:(0,$.jsx)(r,{}),onClick:x,variant:`ghost`,"aria-label":`Предыдущий`,"data-action":`calendar-previous`}),(0,$.jsx)(S,{onClick:()=>{e===`day`?o(`month`):e===`month`&&o(`year`)},variant:`ghost`,className:`flex1`,"data-ui":`calendar-view-switch-button`,"data-action":`calendar-switch-view`,children:t}),(0,$.jsx)(S,{icon:(0,$.jsx)(a,{}),onClick:C,variant:`ghost`,"aria-label":`Следующий`,"data-ui":`calendar-next-button`,"data-action":`calendar-next`})]})})(),(()=>{let r=e=>{let t=b(e,h);if(!(!t||!_(t,{minDate:s.minDate,maxDate:s.maxDate}))){if(s.selectsRange){let e=null,n=null;if(Array.isArray(s.value)&&([e,n]=s.value),!e||n){s.onChange([t.start,null]);return}let r=b(e,h);if(!r)return;if(t.start<r.start){s.onChange([t.start,r.end]);return}s.onChange([r.start,t.end]);return}s.onChange(t.start)}},a=e=>{if(g(e),n===`month`||!E(`day`,t)){r(e);return}o(`day`)},l=e=>{if(g(e),n===`year`||!E(`month`,t)){r(e);return}o(`month`)};switch(e){case`day`:return(0,$.jsx)(U,{now:c,currentDate:d,value:s.value,onChange:r,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectionMode:n,weekEndDay:i});case`month`:return(0,$.jsx)(q,{currentDate:d,value:s.value,onChange:a,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`month`||!E(`day`,t),selectionMode:n,weekEndDay:i});case`year`:return(0,$.jsx)(Z,{currentDate:d,value:s.value,onChange:l,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`year`||!E(`month`,t),selectionMode:n,weekEndDay:i});default:return null}})()]})}var Q,$;function Ue(){return(Ue=e((()=>{Q=t(),h(),n(),i(),x(),A(),he(),De(),Ae(),Ve(),$=s(),He.__docgenInfo={description:`Отображает календарь выбора даты в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarView`,props:{view:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},datePickerLevel:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},selectionMode:{required:!1,tsType:{name:`CalendarPeriodSelectionMode`},description:``,defaultValue:{value:`"day"`,computed:!1}},weekEndDay:{required:!1,tsType:{name:`CalendarWeekEndDay`},description:``,defaultValue:{value:`"sunday"`,computed:!1}},onViewChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(view: CalendarType) => void`,signature:{arguments:[{type:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},name:`view`}],return:{name:`void`}}},description:``},selectsRange:{required:!1,tsType:{name:`boolean`},description:``},value:{required:!0,tsType:{name:`union`,raw:`Date | NullableDateRange | null`,elements:[{name:`Date`},{name:`NullableDateRange`},{name:`null`}]},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(date: Date | NullableDateRange) => void`,signature:{arguments:[{type:{name:`union`,raw:`Date | NullableDateRange`,elements:[{name:`Date`},{name:`NullableDateRange`}]},name:`date`}],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},currentDate:{required:!1,tsType:{name:`Date`},description:``},onCurrentDateChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(date: Date) => void`,signature:{arguments:[{type:{name:`Date`},name:`date`}],return:{name:`void`}}},description:``}}}})))()}export{A as a,w as c,ie as i,T as l,Ue as n,E as o,re as r,te as s,He as t};
@@ -1 +0,0 @@
1
- .cgozWT{align-items:center;gap:var(--space-xs);display:flex}._1evcXl{width:var(--control-height);height:var(--control-height);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.lU3P-V{border-radius:var(--radius-xs);width:1.5em;height:1.5em}.uVSbSw+.PhkI5X{color:var(--ui-tone-fill)}.PhkI5X{width:1.5em;height:1.5em}.PhkI5X svg{fill:currentColor;stroke:none;width:1em;height:1em;display:block}
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-DaN-XFub.js";import{t as i}from"./react-dom-2o2phaJG.js";import{a,i as o}from"./utils-DUM89eIj.js";import{a as s,d as c,g as l,m as u,p as d,r as f}from"./floating-ui.react-DZ8IyUV4.js";import{a as p,i as m,n as h,r as g}from"./dom-B3G_GtJw.js";import{n as _}from"./error-BZrNlEUO.js";import{n as v,t as y}from"./ui.module-DoMIk8Oc.js";import{n as b,r as x,t as S}from"./react-KzpmXJc9.js";function C(e,t){if(e){if(typeof e==`function`){e(t);return}e.current=t}}function w(e,t){return n=>{e?.(n),!n.defaultPrevented&&t(n)}}function T(e,t){return n=>{e?.(n),!n.defaultPrevented&&t(n)}}function E(){return(E=e((()=>{})))()}function D(){let e=(0,O.useContext)(k);if(!e)throw _({hookName:`useMenuContext`,providerName:`MenuRoot`});return e}var O,k;function A(){return(A=e((()=>{O=n(),k=(0,O.createContext)(null)})))()}var j,M;function ee(){return(ee=e((()=>{j=n(),A(),M=({children:e})=>{let{mode:t,open:n,registerTriggerElement:r,onTriggerContextMenu:i,onTriggerKeyDown:a}=D();if(t!==`contextmenu`)throw Error(`ContextMenu.Trigger must be used within <ContextMenu>`);return(0,j.cloneElement)(e,{ref:t=>{let n=e.props.ref;C(n,t),r(t)},"aria-haspopup":`menu`,"aria-expanded":n,onContextMenu:w(e.props.onContextMenu,i),onKeyDown:T(e.props.onKeyDown,a)})},M.__docgenInfo={description:``,methods:[],displayName:`ContextMenuTrigger`,props:{children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<HTMLElement>`,elements:[{name:`HTMLElement`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<HTMLElement> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<HTMLElement>`,elements:[{name:`HTMLElement`}],required:!1}}]}}]}]},description:``}}}})))()}var te,ne,re,ie,ae,oe,se,ce,le,ue,de,fe,pe,me,he,N;function P(){return(P=e((()=>{te=`nPfxbm`,ne=`T8GF31`,re=`XM9raj`,ie=`JY0XKk`,ae=`Jj7pGe`,oe=`o7v3XA`,se=`f9wo9l`,ce=`_9IPwGF`,le=`CAmmlz`,ue=`_5KEBWR`,de=`L28onY`,fe=`Pg-1Y3`,pe=`ObIrS2`,me=`_0jf5vt`,he=`zKwsQF`,N={menuPanel:te,menuScroller:ne,menuItem:re,menuItemIcon:ie,menuItemText:ae,menuItemHotKey:oe,radialPanel:se,radialRing:ce,radialCenterButton:le,radialCenterButtonText:ue,radialItems:de,radialItemSlot:fe,radialItem:pe,radialItemIcon:me,radialItemText:he}})))()}var F,ge,I,L;function R(){return(R=e((()=>{F=t(n(),1),g(),o(),S(),ge=i(),P(),A(),I=r(),L=({children:e,className:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:i=!1,restoreFocus:o=!0})=>{let{open:s,floatingStyles:c,floatingRef:l,triggerRef:u,setFloating:d,closeMenu:f}=D(),g=(0,F.useCallback)(()=>{let e=l.current;return e?Array.from(e.querySelectorAll(`[data-menu-item="true"]:not([data-disabled="true"])`)):[]},[l]);p({active:s,initialFocus:e=>g()[0]??e,restoreFocus:o,restoreFocusTarget:()=>u.current,containerRef:l}),h({active:s,enabled:r,onDismiss:f,containerRef:l});let _=(0,F.useCallback)(()=>{!s||i||n&&f()},[s,i,n,f]);m([l,u],_);let v=(0,F.useCallback)(e=>{let t=g();if(t.length===0)return;let n=document.activeElement,r=n?t.indexOf(n):-1;if(e.key===`ArrowDown`){e.preventDefault(),t[r>=0?(r+1)%t.length:0]?.focus();return}if(e.key===`ArrowUp`){e.preventDefault(),t[r>=0?(r-1+t.length)%t.length:t.length-1]?.focus();return}if(e.key===`Home`){e.preventDefault(),t[0]?.focus();return}e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus())},[g]);return typeof document>`u`?null:(0,ge.createPortal)((0,I.jsx)(x,{children:s&&(0,I.jsx)(b.div,{ref:d,style:c,role:`menu`,tabIndex:-1,className:a(N.menuPanel,t),onKeyDown:v,initial:{opacity:0,scale:.96,y:-2},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.96,y:-2},transition:{duration:.14,ease:`easeOut`},children:(0,I.jsx)(`div`,{className:a(N.menuScroller,`scrollable`),children:typeof e==`function`?e({closeMenu:f}):e})})}),document.body)}})))()}var _e,z;function B(){return(B=e((()=>{n(),o(),y(),_e=r(),z=({children:e,className:t})=>(0,_e.jsx)(`div`,{className:a(v.uiPopupGroupLabel,t),children:e}),z.__docgenInfo={description:``,methods:[],displayName:`MenuGroupLabel`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}var ve,V,H;function U(){return(U=e((()=>{ve=t(n(),1),o(),y(),P(),A(),V=r(),H=({children:e,icon:t,hotKey:n,className:r,disabled:i,href:o,target:s,rel:c,closeOnSelect:l=!0,onSelect:u})=>{let{closeMenu:d}=D(),f=(0,ve.useCallback)(e=>{if(i){e.preventDefault(),e.stopPropagation();return}u?.(e),!e.defaultPrevented&&l&&d()},[i,u,l,d]),p=a(v.uiPopupOption,N.menuItem,r);return o?(0,V.jsxs)(`a`,{href:o,target:s,rel:c,role:`menuitem`,tabIndex:-1,"aria-disabled":i,"data-menu-item":`true`,"data-disabled":i?`true`:void 0,"data-ui":`context-menu-item`,"data-action":`select-context-menu-item`,className:p,onClick:f,children:[t&&(0,V.jsx)(`span`,{className:a(v.uiPopupOptionIcon,N.menuItemIcon),children:t}),(0,V.jsx)(`span`,{className:a(v.uiOptionText,N.menuItemText),children:e}),n&&(0,V.jsx)(`kbd`,{className:a(v.keyboard,N.menuItemHotKey),children:n})]}):(0,V.jsxs)(`button`,{type:`button`,role:`menuitem`,tabIndex:-1,disabled:i,"data-menu-item":`true`,"data-disabled":i?`true`:void 0,"data-ui":`context-menu-item`,"data-action":`select-context-menu-item`,className:p,onClick:f,children:[t&&(0,V.jsx)(`span`,{className:a(v.uiPopupOptionIcon,N.menuItemIcon),children:t}),(0,V.jsx)(`span`,{className:a(v.uiOptionText,N.menuItemText),children:e}),n&&(0,V.jsx)(`kbd`,{className:a(v.keyboard,N.menuItemHotKey),children:n})]})},H.__docgenInfo={description:``,methods:[],displayName:`MenuItem`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},icon:{required:!1,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},hotKey:{required:!1,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},href:{required:!1,tsType:{name:`string`},description:``},target:{required:!1,tsType:{name:`string`},description:``},rel:{required:!1,tsType:{name:`string`},description:``},closeOnSelect:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},onSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(event: React.MouseEvent<HTMLElement>) => void`,signature:{arguments:[{type:{name:`ReactMouseEvent`,raw:`React.MouseEvent<HTMLElement>`,elements:[{name:`HTMLElement`}]},name:`event`}],return:{name:`void`}}},description:``}}}})))()}function ye(e){return{x:e.clientX,y:e.clientY}}function be(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}function xe(e,t){return{contextElement:t??void 0,getBoundingClientRect:()=>({x:e.x,y:e.y,top:e.y,left:e.x,bottom:e.y,right:e.x,width:0,height:0,toJSON:()=>{}})}}function Se(e){return{open:!0,source:e.source,anchor:e.anchor}}function Ce(e){return!e.open&&e.anchor===null?e:{open:!1,source:null,anchor:null}}var we;function Te(){return(Te=e((()=>{we={open:!1,source:null,anchor:null}})))()}var W,Ee,G;function K(){return(K=e((()=>{W=t(n(),1),f(),Te(),A(),Ee=r(),G=({children:e,mode:t,placement:n=t===`click`?`bottom-start`:`right-start`,open:r,defaultOpen:i,onOpenChange:a})=>{let[o,f]=(0,W.useState)(we),[p,m]=(0,W.useState)(i??!1),h=r!==void 0,g=h?r:p,_=(0,W.useRef)(null),{refs:v,floatingStyles:y,update:b}=s({placement:n,strategy:t===`contextmenu`?`fixed`:`absolute`,transform:!1,middleware:[d(6),c({padding:8}),u({padding:8})],whileElementsMounted:l}),x=(0,W.useCallback)(e=>{h||m(e),a?.(e),e||f(e=>Ce(e))},[h,a]),S=(0,W.useCallback)(()=>{x(!1)},[x]);(0,W.useEffect)(()=>{g||f(e=>Ce(e))},[g]);let C=(0,W.useCallback)((e,t)=>{v.setReference(e),f(Se({source:t,anchor:{type:`element`,element:e}})),x(!0)},[v,x]),w=(0,W.useCallback)((e,t,n)=>{v.setReference(xe(e,n)),f(Se({source:t,anchor:{type:`point`,point:e,contextElement:n}})),x(!0),b()},[v,x,b]),T=(0,W.useCallback)(e=>{_.current=e,t===`click`&&v.setReference(e)},[t,v]),E=(0,W.useCallback)(e=>{if(t!==`click`)return;let n=e.currentTarget;if(g&&o.anchor?.type===`element`&&o.anchor.element===n){S();return}C(n,`click`)},[t,g,o.anchor,S,C]),D=(0,W.useCallback)(e=>{if(t!==`contextmenu`)return;e.preventDefault();let n=e.currentTarget,r=ye(e);w(r,`contextmenu`,n)},[t,w]),O=(0,W.useCallback)(e=>{if(!(e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`))return;e.preventDefault();let n=e.currentTarget;if(t===`click`){C(n,`keyboard`);return}let r=be(n.getBoundingClientRect());w(r,`keyboard`,n)},[t,C,w]),A=g&&o.anchor!==null,j=(0,W.useMemo)(()=>o.anchor?o.anchor.type===`point`?o.anchor.point:be(o.anchor.element.getBoundingClientRect()):null,[o.anchor]),M=(0,W.useMemo)(()=>({mode:t,open:A,openSource:o.source,anchorPoint:j,floatingStyles:y,floatingRef:v.floating,triggerRef:_,setFloating:v.setFloating,registerTriggerElement:T,onTriggerClick:E,onTriggerContextMenu:D,onTriggerKeyDown:O,closeMenu:S}),[t,A,o.source,j,y,v.floating,v.setFloating,T,E,D,O,S]);return(0,Ee.jsx)(k.Provider,{value:M,children:e})},G.__docgenInfo={description:``,methods:[],displayName:`MenuRoot`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},mode:{required:!0,tsType:{name:`union`,raw:`"click" | "contextmenu"`,elements:[{name:`literal`,value:`"click"`},{name:`literal`,value:`"contextmenu"`}]},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`mode === "click" ? "bottom-start" : "right-start"`,computed:!1}},open:{required:!1,tsType:{name:`boolean`},description:``},defaultOpen:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``}}}})))()}var De,q;function J(){return(J=e((()=>{n(),o(),y(),De=r(),q=({className:e})=>(0,De.jsx)(`div`,{role:`separator`,className:a(v.uiPopupOptionSeparator,e)}),q.__docgenInfo={description:``,methods:[],displayName:`MenuSeparator`,props:{className:{required:!1,tsType:{name:`string`},description:``}}}})))()}function Oe(e,t,n){return n<t?t:Math.min(Math.max(e,t),n)}var Y,ke,X,Ae;function je(){return(je=e((()=>{Y=t(n(),1),g(),o(),S(),ke=i(),P(),A(),X=r(),Ae=({children:e,className:t,closeOnOutside:n=!0,closeOnEscape:r=!0,disableOutsideClick:i=!1,restoreFocus:o=!0,radius:s=76,itemSize:c=64,closeLabel:l=`Закрыть`})=>{let{open:u,anchorPoint:d,floatingRef:f,triggerRef:g,setFloating:_,closeMenu:v}=D(),y=typeof e==`function`?e({closeMenu:v}):e,S=(0,Y.useMemo)(()=>Y.Children.toArray(y),[y]),C=S.length,w=s*2+c,T=(0,Y.useMemo)(()=>{if(typeof window>`u`||!d)return null;let e=w/2+8;return{x:Oe(d.x,e,window.innerWidth-e),y:Oe(d.y,e,window.innerHeight-e)}},[d,w]),E=(0,Y.useCallback)(()=>{let e=f.current;return e?Array.from(e.querySelectorAll(`[data-menu-item="true"]:not([data-disabled="true"])`)):[]},[f]);p({active:u,initialFocus:e=>E()[0]??e,restoreFocus:o,restoreFocusTarget:()=>g.current,containerRef:f}),(0,Y.useEffect)(()=>{if(!u||!d)return;let e=0;return e=window.requestAnimationFrame(()=>{(E()[0]??f.current)?.focus()}),()=>window.cancelAnimationFrame(e)},[u,d,E,f]),h({active:u,enabled:r,onDismiss:v,containerRef:f});let O=(0,Y.useCallback)(()=>{!u||i||n&&v()},[u,i,n,v]);m([f,g],O);let k=(0,Y.useCallback)(e=>{let t=E();if(t.length===0)return;let n=document.activeElement,r=n?t.indexOf(n):-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`){e.preventDefault(),t[r>=0?(r+1)%t.length:0]?.focus();return}if(e.key===`ArrowLeft`||e.key===`ArrowUp`){e.preventDefault(),t[r>=0?(r-1+t.length)%t.length:t.length-1]?.focus();return}if(e.key===`Home`){e.preventDefault(),t[0]?.focus();return}e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus())},[E]);return typeof document>`u`?null:(0,ke.createPortal)((0,X.jsx)(x,{children:u&&T&&(0,X.jsxs)(b.div,{ref:_,style:{"--radial-panel-size":`${w}px`,"--radial-radius":`${s}px`,"--radial-item-size":`${c}px`,left:T.x-w/2,top:T.y-w/2,transformOrigin:`center`},role:`menu`,tabIndex:-1,className:a(N.radialPanel,t),onKeyDown:k,initial:{opacity:0,scale:.78},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.78},transition:{duration:.16,ease:`easeOut`},children:[(0,X.jsx)(`div`,{className:N.radialRing,"aria-hidden":`true`}),(0,X.jsx)(`button`,{type:`button`,role:`menuitem`,className:N.radialCenterButton,"aria-label":l,"data-menu-item":`true`,"data-radial-close":`true`,onClick:v,children:(0,X.jsx)(`span`,{className:N.radialCenterButtonText,children:l})}),(0,X.jsx)(`div`,{className:N.radialItems,children:S.map((e,t)=>{let n=C>0?-90+360/C*t:-90;return(0,X.jsx)(`div`,{className:N.radialItemSlot,style:{"--radial-item-angle":`${n}deg`},children:e},t)})})]})}),document.body)}})))()}var Me,Z,Q;function Ne(){return(Ne=e((()=>{Me=t(n(),1),o(),P(),A(),Z=r(),Q=({children:e,icon:t,className:n,disabled:r,closeOnSelect:i=!0,onSelect:o})=>{let{closeMenu:s}=D(),c=(0,Me.useCallback)(e=>{if(r){e.preventDefault(),e.stopPropagation();return}o?.(e),!e.defaultPrevented&&i&&s()},[r,o,i,s]);return(0,Z.jsxs)(`button`,{type:`button`,role:`menuitem`,tabIndex:-1,disabled:r,"aria-disabled":r,"data-menu-item":`true`,"data-disabled":r?`true`:void 0,"data-ui":`radial-menu-item`,"data-action":`select-radial-menu-item`,className:a(N.radialItem,n),onClick:c,children:[t&&(0,Z.jsx)(`span`,{className:N.radialItemIcon,children:t}),(0,Z.jsx)(`span`,{className:N.radialItemText,children:e})]})},Q.__docgenInfo={description:``,methods:[],displayName:`RadialMenuItem`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},icon:{required:!1,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},closeOnSelect:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},onSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(event: React.MouseEvent<HTMLButtonElement>) => void`,signature:{arguments:[{type:{name:`ReactMouseEvent`,raw:`React.MouseEvent<HTMLButtonElement>`,elements:[{name:`HTMLButtonElement`}]},name:`event`}],return:{name:`void`}}},description:``}}}})))()}var Pe,$,Fe;function Ie(){return(Ie=e((()=>{n(),ee(),R(),B(),U(),K(),J(),je(),Ne(),Pe=r(),$=({children:e,placement:t,open:n,defaultOpen:r,onOpenChange:i})=>(0,Pe.jsx)(G,{mode:`contextmenu`,placement:t,open:n,defaultOpen:r,onOpenChange:i,children:e}),Fe=Object.assign($,{Trigger:M,Content:L,RadialContent:Ae,Item:H,RadialItem:Q,Separator:q,GroupLabel:z}),$.__docgenInfo={description:``,methods:[],displayName:`ContextMenuRoot`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``},open:{required:!1,tsType:{name:`boolean`},description:``},defaultOpen:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``}}}})))()}export{w as _,G as a,U as c,L as d,R as f,T as g,C as h,J as i,z as l,D as m,Ie as n,K as o,A as p,q as r,H as s,Fe as t,B as u,E as v};
@@ -1,90 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./settings-2-jtcbbWm5.js";import{n as a,t as o}from"./trash-2-DrVfT0z5.js";import{i as s,n as c,r as l}from"./iframe-DaN-XFub.js";import{_ as u,a as d,c as f,d as p,f as ee,g as m,h,i as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as te}from"./ContextMenu-Sv4wfyS3.js";var T,E;function D(){return(D=e((()=>{s(),T=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]],E=l(`copy`,T)})))()}var O,k;function A(){return(A=e((()=>{s(),O=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]],k=l(`eye`,O)})))()}var j,M;function N(){return(N=e((()=>{s(),j=[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]],M=l(`pencil-line`,j)})))()}var P,F;function I(){return(I=e((()=>{s(),P=[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]],F=l(`pin`,P)})))()}var L,R;function z(){return(z=e((()=>{L=n(),x(),R=({children:e})=>{let{mode:t,open:n,registerTriggerElement:r,onTriggerClick:i,onTriggerKeyDown:a}=v();if(t!==`click`)throw Error(`DropdownMenu.Trigger must be used within <DropdownMenu>`);return(0,L.cloneElement)(e,{ref:t=>{let n=e.props.ref;h(n,t),r(t)},"aria-haspopup":`menu`,"aria-expanded":n,onClick:u(e.props.onClick,i),onKeyDown:m(e.props.onKeyDown,a)})},R.__docgenInfo={description:``,methods:[],displayName:`DropdownMenuTrigger`,props:{children:{required:!0,tsType:{name:`ReactReactElement`,raw:`React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>`,elements:[{name:`intersection`,raw:`React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }`,elements:[{name:`ReactHTMLAttributes`,raw:`React.HTMLAttributes<HTMLElement>`,elements:[{name:`HTMLElement`}]},{name:`signature`,type:`object`,raw:`{ ref?: React.Ref<HTMLElement> }`,signature:{properties:[{key:`ref`,value:{name:`ReactRef`,raw:`React.Ref<HTMLElement>`,elements:[{name:`HTMLElement`}],required:!1}}]}}]}]},description:``}}}})))()}var B,V,H;function U(){return(U=e((()=>{n(),z(),ee(),te(),f(),b(),g(),B=c(),V=({children:e,placement:t,open:n,defaultOpen:r,onOpenChange:i})=>(0,B.jsx)(d,{mode:`click`,placement:t,open:n,defaultOpen:r,onOpenChange:i,children:e}),H=Object.assign(V,{Trigger:R,Content:p,Item:C,Separator:S,GroupLabel:_}),V.__docgenInfo={description:``,methods:[],displayName:`DropdownMenuRoot`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``},open:{required:!1,tsType:{name:`boolean`},description:``},defaultOpen:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``}}}})))()}var W=t({ContextMenuBasic:()=>Y,ContextMenuRadial:()=>X,ControlledDropdown:()=>Z,DropdownMenuBasic:()=>J,__namedExportsOrder:()=>Q,default:()=>q}),G,K,q,J,Y,X,Z,Q;function $(){return($=e((()=>{G=n(),D(),A(),N(),I(),r(),a(),y(),U(),K=c(),q={title:`Shared/UI/ContextMenu`,parameters:{atomicCanvas:!0,layout:`centered`}},J={name:`DropdownMenu / Базовый`,render:()=>(0,K.jsxs)(H,{children:[(0,K.jsx)(H.Trigger,{children:(0,K.jsx)(`button`,{type:`button`,children:`Действия`})}),(0,K.jsxs)(H.Content,{children:[(0,K.jsx)(H.GroupLabel,{children:`Файл`}),(0,K.jsx)(H.Item,{icon:(0,K.jsx)(M,{size:14}),hotKey:`Ctrl+E`,children:`Редактировать`}),(0,K.jsx)(H.Item,{icon:(0,K.jsx)(E,{size:14}),hotKey:`Ctrl+C`,children:`Копировать`}),(0,K.jsx)(H.Separator,{}),(0,K.jsx)(H.Item,{icon:(0,K.jsx)(o,{size:14}),hotKey:`Del`,children:`Удалить`})]})]})},Y={name:`ContextMenu / По правому клику`,render:()=>(0,K.jsxs)(w,{children:[(0,K.jsx)(w.Trigger,{children:(0,K.jsxs)(`div`,{style:{width:300,height:180,display:`grid`,placeItems:`center`,border:`1px dashed var(--border-1)`,borderRadius:`var(--radius-sm)`,background:`var(--surface-1)`,padding:16,textAlign:`center`},children:[`Нажмите правой кнопкой мыши`,(0,K.jsx)(`br`,{}),`или Shift+F10`]})}),(0,K.jsxs)(w.Content,{children:[(0,K.jsx)(w.Item,{icon:(0,K.jsx)(M,{size:14}),children:`Переименовать`}),(0,K.jsx)(w.Item,{icon:(0,K.jsx)(E,{size:14}),children:`Дублировать`}),(0,K.jsx)(w.Separator,{}),(0,K.jsx)(w.Item,{icon:(0,K.jsx)(o,{size:14}),children:`Переместить в корзину`})]})]})},X={name:`ContextMenu / Радиальное меню`,render:()=>(0,K.jsxs)(w,{children:[(0,K.jsx)(w.Trigger,{children:(0,K.jsxs)(`div`,{style:{width:360,height:220,display:`grid`,placeItems:`center`,border:`1px dashed var(--border-1)`,borderRadius:`var(--radius-sm)`,background:`var(--surface-1)`,padding:16,textAlign:`center`},children:[`Нажмите правой кнопкой мыши`,(0,K.jsx)(`br`,{}),`или Shift+F10`]})}),(0,K.jsxs)(w.RadialContent,{children:[(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(M,{}),children:`Править`}),(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(E,{}),children:`Копия`}),(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(F,{}),children:`Закрепить`}),(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(k,{}),children:`Просмотр`}),(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(i,{}),children:`Опции`}),(0,K.jsx)(w.RadialItem,{icon:(0,K.jsx)(o,{}),children:`Удалить`})]})]})},Z={name:`DropdownMenu / Контролируемый`,render:()=>{let[e,t]=(0,G.useState)(!1);return(0,K.jsxs)(H,{open:e,onOpenChange:t,children:[(0,K.jsx)(H.Trigger,{children:(0,K.jsx)(`button`,{type:`button`,children:e?`Скрыть меню`:`Показать меню`})}),(0,K.jsx)(H.Content,{children:(0,K.jsx)(H.Item,{onSelect:()=>t(!1),children:`Закрыть`})})]})}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
2
- name: "DropdownMenu / Базовый",
3
- render: () => <DropdownMenu>
4
- <DropdownMenu.Trigger>
5
- <button type="button">Действия</button>
6
- </DropdownMenu.Trigger>
7
- <DropdownMenu.Content>
8
- <DropdownMenu.GroupLabel>Файл</DropdownMenu.GroupLabel>
9
- <DropdownMenu.Item icon={<PencilLine size={14} />} hotKey="Ctrl+E">
10
- Редактировать
11
- </DropdownMenu.Item>
12
- <DropdownMenu.Item icon={<Copy size={14} />} hotKey="Ctrl+C">
13
- Копировать
14
- </DropdownMenu.Item>
15
- <DropdownMenu.Separator />
16
- <DropdownMenu.Item icon={<Trash2 size={14} />} hotKey="Del">
17
- Удалить
18
- </DropdownMenu.Item>
19
- </DropdownMenu.Content>
20
- </DropdownMenu>
21
- }`,...J.parameters?.docs?.source}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
22
- name: "ContextMenu / По правому клику",
23
- render: () => <ContextMenu>
24
- <ContextMenu.Trigger>
25
- <div style={{
26
- width: 300,
27
- height: 180,
28
- display: "grid",
29
- placeItems: "center",
30
- border: "1px dashed var(--border-1)",
31
- borderRadius: "var(--radius-sm)",
32
- background: "var(--surface-1)",
33
- padding: 16,
34
- textAlign: "center"
35
- }}>
36
- Нажмите правой кнопкой мыши
37
- <br />
38
- или Shift+F10
39
- </div>
40
- </ContextMenu.Trigger>
41
- <ContextMenu.Content>
42
- <ContextMenu.Item icon={<PencilLine size={14} />}>Переименовать</ContextMenu.Item>
43
- <ContextMenu.Item icon={<Copy size={14} />}>Дублировать</ContextMenu.Item>
44
- <ContextMenu.Separator />
45
- <ContextMenu.Item icon={<Trash2 size={14} />}>Переместить в корзину</ContextMenu.Item>
46
- </ContextMenu.Content>
47
- </ContextMenu>
48
- }`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
49
- name: "ContextMenu / Радиальное меню",
50
- render: () => <ContextMenu>
51
- <ContextMenu.Trigger>
52
- <div style={{
53
- width: 360,
54
- height: 220,
55
- display: "grid",
56
- placeItems: "center",
57
- border: "1px dashed var(--border-1)",
58
- borderRadius: "var(--radius-sm)",
59
- background: "var(--surface-1)",
60
- padding: 16,
61
- textAlign: "center"
62
- }}>
63
- Нажмите правой кнопкой мыши
64
- <br />
65
- или Shift+F10
66
- </div>
67
- </ContextMenu.Trigger>
68
- <ContextMenu.RadialContent>
69
- <ContextMenu.RadialItem icon={<PencilLine />}>Править</ContextMenu.RadialItem>
70
- <ContextMenu.RadialItem icon={<Copy />}>Копия</ContextMenu.RadialItem>
71
- <ContextMenu.RadialItem icon={<Pin />}>Закрепить</ContextMenu.RadialItem>
72
- <ContextMenu.RadialItem icon={<Eye />}>Просмотр</ContextMenu.RadialItem>
73
- <ContextMenu.RadialItem icon={<Settings2 />}>Опции</ContextMenu.RadialItem>
74
- <ContextMenu.RadialItem icon={<Trash2 />}>Удалить</ContextMenu.RadialItem>
75
- </ContextMenu.RadialContent>
76
- </ContextMenu>
77
- }`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
78
- name: "DropdownMenu / Контролируемый",
79
- render: () => {
80
- const [open, setOpen] = useState(false);
81
- return <DropdownMenu open={open} onOpenChange={setOpen}>
82
- <DropdownMenu.Trigger>
83
- <button type="button">{open ? "Скрыть меню" : "Показать меню"}</button>
84
- </DropdownMenu.Trigger>
85
- <DropdownMenu.Content>
86
- <DropdownMenu.Item onSelect={() => setOpen(false)}>Закрыть</DropdownMenu.Item>
87
- </DropdownMenu.Content>
88
- </DropdownMenu>;
89
- }
90
- }`,...Z.parameters?.docs?.source}}},Q=[`DropdownMenuBasic`,`ContextMenuBasic`,`ContextMenuRadial`,`ControlledDropdown`]})))()}export{$ as a,J as i,W as n,Z as r,Y as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{a as n,c as r,l as i,n as a,o,r as s,s as c,t as l}from"./CalendarView-CqKlnF8k.js";import{n as ee}from"./iframe-DaN-XFub.js";import{S as u,b as d,d as f,f as p,m,p as h,v as te,x as g}from"./odata-service-DnPlNGpU-Bpd4Zh9L.js";import{a as _,h as v,x as y}from"./formatters--mhLir82-v41eaI4a.js";import{n as b,t as x}from"./Popover-D6gSyjaW.js";import{n as S,t as ne}from"./Button-mjF9HSg0.js";import{a as re,c as C}from"./Input-Co--DMHY.js";import{n as w,t as ie}from"./RadioGroup-DNqu6WaC.js";function T(e){return e.selectionMode===`day`||e.selectionMode===`week`?`day`:e.selectionMode===`month`||e.selectionMode===`year`?e.selectionMode:e.datePickerLevel??`day`}function E(e){return{selectionMode:e?.selectionMode,weekEndDay:e?.weekEndDay}}function D(e,t){return typeof e==`string`||e===void 0?{datePreset:e,datePickerLevel:t}:t&&e.datePickerLevel===void 0?{...e,datePickerLevel:t}:e}function O(e){let t=p(e,V);return h(t)?t:V}function k(e){return e.datePreset===void 0?e.dateFormat:O(e.datePreset)}function A(e){return e.datePreset===void 0?u(e.dateFormat,U):O(e.datePreset)}function j(e,t){return g(e,k(t),{defaultFormat:V,precision:T(t),referenceDate:t.referenceDate})?.date??null}function M(e,t){return y(e,E(t))?.start??null}function N(e,t){if(!_(e))return null;let[n,r]=e;return[M(n,t),P(r,t)]}function P(e,t){return y(e,E(t))?.end??null}function F(e){return e?.getTime()??null}function ae(e,t,n){return F(M(e,n))===F(M(t,n))}function oe(e,t,n){let r=N(e,n),i=N(t,n);return F(r?.[0]??null)===F(i?.[0]??null)&&F(r?.[1]??null)===F(i?.[1]??null)}function I(e,t,n){if(!e)return``;let r=D(t,n),i=y(e,E(r));return r.selectionMode===`week`&&i?m(i.start,i.end,A(r),{precision:T(r)}):f(e,A(r),{precision:T(r)})}function se(e,t,n){if(!_(e))return``;let r=D(t,n),[i,a]=e;return i&&a?m(i,a,A(r),{precision:T(r)}):i?`${f(i,A(r),{precision:T(r)})}${H}`:``}function L(e,t,n){return _(e)?se(e,t,n):I(e,t,n)}function R(e,t,n){let r=D(t,n);return M(j(r.selectionMode===`week`?e.split(H)[0]??``:e,r),r)}function z(e,t,n){let r=D(t,n),[i=``,a=``]=e.split(H);return[R(i,r),B(a,r)]}function B(e,t,n){let r=D(t,n);return P(j(e,r),r)}var V,H,U;function W(){return(W=e((()=>{d(),v(),V=te.date,H=` - `,U=Object.freeze({defaultFormat:V,patternPresetName:`__date_input__`})})))()}function ce(e){return _(e)?e[0]??e[1]??void 0:e??void 0}var G,K;function q(){return(q=e((()=>{G=t(),v(),W(),K=e=>{let t=(0,G.useMemo)(()=>{let t={selectionMode:e.selectionMode,weekEndDay:e.weekEndDay};return e.selectsRange?N(e.value,t):M(e.value,t)},[e.selectsRange,e.selectionMode,e.value,e.weekEndDay]),[n,r]=(0,G.useState)(t),i=(0,G.useMemo)(()=>({datePreset:e.datePreset,dateFormat:e.dateFormat,datePickerLevel:e.datePickerLevel,selectionMode:e.selectionMode,weekEndDay:e.weekEndDay}),[e.dateFormat,e.datePickerLevel,e.datePreset,e.selectionMode,e.weekEndDay]),[a,o]=(0,G.useState)(()=>L(t,i)),s=(0,G.useMemo)(()=>{if(e.selectsRange){let t=N(e.value,i);return`${t?.[0]?.getTime()??`null`}:${t?.[1]?.getTime()??`null`}`}let t=M(e.value,i);return String(t?.getTime()??`null`)},[i,e.selectsRange,e.value]),c=e=>L(e,i),l=(0,G.useEffectEvent)(t=>{if(e.selectsRange){let e=N(t,i),n=c(e);r(t=>{let n=t;return(n?.[0]?.getTime()??null)===(e?.[0]?.getTime()??null)&&(n?.[1]?.getTime()??null)===(e?.[1]?.getTime()??null)?t:e}),o(e=>e===n?e:n);return}let n=M(t,i),a=c(n);r(e=>(e?.getTime()??null)===(n?.getTime()??null)?e:n),o(e=>e===a?e:a)});return(0,G.useEffect)(()=>{l(e.value)},[e.dateFormat,e.datePickerLevel,e.datePreset,e.selectsRange,e.selectionMode,e.value,e.weekEndDay,s]),{inputValue:a,setInputValue:o,selectedDate:n,setSelectedDate:r,handleSelect:t=>{let[n,a]=Array.isArray(t)?t:[t,null];if(e.selectsRange){let t=M(n,i),s=P(a,i);if(t&&s){if(s<t){let t=[M(a,i),P(n,i)];r(t),o(c(t)),e.onChange(t)}else{let n=[t,s];r(n),o(c(n)),e.onChange(n)}return!0}let l=[t,null];return r(l),o(c(l)),!1}let s=M(n,i);return r(s),o(c(s)),e.onChange(s),!0},formatDate:c,parseDate:t=>{let r={...i,referenceDate:ce(n)};return e.selectsRange?z(t,r):R(t,r)}}}})))()}var J,Y,X;function le(){return(le=e((()=>{J=`HR4pgo`,Y=`-tM-kj`,X={calendarButton:J,selectionModeControl:Y}})))()}function ue(e,t){let n=new Set(e?.length?e:s);return n.add(t),s.filter(e=>n.has(e))}function Z({placeholder:e,disabled:t,error:n,onClearError:i,minDate:a,maxDate:s,datePickerLevel:ee,selectionMode:u,weekEndDay:d=`sunday`,allowSelectionModeChange:f,selectionModeOptions:p,onSelectionModeChange:m,...h}){let[te,g]=(0,Q.useState)(!1),[v,y]=(0,Q.useState)(u??`day`),b=u??v,S=ee??`day`,C=c(b,S),[w,T]=(0,Q.useState)(()=>({view:C,selectionMode:b,minDatePickerLevel:S})),E=w.selectionMode===b&&w.minDatePickerLevel===S&&o(w.view,S)?w.view:C,D=(0,Q.useRef)(h.value),O={selectionMode:b,weekEndDay:d},{inputValue:k,setInputValue:A,selectedDate:j,setSelectedDate:M,handleSelect:N,formatDate:P,parseDate:F}=K({...h,datePickerLevel:S,selectionMode:b,weekEndDay:d}),I=h.selectsRange?h.onChange:void 0,se=(0,Q.useCallback)(e=>{o(e,S)&&T({view:e,selectionMode:b,minDatePickerLevel:S})},[S,b]);(0,Q.useEffect)(()=>{D.current=h.value},[h.value]);let L=()=>{if(k){let e=F(k);if(e){if(A(P(e)),h.selectsRange&&_(e)){if(oe(e,_(j)?j:null,O))return;M(e),h.onChange(e)}else if(!h.selectsRange&&e instanceof Date){if(ae(e,j instanceof Date?j:null,O))return;M(e),h.onChange(e)}}}},R=e=>{e.key===`Enter`&&(e.preventDefault(),L())},z=(0,Q.useCallback)(e=>{N(e)&&g(!1)},[N]),B=(0,Q.useCallback)(e=>{u===void 0&&y(e),m?.(e),T({view:c(e,S),selectionMode:e,minDatePickerLevel:S})},[u,S,m]),V=(0,Q.useCallback)(()=>{if(I){let[,e]=_(j)?j:[null,null];if(!e){let e=D.current,t=Array.isArray(e)?e:null,n=t?.[0]??null,r=t?.[1]??null;if(n&&r){let e=[n,r];M(e),A(P(e)),I(e)}else M([null,null]),A(``),I([null,null])}}},[I,j,M,A,P]),H=ue(p,b),U=f&&H.length>1;return(0,$.jsxs)(x,{open:te,onOpenChange:e=>{g(e),e||V()},children:[(0,$.jsx)(re,{label:h.label,description:h.description,size:h.size,value:k,onChange:A,onBlur:L,onKeyUp:R,placeholder:e,disabled:t,error:n,onClearError:i,endAdornmentWidth:`var(--control-height)`,endAdornment:(0,$.jsx)(x.Trigger,{children:(0,$.jsx)(ne,{variant:`transparent`,disabled:t,className:X.calendarButton,icon:(0,$.jsx)(r,{}),"aria-label":`Открыть календарь`})})}),(0,$.jsxs)(x.Content,{background:`primary`,children:[(0,$.jsx)(l,{view:E,datePickerLevel:S,selectionMode:b,weekEndDay:d,onViewChange:se,value:j??null,onChange:z,minDate:a,maxDate:s,selectsRange:!!h.selectsRange}),U&&(0,$.jsx)(`div`,{className:X.selectionModeControl,children:(0,$.jsx)(ie,{value:b,onChange:B,noWrap:!0,"aria-label":`Режим выбора даты`,children:H.map(e=>(0,$.jsx)(ie.Option,{value:e,label:pe[e]},e))})})]})]})}function de(e){return(0,$.jsx)(Z,{...e})}function fe(e){return(0,$.jsx)(Z,{...e,selectsRange:!0})}var Q,$,pe;function me(){return(me=e((()=>{Q=t(),v(),i(),S(),C(),b(),w(),W(),n(),q(),a(),le(),$=ee(),pe={day:`День`,week:`Неделя`,month:`Месяц`,year:`Год`},de.__docgenInfo={description:``,methods:[],displayName:`SingleDateInput`},fe.__docgenInfo={description:``,methods:[],displayName:`RangeDateInput`}})))()}export{de as n,me as r,fe as t};
@@ -1 +0,0 @@
1
- .HR4pgo:hover{color:var(--focus-ring)}.-tM-kj{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:var(--border)}