@feugene/granularity 0.9.4 → 0.10.0

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 (223) hide show
  1. package/dist/chunks/{config-d386uO3O.js.map → config-58Mj2rGH.js.map} +1 -1
  2. package/dist/chunks/{config-D4s_QWVP.js.map → config-8f8624RN.js.map} +1 -1
  3. package/dist/chunks/{config-B_nSBc7W.js.map → config-A-iei0Ux.js.map} +1 -1
  4. package/dist/chunks/{config-CFf7xaG1.js → config-B0uUCaJW.js} +1 -1
  5. package/dist/chunks/{config-CFf7xaG1.js.map → config-B0uUCaJW.js.map} +1 -1
  6. package/dist/chunks/{config-Dcb7xK-C.js.map → config-B3dn-gdC.js.map} +1 -1
  7. package/dist/chunks/{config-D6Oe3blW2.js.map → config-BLa1TEGm2.js.map} +1 -1
  8. package/dist/chunks/{config-Dzd6BzIN2.js.map → config-BeBsN0c12.js.map} +1 -1
  9. package/dist/chunks/{config-BU0olrvr.js.map → config-Bh4NWWsQ.js.map} +1 -1
  10. package/dist/chunks/{config-BeQuykDk2.js.map → config-BuoIngj32.js.map} +1 -1
  11. package/dist/chunks/{config-BbKroFtR.js.map → config-C5-ujXCI.js.map} +1 -1
  12. package/dist/chunks/{config-BY81UKv0.js → config-C8MM2Dg0.js} +1 -1
  13. package/dist/chunks/{config-BY81UKv0.js.map → config-C8MM2Dg0.js.map} +1 -1
  14. package/dist/chunks/{config-DF_RlCIO.js.map → config-CPSdAjUi.js.map} +1 -1
  15. package/dist/chunks/{config-iuMz79Mg.js.map → config-CWTfyPNI.js.map} +1 -1
  16. package/dist/chunks/{config-Br_qI3Za.js → config-C_egzT_K.js} +2 -2
  17. package/dist/chunks/config-C_egzT_K.js.map +1 -0
  18. package/dist/chunks/{config-Ci9nXGUV.js.map → config-C_q_4FrU.js.map} +1 -1
  19. package/dist/chunks/{config-O1_FTqD3.js.map → config-CzgNEHKi.js.map} +1 -1
  20. package/dist/chunks/{config-Bcf-8XlK2.js.map → config-DDUPnue12.js.map} +1 -1
  21. package/dist/chunks/{config-DmjwIqx1.js.map → config-DDwBSoc_.js.map} +1 -1
  22. package/dist/chunks/{config-C5OwJM3-.js → config-DRpkoSvq.js} +1 -1
  23. package/dist/chunks/{config-C5OwJM3-.js.map → config-DRpkoSvq.js.map} +1 -1
  24. package/dist/chunks/{config-DaHI5bD_2.js.map → config-DZrlovR42.js.map} +1 -1
  25. package/dist/chunks/{config-72sW9Bag2.js.map → config-D_Pafsjq2.js.map} +1 -1
  26. package/dist/chunks/{config-B1kFmhpM.js.map → config-DhQc1TRY.js.map} +1 -1
  27. package/dist/chunks/{config-CetsgpaZ2.js.map → config-DkeLkzxj2.js.map} +1 -1
  28. package/dist/chunks/{config-BOdu-O_B.js.map → config-Dl5aZ5VR.js.map} +1 -1
  29. package/dist/chunks/{config-CvGdaXvH.js.map → config-Doa_gU40.js.map} +1 -1
  30. package/dist/chunks/{config-CdJpnjDj.js.map → config-DvDNney3.js.map} +1 -1
  31. package/dist/chunks/{config-CpMYmvVT.js.map → config-NkbzVFZo.js.map} +1 -1
  32. package/dist/chunks/{config-_3De4HFf.js.map → config-RjfJFv1Y.js.map} +1 -1
  33. package/dist/chunks/{config-DoBk_CzG.js.map → config-VJuoznpH.js.map} +1 -1
  34. package/dist/chunks/{config-BnWSHTEU.js.map → config-XspHtPsU.js.map} +1 -1
  35. package/dist/chunks/{config-B2YTEe_h.js.map → config-hSlCXHoG.js.map} +1 -1
  36. package/dist/chunks/{config-DSBlHQVa.js.map → config-lMDE_8A5.js.map} +1 -1
  37. package/dist/chunks/{config-Cp_XHsze.js.map → config-nrOj9p6I.js.map} +1 -1
  38. package/dist/chunks/{en-foQA8imU.js → en-B_fSdoTi.js} +9 -2
  39. package/dist/chunks/en-B_fSdoTi.js.map +1 -0
  40. package/dist/chunks/{es-Bx3Kuy6z.js → es-CISK11Nv.js} +3 -3
  41. package/dist/chunks/{es-Bx3Kuy6z.js.map → es-CISK11Nv.js.map} +1 -1
  42. package/dist/chunks/{es-DZFSojYL.js → es-DKP6fLir.js} +9 -2
  43. package/dist/chunks/es-DKP6fLir.js.map +1 -0
  44. package/dist/chunks/{grDropdownStyles-B41mVR1H.js → grDropdownStyles-Bqx9hOzU.js} +10 -7
  45. package/dist/chunks/grDropdownStyles-Bqx9hOzU.js.map +1 -0
  46. package/dist/chunks/{grModalStyles-DS1Vl6EW.js → grModalStyles-FgaKqx50.js} +1 -1
  47. package/dist/chunks/grModalStyles-FgaKqx50.js.map +1 -0
  48. package/dist/chunks/{grSelectStyles-pUt19VGy.js.map → grSelectStyles-AjWWl007.js.map} +1 -1
  49. package/dist/chunks/{grStyle-CUaTmpyW.js.map → grStyle-D-gPHdyW.js.map} +1 -1
  50. package/dist/chunks/{granularityI18n-LcJ88Vce.js → granularityI18n-D_7jowK2.js} +17 -2
  51. package/dist/chunks/granularityI18n-D_7jowK2.js.map +1 -0
  52. package/dist/chunks/{ru-LhkPpPIl.js → ru-S6VlnurJ.js} +9 -2
  53. package/dist/chunks/ru-S6VlnurJ.js.map +1 -0
  54. package/dist/chunks/{shared-BiqXd5MW.js → shared-DpjTvFno.js} +34 -34
  55. package/dist/chunks/{shared-BiqXd5MW.js.map → shared-DpjTvFno.js.map} +1 -1
  56. package/dist/chunks/useFloating-CLtbU7eD.js +1234 -0
  57. package/dist/chunks/useFloating-CLtbU7eD.js.map +1 -0
  58. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Br6WJkLE.js → GrConfirmDialog-Bi2KLumL.js} +2 -2
  59. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Br6WJkLE.js.map → GrConfirmDialog-Bi2KLumL.js.map} +1 -1
  60. package/dist/components/GrConfirmDialog/index.js +1 -1
  61. package/dist/components/GrDialog/chunks/{GrDialog-C7XLxp8e.js → GrDialog-CxK4Lj4F.js} +1 -1
  62. package/dist/components/GrDialog/chunks/{GrDialog-C7XLxp8e.js.map → GrDialog-CxK4Lj4F.js.map} +1 -1
  63. package/dist/components/GrDialog/index.js +1 -1
  64. package/dist/components/GrDropdown/chunks/{GrDropdown-DOvHKnih.js → GrDropdown-BGKeEfZ1.js} +13 -59
  65. package/dist/components/GrDropdown/chunks/GrDropdown-BGKeEfZ1.js.map +1 -0
  66. package/dist/components/GrDropdown/index.js +2 -2
  67. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js → GrDropdownMenu-CJom_-c2.js} +1 -1
  68. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js.map → GrDropdownMenu-CJom_-c2.js.map} +1 -1
  69. package/dist/components/GrDropdownMenu/index.js +2 -2
  70. package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js.map → GrEmptyState-yOuZW7-t.js.map} +1 -1
  71. package/dist/components/GrEmptyState/index.js +2 -2
  72. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BEKNB1RM.js → GrFileUpload-CBKK3dgC.js} +1 -1
  73. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BEKNB1RM.js.map → GrFileUpload-CBKK3dgC.js.map} +1 -1
  74. package/dist/components/GrFileUpload/index.js +2 -2
  75. package/dist/components/GrFormField/index.js +1 -1
  76. package/dist/components/GrFormFile/chunks/{GrFormFile-CIleXnfr.js.map → GrFormFile-CkR6cYqf.js.map} +1 -1
  77. package/dist/components/GrFormFile/index.js +2 -2
  78. package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js.map → GrFormSection-dbyzqxYk.js.map} +1 -1
  79. package/dist/components/GrFormSection/index.js +2 -2
  80. package/dist/components/GrImageViewer/chunks/{GrImageViewer-CsvXQHM9.js.map → GrImageViewer-BG40DsHa.js.map} +1 -1
  81. package/dist/components/GrImageViewer/index.js +2 -2
  82. package/dist/components/GrInput/index.js +1 -1
  83. package/dist/components/GrInputTag/chunks/{GrInputTag-Dcj3F6rQ.js → GrInputTag-g-KdUI_Z.js} +1 -1
  84. package/dist/components/GrInputTag/chunks/{GrInputTag-Dcj3F6rQ.js.map → GrInputTag-g-KdUI_Z.js.map} +1 -1
  85. package/dist/components/GrInputTag/index.js +2 -2
  86. package/dist/components/GrLink/chunks/{GrLink-BMwn2iJ9.js → GrLink-KSTmk9Yq.js} +1 -1
  87. package/dist/components/GrLink/chunks/{GrLink-BMwn2iJ9.js.map → GrLink-KSTmk9Yq.js.map} +1 -1
  88. package/dist/components/GrLink/index.js +2 -2
  89. package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js.map → GrList-CUW2sRm_.js.map} +1 -1
  90. package/dist/components/GrList/index.js +2 -2
  91. package/dist/components/GrLoading/index.js +1 -1
  92. package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js → GrModal-CSOL3fHQ.js} +1 -1
  93. package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js.map → GrModal-CSOL3fHQ.js.map} +1 -1
  94. package/dist/components/GrModal/index.js +3 -3
  95. package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js → GrNavbar-CHxwtFIR.js} +1 -1
  96. package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js.map → GrNavbar-CHxwtFIR.js.map} +1 -1
  97. package/dist/components/GrNavbar/index.js +2 -2
  98. package/dist/components/GrNumberInput/chunks/{GrNumberInput-YIWhV85S.js → GrNumberInput-ClPBwkxx.js} +1 -1
  99. package/dist/components/GrNumberInput/chunks/{GrNumberInput-YIWhV85S.js.map → GrNumberInput-ClPBwkxx.js.map} +1 -1
  100. package/dist/components/GrNumberInput/index.js +2 -2
  101. package/dist/components/GrPagination/chunks/{GrPagination-BNDEqM8_.js → GrPagination-D2GS0ShQ.js} +4 -4
  102. package/dist/components/GrPagination/chunks/GrPagination-D2GS0ShQ.js.map +1 -0
  103. package/dist/components/GrPagination/index.js +2 -2
  104. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js → GrProgressBar-BBSFpVEq.js} +1 -1
  105. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js.map → GrProgressBar-BBSFpVEq.js.map} +1 -1
  106. package/dist/components/GrProgressBar/index.js +2 -2
  107. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BV4EW3XO.js → GrPromptDialog-D_TFqKsF.js} +2 -2
  108. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BV4EW3XO.js.map → GrPromptDialog-D_TFqKsF.js.map} +1 -1
  109. package/dist/components/GrPromptDialog/index.js +2 -2
  110. package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js → GrRadio-CSbTnrom.js} +1 -1
  111. package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js.map → GrRadio-CSbTnrom.js.map} +1 -1
  112. package/dist/components/GrRadio/index.js +2 -2
  113. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js → GrRadioGroup-DsrnTygR.js} +1 -1
  114. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js.map → GrRadioGroup-DsrnTygR.js.map} +1 -1
  115. package/dist/components/GrRadioGroup/index.js +2 -2
  116. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BMvXREcv.js → GrResponseErrorBanner-K1uZ1mYD.js} +1 -1
  117. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BMvXREcv.js.map → GrResponseErrorBanner-K1uZ1mYD.js.map} +1 -1
  118. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js → GrResponseErrorBanner-bM8FC_Bw.js} +1 -1
  119. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js.map → GrResponseErrorBanner-bM8FC_Bw.js.map} +1 -1
  120. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  121. package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js → GrSegmented-DpZGs4VX.js} +1 -1
  122. package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js.map → GrSegmented-DpZGs4VX.js.map} +1 -1
  123. package/dist/components/GrSegmented/index.js +2 -2
  124. package/dist/components/GrSelect/chunks/{GrSelect-CnHdbPlf.js → GrSelect-DSz7jvUb.js} +25 -51
  125. package/dist/components/GrSelect/chunks/GrSelect-DSz7jvUb.js.map +1 -0
  126. package/dist/components/GrSelect/index.js +2 -2
  127. package/dist/components/GrSidebar/chunks/{GrSidebar-BpBtAGBs.js.map → GrSidebar-BW8LRMZ-.js.map} +1 -1
  128. package/dist/components/GrSidebar/index.js +2 -2
  129. package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js.map → GrSkeleton-B05K0QKh.js.map} +1 -1
  130. package/dist/components/GrSkeleton/index.js +2 -2
  131. package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js → GrSwitch-CSRtcN5-.js} +1 -1
  132. package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js.map → GrSwitch-CSRtcN5-.js.map} +1 -1
  133. package/dist/components/GrSwitch/index.js +2 -2
  134. package/dist/components/GrTable/index.js +1 -1
  135. package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js.map → GrTabs-BfeVNMFJ.js.map} +1 -1
  136. package/dist/components/GrTabs/index.js +2 -2
  137. package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js → GrTextarea-CBBzpF2S.js} +1 -1
  138. package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js.map → GrTextarea-CBBzpF2S.js.map} +1 -1
  139. package/dist/components/GrTextarea/index.js +2 -2
  140. package/dist/components/GrToaster/chunks/{GrToaster-DluJmR5D.js → GrToaster-C6_iHk2J.js} +4 -3
  141. package/dist/components/GrToaster/chunks/GrToaster-C6_iHk2J.js.map +1 -0
  142. package/dist/components/GrToaster/index.js +2 -2
  143. package/dist/components/GrTooltip/chunks/GrTooltip-BC-40SA5.js +109 -0
  144. package/dist/components/GrTooltip/chunks/GrTooltip-BC-40SA5.js.map +1 -0
  145. package/dist/components/GrTooltip/index.js +2 -2
  146. package/dist/components/GrTree/chunks/{GrTree-B2SMU5Py.js.map → GrTree-uZr5SyQI.js.map} +1 -1
  147. package/dist/components/GrTree/index.js +2 -2
  148. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-C1abr5uH.js → GrTreeSelect-CytivcCa.js} +9 -37
  149. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CytivcCa.js.map +1 -0
  150. package/dist/components/GrTreeSelect/index.js +2 -2
  151. package/dist/granular-provider-node.js +2 -2
  152. package/dist/granular-provider.js +1 -1
  153. package/dist/i18n/all.js +1 -1
  154. package/dist/i18n/index.js +1 -1
  155. package/dist/index.js +67 -67
  156. package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +3 -2
  157. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +2 -2
  158. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +1 -1
  159. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +2 -2
  160. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +1 -1
  161. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +1 -1
  162. package/dist/types/src/components/GrModal/grModalStyles.d.ts +1 -1
  163. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +1 -1
  164. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +6 -6
  165. package/dist/types/src/composables/internal/useFloating.d.ts +53 -0
  166. package/dist/types/src/i18n/messages/en.d.ts +12 -0
  167. package/dist/types/src/i18n/messages/es.d.ts +12 -0
  168. package/dist/types/src/i18n/messages/ru.d.ts +12 -0
  169. package/package.json +9 -1
  170. package/dist/chunks/config-Br_qI3Za.js.map +0 -1
  171. package/dist/chunks/en-foQA8imU.js.map +0 -1
  172. package/dist/chunks/es-DZFSojYL.js.map +0 -1
  173. package/dist/chunks/grDropdownStyles-B41mVR1H.js.map +0 -1
  174. package/dist/chunks/grModalStyles-DS1Vl6EW.js.map +0 -1
  175. package/dist/chunks/granularityI18n-LcJ88Vce.js.map +0 -1
  176. package/dist/chunks/ru-LhkPpPIl.js.map +0 -1
  177. package/dist/components/GrDropdown/chunks/GrDropdown-DOvHKnih.js.map +0 -1
  178. package/dist/components/GrPagination/chunks/GrPagination-BNDEqM8_.js.map +0 -1
  179. package/dist/components/GrSelect/chunks/GrSelect-CnHdbPlf.js.map +0 -1
  180. package/dist/components/GrToaster/chunks/GrToaster-DluJmR5D.js.map +0 -1
  181. package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js +0 -55
  182. package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js.map +0 -1
  183. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-C1abr5uH.js.map +0 -1
  184. /package/dist/chunks/{config-d386uO3O.js → config-58Mj2rGH.js} +0 -0
  185. /package/dist/chunks/{config-D4s_QWVP.js → config-8f8624RN.js} +0 -0
  186. /package/dist/chunks/{config-B_nSBc7W.js → config-A-iei0Ux.js} +0 -0
  187. /package/dist/chunks/{config-Dcb7xK-C.js → config-B3dn-gdC.js} +0 -0
  188. /package/dist/chunks/{config-D6Oe3blW2.js → config-BLa1TEGm2.js} +0 -0
  189. /package/dist/chunks/{config-Dzd6BzIN2.js → config-BeBsN0c12.js} +0 -0
  190. /package/dist/chunks/{config-BU0olrvr.js → config-Bh4NWWsQ.js} +0 -0
  191. /package/dist/chunks/{config-BeQuykDk2.js → config-BuoIngj32.js} +0 -0
  192. /package/dist/chunks/{config-BbKroFtR.js → config-C5-ujXCI.js} +0 -0
  193. /package/dist/chunks/{config-DF_RlCIO.js → config-CPSdAjUi.js} +0 -0
  194. /package/dist/chunks/{config-iuMz79Mg.js → config-CWTfyPNI.js} +0 -0
  195. /package/dist/chunks/{config-Ci9nXGUV.js → config-C_q_4FrU.js} +0 -0
  196. /package/dist/chunks/{config-O1_FTqD3.js → config-CzgNEHKi.js} +0 -0
  197. /package/dist/chunks/{config-Bcf-8XlK2.js → config-DDUPnue12.js} +0 -0
  198. /package/dist/chunks/{config-DmjwIqx1.js → config-DDwBSoc_.js} +0 -0
  199. /package/dist/chunks/{config-DaHI5bD_2.js → config-DZrlovR42.js} +0 -0
  200. /package/dist/chunks/{config-72sW9Bag2.js → config-D_Pafsjq2.js} +0 -0
  201. /package/dist/chunks/{config-B1kFmhpM.js → config-DhQc1TRY.js} +0 -0
  202. /package/dist/chunks/{config-CetsgpaZ2.js → config-DkeLkzxj2.js} +0 -0
  203. /package/dist/chunks/{config-BOdu-O_B.js → config-Dl5aZ5VR.js} +0 -0
  204. /package/dist/chunks/{config-CvGdaXvH.js → config-Doa_gU40.js} +0 -0
  205. /package/dist/chunks/{config-CdJpnjDj.js → config-DvDNney3.js} +0 -0
  206. /package/dist/chunks/{config-CpMYmvVT.js → config-NkbzVFZo.js} +0 -0
  207. /package/dist/chunks/{config-_3De4HFf.js → config-RjfJFv1Y.js} +0 -0
  208. /package/dist/chunks/{config-DoBk_CzG.js → config-VJuoznpH.js} +0 -0
  209. /package/dist/chunks/{config-BnWSHTEU.js → config-XspHtPsU.js} +0 -0
  210. /package/dist/chunks/{config-B2YTEe_h.js → config-hSlCXHoG.js} +0 -0
  211. /package/dist/chunks/{config-DSBlHQVa.js → config-lMDE_8A5.js} +0 -0
  212. /package/dist/chunks/{config-Cp_XHsze.js → config-nrOj9p6I.js} +0 -0
  213. /package/dist/chunks/{grSelectStyles-pUt19VGy.js → grSelectStyles-AjWWl007.js} +0 -0
  214. /package/dist/chunks/{grStyle-CUaTmpyW.js → grStyle-D-gPHdyW.js} +0 -0
  215. /package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js → GrEmptyState-yOuZW7-t.js} +0 -0
  216. /package/dist/components/GrFormFile/chunks/{GrFormFile-CIleXnfr.js → GrFormFile-CkR6cYqf.js} +0 -0
  217. /package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js → GrFormSection-dbyzqxYk.js} +0 -0
  218. /package/dist/components/GrImageViewer/chunks/{GrImageViewer-CsvXQHM9.js → GrImageViewer-BG40DsHa.js} +0 -0
  219. /package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js → GrList-CUW2sRm_.js} +0 -0
  220. /package/dist/components/GrSidebar/chunks/{GrSidebar-BpBtAGBs.js → GrSidebar-BW8LRMZ-.js} +0 -0
  221. /package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js → GrSkeleton-B05K0QKh.js} +0 -0
  222. /package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js → GrTabs-BfeVNMFJ.js} +0 -0
  223. /package/dist/components/GrTree/chunks/{GrTree-B2SMU5Py.js → GrTree-uZr5SyQI.js} +0 -0
