@ryuzaki13/react-foundation-ui 1.4.0 → 1.4.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 (194) hide show
  1. package/dist/tree-select/index.js +63 -69
  2. package/dist/tree-select/index.js.map +1 -1
  3. package/dist/tree-select/model/buildTreeColumnsLayoutDescriptor.d.ts +3 -4
  4. package/dist/tree-select/model/buildTreeColumnsLayoutDescriptor.d.ts.map +1 -1
  5. package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts +2 -2
  6. package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts.map +1 -1
  7. package/package.json +1 -1
  8. package/storybook-static/assets/{Badge-gSh8l-os.js → Badge-DrS-PqPt.js} +1 -1
  9. package/storybook-static/assets/{Badge.stories-BS7dTFrU.js → Badge.stories-DwBMjWuT.js} +1 -1
  10. package/storybook-static/assets/{Button-YeLofqo6.js → Button-CIC4xzqW.js} +1 -1
  11. package/storybook-static/assets/{Button-CIsa_NLR.js → Button-Dpi111u7.js} +1 -1
  12. package/storybook-static/assets/{Button.stories-Bhb87Dqw.js → Button.stories-DZmRqHrE.js} +1 -1
  13. package/storybook-static/assets/{CheckBox-BEkP7-_V.js → CheckBox-B2HRisgL.js} +1 -1
  14. package/storybook-static/assets/{CheckBox-zKT33Upg.js → CheckBox-DHWs_MEe.js} +1 -1
  15. package/storybook-static/assets/{CheckBox.stories-CoXcAm05.js → CheckBox.stories-ChxWTQwY.js} +1 -1
  16. package/storybook-static/assets/{Color-KMSTOMOX-hhoYimsF.js → Color-KMSTOMOX-Ct0gfrkd.js} +1 -1
  17. package/storybook-static/assets/{ContextMenu-DyY1tQ1E.js → ContextMenu-BH2hpaXG.js} +1 -1
  18. package/storybook-static/assets/{ContextMenu.stories-x8GI34yZ.js → ContextMenu.stories-D8QOi68M.js} +1 -1
  19. package/storybook-static/assets/{DateInput-BhFywEgL.js → DateInput-DCJw3t_Z.js} +1 -1
  20. package/storybook-static/assets/{DateInput-DKFrWLZc.js → DateInput-aifcbvnl.js} +1 -1
  21. package/storybook-static/assets/{DateInput.stories-CcGZPbRD.js → DateInput.stories-BG4-DoSj.js} +1 -1
  22. package/storybook-static/assets/{DateRangePresetSelect-B_97NkVH.js → DateRangePresetSelect-KLRkhxJb.js} +1 -1
  23. package/storybook-static/assets/{DateRangePresetSelect-BUq-lz30.js → DateRangePresetSelect-lWDa-_zo.js} +1 -1
  24. package/storybook-static/assets/{DateRangePresetSelect.stories-DiMDIy2Y.js → DateRangePresetSelect.stories-DyxuSPt4.js} +1 -1
  25. package/storybook-static/assets/{Detail-CW2ecf5q.js → Detail-3XawxFBs.js} +1 -1
  26. package/storybook-static/assets/{Detail.stories-CuHf3Wue.js → Detail.stories-r0AG6eiC.js} +1 -1
  27. package/storybook-static/assets/{Dialog-saV3OBaD.js → Dialog-CnolXXtD.js} +1 -1
  28. package/storybook-static/assets/{Dialog.stories-DJZjDZOj.js → Dialog.stories-DyLAEjua.js} +1 -1
  29. package/storybook-static/assets/{Disclosure-BnQsoyZ9.js → Disclosure-BmQa9ejy.js} +1 -1
  30. package/storybook-static/assets/{Disclosure.stories-CleAOTAa.js → Disclosure.stories-DHFMH6SZ.js} +1 -1
  31. package/storybook-static/assets/DocsRenderer-JROSPFPF-OVZNUiiY.js +2 -0
  32. package/storybook-static/assets/{DropZone-DCYvv6oS.js → DropZone-BLqqXnAE.js} +1 -1
  33. package/storybook-static/assets/{DropZone.stories-BN6UGMzJ.js → DropZone.stories-C6iXDzpC.js} +1 -1
  34. package/storybook-static/assets/{DropdownMenu-CwaWnh5v.js → DropdownMenu-BPIWC5Fe.js} +1 -1
  35. package/storybook-static/assets/{ExpandableActionPanel.stories-BbTtL5H5.js → ExpandableActionPanel.stories-DeBP2SL6.js} +1 -1
  36. package/storybook-static/assets/{Flex-bVf3Ey0I.js → Flex-B1T5p8TC.js} +1 -1
  37. package/storybook-static/assets/{Flex-BIhVP-gi.js → Flex-BvUI9OtR.js} +1 -1
  38. package/storybook-static/assets/{Flex.stories-Bo516CcI.js → Flex.stories-DjHfItG6.js} +1 -1
  39. package/storybook-static/assets/{Grid-D-XK8eGU.js → Grid-BNsFGran.js} +1 -1
  40. package/storybook-static/assets/{Grid-CZL3RCDH.js → Grid-DudjnKE7.js} +1 -1
  41. package/storybook-static/assets/{Grid.stories-f_m-IAqH.js → Grid.stories-BtDwT-co.js} +1 -1
  42. package/storybook-static/assets/{ImageCropper.stories-C4u0eKX8.js → ImageCropper.stories-D1ZTKaL2.js} +1 -1
  43. package/storybook-static/assets/{ImageRenderer-Ctn8BFAc.js → ImageRenderer-C_UGYN2n.js} +1 -1
  44. package/storybook-static/assets/{ImageRenderer.stories-k46-p7GH.js → ImageRenderer.stories-BRm7cNQQ.js} +1 -1
  45. package/storybook-static/assets/{ImageView.stories-Dw9eCMdL.js → ImageView.stories-DbPfP9Vk.js} +1 -1
  46. package/storybook-static/assets/{ImageViewer.stories-DN9QFJtR.js → ImageViewer.stories-CA-tcnt2.js} +2 -2
  47. package/storybook-static/assets/{ImageViewerRuntime-C2241xTn.js → ImageViewerRuntime-FOJk41Ia.js} +1 -1
  48. package/storybook-static/assets/{Input-BRLdK2Si.js → Input-B6zekikL.js} +1 -1
  49. package/storybook-static/assets/{Input-sOZDjUSU.js → Input-Cd3vgy0g.js} +1 -1
  50. package/storybook-static/assets/{Input.stories-DplzGk8u.js → Input.stories-DdEsalmK.js} +1 -1
  51. package/storybook-static/assets/{InputDateTime-BTlRD6aj.js → InputDateTime-EYsJkV-0.js} +1 -1
  52. package/storybook-static/assets/{InputDateTime.stories-B1UvUlhq.js → InputDateTime.stories-CWRMF1Uz.js} +1 -1
  53. package/storybook-static/assets/{InputFile-BQ4vAM0P.js → InputFile-BizeGHyb.js} +1 -1
  54. package/storybook-static/assets/{InputFile.stories-CPdM_Emc.js → InputFile.stories-DSMEa0Hb.js} +1 -1
  55. package/storybook-static/assets/{InputFiles-DQg_DoKH.js → InputFiles-9tzXfyuT.js} +1 -1
  56. package/storybook-static/assets/{InputFiles-WBqlWl_E.js → InputFiles-CL38ESTc.js} +1 -1
  57. package/storybook-static/assets/{InputFiles.stories-Dv1xaXgU.js → InputFiles.stories-Baq4MwqA.js} +1 -1
  58. package/storybook-static/assets/{InputImage-akZIEPgb.js → InputImage-uw3SMJNy.js} +1 -1
  59. package/storybook-static/assets/{InputImage.stories-CH_DiWmh.js → InputImage.stories-CosbCY9j.js} +1 -1
  60. package/storybook-static/assets/{LayoutPicker-ERi6qIDR.js → LayoutPicker-CeiyAZt7.js} +1 -1
  61. package/storybook-static/assets/{LayoutPicker.stories-BrtmW4CE.js → LayoutPicker.stories-Dyqys3DQ.js} +1 -1
  62. package/storybook-static/assets/{Listbox-DY72jU9z.js → Listbox-C-B_og6p.js} +1 -1
  63. package/storybook-static/assets/{Listbox.stories-_QzDM1Ci.js → Listbox.stories-YIJrMp0t.js} +1 -1
  64. package/storybook-static/assets/{Modal-DncLyPfo.js → Modal-CsfpIg6C.js} +1 -1
  65. package/storybook-static/assets/{Modal.stories-C4-NBAXw.js → Modal.stories-BFDuVpN3.js} +1 -1
  66. package/storybook-static/assets/{MultiSelect-B5N-STfq.js → MultiSelect-DY6u4L61.js} +1 -1
  67. package/storybook-static/assets/{MultiSelect-ejIWp-Rz.js → MultiSelect-Dt5HCrYP.js} +1 -1
  68. package/storybook-static/assets/{MultiSelect.stories-XgDrwGuo.js → MultiSelect.stories-bYuh54Fu.js} +1 -1
  69. package/storybook-static/assets/{NotificationsHost-6b9kYvax.js → NotificationsHost-CDI8mQh0.js} +1 -1
  70. package/storybook-static/assets/{NotificationsHost.stories-D09Wq0wZ.js → NotificationsHost.stories-DYvkJ2cU.js} +1 -1
  71. package/storybook-static/assets/{ODataMultiSelect-BFKJRw5K.js → ODataMultiSelect-Bj1NtXx4.js} +1 -1
  72. package/storybook-static/assets/{ODataMultiSelect-BIawkf_b.js → ODataMultiSelect-dD4o0805.js} +1 -1
  73. package/storybook-static/assets/{ODataMultiSelect.stories-CvsX2yER.js → ODataMultiSelect.stories-BS2NR6_9.js} +1 -1
  74. package/storybook-static/assets/{ODataSelect-DIoiZucq.js → ODataSelect-BggbU-2c.js} +1 -1
  75. package/storybook-static/assets/{ODataSelect-Cu6Tjx_s.js → ODataSelect-CalTWDdU.js} +1 -1
  76. package/storybook-static/assets/{ODataSelect.stories-DjwSk6Uy.js → ODataSelect.stories-vTrv4d9z.js} +1 -1
  77. package/storybook-static/assets/{ODataTreeMultiSelect-Bjhif1b9.js → ODataTreeMultiSelect-CMhyGXwM.js} +1 -1
  78. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B3LvjLMX.js → ODataTreeMultiSelect.stories-BZ-NN4dI.js} +2 -2
  79. package/storybook-static/assets/{ODataTreeSelect-DjHtl_iC.js → ODataTreeSelect-mJe6gYMX.js} +1 -1
  80. package/storybook-static/assets/{ODataTreeSelect.stories-BBJKEuMz.js → ODataTreeSelect.stories-DhSjFMeQ.js} +1 -1
  81. package/storybook-static/assets/{PeriodSelect-D1AaJFeL.js → PeriodSelect--wEPFluW.js} +1 -1
  82. package/storybook-static/assets/{PeriodSelect.stories-CmbqFihE.js → PeriodSelect.stories-CZUB8olq.js} +1 -1
  83. package/storybook-static/assets/{Popover-DR8liz-v.js → Popover-CXlXO4Om.js} +1 -1
  84. package/storybook-static/assets/{Popover.stories-DqUV0zog.js → Popover.stories-DpZzhK2O.js} +1 -1
  85. package/storybook-static/assets/{PresetRangeDateInput-BLHAAOsi.js → PresetRangeDateInput-Ek_8-9jx.js} +1 -1
  86. package/storybook-static/assets/{PresetRangeDateInput.stories-CYkMAT2P.js → PresetRangeDateInput.stories-qn-B1IOD.js} +1 -1
  87. package/storybook-static/assets/{RadioButton-C1XwSn49.js → RadioButton-CFyxweTk.js} +1 -1
  88. package/storybook-static/assets/{RadioButton.stories-DEhd2--I.js → RadioButton.stories-DwNfCMGS.js} +1 -1
  89. package/storybook-static/assets/{RadioGroup-C0kqI1LY.js → RadioGroup-BzgaB3tz.js} +1 -1
  90. package/storybook-static/assets/{RadioGroup-C1SuOl8q.js → RadioGroup-DE_bpBiS.js} +1 -1
  91. package/storybook-static/assets/{RadioGroup.stories-B7fIJ67H.js → RadioGroup.stories-DVqgV_4W.js} +1 -1
  92. package/storybook-static/assets/{Select-DJ5LrHt6.js → Select-CJTdiLLf.js} +1 -1
  93. package/storybook-static/assets/{Select-DLjAU3g8.js → Select-CelCWR4u.js} +1 -1
  94. package/storybook-static/assets/{Select.stories-_vkzIMCQ.js → Select.stories-Cgw1rh4h.js} +1 -1
  95. package/storybook-static/assets/{SelectOptionContent-NnKgGdv9.js → SelectOptionContent-Bjy9USsA.js} +1 -1
  96. package/storybook-static/assets/{SerializableSelect-DmJtvEpv.js → SerializableSelect-CsZnvsML.js} +1 -1
  97. package/storybook-static/assets/{SerializableSelect-BR_nTkvZ.js → SerializableSelect-D8YCGkPD.js} +1 -1
  98. package/storybook-static/assets/{SerializableSelect.stories-DbGF0LVI.js → SerializableSelect.stories-R2stgrdq.js} +1 -1
  99. package/storybook-static/assets/{SingleDateTimeInput-DltYiswX.js → SingleDateTimeInput-NGciSlUN.js} +1 -1
  100. package/storybook-static/assets/{SingleDateTimeInput.stories-DmcElJ7B.js → SingleDateTimeInput.stories-CBsxKb4w.js} +1 -1
  101. package/storybook-static/assets/{Slider-CRHuCUbB.js → Slider-J-URo5p1.js} +1 -1
  102. package/storybook-static/assets/{Slider.stories-B2Bnn8xW.js → Slider.stories-BCpR-FX3.js} +1 -1
  103. package/storybook-static/assets/{SliderInput-Dv-_z_sZ.js → SliderInput-D2IjNhE4.js} +1 -1
  104. package/storybook-static/assets/{SliderInput.stories-BP9cwXe3.js → SliderInput.stories-56IQYe6a.js} +1 -1
  105. package/storybook-static/assets/{Sortable-BDspkLd3.js → Sortable-Dut8-sKx.js} +1 -1
  106. package/storybook-static/assets/{Sortable.stories-DqFu5ZAm.js → Sortable.stories-DUCcvgKr.js} +1 -1
  107. package/storybook-static/assets/{Splitter-9N4ZumCX.js → Splitter-Bid56cjA.js} +1 -1
  108. package/storybook-static/assets/{Splitter.stories-DgZFlDGy.js → Splitter.stories-D4odwrXg.js} +1 -1
  109. package/storybook-static/assets/{StateSelect-DsqJaiKP.js → StateSelect-C0z6JyBe.js} +1 -1
  110. package/storybook-static/assets/{StateSelect.stories-Cte9B94C.js → StateSelect.stories-DXdcVPG0.js} +1 -1
  111. package/storybook-static/assets/{StringToggle.stories-DKJ11M4C.js → StringToggle.stories-C8RhgIJd.js} +1 -1
  112. package/storybook-static/assets/{Switch-DYaU9GG7.js → Switch-Di-v9u1A.js} +1 -1
  113. package/storybook-static/assets/{Switch.stories-BtUzES0M.js → Switch.stories-Cfkb4wPd.js} +1 -1
  114. package/storybook-static/assets/{Table-D2BQ2oF-.js → Table-DrsB0gBG.js} +1 -1
  115. package/storybook-static/assets/{Table.stories-BA4_3qL_.js → Table.stories-C24_nZ5H.js} +1 -1
  116. package/storybook-static/assets/{Tabs-Cm9HSlP4.js → Tabs-DkY_hPxX.js} +1 -1
  117. package/storybook-static/assets/{Tabs.stories-DrrusJOZ.js → Tabs.stories-CicNE4cs.js} +1 -1
  118. package/storybook-static/assets/{TagInput.stories-BWDiTIHT.js → TagInput.stories-C3766Yv0.js} +1 -1
  119. package/storybook-static/assets/{Textarea-B4pxQFpd.js → Textarea-CwA3jBjr.js} +1 -1
  120. package/storybook-static/assets/{Textarea.stories-B6UkZhde.js → Textarea.stories-CrRB7fzB.js} +1 -1
  121. package/storybook-static/assets/{TimePanel-D0bfeKGK.js → TimePanel-DoveAQla.js} +1 -1
  122. package/storybook-static/assets/{TimePanel.stories-DKEdciW2.js → TimePanel.stories-D2vUL6s0.js} +1 -1
  123. package/storybook-static/assets/{Toggle-CdbQ9Xt3.js → Toggle-Bo4KR3MN.js} +1 -1
  124. package/storybook-static/assets/{Toggle-CkbbGdLU.js → Toggle-ClOUAjaj.js} +1 -1
  125. package/storybook-static/assets/{Toggle.stories-BgIudoad.js → Toggle.stories-Dnt25rG3.js} +1 -1
  126. package/storybook-static/assets/{TreeMultiSelect-DiPWwhml.js → TreeMultiSelect-CPtnpliv.js} +1 -1
  127. package/storybook-static/assets/{TreeMultiSelect-Cbkr4cDA.js → TreeMultiSelect-DE3AQOZl.js} +1 -1
  128. package/storybook-static/assets/{TreeMultiSelect.stories-BBCAd6Gq.js → TreeMultiSelect.stories-BVo2A9HK.js} +2 -2
  129. package/storybook-static/assets/TreePickerBase-DiMmn5I3.js +22 -0
  130. package/storybook-static/assets/{TreeSelect-BnNzwMQT.js → TreeSelect-Cs_tb930.js} +1 -1
  131. package/storybook-static/assets/{TreeSelect-CgvMcoPB.js → TreeSelect-JTI9tQ4C.js} +1 -1
  132. package/storybook-static/assets/{TreeSelect.stories-S2zo4fAX.js → TreeSelect.stories-C6Gm2YfT.js} +1 -1
  133. package/storybook-static/assets/{TreeTable-FAzFcf-t.js → TreeTable-rbcFU6RL.js} +1 -1
  134. package/storybook-static/assets/{TreeTable.stories-DXxhWXqi.js → TreeTable.stories-CXJMSxQu.js} +1 -1
  135. package/storybook-static/assets/{WithTooltip-7X4HQR7L-BeB8nhAE.js → WithTooltip-7X4HQR7L-DVJE2Dqb.js} +1 -1
  136. package/storybook-static/assets/{async-Bgo99s0E.js → async-DoYCd2O1.js} +1 -1
  137. package/storybook-static/assets/{base-table-AmSzYs6_.js → base-table-_WBb2IZM.js} +1 -1
  138. package/storybook-static/assets/{blocks-Dmj58mhm.js → blocks-kCueRzKM.js} +6 -6
  139. package/storybook-static/assets/{button-3eX4X1pF.js → button-BfP43NV5.js} +1 -1
  140. package/storybook-static/assets/{check-box-rktGSTee.js → check-box-jgZW0_tB.js} +1 -1
  141. package/storybook-static/assets/{chunk-3LY4VQVK-JWq0LFl5.js → chunk-3LY4VQVK-DgbtId2R.js} +1 -1
  142. package/storybook-static/assets/{chunk-LITCR56V-BbahN_yV.js → chunk-LITCR56V-C-pEySCh.js} +1 -1
  143. package/storybook-static/assets/{contextMenu-CLL5WAxb.js → contextMenu-BY8W9e2R.js} +1 -1
  144. package/storybook-static/assets/{date-CkgxDok0.js → date-CuKkMWak.js} +1 -1
  145. package/storybook-static/assets/{error-Z7w1iONy.js → error-BkkZrYYA.js} +1 -1
  146. package/storybook-static/assets/{file-mHK2nrmr.js → file-CfhfQiKL.js} +1 -1
  147. package/storybook-static/assets/{flex-DbByv7Hz.js → flex-DYnuC3Jl.js} +1 -1
  148. package/storybook-static/assets/{floating-ui.react-BcrUz8lJ.js → floating-ui.react-fJcp4ywX.js} +1 -1
  149. package/storybook-static/assets/formatter-L2YTDE3Q-CQmzS1Ku.js +1 -0
  150. package/storybook-static/assets/{formatters-CqCEtV8w.js → formatters-Bt3ef0VX.js} +1 -1
  151. package/storybook-static/assets/{formulas-BGZ9BxqL.js → formulas-C5ifYPhi.js} +1 -1
  152. package/storybook-static/assets/grid-DLQc0tY5.js +1 -0
  153. package/storybook-static/assets/{hooks-B3m-jZHN.js → hooks-COY2kUuX.js} +1 -1
  154. package/storybook-static/assets/iframe-CJQlmNUm.css +1 -0
  155. package/storybook-static/assets/{iframe-GalkF0Zs.js → iframe-CqfP7aF1.js} +5 -5
  156. package/storybook-static/assets/{input-BjhZOLSA.js → input-DNF627Va.js} +1 -1
  157. package/storybook-static/assets/{mdx-react-shim-7A_ItrB6.js → mdx-react-shim-4LHuzuKu.js} +1 -1
  158. package/storybook-static/assets/{media-Wv7jf1K7.js → media-CbWC9XZs.js} +1 -1
  159. package/storybook-static/assets/{misc-BdzvD5dq.js → misc-D0Mkvmw8.js} +1 -1
  160. package/storybook-static/assets/{notifications-CuN5DVHQ.js → notifications-CRagNLgf.js} +1 -1
  161. package/storybook-static/assets/{number-JL9wEiuK.js → number-Da4Ulq9E.js} +1 -1
  162. package/storybook-static/assets/{odata-BccFjFfw.js → odata-DUcjBQqp.js} +1 -1
  163. package/storybook-static/assets/odata-service-Rl9UYgzA.js +1 -0
  164. package/storybook-static/assets/{odataFetchFn-C8GFQND8.js → odataFetchFn-DDErUu7H.js} +1 -1
  165. package/storybook-static/assets/{odataStoryFixtures-Dt2Vrdj6.js → odataStoryFixtures-BY3DnLbL.js} +1 -1
  166. package/storybook-static/assets/{persisted-D91MCfhx.js → persisted-DphnlPy-.js} +1 -1
  167. package/storybook-static/assets/{picker-x1g6PYwU.js → picker-D2lWKGk-.js} +1 -1
  168. package/storybook-static/assets/{popover-DBLmjxtw.js → popover-D7McA5RG.js} +1 -1
  169. package/storybook-static/assets/{preset-select-D2w5Mz9w.js → preset-select-FySDZYno.js} +1 -1
  170. package/storybook-static/assets/{pwa-DjKFOgTI.js → pwa-QKsIz2U4.js} +1 -1
  171. package/storybook-static/assets/{queryClient-Drw7gj9q.js → queryClient-Cf_KN496.js} +1 -1
  172. package/storybook-static/assets/{react-18-6hsRe9ic.js → react-18-Dyh2Pzaa.js} +1 -1
  173. package/storybook-static/assets/{react-C8N_JgBl.js → react-BonvwE5R.js} +1 -1
  174. package/storybook-static/assets/{react-dom-Bj91rBuY.js → react-dom--kz57wTp.js} +1 -1
  175. package/storybook-static/assets/select-DsPUjSXp.js +1 -0
  176. package/storybook-static/assets/{slider-DUxUMuwH.js → slider-D93-bn3E.js} +1 -1
  177. package/storybook-static/assets/{sortable-C-fGCbB6.js → sortable-B2Ihqi-W.js} +1 -1
  178. package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-wu6kEAP5.js → syntaxhighlighter-RTCFPKCB-Bh8qQ71X.js} +1 -1
  179. package/storybook-static/assets/{text-LYJNm5Vm.js → text-BCUxHWs4.js} +1 -1
  180. package/storybook-static/assets/{theming-aB5M07PV.js → theming-KsQ_vHzM.js} +1 -1
  181. package/storybook-static/assets/ui-D39u6Dhv.js +1 -0
  182. package/storybook-static/assets/{useODataSelectBase-Conf0Fia.js → useODataSelectBase-BWIM1yqH.js} +1 -1
  183. package/storybook-static/assets/{useODataTreeData-fEdbben5.js → useODataTreeData-CnmOnxqb.js} +1 -1
  184. package/storybook-static/assets/{utils-CPEyORfW.js → utils-BfYZ9Iv_.js} +1 -1
  185. package/storybook-static/assets/{valueState-BqGCah-i.js → valueState-CV4TgbM9.js} +1 -1
  186. package/storybook-static/iframe.html +2 -1
  187. package/storybook-static/project.json +1 -1
  188. package/storybook-static/assets/DocsRenderer-JROSPFPF-Cb487wNy.js +0 -2
  189. package/storybook-static/assets/TreePickerBase-Bh67Enrn.js +0 -22
  190. package/storybook-static/assets/formatter-L2YTDE3Q-E-fuD8S9.js +0 -1
  191. package/storybook-static/assets/grid-BIirsPdV.js +0 -1
  192. package/storybook-static/assets/odata-service-BNu0tuI7.js +0 -1
  193. package/storybook-static/assets/select-D41ZbY27.js +0 -1
  194. package/storybook-static/assets/ui-C5CglmiQ.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{Lt as r,lt as i,n as a,pn as o,t as s}from"./iframe-GalkF0Zs.js";import{a as c,i as l}from"./utils-CPEyORfW.js";import{n as u,t as d}from"./ui.module-wFHXkJzp.js";var f,p,m,h,g,_=n((()=>{f=`Or5LYA`,p=`w0AMfA`,m=`P1x4lq`,h=`-ZVOZo`,g={switchWrapper:f,switch:`qge3io`,iconWrapper:p,auto:m,checked:h}}));function v(e){let{label:t,description:n,disabled:a,checkedIcon:o=(0,b.jsx)(i,{}),uncheckedIcon:s=(0,b.jsx)(r,{}),className:l,type:d,id:f,size:p,placeholder:m,onChange:h,value:_,triState:v,...x}=e,S=(0,y.useId)(),C=f??S,w=n?`${C}-description`:void 0,T=t?`${C}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`?e.value:!1,O=e.triState&&typeof e.value!=`boolean`,k=x[`aria-label`]??(t?void 0:`Переключатель`);return(0,b.jsxs)(`div`,{className:c(u.uiElement,a&&u.disabled),"aria-disabled":a||void 0,children:[t&&(0,b.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,b.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,b.jsx)(`button`,{...x,id:C,type:d??`button`,role:`switch`,disabled:a,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":a,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,g.switchWrapper,l),children:(0,b.jsx)(`div`,{className:g.switch,"data-disabled":a||void 0,children:O?(0,b.jsx)(`div`,{className:c(g.iconWrapper,g.auto,g.checked),children:`Auto`}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:c(g.iconWrapper,!e.value&&g.checked),children:s}),(0,b.jsx)(`div`,{className:c(g.iconWrapper,e.value&&g.checked),children:o})]})})})]})}var y,b,x=n((()=>{y=t(o(),1),l(),a(),d(),_(),b=s(),v.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})),S=e({BiState:()=>E,Disabled:()=>O,TriState:()=>D,__namedExportsOrder:()=>k,default:()=>T}),C,w,T,E,D,O,k,A=n((()=>{C=t(o(),1),x(),w=s(),T={title:`Shared/UI/Switch`,component:v,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:!1},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},E={render:e=>{let[t,n]=(0,C.useState)(!1);return(0,w.jsx)(v,{...e,value:t,onChange:n,triState:!1})}},D={render:e=>{let[t,n]=(0,C.useState)(void 0);return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,w.jsx)(v,{...e,value:t,onChange:n,triState:!0}),(0,w.jsxs)(`div`,{children:[`Текущее значение: `,String(t)]})]})},args:{triState:!0,value:void 0}},O={args:{disabled:!0,value:!0}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{Lt as r,lt as i,n as a,pn as o,t as s}from"./iframe-CqfP7aF1.js";import{a as c,i as l}from"./utils-BfYZ9Iv_.js";import{n as u,t as d}from"./ui.module-wFHXkJzp.js";var f,p,m,h,g,_=n((()=>{f=`Or5LYA`,p=`w0AMfA`,m=`P1x4lq`,h=`-ZVOZo`,g={switchWrapper:f,switch:`qge3io`,iconWrapper:p,auto:m,checked:h}}));function v(e){let{label:t,description:n,disabled:a,checkedIcon:o=(0,b.jsx)(i,{}),uncheckedIcon:s=(0,b.jsx)(r,{}),className:l,type:d,id:f,size:p,placeholder:m,onChange:h,value:_,triState:v,...x}=e,S=(0,y.useId)(),C=f??S,w=n?`${C}-description`:void 0,T=t?`${C}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`?e.value:!1,O=e.triState&&typeof e.value!=`boolean`,k=x[`aria-label`]??(t?void 0:`Переключатель`);return(0,b.jsxs)(`div`,{className:c(u.uiElement,a&&u.disabled),"aria-disabled":a||void 0,children:[t&&(0,b.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,b.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,b.jsx)(`button`,{...x,id:C,type:d??`button`,role:`switch`,disabled:a,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":a,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,g.switchWrapper,l),children:(0,b.jsx)(`div`,{className:g.switch,"data-disabled":a||void 0,children:O?(0,b.jsx)(`div`,{className:c(g.iconWrapper,g.auto,g.checked),children:`Auto`}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:c(g.iconWrapper,!e.value&&g.checked),children:s}),(0,b.jsx)(`div`,{className:c(g.iconWrapper,e.value&&g.checked),children:o})]})})})]})}var y,b,x=n((()=>{y=t(o(),1),l(),a(),d(),_(),b=s(),v.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})),S=e({BiState:()=>E,Disabled:()=>O,TriState:()=>D,__namedExportsOrder:()=>k,default:()=>T}),C,w,T,E,D,O,k,A=n((()=>{C=t(o(),1),x(),w=s(),T={title:`Shared/UI/Switch`,component:v,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:!1},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},E={render:e=>{let[t,n]=(0,C.useState)(!1);return(0,w.jsx)(v,{...e,value:t,onChange:n,triState:!1})}},D={render:e=>{let[t,n]=(0,C.useState)(void 0);return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,w.jsx)(v,{...e,value:t,onChange:n,triState:!0}),(0,w.jsxs)(`div`,{children:[`Текущее значение: `,String(t)]})]})},args:{triState:!0,value:void 0}},O={args:{disabled:!0,value:!0}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState(false);
4
4
  return <Switch {...args} value={value} onChange={setValue} triState={false} />;
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{Basic as p,Empty as m,Fetching as h,Loading as g,MultiSelect as _,ReachEnd as v,WithColumnPinning as y,WithDisabledRows as b,WithFormattingPipeline as x,WithFormulaColumn as S,WithHiddenZero as C,WithMergedDuplicates as w,WithODataMetadataAdapter as T,WithUseODataTableColumnsBuildHook as E,WithUseODataTableColumnsEnrichHook as D,n as O,t as k}from"./Table.stories-BA4_3qL_.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(o,{of:k,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Basic as p,Empty as m,Fetching as h,Loading as g,MultiSelect as _,ReachEnd as v,WithColumnPinning as y,WithDisabledRows as b,WithFormattingPipeline as x,WithFormulaColumn as S,WithHiddenZero as C,WithMergedDuplicates as w,WithODataMetadataAdapter as T,WithUseODataTableColumnsBuildHook as E,WithUseODataTableColumnsEnrichHook as D,n as O,t as k}from"./Table.stories-C24_nZ5H.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(o,{of:k,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,M.jsx)(l,{children:`Table`}),`
3
3
  `,(0,M.jsxs)(a,{children:[`Плоская таблица как React-альтернатива `,(0,M.jsx)(t.code,{children:`sap.m.Table`})]}),`
4
4
  `,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`Table`}),` предназначен для плоских данных и по поведению осознанно сближен с `,(0,M.jsx)(t.code,{children:`TreeTable`}),`.
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{t as a,w as ee}from"./formatters-CqCEtV8w.js";import{D as te,E as o,O as ne,T as re,c as ie,l as ae,s as oe,t as s,v as c}from"./odata-BccFjFfw.js";import{C as se,S as ce,d as le,g as ue,i as de,l as fe,m as pe,n as me,p as he,s as ge,t as l,v as _e,x as u,y as ve}from"./base-table-AmSzYs6_.js";var d,f,p,ye=n((()=>{d=`hKghZt`,f=`QsLRvS`,p={selectedIndicatorCell:d,sentinel:f}}));function be(e,t){return String(t)}function m({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:te,getRowId:o,className:ne,minHeight:re,tableClassName:ae,columnVisibility:oe,defaultColumnVisibility:s,columnOrder:c,defaultColumnOrder:l,columnSizing:u,defaultColumnSizing:d,columnPinning:f,defaultColumnPinning:ye,enableColumnResizing:m=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:_,onColumnVisibilityChange:Se,onColumnOrderChange:Ce,onColumnSizingChange:we,onColumnPinningChange:Te,onRowClick:v,onRowSelectionChange:y,onReachEnd:b,getRowCanSelect:x,getRowClassName:S,renderHeaderContextMenu:C,renderCellContent:w}){let T=(0,h.useMemo)(()=>r??[],[r]),E=(0,h.useMemo)(()=>ue(i),[i]),D=o??be,O=(0,h.useMemo)(()=>new Map(T.map((e,t)=>[D(e,t),e])),[D,T]),k=(0,h.useMemo)(()=>Array.from(O.keys()),[O]),A=(0,h.useRef)(null),j=(0,h.useRef)(null),{rowSelection:M,activateRowSelection:N}=ie({availableRowIds:k,rowById:O,selectionMode:a,selectedRowIds:te,onRowSelectionChange:y}),{columnVisibility:P,onColumnVisibilityChange:F}=ge({columnVisibility:oe,defaultColumnVisibility:s,onColumnVisibilityChange:Se}),{columnOrder:I,onColumnOrderChange:L}=he({columnOrder:c,defaultColumnOrder:l,onColumnOrderChange:Ce}),{columnSizing:R,onColumnSizingChange:z}=fe({columnSizing:u,defaultColumnSizing:d,columnResizeMinWidth:_,onColumnSizingChange:we}),{columnPinning:B,onColumnPinningChange:V}=le({columnPinning:f,defaultColumnPinning:ye,onColumnPinningChange:Te}),H=(0,h.useMemo)(()=>({columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P}),[I,B,R,P]),U=(0,h.useEffectEvent)(()=>{b?.()});(0,h.useEffect)(()=>{if(!b||!A.current||!j.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&U()},{root:A.current,threshold:.1});return e.observe(j.current),()=>e.disconnect()},[t,b,T.length]);let W=ce({data:T,columns:i,state:{columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P,rowSelection:M},onColumnOrderChange:L,onColumnPinningChange:V,onColumnSizingChange:z,onColumnVisibilityChange:F,getRowId:(e,t)=>D(e,t),getCoreRowModel:se(),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:x?x(e.original):!0}),G=ve(W,H),K=W.getRowModel().rows,q=(0,h.useMemo)(()=>pe({rows:K,columns:G}),[K,G]),J=G[0]?.id;return(0,g.jsx)(de,{table:W,columnState:H,title:e,isLoading:t,isFetching:n,className:ne,minHeight:re,tableClassName:ae,selectionMode:a,scrollableRef:A,onActivateRow:a!==`none`||v?e=>{N(e.id,e.getCanSelect()),v?.(e.original)}:void 0,isRowInteractive:e=>!!(v||a!==`none`&&e.getCanSelect()),getRowClassName:e=>S?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===J&&e.getIsSelected()?p.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>q.get(e.id),renderHeaderContextMenu:C,enableColumnResizing:m,enableColumnReordering:xe,columnResizeMinWidth:_,renderCellContent:e=>{let t=ee({field:E.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=_e({columnId:e.cell.column.id,runtimeByColumnId:E.runtimeByColumnId,customCellColumnIds:E.customCellColumnIds})?(0,g.jsx)(me,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return w?w({...e,defaultContent:n,displayValue:t}):n},afterTableContent:b?(0,g.jsx)(`div`,{ref:j,className:p.sentinel,"aria-hidden":`true`}):null})}var h,g,xe=n((()=>{h=t(r(),1),a(),c(),u(),l(),ye(),g=i(),m.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
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-CqfP7aF1.js";import{t as a,w as ee}from"./formatters-Bt3ef0VX.js";import{D as te,E as o,O as ne,T as re,c as ie,l as ae,s as oe,t as s,v as c}from"./odata-DUcjBQqp.js";import{C as se,S as ce,d as le,g as ue,i as de,l as fe,m as pe,n as me,p as he,s as ge,t as l,v as _e,x as u,y as ve}from"./base-table-_WBb2IZM.js";var d,f,p,ye=n((()=>{d=`hKghZt`,f=`QsLRvS`,p={selectedIndicatorCell:d,sentinel:f}}));function be(e,t){return String(t)}function m({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:te,getRowId:o,className:ne,minHeight:re,tableClassName:ae,columnVisibility:oe,defaultColumnVisibility:s,columnOrder:c,defaultColumnOrder:l,columnSizing:u,defaultColumnSizing:d,columnPinning:f,defaultColumnPinning:ye,enableColumnResizing:m=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:_,onColumnVisibilityChange:Se,onColumnOrderChange:Ce,onColumnSizingChange:we,onColumnPinningChange:Te,onRowClick:v,onRowSelectionChange:y,onReachEnd:b,getRowCanSelect:x,getRowClassName:S,renderHeaderContextMenu:C,renderCellContent:w}){let T=(0,h.useMemo)(()=>r??[],[r]),E=(0,h.useMemo)(()=>ue(i),[i]),D=o??be,O=(0,h.useMemo)(()=>new Map(T.map((e,t)=>[D(e,t),e])),[D,T]),k=(0,h.useMemo)(()=>Array.from(O.keys()),[O]),A=(0,h.useRef)(null),j=(0,h.useRef)(null),{rowSelection:M,activateRowSelection:N}=ie({availableRowIds:k,rowById:O,selectionMode:a,selectedRowIds:te,onRowSelectionChange:y}),{columnVisibility:P,onColumnVisibilityChange:F}=ge({columnVisibility:oe,defaultColumnVisibility:s,onColumnVisibilityChange:Se}),{columnOrder:I,onColumnOrderChange:L}=he({columnOrder:c,defaultColumnOrder:l,onColumnOrderChange:Ce}),{columnSizing:R,onColumnSizingChange:z}=fe({columnSizing:u,defaultColumnSizing:d,columnResizeMinWidth:_,onColumnSizingChange:we}),{columnPinning:B,onColumnPinningChange:V}=le({columnPinning:f,defaultColumnPinning:ye,onColumnPinningChange:Te}),H=(0,h.useMemo)(()=>({columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P}),[I,B,R,P]),U=(0,h.useEffectEvent)(()=>{b?.()});(0,h.useEffect)(()=>{if(!b||!A.current||!j.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&U()},{root:A.current,threshold:.1});return e.observe(j.current),()=>e.disconnect()},[t,b,T.length]);let W=ce({data:T,columns:i,state:{columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P,rowSelection:M},onColumnOrderChange:L,onColumnPinningChange:V,onColumnSizingChange:z,onColumnVisibilityChange:F,getRowId:(e,t)=>D(e,t),getCoreRowModel:se(),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:x?x(e.original):!0}),G=ve(W,H),K=W.getRowModel().rows,q=(0,h.useMemo)(()=>pe({rows:K,columns:G}),[K,G]),J=G[0]?.id;return(0,g.jsx)(de,{table:W,columnState:H,title:e,isLoading:t,isFetching:n,className:ne,minHeight:re,tableClassName:ae,selectionMode:a,scrollableRef:A,onActivateRow:a!==`none`||v?e=>{N(e.id,e.getCanSelect()),v?.(e.original)}:void 0,isRowInteractive:e=>!!(v||a!==`none`&&e.getCanSelect()),getRowClassName:e=>S?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===J&&e.getIsSelected()?p.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>q.get(e.id),renderHeaderContextMenu:C,enableColumnResizing:m,enableColumnReordering:xe,columnResizeMinWidth:_,renderCellContent:e=>{let t=ee({field:E.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=_e({columnId:e.cell.column.id,runtimeByColumnId:E.runtimeByColumnId,customCellColumnIds:E.customCellColumnIds})?(0,g.jsx)(me,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return w?w({...e,defaultContent:n,displayValue:t}):n},afterTableContent:b?(0,g.jsx)(`div`,{ref:j,className:p.sentinel,"aria-hidden":`true`}):null})}var h,g,xe=n((()=>{h=t(r(),1),a(),c(),u(),l(),ye(),g=i(),m.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
2
2
 
3
3
  Если передан, таблица синхронизирует визуальное выделение с этим набором id.`},getRowId:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData, index: number) => string`,signature:{arguments:[{type:{name:`TData`},name:`row`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Стабильный идентификатор строки.
4
4
 
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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}from"./blocks-Dmj58mhm.js";import{t as d}from"./mdx-react-shim-7A_ItrB6.js";import{BoxBasic as f,BoxControlled as p,BoxMountStrategies as m,BoxVertical as h,DisabledTabs as g,Empty as _,LayoutPanels as v,LegacyTabs as y,Loading as b,n as x,t as S}from"./Tabs.stories-DrrusJOZ.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}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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}from"./blocks-kCueRzKM.js";import{t as d}from"./mdx-react-shim-4LHuzuKu.js";import{BoxBasic as f,BoxControlled as p,BoxMountStrategies as m,BoxVertical as h,DisabledTabs as g,Empty as _,LayoutPanels as v,LegacyTabs as y,Loading as b,n as x,t as S}from"./Tabs.stories-CicNE4cs.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
2
  `,(0,T.jsx)(l,{children:`Tabs`}),`
3
3
  `,(0,T.jsx)(a,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
4
4
  `,(0,T.jsxs)(t.p,{children:[`После рефакторинга `,(0,T.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{a,i as o,o as ee}from"./utils-CPEyORfW.js";import{c as s,i as c,o as l,t as u,u as d}from"./misc-BdzvD5dq.js";function f(e){return e.find(e=>!e.disabled)?.id??null}function p(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??f(e):f(e)}function m(e){return e.filter(e=>!e.disabled)}function h({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}var g=n((()=>{}));function _({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:a=`automatic`,loop:o=!0}){let s=t!==void 0,c=(0,v.useMemo)(()=>m(e),[e]),l=c[0]?.id??null,[u,d]=(0,v.useState)(()=>p(e,n)),[f,h]=(0,v.useState)(()=>p(e,t??n)),g=p(e,t??n),[_,y]=(0,v.useState)(()=>g?new Set([g]):new Set),b=(0,v.useId)(),x=(0,v.useRef)({}),S=p(e,s?t:u),C=p(e,f)??S??l,te=(0,v.useMemo)(()=>{if(!S||_.has(S))return _;let e=new Set(_);return e.add(S),e},[S,_]),w=t=>{let n=p(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),s||d(n),r?.(n))},ne=e=>{x.current[e]?.focus()},re=e=>{if(c.length<2)return;let t=ee({currentIndex:Math.max(0,c.findIndex(e=>e.id===(C??S??l))),itemCount:c.length,key:e.key,orientation:i,wrap:o});if(t===null)return;e.preventDefault();let n=c[t]?.id;n&&(h(n),ne(n),a===`automatic`&&w(n))},ie=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||h(S??l)},T=e=>`${b}-tab-${e}`,E=e=>`${b}-panel-${e}`;return{activationMode:a,orientation:i,selectedTabId:S,tabbableTabId:C,onTabListKeyDown:re,onTabListBlur:ie,getTabElementId:T,getPanelElementId:E,getTabButtonProps:e=>{let t=e.id===S,n=e.id===C;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:T(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":E(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>h(e.id),onClick:()=>w(e.id)}},isVisited:e=>te.has(e)}}var v,y=n((()=>{v=t(r(),1),o(),g()})),b,x,S,C,te,w,ne,re,ie,T,E,ae,oe,se,ce,le,D,O=n((()=>{b=`pcMjuj`,x=`ITP5v-`,S=`kzs94N`,C=`ZSAoAa`,te=`psYhsZ`,w=`mNDq9-`,ne=`g156KO`,re=`C2mO1e`,ie=`_28F3fs`,T=`UKZXTZ`,E=`jiTafe`,ae=`nhD0k7`,oe=`G8FICe`,se=`W50XHh`,ce=`vnjXkU`,le=`Nzvfhw`,D={tabsContainer:b,bordered:x,cleanPanel:S,tabs:C,panels:te,horizontal:w,vertical:ne,panelScrollable:re,tab:ie,selected:T,panel:E,panelBody:ae,layoutPanels:oe,layoutPanel:se,layoutSection:ce,layoutContent:le}}));function ue({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:r,panelBodyClassName:i,loadingText:o}){return(0,k.jsxs)(`div`,{className:e,children:[(0,k.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,k.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:a(D.tab,`skeletonLine`),children:`Загрузка...`})}),(0,k.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,k.jsx)(`div`,{className:r,children:(0,k.jsx)(`div`,{className:i,children:(0,k.jsx)(d,{text:o,className:`radiusSm`})})})})]})}var k,de=n((()=>{o(),u(),O(),k=i(),ue.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}}));function fe({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,A.jsx)(`div`,{className:e,children:(0,A.jsx)(`div`,{className:t,children:(0,A.jsx)(`div`,{className:n,children:(0,A.jsx)(`div`,{className:r,children:(0,A.jsx)(s,{className:`radiusSm`})})})})})}var A,pe=n((()=>{u(),A=i(),fe.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}}));function me({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,he.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var he,ge=n((()=>{r(),he=i(),me.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}}));function _e({items:e,state:t,className:n,ariaLabel:r,ariaLabelledBy:i}){return(0,j.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":r,"aria-labelledby":i,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,j.jsx)(l,{children:e}):(0,j.jsx)(j.Fragment,{children:e}))(e.map(e=>(0,j.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:a(D.tab,`textWrap`,e.id===t.selectedTabId&&D.selected),children:e.title},e.id)))})}var j,ve=n((()=>{o(),u(),O(),j=i(),_e.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}}));function M({items:e,value:t,defaultValue:n,onValueChange:r,className:i,isLoading:o,loadingText:ee,cleanPanel:s,bordered:c=!1,orientation:l=`horizontal`,activationMode:u=`automatic`,mountStrategy:d=`unmount`,loop:f=!0,"aria-label":p,"aria-labelledby":m}){let g=_({items:e,value:t,defaultValue:n,onValueChange:r,orientation:l,activationMode:u,loop:f}),v=a(D.tabsContainer,D[l],c&&D.bordered,s&&D.cleanPanel,i),y=D.tabs,b=a(D.panels,D.panelScrollable,`scrollable overscroll`),x=D.panel,S=D.panelBody;return o?(0,N.jsx)(ue,{containerClassName:v,tabListClassName:y,panelsClassName:b,panelClassName:x,panelBodyClassName:S,loadingText:ee}):e.length?(0,N.jsxs)(`div`,{className:v,children:[(0,N.jsx)(_e,{items:e,state:g,className:y,ariaLabel:p,ariaLabelledBy:m}),(0,N.jsx)(`div`,{className:b,children:e.map(e=>{let t=e.id===g.selectedTabId;return h({mountStrategy:d,isSelected:t,isVisited:g.isVisited(e.id)})?(0,N.jsx)(me,{tabId:e.id,isSelected:t,className:x,getTabElementId:g.getTabElementId,getPanelElementId:g.getPanelElementId,children:(0,N.jsx)(`div`,{className:S,children:e.content})},e.id):null})})]}):(0,N.jsx)(fe,{containerClassName:v,panelsClassName:b,panelClassName:x,panelBodyClassName:S})}var N,ye=n((()=>{o(),g(),y(),O(),de(),pe(),ge(),ve(),N=i(),M.__docgenInfo={description:`Простой items-based tabs-компонент.
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-CqfP7aF1.js";import{a,i as o,o as ee}from"./utils-BfYZ9Iv_.js";import{c as s,i as c,o as l,t as u,u as d}from"./misc-D0Mkvmw8.js";function f(e){return e.find(e=>!e.disabled)?.id??null}function p(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??f(e):f(e)}function m(e){return e.filter(e=>!e.disabled)}function h({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}var g=n((()=>{}));function _({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:a=`automatic`,loop:o=!0}){let s=t!==void 0,c=(0,v.useMemo)(()=>m(e),[e]),l=c[0]?.id??null,[u,d]=(0,v.useState)(()=>p(e,n)),[f,h]=(0,v.useState)(()=>p(e,t??n)),g=p(e,t??n),[_,y]=(0,v.useState)(()=>g?new Set([g]):new Set),b=(0,v.useId)(),x=(0,v.useRef)({}),S=p(e,s?t:u),C=p(e,f)??S??l,te=(0,v.useMemo)(()=>{if(!S||_.has(S))return _;let e=new Set(_);return e.add(S),e},[S,_]),w=t=>{let n=p(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),s||d(n),r?.(n))},ne=e=>{x.current[e]?.focus()},re=e=>{if(c.length<2)return;let t=ee({currentIndex:Math.max(0,c.findIndex(e=>e.id===(C??S??l))),itemCount:c.length,key:e.key,orientation:i,wrap:o});if(t===null)return;e.preventDefault();let n=c[t]?.id;n&&(h(n),ne(n),a===`automatic`&&w(n))},ie=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||h(S??l)},T=e=>`${b}-tab-${e}`,E=e=>`${b}-panel-${e}`;return{activationMode:a,orientation:i,selectedTabId:S,tabbableTabId:C,onTabListKeyDown:re,onTabListBlur:ie,getTabElementId:T,getPanelElementId:E,getTabButtonProps:e=>{let t=e.id===S,n=e.id===C;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:T(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":E(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>h(e.id),onClick:()=>w(e.id)}},isVisited:e=>te.has(e)}}var v,y=n((()=>{v=t(r(),1),o(),g()})),b,x,S,C,te,w,ne,re,ie,T,E,ae,oe,se,ce,le,D,O=n((()=>{b=`pcMjuj`,x=`ITP5v-`,S=`kzs94N`,C=`ZSAoAa`,te=`psYhsZ`,w=`mNDq9-`,ne=`g156KO`,re=`C2mO1e`,ie=`_28F3fs`,T=`UKZXTZ`,E=`jiTafe`,ae=`nhD0k7`,oe=`G8FICe`,se=`W50XHh`,ce=`vnjXkU`,le=`Nzvfhw`,D={tabsContainer:b,bordered:x,cleanPanel:S,tabs:C,panels:te,horizontal:w,vertical:ne,panelScrollable:re,tab:ie,selected:T,panel:E,panelBody:ae,layoutPanels:oe,layoutPanel:se,layoutSection:ce,layoutContent:le}}));function ue({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:r,panelBodyClassName:i,loadingText:o}){return(0,k.jsxs)(`div`,{className:e,children:[(0,k.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,k.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:a(D.tab,`skeletonLine`),children:`Загрузка...`})}),(0,k.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,k.jsx)(`div`,{className:r,children:(0,k.jsx)(`div`,{className:i,children:(0,k.jsx)(d,{text:o,className:`radiusSm`})})})})]})}var k,de=n((()=>{o(),u(),O(),k=i(),ue.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}}));function fe({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,A.jsx)(`div`,{className:e,children:(0,A.jsx)(`div`,{className:t,children:(0,A.jsx)(`div`,{className:n,children:(0,A.jsx)(`div`,{className:r,children:(0,A.jsx)(s,{className:`radiusSm`})})})})})}var A,pe=n((()=>{u(),A=i(),fe.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}}));function me({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,he.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var he,ge=n((()=>{r(),he=i(),me.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}}));function _e({items:e,state:t,className:n,ariaLabel:r,ariaLabelledBy:i}){return(0,j.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":r,"aria-labelledby":i,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,j.jsx)(l,{children:e}):(0,j.jsx)(j.Fragment,{children:e}))(e.map(e=>(0,j.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:a(D.tab,`textWrap`,e.id===t.selectedTabId&&D.selected),children:e.title},e.id)))})}var j,ve=n((()=>{o(),u(),O(),j=i(),_e.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}}));function M({items:e,value:t,defaultValue:n,onValueChange:r,className:i,isLoading:o,loadingText:ee,cleanPanel:s,bordered:c=!1,orientation:l=`horizontal`,activationMode:u=`automatic`,mountStrategy:d=`unmount`,loop:f=!0,"aria-label":p,"aria-labelledby":m}){let g=_({items:e,value:t,defaultValue:n,onValueChange:r,orientation:l,activationMode:u,loop:f}),v=a(D.tabsContainer,D[l],c&&D.bordered,s&&D.cleanPanel,i),y=D.tabs,b=a(D.panels,D.panelScrollable,`scrollable overscroll`),x=D.panel,S=D.panelBody;return o?(0,N.jsx)(ue,{containerClassName:v,tabListClassName:y,panelsClassName:b,panelClassName:x,panelBodyClassName:S,loadingText:ee}):e.length?(0,N.jsxs)(`div`,{className:v,children:[(0,N.jsx)(_e,{items:e,state:g,className:y,ariaLabel:p,ariaLabelledBy:m}),(0,N.jsx)(`div`,{className:b,children:e.map(e=>{let t=e.id===g.selectedTabId;return h({mountStrategy:d,isSelected:t,isVisited:g.isVisited(e.id)})?(0,N.jsx)(me,{tabId:e.id,isSelected:t,className:x,getTabElementId:g.getTabElementId,getPanelElementId:g.getPanelElementId,children:(0,N.jsx)(`div`,{className:S,children:e.content})},e.id):null})})]}):(0,N.jsx)(fe,{containerClassName:v,panelsClassName:b,panelClassName:x,panelBodyClassName:S})}var N,ye=n((()=>{o(),g(),y(),O(),de(),pe(),ge(),ve(),N=i(),M.__docgenInfo={description:`Простой items-based tabs-компонент.
2
2
  Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}}));function be({onChange:e,onValueChange:t,...n}){return(0,xe.jsx)(M,{...n,onValueChange:n=>{t?.(n),e?.(n)}})}var xe,Se=n((()=>{ye(),xe=i(),be.__docgenInfo={description:"@deprecated Используйте `TabsBox` для простого сценария и `TabsLayout` для составных layout-сценариев.",methods:[],displayName:`Tabs`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``},loop:{required:!1,tsType:{name:`boolean`},description:``},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}}));function Ce(e){let{type:t}=e;if(typeof t==`function`){let e=t;return e.displayName??e.name??null}if(typeof t==`object`&&t&&`displayName`in t){let e=t;return typeof e.displayName==`string`?e.displayName:null}return null}function P(e,t){return(0,F.isValidElement)(e)&&Ce(e)===t}function we({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Te({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Ee({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function De({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Oe(e,t){let n=null,r=null,i=null;for(let a of F.Children.toArray(e)){if(!(0,F.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(P(a,L)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(P(a,je)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(P(a,Me)){if(i)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);i=a.props;continue}throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`)}if(!r)throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);return{toolbar:n,content:r,footer:i}}function ke(e){return F.Children.toArray(e).map(e=>{if(!P(e,Ae))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...Oe(e.props.children,e.props.id)}})}var F,I,Ae,L,je,Me,R,z,Ne=n((()=>{F=t(r(),1),o(),g(),y(),O(),ge(),ve(),I=i(),Ae=`TabsLayout.Tab`,L=`TabsLayout.Toolbar`,je=`TabsLayout.Content`,Me=`TabsLayout.Footer`,we.displayName=Ae,Te.displayName=L,Ee.displayName=je,De.displayName=Me,R=({children:e,value:t,defaultValue:n,onValueChange:r,className:i,bordered:o,cleanPanel:ee,orientation:s=`horizontal`,activationMode:c=`manual`,mountStrategy:l=`lazy`,loop:u=!0,"aria-label":d,"aria-labelledby":f})=>{let p=(0,F.useMemo)(()=>ke(e),[e]),m=_({items:p,value:t,defaultValue:n,onValueChange:r,orientation:s,activationMode:c,loop:u}),g=a(D.tabsContainer,D[s],o&&D.bordered,ee&&D.cleanPanel,i),v=a(D.panels,D.layoutPanels);return(0,I.jsxs)(`div`,{className:g,children:[(0,I.jsx)(_e,{items:p,state:m,className:D.tabs,ariaLabel:d,ariaLabelledBy:f}),(0,I.jsx)(`div`,{className:v,children:p.map(e=>{let t=e.id===m.selectedTabId;if(!h({mountStrategy:l,isSelected:t,isVisited:m.isVisited(e.id)}))return null;let n=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,I.jsx)(me,{tabId:e.id,isSelected:t,className:D.panel,getTabElementId:m.getTabElementId,getPanelElementId:m.getPanelElementId,children:(0,I.jsxs)(`div`,{className:D.layoutPanel,style:{gridTemplateRows:n},children:[e.toolbar?(0,I.jsx)(`div`,{className:a(D.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,I.jsx)(`div`,{className:a(D.layoutSection,D.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,I.jsx)(`div`,{className:a(D.layoutSection,e.footer.className),children:e.footer.children}):null]})},e.id)})})]})},R.displayName=`TabsLayout`,z=Object.assign(R,{Tab:we,Toolbar:Te,Content:Ee,Footer:De}),R.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
3
3
  Сам компонент управляет только переключением и каркасом панели.`,methods:[],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})),Pe=n((()=>{Se(),ye(),Ne()})),Fe=e({BoxBasic:()=>G,BoxControlled:()=>K,BoxMountStrategies:()=>J,BoxVertical:()=>q,DisabledTabs:()=>Y,Empty:()=>$,LayoutPanels:()=>X,LegacyTabs:()=>Z,Loading:()=>Q,__namedExportsOrder:()=>Ve,default:()=>Be});function Ie({label:e}){let[t,n]=(0,B.useState)(0);return(0,V.jsxs)(`div`,{style:H,children:[(0,V.jsxs)(`div`,{children:[`Панель: `,e]}),(0,V.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function Le(){let[e,t]=(0,B.useState)(`details`);return(0,V.jsx)(`div`,{style:{height:360},children:(0,V.jsxs)(z,{value:e,onValueChange:t,bordered:!0,"aria-label":`Составные панели документа`,children:[(0,V.jsxs)(z.Tab,{id:`details`,title:`Детали`,children:[(0,V.jsx)(z.Toolbar,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,V.jsx)(z.Content,{children:(0,V.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))}),(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})]})}),(0,V.jsx)(z.Footer,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,V.jsx)(z.Tab,{id:`history`,title:`История`,children:(0,V.jsx)(z.Content,{children:(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})]})})}var B,V,H,U,Re,ze,W,Be,G,K,q,J,Y,X,Z,Q,$,Ve,He=n((()=>{B=t(r(),1),Pe(),u(),V=i(),H={padding:16,display:`grid`,gap:12},U=[{id:`profile`,title:`Профиль`,content:(0,V.jsx)(`div`,{style:H,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,V.jsx)(`div`,{style:H,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`Последние действия, комментарии и изменения.`})}],Re=[{id:`first`,title:`Первая`,content:(0,V.jsx)(Ie,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,V.jsx)(Ie,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,V.jsx)(Ie,{label:`Третья`})}],ze=[{id:`overview`,title:`Обзор`,content:(0,V.jsx)(`div`,{style:H,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,V.jsx)(`div`,{style:H,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`История изменений и действий.`})}],W=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),Be={title:`Shared/UI/Tabs`,component:M,args:{items:U,orientation:`horizontal`,activationMode:`automatic`,mountStrategy:`unmount`,isLoading:!1,loadingText:`Загрузка вкладок...`,bordered:!1,loop:!0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{items:{description:"Набор вкладок для `TabsBox`. Каждая вкладка задаётся через `id`, `title`, `content` и опциональный `disabled`.",control:!1},value:{description:`Активная вкладка в controlled-режиме.`,control:`text`},defaultValue:{description:`Начальная вкладка в uncontrolled-режиме.`,control:`text`},onValueChange:{description:`Вызывается при смене активной вкладки.`,control:!1},orientation:{description:`Направление списка вкладок.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},activationMode:{description:"Режим клавиатурной активации: `automatic` меняет вкладку стрелками, `manual` только переводит фокус.",control:`inline-radio`,options:[`automatic`,`manual`]},mountStrategy:{description:"Политика монтирования панелей: `unmount`, `lazy` или `keep-mounted`.",control:`inline-radio`,options:[`unmount`,`lazy`,`keep-mounted`]},bordered:{description:`Добавляет рамку вокруг области панелей.`,control:`boolean`},loop:{description:`Разрешает циклическую навигацию стрелками и Home/End.`,control:`boolean`},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},isLoading:{description:"Показывает loading-состояние `TabsBox`.",control:`boolean`},loadingText:{description:`Текст внутри loading-состояния.`,control:`text`},"aria-label":{description:"Текстовая подпись для `tablist`, если рядом нет видимого заголовка.",control:`text`},"aria-labelledby":{description:"Ссылка на внешний заголовок `tablist`.",control:`text`}}},G={args:{"aria-label":`Основные разделы профиля`}},K={render:e=>{let[t,n]=(0,B.useState)(`settings`);return(0,V.jsx)(M,{...e,value:t,onValueChange:n})},args:{value:`settings`,"aria-label":`Управляемые вкладки`}},q={render:e=>(0,V.jsx)(`div`,{style:{height:320},children:(0,V.jsx)(M,{...e})}),args:{orientation:`vertical`,bordered:!0,"aria-label":`Вертикальные вкладки`}},J={render:e=>(0,V.jsx)(M,{...e,items:Re}),args:{mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`}},Y={args:{items:ze,"aria-label":`Вкладки с недоступным разделом`}},X={render:()=>(0,V.jsx)(Le,{})},Z={render:e=>(0,V.jsx)(be,{...e,items:U,"aria-label":`Устаревший совместимый API`}),parameters:{docs:{description:{story:"Совместимый фасад поверх `TabsBox`. Новый функционал добавляется только в `TabsBox` и `TabsLayout`."}}}},Q={args:{isLoading:!0,items:U}},$={args:{items:[]}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
4
4
  args: {
@@ -1,4 +1,4 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{n,pn as r,s as i,t as a}from"./iframe-GalkF0Zs.js";import{a as o,i as s}from"./utils-CPEyORfW.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{o as ee,u}from"./Input-sOZDjUSU.js";import{t as d}from"./input-BjhZOLSA.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}var p=t((()=>{}));function te(e){return e.trim()}function ne(e){return e}function re(e){return`Удалить тег «${e}»`}var m=t((()=>{})),h,g,_,v,y,b,x,S=t((()=>{h=`AoFB3K`,g=`PvaUEA`,_=`FZ-xEM`,v=`-RCqfG`,y=`ggY643`,b=`hiZq-y`,x={control:h,tagList:g,tag:_,tagText:v,removeButton:y,input:b}}));function C({ref:e,value:t,onChange:n,label:r,description:a,placeholder:s,size:l,disabled:d,readOnly:p=!1,error:m,onClearError:h,maxTags:g,normalizeTag:_=te,getTagKey:v=ne,addOnBlur:y=!0,getRemoveButtonAriaLabel:b=re,tokensAriaLabel:S=`Добавленные теги`,inputClassName:C,className:O,id:k,name:A,form:j,required:M,maxLength:N,onKeyDown:P,onPaste:F,onBlur:I,onCompositionStart:L,onCompositionEnd:R,"aria-describedby":z,"aria-labelledby":B,...ie}){let V=(0,w.useRef)(null),H=(0,w.useRef)(null),U=(0,w.useRef)(!1),[W,G]=(0,w.useState)(``),[ae,K]=(0,w.useState)(``),{controlId:q,labelId:J,descriptionId:oe,errorId:se,describedBy:ce}=u({id:k,hasLabel:r!=null,hasDescription:!!a,hasError:!!m}),Y=g===void 0?1/0:Math.max(0,Math.floor(g)),X=d||p,le=f(ce,z),ue=f(J,B);(0,w.useImperativeHandle)(e,()=>{let e=V.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(X)return;h?.();let r=[...t],i=new Set(r.map(e=>v(e))),a=[],o=0,s=!1;for(let t of e){let e=_(t);if(!e)continue;if(N!==void 0&&e.length>N){K(`Тег «${e}» длиннее допустимого значения.`);continue}let n=v(e);if(i.has(n)){o+=1;continue}if(r.length>=Y){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),K(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?K(`Достигнуто максимальное количество тегов: ${Y}.`):o>0&&K(`Такой тег уже добавлен.`)},Q=()=>W?(Z(W.split(D)),G(``),!0):!1,$=e=>{if(X)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),h?.(),K(`Удалён тег «${r}».`),V.current?.focus())},de=e=>{if(P?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||U.current||X)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&W.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(F?.(e),e.defaultPrevented||X)return;let t=e.clipboardData.getData(`text`);if(!E.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??W.length,r=e.currentTarget.selectionEnd??n,i=`${W.slice(0,n)}${t}${W.slice(r)}`;Z(i.split(D)),G(``)};return(0,T.jsxs)(ee,{label:r,description:a,disabled:d,className:O,size:l,error:m,controlId:q,labelId:J,descriptionId:oe,errorId:se,children:[(0,T.jsxs)(`div`,{ref:H,className:o(c.uiControl,m&&c.invalid,x.control),"data-disabled":d?``:void 0,"data-readonly":p?``:void 0,"data-invalid":m?``:void 0,onClick:()=>V.current?.focus(),children:[t.length>0&&(0,T.jsx)(`ul`,{className:x.tagList,"aria-label":S,children:t.map((e,t)=>(0,T.jsxs)(`li`,{className:x.tag,children:[(0,T.jsx)(`span`,{className:x.tagText,children:e}),!X&&(0,T.jsx)(`button`,{type:`button`,className:x.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":b(e,t),children:(0,T.jsx)(i,{"aria-hidden":`true`})})]},`${v(e)}-${t}`))}),(0,T.jsx)(`input`,{...ie,ref:V,id:q,form:j,disabled:d,readOnly:p,required:M&&t.length===0,maxLength:N,value:W,placeholder:t.length===0?s:void 0,"aria-invalid":!!m||void 0,"aria-labelledby":ue,"aria-describedby":le,className:o(x.input,C),onChange:e=>{let t=e.target.value,n=E.test(t);if(U.current)G(t);else if(n){let e=t.split(D),n=E.test(t.at(-1)??``)?``:e.pop()??``;Z(e),G(n)}else G(t);(U.current||!n)&&h?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{U.current=!0,L?.(e)},onCompositionEnd:e=>{U.current=!1,R?.(e)},onBlur:e=>{I?.(e);let t=e.relatedTarget,n=t instanceof Node&&H.current?.contains(t);!e.defaultPrevented&&!n&&y&&!X&&Q()}}),A&&t.map((e,t)=>(0,T.jsx)(`input`,{type:`hidden`,name:A,value:e,form:j,disabled:d},`${v(e)}-${t}`))]}),(0,T.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:ae})]})}var w,T,E,D,O=t((()=>{w=e(r(),1),s(),n(),d(),l(),p(),m(),S(),T=a(),E=/[,\r\n]/,D=/[,\r\n]+/,C.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,props:{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:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{n,pn as r,s as i,t as a}from"./iframe-CqfP7aF1.js";import{a as o,i as s}from"./utils-BfYZ9Iv_.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{o as ee,u}from"./Input-Cd3vgy0g.js";import{t as d}from"./input-DNF627Va.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}var p=t((()=>{}));function te(e){return e.trim()}function ne(e){return e}function re(e){return`Удалить тег «${e}»`}var m=t((()=>{})),h,g,_,v,y,b,x,S=t((()=>{h=`AoFB3K`,g=`PvaUEA`,_=`FZ-xEM`,v=`-RCqfG`,y=`ggY643`,b=`hiZq-y`,x={control:h,tagList:g,tag:_,tagText:v,removeButton:y,input:b}}));function C({ref:e,value:t,onChange:n,label:r,description:a,placeholder:s,size:l,disabled:d,readOnly:p=!1,error:m,onClearError:h,maxTags:g,normalizeTag:_=te,getTagKey:v=ne,addOnBlur:y=!0,getRemoveButtonAriaLabel:b=re,tokensAriaLabel:S=`Добавленные теги`,inputClassName:C,className:O,id:k,name:A,form:j,required:M,maxLength:N,onKeyDown:P,onPaste:F,onBlur:I,onCompositionStart:L,onCompositionEnd:R,"aria-describedby":z,"aria-labelledby":B,...ie}){let V=(0,w.useRef)(null),H=(0,w.useRef)(null),U=(0,w.useRef)(!1),[W,G]=(0,w.useState)(``),[ae,K]=(0,w.useState)(``),{controlId:q,labelId:J,descriptionId:oe,errorId:se,describedBy:ce}=u({id:k,hasLabel:r!=null,hasDescription:!!a,hasError:!!m}),Y=g===void 0?1/0:Math.max(0,Math.floor(g)),X=d||p,le=f(ce,z),ue=f(J,B);(0,w.useImperativeHandle)(e,()=>{let e=V.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(X)return;h?.();let r=[...t],i=new Set(r.map(e=>v(e))),a=[],o=0,s=!1;for(let t of e){let e=_(t);if(!e)continue;if(N!==void 0&&e.length>N){K(`Тег «${e}» длиннее допустимого значения.`);continue}let n=v(e);if(i.has(n)){o+=1;continue}if(r.length>=Y){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),K(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?K(`Достигнуто максимальное количество тегов: ${Y}.`):o>0&&K(`Такой тег уже добавлен.`)},Q=()=>W?(Z(W.split(D)),G(``),!0):!1,$=e=>{if(X)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),h?.(),K(`Удалён тег «${r}».`),V.current?.focus())},de=e=>{if(P?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||U.current||X)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&W.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(F?.(e),e.defaultPrevented||X)return;let t=e.clipboardData.getData(`text`);if(!E.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??W.length,r=e.currentTarget.selectionEnd??n,i=`${W.slice(0,n)}${t}${W.slice(r)}`;Z(i.split(D)),G(``)};return(0,T.jsxs)(ee,{label:r,description:a,disabled:d,className:O,size:l,error:m,controlId:q,labelId:J,descriptionId:oe,errorId:se,children:[(0,T.jsxs)(`div`,{ref:H,className:o(c.uiControl,m&&c.invalid,x.control),"data-disabled":d?``:void 0,"data-readonly":p?``:void 0,"data-invalid":m?``:void 0,onClick:()=>V.current?.focus(),children:[t.length>0&&(0,T.jsx)(`ul`,{className:x.tagList,"aria-label":S,children:t.map((e,t)=>(0,T.jsxs)(`li`,{className:x.tag,children:[(0,T.jsx)(`span`,{className:x.tagText,children:e}),!X&&(0,T.jsx)(`button`,{type:`button`,className:x.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":b(e,t),children:(0,T.jsx)(i,{"aria-hidden":`true`})})]},`${v(e)}-${t}`))}),(0,T.jsx)(`input`,{...ie,ref:V,id:q,form:j,disabled:d,readOnly:p,required:M&&t.length===0,maxLength:N,value:W,placeholder:t.length===0?s:void 0,"aria-invalid":!!m||void 0,"aria-labelledby":ue,"aria-describedby":le,className:o(x.input,C),onChange:e=>{let t=e.target.value,n=E.test(t);if(U.current)G(t);else if(n){let e=t.split(D),n=E.test(t.at(-1)??``)?``:e.pop()??``;Z(e),G(n)}else G(t);(U.current||!n)&&h?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{U.current=!0,L?.(e)},onCompositionEnd:e=>{U.current=!1,R?.(e)},onBlur:e=>{I?.(e);let t=e.relatedTarget,n=t instanceof Node&&H.current?.contains(t);!e.defaultPrevented&&!n&&y&&!X&&Q()}}),A&&t.map((e,t)=>(0,T.jsx)(`input`,{type:`hidden`,name:A,value:e,form:j,disabled:d},`${v(e)}-${t}`))]}),(0,T.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:ae})]})}var w,T,E,D,O=t((()=>{w=e(r(),1),s(),n(),d(),l(),p(),m(),S(),T=a(),E=/[,\r\n]/,D=/[,\r\n]+/,C.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,props:{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:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
2
2
  По умолчанию удаляет пробелы в начале и конце.`,defaultValue:{value:`function defaultNormalizeTag(value: string) {
3
3
  return value.trim();
4
4
  }`,computed:!1}},getTagKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{Controlled as p,Disabled as m,WithValue as h,n as g,t as _}from"./Textarea.stories-B6UkZhde.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Controlled as p,Disabled as m,WithValue as h,n as g,t as _}from"./Textarea.stories-CrRB7fzB.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(l,{children:`Textarea`}),`
3
3
  `,(0,b.jsx)(a,{children:`Многострочное текстовое поле для описаний, комментариев и заметок`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Textarea уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{a,i as o}from"./utils-CPEyORfW.js";import{n as s,t as c}from"./ui.module-wFHXkJzp.js";import{o as l,u}from"./Input-sOZDjUSU.js";import{t as d}from"./input-BjhZOLSA.js";var f,p,m=n((()=>{f=`TjY2iu`,p={textarea:f}}));function h({label:e,description:t,className:n,disabled:r,size:i,value:o,onChange:c,error:d,onClearError:f,id:m,...h}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=u({id:m,hasLabel:e!=null,hasDescription:!!t,hasError:!!d});return(0,g.jsx)(l,{label:e,description:t,disabled:r,size:i,error:d,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,g.jsx)(`textarea`,{...h,id:_,disabled:r,value:o,"aria-invalid":!!d||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":d?``:void 0,className:a(s.uiControl,p.textarea,`scrollable`,n),onChange:e=>{c?.(e.target.value),d&&f&&f()}})})}var g,_=n((()=>{o(),d(),c(),m(),g=i(),h.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{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:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})),v=e({Controlled:()=>S,Disabled:()=>w,WithValue:()=>C,__namedExportsOrder:()=>T,default:()=>x}),y,b,x,S,C,w,T,E=n((()=>{y=t(r(),1),_(),b=i(),x={title:`Shared/UI/Textarea`,component:h,args:{label:`Комментарий`,description:`Оставьте примечание к документу.`,placeholder:`Введите текст...`,rows:4,disabled:!1,value:``,onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок текстовой области.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Плейсхолдер поля ввода.`,control:`text`},value:{description:`Текущее значение текстовой области.`,control:`text`},onChange:{description:`Вызывается при изменении текста.`,control:!1},rows:{description:`Количество видимых строк.`,control:`number`},cols:{description:`Ширина в количестве символов.`,control:`number`},disabled:{description:`Блокирует редактирование.`,control:`boolean`},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},S={args:{value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Первичный комментарий`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},C={args:{rows:5,value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Шаблонный текст для редактирования.`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},w={args:{disabled:!0,value:`Редактирование недоступно.`,onChange:()=>void 0},render:e=>(0,b.jsx)(h,{...e})},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
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-CqfP7aF1.js";import{a,i as o}from"./utils-BfYZ9Iv_.js";import{n as s,t as c}from"./ui.module-wFHXkJzp.js";import{o as l,u}from"./Input-Cd3vgy0g.js";import{t as d}from"./input-DNF627Va.js";var f,p,m=n((()=>{f=`TjY2iu`,p={textarea:f}}));function h({label:e,description:t,className:n,disabled:r,size:i,value:o,onChange:c,error:d,onClearError:f,id:m,...h}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=u({id:m,hasLabel:e!=null,hasDescription:!!t,hasError:!!d});return(0,g.jsx)(l,{label:e,description:t,disabled:r,size:i,error:d,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,g.jsx)(`textarea`,{...h,id:_,disabled:r,value:o,"aria-invalid":!!d||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":d?``:void 0,className:a(s.uiControl,p.textarea,`scrollable`,n),onChange:e=>{c?.(e.target.value),d&&f&&f()}})})}var g,_=n((()=>{o(),d(),c(),m(),g=i(),h.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{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:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})),v=e({Controlled:()=>S,Disabled:()=>w,WithValue:()=>C,__namedExportsOrder:()=>T,default:()=>x}),y,b,x,S,C,w,T,E=n((()=>{y=t(r(),1),_(),b=i(),x={title:`Shared/UI/Textarea`,component:h,args:{label:`Комментарий`,description:`Оставьте примечание к документу.`,placeholder:`Введите текст...`,rows:4,disabled:!1,value:``,onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок текстовой области.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Плейсхолдер поля ввода.`,control:`text`},value:{description:`Текущее значение текстовой области.`,control:`text`},onChange:{description:`Вызывается при изменении текста.`,control:!1},rows:{description:`Количество видимых строк.`,control:`number`},cols:{description:`Ширина в количестве символов.`,control:`number`},disabled:{description:`Блокирует редактирование.`,control:`boolean`},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},S={args:{value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Первичный комментарий`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},C={args:{rows:5,value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Шаблонный текст для редактирования.`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},w={args:{disabled:!0,value:`Редактирование недоступно.`,onChange:()=>void 0},render:e=>(0,b.jsx)(h,{...e})},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
2
2
  args: {
3
3
  value: "",
4
4
  onChange: () => undefined
@@ -1 +1 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-GalkF0Zs.js";import{a as i,i as a}from"./utils-CPEyORfW.js";import{R as o,h as s,t as c}from"./formatters-CqCEtV8w.js";import{i as l,r as u}from"./date-segments-CzU9k5bl.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w,T=t((()=>{u(),c(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)}));function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}var te=t((()=>{T()}));function E(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function D(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function k(e,t,n){return n<=0||t<=0?0:E(Math.round(e/t),n)}var A=t((()=>{})),j,M,N,P,F,I,L,R=t((()=>{j=`GLhdJ6`,M=`_2xLNL2`,N=`dgX32S`,P=`WfOtQ9`,F=`XIdSMi`,I=`_--Hsbk`,L={wheelPicker:j,viewport:M,scroller:N,items:P,item:F,selectionFrame:I}}));function z({items:e,value:t,onChange:n,ariaLabel:r,disabled:a,className:o,minHeight:s=H,visibleRows:c=U,formatItem:l,getItemKey:u}){let d=(0,B.useRef)(null),f=(0,B.useRef)(null),p=(0,B.useRef)(null),m=(0,B.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,B.useState)(0),_=D(h,s),v=ne(_,c),y=re(_,v),b=(0,B.useRef)(m),x=(0,B.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,B.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=k(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,B.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},W)},[S]);(0,B.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,B.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=E(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,B.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,B.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=E(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,V.jsx)(`div`,{ref:d,className:i(L.wheelPicker,o),style:T,children:(0,V.jsxs)(`div`,{className:L.viewport,children:[(0,V.jsx)(`div`,{ref:f,className:L.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":r,"aria-disabled":a||void 0,onKeyDown:w,children:(0,V.jsx)(`div`,{className:L.items,children:e.map((e,t)=>{let r=t===m;return(0,V.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:L.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,V.jsx)(`div`,{className:L.selectionFrame,"aria-hidden":`true`})]})})}var B,V,H,U,W,ie=t((()=>{B=e(n(),1),a(),A(),R(),V=r(),H=192,U=7,W=96,z.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})),ae=t((()=>{ie()})),G,K,q,J,Y,X,Z,oe=t((()=>{G=`_5-SSnO`,K=`s1NHua`,q=`KQC9-8`,J=`WDu02W`,Y=`_9mEhfD`,X=`N-Fzjk`,Z={timePanel:G,hint:K,fields:q,field:J,label:Y,wheel:X}}));function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsx)(`p`,{className:Z.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsxs)(`div`,{className:Z.fields,children:[(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Часы`}),(0,$.jsx)(z,{className:Z.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Минуты`}),(0,$.jsx)(z,{className:Z.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $,se=t((()=>{ae(),te(),oe(),$=r(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},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}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}}));export{f as a,h as c,_ as d,d as i,g as l,se as n,T as o,y as r,m as s,Q as t,p as u};
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CqfP7aF1.js";import{a as i,i as a}from"./utils-BfYZ9Iv_.js";import{R as o,h as s,t as c}from"./formatters-Bt3ef0VX.js";import{i as l,r as u}from"./date-segments-CzU9k5bl.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w,T=t((()=>{u(),c(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)}));function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}var te=t((()=>{T()}));function E(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function D(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function k(e,t,n){return n<=0||t<=0?0:E(Math.round(e/t),n)}var A=t((()=>{})),j,M,N,P,F,I,L,R=t((()=>{j=`GLhdJ6`,M=`_2xLNL2`,N=`dgX32S`,P=`WfOtQ9`,F=`XIdSMi`,I=`_--Hsbk`,L={wheelPicker:j,viewport:M,scroller:N,items:P,item:F,selectionFrame:I}}));function z({items:e,value:t,onChange:n,ariaLabel:r,disabled:a,className:o,minHeight:s=H,visibleRows:c=U,formatItem:l,getItemKey:u}){let d=(0,B.useRef)(null),f=(0,B.useRef)(null),p=(0,B.useRef)(null),m=(0,B.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,B.useState)(0),_=D(h,s),v=ne(_,c),y=re(_,v),b=(0,B.useRef)(m),x=(0,B.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,B.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=k(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,B.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},W)},[S]);(0,B.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,B.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=E(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,B.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,B.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=E(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,V.jsx)(`div`,{ref:d,className:i(L.wheelPicker,o),style:T,children:(0,V.jsxs)(`div`,{className:L.viewport,children:[(0,V.jsx)(`div`,{ref:f,className:L.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":r,"aria-disabled":a||void 0,onKeyDown:w,children:(0,V.jsx)(`div`,{className:L.items,children:e.map((e,t)=>{let r=t===m;return(0,V.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:L.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,V.jsx)(`div`,{className:L.selectionFrame,"aria-hidden":`true`})]})})}var B,V,H,U,W,ie=t((()=>{B=e(n(),1),a(),A(),R(),V=r(),H=192,U=7,W=96,z.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})),ae=t((()=>{ie()})),G,K,q,J,Y,X,Z,oe=t((()=>{G=`_5-SSnO`,K=`s1NHua`,q=`KQC9-8`,J=`WDu02W`,Y=`_9mEhfD`,X=`N-Fzjk`,Z={timePanel:G,hint:K,fields:q,field:J,label:Y,wheel:X}}));function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsx)(`p`,{className:Z.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsxs)(`div`,{className:Z.fields,children:[(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Часы`}),(0,$.jsx)(z,{className:Z.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Минуты`}),(0,$.jsx)(z,{className:Z.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $,se=t((()=>{ae(),te(),oe(),$=r(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},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}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}}));export{f as a,h as c,_ as d,d as i,g as l,se as n,T as o,y as r,m as s,Q as t,p as u};
@@ -1,4 +1,4 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-GalkF0Zs.js";import{n as i,t as a}from"./TimePanel-D0bfeKGK.js";var o,s,c,l,u,d;t((()=>{o=e(n(),1),i(),s=r(),c={title:`Shared/UI/Internal/DateTime/TimePanel`,component:a,args:{value:new Date(2026,2,10,12,30,0,0),onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`centered`}},l={render:e=>{let[t,n]=(0,o.useState)(e.value);return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},u={render:e=>{let[t,n]=(0,o.useState)(new Date(2026,2,10,9,30,0,0));return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0),onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CqfP7aF1.js";import{n as i,t as a}from"./TimePanel-DoveAQla.js";var o,s,c,l,u,d;t((()=>{o=e(n(),1),i(),s=r(),c={title:`Shared/UI/Internal/DateTime/TimePanel`,component:a,args:{value:new Date(2026,2,10,12,30,0,0),onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`centered`}},l={render:e=>{let[t,n]=(0,o.useState)(e.value);return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},u={render:e=>{let[t,n]=(0,o.useState)(new Date(2026,2,10,9,30,0,0));return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0),onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState<Date>(args.value);
4
4
  return <div style={{
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{Controlled as p,Disabled as m,LabelAfter as h,n as g,t as _}from"./Toggle.stories-BgIudoad.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Controlled as p,Disabled as m,LabelAfter as h,n as g,t as _}from"./Toggle.stories-Dnt25rG3.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(l,{children:`Toggle`}),`
3
3
  `,(0,b.jsx)(a,{children:`Переключаемый булев контрол для локальных режимов и простых опций`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Toggle уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1 +1 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-GalkF0Zs.js";import{a as i,i as a}from"./utils-CPEyORfW.js";import{n as o,t as s}from"./ui.module-wFHXkJzp.js";var c,l,u,d,f,p,m,h,g,_=t((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}}));function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b,x=t((()=>{y=e(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{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:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}}));export{x as n,v as t};
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CqfP7aF1.js";import{a as i,i as a}from"./utils-BfYZ9Iv_.js";import{n as o,t as s}from"./ui.module-wFHXkJzp.js";var c,l,u,d,f,p,m,h,g,_=t((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}}));function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b,x=t((()=>{y=e(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{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:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}}));export{x as n,v as t};
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{n as a,t as o}from"./Toggle-CkbbGdLU.js";var s=e({Controlled:()=>d,Disabled:()=>p,LabelAfter:()=>f,__namedExportsOrder:()=>m,default:()=>u}),c,l,u,d,f,p,m,h=n((()=>{c=t(r(),1),a(),l=i(),u={title:`Shared/UI/Toggle`,component:o,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},value:{description:`Текущее значение переключателя.`,control:`boolean`},onChange:{description:`Вызывается при изменении значения.`,control:!1},checkedText:{description:`Текст для включенного состояния.`,control:`text`},uncheckedText:{description:`Текст для выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,c.useState)(e.value??!1);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Режим синхронизации`,description:`Мгновенное переключение состояния.`,value:!1,checkedText:`ВКЛ`,uncheckedText:`ВЫКЛ`,labelPosition:`before`}},f={render:e=>{let[t,n]=(0,c.useState)(e.value??!0);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Уведомления`,value:!0,labelPosition:`after`}},p={args:{label:`Недоступный переключатель`,value:!0,disabled:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
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-CqfP7aF1.js";import{n as a,t as o}from"./Toggle-ClOUAjaj.js";var s=e({Controlled:()=>d,Disabled:()=>p,LabelAfter:()=>f,__namedExportsOrder:()=>m,default:()=>u}),c,l,u,d,f,p,m,h=n((()=>{c=t(r(),1),a(),l=i(),u={title:`Shared/UI/Toggle`,component:o,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},value:{description:`Текущее значение переключателя.`,control:`boolean`},onChange:{description:`Вызывается при изменении значения.`,control:!1},checkedText:{description:`Текст для включенного состояния.`,control:`text`},uncheckedText:{description:`Текст для выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,c.useState)(e.value??!1);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Режим синхронизации`,description:`Мгновенное переключение состояния.`,value:!1,checkedText:`ВКЛ`,uncheckedText:`ВЫКЛ`,labelPosition:`before`}},f={render:e=>{let[t,n]=(0,c.useState)(e.value??!0);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Уведомления`,value:!0,labelPosition:`after`}},p={args:{label:`Недоступный переключатель`,value:!0,disabled:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState(args.value ?? false);
4
4
  return <Toggle {...args} value={value} onChange={setValue} />;
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{BalancedColumns as p,Basic as m,FirstTwoLevelsExpanded as h,MixedSelection as g,OrphanProtectionColumns as _,ParentCompression as v,RightEdgeColumns as y,n as b,t as x}from"./TreeMultiSelect.stories-BBCAd6Gq.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(o,{of:x,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{BalancedColumns as p,Basic as m,FirstTwoLevelsExpanded as h,MixedSelection as g,OrphanProtectionColumns as _,ParentCompression as v,RightEdgeColumns as y,n as b,t as x}from"./TreeMultiSelect.stories-BVo2A9HK.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(o,{of:x,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,w.jsx)(l,{children:`TreeMultiSelect`}),`
3
3
  `,(0,w.jsx)(a,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
@@ -1 +1 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-GalkF0Zs.js";import{a as i,t as a}from"./picker-x1g6PYwU.js";import{i as o,n as s,r as c,t as l}from"./MultiSelect-B5N-STfq.js";import{n as u,t as d}from"./ODataMultiSelect-BIawkf_b.js";import{a as f,c as p,i as m,n as h,o as g,r as _,s as v,t as y,u as b}from"./TreePickerBase-Bh67Enrn.js";var x,S,C,w=t((()=>{x=e(n(),1),u(),S=r(),C=({item:e,values:t,onChange:n,width:r=15})=>{let[i,a]=(0,x.useState)({}),o=t??i,s=`calc(${r}em + var(--width-add))`,c=(0,x.useCallback)(r=>{let i={...o,[e.id]:r};t||a(i),n?.(i)},[e.id,n,o,t]);return(0,S.jsx)(`div`,{style:{maxWidth:s,minWidth:s},children:(0,S.jsx)(d,{odata:e.odata,segment:e.segment,model:e.model,dependencies:o,value:o[e.id],onChange:c})})},C.__docgenInfo={description:``,methods:[],displayName:`ODataDependentSegmentMultiSelect`,props:{width:{defaultValue:{value:`15`,computed:!1},required:!1}}}})),T=t((()=>{n(),r()}));function E(e,t){return e[t]}function D(e,t,n){let r=e[t];if(typeof r==`string`)return r;let i=E(e,n);return typeof i==`string`?i:String(i)}function O({label:e,description:t,disabled:n,placeholder:r,size:i,options:a,value:o,onChange:s,optionKey:c,optionLabel:u,renderCode:d}){let f=a.map(e=>({key:String(E(e,c)),text:D(e,u,c)})),p=new Set((o??[]).map(e=>String(e))),m=f.filter(e=>p.has(e.key));return(0,k.jsx)(l,{label:e,description:t,disabled:n,placeholder:r,size:i,items:f,codeKey:`key`,textKey:`text`,hideCode:d?void 0:!0,value:m,onChange:e=>s(e.map(e=>e.key))})}var k,A=t((()=>{s(),k=r(),O.__docgenInfo={description:``,methods:[],displayName:`SerializableMultiSelect`,props:{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:``},options:{required:!0,tsType:{name:`unknown`},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``}}}})),j=t((()=>{s(),o(),T(),w(),u(),A()})),M=t((()=>{j()}));function N(e,t){if(e.size!==0){if(e.size===1){let n=t.nodeById.get([...e][0]);return n?n.label:void 0}return`${e.size} элементов`}}function P(e,t,n){let r=p(e,n),i=p(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function F({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:a,nodes:o,value:s,onChange:l,query:u,defaultQuery:d,onQuery:h,isLoading:g,error:x,optionsLayout:S=`tree`,defaultExpandedCodeKeys:C}){let[w,T]=(0,I.useState)(!1),E=(0,I.useMemo)(()=>_(o),[o]),{draftValue:D,setDraftValue:O,prepareOpen:k}=i({value:s,open:w,onCommit:l,isEqual:(e,t)=>P(e,t,E)}),A=w?D:s,j=(0,I.useMemo)(()=>p(A,E),[A,E]),M=(0,I.useMemo)(()=>f(j,E),[j,E]),F=(0,I.useMemo)(()=>N(j,E),[j,E]);return(0,L.jsx)(y,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:M.selectedIds,partialIds:M.partialIds,selectionMode:`multi`,optionsLayout:S,defaultExpandedCodeKeys:C,open:w,onOpenChange:e=>{e&&!w&&k(),T(e)},bulkActions:{onSelectAll:()=>{O(b(m(E),E))},onDeselectAll:()=>O({})},triggerMode:`search`,selectedSummary:F?(0,L.jsx)(c,{value:F}):void 0,query:u,defaultQuery:d,onQuery:h,onNodeActivate:e=>{O(t=>v(t,e.id,E))},onClearSelection:()=>{O({}),w||l({})},isLoading:g,error:x})}var I,L,R=t((()=>{I=e(n(),1),M(),a(),g(),h(),L=r(),F.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}}));export{R as n,F as t};
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CqfP7aF1.js";import{a as i,t as a}from"./picker-D2lWKGk-.js";import{i as o,n as s,r as c,t as l}from"./MultiSelect-DY6u4L61.js";import{n as u,t as d}from"./ODataMultiSelect-dD4o0805.js";import{a as f,c as p,i as m,n as h,o as g,r as _,s as v,t as y,u as b}from"./TreePickerBase-DiMmn5I3.js";var x,S,C,w=t((()=>{x=e(n(),1),u(),S=r(),C=({item:e,values:t,onChange:n,width:r=15})=>{let[i,a]=(0,x.useState)({}),o=t??i,s=`calc(${r}em + var(--width-add))`,c=(0,x.useCallback)(r=>{let i={...o,[e.id]:r};t||a(i),n?.(i)},[e.id,n,o,t]);return(0,S.jsx)(`div`,{style:{maxWidth:s,minWidth:s},children:(0,S.jsx)(d,{odata:e.odata,segment:e.segment,model:e.model,dependencies:o,value:o[e.id],onChange:c})})},C.__docgenInfo={description:``,methods:[],displayName:`ODataDependentSegmentMultiSelect`,props:{width:{defaultValue:{value:`15`,computed:!1},required:!1}}}})),T=t((()=>{n(),r()}));function E(e,t){return e[t]}function D(e,t,n){let r=e[t];if(typeof r==`string`)return r;let i=E(e,n);return typeof i==`string`?i:String(i)}function O({label:e,description:t,disabled:n,placeholder:r,size:i,options:a,value:o,onChange:s,optionKey:c,optionLabel:u,renderCode:d}){let f=a.map(e=>({key:String(E(e,c)),text:D(e,u,c)})),p=new Set((o??[]).map(e=>String(e))),m=f.filter(e=>p.has(e.key));return(0,k.jsx)(l,{label:e,description:t,disabled:n,placeholder:r,size:i,items:f,codeKey:`key`,textKey:`text`,hideCode:d?void 0:!0,value:m,onChange:e=>s(e.map(e=>e.key))})}var k,A=t((()=>{s(),k=r(),O.__docgenInfo={description:``,methods:[],displayName:`SerializableMultiSelect`,props:{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:``},options:{required:!0,tsType:{name:`unknown`},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``}}}})),j=t((()=>{s(),o(),T(),w(),u(),A()})),M=t((()=>{j()}));function N(e,t){if(e.size!==0){if(e.size===1){let n=t.nodeById.get([...e][0]);return n?n.label:void 0}return`${e.size} элементов`}}function P(e,t,n){let r=p(e,n),i=p(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function F({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:a,nodes:o,value:s,onChange:l,query:u,defaultQuery:d,onQuery:h,isLoading:g,error:x,optionsLayout:S=`tree`,defaultExpandedCodeKeys:C}){let[w,T]=(0,I.useState)(!1),E=(0,I.useMemo)(()=>_(o),[o]),{draftValue:D,setDraftValue:O,prepareOpen:k}=i({value:s,open:w,onCommit:l,isEqual:(e,t)=>P(e,t,E)}),A=w?D:s,j=(0,I.useMemo)(()=>p(A,E),[A,E]),M=(0,I.useMemo)(()=>f(j,E),[j,E]),F=(0,I.useMemo)(()=>N(j,E),[j,E]);return(0,L.jsx)(y,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:M.selectedIds,partialIds:M.partialIds,selectionMode:`multi`,optionsLayout:S,defaultExpandedCodeKeys:C,open:w,onOpenChange:e=>{e&&!w&&k(),T(e)},bulkActions:{onSelectAll:()=>{O(b(m(E),E))},onDeselectAll:()=>O({})},triggerMode:`search`,selectedSummary:F?(0,L.jsx)(c,{value:F}):void 0,query:u,defaultQuery:d,onQuery:h,onNodeActivate:e=>{O(t=>v(t,e.id,E))},onClearSelection:()=>{O({}),w||l({})},isLoading:g,error:x})}var I,L,R=t((()=>{I=e(n(),1),M(),a(),g(),h(),L=r(),F.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}}));export{R as n,F as t};
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{n as a,t as o}from"./TreeMultiSelect-Cbkr4cDA.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-Y_nnjz0_.js";var u=e({BalancedColumns:()=>b,Basic:()=>g,FirstTwoLevelsExpanded:()=>y,MixedSelection:()=>v,OrphanProtectionColumns:()=>x,ParentCompression:()=>_,RightEdgeColumns:()=>S,__namedExportsOrder:()=>C,default:()=>h});function d({initialValue:e={},label:t=`TreeMultiSelect`,description:n,optionsLayout:r=`tree`,nodes:i=l,defaultExpandedCodeKeys:a}){let[s,c]=(0,f.useState)(e);return(0,p.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,p.jsx)(o,{label:t,description:n,nodes:i,value:s,onChange:c,optionsLayout:r,defaultExpandedCodeKeys:a}),(0,p.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(s)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w=n((()=>{f=t(r(),1),a(),s(),p=i(),m=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),h={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},g={render:()=>(0,p.jsx)(d,{initialValue:{OWNER:[`P0001`]}})},_={render:()=>(0,p.jsx)(d,{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,initialValue:{REGION:[`R01`]}})},v={render:()=>(0,p.jsx)(d,{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,initialValue:{BRANCH:[`B0101`],OWNER:[`P0004`]}})},y={render:()=>(0,p.jsx)(d,{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]})},b={render:()=>(0,p.jsx)(d,{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,initialValue:{BRANCH:[`B0101`]}})},x={render:()=>(0,p.jsx)(d,{label:`Защита начала большой группы`,description:`При низком viewport группа 2 не оставляет root и один child в хвосте предыдущего столбца, а начинается целиком с нового.`,optionsLayout:`columns`,nodes:c})},S={render:()=>(0,p.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,p.jsx)(`div`,{style:{width:260},children:(0,p.jsx)(d,{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:m})})})},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
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-CqfP7aF1.js";import{n as a,t as o}from"./TreeMultiSelect-DE3AQOZl.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-Y_nnjz0_.js";var u=e({BalancedColumns:()=>b,Basic:()=>g,FirstTwoLevelsExpanded:()=>y,MixedSelection:()=>v,OrphanProtectionColumns:()=>x,ParentCompression:()=>_,RightEdgeColumns:()=>S,__namedExportsOrder:()=>C,default:()=>h});function d({initialValue:e={},label:t=`TreeMultiSelect`,description:n,optionsLayout:r=`tree`,nodes:i=l,defaultExpandedCodeKeys:a}){let[s,c]=(0,f.useState)(e);return(0,p.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,p.jsx)(o,{label:t,description:n,nodes:i,value:s,onChange:c,optionsLayout:r,defaultExpandedCodeKeys:a}),(0,p.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(s)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w=n((()=>{f=t(r(),1),a(),s(),p=i(),m=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),h={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},g={render:()=>(0,p.jsx)(d,{initialValue:{OWNER:[`P0001`]}})},_={render:()=>(0,p.jsx)(d,{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,initialValue:{REGION:[`R01`]}})},v={render:()=>(0,p.jsx)(d,{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,initialValue:{BRANCH:[`B0101`],OWNER:[`P0004`]}})},y={render:()=>(0,p.jsx)(d,{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]})},b={render:()=>(0,p.jsx)(d,{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,initialValue:{BRANCH:[`B0101`]}})},x={render:()=>(0,p.jsx)(d,{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c})},S={render:()=>(0,p.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,p.jsx)(`div`,{style:{width:260},children:(0,p.jsx)(d,{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:m})})})},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
2
2
  render: () => <StatefulTreeMultiSelect initialValue={{
3
3
  OWNER: ["P0001"]
4
4
  }} />
@@ -18,7 +18,7 @@ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t
18
18
  BRANCH: ["B0101"]
19
19
  }} />
20
20
  }`,...b.parameters?.docs?.source}}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
21
- render: () => <StatefulTreeMultiSelect label="Защита начала большой группы" description="При низком viewport группа 2 не оставляет root и один child в хвосте предыдущего столбца, а начинается целиком с нового." optionsLayout="columns" nodes={orphanProtectionTreeNodes} />
21
+ render: () => <StatefulTreeMultiSelect label="Защита начала большой группы" description="Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый." optionsLayout="columns" nodes={orphanProtectionTreeNodes} />
22
22
  }`,...x.parameters?.docs?.source}}},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
23
23
  render: () => <div style={{
24
24
  display: "flex",
@@ -0,0 +1,22 @@
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{Tt as n,j as r,n as i,pn as a,s as o,t as s,yt as c}from"./iframe-CqfP7aF1.js";import{a as l,i as u}from"./utils-BfYZ9Iv_.js";import{n as d,t as f}from"./ui.module-wFHXkJzp.js";import{t as p}from"./CheckBox-DHWs_MEe.js";import{a as m}from"./Input-Cd3vgy0g.js";import{t as h}from"./input-DNF627Va.js";import{D as g,S as _,b as ee,g as te,l as ne,m as re,r as ie,s as ae,t as oe,v as se}from"./picker-D2lWKGk-.js";import{n as v,t as y}from"./SelectOptionContent-Bjy9USsA.js";import{t as b}from"./check-box-jgZW0_tB.js";function x(e,t){return`${e}::${t}`}function ce(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=0,s=(e,c)=>{t.set(e.id,e),n.set(e.id,c),i.set(e.id,o++),a.set(x(e.codeKey,e.value),e.id);let l=(e.children??[]).map(e=>e.id);r.set(e.id,l);for(let t of e.children??[])s(t,e.id)};for(let t of e)s(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a}}function le(e,t){if(e)return t.nodeIdByCodeValue.get(x(e.codeKey,e.value))}function ue(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i){let i=t.nodeIdByCodeValue.get(x(r,e));i&&n.add(i)}return he(n,t)}function de(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={};for(let e of n){let n=t.nodeById.get(e);n&&(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value))}return r}function fe(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function pe(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function S(e,t,n){for(let r of[...e])pe(r,t,n)&&e.delete(r)}function me(e,t,n){if(t.has(e))return!0;if(n.nodeById.get(e)?.disabled)return!1;let r=n.childrenById.get(e)??[];return r.length===0?!1:r.every(e=>me(e,t,n))}function he(e,t){let n=new Set(e);for(let e of[...n])fe(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||r.every(e=>me(e,n,t))&&(S(n,e,t),n.add(e))}return n}function ge(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){e.delete(r);for(let t of w(n,n.childrenById.get(r)??[]))e.add(t);return!0}r=n.parentById.get(r)}return!1}function C(e,t,n){return t.has(e)?!0:fe(e,n).some(e=>t.has(e))}function _e(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>_e(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function ve(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)_e(r,e,t,n);return n}function w(e,t=e.rootIds){let n=t=>{let r=e.nodeById.get(t),i=(e.childrenById.get(t)??[]).map(n),a=i.flatMap(e=>e.selectedIds),o=r?.disabled===!0||i.some(e=>e.containsDisabled);return!r||r.disabled||o?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function T(e,t,n){let r=ue(e,n),i=e=>{if(C(e,r,n)){if(r.has(e)){r.delete(e);return}ge(r,e,n)&&i(e);return}S(r,e,n),r.add(e)},a=[...w(n,[t])],o=a.length>0&&a.every(e=>C(e,r,n));for(let e of a){let t=C(e,r,n);(o&&t||!o&&!t)&&i(e)}return de(he(r,n),n)}function E(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function ye(e,t){let n=new Set;for(let r of e)E(r,t,n);return n}function be(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function D(e,t,n){let r=(e.children??[]).map(e=>D(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function xe(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>D(e,n,r)).filter(e=>!!e),expandedIds:r}}function Se(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}var O=t((()=>{}));function Ce(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}var k=t((()=>{}));function A(e,t){return Number.isFinite(e)&&e>0?e:t}function j(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(z,t)}function M(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=j(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function we({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=A(t,240),c=A(n,80),l=A(r,s+N*2),u=A(i,c),d=Math.max(1,Math.min(s,Math.max(1,l-N*2))),f=Math.max(1,Math.min(c,u-N*2)),p=Math.max(1,A(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-P+L)/234)),g=Math.max(1,Math.min(Te,h,o||1)),_=e.groups.reduce((e,t)=>Math.max(e,j(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let ee,te=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(_,Math.ceil(o/t)),r=M(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=M(e,n);let i=r.usedColumnCount,a=Math.max(m,P+i*I+(i-1)*L),s=F+n*R,c=a/d,l=s/f,u=(i*n-o)/o,p=r.intentionalGapCount/o,h=Math.max(c,l)+.25*Math.abs(c-l)+.01*u+.02*p+.04*(i-1);h<te&&(te=h,ee={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return ee??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:M(e,o).placements}}var N,P,F,I,L,R,Te,z,B=t((()=>{N=8,P=16,F=48,I=224,L=10,R=32,Te=6,z=3})),V,Ee,De,Oe,ke,Ae,H,je,Me,U,Ne,Pe,Fe,W,G,K,q,Ie,J,Le,Re,Y,ze,Be,Ve,He,Ue,X,We=t((()=>{V=`eMqOwq`,Ee=`JKstO-`,De=`hKgr8e`,Oe=`KjPZjd`,ke=`_6EH37F`,Ae=`UBll8Q`,H=`-y3RZP`,je=`ayLJ50`,Me=`_430vL2`,U=`FkzTJI`,Ne=`e8fE4t`,Pe=`_2MFkGF`,Fe=`SWQUvb`,W=`o5NWnX`,G=`ibSd-S`,K=`lXezvv`,q=`FMlLGX`,Ie=`d2Zt7U`,J=`_8PN4hs`,Le=`_4JEoen`,Re=`GS8eEC`,Y=`T8gVno`,ze=`o6stdX`,Be=`I5zvhe`,Ve=`KQ0PBI`,He=`_7hAQQA`,Ue=`XeUHNc`,X={treeRow:V,treeRowSelected:Ee,treeRowActive:De,treeRowDisabled:Oe,treeNodeButton:ke,treePopupHeader:Ae,treeColumns:H,treeColumnRow:je,treeColumnsPopupLayout:Me,treeColumnRootLabel:U,treeColumnRootCode:Ne,treeColumnCheckBox:Pe,treeNodeOptionContent:Fe,treeIndent:W,treeExpander:G,treeExpanderPlaceholder:K,treeExpanderIcon:q,treeExpanderIconExpanded:Ie,treeSelection:J,treeSelectionChecked:Le,treeSelectionPartial:Re,treeSelectionIcon:Y,treeSummary:ze,inputWithOverlay:Be,valueOverlay:Ve,treeActions:He,treeClearButton:Ue}}));function Ge({node:e,level:t,highlight:i,hasChildren:a,isExpanded:o,selected:s,partial:u,selectionMode:d,optionsLayout:f=`tree`,onToggleExpand:m,onToggleSelection:h}){let g=f===`tree`,_=f===`columns`&&t===0;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:X.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&a?(0,Z.jsx)(`button`,{type:`button`,className:X.treeExpander,onClick:e=>{e.stopPropagation(),m?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Z.jsx)(c,{className:l(X.treeExpanderIcon,o&&X.treeExpanderIconExpanded)})}):g?(0,Z.jsx)(`span`,{className:X.treeExpanderPlaceholder,"aria-hidden":`true`}):null,d===`multi`&&f===`columns`?(0,Z.jsx)(`span`,{className:X.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(p,{value:s,indeterminate:u,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>h?.()})}):d===`multi`?(0,Z.jsx)(`span`,{className:l(X.treeSelection,s&&X.treeSelectionChecked,u&&X.treeSelectionPartial),"aria-hidden":`true`,children:s?(0,Z.jsx)(n,{className:X.treeSelectionIcon}):u?(0,Z.jsx)(r,{className:X.treeSelectionIcon}):null}):null,(0,Z.jsx)(`div`,{className:X.treeNodeOptionContent,children:(0,Z.jsx)(y,{label:e.label,code:e.code,highlight:i,labelClassName:_?X.treeColumnRootLabel:void 0,codeClassName:_?X.treeColumnRootCode:void 0})})]})}var Z,Ke=t((()=>{u(),i(),b(),v(),We(),Z=s(),Ge.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
2
+ id: string;
3
+ codeKey: string;
4
+ value: string;
5
+ label: string;
6
+ code?: string;
7
+ searchText: string;
8
+ children?: TreeSelectNode[];
9
+ disabled?: boolean;
10
+ }`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},description:``},level:{required:!0,tsType:{name:`number`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},hasChildren:{required:!0,tsType:{name:`boolean`},description:``},isExpanded:{required:!0,tsType:{name:`boolean`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``},partial:{required:!0,tsType:{name:`boolean`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:``,defaultValue:{value:`"tree"`,computed:!1}},onToggleExpand:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onToggleSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function qe({label:e,description:t,disabled:n,placeholder:r,size:i,nodes:a,selectedIds:s,partialIds:c,selectionMode:u,optionsLayout:f=`tree`,defaultExpandedCodeKeys:p,open:h,onOpenChange:oe,bulkActions:v,triggerMode:y=`display`,selectedSummary:b,selectedSummaryText:x,query:le,defaultQuery:ue,onQuery:de,onNodeActivate:fe,onClearSelection:pe,isLoading:S,error:me}){let he=(0,Q.useRef)(null),ge=(0,Q.useRef)(null),_e=(0,Q.useRef)(!1),[ve,w]=(0,Q.useState)(()=>new Map),T=y===`search`?u===`multi`?`search-multi`:`search-single`:`display`,E=(0,Q.useMemo)(()=>ce(a),[a]),D=(0,Q.useMemo)(()=>new Set(p),[p]),{query:O,setQuery:k}=ae({open:!0,query:le,defaultQuery:ue,onQuery:de,triggerMode:`display`}),{nodes:A,expandedIds:j}=(0,Q.useMemo)(()=>xe(a,O),[a,O]),M=(0,Q.useMemo)(()=>ye(s,E),[s,E]),N=(0,Q.useMemo)(()=>be(E,D,ve),[D,ve,E]),P=(0,Q.useMemo)(()=>new Set([...E.childrenById].filter(([,e])=>e.length>0).map(([e])=>e)),[E]),F=(0,Q.useMemo)(()=>f===`columns`?P:new Set([...N,...j,...M]),[P,N,f,j,M]),I=(0,Q.useMemo)(()=>Se(A,F),[A,F]),L=(0,Q.useMemo)(()=>I.findIndex(e=>s.has(e.node.id)),[s,I]),R=(0,Q.useMemo)(()=>Ce(I),[I]),Te=(0,Q.useCallback)(e=>{let t=we({...e,descriptor:R}),n={};return t.placements.forEach((e,t)=>{n[`--tree-option-${t}-column`]=String(e.column),n[`--tree-option-${t}-row`]=String(e.row)}),{width:`${t.width}px`,minWidth:`${t.minWidth}px`,maxWidth:`${t.width}px`,maxHeight:`${t.maxHeight}px`,"--tree-column-count":String(t.columnCount),"--tree-row-count":String(t.rowCount),...n}},[R]),{open:z,activeIndex:B,context:V,floatingStyles:Ee,getFloatingProps:De,setReference:Oe,setFloating:ke,setOptionRef:Ae,close:H,openList:je,toggleOpen:Me,selectOption:U,handleReferenceKeyDown:Ne,handleFloatingKeyDown:Pe,getOptionId:Fe,getActiveOptionId:W}=ne({options:I,selectedIndex:L,open:h,onOpenChange:oe,onSelect:e=>fe(e.node),getOptionDisabled:e=>e.node.disabled===!0,disabled:n||S,closeOnSelect:u===`single`,allowOpenWithoutOptions:!0,triggerMode:T,placementStrategy:f===`columns`?`auto`:`flip`,resolveFloatingSize:f===`columns`?Te:void 0}),G=V.update,K=s.size>0,q=y===`search`&&(z||O.length>0),Ie=q?O:x??``,J=y===`display`&&!!b,Le=T===`search-multi`&&!!b,Re=T===`search-multi`&&!K||T===`search-single`&&(!x||q)||T===`display`&&!K,Y=ie({mode:T,open:z,currentQuery:O,hasDisplayValue:!!x,inputRef:he,setQuery:k,openList:je,close:H,toggleOpen:Me}),ze=f===`columns`&&u===`multi`&&v,Be=y===`display`,Ve=ze||Be?(0,$.jsxs)(`div`,{className:X.treePopupHeader,children:[ze?(0,$.jsx)(ee,{onSelectAll:v.onSelectAll,onDeselectAll:v.onDeselectAll,selectAllButtonRef:ge}):null,Be?(0,$.jsx)(m,{value:O,onChange:k,onClear:()=>k(``),placeholder:`Поиск по дереву`,onKeyDown:e=>{e.key!==`Escape`&&e.key!==`Tab`&&e.stopPropagation()},onClick:e=>{e.stopPropagation()}}):null]}):void 0;(0,Q.useEffect)(()=>{_e.current&&!z&&Y.policy.resetQueryOnClose&&k(``),_e.current=z},[z,k,Y.policy.resetQueryOnClose]),(0,Q.useLayoutEffect)(()=>{z&&f===`columns`&&G()},[R.signature,z,f,G]);let He=e=>{he.current=e},Ue=()=>{pe?.(),k(``),u===`single`&&H()},We=e=>{e.hasChildren&&w(t=>{let n=new Map(t),r=t.get(e.node.id)??D.has(e.node.codeKey);return n.set(e.node.id,!r),n})};return(0,$.jsx)(g,{label:e,description:t,disabled:n,placeholder:r,size:i,children:({controlId:t,labelId:i,describedBy:a})=>{let p=`${t}-listbox`,m=typeof e==`string`?e:r;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(re,{ref:He,rootRef:Oe,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:n||S,readOnly:y!==`search`,value:y===`display`&&J?``:Ie,placeholder:Re?r:void 0,"aria-labelledby":i,"aria-label":i?void 0:r,"aria-describedby":a,"aria-haspopup":f===`columns`?`dialog`:`listbox`,"aria-expanded":z,"aria-controls":z?p:void 0,"aria-autocomplete":f!==`columns`&&y===`search`?`list`:`none`,"aria-activedescendant":f!==`columns`&&z&&I.length>0?W(p):void 0,inputClassName:l(K&&X.treeSummary,J&&X.inputWithOverlay),overlay:J?(0,$.jsx)(`div`,{className:X.valueOverlay,children:b}):void 0,endAdornment:(0,$.jsxs)(te,{open:z,disabled:n||S,onToggleMouseDown:Y.handleToggleMouseDown,onToggleClick:Y.handleToggleClick,children:[Le?b:null,K&&pe?(0,$.jsx)(`button`,{type:`button`,className:X.treeClearButton,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:e=>{e.preventDefault(),e.stopPropagation(),Ue()},"aria-label":`Очистить выбор`,children:(0,$.jsx)(o,{})}):null]}),onChange:e=>{y===`search`&&Y.handleTriggerInputChange(e.target.value)},onClick:Y.handleTriggerClick,onFocus:e=>{Y.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{if(f===`columns`&&z&&e.key===`Tab`&&!e.shiftKey&&ge.current){e.preventDefault(),ge.current.focus();return}Ne(e),!e.defaultPrevented&&Y.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{let e=B>=0?I[B]:void 0;e&&U(e)},enableSpaceActivation:y===`display`})}}),(0,$.jsx)(_,{open:z,context:V,floatingStyles:Ee,listId:p,labelId:i,popupAriaLabel:m,descriptionId:a,activeOptionId:f!==`columns`&&I.length>0?W(p):void 0,ariaMultiselectable:f!==`columns`&&u===`multi`,popupRole:f===`columns`?`dialog`:`listbox`,setFloating:ke,getFloatingProps:De,onKeyDown:Pe,className:d.uiPopupOptions,layoutClassName:f===`columns`?X.treeColumnsPopupLayout:void 0,bodyClassName:`scrollable`,header:Ve,children:(0,$.jsx)(`div`,{className:l(f===`columns`&&X.treeColumns),children:I.length===0?(0,$.jsx)(se,{errorState:me,loadingState:S?`Загрузка...`:void 0,emptyState:!me&&!S?`Нет данных`:void 0}):I.map((e,t)=>{let n=u===`multi`?C(e.node.id,s,E):s.has(e.node.id),r=u===`multi`&&!n&&c.has(e.node.id),i=t===B,a=e.node.disabled===!0;return(0,$.jsx)(`div`,{"data-ui":`tree-select-option`,id:Fe(p,t),ref:e=>Ae(t,e),role:f===`columns`?void 0:`option`,"aria-selected":f===`columns`?void 0:n,"aria-disabled":a||void 0,className:l(X.treeRow,f===`columns`&&X.treeColumnRow,a&&X.treeRowDisabled,i&&X.treeRowActive,n&&X.treeRowSelected),style:f===`columns`?{"--tree-option-column":`var(--tree-option-${t}-column, auto)`,"--tree-option-row":`var(--tree-option-${t}-row, auto)`}:void 0,onMouseDown:e=>{e.preventDefault()},onClick:()=>U(e),children:(0,$.jsx)(`div`,{className:X.treeNodeButton,children:(0,$.jsx)(Ge,{node:e.node,level:e.level,highlight:O,hasChildren:e.hasChildren,isExpanded:e.isExpanded,selected:n,partial:r,selectionMode:u,optionsLayout:f,onToggleExpand:()=>We(e),onToggleSelection:()=>U(e)})})},e.node.id)})})})]})}})}var Q,$,Je=t((()=>{Q=e(a(),1),u(),i(),h(),oe(),f(),k(),B(),O(),Ke(),We(),$=s(),qe.__docgenInfo={description:``,methods:[],displayName:`TreePickerBase`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},selectedIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},partialIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:``,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:``},open:{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:``},bulkActions:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
11
+ onSelectAll: () => void;
12
+ onDeselectAll: () => void;
13
+ }`,signature:{properties:[{key:`onSelectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}},{key:`onDeselectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}}]}},description:``},triggerMode:{required:!1,tsType:{name:`union`,raw:`"display" | "search"`,elements:[{name:`literal`,value:`"display"`},{name:`literal`,value:`"search"`}]},description:``,defaultValue:{value:`"display"`,computed:!1}},selectedSummary:{required:!1,tsType:{name:`ReactNode`},description:``},selectedSummaryText:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},onNodeActivate:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(node: TreeSelectNode) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
14
+ id: string;
15
+ codeKey: string;
16
+ value: string;
17
+ label: string;
18
+ code?: string;
19
+ searchText: string;
20
+ children?: TreeSelectNode[];
21
+ disabled?: boolean;
22
+ }`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},name:`node`}],return:{name:`void`}}},description:``},onClearSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}}}}));export{ve as a,ue as c,w as i,le as l,Je as n,O as o,ce as r,T as s,qe as t,de as u};
@@ -1 +1 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-GalkF0Zs.js";import{l as i,n as a,o,r as s,t as c}from"./TreePickerBase-Bh67Enrn.js";function l(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function u({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:a,nodes:o,value:u,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,d.useMemo)(()=>s(o),[o]),S=i(u,x),C=S?x.nodeById.get(S):void 0;return(0,f.jsx)(c,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:l(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var d,f,p=t((()=>{d=e(n(),1),o(),a(),f=r(),u.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}}));export{p as n,u as t};
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CqfP7aF1.js";import{l as i,n as a,o,r as s,t as c}from"./TreePickerBase-DiMmn5I3.js";function l(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function u({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:a,nodes:o,value:u,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,d.useMemo)(()=>s(o),[o]),S=i(u,x),C=S?x.nodeById.get(S):void 0;return(0,f.jsx)(c,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:l(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var d,f,p=t((()=>{d=e(n(),1),o(),a(),f=r(),u.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}}));export{p as n,u as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{Basic as p,Empty as m,FirstLevelExpanded as h,SelectParent as g,n as _,t as v}from"./TreeSelect.stories-S2zo4fAX.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(o,{of:v,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Basic as p,Empty as m,FirstLevelExpanded as h,SelectParent as g,n as _,t as v}from"./TreeSelect.stories-C6Gm2YfT.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(o,{of:v,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(l,{children:`TreeSelect`}),`
3
3
  `,(0,x.jsx)(a,{children:`Single-select для выбора одного узла из дерева`}),`
4
4
  `,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`TreeSelect`}),` подходит для сценариев, где выбор должен происходить по одному узлу, но пользователь работает не с плоским списком, а с иерархией.`]}),`
@@ -1,4 +1,4 @@
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-GalkF0Zs.js";import{n as a,t as o}from"./TreeSelect-BnNzwMQT.js";import{n as s,t as c}from"./treeStoryFixtures-Y_nnjz0_.js";var l=e({Basic:()=>m,Empty:()=>_,FirstLevelExpanded:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>v,default:()=>p});function u({initialValue:e,label:t=`TreeSelect`,description:n,defaultExpandedCodeKeys:r}){let[i,a]=(0,d.useState)(e);return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{label:t,description:n,nodes:c,value:i,onChange:a,defaultExpandedCodeKeys:r}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,i?`${i.codeKey}=${i.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v,y=n((()=>{d=t(r(),1),a(),s(),f=i(),p={title:`Shared/UI/TreeSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:c,value:void 0,onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},m={render:()=>(0,f.jsx)(u,{initialValue:{codeKey:`BRANCH`,value:`B0101`}})},h={render:()=>(0,f.jsx)(u,{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,initialValue:{codeKey:`REGION`,value:`R01`}})},g={render:()=>(0,f.jsx)(u,{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]})},_={args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
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-CqfP7aF1.js";import{n as a,t as o}from"./TreeSelect-Cs_tb930.js";import{n as s,t as c}from"./treeStoryFixtures-Y_nnjz0_.js";var l=e({Basic:()=>m,Empty:()=>_,FirstLevelExpanded:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>v,default:()=>p});function u({initialValue:e,label:t=`TreeSelect`,description:n,defaultExpandedCodeKeys:r}){let[i,a]=(0,d.useState)(e);return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{label:t,description:n,nodes:c,value:i,onChange:a,defaultExpandedCodeKeys:r}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,i?`${i.codeKey}=${i.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v,y=n((()=>{d=t(r(),1),a(),s(),f=i(),p={title:`Shared/UI/TreeSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:c,value:void 0,onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},m={render:()=>(0,f.jsx)(u,{initialValue:{codeKey:`BRANCH`,value:`B0101`}})},h={render:()=>(0,f.jsx)(u,{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,initialValue:{codeKey:`REGION`,value:`R01`}})},g={render:()=>(0,f.jsx)(u,{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]})},_={args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
2
  render: () => <StatefulTreeSelect initialValue={{
3
3
  codeKey: "BRANCH",
4
4
  value: "B0101"
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GalkF0Zs.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-Dmj58mhm.js";import{t as f}from"./mdx-react-shim-7A_ItrB6.js";import{Basic as p,CollapsedByDefault as m,Empty as h,Fetching as g,Loading as _,MultiSelect as v,WithDefaultExpandedBranch as y,WithDisabledRows as b,WithFormattedTreeColumn as x,WithFormulaColumn as S,WithHiddenZero as C,WithMergedDuplicates as w,WithODataMetadataAdapter as T,WithUseODataTableColumnsBuildHook as E,WithUseODataTableColumnsEnrichHook as D,n as O,t as k}from"./TreeTable.stories-DXxhWXqi.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(o,{of:k,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CqfP7aF1.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-kCueRzKM.js";import{t as f}from"./mdx-react-shim-4LHuzuKu.js";import{Basic as p,CollapsedByDefault as m,Empty as h,Fetching as g,Loading as _,MultiSelect as v,WithDefaultExpandedBranch as y,WithDisabledRows as b,WithFormattedTreeColumn as x,WithFormulaColumn as S,WithHiddenZero as C,WithMergedDuplicates as w,WithODataMetadataAdapter as T,WithUseODataTableColumnsBuildHook as E,WithUseODataTableColumnsEnrichHook as D,n as O,t as k}from"./TreeTable.stories-CXJMSxQu.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(o,{of:k,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,M.jsx)(l,{children:`TreeTable`}),`
3
3
  `,(0,M.jsx)(a,{children:`Древовидная таблица для плоских OData-данных на базе TanStack Table`}),`
4
4
  `,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`TreeTable`}),` предназначен для сценариев, где данные приходят плоским списком, но в UI должны выглядеть как дерево.