@ryuzaki13/react-foundation-ui 1.2.7 → 1.2.9

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 (286) hide show
  1. package/package.json +5 -1
  2. package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
  3. package/storybook-static/assets/Badge-Cec0NJDO.js +139 -0
  4. package/storybook-static/assets/Badge.stories-xynvOO8c.js +51 -0
  5. package/storybook-static/assets/{Button-R2ebF86Y.js → Button-C7D381i8.js} +47 -47
  6. package/storybook-static/assets/Button-CqbxyL6u.js +12 -0
  7. package/storybook-static/assets/Button.stories-HBsET93N.js +75 -0
  8. package/storybook-static/assets/{CheckBox-CaI3XPfw.js → CheckBox-CyShYZlX.js} +1 -1
  9. package/storybook-static/assets/{CheckBox-jIOKCtKS.js → CheckBox-DmQZQ_9C.js} +31 -31
  10. package/storybook-static/assets/CheckBox.stories-BQnplQ0p.js +60 -0
  11. package/storybook-static/assets/Color-KMSTOMOX-C3QlnzSB.js +1 -0
  12. package/storybook-static/assets/ContextMenu-DYn4V3CC.js +40 -0
  13. package/storybook-static/assets/{ContextMenu.stories-DuHhaMZG.js → ContextMenu.stories-Cxbe9gaX.js} +1 -1
  14. package/storybook-static/assets/DateInput-06pSBOhh.js +40 -0
  15. package/storybook-static/assets/DateInput-CEdRCXUW.js +1 -0
  16. package/storybook-static/assets/{DateInput.stories-DA4m_bt-.js → DateInput.stories-BEaCFUAx.js} +1 -1
  17. package/storybook-static/assets/DateRangePresetSelect-Cf-UuC1x.js +3 -0
  18. package/storybook-static/assets/DateRangePresetSelect-yTE2T7-6.js +30 -0
  19. package/storybook-static/assets/DateRangePresetSelect.stories-Crx-OdZw.js +11 -0
  20. package/storybook-static/assets/Detail-DyL1lbPL.js +40 -0
  21. package/storybook-static/assets/Detail.stories-DyX_Gaoa.js +44 -0
  22. package/storybook-static/assets/{Dialog-DRwO9iJS.js → Dialog-DlFVOGo9.js} +22 -22
  23. package/storybook-static/assets/Dialog.stories-D1L-iISd.js +31 -0
  24. package/storybook-static/assets/Disclosure-DL9G91H7.js +32 -0
  25. package/storybook-static/assets/{Disclosure.stories-Bu_i_1U_.js → Disclosure.stories-DefNSLV_.js} +2 -2
  26. package/storybook-static/assets/DocsRenderer-JROSPFPF-DR-GXR8X.js +2 -0
  27. package/storybook-static/assets/DropZone-CqPnBAtV.js +36 -0
  28. package/storybook-static/assets/{DropZone.stories-DlaN01G9.js → DropZone.stories-C8sfvoZq.js} +2 -2
  29. package/storybook-static/assets/DropdownMenu-wSTIvSpX.js +1 -0
  30. package/storybook-static/assets/{ExpandableActionPanel.stories-DzfL1phg.js → ExpandableActionPanel.stories-BIbXO70d.js} +2 -2
  31. package/storybook-static/assets/Flex-CeJxM4Iy.js +3 -0
  32. package/storybook-static/assets/Flex-UQcEOlhA.js +61 -0
  33. package/storybook-static/assets/{Flex.stories-BYls_CQf.js → Flex.stories-Cb9oqbIK.js} +1 -1
  34. package/storybook-static/assets/{Grid-C-xko03k.js → Grid-C9mQsM_1.js} +1 -1
  35. package/storybook-static/assets/Grid-DyokKx_z.js +61 -0
  36. package/storybook-static/assets/{Grid.stories-D_D0IapG.js → Grid.stories-TVohuxdX.js} +1 -1
  37. package/storybook-static/assets/{ImageCropper.stories-CswLqd0C.js → ImageCropper.stories-Bj5G_Dtw.js} +1 -1
  38. package/storybook-static/assets/ImageRenderer-Be0v064J.js +2 -0
  39. package/storybook-static/assets/{ImageRenderer.stories-Bw_FhRQS.js → ImageRenderer.stories-B1yoUNJL.js} +1 -1
  40. package/storybook-static/assets/{ImageView.stories-W43xyxSy.js → ImageView.stories-BmakQX0F.js} +1 -1
  41. package/storybook-static/assets/{ImageViewer.stories-p81pm72u.js → ImageViewer.stories-DELnFT_e.js} +2 -2
  42. package/storybook-static/assets/{ImageViewerRuntime-DkG2C2vh.js → ImageViewerRuntime-B_p5L6IB.js} +2 -2
  43. package/storybook-static/assets/Input-CtFBsQ8Z.js +3 -0
  44. package/storybook-static/assets/Input-nswOjU5_.js +39 -0
  45. package/storybook-static/assets/Input.stories-rFZ8ktWV.js +38 -0
  46. package/storybook-static/assets/InputDateTime-B-C2zojK.js +39 -0
  47. package/storybook-static/assets/InputDateTime.stories-CHO8DdkC.js +35 -0
  48. package/storybook-static/assets/{InputFile-ZiotxlMe.js → InputFile-DlCGwjv-.js} +26 -26
  49. package/storybook-static/assets/InputFile.stories-wk2h5nkw.js +36 -0
  50. package/storybook-static/assets/{InputFiles-DWUxFStB.js → InputFiles-CCPd-T4K.js} +26 -26
  51. package/storybook-static/assets/InputFiles-CLZdPH-o.js +1 -0
  52. package/storybook-static/assets/InputFiles.stories-CZBIVBWn.js +33 -0
  53. package/storybook-static/assets/{InputImage-DmGIfR7v.js → InputImage-17wvxKpc.js} +26 -26
  54. package/storybook-static/assets/{InputImage.stories-BD6OuYSL.js → InputImage.stories-hNq1NSlF.js} +1 -1
  55. package/storybook-static/assets/LayoutPicker-DjA79svR.js +66 -0
  56. package/storybook-static/assets/{LayoutPicker.stories-CHQeF27J.js → LayoutPicker.stories-CEGfgS48.js} +3 -3
  57. package/storybook-static/assets/Listbox-B7gdn162.js +38 -0
  58. package/storybook-static/assets/Listbox.stories-BMiSLjlx.js +47 -0
  59. package/storybook-static/assets/{Modal-Cu6UplI8.js → Modal-l2M5vG_A.js} +32 -32
  60. package/storybook-static/assets/Modal.stories-BuImBMoZ.js +180 -0
  61. package/storybook-static/assets/MultiSelect-BSzNpf_p.js +56 -0
  62. package/storybook-static/assets/MultiSelect-DSsAj7aQ.js +2 -0
  63. package/storybook-static/assets/MultiSelect.stories-_DQpGWvQ.js +29 -0
  64. package/storybook-static/assets/{NotificationsHost-CzBey-gZ.js → NotificationsHost-jt--UJem.js} +22 -22
  65. package/storybook-static/assets/NotificationsHost.stories-D3aLL3dg.js +25 -0
  66. package/storybook-static/assets/ODataMultiSelect-YrmKytgY.js +1 -0
  67. package/storybook-static/assets/ODataMultiSelect-y1TcC27f.js +53 -0
  68. package/storybook-static/assets/ODataMultiSelect.stories-JS14k6cA.js +73 -0
  69. package/storybook-static/assets/{ODataSelect-BTue1iaA.js → ODataSelect-CIqbsgnh.js} +32 -32
  70. package/storybook-static/assets/ODataSelect-D5kr2E_J.js +1 -0
  71. package/storybook-static/assets/ODataSelect.stories-Bu6eKbpi.js +73 -0
  72. package/storybook-static/assets/ODataTreeMultiSelect-CVS4h5N6.js +17 -0
  73. package/storybook-static/assets/ODataTreeMultiSelect.stories-Ci_iReNQ.js +28 -0
  74. package/storybook-static/assets/ODataTreeSelect-CA9jiYeQ.js +16 -0
  75. package/storybook-static/assets/ODataTreeSelect.stories-C6aTOfIH.js +21 -0
  76. package/storybook-static/assets/{PeriodSelect-BMZas-k8.js → PeriodSelect-Dqx4Hpf6.js} +31 -31
  77. package/storybook-static/assets/{PeriodSelect.stories-3w66x0Wx.js → PeriodSelect.stories-BBrdY2Cx.js} +1 -1
  78. package/storybook-static/assets/{Popover-Cp69zYWt.js → Popover-PRRg_v0U.js} +29 -29
  79. package/storybook-static/assets/{Popover.stories-Dm2olc8x.js → Popover.stories-CE-FUPka.js} +1 -1
  80. package/storybook-static/assets/{PresetRangeDateInput-7DV2qzpJ.js → PresetRangeDateInput-2Oubms4T.js} +19 -19
  81. package/storybook-static/assets/PresetRangeDateInput.stories-FbrlolWy.js +15 -0
  82. package/storybook-static/assets/{RadioButton-CZgaZarn.js → RadioButton-CKEEY7LW.js} +27 -27
  83. package/storybook-static/assets/{RadioButton.stories-DRGhwy-6.js → RadioButton.stories-CxCLs7j5.js} +2 -2
  84. package/storybook-static/assets/RadioGroup-BivECtWF.js +1 -0
  85. package/storybook-static/assets/{RadioGroup-B9pw-kxR.js → RadioGroup-q0mPPygU.js} +26 -26
  86. package/storybook-static/assets/RadioGroup.stories-CU2zb5pU.js +42 -0
  87. package/storybook-static/assets/Select-DbumJ08V.js +12 -0
  88. package/storybook-static/assets/{Select-DcRA8coi.js → Select-DxHgh2tW.js} +35 -35
  89. package/storybook-static/assets/Select.stories-CWn3P7Lf.js +46 -0
  90. package/storybook-static/assets/SelectOptionContent-CT7aD3ZF.js +1 -0
  91. package/storybook-static/assets/SerializableSelect-B5-dIYx-.js +4 -0
  92. package/storybook-static/assets/{SerializableSelect-BFMP4RoU.js → SerializableSelect-CEx1Oqn3.js} +32 -32
  93. package/storybook-static/assets/SerializableSelect.stories-C76GF_jT.js +43 -0
  94. package/storybook-static/assets/SingleDateTimeInput-BXaQYdrE.js +53 -0
  95. package/storybook-static/assets/SingleDateTimeInput.stories-s-QOcqZY.js +78 -0
  96. package/storybook-static/assets/Slider-CJI8uj6D.js +63 -0
  97. package/storybook-static/assets/Slider.stories-XznJbVtO.js +77 -0
  98. package/storybook-static/assets/SliderInput-CRdXiEUu.js +58 -0
  99. package/storybook-static/assets/{SliderInput.stories-CDS4YS_3.js → SliderInput.stories-BK5zJTQY.js} +1 -1
  100. package/storybook-static/assets/Sortable-DgOwhJcd.js +72 -0
  101. package/storybook-static/assets/{Sortable.stories--yPzhn7U.js → Sortable.stories-_kesL24S.js} +1 -1
  102. package/storybook-static/assets/{Splitter-6_oQu3c4.js → Splitter-Ce70KsGU.js} +39 -39
  103. package/storybook-static/assets/Splitter.stories-FPS6WZyt.js +22 -0
  104. package/storybook-static/assets/{StateSelect-ClrBKHfD.js → StateSelect-vSXP1PRc.js} +25 -25
  105. package/storybook-static/assets/{StateSelect.stories-DtpIwsdv.js → StateSelect.stories-2Mxg7JsZ.js} +2 -2
  106. package/storybook-static/assets/Switch-Dhk6dRdu.js +36 -0
  107. package/storybook-static/assets/Switch.stories-Bs1nsEqA.js +26 -0
  108. package/storybook-static/assets/Table-CKUaL-dt.js +197 -0
  109. package/storybook-static/assets/{Table.stories-BZOmuXFd.js → Table.stories-DalnIbXO.js} +1 -1
  110. package/storybook-static/assets/Tabs-CyJSIRAg.js +72 -0
  111. package/storybook-static/assets/{Tabs.stories-p59QJ2Tc.js → Tabs.stories-CDJA8j_i.js} +1 -1
  112. package/storybook-static/assets/TagInput.stories-Cl-x5j42.js +18 -0
  113. package/storybook-static/assets/{Textarea-DtmMCSxT.js → Textarea-CEFddJFM.js} +26 -26
  114. package/storybook-static/assets/Textarea.stories-BFdBlU7T.js +27 -0
  115. package/storybook-static/assets/TimePanel-BFMm_u5N.js +1 -0
  116. package/storybook-static/assets/{TimePanel.stories-D2scop0x.js → TimePanel.stories-eSCrEsFB.js} +1 -1
  117. package/storybook-static/assets/{Toggle-C9Yg9JE_.js → Toggle-DVtTIiWv.js} +26 -26
  118. package/storybook-static/assets/Toggle.stories-Bnr0rvaW.js +30 -0
  119. package/storybook-static/assets/TreeMultiSelect-Bz8mMJeJ.js +15 -0
  120. package/storybook-static/assets/TreeMultiSelect-DxOKXKN_.js +1 -0
  121. package/storybook-static/assets/TreeMultiSelect.stories-2suSMBtx.js +31 -0
  122. package/storybook-static/assets/{TreePickerBase-p_zyJtun.js → TreePickerBase-DUA8FTkb.js} +2 -2
  123. package/storybook-static/assets/TreeSelect-CPMeOcSE.js +1 -0
  124. package/storybook-static/assets/TreeSelect-D3dmKyQW.js +15 -0
  125. package/storybook-static/assets/TreeSelect.stories-BW2FnNdD.js +16 -0
  126. package/storybook-static/assets/TreeTable-ID8ojdkg.js +175 -0
  127. package/storybook-static/assets/{TreeTable.stories-BZLmxdzp.js → TreeTable.stories-HLniyxEL.js} +2 -2
  128. package/storybook-static/assets/WithTooltip-7X4HQR7L-D8_to5CP.js +9 -0
  129. package/storybook-static/assets/{base-table-C7bVdENP.js → base-table-DrR8ZKu-.js} +1 -1
  130. package/storybook-static/assets/blocks-DBO0IAf-.js +285 -0
  131. package/storybook-static/assets/button-DorJdQ5y.js +1 -0
  132. package/storybook-static/assets/{check-box-B71d1lgw.js → check-box-DgmFIKzd.js} +1 -1
  133. package/storybook-static/assets/chunk-3LY4VQVK-CyygSkEO.js +6 -0
  134. package/storybook-static/assets/{chunk-LITCR56V-kr_6KJh-.js → chunk-LITCR56V-CmlTz1eD.js} +2 -2
  135. package/storybook-static/assets/contextMenu-BWT88XOR.js +2 -0
  136. package/storybook-static/assets/error-WBF0Ye2y.js +1 -0
  137. package/storybook-static/assets/flex-BHSItP0G.js +1 -0
  138. package/storybook-static/assets/floating-ui.react-B0-s91rY.js +1 -0
  139. package/storybook-static/assets/formatter-L2YTDE3Q-rrITjbuu.js +1 -0
  140. package/storybook-static/assets/{formatters-Br290Dmy.js → formatters-B2V6HAWH.js} +1 -1
  141. package/storybook-static/assets/grid-BxoJsMc2.js +1 -0
  142. package/storybook-static/assets/{hooks-DzbwAWAd.js → hooks-C66Gf311.js} +1 -1
  143. package/storybook-static/assets/{iframe-B1Ua6ocI.js → iframe-NOj5DEP4.js} +199 -197
  144. package/storybook-static/assets/input-BtunpXs_.js +1 -0
  145. package/storybook-static/assets/{mdx-react-shim-DHWnLJR9.js → mdx-react-shim-BgV0cHDR.js} +1 -1
  146. package/storybook-static/assets/media-C9epklfa.js +1 -0
  147. package/storybook-static/assets/misc-k4ycC2LT.js +5 -0
  148. package/storybook-static/assets/notifications-Bu8L3qH-.js +1 -0
  149. package/storybook-static/assets/odata-DsBT7AZ3.js +1 -0
  150. package/storybook-static/assets/odata-service-DVIoNhNQ.js +1 -0
  151. package/storybook-static/assets/{odataStoryFixtures-DS1zYaZm.js → odataStoryFixtures-8tBMjf5a.js} +1 -1
  152. package/storybook-static/assets/picker-DuejWICp.js +2 -0
  153. package/storybook-static/assets/popover-C_RA1r_Q.js +2 -0
  154. package/storybook-static/assets/preset-select-Ciy7yJO1.js +5 -0
  155. package/storybook-static/assets/{react-18-D4G2zUNp.js → react-18-C4n5b66f.js} +1 -1
  156. package/storybook-static/assets/react-CrfQwbwD.js +9 -0
  157. package/storybook-static/assets/react-dom-W8F0h6nu.js +1 -0
  158. package/storybook-static/assets/select-C1H_K5pE.js +1 -0
  159. package/storybook-static/assets/slider-B5mloux6.js +2 -0
  160. package/storybook-static/assets/sortable-C4ZkJ2Xa.js +1 -0
  161. package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-D-6cX_EQ.js → syntaxhighlighter-RTCFPKCB-C6gr7_uU.js} +2 -2
  162. package/storybook-static/assets/text-CvgXrEkI.js +4 -0
  163. package/storybook-static/assets/theming-BJx9Kf_I.js +39 -0
  164. package/storybook-static/assets/ui-ep9HlY5u.js +1 -0
  165. package/storybook-static/assets/useODataSelectBase-BAJpNbfJ.js +1 -0
  166. package/storybook-static/assets/useODataTreeData-DTafeDQZ.js +1 -0
  167. package/storybook-static/assets/utils-C5_R17vJ.js +1 -0
  168. package/storybook-static/iframe.html +2 -2
  169. package/storybook-static/index.html +16 -6
  170. package/storybook-static/index.json +1 -1
  171. package/storybook-static/project.json +1 -1
  172. package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +352 -0
  173. package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js.LEGAL.txt +31 -0
  174. package/storybook-static/sb-addons/vitest-4/manager-bundle.js +3 -0
  175. package/storybook-static/assets/Badge-BNG4jaAG.js +0 -139
  176. package/storybook-static/assets/Badge.stories-DBR_TCrU.js +0 -51
  177. package/storybook-static/assets/Button-CV6qRYrS.js +0 -12
  178. package/storybook-static/assets/Button.stories-BxQyR9Jj.js +0 -75
  179. package/storybook-static/assets/CheckBox.stories-B53ABl5i.js +0 -60
  180. package/storybook-static/assets/Color-KMSTOMOX-Cyl8cJgb.js +0 -1
  181. package/storybook-static/assets/ContextMenu-BwtAOupO.js +0 -40
  182. package/storybook-static/assets/DateInput-BdC-rKjp.js +0 -40
  183. package/storybook-static/assets/DateInput-Bn8ERC92.js +0 -1
  184. package/storybook-static/assets/DateRangePresetSelect-9x2PXji2.js +0 -3
  185. package/storybook-static/assets/DateRangePresetSelect-BAxLf-sI.js +0 -30
  186. package/storybook-static/assets/DateRangePresetSelect.stories-Cpm9i1Gs.js +0 -11
  187. package/storybook-static/assets/Detail-jSNmxeK-.js +0 -40
  188. package/storybook-static/assets/Detail.stories-CnI5n5T5.js +0 -44
  189. package/storybook-static/assets/Dialog.stories-BzFqMgrU.js +0 -31
  190. package/storybook-static/assets/Disclosure-BbjuwgPN.js +0 -32
  191. package/storybook-static/assets/DocsRenderer-JROSPFPF-BijI6psg.js +0 -2
  192. package/storybook-static/assets/DropZone-8RM16_68.js +0 -36
  193. package/storybook-static/assets/DropdownMenu-COmcfMmT.js +0 -1
  194. package/storybook-static/assets/Flex-BQBzh4Tr.js +0 -3
  195. package/storybook-static/assets/Flex-CHaV6K7m.js +0 -61
  196. package/storybook-static/assets/Grid-DloPlrCB.js +0 -61
  197. package/storybook-static/assets/ImageRenderer-DbFiaYXn.js +0 -2
  198. package/storybook-static/assets/Input--cNyU-Ag.js +0 -3
  199. package/storybook-static/assets/Input-ZH34LSnz.js +0 -39
  200. package/storybook-static/assets/Input.stories-DM-fUL_7.js +0 -38
  201. package/storybook-static/assets/InputDateTime-BZGJSifI.js +0 -39
  202. package/storybook-static/assets/InputDateTime.stories-BVdDIO_9.js +0 -35
  203. package/storybook-static/assets/InputFile.stories-CU0wd7SJ.js +0 -36
  204. package/storybook-static/assets/InputFiles-B3vHz3jd.js +0 -1
  205. package/storybook-static/assets/InputFiles.stories-DfzkzBu8.js +0 -33
  206. package/storybook-static/assets/LayoutPicker-DO0Hq5wg.js +0 -66
  207. package/storybook-static/assets/Listbox-BoBf1VYa.js +0 -38
  208. package/storybook-static/assets/Listbox.stories-Cs6ABkXs.js +0 -47
  209. package/storybook-static/assets/Modal.stories-DDHOCfX1.js +0 -180
  210. package/storybook-static/assets/MultiSelect-BVATOh-_.js +0 -2
  211. package/storybook-static/assets/MultiSelect-Dkv3SI5J.js +0 -56
  212. package/storybook-static/assets/MultiSelect.stories-CPNipIbC.js +0 -29
  213. package/storybook-static/assets/NotificationsHost.stories-CeRXDmBa.js +0 -25
  214. package/storybook-static/assets/ODataMultiSelect-BIDgmui6.js +0 -53
  215. package/storybook-static/assets/ODataMultiSelect-U8WlXc3y.js +0 -1
  216. package/storybook-static/assets/ODataMultiSelect.stories-DmeX7-ss.js +0 -73
  217. package/storybook-static/assets/ODataSelect-BO4av_hn.js +0 -1
  218. package/storybook-static/assets/ODataSelect.stories-DpQp77ZX.js +0 -73
  219. package/storybook-static/assets/ODataTreeMultiSelect-tcWnebHq.js +0 -17
  220. package/storybook-static/assets/ODataTreeMultiSelect.stories-C6of8u9F.js +0 -28
  221. package/storybook-static/assets/ODataTreeSelect-B88XSjq4.js +0 -16
  222. package/storybook-static/assets/ODataTreeSelect.stories-CXN2zOja.js +0 -21
  223. package/storybook-static/assets/PresetRangeDateInput.stories-CWwkINdd.js +0 -15
  224. package/storybook-static/assets/RadioGroup-DPNg9UXg.js +0 -1
  225. package/storybook-static/assets/RadioGroup.stories-D_nQ2UMX.js +0 -42
  226. package/storybook-static/assets/Select-C5DH0hMi.js +0 -12
  227. package/storybook-static/assets/Select.stories-BxlItwVq.js +0 -46
  228. package/storybook-static/assets/SelectOptionContent-RFIk8-W0.js +0 -1
  229. package/storybook-static/assets/SerializableSelect-CJtC_MVh.js +0 -4
  230. package/storybook-static/assets/SerializableSelect.stories-Cwk9kf8V.js +0 -43
  231. package/storybook-static/assets/SingleDateTimeInput-BM_emntS.js +0 -53
  232. package/storybook-static/assets/SingleDateTimeInput.stories-DK0JJ19r.js +0 -78
  233. package/storybook-static/assets/Slider-BjAGWnmv.js +0 -63
  234. package/storybook-static/assets/Slider.stories-AFZ3sK6N.js +0 -77
  235. package/storybook-static/assets/SliderInput-CEmHsnm3.js +0 -58
  236. package/storybook-static/assets/Sortable-BwTtVBVt.js +0 -72
  237. package/storybook-static/assets/Splitter.stories-BLDqjnbb.js +0 -22
  238. package/storybook-static/assets/Switch-cwvSIlOe.js +0 -36
  239. package/storybook-static/assets/Switch.stories-BNMmFr3z.js +0 -26
  240. package/storybook-static/assets/Table-BScnaCwl.js +0 -197
  241. package/storybook-static/assets/Tabs-WCUd456k.js +0 -72
  242. package/storybook-static/assets/TagInput.stories-UojVk_Jy.js +0 -18
  243. package/storybook-static/assets/Textarea.stories-Db3Pigr7.js +0 -27
  244. package/storybook-static/assets/TimePanel-Bjn51Vi_.js +0 -1
  245. package/storybook-static/assets/Toggle.stories-Ok2NhICE.js +0 -30
  246. package/storybook-static/assets/TreeMultiSelect-DJzqY2Hd.js +0 -1
  247. package/storybook-static/assets/TreeMultiSelect-DxFQkzpN.js +0 -15
  248. package/storybook-static/assets/TreeMultiSelect.stories-BOgyH5ny.js +0 -31
  249. package/storybook-static/assets/TreeSelect-C2_2A0_N.js +0 -15
  250. package/storybook-static/assets/TreeSelect-CejsBEz8.js +0 -1
  251. package/storybook-static/assets/TreeSelect.stories-DerIIWQL.js +0 -16
  252. package/storybook-static/assets/TreeTable-3l5conv1.js +0 -175
  253. package/storybook-static/assets/WithTooltip-7X4HQR7L-C39XELKG.js +0 -9
  254. package/storybook-static/assets/blocks-DBWaa853.js +0 -285
  255. package/storybook-static/assets/button-DhCvGY9d.js +0 -1
  256. package/storybook-static/assets/chunk-3LY4VQVK-Cy15UFby.js +0 -6
  257. package/storybook-static/assets/contextMenu-P53ulGd4.js +0 -2
  258. package/storybook-static/assets/error-BF58nufO.js +0 -1
  259. package/storybook-static/assets/flex-OzI2qdBD.js +0 -1
  260. package/storybook-static/assets/floating-ui.react-BCZnZKor.js +0 -1
  261. package/storybook-static/assets/formatter-L2YTDE3Q-Bu16EJYG.js +0 -1
  262. package/storybook-static/assets/grid-BRIKMdnO.js +0 -1
  263. package/storybook-static/assets/input-CKW6wgYr.js +0 -1
  264. package/storybook-static/assets/jsx-runtime-BBQGix-2.js +0 -1
  265. package/storybook-static/assets/lucide-react-DiTL2FZl.js +0 -1
  266. package/storybook-static/assets/media-CP09Ak2C.js +0 -1
  267. package/storybook-static/assets/misc-CI386biM.js +0 -5
  268. package/storybook-static/assets/notifications-El-91bgG.js +0 -1
  269. package/storybook-static/assets/odata-jXHOPHLv.js +0 -1
  270. package/storybook-static/assets/odata-service-DMzLjWr8.js +0 -1
  271. package/storybook-static/assets/picker-DhufeWWq.js +0 -2
  272. package/storybook-static/assets/popover-DCygDZB4.js +0 -2
  273. package/storybook-static/assets/preset-select-C0o8oMRZ.js +0 -5
  274. package/storybook-static/assets/react-DXmRDR8e.js +0 -9
  275. package/storybook-static/assets/react-dom-DaUZFAdI.js +0 -1
  276. package/storybook-static/assets/select-Dcb4X2qB.js +0 -1
  277. package/storybook-static/assets/slider-D7YUv9lW.js +0 -2
  278. package/storybook-static/assets/sortable-_Ry8I9Yk.js +0 -1
  279. package/storybook-static/assets/text-DpidzPjQ.js +0 -4
  280. package/storybook-static/assets/theming-BWpdH-US.js +0 -39
  281. package/storybook-static/assets/ui-wilQ6cnk.js +0 -1
  282. package/storybook-static/assets/useODataSelectBase-8RpFkVBi.js +0 -1
  283. package/storybook-static/assets/useODataTreeData-Bc19nm97.js +0 -1
  284. package/storybook-static/assets/utils-DKOsD-4R.js +0 -1
  285. /package/storybook-static/sb-addons/{a11y-2 → a11y-3}/manager-bundle.js +0 -0
  286. /package/storybook-static/sb-addons/{docs-1 → docs-2}/manager-bundle.js +0 -0