@@ -1,8 +1,9 @@
1
- import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-LcJ88Vce.js";
1
+ import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-D_7jowK2.js";
2
2
  import { t as GrInput_default } from "../../GrInput/chunks/GrInput-gwFQ1sk4.js";
3
3
  import { vClickOutside } from "../../../directives/clickOutside.js";
4
- import { t as GrTree_default } from "../../GrTree/chunks/GrTree-B2SMU5Py.js";
5
- import { i as grTreeSelectPanelClass, r as grTreeSelectClass } from "../../../chunks/config-72sW9Bag2.js";
4
+ import { t as useFloating } from "../../../chunks/useFloating-CLtbU7eD.js";
5
+ import { t as GrTree_default } from "../../GrTree/chunks/GrTree-uZr5SyQI.js";
6
+ import { i as grTreeSelectPanelClass, r as grTreeSelectClass } from "../../../chunks/config-D_Pafsjq2.js";
6
7
  import { Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onUnmounted, openBlock, ref, renderSlot, toDisplayString, unref, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
7
8
  //#region src/components/GrTreeSelect/GrTreeSelect.vue?vue&type=script&setup=true&lang.ts
8
9
  var _hoisted_1 = { class: "relative" };
@@ -103,34 +104,11 @@ var GrTreeSelect_default = /* @__PURE__ */ defineComponent({
103
104
  let hadPointerDownOnTrigger = false;
104
105
  const open = ref(false);
105
106
  const filterValue = ref("");
106
- const panelStyle = ref({
107
- left: "0px",
108
- top: "0px",
109
- width: "0px",
110
- zIndex: "2147483647"
107
+ const { floatingStyle } = useFloating(rootEl, panelEl, open, {
108
+ placement: "bottom-start",
109
+ matchWidth: true,
110
+ zIndexVar: "--gr-z-dropdown"
111
111
  });
112
- function syncPanelPosition() {
113
- if (typeof window === "undefined") return;
114
- const root = rootEl.value;
115
- if (!root) return;
116
- const rect = root.getBoundingClientRect();
117
- panelStyle.value = {
118
- left: `${rect.left}px`,
119
- top: `${rect.bottom + 8}px`,
120
- width: `${rect.width}px`,
121
- zIndex: "2147483647"
122
- };
123
- }
124
- function bindPanelPositionListeners() {
125
- if (typeof window === "undefined") return;
126
- window.addEventListener("resize", syncPanelPosition);
127
- window.addEventListener("scroll", syncPanelPosition, true);
128
- }
129
- function unbindPanelPositionListeners() {
130
- if (typeof window === "undefined") return;
131
- window.removeEventListener("resize", syncPanelPosition);
132
- window.removeEventListener("scroll", syncPanelPosition, true);
133
- }
134
112
  const closeOnSelectResolved = computed(() => {
135
113
  return props.closeOnSelect ?? !props.multiple;
136
114
  });
@@ -266,12 +244,8 @@ var GrTreeSelect_default = /* @__PURE__ */ defineComponent({
266
244
  watch(open, async (isOpen) => {
267
245
  if (typeof document === "undefined") return;
268
246
  document.removeEventListener("keydown", closeOnEscape);
269
- unbindPanelPositionListeners();
270
247
  if (isOpen) document.addEventListener("keydown", closeOnEscape);
271
248
  if (!isOpen) return;
272
- bindPanelPositionListeners();
273
- await nextTick();
274
- syncPanelPosition();
275
249
  if (!props.multiple) {
276
250
  const v = props.modelValue;
277
251
  if (v != null && !Array.isArray(v)) treeRef.value?.setCurrentKey(v);
@@ -284,7 +258,6 @@ var GrTreeSelect_default = /* @__PURE__ */ defineComponent({
284
258
  onUnmounted(() => {
285
259
  if (typeof document === "undefined") return;
286
260
  document.removeEventListener("keydown", closeOnEscape);
287
- unbindPanelPositionListeners();
288
261
  });
289
262
  watch(() => props.modelValue, (v) => {
290
263
  if (props.multiple) return;
@@ -392,8 +365,7 @@ var GrTreeSelect_default = /* @__PURE__ */ defineComponent({
392
365
  ref: panelEl,
393
366
  "data-testid": "ds-tree-select-panel",
394
367
  "data-ds-tree-select-panel": "",
395
- class: "fixed w-full",
396
- style: normalizeStyle(panelStyle.value)
368
+ style: normalizeStyle(unref(floatingStyle))
397
369
  }, [createElementVNode("div", { class: normalizeClass(panelClasses.value) }, [__props.filterable ? (openBlock(), createElementBlock("div", _hoisted_6, [createVNode(GrInput_default, {
398
370
  ref_key: "filterInputRef",
399
371
  ref: filterInputRef,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrTreeSelect-CytivcCa.js","names":["$slots"],"sources":["../../../../src/components/GrTreeSelect/GrTreeSelect.vue","../../../../src/components/GrTreeSelect/GrTreeSelect.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass } from './grTreeSelectStyles'\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: 'md',\n invalid: false,\n state: 'default',\n multiple: false,\n clearable: false,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n (e: 'visibleChange', visible: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n}>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\nconst open = ref(false)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: props.size,\n state: props.state,\n invalid: props.invalid,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nfunction setOpen(next: boolean) {\n if (props.disabled)\n return\n\n if (open.value === next)\n return\n\n open.value = next\n emit('visibleChange', next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\nfunction closeDropdown(): void {\n setOpen(false)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n }\n else {\n // SSR / no window: reset sync\n hadPointerDownOnTrigger = false\n }\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger)\n return\n openDropdown()\n}\n\nfunction closeOnEscape(e: KeyboardEvent): void {\n if (e.key === 'Escape') {\n closeDropdown()\n nextTick(() => triggerEl.value?.focus())\n }\n}\n\nwatch(\n open,\n async (isOpen) => {\n if (typeof document === 'undefined')\n return\n\n document.removeEventListener('keydown', closeOnEscape)\n\n if (isOpen)\n document.addEventListener('keydown', closeOnEscape)\n\n if (!isOpen)\n return\n\n // sync tree highlight\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n // focus filter input\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nonUnmounted(() => {\n if (typeof document === 'undefined')\n return\n document.removeEventListener('keydown', closeOnEscape)\n})\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nwatch(\n open,\n (isOpen) => {\n if (isOpen)\n return\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (props.disabled)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (props.disabled)\n return\n\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n }\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (props.disabled)\n return\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-ds-tree-select\n class=\"relative\"\n >\n <div class=\"relative\">\n <input\n ref=\"triggerEl\"\n data-testid=\"ds-tree-select-trigger\"\n data-ds-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-invalid=\"invalid ? 'true' : undefined\"\n class=\"w-full rounded-md border bg-[var(--bg)] text-[var(--fg)] placeholder:text-[var(--muted-fg)] transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection\"\n data-testid=\"ds-tree-select-clear\"\n data-ds-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-md text-[var(--muted-fg)] hover:text-[var(--fg)] hover:bg-[color-mix(in_srgb,var(--muted)_25%,transparent)] disabled:opacity-50\"\n :disabled=\"disabled\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <span class=\"i-lucide-x inline-block h-4 w-4\" />\n </button>\n\n <span\n v-else\n data-testid=\"ds-tree-select-chevron\"\n data-ds-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--muted-fg)] pointer-events-none\"\n >\n <span\n class=\"i-lucide-chevron-down inline-block h-4 w-4 transition-transform duration-150\"\n :class=\"open ? 'rotate-180' : ''\"\n />\n </span>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport to=\"body\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"ds-tree-select-panel\"\n data-ds-tree-select-panel\n :style=\"floatingStyle\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"ds-tree-select-filter\"\n data-ds-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n />\n </div>\n\n <div\n class=\"p-1 overflow-auto\"\n :style=\"{ maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div v-if=\"(data?.length ?? 0) === 0\" class=\"px-3 py-2 text-[13px] text-[var(--muted-fg)]\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n ref=\"treeRef\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n @node-click=\"onNodeClick\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <span\n class=\"inline-block h-4 w-4 shrink-0\"\n :class=\"selectedKeySet.has(node.key) ? 'i-lucide-check text-[var(--primary)]' : ''\"\n aria-hidden=\"true\"\n />\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass } from './grTreeSelectStyles'\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: 'md',\n invalid: false,\n state: 'default',\n multiple: false,\n clearable: false,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n (e: 'visibleChange', visible: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n}>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\nconst open = ref(false)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: props.size,\n state: props.state,\n invalid: props.invalid,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nfunction setOpen(next: boolean) {\n if (props.disabled)\n return\n\n if (open.value === next)\n return\n\n open.value = next\n emit('visibleChange', next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\nfunction closeDropdown(): void {\n setOpen(false)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n }\n else {\n // SSR / no window: reset sync\n hadPointerDownOnTrigger = false\n }\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger)\n return\n openDropdown()\n}\n\nfunction closeOnEscape(e: KeyboardEvent): void {\n if (e.key === 'Escape') {\n closeDropdown()\n nextTick(() => triggerEl.value?.focus())\n }\n}\n\nwatch(\n open,\n async (isOpen) => {\n if (typeof document === 'undefined')\n return\n\n document.removeEventListener('keydown', closeOnEscape)\n\n if (isOpen)\n document.addEventListener('keydown', closeOnEscape)\n\n if (!isOpen)\n return\n\n // sync tree highlight\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n // focus filter input\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nonUnmounted(() => {\n if (typeof document === 'undefined')\n return\n document.removeEventListener('keydown', closeOnEscape)\n})\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nwatch(\n open,\n (isOpen) => {\n if (isOpen)\n return\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (props.disabled)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (props.disabled)\n return\n\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n }\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (props.disabled)\n return\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-ds-tree-select\n class=\"relative\"\n >\n <div class=\"relative\">\n <input\n ref=\"triggerEl\"\n data-testid=\"ds-tree-select-trigger\"\n data-ds-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-invalid=\"invalid ? 'true' : undefined\"\n class=\"w-full rounded-md border bg-[var(--bg)] text-[var(--fg)] placeholder:text-[var(--muted-fg)] transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection\"\n data-testid=\"ds-tree-select-clear\"\n data-ds-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-md text-[var(--muted-fg)] hover:text-[var(--fg)] hover:bg-[color-mix(in_srgb,var(--muted)_25%,transparent)] disabled:opacity-50\"\n :disabled=\"disabled\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <span class=\"i-lucide-x inline-block h-4 w-4\" />\n </button>\n\n <span\n v-else\n data-testid=\"ds-tree-select-chevron\"\n data-ds-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--muted-fg)] pointer-events-none\"\n >\n <span\n class=\"i-lucide-chevron-down inline-block h-4 w-4 transition-transform duration-150\"\n :class=\"open ? 'rotate-180' : ''\"\n />\n </span>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport to=\"body\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"ds-tree-select-panel\"\n data-ds-tree-select-panel\n :style=\"floatingStyle\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"ds-tree-select-filter\"\n data-ds-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n />\n </div>\n\n <div\n class=\"p-1 overflow-auto\"\n :style=\"{ maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div v-if=\"(data?.length ?? 0) === 0\" class=\"px-3 py-2 text-[13px] text-[var(--muted-fg)]\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n ref=\"treeRef\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n @node-click=\"onNodeClick\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <span\n class=\"inline-block h-4 w-4 shrink-0\"\n :class=\"selectedKeySet.has(node.key) ? 'i-lucide-check text-[var(--primary)]' : ''\"\n aria-hidden=\"true\"\n />\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-72sW9Bag2.js";
2
- import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-C1abr5uH.js";
1
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-D_Pafsjq2.js";
2
+ import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-CytivcCa.js";
3
3
  export { GrTreeSelect_default as GrTreeSelect, GrTreeSelect_default as default, grTreeSelectConfig, grTreeSelectSafelist };
@@ -1,6 +1,6 @@
1
1
  import { n as grButtonSafelist } from "./chunks/safelist-DccvJqCE.js";
2
- import { n as grProgressBarSafelist } from "./chunks/config-CFf7xaG1.js";
3
- import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-BiqXd5MW.js";
2
+ import { n as grProgressBarSafelist } from "./chunks/config-B0uUCaJW.js";
3
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-DpjTvFno.js";
4
4
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
5
  import { tokenDefinitionsFromCssSync } from "@feugene/unocss-preset-granular/node";
6
6
  //#region src/components/GrButton/config.node.ts
@@ -1,4 +1,4 @@
1
- import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-BiqXd5MW.js";
1
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-DpjTvFno.js";
2
2
  //#region src/granular-provider/index.ts
3
3
  var granularityProvider = createGranularityProvider();
4
4
  //#endregion
package/dist/i18n/all.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as ru, r as en, t as es } from "../chunks/es-Bx3Kuy6z.js";
1
+ import { n as ru, r as en, t as es } from "../chunks/es-CISK11Nv.js";
2
2
  //#region src/i18n/all.ts
3
3
  var all = [
4
4
  en,
@@ -1,3 +1,3 @@
1
1
  import { t as GRANULARITY_I18N_KEY } from "../chunks/adapter-BqqjEZGU.js";
2
- import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-Bx3Kuy6z.js";
2
+ import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-CISK11Nv.js";
3
3
  export { GRANULARITY_I18N_BLOCK, GRANULARITY_I18N_KEY, en, es, ru };
package/dist/index.js CHANGED
@@ -25,12 +25,12 @@ import { n as GrCollapse_default, r as GR_COLLAPSE_CONTEXT, t as GrCollapseItem_
25
25
  import { t as GrIcon_default } from "./components/GrIcon/chunks/GrIcon-BV7RBU_0.js";
26
26
  import { t as grIconConfig } from "./chunks/config-DbghHyY_.js";
27
27
  import { t as grCollapseConfig } from "./chunks/config-D5ek7VSi.js";
28
- import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-lh0lOmoi.js";
29
- import { t as getGrModalPanelClass } from "./chunks/grModalStyles-DS1Vl6EW.js";
28
+ import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-CSOL3fHQ.js";
29
+ import { t as getGrModalPanelClass } from "./chunks/grModalStyles-FgaKqx50.js";
30
30
  import { a as resolveGrDialogTitle, i as resolveGrDialogSectionConfig, n as DEFAULT_GR_DIALOG_FOOTER_CONFIG, r as DEFAULT_GR_DIALOG_HEADER_CONFIG, t as DEFAULT_GR_DIALOG_BODY_CONFIG } from "./chunks/dialogShared-BtXUk6Zc.js";
31
- import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-C7XLxp8e.js";
32
- import { _ as DEFAULT_AUTO_HIDE_KINDS, a as extendDefaultParsers, c as problemDetailsParser, d as networkErrorParser, f as laravelValidationParser, g as abortErrorParser, h as fileValidationParser, i as defaultResponseErrorParsers, l as plainMessageParser, m as httpStatusParser, n as coreResponseErrorParsers, o as resolveResponseErrorTitle, p as jsonApiErrorParser, r as createResponseErrorClassifier, s as responseErrorParserPresets, t as GrResponseErrorBanner_default, u as normalizeError, v as DEFAULT_RESPONSE_ERROR_TEXTS, y as DEFAULT_TONE_BY_KIND } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CzdTh4gd.js";
33
- import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-Br6WJkLE.js";
31
+ import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-CxK4Lj4F.js";
32
+ import { _ as DEFAULT_AUTO_HIDE_KINDS, a as extendDefaultParsers, c as problemDetailsParser, d as networkErrorParser, f as laravelValidationParser, g as abortErrorParser, h as fileValidationParser, i as defaultResponseErrorParsers, l as plainMessageParser, m as httpStatusParser, n as coreResponseErrorParsers, o as resolveResponseErrorTitle, p as jsonApiErrorParser, r as createResponseErrorClassifier, s as responseErrorParserPresets, t as GrResponseErrorBanner_default, u as normalizeError, v as DEFAULT_RESPONSE_ERROR_TEXTS, y as DEFAULT_TONE_BY_KIND } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-bM8FC_Bw.js";
33
+ import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-Bi2KLumL.js";
34
34
  import { t as grConfirmDialogConfig } from "./chunks/config-BduXEXjt.js";
35
35
  import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-dTWUxzRm.js";
36
36
  import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-ClcYiyc8.js";
@@ -39,8 +39,8 @@ import { t as grDialogSafelist } from "./chunks/safelist-_UVzJrgE2.js";
39
39
  import "./components/GrDialog/index.js";
40
40
  import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-U7c_aDPJ.js";
41
41
  import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-gwFQ1sk4.js";
42
- import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-BV4EW3XO.js";
43
- import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js";
42
+ import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-D_TFqKsF.js";
43
+ import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-K1uZ1mYD.js";
44
44
  import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-C6zT56Jc2.js";
45
45
  import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js";
46
46
  import { vAutofocus } from "./directives/autofocus.js";
@@ -51,75 +51,75 @@ import { vDropzone } from "./directives/dropzone.js";
51
51
  import { vHotkey } from "./directives/hotkey.js";
52
52
  import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-mfyfghxs.js";
53
53
  import { createLoading, vLoading } from "./directives/loading.js";
54
- import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-DOvHKnih.js";
55
- import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-Br_qI3Za.js";
54
+ import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-BGKeEfZ1.js";
55
+ import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-C_egzT_K.js";
56
56
  import "./components/GrDropdown/index.js";
57
- import { a as GrDropdownMenuColumns_default, c as GrDropdownMenuList_default, i as GrDropdownMenuDivider_default, n as GrDropdownMenuGroup_default, o as GrDropdownMenuColumn_default, r as GrDropdownMenuHeader_default, s as GrDropdownMenu_default, t as GrDropdownMenuItem_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-CLPwbiyG.js";
58
- import { t as grDropdownMenuConfig } from "./chunks/config-DmjwIqx1.js";
59
- import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-Dj2V5GaX.js";
60
- import { t as grEmptyStateConfig } from "./chunks/config-O1_FTqD3.js";
61
- import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-C2HdYjp4.js";
62
- import { i as GrUploadHttpError, n as GR_UPLOAD_STATE_IDLE, r as GrUploadAbortError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-BEKNB1RM.js";
63
- import { t as grFileUploadConfig } from "./chunks/config-DF_RlCIO.js";
64
- import { t as grFormFieldConfig } from "./chunks/config-Dcb7xK-C.js";
57
+ import { a as GrDropdownMenuColumns_default, c as GrDropdownMenuList_default, i as GrDropdownMenuDivider_default, n as GrDropdownMenuGroup_default, o as GrDropdownMenuColumn_default, r as GrDropdownMenuHeader_default, s as GrDropdownMenu_default, t as GrDropdownMenuItem_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-CJom_-c2.js";
58
+ import { t as grDropdownMenuConfig } from "./chunks/config-DDwBSoc_.js";
59
+ import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-yOuZW7-t.js";
60
+ import { t as grEmptyStateConfig } from "./chunks/config-CzgNEHKi.js";
61
+ import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-BBSFpVEq.js";
62
+ import { i as GrUploadHttpError, n as GR_UPLOAD_STATE_IDLE, r as GrUploadAbortError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-CBKK3dgC.js";
63
+ import { t as grFileUploadConfig } from "./chunks/config-CPSdAjUi.js";
64
+ import { t as grFormFieldConfig } from "./chunks/config-B3dn-gdC.js";
65
65
  import "./components/GrFormField/index.js";
66
- import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-CIleXnfr.js";
67
- import { t as grFormFileConfig } from "./chunks/config-BbKroFtR.js";
68
- import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-DpGhY7MX.js";
69
- import { t as grFormSectionConfig } from "./chunks/config-DoBk_CzG.js";
70
- import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-CsvXQHM9.js";
71
- import { t as grImageViewerConfig } from "./chunks/config-CvGdaXvH.js";
72
- import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-D4s_QWVP.js";
66
+ import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-CkR6cYqf.js";
67
+ import { t as grFormFileConfig } from "./chunks/config-C5-ujXCI.js";
68
+ import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-dbyzqxYk.js";
69
+ import { t as grFormSectionConfig } from "./chunks/config-VJuoznpH.js";
70
+ import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-BG40DsHa.js";
71
+ import { t as grImageViewerConfig } from "./chunks/config-Doa_gU40.js";
72
+ import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-8f8624RN.js";
73
73
  import "./components/GrInput/index.js";
74
- import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-BnWSHTEU.js";
75
- import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-Dcj3F6rQ.js";
76
- import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-CpMYmvVT.js";
77
- import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-BMwn2iJ9.js";
78
- import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-D8nM1FuV.js";
79
- import { t as grListConfig } from "./chunks/config-DSBlHQVa.js";
80
- import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-d386uO3O.js";
74
+ import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-XspHtPsU.js";
75
+ import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-g-KdUI_Z.js";
76
+ import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-NkbzVFZo.js";
77
+ import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-KSTmk9Yq.js";
78
+ import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-CUW2sRm_.js";
79
+ import { t as grListConfig } from "./chunks/config-lMDE_8A5.js";
80
+ import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-58Mj2rGH.js";
81
81
  import "./components/GrLoading/index.js";
82
- import { n as grModalClassTokens, r as grModalSafelist, t as grModalConfig } from "./chunks/config-C5OwJM3-.js";
82
+ import { n as grModalClassTokens, r as grModalSafelist, t as grModalConfig } from "./chunks/config-DRpkoSvq.js";
83
83
  import "./components/GrModal/index.js";
84
- import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-BH7XiF9q.js";
85
- import { t as grNavbarConfig } from "./chunks/config-Ci9nXGUV.js";
86
- import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-CdJpnjDj.js";
87
- import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-YIWhV85S.js";
88
- import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-CnHdbPlf.js";
89
- import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-BNDEqM8_.js";
90
- import { t as grPaginationConfig } from "./chunks/config-iuMz79Mg.js";
91
- import { n as grProgressBarSafelist, t as grProgressBarConfig } from "./chunks/config-CFf7xaG1.js";
84
+ import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-CHxwtFIR.js";
85
+ import { t as grNavbarConfig } from "./chunks/config-C_q_4FrU.js";
86
+ import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-DvDNney3.js";
87
+ import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-ClPBwkxx.js";
88
+ import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-DSz7jvUb.js";
89
+ import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-D2GS0ShQ.js";
90
+ import { t as grPaginationConfig } from "./chunks/config-CWTfyPNI.js";
91
+ import { n as grProgressBarSafelist, t as grProgressBarConfig } from "./chunks/config-B0uUCaJW.js";
92
92
  import "./components/GrProgressBar/index.js";
93
- import { t as grPromptDialogConfig } from "./chunks/config-B1kFmhpM.js";
94
- import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-Cp_XHsze.js";
95
- import { n as GR_RADIO_GROUP_CONTEXT, t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-IFU9Hiu2.js";
96
- import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-C8IcJuuF.js";
97
- import { t as grRadioGroupConfig } from "./chunks/config-BU0olrvr.js";
98
- import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-B2YTEe_h.js";
99
- import { t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-BRmwBsEG.js";
100
- import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-BY81UKv0.js";
93
+ import { t as grPromptDialogConfig } from "./chunks/config-DhQc1TRY.js";
94
+ import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-nrOj9p6I.js";
95
+ import { n as GR_RADIO_GROUP_CONTEXT, t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-CSbTnrom.js";
96
+ import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-DsrnTygR.js";
97
+ import { t as grRadioGroupConfig } from "./chunks/config-Bh4NWWsQ.js";
98
+ import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-hSlCXHoG.js";
99
+ import { t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-DpZGs4VX.js";
100
+ import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-C8MM2Dg0.js";
101
101
  import "./components/GrSelect/index.js";
102
- import { t as GrSidebar_default } from "./components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js";
103
- import { t as grSidebarConfig } from "./chunks/config-BeQuykDk2.js";
104
- import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-URyMkBqI.js";
105
- import { t as grSkeletonConfig } from "./chunks/config-DaHI5bD_2.js";
106
- import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-_3De4HFf.js";
107
- import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-29h0QhMO.js";
108
- import { t as grTableConfig } from "./chunks/config-Bcf-8XlK2.js";
102
+ import { t as GrSidebar_default } from "./components/GrSidebar/chunks/GrSidebar-BW8LRMZ-.js";
103
+ import { t as grSidebarConfig } from "./chunks/config-BuoIngj32.js";
104
+ import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-B05K0QKh.js";
105
+ import { t as grSkeletonConfig } from "./chunks/config-DZrlovR42.js";
106
+ import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-RjfJFv1Y.js";
107
+ import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-CSRtcN5-.js";
108
+ import { t as grTableConfig } from "./chunks/config-DDUPnue12.js";
109
109
  import "./components/GrTable/index.js";
110
- import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-D3ntDdtg.js";
111
- import { t as grTabsConfig } from "./chunks/config-Dzd6BzIN2.js";
112
- import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-B_nSBc7W.js";
113
- import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-Cv6r2GuC.js";
110
+ import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-BfeVNMFJ.js";
111
+ import { t as grTabsConfig } from "./chunks/config-BeBsN0c12.js";
112
+ import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-A-iei0Ux.js";
113
+ import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-CBBzpF2S.js";
114
114
  import { useToast } from "./composables/useToast.js";
115
- import { n as grToasterSafelist, t as grToasterConfig } from "./chunks/config-CetsgpaZ2.js";
116
- import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-DluJmR5D.js";
117
- import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js";
118
- import { t as grTooltipConfig } from "./chunks/config-BOdu-O_B.js";
119
- import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-B2SMU5Py.js";
120
- import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-D6Oe3blW2.js";
121
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-72sW9Bag2.js";
122
- import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-C1abr5uH.js";
115
+ import { n as grToasterSafelist, t as grToasterConfig } from "./chunks/config-DkeLkzxj2.js";
116
+ import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-C6_iHk2J.js";
117
+ import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-BC-40SA5.js";
118
+ import { t as grTooltipConfig } from "./chunks/config-Dl5aZ5VR.js";
119
+ import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-uZr5SyQI.js";
120
+ import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-BLa1TEGm2.js";
121
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-D_Pafsjq2.js";
122
+ import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-CytivcCa.js";
123
123
  import { initThemeEarly, useTheme } from "./composables/useTheme.js";
124
124
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, mergeProps, nextTick, onBeforeUnmount, openBlock, reactive, ref, render, shallowRef, toDisplayString, watch, withCtx } from "vue";
125
125
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
@@ -1,7 +1,8 @@
1
+ import type { Placement } from '@floating-ui/dom';
1
2
  export type GrDropdownAlign = 'left' | 'right' | 'center';
2
3
  export type GrDropdownWidth = 'auto' | '20' | '48' | '60' | '64' | '80';
3
4
  export declare const widthClassByWidth: Record<GrDropdownWidth, string>;
4
- export declare const alignmentClassByAlign: Record<GrDropdownAlign, string>;
5
+ export declare const originClassByPlacement: Partial<Record<Placement, string>>;
5
6
  export declare function grDropdownWidthClass(width: GrDropdownWidth): string;
6
- export declare function grDropdownAlignmentClass(align: GrDropdownAlign): string;
7
+ export declare function grDropdownOriginClass(placement: Placement): string;
7
8
  export declare function grDropdownContentClass(contentClass?: string): string;
@@ -51,11 +51,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
51
51
  }>>> & Readonly<{}>, {
52
52
  width: GrDropdownMenuWidth;
53
53
  align: GrDropdownMenuAlign;
54
+ borderBottom: boolean;
55
+ borderTop: boolean;
54
56
  closeOnContentClick: boolean;
55
57
  contentClass: string;
56
58
  dividers: boolean;
57
- borderTop: boolean;
58
- borderBottom: boolean;
59
59
  listClass: string;
60
60
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
61
61
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -21,8 +21,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
21
21
  uppercase: boolean;
22
22
  }>>> & Readonly<{}>, {
23
23
  title: string;
24
- dividers: boolean;
25
24
  uppercase: boolean;
25
+ dividers: boolean;
26
26
  titleAlign: GrDropdownMenuHeaderAlign;
27
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
28
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -16,9 +16,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
16
16
  borderTop: boolean;
17
17
  borderBottom: boolean;
18
18
  }>>> & Readonly<{}>, {
19
- dividers: boolean;
20
- borderTop: boolean;
21
19
  borderBottom: boolean;
20
+ borderTop: boolean;
21
+ dividers: boolean;
22
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
24
  declare const _default: typeof __VLS_export;
@@ -159,10 +159,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
159
159
  name: string;
160
160
  headers: Record<string, string>;
161
161
  placeholder: string;
162
+ multiple: boolean;
162
163
  withCredentials: boolean;
163
164
  action: string;
164
165
  request: GrFileUploadRequest;
165
- multiple: boolean;
166
166
  limit: number;
167
167
  onExceed: (files: File[], limit: number) => void;
168
168
  beforeUpload: (file: File) => boolean | Promise<unknown>;
@@ -68,9 +68,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
68
68
  as: string | Component;
69
69
  target: string;
70
70
  href: string;
71
+ underline: GrLinkUnderline;
71
72
  external: boolean;
72
73
  rel: string;
73
- underline: GrLinkUnderline;
74
74
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
75
75
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
76
76
  declare const _default: typeof __VLS_export;
@@ -1,5 +1,5 @@
1
1
  export type GrModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
2
- export declare const root = "fixed inset-0 z-50";
2
+ export declare const root = "fixed inset-0 z-[var(--gr-z-modal)]";
3
3
  export declare const shell = "fixed inset-0 overflow-y-auto p-4 sm:p-6";
4
4
  export declare const layout = "min-h-full flex items-center justify-center";
5
5
  export declare const overlay = "fixed inset-0 z-0 bg-black/40";
@@ -52,8 +52,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
52
52
  disabled: boolean;
53
53
  ariaLabel: string;
54
54
  name: string;
55
- indicatorDuration: number;
56
55
  block: boolean;
56
+ indicatorDuration: number;
57
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
58
58
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
59
59
  declare const _default: typeof __VLS_export;
@@ -19,7 +19,7 @@ export interface GrSelectProps {
19
19
  optionsView?: GrSelectOptionsView;
20
20
  /** Разрешает ввод/выбор значения, которого нет в `options`. */
21
21
  allowCustomValue?: boolean;
22
- /** Placeholder для инпута кастомного значения (только в `optionsView="panel"`). */
22
+ /** Placeholder для инпута кастомного значения (только в `optionsView="panel"`). i18n-friendly: если не задан — берётся из адаптера перевода (`gr.select.customValuePlaceholder`), иначе — встроенный fallback. */
23
23
  customValuePlaceholder?: string;
24
24
  /** Максимальная высота панели (только в `optionsView="panel"`). */
25
25
  dropdownMaxHeight?: number;
@@ -67,11 +67,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
67
67
  multiple: boolean;
68
68
  optionsView: string;
69
69
  allowCustomValue: boolean;
70
- customValuePlaceholder: string;
70
+ customValuePlaceholder: undefined;
71
71
  dropdownMaxHeight: number;
72
72
  closeOnSelect: boolean;
73
73
  clearable: boolean;
74
- clearLabel: string;
74
+ clearLabel: undefined;
75
75
  variant: string;
76
76
  underline: string;
77
77
  }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -86,11 +86,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
86
86
  multiple: boolean;
87
87
  optionsView: string;
88
88
  allowCustomValue: boolean;
89
- customValuePlaceholder: string;
89
+ customValuePlaceholder: undefined;
90
90
  dropdownMaxHeight: number;
91
91
  closeOnSelect: boolean;
92
92
  clearable: boolean;
93
- clearLabel: string;
93
+ clearLabel: undefined;
94
94
  variant: string;
95
95
  underline: string;
96
96
  }>>> & Readonly<{
@@ -103,8 +103,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
103
103
  ariaLabel: string;
104
104
  placeholder: string;
105
105
  options: GrSelectOptionOrGroup[];
106
- multiple: boolean;
107
106
  underline: GrSelectUnderline;
107
+ multiple: boolean;
108
108
  optionsView: GrSelectOptionsView;
109
109
  allowCustomValue: boolean;
110
110
  customValuePlaceholder: string;
@@ -0,0 +1,53 @@
1
+ import type { CSSProperties, Ref } from 'vue';
2
+ import type { Placement } from '@floating-ui/dom';
3
+ export type UseFloatingPlacement = Placement;
4
+ export interface UseFloatingOptions {
5
+ /**
6
+ * Предпочитаемое место панели относительно триггера. По умолчанию `bottom-start`.
7
+ * Можно передать функцию-геттер, если место зависит от реактивного пропа
8
+ * (например, `align`) — она вызывается заново при каждом пересчёте позиции.
9
+ */
10
+ placement?: UseFloatingPlacement | (() => UseFloatingPlacement);
11
+ /** Зазор между триггером и панелью, px. По умолчанию `8`. */
12
+ offsetPx?: number;
13
+ /** Минимальный отступ от края viewport при flip/shift, px. По умолчанию `8`. */
14
+ boundaryPadding?: number;
15
+ /**
16
+ * Согласовать ширину панели с шириной триггера (актуально для Select/TreeSelect).
17
+ * Не годится для Dropdown/Tooltip, где ширина панели определяется контентом.
18
+ * - `true` — точная ширина (`width = ширина триггера`);
19
+ * - `'min'` — панель растёт по контенту (`width: max-content`), но не уже триггера
20
+ * (`min-width = ширина триггера`) — режим `GrSelect view="link"`;
21
+ * - функция-геттер — как и `placement`, для реактивной зависимости от пропа.
22
+ */
23
+ matchWidth?: boolean | 'min' | (() => boolean | 'min');
24
+ /** CSS-переменная шкалы слоёв (см. `styles/tokens.css`). По умолчанию `--gr-z-dropdown`. */
25
+ zIndexVar?: string;
26
+ }
27
+ export interface UseFloatingReturn {
28
+ /** Готовый объект для `:style` на плавающем элементе. */
29
+ floatingStyle: Ref<CSSProperties>;
30
+ /**
31
+ * Итоговое место панели ПОСЛЕ применения `flip` — может отличаться от запрошенного
32
+ * `placement`, если места не хватило и панель перевернуло на противоположную сторону.
33
+ * Полезно для выбора `transform-origin`/направления transition в потребителе.
34
+ */
35
+ resolvedPlacement: Ref<Placement>;
36
+ /** Принудительный пересчёт позиции (например, после изменения контента панели). */
37
+ update: () => void;
38
+ }
39
+ /**
40
+ * Единый движок позиционирования floating-панелей (Dropdown/Select/TreeSelect/Tooltip)
41
+ * поверх `@floating-ui/dom`: flip (переворот при нехватке места), shift (клэмп к границам
42
+ * viewport), опциональный `size`-мидлвар для растягивания по ширине триггера.
43
+ *
44
+ * Пересчёт положения при скролле/ресайзе делает `autoUpdate` из `@floating-ui/dom` —
45
+ * он сам использует `ResizeObserver`/`IntersectionObserver` и пассивные слушатели вместо
46
+ * наивного враппера на каждый `scroll`/`resize`, поэтому отдельный rAF-throttling здесь
47
+ * не нужен (в отличие от прежней ручной реализации в `GrSelect`/`GrDropdown`).
48
+ *
49
+ * Требует, чтобы `floatingEl` был примонтирован в DOM на момент открытия (обычно —
50
+ * `<teleport to="body">` + `v-show`, а не `v-if`): позиционирование не может измерить
51
+ * элемент, которого нет в дереве.
52
+ */
53
+ export declare function useFloating(referenceEl: Ref<HTMLElement | null>, floatingEl: Ref<HTMLElement | null>, open: Ref<boolean>, options?: UseFloatingOptions): UseFloatingReturn;