@@ -0,0 +1,46 @@
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-NOj5DEP4.js";import{n as a,t as o}from"./Select-DbumJ08V.js";var s=e({ControlledObjects:()=>p,CustomOptionLayout:()=>_,Disabled:()=>v,GroupedOptions:()=>g,Placeholder:()=>h,PrimitiveOptions:()=>m,__namedExportsOrder:()=>y,default:()=>f}),c,l,u,d,f,p,m,h,g,_,v,y,b=n((()=>{c=t(r(),1),a(),l=i(),u=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],d=[`Новый`,`В работе`,`Завершён`,`Архив`],f={title:`Shared/UI/Select`,component:o,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:u,onChange:()=>{},getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},buttonClassName:{description:`Дополнительный CSS-класс кнопки выбора.`,control:`text`},optionsClassName:{description:`Дополнительный CSS-класс контейнера списка.`,control:`text`},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`}}},p={name:`Объекты`,render:e=>{let[t,n]=(0,c.useState)(u[1]);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},m={name:`Примитивы`,render:()=>{let[e,t]=(0,c.useState)(d[1]);return(0,l.jsx)(o,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:d,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},h={render:e=>{let[t,n]=(0,c.useState)(void 0);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},g={name:`Группированные опции`,render:e=>{let[t,n]=(0,c.useState)();return(0,l.jsx)(o,{...e,value:t,onChange:n,getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},_={name:`Кастомный рендер`,render:e=>{let[t,n]=(0,c.useState)(u[0]);return(0,l.jsx)(o,{...e,value:t,onChange:n,renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,l.jsx)(`div`,{children:e.name}),(0,l.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,l.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},v={args:{disabled:!0,value:u[0]}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
+ name: "Объекты",
3
+ render: args => {
4
+ const [value, setValue] = useState<DepartmentOption | undefined>(departmentOptions[1]);
5
+ return <Select {...args} value={value} onChange={setValue} />;
6
+ }
7
+ }`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
8
+ name: "Примитивы",
9
+ render: () => {
10
+ const [value, setValue] = useState<(typeof primitiveOptions)[number] | undefined>(primitiveOptions[1]);
11
+ return <Select label="Статус" description="Пример использования низкоуровневого Select со строковыми значениями." placeholder="Выберите статус" options={primitiveOptions} value={value} onChange={setValue} getOptionKey={option => option} getOptionLabel={option => option} size="md" />;
12
+ }
13
+ }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
14
+ render: args => {
15
+ const [value, setValue] = useState<DepartmentOption | undefined>(undefined);
16
+ return <Select {...args} value={value} onChange={setValue} />;
17
+ }
18
+ }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
19
+ name: "Группированные опции",
20
+ render: args => {
21
+ const [value, setValue] = useState<DepartmentOption | undefined>();
22
+ return <Select {...args} value={value} onChange={setValue} getOptionGroup={option => ({
23
+ key: option.direction,
24
+ label: option.direction
25
+ })} optionsMaxWidth="40rem" />;
26
+ }
27
+ }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
28
+ name: "Кастомный рендер",
29
+ render: args => {
30
+ const [value, setValue] = useState<DepartmentOption | undefined>(departmentOptions[0]);
31
+ return <Select {...args} value={value} onChange={setValue} renderValue={option => \`\${option.code} · \${option.name}\`} renderOption={(option, state) => <>
32
+ <div className="flexEllipsis">
33
+ <div>{option.name}</div>
34
+ <div className="fontSizeSm content2">{option.manager}</div>
35
+ </div>
36
+ <div style={{
37
+ opacity: state.selected ? 1 : 0.5
38
+ }}>{option.code}</div>
39
+ </>} />;
40
+ }
41
+ }`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
42
+ args: {
43
+ disabled: true,
44
+ value: departmentOptions[0]
45
+ }
46
+ }`,...v.parameters?.docs?.source}}},y=[`ControlledObjects`,`PrimitiveOptions`,`Placeholder`,`GroupedOptions`,`CustomOptionLayout`,`Disabled`]}));b();export{p as ControlledObjects,_ as CustomOptionLayout,v as Disabled,g as GroupedOptions,h as Placeholder,m as PrimitiveOptions,y as __namedExportsOrder,f as default,b as n,s as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{a as n,i as r}from"./utils-C5_R17vJ.js";import{o as i,t as a}from"./text-CvgXrEkI.js";import{n as o,t as s}from"./ui.module-wFHXkJzp.js";function c({label:e,code:t,highlight:r}){return(0,l.jsxs)(`div`,{className:o.uiOptionBase,children:[(0,l.jsx)(`div`,{className:n(o.uiOptionText,`flexEllipsis`),children:(0,l.jsx)(i,{text:e,highlight:r})}),t&&(0,l.jsx)(`div`,{className:o.uiOptionCode,children:(0,l.jsx)(i,{text:t,highlight:r})})]})}var l,u=e((()=>{r(),a(),s(),l=t(),c.__docgenInfo={description:`Универсальный рендерер опции. Используется и в single-select, и в multi-select.`,methods:[],displayName:`SelectOptionContent`,props:{label:{required:!0,tsType:{name:`string`},description:``},code:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``}}}}));export{u as n,c as t};
@@ -0,0 +1,4 @@
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{n,t as r}from"./Select-DbumJ08V.js";function i(e,t){return e[t]}function a(e,t,n){let r=e[t];if(typeof r==`string`||typeof r==`number`)return r;let a=i(e,n);return typeof a==`string`||typeof a==`number`?a:String(a)}function o({label:e,description:t,disabled:n,placeholder:o,size:c,options:l,value:u,onChange:d,optionKey:f,optionLabel:p,renderCode:m,className:h,clearable:g}){return(0,s.jsx)(r,{label:e,description:t,disabled:n,placeholder:o,size:c,options:l,value:u===void 0?void 0:l.find(e=>i(e,f)===u),onChange:e=>d(e?i(e,f):void 0),getOptionKey:e=>i(e,f),getOptionLabel:e=>a(e,p,f),getOptionCode:m?e=>i(e,f):void 0,className:h,clearable:g})}var s,c=e((()=>{n(),s=t(),o.__docgenInfo={description:``,methods:[],displayName:`SerializableSelect`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void`,signature:{arguments:[{type:{name:`union`,raw:`SerializableOptionValue<TOption, TOptionKey> | undefined`,elements:[{name:`Extract`,elements:[{name:`TOption[TOptionKey]`,raw:`TOption[TOptionKey]`},{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]}],raw:`Extract<
2
+ TOption[TOptionKey],
3
+ SelectOptionKey
4
+ >`},{name:`undefined`}]},name:`value`}],return:{name:`void`}}},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}}));export{c as n,o as t};
@@ -1,12 +1,12 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-DBWaa853.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-DHWnLJR9.js";import{AsyncReloadLike as p,Controlled as m,Disabled as h,Placeholder as g,WithCode as _,n as v,t as y}from"./SerializableSelect.stories-Cwk9kf8V.js";function b(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{of:y,parameters:{docs:{toc:!0}}}),`
2
- `,(0,S.jsx)(c,{children:`SerializableSelect`}),`
3
- `,(0,S.jsx)(i,{children:`Select для сериализуемых значений и конфигурационных сценариев с key/label описанием option`}),`
4
- `,(0,S.jsx)(o.p,{children:`SerializableSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-DBO0IAf-.js";import{t as f}from"./mdx-react-shim-BgV0cHDR.js";import{AsyncReloadLike as p,Controlled as m,Disabled as h,Placeholder as g,WithCode as _,n as v,t as y}from"./SerializableSelect.stories-C76GF_jT.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(o,{of:y,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,S.jsx)(l,{children:`SerializableSelect`}),`
3
+ `,(0,S.jsx)(a,{children:`Select для сериализуемых значений и конфигурационных сценариев с key/label описанием option`}),`
4
+ `,(0,S.jsx)(t.p,{children:`SerializableSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
5
5
  Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны контролируемые сценарии, заблокированные состояния.`}),`
6
- `,(0,S.jsx)(o.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
- `,(0,S.jsx)(u,{}),`
8
- `,(0,S.jsx)(n,{of:m}),`
9
- `,(0,S.jsx)(o.pre,{children:(0,S.jsx)(o.code,{className:`language-tsx`,children:`import { useState } from "react";
6
+ `,(0,S.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
+ `,(0,S.jsx)(d,{}),`
8
+ `,(0,S.jsx)(r,{of:m}),`
9
+ `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
10
 
11
11
  import { SerializableSelect } from "@/shared/ui";
12
12
 
@@ -21,28 +21,28 @@ export function Example() {
21
21
  return <SerializableSelect label="Статус" value={value} onChange={setValue} options={options} optionKey="key" optionLabel="label" />;
22
22
  }
23
23
  `})}),`
24
- `,(0,S.jsx)(o.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
25
- `,(0,S.jsxs)(o.ul,{children:[`
26
- `,(0,S.jsx)(o.li,{children:`Если состояние должно жить во внешней форме или модели, ориентируйтесь на контролируемый режим из документации.`}),`
27
- `,(0,S.jsx)(o.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
24
+ `,(0,S.jsx)(t.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
25
+ `,(0,S.jsxs)(t.ul,{children:[`
26
+ `,(0,S.jsx)(t.li,{children:`Если состояние должно жить во внешней форме или модели, ориентируйтесь на контролируемый режим из документации.`}),`
27
+ `,(0,S.jsx)(t.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
28
28
  `]}),`
29
- `,(0,S.jsx)(o.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
30
- `,(0,S.jsx)(o.h3,{id:`компонент-работает-в-контролируемом-режиме-когда-состояние-хранится-во-внешнем-компоненте`,children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте`}),`
31
- `,(0,S.jsx)(o.p,{children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте.`}),`
32
- `,(0,S.jsx)(l,{of:m}),`
33
- `,(0,S.jsx)(o.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
34
- `,(0,S.jsx)(o.p,{children:`Поведение без выбранного значения.`}),`
35
- `,(0,S.jsx)(l,{of:g}),`
36
- `,(0,S.jsx)(o.h3,{id:`with-code`,children:`With Code`}),`
37
- `,(0,S.jsxs)(o.p,{children:[`Сценарий демонстрирует вариант `,(0,S.jsx)(o.code,{children:`WithCode`}),` и помогает быстро сравнить его с остальными режимами компонента.`]}),`
38
- `,(0,S.jsx)(l,{of:_}),`
39
- `,(0,S.jsx)(o.h3,{id:`сценарий-близкий-к-асинхронной-перезагрузке-данных`,children:`Сценарий, близкий к асинхронной перезагрузке данных`}),`
40
- `,(0,S.jsx)(o.p,{children:`Сценарий, близкий к асинхронной перезагрузке данных.`}),`
41
- `,(0,S.jsx)(l,{of:p}),`
42
- `,(0,S.jsx)(o.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
43
- `,(0,S.jsx)(o.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
44
- `,(0,S.jsx)(l,{of:h}),`
45
- `,(0,S.jsx)(o.h2,{id:`api`,children:`API`}),`
46
- `,(0,S.jsx)(s,{of:y}),`
47
- `,(0,S.jsx)(o.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
48
- `,(0,S.jsx)(r,{includePrimary:!1})]})}function x(e={}){let{wrapper:n}={...t(),...e.components};return n?(0,S.jsx)(n,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=d(),f(),o(),v()}))();export{x as default};
29
+ `,(0,S.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
30
+ `,(0,S.jsx)(t.h3,{id:`компонент-работает-в-контролируемом-режиме-когда-состояние-хранится-во-внешнем-компоненте`,children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте`}),`
31
+ `,(0,S.jsx)(t.p,{children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте.`}),`
32
+ `,(0,S.jsx)(u,{of:m}),`
33
+ `,(0,S.jsx)(t.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
34
+ `,(0,S.jsx)(t.p,{children:`Поведение без выбранного значения.`}),`
35
+ `,(0,S.jsx)(u,{of:g}),`
36
+ `,(0,S.jsx)(t.h3,{id:`with-code`,children:`With Code`}),`
37
+ `,(0,S.jsxs)(t.p,{children:[`Сценарий демонстрирует вариант `,(0,S.jsx)(t.code,{children:`WithCode`}),` и помогает быстро сравнить его с остальными режимами компонента.`]}),`
38
+ `,(0,S.jsx)(u,{of:_}),`
39
+ `,(0,S.jsx)(t.h3,{id:`сценарий-близкий-к-асинхронной-перезагрузке-данных`,children:`Сценарий, близкий к асинхронной перезагрузке данных`}),`
40
+ `,(0,S.jsx)(t.p,{children:`Сценарий, близкий к асинхронной перезагрузке данных.`}),`
41
+ `,(0,S.jsx)(u,{of:p}),`
42
+ `,(0,S.jsx)(t.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
43
+ `,(0,S.jsx)(t.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
44
+ `,(0,S.jsx)(u,{of:h}),`
45
+ `,(0,S.jsx)(t.h2,{id:`api`,children:`API`}),`
46
+ `,(0,S.jsx)(c,{of:y}),`
47
+ `,(0,S.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
48
+ `,(0,S.jsx)(i,{includePrimary:!1})]})}function x(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,S.jsx)(t,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=t(),f(),s(),v()}))();export{x as default};
@@ -0,0 +1,43 @@
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-NOj5DEP4.js";import{n as a,t as o}from"./SerializableSelect-B5-dIYx-.js";var s=e({AsyncReloadLike:()=>h,Controlled:()=>f,Disabled:()=>g,Placeholder:()=>p,WithCode:()=>m,__namedExportsOrder:()=>_,default:()=>d}),c,l,u,d,f,p,m,h,g,_,v=n((()=>{c=t(r(),1),a(),l=i(),u=[{id:10,name:`Продажи`,code:`SLS`,branch:`Екатеринбург`},{id:20,name:`Закупки`,code:`PRC`,branch:`Челябинск`},{id:30,name:`Логистика`,code:`LGS`,branch:`Новосибирск`},{id:40,name:`Сервис`,code:`SRV`,branch:`Москва`}],d={title:`Shared/UI/SerializableSelect`,component:o,args:{label:`Подразделение`,description:`Сериализуемая обёртка над Select для object-options и field-based конфигурации.`,placeholder:`Выберите подразделение`,options:u,optionKey:`id`,optionLabel:`name`,value:void 0,onChange:()=>{},size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Высокоуровневая обёртка над low-level Select. Принимает массив объектов, получает key и label по именам полей, а наружу возвращает только значение ключа. Нужна для сериализуемых конфигов, в том числе в src/shared/ui/controls/*.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда ключ ещё не выбран.`,control:`text`},options:{description:`Массив объектных option.`,control:!1},optionKey:{description:`Поле объекта, значение которого используется как ключ и отдаётся наружу через onChange.`,control:!1},optionLabel:{description:`Поле объекта, значение которого отображается как основной текст option.`,control:!1},renderCode:{description:`Если включено, справа от текста будет показан ключ optionKey.`,control:`boolean`},value:{description:`Текущий выбранный ключ option, а не вся option целиком.`,control:!1},onChange:{description:`Вызывается с новым значением optionKey.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`}}},f={name:`Выбор по ключу`,render:e=>{let[t,n]=(0,c.useState)(20);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},p={render:e=>{let[t,n]=(0,c.useState)(void 0);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},m={name:`С кодом`,render:e=>{let[t,n]=(0,c.useState)(10);return(0,l.jsx)(o,{...e,value:t,onChange:n,renderCode:!0})},args:{renderCode:!0}},h={name:`Смена набора опций`,render:e=>{let[t,n]=(0,c.useState)(30),[r,i]=(0,c.useState)(!1),a=(0,c.useMemo)(()=>r?u.filter(e=>e.id!==20):u,[r]);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:`12px`,maxWidth:`320px`},children:[(0,l.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),children:r?`Показать полный список`:`Скрыть одну опцию`}),(0,l.jsx)(o,{...e,options:a,value:t,onChange:n})]})}},g={args:{disabled:!0,value:10}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
2
+ name: "Выбор по ключу",
3
+ render: args => {
4
+ const [value, setValue] = useState<number | undefined>(20);
5
+ return <SerializableSelect {...args} value={value} onChange={setValue} />;
6
+ }
7
+ }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
8
+ render: args => {
9
+ const [value, setValue] = useState<number | undefined>(undefined);
10
+ return <SerializableSelect {...args} value={value} onChange={setValue} />;
11
+ }
12
+ }`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
13
+ name: "С кодом",
14
+ render: args => {
15
+ const [value, setValue] = useState<number | undefined>(10);
16
+ return <SerializableSelect {...args} value={value} onChange={setValue} renderCode />;
17
+ },
18
+ args: {
19
+ renderCode: true
20
+ }
21
+ }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
22
+ name: "Смена набора опций",
23
+ render: args => {
24
+ const [value, setValue] = useState<number | undefined>(30);
25
+ const [showShortList, setShowShortList] = useState(false);
26
+ const options = useMemo(() => showShortList ? departmentOptions.filter(option => option.id !== 20) : departmentOptions, [showShortList]);
27
+ return <div style={{
28
+ display: "grid",
29
+ gap: "12px",
30
+ maxWidth: "320px"
31
+ }}>
32
+ <button type="button" onClick={() => setShowShortList(current => !current)}>
33
+ {showShortList ? "Показать полный список" : "Скрыть одну опцию"}
34
+ </button>
35
+ <SerializableSelect {...args} options={options} value={value} onChange={setValue} />
36
+ </div>;
37
+ }
38
+ }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
39
+ args: {
40
+ disabled: true,
41
+ value: 10
42
+ }
43
+ }`,...g.parameters?.docs?.source}}},_=[`Controlled`,`Placeholder`,`WithCode`,`AsyncReloadLike`,`Disabled`]}));v();export{h as AsyncReloadLike,f as Controlled,g as Disabled,p as Placeholder,m as WithCode,_ as __namedExportsOrder,d as default,v as n,s as t};
@@ -0,0 +1,53 @@
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-DBO0IAf-.js";import{t as f}from"./mdx-react-shim-BgV0cHDR.js";import{Default as p,Empty as m,TimeOnly as h,WithLimits as g,WithRightPanel as _,n as v,t as y}from"./SingleDateTimeInput.stories-s-QOcqZY.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(o,{of:y,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,S.jsx)(l,{children:`SingleDateTimeInput`}),`
3
+ `,(0,S.jsx)(a,{children:`Строгий сегментный ввод даты-времени и времени с popover picker`}),`
4
+ `,(0,S.jsxs)(t.p,{children:[(0,S.jsx)(t.code,{children:`SingleDateTimeInput`}),` объединяет два сценария:`]}),`
5
+ `,(0,S.jsxs)(t.ul,{children:[`
6
+ `,(0,S.jsxs)(t.li,{children:[`ручной ввод по фиксированной маске `,(0,S.jsx)(t.code,{children:`dd.MM.yyyy HH:mm`}),`;`]}),`
7
+ `,(0,S.jsx)(t.li,{children:`выбор даты и времени через popover picker с wheel-прокруткой;`}),`
8
+ `,(0,S.jsxs)(t.li,{children:[`выбор только времени по маске `,(0,S.jsx)(t.code,{children:`HH:mm`}),` с технической датой `,(0,S.jsx)(t.code,{children:`1970-01-01`}),`.`]}),`
9
+ `]}),`
10
+ `,(0,S.jsx)(t.p,{children:`Семантика компонента фиксирована и отличается от существующих компонентов так:`}),`
11
+ `,(0,S.jsxs)(t.ul,{children:[`
12
+ `,(0,S.jsxs)(t.li,{children:[`до: `,(0,S.jsx)(t.code,{children:`DateInput`}),` работал только с календарной датой и нормализовал значение к границам суток;`]}),`
13
+ `,(0,S.jsxs)(t.li,{children:[`до: `,(0,S.jsx)(t.code,{children:`InputDateTime`}),` давал сегментный ввод, но без picker и без опоры на shared date-formatters;`]}),`
14
+ `,(0,S.jsxs)(t.li,{children:[`после: `,(0,S.jsx)(t.code,{children:`SingleDateTimeInput`}),` хранит дату-время с точностью до минуты и использует строгий parse/format через общие date-formatters.`]}),`
15
+ `]}),`
16
+ `,(0,S.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
17
+ `,(0,S.jsx)(d,{}),`
18
+ `,(0,S.jsx)(r,{of:p}),`
19
+ `,(0,S.jsx)(t.pre,{children:(0,S.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
20
+
21
+ import { SingleDateTimeInput } from "@/shared/ui";
22
+
23
+ export function Example() {
24
+ const [value, setValue] = useState<Date | null>(null);
25
+
26
+ return <SingleDateTimeInput label="Дата и время" value={value} onChange={setValue} />;
27
+ }
28
+ `})}),`
29
+ `,(0,S.jsx)(t.h2,{id:`практические-замечания`,children:`Практические замечания`}),`
30
+ `,(0,S.jsxs)(t.ul,{children:[`
31
+ `,(0,S.jsxs)(t.li,{children:[`Поле вызывает `,(0,S.jsx)(t.code,{children:`onChange`}),` только для полной и валидной даты-времени.`]}),`
32
+ `,(0,S.jsx)(t.li,{children:`Неполный или невалидный ручной ввод при потере фокуса откатывается к последнему committed значению.`}),`
33
+ `,(0,S.jsxs)(t.li,{children:[`Полностью очищенные сегменты трактуются как `,(0,S.jsx)(t.code,{children:`null`}),`.`]}),`
34
+ `,(0,S.jsxs)(t.li,{children:[`Ограничения `,(0,S.jsx)(t.code,{children:`minDate`}),` и `,(0,S.jsx)(t.code,{children:`maxDate`}),` применяются и к календарю, и к времени внутри того же дня.`]}),`
35
+ `,(0,S.jsxs)(t.li,{children:[`В режиме `,(0,S.jsx)(t.code,{children:`mode="time"`}),` компонент возвращает `,(0,S.jsx)(t.code,{children:`Date`}),` на технической дате `,(0,S.jsx)(t.code,{children:`1970-01-01`}),`, а `,(0,S.jsx)(t.code,{children:`minDate`}),` и `,(0,S.jsx)(t.code,{children:`maxDate`}),` сравниваются только по `,(0,S.jsx)(t.code,{children:`HH:mm`}),`.`]}),`
36
+ `,(0,S.jsx)(t.li,{children:`Wheel-панель блокирует прокрутку страницы во время взаимодействия и доводит выбранное значение в центр.`}),`
37
+ `,(0,S.jsxs)(t.li,{children:[`Размещение панели времени управляется через `,(0,S.jsx)(t.code,{children:`timePanelPlacement="bottom" | "right"`}),`.`]}),`
38
+ `]}),`
39
+ `,(0,S.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
40
+ `,(0,S.jsx)(t.h3,{id:`базовый-сценарий`,children:`Базовый сценарий`}),`
41
+ `,(0,S.jsx)(u,{of:p}),`
42
+ `,(0,S.jsx)(t.h3,{id:`пустое-значение`,children:`Пустое значение`}),`
43
+ `,(0,S.jsx)(u,{of:m}),`
44
+ `,(0,S.jsx)(t.h3,{id:`ограниченный-диапазон`,children:`Ограниченный диапазон`}),`
45
+ `,(0,S.jsx)(u,{of:g}),`
46
+ `,(0,S.jsx)(t.h3,{id:`панель-времени-справа`,children:`Панель времени справа`}),`
47
+ `,(0,S.jsx)(u,{of:_}),`
48
+ `,(0,S.jsx)(t.h3,{id:`только-время`,children:`Только время`}),`
49
+ `,(0,S.jsx)(u,{of:h}),`
50
+ `,(0,S.jsx)(t.h2,{id:`api`,children:`API`}),`
51
+ `,(0,S.jsx)(c,{of:y}),`
52
+ `,(0,S.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
53
+ `,(0,S.jsx)(i,{includePrimary:!1})]})}function x(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,S.jsx)(t,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=t(),f(),s(),v()}))();export{x as default};
@@ -0,0 +1,78 @@
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{jt as r,n as i,pn as a,t as o,tt as ee}from"./iframe-NOj5DEP4.js";import{a as s,i as c}from"./utils-C5_R17vJ.js";import{J as l,K as u,_ as d,b as te,t as f,z as p}from"./formatters-B2V6HAWH.js";import{i as m,t as h}from"./popover-C_RA1r_Q.js";import{n as g,t as _}from"./ui.module-wFHXkJzp.js";import{t as v}from"./Button-CqbxyL6u.js";import{i as y}from"./DateInput-CEdRCXUW.js";import{t as b}from"./button-DorJdQ5y.js";import{o as ne,r as re,u as ie}from"./Input-CtFBsQ8Z.js";import{t as ae}from"./input-BtunpXs_.js";import{t as oe}from"./ui-ep9HlY5u.js";import{a as x,i as se,n as S,r as C,t as w}from"./date-segments-CzU9k5bl.js";import{a as ce,c as le,d as ue,i as T,l as de,n as E,o as D,r as fe,s as O,t as pe,u as me}from"./TimePanel-BFMm_u5N.js";var k=n((()=>{D()}));function he(e){let t=[];return e.forEach((e,n)=>{e.kind===`editable`&&t.push(n)}),t}function ge({value:e,onChange:t,onClearError:n,disabled:r,minDate:i,maxDate:a,mode:o=`date-time`}){let ee=(0,A.useMemo)(()=>ce(o),[o]),s=(0,A.useMemo)(()=>se(ee),[ee]),c=(0,A.useMemo)(()=>he(s),[s]),l=(0,A.useMemo)(()=>S(e??null,s),[s,e]),[u,d]=(0,A.useState)(null),te=e?.getTime()??null,f=(0,A.useEffectEvent)(e=>d(e));(0,A.useEffect)(()=>{f(null)},[te,o]);let p=u??l,m=(0,A.useRef)(new Map),h=(0,A.useRef)(0),g=(0,A.useCallback)(n=>{if(w(s,n))return t(null),null;let r=x(s,n,{defaultDate:o===`time`?me(e,`time`)??T():void 0});return!r||!O(r,i,a,o)?null:(t(r),r)},[a,i,o,t,s,e]),_=(0,A.useCallback)((e,t=!0)=>{let n=m.current.get(e);n&&(n.focus(),t&&requestAnimationFrame(()=>n.select()))},[]),v=(0,A.useCallback)(e=>{let t=c.indexOf(e);return t<c.length-1?c[t+1]:null},[c]),y=(0,A.useCallback)(e=>{let t=c.indexOf(e);return t>0?c[t-1]:null},[c]),b=(0,A.useCallback)((e,t)=>e.padStart(t.length,`0`),[]);return{segments:s,segmentValues:p,registerRef:(0,A.useCallback)(e=>t=>{if(t){m.current.set(e,t);return}m.current.delete(e)},[]),handleInput:(0,A.useCallback)(e=>t=>{if(r)return;let i=s[e];if(i.kind!==`editable`)return;let a=t.target.value.replace(/\D/g,``).slice(0,i.length),o=new Map(p);if(o.set(e,a),d(o),n?.(),a.length===i.length){let t=v(e);t!==null&&requestAnimationFrame(()=>_(t))}g(o)},[r,_,v,n,p,s,g]),handleKeyDown:(0,A.useCallback)(e=>t=>{if(r)return;let n=s[e];if(n.kind!==`editable`)return;let i=p.get(e)??``,a=t.currentTarget;switch(t.key){case`ArrowRight`:if(a.selectionStart===i.length||i===``){t.preventDefault();let n=v(e);n!==null&&_(n)}break;case`ArrowLeft`:if(a.selectionStart===0||i===``){t.preventDefault();let n=y(e);n!==null&&_(n)}break;case`ArrowUp`:{t.preventDefault();let r=i===``?n.min:Number.parseInt(i,10)+1;r>n.max&&(r=n.min);let o=new Map(p);o.set(e,b(String(r),n)),d(o),g(o),requestAnimationFrame(()=>a.select());break}case`ArrowDown`:{t.preventDefault();let r=i===``?n.max:Number.parseInt(i,10)-1;r<n.min&&(r=n.max);let o=new Map(p);o.set(e,b(String(r),n)),d(o),g(o),requestAnimationFrame(()=>a.select());break}case`Backspace`:if(i===``){t.preventDefault();let n=y(e);n!==null&&_(n)}break;case`Delete`:{t.preventDefault();let n=new Map(p);n.set(e,``),d(n),g(n);break}}},[r,_,v,y,b,p,s,g]),handleFocus:(0,A.useCallback)(()=>e=>{e.target.select()},[]),handleContainerFocus:(0,A.useCallback)(()=>{clearTimeout(h.current)},[]),handleContainerBlur:(0,A.useCallback)(()=>{let n=new Map(p);h.current=window.setTimeout(()=>{if(w(s,n)){t(null),d(n);return}let r=x(s,n,{defaultDate:o===`time`?me(e,`time`)??T():void 0});if(!r||!O(r,i,a,o)){d(null);return}d(n)},0)},[a,i,o,t,p,s,e]),focusFirstEmpty:(0,A.useCallback)(()=>{let e=c.find(e=>!(p.get(e)??``))??c[c.length-1];e!==void 0&&_(e)},[c,_,p])}}var A,_e=n((()=>{A=t(a(),1),C(),k()})),ve=n((()=>{_e()})),j,M,N,P,F,I,L,R,z,B,V,H,ye=n((()=>{j=`AvG-mf`,M=`ig7KtT`,N=`RTruv0`,P=`YQHPZa`,F=`-RZe-i`,I=`Ox0SRE`,L=`gfaRup`,R=`_59kEea`,z=`Jjdu1Q`,B=`Q8Y2xS`,V=`XxZYTW`,H={segmentInput:j,separator:M,calendarButton:N,popoverContent:P,bottom:F,right:I,calendarPane:L,timePanelPane:R,timeOnlyPopoverContent:z,timePanelPaneBottom:B,timePanelPaneRight:V}}));function U({value:e,onChange:t,label:n,description:i,placeholder:a,disabled:o,size:c,error:l,onClearError:u,minDate:f,maxDate:p,timePanelPlacement:h=`right`,mode:_=`date-time`}){let b=me(e,_),ae=b?.getTime()??null,oe=(0,W.useMemo)(()=>d(new Date),[]),[x,se]=(0,W.useState)(!1),[S,C]=(0,W.useState)(b??null),[w,ce]=(0,W.useState)(`day`),[T,E]=(0,W.useState)(()=>ue(b,oe,_)),{controlId:D,labelId:k,descriptionId:he,errorId:A,describedBy:_e}=ie({hasLabel:n!=null,hasDescription:!!i,hasError:!!l}),ve=(0,W.useEffectEvent)(e=>C(e)),j=(0,W.useEffectEvent)(e=>E(e));(0,W.useEffect)(()=>{x||ve(b??null),b&&j(b)},[b,ae,x]),(0,W.useEffect)(()=>{b&&j(b)},[b,ae]);let{segments:M,segmentValues:N,registerRef:P,handleInput:F,handleKeyDown:I,handleFocus:L,handleContainerFocus:R,handleContainerBlur:z,focusFirstEmpty:B}=ge({value:b,onChange:t,onClearError:u,disabled:o,minDate:f,maxDate:p,mode:_}),V=e=>{if(_===`time`||te(e)||o)return;let t=le(e,S??b??T),{hours:n,minutes:r}=fe(e,t.getHours(),t.getMinutes(),f,p,_),i=de(e,n,r);O(i,f,p,_)&&(u?.(),C(i),E(i))},ye=(e,t)=>{if(o)return;let n=S??b??T,r=fe(n,e,t,f,p,_),i=de(n,r.hours,r.minutes,_);O(i,f,p,_)&&(u?.(),C(i),E(i))},U=e=>{e&&(C(b??null),E(ue(b,oe,_))),se(e)},be=()=>{(b?.getTime()??null)!==(S?.getTime()??null)&&t(S)},xe=h===`right`?H.timePanelPaneRight:H.timePanelPaneBottom,K=_===`time`?`Открыть выбор времени`:`Открыть календарь даты и времени`,q=a??(_===`time`?`чч:мм`:`дд.мм.гггг чч:мм`),J=S??b??T;return(0,G.jsxs)(m,{open:x,onOpenChange:U,children:[(0,G.jsx)(ne,{label:n,description:i,disabled:o,size:c,error:l,controlId:D,labelId:k,descriptionId:he,errorId:A,children:(0,G.jsx)(re,{endAdornmentWidth:`var(--control-height)`,endAdornment:(0,G.jsx)(m.Trigger,{children:(0,G.jsx)(v,{variant:`transparent`,disabled:o,className:H.calendarButton,icon:_===`time`?(0,G.jsx)(ee,{}):(0,G.jsx)(r,{}),"aria-label":K})}),children:({controlClassName:e})=>(0,G.jsx)(`div`,{id:D,className:s(g.uiInputControlFake,e),"data-disabled":o||void 0,"data-invalid":l?``:void 0,role:`group`,"aria-invalid":!!l||void 0,"aria-placeholder":q,"aria-labelledby":k,"aria-describedby":_e,onFocus:R,onBlur:z,onClick:e=>{e.target===e.currentTarget&&B()},children:M.map((e,t)=>e.kind===`literal`?(0,G.jsx)(`span`,{className:H.separator,"data-disabled":o||void 0,children:e.text},t):(0,G.jsx)(`input`,{ref:P(t),type:`text`,inputMode:`numeric`,className:H.segmentInput,style:{width:`${e.length+.5}ch`},value:N.get(t)??``,placeholder:e.placeholder,maxLength:e.length,disabled:o,"aria-label":e.ariaLabel,autoComplete:`off`,onChange:F(t),onKeyDown:I(t),onFocus:L()},t))})})}),(0,G.jsx)(m.Content,{background:`primary`,onClose:be,children:_===`time`?(0,G.jsx)(`div`,{className:H.timeOnlyPopoverContent,children:(0,G.jsx)(pe,{value:J,disabled:o,minDate:f,maxDate:p,mode:_,onChange:ye})}):(0,G.jsxs)(`div`,{className:s(H.popoverContent,H[h]),children:[(0,G.jsx)(`div`,{className:H.calendarPane,children:(0,G.jsx)(y,{view:w,datePickerLevel:`day`,selectionMode:`day`,onViewChange:ce,value:J,onChange:V,minDate:f,maxDate:p,currentDate:T,onCurrentDateChange:E})}),(0,G.jsx)(`div`,{className:s(H.timePanelPane,xe),children:(0,G.jsx)(pe,{value:J,disabled:o,minDate:f,maxDate:p,mode:_,onChange:ye})})]})})]})}var W,G,be=n((()=>{W=t(a(),1),f(),c(),i(),b(),oe(),ae(),h(),_(),k(),ve(),ye(),E(),G=o(),U.__docgenInfo={description:`Поле выбора даты-времени со строгой сегментной маской и popover-пикером.`,methods:[],displayName:`SingleDateTimeInput`,props:{error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},timePanelPlacement:{required:!1,tsType:{name:`union`,raw:`"bottom" | "right"`,elements:[{name:`literal`,value:`"bottom"`},{name:`literal`,value:`"right"`}]},description:``,defaultValue:{value:`"right"`,computed:!1}},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``}}}})),xe=e({Default:()=>Y,Empty:()=>Z,TimeOnly:()=>X,WithLimits:()=>Q,WithRightPanel:()=>$,__namedExportsOrder:()=>Se,default:()=>J}),K,q,J,Y,X,Z,Q,$,Se,Ce=n((()=>{K=t(a(),1),f(),be(),q=o(),J={title:`Shared/UI/SingleDateTimeInput`,component:U,args:{value:null,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля даты и времени.`,control:`text`},description:{description:`Описание под заголовком поля.`,control:`text`},placeholder:{description:`Текстовая подсказка для сегментного ввода.`,control:`text`},value:{description:"Текущее значение в виде `Date | null`.",control:!1},onChange:{description:`Вызывается при вводе или выборе валидной даты-времени.`,control:!1},minDate:{description:`Минимально допустимая дата-время.`,control:`date`},maxDate:{description:`Максимально допустимая дата-время.`,control:`date`},error:{description:`Текст внешней ошибки под полем.`,control:`text`},onClearError:{description:`Сбрасывает внешнюю ошибку при ручном вводе и выборе в picker.`,control:!1},size:{description:`Размер поля и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},disabled:{description:`Блокирует сегментный ввод и popover picker.`,control:`boolean`},timePanelPlacement:{description:`Размещение панели выбора времени относительно календаря.`,control:`inline-radio`,options:[`bottom`,`right`]},mode:{description:`Режим работы поля: дата-время или только время.`,control:`inline-radio`,options:[`date-time`,`time`]}}},Y={render:e=>{let[t,n]=(0,K.useState)(e.value??new Date(2026,2,5,9,15,0,0));return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(U,{...e,value:t,onChange:n}),(0,q.jsxs)(`p`,{children:[`Вывод значения через `,(0,q.jsx)(`code`,{className:`statusInfo`,children:`formatDateAsDateTime(value)`}),`:`]}),(0,q.jsx)(`pre`,{children:l(t)}),(0,q.jsxs)(`p`,{children:[`Вывод значения через `,(0,q.jsx)(`code`,{className:`statusInfo`,children:`formatDateAsODataDatetime(value)`}),`:`]}),(0,q.jsx)(`pre`,{children:p(t)})]})},args:{label:`Дата и время`,description:`Фиксированный формат: дд.мм.гггг чч:мм`,placeholder:`дд.мм.гггг чч:мм`,timePanelPlacement:`bottom`}},X={render:e=>{let[t,n]=(0,K.useState)(new Date(1970,0,1,9,15,0,0));return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(U,{...e,value:t,onChange:n}),(0,q.jsxs)(`p`,{children:[`Вывод значения через `,(0,q.jsx)(`code`,{className:`statusInfo`,children:`formatDateAsTime(value)`}),`:`]}),(0,q.jsx)(`pre`,{children:u(t)}),(0,q.jsx)(`p`,{children:`Техническая дата значения всегда фиксируется как 01.01.1970.`}),(0,q.jsx)(`pre`,{children:t?t.toISOString():``})]})},args:{label:`Время`,description:`Режим только времени с маской чч:мм и wheel-picker без календаря.`,placeholder:`чч:мм`,mode:`time`,minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0)}},Z={render:e=>{let[t,n]=(0,K.useState)(null);return(0,q.jsx)(U,{...e,value:t,onChange:n})},args:{label:`Пустое значение`,description:`Поле можно заполнить вручную или через popover picker.`,placeholder:`дд.мм.гггг чч:мм`,timePanelPlacement:`bottom`}},Q={render:e=>{let[t,n]=(0,K.useState)(new Date(2026,2,10,12,30,0,0));return(0,q.jsx)(U,{...e,value:t,onChange:n})},args:{label:`Дата отгрузки`,description:`Доступен только интервал с 10 по 12 марта 2026 года.`,minDate:new Date(2026,2,10,9,0,0,0),maxDate:new Date(2026,2,12,18,30,0,0),timePanelPlacement:`bottom`}},$={render:e=>{let[t,n]=(0,K.useState)(new Date(2026,2,10,12,30,0,0));return(0,q.jsx)(U,{...e,value:t,onChange:n})},args:{label:`Дата и время`,description:`Wheel-панель времени расположена справа от календаря.`,timePanelPlacement:`right`}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
2
+ render: args => {
3
+ const [value, setValue] = useState<Date | null>(args.value ?? new Date(2026, 2, 5, 9, 15, 0, 0));
4
+ return <div>
5
+ <SingleDateTimeInput {...args} value={value} onChange={setValue} />
6
+
7
+ <p>
8
+ Вывод значения через <code className="statusInfo">formatDateAsDateTime(value)</code>:
9
+ </p>
10
+ <pre>{formatDateAsDateTime(value)}</pre>
11
+ <p>
12
+ Вывод значения через <code className="statusInfo">formatDateAsODataDatetime(value)</code>:
13
+ </p>
14
+ <pre>{formatDateAsODataDatetime(value)}</pre>
15
+ </div>;
16
+ },
17
+ args: {
18
+ label: "Дата и время",
19
+ description: "Фиксированный формат: дд.мм.гггг чч:мм",
20
+ placeholder: "дд.мм.гггг чч:мм",
21
+ timePanelPlacement: "bottom"
22
+ }
23
+ }`,...Y.parameters?.docs?.source},description:{story:`Демонстрирует основной сценарий выбора даты и времени с точностью до минуты.`,...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
24
+ render: args => {
25
+ const [value, setValue] = useState<Date | null>(new Date(1970, 0, 1, 9, 15, 0, 0));
26
+ return <div>
27
+ <SingleDateTimeInput {...args} value={value} onChange={setValue} />
28
+
29
+ <p>
30
+ Вывод значения через <code className="statusInfo">formatDateAsTime(value)</code>:
31
+ </p>
32
+ <pre>{formatDateAsTime(value)}</pre>
33
+ <p>Техническая дата значения всегда фиксируется как 01.01.1970.</p>
34
+ <pre>{value ? value.toISOString() : ""}</pre>
35
+ </div>;
36
+ },
37
+ args: {
38
+ label: "Время",
39
+ description: "Режим только времени с маской чч:мм и wheel-picker без календаря.",
40
+ placeholder: "чч:мм",
41
+ mode: "time",
42
+ minDate: new Date(2026, 2, 10, 9, 15, 0, 0),
43
+ maxDate: new Date(2026, 2, 10, 18, 30, 0, 0)
44
+ }
45
+ }`,...X.parameters?.docs?.source},description:{story:"Демонстрирует режим выбора только времени на технической дате `1970-01-01`.",...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
46
+ render: args => {
47
+ const [value, setValue] = useState<Date | null>(null);
48
+ return <SingleDateTimeInput {...args} value={value} onChange={setValue} />;
49
+ },
50
+ args: {
51
+ label: "Пустое значение",
52
+ description: "Поле можно заполнить вручную или через popover picker.",
53
+ placeholder: "дд.мм.гггг чч:мм",
54
+ timePanelPlacement: "bottom"
55
+ }
56
+ }`,...Z.parameters?.docs?.source},description:{story:`Показывает пустое контролируемое значение.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
57
+ render: args => {
58
+ const [value, setValue] = useState<Date | null>(new Date(2026, 2, 10, 12, 30, 0, 0));
59
+ return <SingleDateTimeInput {...args} value={value} onChange={setValue} />;
60
+ },
61
+ args: {
62
+ label: "Дата отгрузки",
63
+ description: "Доступен только интервал с 10 по 12 марта 2026 года.",
64
+ minDate: new Date(2026, 2, 10, 9, 0, 0, 0),
65
+ maxDate: new Date(2026, 2, 12, 18, 30, 0, 0),
66
+ timePanelPlacement: "bottom"
67
+ }
68
+ }`,...Q.parameters?.docs?.source},description:{story:`Демонстрирует ограничение диапазона и синхронизацию календаря со временем.`,...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
69
+ render: args => {
70
+ const [value, setValue] = useState<Date | null>(new Date(2026, 2, 10, 12, 30, 0, 0));
71
+ return <SingleDateTimeInput {...args} value={value} onChange={setValue} />;
72
+ },
73
+ args: {
74
+ label: "Дата и время",
75
+ description: "Wheel-панель времени расположена справа от календаря.",
76
+ timePanelPlacement: "right"
77
+ }
78
+ }`,...$.parameters?.docs?.source},description:{story:`Демонстрирует размещение wheel-панели справа от календаря.`,...$.parameters?.docs?.description}}},Se=[`Default`,`TimeOnly`,`Empty`,`WithLimits`,`WithRightPanel`]}));Ce();export{Y as Default,Z as Empty,X as TimeOnly,Q as WithLimits,$ as WithRightPanel,Se as __namedExportsOrder,J as default,Ce as n,xe as t};
@@ -0,0 +1,63 @@
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-DBO0IAf-.js";import{t as f}from"./mdx-react-shim-BgV0cHDR.js";import{Disabled as p,MonthsIndexMarks as m,RangeMonthToDaysOutput as h,RangeOpenMonthToDaysOutput as g,RangeOpenWithoutExplicitMiddleOutput as _,RangePlain as v,SingleStep as y,SingleWithMarks as b,n as x,t as S}from"./Slider.stories-XznJbVtO.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(o,{of:S,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,T.jsx)(l,{children:`Slider`}),`
3
+ `,(0,T.jsx)(a,{children:`Компактные single и range слайдеры с marks, tooltip и открытыми границами`}),`
4
+ `,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`Slider`}),` и `,(0,T.jsx)(t.code,{children:`SliderRange`}),` — отдельные публичные компоненты. Оба используют общую числовую шкалу, но не смешивают single/range через prop.`]}),`
5
+ `,(0,T.jsxs)(t.ul,{children:[`
6
+ `,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`Slider`}),` возвращает одно finite-число;`]}),`
7
+ `,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`SliderRange`}),` возвращает `,(0,T.jsx)(t.code,{children:`[number | null, number | null]`}),`;`]}),`
8
+ `,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`null`}),` в range означает открытую границу;`]}),`
9
+ `,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`marks`}),` всегда задают snap-домен;`]}),`
10
+ `,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`marksPosition="index"`}),` размещает marks с равным визуальным шагом.`]}),`
11
+ `]}),`
12
+ `,(0,T.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
13
+ `,(0,T.jsx)(d,{}),`
14
+ `,(0,T.jsx)(r,{of:y}),`
15
+ `,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
16
+
17
+ import { Slider } from "@/shared/ui";
18
+
19
+ export function Example() {
20
+ const [value, setValue] = useState<number | undefined>(35);
21
+
22
+ return <Slider label="Громкость" min={0} max={100} step={5} value={value} onChange={setValue} />;
23
+ }
24
+ `})}),`
25
+ `,(0,T.jsx)(t.h2,{id:`range-с-открытой-границей`,children:`Range с открытой границей`}),`
26
+ `,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
27
+
28
+ import { SliderRange, type SliderRangeValue } from "@/shared/ui";
29
+
30
+ const marks = [
31
+ { value: 0, label: "До 3 мес.", outputValue: null },
32
+ { value: 3, label: "3 мес." },
33
+ { value: 6, label: "6 мес." },
34
+ { value: 24, label: "От 24 мес.", outputValue: null }
35
+ ] as const;
36
+
37
+ export function Example() {
38
+ const [value, setValue] = useState<SliderRangeValue | undefined>([null, 6]);
39
+
40
+ return <SliderRange label="Период" min={0} max={24} marks={marks} marksPosition="index" value={value} onChange={setValue} />;
41
+ }
42
+ `})}),`
43
+ `,(0,T.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
44
+ `,(0,T.jsx)(t.h3,{id:`single-со-step`,children:`Single со step`}),`
45
+ `,(0,T.jsx)(u,{of:y}),`
46
+ `,(0,T.jsx)(t.h3,{id:`single-с-compact-marks`,children:`Single с compact marks`}),`
47
+ `,(0,T.jsx)(u,{of:b}),`
48
+ `,(0,T.jsx)(t.h3,{id:`равные-расстояния-между-неравномерными-значениями`,children:`Равные расстояния между неравномерными значениями`}),`
49
+ `,(0,T.jsx)(u,{of:m}),`
50
+ `,(0,T.jsx)(t.h3,{id:`range-без-outputvalue`,children:`Range без outputValue`}),`
51
+ `,(0,T.jsx)(u,{of:v}),`
52
+ `,(0,T.jsx)(t.h3,{id:`range-с-открытыми-границами-без-outputvalue-у-обычных-marks`,children:`Range с открытыми границами без outputValue у обычных marks`}),`
53
+ `,(0,T.jsx)(u,{of:_}),`
54
+ `,(0,T.jsx)(t.h3,{id:`range-с-outputvalue-месяцы-на-шкале-дни-в-фильтре`,children:`Range с outputValue: месяцы на шкале, дни в фильтре`}),`
55
+ `,(0,T.jsx)(u,{of:h}),`
56
+ `,(0,T.jsx)(t.h3,{id:`range-с-outputvalue-и-открытыми-границами`,children:`Range с outputValue и открытыми границами`}),`
57
+ `,(0,T.jsx)(u,{of:g}),`
58
+ `,(0,T.jsx)(t.h3,{id:`disabled`,children:`Disabled`}),`
59
+ `,(0,T.jsx)(u,{of:p}),`
60
+ `,(0,T.jsx)(t.h2,{id:`api`,children:`API`}),`
61
+ `,(0,T.jsx)(c,{of:S}),`
62
+ `,(0,T.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
63
+ `,(0,T.jsx)(i,{includePrimary:!1})]})}function w(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,T.jsx)(t,{...e,children:(0,T.jsx)(C,{...e})}):C(e)}var T;e((()=>{T=t(),f(),s(),x()}))();export{w as default};
@@ -0,0 +1,77 @@
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-NOj5DEP4.js";import{a,o,t as s}from"./slider-B5mloux6.js";var c=e({Disabled:()=>D,MonthsIndexMarks:()=>S,RangeMonthToDaysOutput:()=>T,RangeOpenMonthToDaysOutput:()=>E,RangeOpenWithoutExplicitMiddleOutput:()=>w,RangePlain:()=>C,SingleStep:()=>b,SingleWithMarks:()=>x,__namedExportsOrder:()=>O,default:()=>y});function l(e,t){return e===null?`null`:`${e}${t}`}function u(e,t,n=``){let[r,i]=e??[null,null],a=[];return r!==null&&a.push(`${t} >= ${r}${n}`),i!==null&&a.push(`${t} <= ${i}${n}`),a.length>0?a.join(` AND `):`Фильтр не ограничивает значение`}function d({value:e,field:t,unit:n=``,children:r}){let[i,a]=e??[null,null];return(0,p.jsxs)(`div`,{className:`marginTopMd`,children:[(0,p.jsx)(`div`,{className:`textSm сontent2`,children:`Preview фильтра`}),(0,p.jsx)(`pre`,{children:JSON.stringify({value:[i,a],human:`${l(i,n)} — ${l(a,n)}`,filter:u(e,t,n)},null,2)}),r]})}var f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k=n((()=>{f=t(r(),1),s(),p=i(),m=[{value:0,label:`0`},{value:25,label:`25`},{value:50,label:`50`},{value:75,label:`75`},{value:100,label:`100`}],h=[{value:1,label:`1 мес.`},{value:3,label:`3 мес.`},{value:6,label:`6 мес.`},{value:9,label:`9 мес.`},{value:12,label:`12 мес.`},{value:18,label:`18 мес.`},{value:24,label:`24 мес.`}],g=[{value:0,label:`Без нижней границы`,outputValue:null},{value:1,label:`1 мес.`},{value:3,label:`3 мес.`},{value:6,label:`6 мес.`},{value:12,label:`12 мес.`},{value:24,label:`24 мес.`},{value:25,label:`Без верхней границы`,outputValue:null}],_=[{value:1,label:`1 мес.`,outputValue:30},{value:3,label:`3 мес.`,outputValue:90},{value:6,label:`6 мес.`,outputValue:180},{value:12,label:`12 мес.`,outputValue:360},{value:24,label:`24 мес.`,outputValue:720}],v=[{value:0,label:`Без нижней границы`,outputValue:null},{value:1,label:`1 мес.`,outputValue:30},{value:3,label:`3 мес.`,outputValue:90},{value:6,label:`6 мес.`,outputValue:180},{value:12,label:`12 мес.`,outputValue:360},{value:24,label:`24 мес.`,outputValue:720},{value:25,label:`Без верхней границы`,outputValue:null}],y={title:`Shared/UI/Slider`,component:a,args:{value:30,onChange:()=>{},min:0,max:100,step:5},parameters:{atomicCanvas:!0,layout:`padded`}},b={render:e=>{let t=e,[n,r]=(0,f.useState)(e.value);return(0,p.jsx)(a,{...t,label:`Громкость`,value:n,onChange:r})},args:{description:`Компактный single-value слайдер со step=5.`,value:35,step:5}},x={render:e=>{let t=e,[n,r]=(0,f.useState)(50);return(0,p.jsx)(a,{...t,label:`Процент выполнения`,value:n,onChange:r})},args:{description:`Marks активны, кликабельны и показывают подписи через tooltip.`,value:50,marks:m}},S={render:e=>{let t=e,[n,r]=(0,f.useState)(6);return(0,p.jsx)(a,{...t,label:`Срок`,value:n,onChange:r})},args:{min:1,max:24,value:6,marks:h,marksPosition:`index`,description:`Неравномерные значения месяцев расположены с равным визуальным шагом.`}},C={render:()=>{let[e,t]=(0,f.useState)([25,75]);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o,{label:`Процент выполнения`,description:"Обычный range: `value` mark является и координатой шкалы, и значением фильтра.",min:0,max:100,marks:m,value:e,onChange:t}),(0,p.jsx)(d,{value:e,field:`progress`,unit:`%`})]})}},w={render:()=>{let[e,t]=(0,f.useState)([null,12]);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o,{label:`Срок в месяцах`,description:"Открытые границы задаются только крайними `outputValue:null`; у обычных marks outputValue не указан и берётся `value`.",min:0,max:25,marks:g,marksPosition:`index`,value:e,onChange:t}),(0,p.jsx)(d,{value:e,field:`months`,unit:` мес.`})]})}},T={render:()=>{let[e,t]=(0,f.useState)([90,360]);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o,{label:`Срок: месяцы на шкале, дни в фильтре`,description:"`value` хранит координату/месяцы, `outputValue` отдаёт наружу дни.",min:1,max:24,marks:_,marksPosition:`index`,value:e,onChange:t}),(0,p.jsx)(d,{value:e,field:`days`,unit:` дн.`})]})}},E={render:()=>{let[e,t]=(0,f.useState)([null,720]);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o,{label:`Срок: открытые границы и дни в фильтре`,description:"Крайние marks отдают null, обычные marks отдают дни через `outputValue`.",min:0,max:25,marks:v,marksPosition:`index`,value:e,onChange:t}),(0,p.jsx)(d,{value:e,field:`days`,unit:` дн.`})]})}},D={args:{label:`Недоступно`,description:`Состояние без интеракций.`,value:40,disabled:!0,marks:m}},b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`{
2
+ render: args => {
3
+ const sliderArgs = args as SliderProps;
4
+ const [value, setValue] = useState<number | undefined>(args.value as number | undefined);
5
+ return <Slider {...sliderArgs} label="Громкость" value={value} onChange={setValue} />;
6
+ },
7
+ args: {
8
+ description: "Компактный single-value слайдер со step=5.",
9
+ value: 35,
10
+ step: 5
11
+ }
12
+ }`,...b.parameters?.docs?.source}}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
13
+ render: args => {
14
+ const sliderArgs = args as SliderProps;
15
+ const [value, setValue] = useState<number | undefined>(50);
16
+ return <Slider {...sliderArgs} label="Процент выполнения" value={value} onChange={setValue} />;
17
+ },
18
+ args: {
19
+ description: "Marks активны, кликабельны и показывают подписи через tooltip.",
20
+ value: 50,
21
+ marks: percentMarks
22
+ }
23
+ }`,...x.parameters?.docs?.source}}},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
24
+ render: args => {
25
+ const sliderArgs = args as SliderProps;
26
+ const [value, setValue] = useState<number | undefined>(6);
27
+ return <Slider {...sliderArgs} label="Срок" value={value} onChange={setValue} />;
28
+ },
29
+ args: {
30
+ min: 1,
31
+ max: 24,
32
+ value: 6,
33
+ marks: monthMarks,
34
+ marksPosition: "index",
35
+ description: "Неравномерные значения месяцев расположены с равным визуальным шагом."
36
+ }
37
+ }`,...S.parameters?.docs?.source}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
38
+ render: () => {
39
+ const [value, setValue] = useState<SliderRangeValue | undefined>([25, 75]);
40
+ return <>
41
+ <SliderRange label="Процент выполнения" description="Обычный range: \`value\` mark является и координатой шкалы, и значением фильтра." min={0} max={100} marks={percentMarks} value={value} onChange={setValue} />
42
+ <RangePreview value={value} field="progress" unit="%" />
43
+ </>;
44
+ }
45
+ }`,...C.parameters?.docs?.source}}},w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
46
+ render: () => {
47
+ const [value, setValue] = useState<SliderRangeValue | undefined>([null, 12]);
48
+ return <>
49
+ <SliderRange label="Срок в месяцах" description="Открытые границы задаются только крайними \`outputValue:null\`; у обычных marks outputValue не указан и берётся \`value\`." min={0} max={25} marks={openMonthMarks} marksPosition="index" value={value} onChange={setValue} />
50
+ <RangePreview value={value} field="months" unit=" мес." />
51
+ </>;
52
+ }
53
+ }`,...w.parameters?.docs?.source}}},T.parameters={...T.parameters,docs:{...T.parameters?.docs,source:{originalSource:`{
54
+ render: () => {
55
+ const [value, setValue] = useState<SliderRangeValue | undefined>([90, 360]);
56
+ return <>
57
+ <SliderRange label="Срок: месяцы на шкале, дни в фильтре" description="\`value\` хранит координату/месяцы, \`outputValue\` отдаёт наружу дни." min={1} max={24} marks={monthToDayMarks} marksPosition="index" value={value} onChange={setValue} />
58
+ <RangePreview value={value} field="days" unit=" дн." />
59
+ </>;
60
+ }
61
+ }`,...T.parameters?.docs?.source}}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
62
+ render: () => {
63
+ const [value, setValue] = useState<SliderRangeValue | undefined>([null, 720]);
64
+ return <>
65
+ <SliderRange label="Срок: открытые границы и дни в фильтре" description="Крайние marks отдают null, обычные marks отдают дни через \`outputValue\`." min={0} max={25} marks={openMonthToDayMarks} marksPosition="index" value={value} onChange={setValue} />
66
+ <RangePreview value={value} field="days" unit=" дн." />
67
+ </>;
68
+ }
69
+ }`,...E.parameters?.docs?.source}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
70
+ args: {
71
+ label: "Недоступно",
72
+ description: "Состояние без интеракций.",
73
+ value: 40,
74
+ disabled: true,
75
+ marks: percentMarks
76
+ }
77
+ }`,...D.parameters?.docs?.source}}},O=[`SingleStep`,`SingleWithMarks`,`MonthsIndexMarks`,`RangePlain`,`RangeOpenWithoutExplicitMiddleOutput`,`RangeMonthToDaysOutput`,`RangeOpenMonthToDaysOutput`,`Disabled`]}));k();export{D as Disabled,S as MonthsIndexMarks,T as RangeMonthToDaysOutput,E as RangeOpenMonthToDaysOutput,w as RangeOpenWithoutExplicitMiddleOutput,C as RangePlain,b as SingleStep,x as SingleWithMarks,O as __namedExportsOrder,y as default,k as n,c as t};
@@ -0,0 +1,58 @@
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-DBO0IAf-.js";import{t as f}from"./mdx-react-shim-BgV0cHDR.js";import{Basic as p,DecimalManualInput as m,Disabled as h,MarksSnap as g,RangeInputMonthToDaysOutput as _,RangeInputOpenMonthToDaysOutput as v,RangeInputOpenWithoutExplicitMiddleOutput as y,RangeInputPlain as b,RangeInputReadonlyText as x,n as S,t as C}from"./SliderInput.stories-BK5zJTQY.js";function w(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(o,{of:C,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,E.jsx)(l,{children:`SliderInput`}),`
3
+ `,(0,E.jsx)(a,{children:`Поля ввода для single и range с popover slider`}),`
4
+ `,(0,E.jsxs)(t.p,{children:[(0,E.jsx)(t.code,{children:`SliderInput`}),` работает с одним числом, а `,(0,E.jsx)(t.code,{children:`SliderRangeInput`}),` — с диапазоном `,(0,E.jsx)(t.code,{children:`[number | null, number | null]`}),`.`]}),`
5
+ `,(0,E.jsxs)(t.ul,{children:[`
6
+ `,(0,E.jsxs)(t.li,{children:[`ручной ввод коммитится на `,(0,E.jsx)(t.code,{children:`blur`}),` и `,(0,E.jsx)(t.code,{children:`Enter`}),`;`]}),`
7
+ `,(0,E.jsx)(t.li,{children:`невалидный draft откатывается к последнему committed значению;`}),`
8
+ `,(0,E.jsx)(t.li,{children:`popover показывает полные подписи marks;`}),`
9
+ `,(0,E.jsxs)(t.li,{children:[(0,E.jsx)(t.code,{children:`SliderRangeInput`}),` выглядит как один control с двумя сегментами;`]}),`
10
+ `,(0,E.jsxs)(t.li,{children:[`пустой range-сегмент коммитится как `,(0,E.jsx)(t.code,{children:`null`}),` и отображается как `,(0,E.jsx)(t.code,{children:`-∞`}),` или `,(0,E.jsx)(t.code,{children:`∞`}),`.`]}),`
11
+ `]}),`
12
+ `,(0,E.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
13
+ `,(0,E.jsx)(d,{}),`
14
+ `,(0,E.jsx)(r,{of:p}),`
15
+ `,(0,E.jsx)(t.pre,{children:(0,E.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
16
+
17
+ import { SliderInput } from "@/shared/ui";
18
+
19
+ export function Example() {
20
+ const [value, setValue] = useState<number | undefined>(12);
21
+
22
+ return <SliderInput label="Порог" min={0} max={100} step={0.5} value={value} onChange={setValue} />;
23
+ }
24
+ `})}),`
25
+ `,(0,E.jsx)(t.h2,{id:`rangeinput`,children:`RangeInput`}),`
26
+ `,(0,E.jsx)(t.pre,{children:(0,E.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
27
+
28
+ import { SliderRangeInput, type SliderRangeValue } from "@/shared/ui";
29
+
30
+ export function Example() {
31
+ const [value, setValue] = useState<SliderRangeValue | undefined>([null, 12]);
32
+
33
+ return <SliderRangeInput label="Период" min={0} max={24} value={value} onChange={setValue} />;
34
+ }
35
+ `})}),`
36
+ `,(0,E.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
37
+ `,(0,E.jsx)(t.h3,{id:`базовый-single-input`,children:`Базовый single input`}),`
38
+ `,(0,E.jsx)(u,{of:p}),`
39
+ `,(0,E.jsx)(t.h3,{id:`snap-по-marks`,children:`Snap по marks`}),`
40
+ `,(0,E.jsx)(u,{of:g}),`
41
+ `,(0,E.jsx)(t.h3,{id:`десятичный-ручной-ввод`,children:`Десятичный ручной ввод`}),`
42
+ `,(0,E.jsx)(u,{of:m}),`
43
+ `,(0,E.jsx)(t.h3,{id:`rangeinput-без-outputvalue`,children:`RangeInput без outputValue`}),`
44
+ `,(0,E.jsx)(u,{of:b}),`
45
+ `,(0,E.jsx)(t.h3,{id:`rangeinput-с-открытыми-границами-без-outputvalue-у-обычных-marks`,children:`RangeInput с открытыми границами без outputValue у обычных marks`}),`
46
+ `,(0,E.jsx)(u,{of:y}),`
47
+ `,(0,E.jsx)(t.h3,{id:`rangeinput-с-outputvalue-месяцы-на-шкале-дни-в-фильтре`,children:`RangeInput с outputValue: месяцы на шкале, дни в фильтре`}),`
48
+ `,(0,E.jsx)(u,{of:_}),`
49
+ `,(0,E.jsx)(t.h3,{id:`rangeinput-с-outputvalue-и-открытыми-границами`,children:`RangeInput с outputValue и открытыми границами`}),`
50
+ `,(0,E.jsx)(u,{of:v}),`
51
+ `,(0,E.jsx)(t.h3,{id:`rangeinput-с-текстом-вместо-ручного-ввода`,children:`RangeInput с текстом вместо ручного ввода`}),`
52
+ `,(0,E.jsx)(u,{of:x}),`
53
+ `,(0,E.jsx)(t.h3,{id:`disabled`,children:`Disabled`}),`
54
+ `,(0,E.jsx)(u,{of:h}),`
55
+ `,(0,E.jsx)(t.h2,{id:`api`,children:`API`}),`
56
+ `,(0,E.jsx)(c,{of:C}),`
57
+ `,(0,E.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
58
+ `,(0,E.jsx)(i,{includePrimary:!1})]})}function T(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,E.jsx)(t,{...e,children:(0,E.jsx)(w,{...e})}):w(e)}var E;e((()=>{E=t(),f(),s(),S()}))();export{T as default};