@feugene/granularity 0.3.2 → 0.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.
- package/dist/GrFormFile.css +1 -0
- package/dist/GrTree.css +1 -0
- package/dist/chunks/_plugin-vue_export-helper-BG_EqiDU.js +8 -0
- package/dist/chunks/adapter-C7fKeUa4.js +6 -0
- package/dist/chunks/adapter-C7fKeUa4.js.map +1 -0
- package/dist/chunks/arrow-up-DNXrMoAI.js +25 -0
- package/dist/chunks/arrow-up-DNXrMoAI.js.map +1 -0
- package/dist/chunks/classTokens-BPeBXNzu.js +8 -0
- package/dist/chunks/classTokens-BPeBXNzu.js.map +1 -0
- package/dist/chunks/config-2wgwWaAB.js +10 -0
- package/dist/chunks/config-2wgwWaAB.js.map +1 -0
- package/dist/chunks/config-BKRmlivc.js +10 -0
- package/dist/chunks/config-BKRmlivc.js.map +1 -0
- package/dist/chunks/config-BRU5PR8_.js +10 -0
- package/dist/chunks/config-BRU5PR8_.js.map +1 -0
- package/dist/chunks/config-BUGfFjmC.js +16 -0
- package/dist/chunks/config-BUGfFjmC.js.map +1 -0
- package/dist/chunks/config-BXffa3ta.js +60 -0
- package/dist/chunks/config-BXffa3ta.js.map +1 -0
- package/dist/chunks/config-BaMO9dQh.js +22 -0
- package/dist/chunks/config-BaMO9dQh.js.map +1 -0
- package/dist/chunks/config-BbtK511H.js +11 -0
- package/dist/chunks/config-BbtK511H.js.map +1 -0
- package/dist/chunks/config-BcFOkUhh.js +15 -0
- package/dist/chunks/config-BcFOkUhh.js.map +1 -0
- package/dist/chunks/config-BcpRsZTe.js +10 -0
- package/dist/chunks/config-BcpRsZTe.js.map +1 -0
- package/dist/chunks/config-BhubOeci.js +15 -0
- package/dist/chunks/config-BhubOeci.js.map +1 -0
- package/dist/chunks/config-BhvNm4Pp.js +173 -0
- package/dist/chunks/config-BhvNm4Pp.js.map +1 -0
- package/dist/chunks/config-Bv2G0OU6.js +10 -0
- package/dist/chunks/config-Bv2G0OU6.js.map +1 -0
- package/dist/chunks/config-Bv5Dok4j.js +41 -0
- package/dist/chunks/config-Bv5Dok4j.js.map +1 -0
- package/dist/chunks/config-BzQ4S4Hb.js +11 -0
- package/dist/chunks/config-BzQ4S4Hb.js.map +1 -0
- package/dist/chunks/config-BzZGpWsj.js +11 -0
- package/dist/chunks/config-BzZGpWsj.js.map +1 -0
- package/dist/chunks/config-C0b_3LJV.js +42 -0
- package/dist/chunks/config-C0b_3LJV.js.map +1 -0
- package/dist/chunks/config-C2JKq8-2.js +60 -0
- package/dist/chunks/config-C2JKq8-2.js.map +1 -0
- package/dist/chunks/config-C6SBJxcH.js +10 -0
- package/dist/chunks/config-C6SBJxcH.js.map +1 -0
- package/dist/chunks/config-CJbjLC5X.js +55 -0
- package/dist/chunks/config-CJbjLC5X.js.map +1 -0
- package/dist/chunks/config-CJeyaUTp.js +40 -0
- package/dist/chunks/config-CJeyaUTp.js.map +1 -0
- package/dist/chunks/config-CMZE2fu0.js +11 -0
- package/dist/chunks/config-CMZE2fu0.js.map +1 -0
- package/dist/chunks/config-CU_CBd0k.js +24 -0
- package/dist/chunks/config-CU_CBd0k.js.map +1 -0
- package/dist/chunks/config-CYPU3ztl.js +26 -0
- package/dist/chunks/config-CYPU3ztl.js.map +1 -0
- package/dist/chunks/config-CcmeMlic.js +19 -0
- package/dist/chunks/config-CcmeMlic.js.map +1 -0
- package/dist/chunks/config-CdAx6ify2.js +11 -0
- package/dist/chunks/config-CdAx6ify2.js.map +1 -0
- package/dist/chunks/config-CxCAfXZ1.js +23 -0
- package/dist/chunks/config-CxCAfXZ1.js.map +1 -0
- package/dist/chunks/config-D1gSaT52.js +11 -0
- package/dist/chunks/config-D1gSaT52.js.map +1 -0
- package/dist/chunks/config-D7iuXJbl.js +11 -0
- package/dist/chunks/config-D7iuXJbl.js.map +1 -0
- package/dist/chunks/config-D7tRu8u3.js +11 -0
- package/dist/chunks/config-D7tRu8u3.js.map +1 -0
- package/dist/chunks/config-DBYCntwl.js +10 -0
- package/dist/chunks/config-DBYCntwl.js.map +1 -0
- package/dist/chunks/config-DFRYOcrP.js +11 -0
- package/dist/chunks/config-DFRYOcrP.js.map +1 -0
- package/dist/chunks/config-DW_RqmUp.js +10 -0
- package/dist/chunks/config-DW_RqmUp.js.map +1 -0
- package/dist/chunks/config-Dkq0HeLe.js +11 -0
- package/dist/chunks/config-Dkq0HeLe.js.map +1 -0
- package/dist/chunks/config-DlLE49_I.js +11 -0
- package/dist/chunks/config-DlLE49_I.js.map +1 -0
- package/dist/chunks/config-DvTUDLT1.js +46 -0
- package/dist/chunks/config-DvTUDLT1.js.map +1 -0
- package/dist/chunks/config-DwB5-qdP2.js +10 -0
- package/dist/chunks/config-DwB5-qdP2.js.map +1 -0
- package/dist/chunks/config-DxqMXzNV2.js +25 -0
- package/dist/chunks/config-DxqMXzNV2.js.map +1 -0
- package/dist/chunks/config-DxqpV-KM.js +47 -0
- package/dist/chunks/config-DxqpV-KM.js.map +1 -0
- package/dist/chunks/config-Dzz9P-GV2.js +11 -0
- package/dist/chunks/config-Dzz9P-GV2.js.map +1 -0
- package/dist/chunks/config-KGTIAFD92.js +10 -0
- package/dist/chunks/config-KGTIAFD92.js.map +1 -0
- package/dist/chunks/config-TyzU6gLf.js +10 -0
- package/dist/chunks/config-TyzU6gLf.js.map +1 -0
- package/dist/chunks/config-cn6knwud.js +37 -0
- package/dist/chunks/config-cn6knwud.js.map +1 -0
- package/dist/chunks/config-dD6Po-Cq.js +10 -0
- package/dist/chunks/config-dD6Po-Cq.js.map +1 -0
- package/dist/chunks/config-rFwazRKi.js +11 -0
- package/dist/chunks/config-rFwazRKi.js.map +1 -0
- package/dist/chunks/config-rQlbnEKn.js +10 -0
- package/dist/chunks/config-rQlbnEKn.js.map +1 -0
- package/dist/chunks/config-rxFL-6yF2.js +80 -0
- package/dist/chunks/config-rxFL-6yF2.js.map +1 -0
- package/dist/chunks/config-ug8O8epd.js +13 -0
- package/dist/chunks/config-ug8O8epd.js.map +1 -0
- package/dist/chunks/dialogShared-BtXUk6Zc.js +34 -0
- package/dist/chunks/dialogShared-BtXUk6Zc.js.map +1 -0
- package/dist/chunks/directives-Cuib0yOO.js +728 -0
- package/dist/chunks/directives-Cuib0yOO.js.map +1 -0
- package/dist/chunks/en-BMjJZttK.js +50 -0
- package/dist/chunks/en-BMjJZttK.js.map +1 -0
- package/dist/chunks/es-Cu_RlgIr.js +22 -0
- package/dist/chunks/es-Cu_RlgIr.js.map +1 -0
- package/dist/chunks/es-EYCf8G_1.js +50 -0
- package/dist/chunks/es-EYCf8G_1.js.map +1 -0
- package/dist/chunks/fileValidation-CgjTGoUx.js +221 -0
- package/dist/chunks/fileValidation-CgjTGoUx.js.map +1 -0
- package/dist/chunks/grBadgeStyles-pqqbVgLk.js +50 -0
- package/dist/chunks/grBadgeStyles-pqqbVgLk.js.map +1 -0
- package/dist/chunks/grButtonStyles-BxZW2x0-.js +193 -0
- package/dist/chunks/grButtonStyles-BxZW2x0-.js.map +1 -0
- package/dist/chunks/grDropdownStyles-DQfLh-bp.js +34 -0
- package/dist/chunks/grDropdownStyles-DQfLh-bp.js.map +1 -0
- package/dist/chunks/grLoadingStyles-CERsxyk9.js +19 -0
- package/dist/chunks/grLoadingStyles-CERsxyk9.js.map +1 -0
- package/dist/chunks/grModalStyles-Dv2NXBKi.js +49 -0
- package/dist/chunks/grModalStyles-Dv2NXBKi.js.map +1 -0
- package/dist/chunks/grSelectStyles-C1zNEkV7.js +52 -0
- package/dist/chunks/grSelectStyles-C1zNEkV7.js.map +1 -0
- package/dist/chunks/granularityI18n-BEWP9aJs.js +28 -0
- package/dist/chunks/granularityI18n-BEWP9aJs.js.map +1 -0
- package/dist/chunks/info-C0bHmdZq.js +28 -0
- package/dist/chunks/info-C0bHmdZq.js.map +1 -0
- package/dist/chunks/loader-circle-B2rWDk5u.js +25 -0
- package/dist/chunks/loader-circle-B2rWDk5u.js.map +1 -0
- package/dist/chunks/ru-DKswMSdd.js +50 -0
- package/dist/chunks/ru-DKswMSdd.js.map +1 -0
- package/dist/chunks/safelist-BF822K15.js +15 -0
- package/dist/chunks/safelist-BF822K15.js.map +1 -0
- package/dist/chunks/safelist-BY7z8fOl.js +26 -0
- package/dist/chunks/safelist-BY7z8fOl.js.map +1 -0
- package/dist/chunks/shared-Bvjkhhm2.js +164 -0
- package/dist/chunks/shared-Bvjkhhm2.js.map +1 -0
- package/dist/chunks/transition-mJ3PZCHH.js +1694 -0
- package/dist/chunks/transition-mJ3PZCHH.js.map +1 -0
- package/dist/chunks/x-Pa6C2hwi.js +25 -0
- package/dist/chunks/x-Pa6C2hwi.js.map +1 -0
- package/dist/chunks/x-circle-DQSlBLmX.js +69 -0
- package/dist/chunks/x-circle-DQSlBLmX.js.map +1 -0
- package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js +148 -0
- package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js.map +1 -0
- package/dist/components/GrAlert/index.js +3 -0
- package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js +43 -0
- package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js.map +1 -0
- package/dist/components/GrAvatar/index.js +3 -0
- package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js +34 -0
- package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js.map +1 -0
- package/dist/components/GrBadge/index.js +3 -0
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js +35 -0
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js.map +1 -0
- package/dist/components/GrBadgeWrap/index.js +3 -0
- package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js +33 -0
- package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js.map +1 -0
- package/dist/components/GrBottomNav/index.js +3 -0
- package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js +85 -0
- package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js.map +1 -0
- package/dist/components/GrButton/index.js +5 -0
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js +23 -0
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js.map +1 -0
- package/dist/components/GrButtonGroup/index.js +3 -0
- package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js +13 -0
- package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js.map +1 -0
- package/dist/components/GrCard/index.js +3 -0
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js +136 -0
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +3 -0
- package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js +207 -0
- package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js.map +1 -0
- package/dist/components/GrCollapse/index.js +3 -0
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js +133 -0
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +3 -0
- package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js +181 -0
- package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js.map +1 -0
- package/dist/components/GrDataTable/index.js +3 -0
- package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js +223 -0
- package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js.map +1 -0
- package/dist/components/GrDialog/index.js +4 -0
- package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js +158 -0
- package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js.map +1 -0
- package/dist/components/GrDrawer/index.js +3 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-DVTU32T_.js +153 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-DVTU32T_.js.map +1 -0
- package/dist/components/GrDropdown/index.js +3 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-fePQRcgh.js +311 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-fePQRcgh.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -0
- package/dist/components/GrEmptyState/chunks/GrEmptyState-Bs8d3tgb.js +64 -0
- package/dist/components/GrEmptyState/chunks/GrEmptyState-Bs8d3tgb.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +3 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DVv8yXpl.js +370 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DVv8yXpl.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +4 -0
- package/dist/components/GrFormField/chunks/GrFormField-BzezYcS8.js +37 -0
- package/dist/components/GrFormField/chunks/GrFormField-BzezYcS8.js.map +1 -0
- package/dist/components/GrFormField/index.js +3 -0
- package/dist/components/GrFormFile/chunks/GrFormFile-DtZOypJW.js +315 -0
- package/dist/components/GrFormFile/chunks/GrFormFile-DtZOypJW.js.map +1 -0
- package/dist/components/GrFormFile/index.js +3 -0
- package/dist/components/GrFormSection/chunks/GrFormSection-BIPB1RIk.js +37 -0
- package/dist/components/GrFormSection/chunks/GrFormSection-BIPB1RIk.js.map +1 -0
- package/dist/components/GrFormSection/index.js +3 -0
- package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js +34 -0
- package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js.map +1 -0
- package/dist/components/GrIcon/index.js +3 -0
- package/dist/components/GrImageViewer/chunks/GrImageViewer-fn8ilJTA.js +399 -0
- package/dist/components/GrImageViewer/chunks/GrImageViewer-fn8ilJTA.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +3 -0
- package/dist/components/GrInput/chunks/GrInput-DLLRrH1A.js +213 -0
- package/dist/components/GrInput/chunks/GrInput-DLLRrH1A.js.map +1 -0
- package/dist/components/GrInput/index.js +3 -0
- package/dist/components/GrInputTag/chunks/GrInputTag-CzrrBxgU.js +259 -0
- package/dist/components/GrInputTag/chunks/GrInputTag-CzrrBxgU.js.map +1 -0
- package/dist/components/GrInputTag/index.js +3 -0
- package/dist/components/GrLink/chunks/GrLink-Dhkid3Mp.js +82 -0
- package/dist/components/GrLink/chunks/GrLink-Dhkid3Mp.js.map +1 -0
- package/dist/components/GrLink/index.js +3 -0
- package/dist/components/GrList/chunks/GrList-CjgeVjhY.js +79 -0
- package/dist/components/GrList/chunks/GrList-CjgeVjhY.js.map +1 -0
- package/dist/components/GrList/index.js +3 -0
- package/dist/components/GrLoading/chunks/GrLoading-DihGX3ol.js +71 -0
- package/dist/components/GrLoading/chunks/GrLoading-DihGX3ol.js.map +1 -0
- package/dist/components/GrLoading/index.js +3 -0
- package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js +170 -0
- package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js.map +1 -0
- package/dist/components/GrModal/index.js +4 -0
- package/dist/components/GrNavbar/chunks/GrNavbar-CQOAfO6y.js +77 -0
- package/dist/components/GrNavbar/chunks/GrNavbar-CQOAfO6y.js.map +1 -0
- package/dist/components/GrNavbar/index.js +3 -0
- package/dist/components/GrNumberInput/chunks/GrNumberInput-CyHgUotG.js +399 -0
- package/dist/components/GrNumberInput/chunks/GrNumberInput-CyHgUotG.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +3 -0
- package/dist/components/GrPagination/chunks/GrPagination-C5cxRJsF.js +116 -0
- package/dist/components/GrPagination/chunks/GrPagination-C5cxRJsF.js.map +1 -0
- package/dist/components/GrPagination/index.js +3 -0
- package/dist/components/GrProgressBar/chunks/GrProgressBar-C9wAAFxR.js +41 -0
- package/dist/components/GrProgressBar/chunks/GrProgressBar-C9wAAFxR.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +3 -0
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Cfq9bvL3.js +192 -0
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Cfq9bvL3.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +3 -0
- package/dist/components/GrRadio/chunks/GrRadio-B_t_ZNVl.js +186 -0
- package/dist/components/GrRadio/chunks/GrRadio-B_t_ZNVl.js.map +1 -0
- package/dist/components/GrRadio/index.js +3 -0
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CVlgpUBr.js +82 -0
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CVlgpUBr.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +3 -0
- package/dist/components/GrSegmented/chunks/GrSegmented-BPl1koHc.js +325 -0
- package/dist/components/GrSegmented/chunks/GrSegmented-BPl1koHc.js.map +1 -0
- package/dist/components/GrSegmented/index.js +3 -0
- package/dist/components/GrSelect/chunks/GrSelect-aVqUL-1F.js +445 -0
- package/dist/components/GrSelect/chunks/GrSelect-aVqUL-1F.js.map +1 -0
- package/dist/components/GrSelect/index.js +3 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-DVucgcfV.js +46 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-DVucgcfV.js.map +1 -0
- package/dist/components/GrSidebar/index.js +3 -0
- package/dist/components/GrSkeleton/chunks/GrSkeleton-CDTvCSoH.js +35 -0
- package/dist/components/GrSkeleton/chunks/GrSkeleton-CDTvCSoH.js.map +1 -0
- package/dist/components/GrSkeleton/index.js +3 -0
- package/dist/components/GrSwitch/chunks/GrSwitch-Bnamgqb2.js +81 -0
- package/dist/components/GrSwitch/chunks/GrSwitch-Bnamgqb2.js.map +1 -0
- package/dist/components/GrSwitch/index.js +3 -0
- package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js +59 -0
- package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js.map +1 -0
- package/dist/components/GrTable/index.js +3 -0
- package/dist/components/GrTabs/chunks/GrTabs-CiGmcmvm.js +120 -0
- package/dist/components/GrTabs/chunks/GrTabs-CiGmcmvm.js.map +1 -0
- package/dist/components/GrTabs/index.js +3 -0
- package/dist/components/GrTextarea/chunks/GrTextarea-VBSc6A7D.js +73 -0
- package/dist/components/GrTextarea/chunks/GrTextarea-VBSc6A7D.js.map +1 -0
- package/dist/components/GrTextarea/index.js +3 -0
- package/dist/components/GrToaster/chunks/GrToaster-I1e-zCpf.js +173 -0
- package/dist/components/GrToaster/chunks/GrToaster-I1e-zCpf.js.map +1 -0
- package/dist/components/GrToaster/index.js +3 -0
- package/dist/components/GrTooltip/chunks/GrTooltip-CrV1gI_c.js +57 -0
- package/dist/components/GrTooltip/chunks/GrTooltip-CrV1gI_c.js.map +1 -0
- package/dist/components/GrTooltip/index.js +3 -0
- package/dist/components/GrTree/chunks/GrTree-Dlev9oBd.js +736 -0
- package/dist/components/GrTree/chunks/GrTree-Dlev9oBd.js.map +1 -0
- package/dist/components/GrTree/index.js +3 -0
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DN6XFjOD.js +456 -0
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DN6XFjOD.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +3 -0
- package/dist/composables/useTheme.js +41 -30
- package/dist/composables/useTheme.js.map +1 -0
- package/dist/composables/useToast.js +43 -34
- package/dist/composables/useToast.js.map +1 -0
- package/dist/directives/index.js +2 -2
- package/dist/fileValidation/index.js +2 -2
- package/dist/granular-provider-node.js +28 -17
- package/dist/granular-provider-node.js.map +1 -0
- package/dist/granular-provider.js +5 -3
- package/dist/granular-provider.js.map +1 -0
- package/dist/i18n/all.js +11 -0
- package/dist/i18n/all.js.map +1 -0
- package/dist/i18n/index.js +3 -9
- package/dist/index.js +115 -115
- package/dist/types/src/components/GrAlert/GrAlert.vue.d.ts +70 -0
- package/dist/types/src/components/GrAlert/config.d.ts +1 -0
- package/dist/types/src/components/GrAlert/index.d.ts +4 -0
- package/dist/types/src/components/GrAvatar/GrAvatar.vue.d.ts +53 -0
- package/dist/types/src/components/GrAvatar/config.d.ts +1 -0
- package/dist/types/src/components/GrAvatar/grAvatarStyles.d.ts +3 -0
- package/dist/types/src/components/GrAvatar/index.d.ts +5 -0
- package/dist/types/src/components/GrAvatar/safelist.d.ts +4 -0
- package/dist/types/src/components/GrBadge/GrBadge.vue.d.ts +54 -0
- package/dist/types/src/components/GrBadge/config.d.ts +1 -0
- package/dist/types/src/components/GrBadge/grBadgeStyles.d.ts +13 -0
- package/dist/types/src/components/GrBadge/index.d.ts +5 -0
- package/dist/types/src/components/GrBadge/safelist.d.ts +1 -0
- package/dist/types/src/components/GrBadgeWrap/config.d.ts +1 -0
- package/dist/types/src/components/GrBadgeWrap/index.d.ts +3 -0
- package/dist/types/src/components/GrBottomNav/GrBottomNav.vue.d.ts +23 -0
- package/dist/types/src/components/GrBottomNav/config.d.ts +1 -0
- package/dist/types/src/components/GrBottomNav/index.d.ts +4 -0
- package/dist/types/src/components/GrButton/GrButton.vue.d.ts +70 -0
- package/dist/types/src/components/GrButton/config.d.ts +1 -0
- package/dist/types/src/components/GrButton/config.node.d.ts +1 -0
- package/dist/types/src/components/GrButton/grButtonStyles.d.ts +30 -0
- package/dist/types/src/components/GrButton/index.d.ts +6 -0
- package/dist/types/src/components/GrButton/safelist.d.ts +7 -0
- package/dist/types/src/components/GrButtonGroup/config.d.ts +1 -0
- package/dist/types/src/components/GrButtonGroup/index.d.ts +3 -0
- package/dist/types/src/components/GrCard/config.d.ts +1 -0
- package/dist/types/src/components/GrCard/index.d.ts +3 -0
- package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +69 -0
- package/dist/types/src/components/GrCheckbox/config.d.ts +1 -0
- package/dist/types/src/components/GrCheckbox/index.d.ts +4 -0
- package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +67 -0
- package/dist/types/src/components/GrCollapse/GrCollapseItem.vue.d.ts +58 -0
- package/dist/types/src/components/GrCollapse/config.d.ts +1 -0
- package/dist/types/src/components/GrCollapse/grCollapseContext.d.ts +10 -0
- package/dist/types/src/components/GrCollapse/index.d.ts +6 -0
- package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +114 -0
- package/dist/types/src/components/GrConfirmDialog/config.d.ts +1 -0
- package/dist/types/src/components/GrConfirmDialog/index.d.ts +4 -0
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +51 -0
- package/dist/types/src/components/GrDataTable/config.d.ts +1 -0
- package/dist/types/src/components/GrDataTable/index.d.ts +4 -0
- package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +86 -0
- package/dist/types/src/components/GrDialog/GrDialogFooter.vue.d.ts +41 -0
- package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +59 -0
- package/dist/types/src/components/GrDialog/config.d.ts +1 -0
- package/dist/types/src/components/GrDialog/dialogShared.d.ts +15 -0
- package/dist/types/src/components/GrDialog/index.d.ts +7 -0
- package/dist/types/src/components/GrDialog/safelist.d.ts +1 -0
- package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +77 -0
- package/dist/types/src/components/GrDrawer/config.d.ts +1 -0
- package/dist/types/src/components/GrDrawer/grDrawerStyles.d.ts +10 -0
- package/dist/types/src/components/GrDrawer/index.d.ts +6 -0
- package/dist/types/src/components/GrDrawer/safelist.d.ts +1 -0
- package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +72 -0
- package/dist/types/src/components/GrDropdown/config.d.ts +1 -0
- package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +7 -0
- package/dist/types/src/components/GrDropdown/index.d.ts +6 -0
- package/dist/types/src/components/GrDropdown/safelist.d.ts +1 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +86 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +41 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +40 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuDivider.vue.d.ts +30 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +53 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +49 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +55 -0
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +48 -0
- package/dist/types/src/components/GrDropdownMenu/config.d.ts +1 -0
- package/dist/types/src/components/GrDropdownMenu/index.d.ts +18 -0
- package/dist/types/src/components/GrEmptyState/GrEmptyState.vue.d.ts +50 -0
- package/dist/types/src/components/GrEmptyState/config.d.ts +1 -0
- package/dist/types/src/components/GrEmptyState/index.d.ts +4 -0
- package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +149 -0
- package/dist/types/src/components/GrFileUpload/config.d.ts +1 -0
- package/dist/types/src/components/GrFileUpload/index.d.ts +5 -0
- package/dist/types/src/components/GrFormField/config.d.ts +1 -0
- package/dist/types/src/components/GrFormField/index.d.ts +3 -0
- package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +108 -0
- package/dist/types/src/components/GrFormFile/config.d.ts +1 -0
- package/dist/types/src/components/GrFormFile/index.d.ts +4 -0
- package/dist/types/src/components/GrFormSection/GrFormSection.vue.d.ts +47 -0
- package/dist/types/src/components/GrFormSection/config.d.ts +1 -0
- package/dist/types/src/components/GrFormSection/index.d.ts +4 -0
- package/dist/types/src/components/GrIcon/GrIcon.vue.d.ts +25 -0
- package/dist/types/src/components/GrIcon/config.d.ts +1 -0
- package/dist/types/src/components/GrIcon/index.d.ts +3 -0
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +166 -0
- package/dist/types/src/components/GrImageViewer/config.d.ts +1 -0
- package/dist/types/src/components/GrImageViewer/index.d.ts +3 -0
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +109 -0
- package/dist/types/src/components/GrInput/config.d.ts +1 -0
- package/dist/types/src/components/GrInput/index.d.ts +5 -0
- package/dist/types/src/components/GrInput/safelist.d.ts +1 -0
- package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +133 -0
- package/dist/types/src/components/GrInputTag/config.d.ts +1 -0
- package/dist/types/src/components/GrInputTag/grInputTagStyles.d.ts +13 -0
- package/dist/types/src/components/GrInputTag/index.d.ts +6 -0
- package/dist/types/src/components/GrInputTag/safelist.d.ts +1 -0
- package/dist/types/src/components/GrLink/GrLink.vue.d.ts +75 -0
- package/dist/types/src/components/GrLink/config.d.ts +1 -0
- package/dist/types/src/components/GrLink/grLinkStyles.d.ts +15 -0
- package/dist/types/src/components/GrLink/index.d.ts +5 -0
- package/dist/types/src/components/GrLink/safelist.d.ts +1 -0
- package/dist/types/src/components/GrList/GrList.vue.d.ts +43 -0
- package/dist/types/src/components/GrList/GrListItem.vue.d.ts +58 -0
- package/dist/types/src/components/GrList/config.d.ts +1 -0
- package/dist/types/src/components/GrList/index.d.ts +6 -0
- package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +72 -0
- package/dist/types/src/components/GrLoading/config.d.ts +1 -0
- package/dist/types/src/components/GrLoading/grLoadingStyles.d.ts +11 -0
- package/dist/types/src/components/GrLoading/index.d.ts +5 -0
- package/dist/types/src/components/GrLoading/safelist.d.ts +1 -0
- package/dist/types/src/components/GrModal/GrModal.vue.d.ts +58 -0
- package/dist/types/src/components/GrModal/config.d.ts +1 -0
- package/dist/types/src/components/GrModal/grModalStyles.d.ts +26 -0
- package/dist/types/src/components/GrModal/index.d.ts +7 -0
- package/dist/types/src/components/GrModal/safelist.d.ts +15 -0
- package/dist/types/src/components/GrNavbar/GrNavbar.vue.d.ts +60 -0
- package/dist/types/src/components/GrNavbar/config.d.ts +1 -0
- package/dist/types/src/components/GrNavbar/index.d.ts +4 -0
- package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +147 -0
- package/dist/types/src/components/GrNumberInput/config.d.ts +1 -0
- package/dist/types/src/components/GrNumberInput/grNumberInputStyles.d.ts +19 -0
- package/dist/types/src/components/GrNumberInput/index.d.ts +6 -0
- package/dist/types/src/components/GrNumberInput/safelist.d.ts +1 -0
- package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +45 -0
- package/dist/types/src/components/GrPagination/config.d.ts +1 -0
- package/dist/types/src/components/GrPagination/index.d.ts +3 -0
- package/dist/types/src/components/GrProgressBar/GrProgressBar.vue.d.ts +43 -0
- package/dist/types/src/components/GrProgressBar/config.d.ts +1 -0
- package/dist/types/src/components/GrProgressBar/config.node.d.ts +1 -0
- package/dist/types/src/components/GrProgressBar/grStyle.d.ts +2 -0
- package/dist/types/src/components/GrProgressBar/index.d.ts +5 -0
- package/dist/types/src/components/GrProgressBar/safelist.d.ts +4 -0
- package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +134 -0
- package/dist/types/src/components/GrPromptDialog/config.d.ts +1 -0
- package/dist/types/src/components/GrPromptDialog/index.d.ts +4 -0
- package/dist/types/src/components/GrRadio/GrRadio.vue.d.ts +106 -0
- package/dist/types/src/components/GrRadio/config.d.ts +1 -0
- package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +10 -0
- package/dist/types/src/components/GrRadio/grRadioStyles.d.ts +23 -0
- package/dist/types/src/components/GrRadio/index.d.ts +7 -0
- package/dist/types/src/components/GrRadio/safelist.d.ts +1 -0
- package/dist/types/src/components/GrRadioGroup/GrRadioGroup.vue.d.ts +79 -0
- package/dist/types/src/components/GrRadioGroup/config.d.ts +1 -0
- package/dist/types/src/components/GrRadioGroup/index.d.ts +4 -0
- package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +83 -0
- package/dist/types/src/components/GrSegmented/config.d.ts +1 -0
- package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +41 -0
- package/dist/types/src/components/GrSegmented/index.d.ts +6 -0
- package/dist/types/src/components/GrSegmented/safelist.d.ts +17 -0
- package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +140 -0
- package/dist/types/src/components/GrSelect/config.d.ts +1 -0
- package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +39 -0
- package/dist/types/src/components/GrSelect/index.d.ts +5 -0
- package/dist/types/src/components/GrSelect/safelist.d.ts +1 -0
- package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +54 -0
- package/dist/types/src/components/GrSidebar/config.d.ts +1 -0
- package/dist/types/src/components/GrSidebar/index.d.ts +3 -0
- package/dist/types/src/components/GrSkeleton/GrSkeleton.vue.d.ts +44 -0
- package/dist/types/src/components/GrSkeleton/config.d.ts +1 -0
- package/dist/types/src/components/GrSkeleton/index.d.ts +3 -0
- package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +68 -0
- package/dist/types/src/components/GrSwitch/config.d.ts +1 -0
- package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +19 -0
- package/dist/types/src/components/GrSwitch/index.d.ts +5 -0
- package/dist/types/src/components/GrSwitch/safelist.d.ts +10 -0
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +78 -0
- package/dist/types/src/components/GrTable/config.d.ts +1 -0
- package/dist/types/src/components/GrTable/index.d.ts +4 -0
- package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +25 -0
- package/dist/types/src/components/GrTabs/config.d.ts +1 -0
- package/dist/types/src/components/GrTabs/index.d.ts +4 -0
- package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +80 -0
- package/dist/types/src/components/GrTextarea/config.d.ts +1 -0
- package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +6 -0
- package/dist/types/src/components/GrTextarea/index.d.ts +6 -0
- package/dist/types/src/components/GrTextarea/safelist.d.ts +1 -0
- package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +43 -0
- package/dist/types/src/components/GrToaster/config.d.ts +1 -0
- package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +2 -0
- package/dist/types/src/components/GrToaster/index.d.ts +6 -0
- package/dist/types/src/components/GrToaster/safelist.d.ts +1 -0
- package/dist/types/src/components/GrTooltip/GrTooltip.vue.d.ts +42 -0
- package/dist/types/src/components/GrTooltip/config.d.ts +1 -0
- package/dist/types/src/components/GrTooltip/index.d.ts +4 -0
- package/dist/types/src/components/GrTree/GrTree.vue.d.ts +35 -0
- package/dist/types/src/components/GrTree/config.d.ts +1 -0
- package/dist/types/src/components/GrTree/grTreeDataAdapter.d.ts +14 -0
- package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +31 -0
- package/dist/types/src/components/GrTree/grTreeProps.d.ts +63 -0
- package/dist/types/src/components/GrTree/grTreeStore.d.ts +45 -0
- package/dist/types/src/components/GrTree/grTreeTypes.d.ts +24 -0
- package/dist/types/src/components/GrTree/index.d.ts +6 -0
- package/dist/types/src/components/GrTree/safelist.d.ts +1 -0
- package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +48 -0
- package/dist/types/src/components/GrTreeSelect/config.d.ts +1 -0
- package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +10 -0
- package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +33 -0
- package/dist/types/src/components/GrTreeSelect/index.d.ts +5 -0
- package/dist/types/src/components/GrTreeSelect/safelist.d.ts +1 -0
- package/dist/types/src/composables/useToast.d.ts +3 -3
- package/dist/types/src/granular-provider/shared.d.ts +50 -50
- package/dist/types/src/i18n/all.d.ts +23 -0
- package/dist/types/src/i18n/messages/const.d.ts +1 -0
- package/dist/types/src/i18n/messages/en.d.ts +100 -0
- package/dist/types/src/i18n/messages/es.d.ts +93 -0
- package/dist/types/src/i18n/messages/index.d.ts +25 -0
- package/dist/types/src/i18n/messages/ru.d.ts +93 -0
- package/dist/types/src/index.d.ts +49 -49
- package/dist/types/src/vue/plugin.d.ts +5 -5
- package/dist/vue/index.js +66 -26
- package/dist/vue/index.js.map +1 -0
- package/package.json +155 -145
- package/dist/DsFormFile.css +0 -1
- package/dist/DsTree.css +0 -1
- package/dist/chunks/_plugin-vue_export-helper-CHO2XVys.js +0 -8
- package/dist/chunks/adapter-veOBOjv3.js +0 -4
- package/dist/chunks/arrow-up-Dv3dC3hu.js +0 -23
- package/dist/chunks/classTokens-CT1tqF2j.js +0 -6
- package/dist/chunks/config-B36QoWkx2.js +0 -8
- package/dist/chunks/config-BG-m3THf.js +0 -17
- package/dist/chunks/config-BNQb1Tdk.js +0 -9
- package/dist/chunks/config-BPuskn3r.js +0 -8
- package/dist/chunks/config-BWJ22IjI2.js +0 -9
- package/dist/chunks/config-BYoxgIeM.js +0 -18
- package/dist/chunks/config-Bb8NpnGF.js +0 -34
- package/dist/chunks/config-Bo4SoxQg.js +0 -27
- package/dist/chunks/config-BscZj6l42.js +0 -66
- package/dist/chunks/config-C0CVsc4Y.js +0 -48
- package/dist/chunks/config-C2wd640N.js +0 -9
- package/dist/chunks/config-C7KNHOmN.js +0 -33
- package/dist/chunks/config-CLG4pCF9.js +0 -9
- package/dist/chunks/config-COfLMM02.js +0 -8
- package/dist/chunks/config-CY0RJaK-.js +0 -15
- package/dist/chunks/config-C_CXjTfh2.js +0 -9
- package/dist/chunks/config-C_bF_fTb.js +0 -8
- package/dist/chunks/config-CcqnIunr.js +0 -9
- package/dist/chunks/config-Cibru2a2.js +0 -9
- package/dist/chunks/config-CnClbuiL.js +0 -9
- package/dist/chunks/config-CtI_S-zH.js +0 -8
- package/dist/chunks/config-CtgK8aLQ.js +0 -37
- package/dist/chunks/config-CvuvJeih.js +0 -9
- package/dist/chunks/config-CzEeKJ6F2.js +0 -20
- package/dist/chunks/config-D-soL_Ul.js +0 -149
- package/dist/chunks/config-D3ihNj1i.js +0 -14
- package/dist/chunks/config-D9kbijTN.js +0 -9
- package/dist/chunks/config-DGGgsQ-8.js +0 -47
- package/dist/chunks/config-DJxFkysW.js +0 -40
- package/dist/chunks/config-DN1-oywd.js +0 -13
- package/dist/chunks/config-DO9E5iXl2.js +0 -8
- package/dist/chunks/config-DQdLgKLJ.js +0 -8
- package/dist/chunks/config-DThxz0fj.js +0 -8
- package/dist/chunks/config-DU-WqEnv.js +0 -9
- package/dist/chunks/config-DeL48aIt.js +0 -8
- package/dist/chunks/config-DfTEy9G3.js +0 -14
- package/dist/chunks/config-DoJaEy4X.js +0 -21
- package/dist/chunks/config-DopZCwNe.js +0 -10
- package/dist/chunks/config-DpluHp1i.js +0 -8
- package/dist/chunks/config-DrTFt1re.js +0 -8
- package/dist/chunks/config-E9sOdSx6.js +0 -8
- package/dist/chunks/config-EhfVxSIR.js +0 -9
- package/dist/chunks/config-J_2KglMu.js +0 -8
- package/dist/chunks/config-YyVxx9dW.js +0 -8
- package/dist/chunks/config-Zksyb5FX.js +0 -35
- package/dist/chunks/config-ltfe9Xvy.js +0 -47
- package/dist/chunks/config-udLUeY_k.js +0 -9
- package/dist/chunks/dialogShared-B7Ruf0mn.js +0 -26
- package/dist/chunks/directives-K8Vo0VhP.js +0 -530
- package/dist/chunks/dsBadgeStyles-2fcy07ls.js +0 -43
- package/dist/chunks/dsButtonStyles-xdMl54zJ.js +0 -183
- package/dist/chunks/dsDropdownStyles-_XO6eeSE.js +0 -31
- package/dist/chunks/dsLoadingStyles-lw20OWhs.js +0 -15
- package/dist/chunks/dsModalStyles-DovGcwjh.js +0 -38
- package/dist/chunks/dsSelectStyles-BCrj5Fty.js +0 -40
- package/dist/chunks/en-BkL6iabg.js +0 -41
- package/dist/chunks/es-Dh_K9iry.js +0 -41
- package/dist/chunks/fileValidation-LFD-vwil.js +0 -193
- package/dist/chunks/granularityI18n-DYNnonoE.js +0 -24
- package/dist/chunks/info-CNJnuTYC.js +0 -26
- package/dist/chunks/loader-circle-C5vCCMfB.js +0 -23
- package/dist/chunks/ru-kTbw8Tku.js +0 -41
- package/dist/chunks/safelist-CQOSs_yj.js +0 -13
- package/dist/chunks/safelist-Gujf4bDO.js +0 -22
- package/dist/chunks/shared-Dk9xmulE.js +0 -124
- package/dist/chunks/transition-BJXMi52x.js +0 -1617
- package/dist/chunks/x--kxrj3ez.js +0 -23
- package/dist/chunks/x-circle-ChJ87u1v.js +0 -61
- package/dist/components/DsAlert/chunks/DsAlert-2ItscoqG.js +0 -129
- package/dist/components/DsAlert/index.js +0 -3
- package/dist/components/DsAvatar/chunks/DsAvatar-D7tQ9wfl.js +0 -32
- package/dist/components/DsAvatar/index.js +0 -3
- package/dist/components/DsBadge/chunks/DsBadge-B9aZxvZb.js +0 -27
- package/dist/components/DsBadge/index.js +0 -3
- package/dist/components/DsBadgeWrap/chunks/DsBadgeWrap-DO8TjFYg.js +0 -26
- package/dist/components/DsBadgeWrap/index.js +0 -3
- package/dist/components/DsBottomNav/chunks/DsBottomNav-NRtHfcmQ.js +0 -21
- package/dist/components/DsBottomNav/index.js +0 -3
- package/dist/components/DsButton/chunks/DsButton-9cB_fHZt.js +0 -67
- package/dist/components/DsButton/index.js +0 -5
- package/dist/components/DsButtonGroup/chunks/DsButtonGroup-DPK1W3Hk.js +0 -16
- package/dist/components/DsButtonGroup/index.js +0 -3
- package/dist/components/DsCard/chunks/DsCard-Bnelx1JF.js +0 -10
- package/dist/components/DsCard/index.js +0 -3
- package/dist/components/DsCheckbox/chunks/DsCheckbox-B3YN7RYo.js +0 -111
- package/dist/components/DsCheckbox/index.js +0 -3
- package/dist/components/DsCollapse/chunks/DsCollapse-7D6FTuFJ.js +0 -150
- package/dist/components/DsCollapse/index.js +0 -3
- package/dist/components/DsConfirmDialog/chunks/DsConfirmDialog-NkhfmD4Y.js +0 -111
- package/dist/components/DsConfirmDialog/index.js +0 -3
- package/dist/components/DsDataTable/chunks/DsDataTable-nK4XgT1y.js +0 -142
- package/dist/components/DsDataTable/index.js +0 -3
- package/dist/components/DsDialog/chunks/DsDialog-BH23MSq-.js +0 -169
- package/dist/components/DsDialog/index.js +0 -4
- package/dist/components/DsDrawer/chunks/DsDrawer-GW4JyPf_.js +0 -135
- package/dist/components/DsDrawer/index.js +0 -3
- package/dist/components/DsDropdown/chunks/DsDropdown-DmR1NWyV.js +0 -110
- package/dist/components/DsDropdown/index.js +0 -3
- package/dist/components/DsDropdownMenu/chunks/DsDropdownMenu-BlpO8mUO.js +0 -233
- package/dist/components/DsDropdownMenu/index.js +0 -3
- package/dist/components/DsEmptyState/chunks/DsEmptyState-tKYwSiP1.js +0 -49
- package/dist/components/DsEmptyState/index.js +0 -3
- package/dist/components/DsFileUpload/chunks/DsFileUpload-Dya9vyG0.js +0 -294
- package/dist/components/DsFileUpload/index.js +0 -4
- package/dist/components/DsFormField/chunks/DsFormField-QvWyAReX.js +0 -28
- package/dist/components/DsFormField/index.js +0 -3
- package/dist/components/DsFormFile/chunks/DsFormFile-BFfRuM1G.js +0 -248
- package/dist/components/DsFormFile/index.js +0 -3
- package/dist/components/DsFormSection/chunks/DsFormSection-Dzspqv9R.js +0 -27
- package/dist/components/DsFormSection/index.js +0 -3
- package/dist/components/DsIcon/chunks/DsIcon-Bk6qc4Kh.js +0 -25
- package/dist/components/DsIcon/index.js +0 -3
- package/dist/components/DsImageViewer/chunks/DsImageViewer-_LWdAHAd.js +0 -322
- package/dist/components/DsImageViewer/index.js +0 -3
- package/dist/components/DsInput/chunks/DsInput-B8RhHkKQ.js +0 -158
- package/dist/components/DsInput/index.js +0 -3
- package/dist/components/DsInputTag/chunks/DsInputTag-DVmvJ0A_.js +0 -214
- package/dist/components/DsInputTag/index.js +0 -3
- package/dist/components/DsLink/chunks/DsLink-DXClMbuX.js +0 -59
- package/dist/components/DsLink/index.js +0 -3
- package/dist/components/DsList/chunks/DsList-BEuPowc2.js +0 -55
- package/dist/components/DsList/index.js +0 -3
- package/dist/components/DsLoading/chunks/DsLoading-uYpDF-nK.js +0 -53
- package/dist/components/DsLoading/index.js +0 -3
- package/dist/components/DsModal/chunks/DsModal-B2DLXV7F.js +0 -136
- package/dist/components/DsModal/index.js +0 -4
- package/dist/components/DsNavbar/chunks/DsNavbar-O-ud_du_.js +0 -62
- package/dist/components/DsNavbar/index.js +0 -3
- package/dist/components/DsNumberInput/chunks/DsNumberInput-BJTpcTRc.js +0 -315
- package/dist/components/DsNumberInput/index.js +0 -3
- package/dist/components/DsPagination/chunks/DsPagination-hw_-VMRK.js +0 -93
- package/dist/components/DsPagination/index.js +0 -3
- package/dist/components/DsProgressBar/chunks/DsProgressBar-CgIQj39W.js +0 -29
- package/dist/components/DsProgressBar/index.js +0 -3
- package/dist/components/DsPromptDialog/chunks/DsPromptDialog-_8v3Puaj.js +0 -158
- package/dist/components/DsPromptDialog/index.js +0 -3
- package/dist/components/DsRadio/chunks/DsRadio-DKbrUFUZ.js +0 -147
- package/dist/components/DsRadio/index.js +0 -3
- package/dist/components/DsRadioGroup/chunks/DsRadioGroup-BQo7Nc5-.js +0 -66
- package/dist/components/DsRadioGroup/index.js +0 -3
- package/dist/components/DsSegmented/chunks/DsSegmented-SbqzdCNX.js +0 -250
- package/dist/components/DsSegmented/index.js +0 -3
- package/dist/components/DsSelect/chunks/DsSelect-DN-vZIEG.js +0 -314
- package/dist/components/DsSelect/index.js +0 -3
- package/dist/components/DsSidebar/chunks/DsSidebar-DdofI1lo.js +0 -29
- package/dist/components/DsSidebar/index.js +0 -3
- package/dist/components/DsSkeleton/chunks/DsSkeleton-DJSQ4gGR.js +0 -25
- package/dist/components/DsSkeleton/index.js +0 -3
- package/dist/components/DsSwitch/chunks/DsSwitch-Dh4_bd6e.js +0 -64
- package/dist/components/DsSwitch/index.js +0 -3
- package/dist/components/DsTable/chunks/DsTable-C27_FR_h.js +0 -44
- package/dist/components/DsTable/index.js +0 -3
- package/dist/components/DsTabs/chunks/DsTabs-FLWaGtbo.js +0 -98
- package/dist/components/DsTabs/index.js +0 -3
- package/dist/components/DsTextarea/chunks/DsTextarea-D61wwTwK.js +0 -57
- package/dist/components/DsTextarea/index.js +0 -3
- package/dist/components/DsToaster/chunks/DsToaster-Bzepxxi_.js +0 -115
- package/dist/components/DsToaster/index.js +0 -3
- package/dist/components/DsTooltip/chunks/DsTooltip-BNkQOtpm.js +0 -37
- package/dist/components/DsTooltip/index.js +0 -3
- package/dist/components/DsTree/chunks/DsTree-DK0aOkKS.js +0 -614
- package/dist/components/DsTree/index.js +0 -3
- package/dist/components/DsTreeSelect/chunks/DsTreeSelect-BnG-oplE.js +0 -353
- package/dist/components/DsTreeSelect/index.js +0 -3
- package/dist/types/src/components/DsAlert/DsAlert.vue.d.ts +0 -70
- package/dist/types/src/components/DsAlert/config.d.ts +0 -1
- package/dist/types/src/components/DsAlert/index.d.ts +0 -4
- package/dist/types/src/components/DsAvatar/DsAvatar.vue.d.ts +0 -53
- package/dist/types/src/components/DsAvatar/config.d.ts +0 -1
- package/dist/types/src/components/DsAvatar/dsAvatarStyles.d.ts +0 -3
- package/dist/types/src/components/DsAvatar/index.d.ts +0 -5
- package/dist/types/src/components/DsAvatar/safelist.d.ts +0 -4
- package/dist/types/src/components/DsBadge/DsBadge.vue.d.ts +0 -54
- package/dist/types/src/components/DsBadge/config.d.ts +0 -1
- package/dist/types/src/components/DsBadge/dsBadgeStyles.d.ts +0 -13
- package/dist/types/src/components/DsBadge/index.d.ts +0 -5
- package/dist/types/src/components/DsBadge/safelist.d.ts +0 -1
- package/dist/types/src/components/DsBadgeWrap/config.d.ts +0 -1
- package/dist/types/src/components/DsBadgeWrap/index.d.ts +0 -3
- package/dist/types/src/components/DsBottomNav/DsBottomNav.vue.d.ts +0 -23
- package/dist/types/src/components/DsBottomNav/config.d.ts +0 -1
- package/dist/types/src/components/DsBottomNav/index.d.ts +0 -4
- package/dist/types/src/components/DsButton/DsButton.vue.d.ts +0 -70
- package/dist/types/src/components/DsButton/config.d.ts +0 -1
- package/dist/types/src/components/DsButton/config.node.d.ts +0 -1
- package/dist/types/src/components/DsButton/dsButtonStyles.d.ts +0 -30
- package/dist/types/src/components/DsButton/index.d.ts +0 -6
- package/dist/types/src/components/DsButton/safelist.d.ts +0 -7
- package/dist/types/src/components/DsButtonGroup/config.d.ts +0 -1
- package/dist/types/src/components/DsButtonGroup/index.d.ts +0 -3
- package/dist/types/src/components/DsCard/config.d.ts +0 -1
- package/dist/types/src/components/DsCard/index.d.ts +0 -3
- package/dist/types/src/components/DsCheckbox/DsCheckbox.vue.d.ts +0 -69
- package/dist/types/src/components/DsCheckbox/config.d.ts +0 -1
- package/dist/types/src/components/DsCheckbox/index.d.ts +0 -4
- package/dist/types/src/components/DsCollapse/DsCollapse.vue.d.ts +0 -67
- package/dist/types/src/components/DsCollapse/DsCollapseItem.vue.d.ts +0 -58
- package/dist/types/src/components/DsCollapse/config.d.ts +0 -1
- package/dist/types/src/components/DsCollapse/dsCollapseContext.d.ts +0 -10
- package/dist/types/src/components/DsCollapse/index.d.ts +0 -6
- package/dist/types/src/components/DsConfirmDialog/DsConfirmDialog.vue.d.ts +0 -114
- package/dist/types/src/components/DsConfirmDialog/config.d.ts +0 -1
- package/dist/types/src/components/DsConfirmDialog/index.d.ts +0 -4
- package/dist/types/src/components/DsDataTable/DsDataTable.vue.d.ts +0 -51
- package/dist/types/src/components/DsDataTable/config.d.ts +0 -1
- package/dist/types/src/components/DsDataTable/index.d.ts +0 -4
- package/dist/types/src/components/DsDialog/DsDialog.vue.d.ts +0 -86
- package/dist/types/src/components/DsDialog/DsDialogFooter.vue.d.ts +0 -41
- package/dist/types/src/components/DsDialog/DsDialogHeader.vue.d.ts +0 -59
- package/dist/types/src/components/DsDialog/config.d.ts +0 -1
- package/dist/types/src/components/DsDialog/dialogShared.d.ts +0 -15
- package/dist/types/src/components/DsDialog/index.d.ts +0 -7
- package/dist/types/src/components/DsDialog/safelist.d.ts +0 -1
- package/dist/types/src/components/DsDrawer/DsDrawer.vue.d.ts +0 -77
- package/dist/types/src/components/DsDrawer/config.d.ts +0 -1
- package/dist/types/src/components/DsDrawer/dsDrawerStyles.d.ts +0 -10
- package/dist/types/src/components/DsDrawer/index.d.ts +0 -6
- package/dist/types/src/components/DsDrawer/safelist.d.ts +0 -1
- package/dist/types/src/components/DsDropdown/DsDropdown.vue.d.ts +0 -72
- package/dist/types/src/components/DsDropdown/config.d.ts +0 -1
- package/dist/types/src/components/DsDropdown/dsDropdownStyles.d.ts +0 -7
- package/dist/types/src/components/DsDropdown/index.d.ts +0 -6
- package/dist/types/src/components/DsDropdown/safelist.d.ts +0 -1
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenu.vue.d.ts +0 -86
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuColumn.vue.d.ts +0 -41
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuColumns.vue.d.ts +0 -40
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuDivider.vue.d.ts +0 -30
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuGroup.vue.d.ts +0 -53
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuHeader.vue.d.ts +0 -49
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuItem.vue.d.ts +0 -55
- package/dist/types/src/components/DsDropdownMenu/DsDropdownMenuList.vue.d.ts +0 -48
- package/dist/types/src/components/DsDropdownMenu/config.d.ts +0 -1
- package/dist/types/src/components/DsDropdownMenu/index.d.ts +0 -18
- package/dist/types/src/components/DsEmptyState/DsEmptyState.vue.d.ts +0 -50
- package/dist/types/src/components/DsEmptyState/config.d.ts +0 -1
- package/dist/types/src/components/DsEmptyState/index.d.ts +0 -4
- package/dist/types/src/components/DsFileUpload/DsFileUpload.vue.d.ts +0 -149
- package/dist/types/src/components/DsFileUpload/config.d.ts +0 -1
- package/dist/types/src/components/DsFileUpload/index.d.ts +0 -5
- package/dist/types/src/components/DsFormField/config.d.ts +0 -1
- package/dist/types/src/components/DsFormField/index.d.ts +0 -3
- package/dist/types/src/components/DsFormFile/DsFormFile.vue.d.ts +0 -108
- package/dist/types/src/components/DsFormFile/config.d.ts +0 -1
- package/dist/types/src/components/DsFormFile/index.d.ts +0 -4
- package/dist/types/src/components/DsFormSection/DsFormSection.vue.d.ts +0 -47
- package/dist/types/src/components/DsFormSection/config.d.ts +0 -1
- package/dist/types/src/components/DsFormSection/index.d.ts +0 -4
- package/dist/types/src/components/DsIcon/DsIcon.vue.d.ts +0 -25
- package/dist/types/src/components/DsIcon/config.d.ts +0 -1
- package/dist/types/src/components/DsIcon/index.d.ts +0 -3
- package/dist/types/src/components/DsImageViewer/DsImageViewer.vue.d.ts +0 -166
- package/dist/types/src/components/DsImageViewer/config.d.ts +0 -1
- package/dist/types/src/components/DsImageViewer/index.d.ts +0 -3
- package/dist/types/src/components/DsInput/DsInput.vue.d.ts +0 -109
- package/dist/types/src/components/DsInput/config.d.ts +0 -1
- package/dist/types/src/components/DsInput/index.d.ts +0 -5
- package/dist/types/src/components/DsInput/safelist.d.ts +0 -1
- package/dist/types/src/components/DsInputTag/DsInputTag.vue.d.ts +0 -133
- package/dist/types/src/components/DsInputTag/config.d.ts +0 -1
- package/dist/types/src/components/DsInputTag/dsInputTagStyles.d.ts +0 -13
- package/dist/types/src/components/DsInputTag/index.d.ts +0 -6
- package/dist/types/src/components/DsInputTag/safelist.d.ts +0 -1
- package/dist/types/src/components/DsLink/DsLink.vue.d.ts +0 -75
- package/dist/types/src/components/DsLink/config.d.ts +0 -1
- package/dist/types/src/components/DsLink/dsLinkStyles.d.ts +0 -15
- package/dist/types/src/components/DsLink/index.d.ts +0 -5
- package/dist/types/src/components/DsLink/safelist.d.ts +0 -1
- package/dist/types/src/components/DsList/DsList.vue.d.ts +0 -43
- package/dist/types/src/components/DsList/DsListItem.vue.d.ts +0 -58
- package/dist/types/src/components/DsList/config.d.ts +0 -1
- package/dist/types/src/components/DsList/index.d.ts +0 -6
- package/dist/types/src/components/DsLoading/DsLoading.vue.d.ts +0 -72
- package/dist/types/src/components/DsLoading/config.d.ts +0 -1
- package/dist/types/src/components/DsLoading/dsLoadingStyles.d.ts +0 -11
- package/dist/types/src/components/DsLoading/index.d.ts +0 -5
- package/dist/types/src/components/DsLoading/safelist.d.ts +0 -1
- package/dist/types/src/components/DsModal/DsModal.vue.d.ts +0 -58
- package/dist/types/src/components/DsModal/config.d.ts +0 -1
- package/dist/types/src/components/DsModal/dsModalStyles.d.ts +0 -26
- package/dist/types/src/components/DsModal/index.d.ts +0 -7
- package/dist/types/src/components/DsModal/safelist.d.ts +0 -15
- package/dist/types/src/components/DsNavbar/DsNavbar.vue.d.ts +0 -60
- package/dist/types/src/components/DsNavbar/config.d.ts +0 -1
- package/dist/types/src/components/DsNavbar/index.d.ts +0 -4
- package/dist/types/src/components/DsNumberInput/DsNumberInput.vue.d.ts +0 -147
- package/dist/types/src/components/DsNumberInput/config.d.ts +0 -1
- package/dist/types/src/components/DsNumberInput/dsNumberInputStyles.d.ts +0 -19
- package/dist/types/src/components/DsNumberInput/index.d.ts +0 -6
- package/dist/types/src/components/DsNumberInput/safelist.d.ts +0 -1
- package/dist/types/src/components/DsPagination/DsPagination.vue.d.ts +0 -45
- package/dist/types/src/components/DsPagination/config.d.ts +0 -1
- package/dist/types/src/components/DsPagination/index.d.ts +0 -3
- package/dist/types/src/components/DsProgressBar/DsProgressBar.vue.d.ts +0 -43
- package/dist/types/src/components/DsProgressBar/config.d.ts +0 -1
- package/dist/types/src/components/DsProgressBar/config.node.d.ts +0 -1
- package/dist/types/src/components/DsProgressBar/dsStyle.d.ts +0 -2
- package/dist/types/src/components/DsProgressBar/index.d.ts +0 -5
- package/dist/types/src/components/DsProgressBar/safelist.d.ts +0 -4
- package/dist/types/src/components/DsPromptDialog/DsPromptDialog.vue.d.ts +0 -134
- package/dist/types/src/components/DsPromptDialog/config.d.ts +0 -1
- package/dist/types/src/components/DsPromptDialog/index.d.ts +0 -4
- package/dist/types/src/components/DsRadio/DsRadio.vue.d.ts +0 -106
- package/dist/types/src/components/DsRadio/config.d.ts +0 -1
- package/dist/types/src/components/DsRadio/dsRadioGroupContext.d.ts +0 -10
- package/dist/types/src/components/DsRadio/dsRadioStyles.d.ts +0 -23
- package/dist/types/src/components/DsRadio/index.d.ts +0 -7
- package/dist/types/src/components/DsRadio/safelist.d.ts +0 -1
- package/dist/types/src/components/DsRadioGroup/DsRadioGroup.vue.d.ts +0 -79
- package/dist/types/src/components/DsRadioGroup/config.d.ts +0 -1
- package/dist/types/src/components/DsRadioGroup/index.d.ts +0 -4
- package/dist/types/src/components/DsSegmented/DsSegmented.vue.d.ts +0 -83
- package/dist/types/src/components/DsSegmented/config.d.ts +0 -1
- package/dist/types/src/components/DsSegmented/dsSegmentedStyles.d.ts +0 -41
- package/dist/types/src/components/DsSegmented/index.d.ts +0 -6
- package/dist/types/src/components/DsSegmented/safelist.d.ts +0 -17
- package/dist/types/src/components/DsSelect/DsSelect.vue.d.ts +0 -140
- package/dist/types/src/components/DsSelect/config.d.ts +0 -1
- package/dist/types/src/components/DsSelect/dsSelectStyles.d.ts +0 -39
- package/dist/types/src/components/DsSelect/index.d.ts +0 -5
- package/dist/types/src/components/DsSelect/safelist.d.ts +0 -1
- package/dist/types/src/components/DsSidebar/DsSidebar.vue.d.ts +0 -54
- package/dist/types/src/components/DsSidebar/config.d.ts +0 -1
- package/dist/types/src/components/DsSidebar/index.d.ts +0 -3
- package/dist/types/src/components/DsSkeleton/DsSkeleton.vue.d.ts +0 -44
- package/dist/types/src/components/DsSkeleton/config.d.ts +0 -1
- package/dist/types/src/components/DsSkeleton/index.d.ts +0 -3
- package/dist/types/src/components/DsSwitch/DsSwitch.vue.d.ts +0 -68
- package/dist/types/src/components/DsSwitch/config.d.ts +0 -1
- package/dist/types/src/components/DsSwitch/dsSwitchStyles.d.ts +0 -19
- package/dist/types/src/components/DsSwitch/index.d.ts +0 -5
- package/dist/types/src/components/DsSwitch/safelist.d.ts +0 -10
- package/dist/types/src/components/DsTable/DsTable.vue.d.ts +0 -78
- package/dist/types/src/components/DsTable/config.d.ts +0 -1
- package/dist/types/src/components/DsTable/index.d.ts +0 -4
- package/dist/types/src/components/DsTabs/DsTabs.vue.d.ts +0 -25
- package/dist/types/src/components/DsTabs/config.d.ts +0 -1
- package/dist/types/src/components/DsTabs/index.d.ts +0 -4
- package/dist/types/src/components/DsTextarea/DsTextarea.vue.d.ts +0 -80
- package/dist/types/src/components/DsTextarea/config.d.ts +0 -1
- package/dist/types/src/components/DsTextarea/dsTextareaStyles.d.ts +0 -6
- package/dist/types/src/components/DsTextarea/index.d.ts +0 -6
- package/dist/types/src/components/DsTextarea/safelist.d.ts +0 -1
- package/dist/types/src/components/DsToaster/DsToaster.vue.d.ts +0 -43
- package/dist/types/src/components/DsToaster/config.d.ts +0 -1
- package/dist/types/src/components/DsToaster/dsToasterStyles.d.ts +0 -2
- package/dist/types/src/components/DsToaster/index.d.ts +0 -6
- package/dist/types/src/components/DsToaster/safelist.d.ts +0 -1
- package/dist/types/src/components/DsTooltip/DsTooltip.vue.d.ts +0 -42
- package/dist/types/src/components/DsTooltip/config.d.ts +0 -1
- package/dist/types/src/components/DsTooltip/index.d.ts +0 -4
- package/dist/types/src/components/DsTree/DsTree.vue.d.ts +0 -35
- package/dist/types/src/components/DsTree/config.d.ts +0 -1
- package/dist/types/src/components/DsTree/dsTreeDataAdapter.d.ts +0 -14
- package/dist/types/src/components/DsTree/dsTreeInteractionContext.d.ts +0 -31
- package/dist/types/src/components/DsTree/dsTreeProps.d.ts +0 -63
- package/dist/types/src/components/DsTree/dsTreeStore.d.ts +0 -45
- package/dist/types/src/components/DsTree/dsTreeTypes.d.ts +0 -24
- package/dist/types/src/components/DsTree/index.d.ts +0 -6
- package/dist/types/src/components/DsTree/safelist.d.ts +0 -1
- package/dist/types/src/components/DsTreeSelect/DsTreeSelect.vue.d.ts +0 -48
- package/dist/types/src/components/DsTreeSelect/config.d.ts +0 -1
- package/dist/types/src/components/DsTreeSelect/dsTreeSelectStyles.d.ts +0 -10
- package/dist/types/src/components/DsTreeSelect/dsTreeSelectTypes.d.ts +0 -33
- package/dist/types/src/components/DsTreeSelect/index.d.ts +0 -5
- package/dist/types/src/components/DsTreeSelect/safelist.d.ts +0 -1
- package/dist/types/src/i18n/messages.d.ts +0 -280
- /package/dist/{DsButtonGroup.css → GrButtonGroup.css} +0 -0
- /package/dist/{DsIcon.css → GrIcon.css} +0 -0
- /package/dist/{DsLoading.css → GrLoading.css} +0 -0
- /package/dist/{DsSkeleton.css → GrSkeleton.css} +0 -0
- /package/dist/types/src/components/{DsBadgeWrap/DsBadgeWrap.vue.d.ts → GrBadgeWrap/GrBadgeWrap.vue.d.ts} +0 -0
- /package/dist/types/src/components/{DsButtonGroup/DsButtonGroup.vue.d.ts → GrButtonGroup/GrButtonGroup.vue.d.ts} +0 -0
- /package/dist/types/src/components/{DsCard/DsCard.vue.d.ts → GrCard/GrCard.vue.d.ts} +0 -0
- /package/dist/types/src/components/{DsDialog/DsDialogCloseButton.vue.d.ts → GrDialog/GrDialogCloseButton.vue.d.ts} +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/FileValidationError.d.ts +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/acceptValidator.d.ts +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/matchAccept.d.ts +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/maxSizeMbValidator.d.ts +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/runFileValidators.d.ts +0 -0
- /package/dist/types/src/components/{DsFileUpload → GrFileUpload}/types.d.ts +0 -0
- /package/dist/types/src/components/{DsFormField/DsFormField.vue.d.ts → GrFormField/GrFormField.vue.d.ts} +0 -0
- /package/dist/types/src/components/{DsInput/dsInputStyles.d.ts → GrInput/grInputStyles.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrTree-Dlev9oBd.js","names":[],"sources":["../../../../src/components/GrTree/grTreeDataAdapter.ts","../../../../src/components/GrTree/grTreeInteractionContext.ts","../../../../src/components/GrTree/grTreeStore.ts","../../../../src/components/GrTree/GrTree.vue","../../../../src/components/GrTree/GrTree.vue"],"sourcesContent":["import type { GrTreeKey } from './grTreeTypes'\nimport type {\n GrTreeDataProps,\n GrTreePropsMap,\n} from './grTreeProps'\n\nconst DEFAULT_CHILDREN_KEY = 'children'\nconst DEFAULT_LABEL_KEY = 'label'\n\nexport type GrTreeDataAdapterOptions<T extends object> = Pick<GrTreeDataProps<T>, 'props' | 'nodeKey'>\n\nexport type GrTreeDataAdapter<T extends object> = {\n hasNodeKey: () => boolean\n getChildrenKey: () => string\n getLabelKey: () => string\n getLabel: (data: T) => string\n getChildren: (data: T) => T[]\n ensureChildren: (data: T) => T[]\n getNodeKey: (data: T, index: number, parentKey: GrTreeKey | undefined) => GrTreeKey\n getExplicitNodeKey: (data: T) => GrTreeKey | undefined\n}\n\nfunction isTreeKey(value: unknown): value is GrTreeKey {\n return typeof value === 'string' || typeof value === 'number'\n}\n\nfunction resolveMapValue(map: GrTreePropsMap | undefined, key: keyof GrTreePropsMap, fallback: string) {\n return map?.[key] ?? fallback\n}\n\nexport function createGrTreeDataAdapter<T extends Record<string, any> = any>(\n options: GrTreeDataAdapterOptions<T>,\n): GrTreeDataAdapter<T> {\n function hasNodeKey() {\n return options.nodeKey != null\n }\n\n function getChildrenKey() {\n return resolveMapValue(options.props, 'children', DEFAULT_CHILDREN_KEY)\n }\n\n function getLabelKey() {\n return resolveMapValue(options.props, 'label', DEFAULT_LABEL_KEY)\n }\n\n function getLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const value = data[key]\n return value == null ? '' : String(value)\n }\n\n function getChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const value = data[key]\n return Array.isArray(value) ? (value as T[]) : []\n }\n\n function ensureChildren(data: T): T[] {\n const key = getChildrenKey()\n const value = (data as Record<string, unknown>)[key]\n if (Array.isArray(value))\n return value as T[]\n\n const children: T[] = []\n ;(data as Record<string, unknown>)[key] = children\n return children\n }\n\n function getExplicitNodeKey(data: T): GrTreeKey | undefined {\n if (options.nodeKey == null)\n return undefined\n\n const keyName = options.nodeKey as keyof T\n const value = data[keyName] as unknown\n return isTreeKey(value) ? value : undefined\n }\n\n function getNodeKey(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const explicitKey = getExplicitNodeKey(data)\n if (explicitKey != null)\n return explicitKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n }\n\n return {\n hasNodeKey,\n getChildrenKey,\n getLabelKey,\n getLabel,\n getChildren,\n ensureChildren,\n getNodeKey,\n getExplicitNodeKey,\n }\n}","import type { Ref, ShallowRef } from 'vue'\nimport { ref, shallowRef } from 'vue'\nimport type {\n GrTreeAllowDropType,\n GrTreeKey,\n GrTreeNode,\n GrTreeNodeDropType,\n} from './grTreeTypes'\n\nexport type GrTreeDropTarget = {\n key: GrTreeKey\n type: GrTreeNodeDropType\n allowed: boolean\n}\n\nexport type GrTreeInteractionOptions<T> = {\n draggable?: boolean\n allowDrop?: (draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, type: GrTreeAllowDropType) => boolean\n allowDrag?: (draggingNode: GrTreeNode<T>) => boolean\n}\n\nexport type GrTreeInteractionEmitters<T> = {\n emitNodeClick: (data: T, node: GrTreeNode<T>) => void\n emitNodeExpand: (data: T, node: GrTreeNode<T>) => void\n emitNodeCollapse: (data: T, node: GrTreeNode<T>) => void\n emitNodeDrop: (draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, dropType: GrTreeNodeDropType) => void\n}\n\nexport type GrTreeInteractionContext<T> = {\n hoveredKey: Ref<GrTreeKey | undefined>\n draggingNode: ShallowRef<GrTreeNode<T> | null>\n dropTarget: ShallowRef<GrTreeDropTarget | null>\n canDrag: (node: GrTreeNode<T>) => boolean\n canDrop: (drag: GrTreeNode<T>, target: GrTreeNode<T>, type: GrTreeAllowDropType) => boolean\n resetDragState: () => void\n emitNodeClick: (data: T, node: GrTreeNode<T>) => void\n emitNodeExpand: (data: T, node: GrTreeNode<T>) => void\n emitNodeCollapse: (data: T, node: GrTreeNode<T>) => void\n emitNodeDrop: (draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, dropType: GrTreeNodeDropType) => void\n}\n\nexport function createGrTreeInteractionContext<T>(\n options: GrTreeInteractionOptions<T>,\n emitters: GrTreeInteractionEmitters<T>,\n): GrTreeInteractionContext<T> {\n const hoveredKey = ref<GrTreeKey | undefined>(undefined)\n const draggingNode = shallowRef<GrTreeNode<T> | null>(null)\n const dropTarget = shallowRef<GrTreeDropTarget | null>(null)\n\n function canDrag(node: GrTreeNode<T>): boolean {\n if (!options.draggable)\n return false\n\n if (options.allowDrag)\n return options.allowDrag(node)\n\n return true\n }\n\n function canDrop(drag: GrTreeNode<T>, target: GrTreeNode<T>, type: GrTreeAllowDropType): boolean {\n if (!options.allowDrop)\n return true\n\n return options.allowDrop(drag, target, type)\n }\n\n function resetDragState() {\n draggingNode.value = null\n dropTarget.value = null\n }\n\n return {\n hoveredKey,\n draggingNode,\n dropTarget,\n canDrag,\n canDrop,\n resetDragState,\n ...emitters,\n }\n}","import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\nimport { computed, ref, shallowRef, toValue, watch } from 'vue'\nimport type {\n GrTreeKey,\n GrTreeNode,\n GrTreeNodeDropType,\n GrTreeNodeTarget,\n} from './grTreeTypes'\nimport type { GrTreeDataAdapter } from './grTreeDataAdapter'\nimport type { GrTreeDataProps, GrTreeFilterNodeMethod } from './grTreeProps'\n\ntype TreeModel<T extends object> = {\n roots: GrTreeNode<T>[]\n byKey: Map<GrTreeKey, GrTreeNode<T>>\n byData: WeakMap<T, GrTreeNode<T>>\n}\n\ntype FilterInfo = {\n isActive: boolean\n subtreeHasMatch: Map<GrTreeKey, boolean>\n matchedKeys: Set<GrTreeKey>\n autoExpandKeys: Set<GrTreeKey>\n}\n\nexport type GrTreeStoreOptions<T extends object> = {\n data: MaybeRefOrGetter<GrTreeDataProps<T>['data']>\n defaultExpandedKeys?: MaybeRefOrGetter<GrTreeDataProps<T>['defaultExpandedKeys']>\n filterNodeMethod?: MaybeRefOrGetter<GrTreeFilterNodeMethod<T> | undefined>\n adapter: GrTreeDataAdapter<T>\n}\n\nexport type GrTreeStore<T extends object> = {\n filterValue: Ref<string>\n expandedKeys: ShallowRef<Set<GrTreeKey>>\n currentKey: Ref<GrTreeKey | undefined>\n treeModel: ComputedRef<TreeModel<T>>\n filterInfo: ComputedRef<FilterInfo>\n filter: (value: string) => void\n isExpandedKey: (key: GrTreeKey) => boolean\n setExpandedKey: (key: GrTreeKey, expanded: boolean) => void\n toggleExpand: (node: GrTreeNode<T>) => void\n setCurrentKey: (key?: GrTreeKey) => void\n getCurrentKey: () => GrTreeKey | undefined\n getCurrentNode: () => GrTreeNode<T> | undefined\n setCurrentNode: (node?: GrTreeNodeTarget<T>) => boolean\n getNode: (key: GrTreeKey) => GrTreeNode<T> | undefined\n canMoveNode: (node: GrTreeNodeTarget<T>, referenceNode: GrTreeNodeTarget<T>, dropType: GrTreeNodeDropType) => boolean\n moveNode: (node: GrTreeNodeTarget<T>, referenceNode: GrTreeNodeTarget<T>, dropType: GrTreeNodeDropType) => GrTreeNode<T> | undefined\n appendNode: (data: T, parent: GrTreeNodeTarget<T>) => GrTreeNode<T> | undefined\n removeNode: (node: GrTreeNodeTarget<T>) => boolean\n insertNodeBefore: (data: T, referenceNode: GrTreeNodeTarget<T>) => GrTreeNode<T> | undefined\n insertNodeAfter: (data: T, referenceNode: GrTreeNodeTarget<T>) => GrTreeNode<T> | undefined\n}\n\nexport function createGrTreeStore<T extends Record<string, any> = any>(\n options: GrTreeStoreOptions<T>,\n): GrTreeStore<T> {\n const filterValue = ref('')\n const expandedKeys = shallowRef<Set<GrTreeKey>>(new Set())\n const currentKey = ref<GrTreeKey | undefined>(undefined)\n const getData = () => toValue(options.data) ?? []\n const getFilterNodeMethod = () => toValue(options.filterNodeMethod)\n\n watch(\n () => toValue(options.defaultExpandedKeys),\n (keys) => {\n expandedKeys.value = new Set(keys ?? [])\n },\n { immediate: true },\n )\n\n const treeModel = computed<TreeModel<T>>(() => {\n const byKey = new Map<GrTreeKey, GrTreeNode<T>>()\n const byData = new WeakMap<T, GrTreeNode<T>>()\n\n const build = (items: T[], parent: GrTreeNode<T> | undefined, level: number): GrTreeNode<T>[] => {\n return items.map((item, index) => {\n const node: GrTreeNode<T> = {\n key: options.adapter.getNodeKey(item, index, parent?.key),\n label: options.adapter.getLabel(item),\n data: item,\n level,\n parent,\n childNodes: [],\n }\n\n byKey.set(node.key, node)\n byData.set(item, node)\n node.childNodes = build(options.adapter.getChildren(item), node, level + 1)\n\n return node\n })\n }\n\n return {\n roots: build(getData(), undefined, 1),\n byKey,\n byData,\n }\n })\n\n const filterInfo = computed<FilterInfo>(() => {\n const value = filterValue.value\n const isActive = value.trim().length > 0\n const valueLower = value.toLowerCase()\n const subtreeHasMatch = new Map<GrTreeKey, boolean>()\n const matchedKeys = new Set<GrTreeKey>()\n const autoExpandKeys = new Set<GrTreeKey>()\n\n if (!isActive) {\n return {\n isActive,\n subtreeHasMatch,\n matchedKeys,\n autoExpandKeys,\n }\n }\n\n const match = (node: GrTreeNode<T>): boolean => {\n const filterNodeMethod = getFilterNodeMethod()\n if (filterNodeMethod)\n return filterNodeMethod(value, node.data, node)\n\n return node.label.toLowerCase().includes(valueLower)\n }\n\n const walk = (nodes: GrTreeNode<T>[]): boolean => {\n let any = false\n\n for (const node of nodes) {\n const self = match(node)\n const childAny = walk(node.childNodes)\n const has = self || childAny\n\n subtreeHasMatch.set(node.key, has)\n\n if (self)\n matchedKeys.add(node.key)\n\n if (childAny)\n autoExpandKeys.add(node.key)\n\n any ||= has\n }\n\n return any\n }\n\n walk(treeModel.value.roots)\n\n return {\n isActive,\n subtreeHasMatch,\n matchedKeys,\n autoExpandKeys,\n }\n })\n\n function getNode(key: GrTreeKey) {\n return treeModel.value.byKey.get(key)\n }\n\n function findNodeByData(data: T): GrTreeNode<T> | undefined {\n return treeModel.value.byData.get(data)\n }\n\n function isTreeNode(target: GrTreeNodeTarget<T>): target is GrTreeNode<T> {\n return typeof target === 'object'\n && target !== null\n && 'key' in target\n && 'data' in target\n && 'childNodes' in target\n }\n\n function resolveNodeTarget(target?: GrTreeNodeTarget<T>): GrTreeNode<T> | undefined {\n if (target == null)\n return undefined\n\n if (typeof target === 'string' || typeof target === 'number')\n return getNode(target)\n\n if (isTreeNode(target))\n return getNode(target.key) ?? target\n\n const key = options.adapter.getExplicitNodeKey(target)\n if (key != null)\n return getNode(key)\n\n return findNodeByData(target)\n }\n\n function getNodeContainer(node: GrTreeNode<T>) {\n const items = node.parent ? options.adapter.ensureChildren(node.parent.data) : getData()\n\n let index = items.findIndex(item => item === node.data)\n if (index >= 0)\n return { items, index }\n\n const key = options.adapter.getExplicitNodeKey(node.data)\n if (key == null)\n return undefined\n\n index = items.findIndex(item => options.adapter.getExplicitNodeKey(item) === key)\n if (index < 0)\n return undefined\n\n return { items, index }\n }\n\n function isDescendantNode(ancestor: GrTreeNode<T>, node: GrTreeNode<T>) {\n let current = node.parent\n\n while (current) {\n if (current.key === ancestor.key)\n return true\n\n current = current.parent\n }\n\n return false\n }\n\n function canMoveNode(node: GrTreeNodeTarget<T>, referenceNode: GrTreeNodeTarget<T>, dropType: GrTreeNodeDropType) {\n const sourceNode = resolveNodeTarget(node)\n const targetNode = resolveNodeTarget(referenceNode)\n\n if (!sourceNode || !targetNode)\n return false\n\n if (sourceNode.key === targetNode.key)\n return false\n\n if (isDescendantNode(sourceNode, targetNode))\n return false\n\n const sourceContainer = getNodeContainer(sourceNode)\n if (!sourceContainer)\n return false\n\n if (dropType === 'inner')\n return true\n\n return Boolean(getNodeContainer(targetNode))\n }\n\n function sanitizeTreeState() {\n const byKey = treeModel.value.byKey\n\n if (currentKey.value != null && !byKey.has(currentKey.value))\n currentKey.value = undefined\n\n const nextExpandedKeys = new Set(Array.from(expandedKeys.value).filter(key => byKey.has(key)))\n if (nextExpandedKeys.size !== expandedKeys.value.size)\n expandedKeys.value = nextExpandedKeys\n }\n\n function isExpandedKey(key: GrTreeKey): boolean {\n return expandedKeys.value.has(key)\n }\n\n function setExpandedKey(key: GrTreeKey, expanded: boolean) {\n const next = new Set(expandedKeys.value)\n\n if (expanded)\n next.add(key)\n else\n next.delete(key)\n\n expandedKeys.value = next\n }\n\n function toggleExpand(node: GrTreeNode<T>) {\n setExpandedKey(node.key, !isExpandedKey(node.key))\n }\n\n function setCurrentKey(key?: GrTreeKey) {\n currentKey.value = key\n }\n\n function getCurrentKey() {\n return currentKey.value\n }\n\n function getCurrentNode() {\n const key = currentKey.value\n return key == null ? undefined : getNode(key)\n }\n\n function setCurrentNode(node?: GrTreeNodeTarget<T>) {\n if (node == null) {\n currentKey.value = undefined\n return true\n }\n\n const targetNode = resolveNodeTarget(node)\n if (!targetNode)\n return false\n\n currentKey.value = targetNode.key\n return true\n }\n\n function resolveInsertedNode(data: T) {\n const key = options.adapter.getExplicitNodeKey(data)\n if (key != null)\n return getNode(key)\n\n return findNodeByData(data)\n }\n\n function moveNode(node: GrTreeNodeTarget<T>, referenceNode: GrTreeNodeTarget<T>, dropType: GrTreeNodeDropType) {\n const sourceNode = resolveNodeTarget(node)\n const targetNode = resolveNodeTarget(referenceNode)\n\n if (!sourceNode || !targetNode)\n return undefined\n\n if (!canMoveNode(sourceNode, targetNode, dropType))\n return undefined\n\n const sourceContainer = getNodeContainer(sourceNode)\n if (!sourceContainer)\n return undefined\n\n let destinationItems: T[]\n let destinationIndex: number\n\n if (dropType === 'inner') {\n destinationItems = options.adapter.ensureChildren(targetNode.data)\n destinationIndex = destinationItems.length\n }\n else {\n const targetContainer = getNodeContainer(targetNode)\n if (!targetContainer)\n return undefined\n\n destinationItems = targetContainer.items\n destinationIndex = dropType === 'prev'\n ? targetContainer.index\n : targetContainer.index + 1\n }\n\n if (destinationItems === sourceContainer.items && sourceContainer.index < destinationIndex)\n destinationIndex -= 1\n\n const [movedData] = sourceContainer.items.splice(sourceContainer.index, 1)\n destinationItems.splice(destinationIndex, 0, movedData)\n\n if (dropType === 'inner')\n setExpandedKey(targetNode.key, true)\n\n sanitizeTreeState()\n return resolveInsertedNode(movedData)\n }\n\n function appendNode(data: T, parent: GrTreeNodeTarget<T>) {\n const parentNode = resolveNodeTarget(parent)\n if (!parentNode)\n return undefined\n\n options.adapter.ensureChildren(parentNode.data).push(data)\n setExpandedKey(parentNode.key, true)\n sanitizeTreeState()\n return resolveInsertedNode(data)\n }\n\n function removeNode(node: GrTreeNodeTarget<T>) {\n if (!options.adapter.hasNodeKey())\n return false\n\n const targetNode = resolveNodeTarget(node)\n if (!targetNode)\n return false\n\n const container = getNodeContainer(targetNode)\n if (!container)\n return false\n\n container.items.splice(container.index, 1)\n sanitizeTreeState()\n return true\n }\n\n function insertNodeBefore(data: T, referenceNode: GrTreeNodeTarget<T>) {\n const targetNode = resolveNodeTarget(referenceNode)\n if (!targetNode)\n return undefined\n\n const container = getNodeContainer(targetNode)\n if (!container)\n return undefined\n\n container.items.splice(container.index, 0, data)\n sanitizeTreeState()\n return resolveInsertedNode(data)\n }\n\n function insertNodeAfter(data: T, referenceNode: GrTreeNodeTarget<T>) {\n const targetNode = resolveNodeTarget(referenceNode)\n if (!targetNode)\n return undefined\n\n const container = getNodeContainer(targetNode)\n if (!container)\n return undefined\n\n container.items.splice(container.index + 1, 0, data)\n sanitizeTreeState()\n return resolveInsertedNode(data)\n }\n\n function filter(value: string) {\n filterValue.value = value\n }\n\n return {\n filterValue,\n expandedKeys,\n currentKey,\n treeModel,\n filterInfo,\n filter,\n isExpandedKey,\n setExpandedKey,\n toggleExpand,\n setCurrentKey,\n getCurrentKey,\n getCurrentNode,\n setCurrentNode,\n getNode,\n canMoveNode,\n moveNode,\n appendNode,\n removeNode,\n insertNodeBefore,\n insertNodeAfter,\n }\n}","<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed } from 'vue'\nimport type {\n GrTreeAllowDropType,\n GrTreeInstance,\n GrTreeNode,\n GrTreeNodeDropType,\n} from './grTreeTypes'\nimport { createGrTreeDataAdapter } from './grTreeDataAdapter'\nimport { createGrTreeInteractionContext } from './grTreeInteractionContext'\nimport { createGrTreeStore } from './grTreeStore'\nimport type {\n GrTreeBranchLineColor,\n GrTreeNodeClass,\n GrTreeProps,\n GrTreeVisibleRow,\n GrTreeVisibleTreeRow,\n} from './grTreeProps'\n\ndefineOptions({\n name: 'GrTree',\n})\n\nconst DEFAULT_BRANCH_LINE_COLOR = 'var(--ds-tree-branch-line-default-color, #e2e8f0)'\n\nconst props = withDefaults(defineProps<GrTreeProps<T>>(), {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n highlightCurrent: true,\n indent: 0,\n expandIcon: 'i-lucide-chevron-right',\n collapseIcon: 'i-lucide-chevron-right',\n toggleIconRotate: true,\n branchLine: false,\n branchLineColor: undefined,\n branchLineActiveColor: undefined,\n draggable: false,\n dragHandleIcon: 'i-lucide-grip-vertical',\n dragLabel: 'Drag',\n expandLabel: 'Expand',\n collapseLabel: 'Collapse',\n rowClass: undefined,\n dragHandleClass: undefined,\n toggleClass: undefined,\n toggleIconClass: undefined,\n toggleSpacerClass: undefined,\n contentClass: undefined,\n internalRows: undefined,\n internalNested: false,\n internalStore: undefined,\n})\n\nconst emit = defineEmits<{\n (event: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (event: 'nodeExpand', data: T, node: GrTreeNode<T>): void\n (event: 'nodeCollapse', data: T, node: GrTreeNode<T>): void\n (event: 'nodeDrop', draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, dropType: GrTreeNodeDropType): void\n}>()\n\ndefineSlots<{\n default?: (props: { node: GrTreeNode<T>; data: T }) => any\n}>()\n\nconst dataAdapter = createGrTreeDataAdapter(props)\nconst treeStore = props.internalStore ?? createGrTreeStore({\n adapter: dataAdapter,\n data: () => props.data,\n defaultExpandedKeys: () => props.defaultExpandedKeys,\n filterNodeMethod: () => props.filterNodeMethod,\n})\nconst interactionContext = props.internalInteractionContext ?? createGrTreeInteractionContext(props, {\n emitNodeClick: (data, node) => emit('nodeClick', data, node),\n emitNodeExpand: (data, node) => emit('nodeExpand', data, node),\n emitNodeCollapse: (data, node) => emit('nodeCollapse', data, node),\n emitNodeDrop: (draggingNode, dropNode, dropType) => emit('nodeDrop', draggingNode, dropNode, dropType),\n})\n\nconst treeProps = props as Readonly<GrTreeProps<T>>\nconst currentKey = treeStore.currentKey\nconst hoveredKey = interactionContext.hoveredKey\nconst dropTarget = interactionContext.dropTarget\n\nconst visibleRows = computed<GrTreeVisibleTreeRow<T>[]>(() => {\n if (props.internalRows)\n return props.internalRows\n\n const { roots } = treeStore.treeModel.value\n const { isActive, subtreeHasMatch, matchedKeys, autoExpandKeys } = treeStore.filterInfo.value\n\n const walk = (nodes: GrTreeNode<T>[]): GrTreeVisibleTreeRow<T>[] => {\n const rows: GrTreeVisibleTreeRow<T>[] = []\n\n for (const node of nodes) {\n if (isActive && !subtreeHasMatch.get(node.key))\n continue\n\n const isLeaf = node.childNodes.length === 0\n const isMatched = matchedKeys.has(node.key)\n const isExpanded = treeStore.isExpandedKey(node.key) || (isActive && autoExpandKeys.has(node.key))\n\n rows.push({\n node,\n isExpanded,\n isLeaf,\n isMatched,\n children: isExpanded ? walk(node.childNodes) : [],\n })\n }\n\n return rows\n }\n\n return walk(roots)\n})\n\nfunction onRowClick(node: GrTreeNode<T>) {\n treeStore.setCurrentKey(node.key)\n interactionContext.emitNodeClick(node.data, node)\n}\n\nfunction onRowMouseEnter(node: GrTreeNode<T>) {\n hoveredKey.value = node.key\n}\n\nfunction onRowMouseLeave(node: GrTreeNode<T>) {\n if (hoveredKey.value === node.key)\n hoveredKey.value = undefined\n}\n\nfunction toggleExpand(node: GrTreeNode<T>) {\n const expanded = !treeStore.isExpandedKey(node.key)\n treeStore.toggleExpand(node)\n\n if (expanded)\n interactionContext.emitNodeExpand(node.data, node)\n else\n interactionContext.emitNodeCollapse(node.data, node)\n}\n\n// Drag & drop\nfunction canDrag(node: GrTreeNode<T>): boolean {\n return interactionContext.canDrag(node)\n}\n\nfunction shouldShowDragHandle(node: GrTreeNode<T>): boolean {\n return canDrag(node) && hoveredKey.value === node.key\n}\n\nfunction resolveDropType(evt: DragEvent, el: HTMLElement): GrTreeNodeDropType {\n const rect = el.getBoundingClientRect()\n const y = evt.clientY - rect.top\n const third = rect.height / 3\n if (y < third)\n return 'prev'\n if (y > third * 2)\n return 'next'\n return 'inner'\n}\n\nfunction canDrop(drag: GrTreeNode<T>, target: GrTreeNode<T>, type: GrTreeAllowDropType): boolean {\n return interactionContext.canDrop(drag, target, type)\n}\n\nfunction onDragStart(evt: DragEvent, node: GrTreeNode<T>) {\n if (!canDrag(node)) {\n evt.preventDefault()\n return\n }\n\n interactionContext.draggingNode.value = node\n interactionContext.dropTarget.value = null\n try {\n evt.dataTransfer?.setData('text/plain', String(node.key))\n }\n catch {\n // ignore\n }\n if (evt.dataTransfer)\n evt.dataTransfer.effectAllowed = 'move'\n}\n\nfunction onDragEnd() {\n interactionContext.resetDragState()\n}\n\nfunction onDragOver(evt: DragEvent, node: GrTreeNode<T>, rowEl: HTMLElement) {\n const drag = interactionContext.draggingNode.value\n if (!treeProps.draggable || !drag)\n return\n\n // required for `drop` to fire\n evt.preventDefault()\n\n const type = resolveDropType(evt, rowEl)\n const allowed = treeStore.canMoveNode(drag, node, type) && canDrop(drag, node, type)\n interactionContext.dropTarget.value = { key: node.key, type, allowed }\n if (evt.dataTransfer)\n evt.dataTransfer.dropEffect = allowed ? 'move' : 'none'\n}\n\nfunction onDrop(evt: DragEvent, node: GrTreeNode<T>) {\n const drag = interactionContext.draggingNode.value\n const target = interactionContext.dropTarget.value\n if (!treeProps.draggable || !drag || !target)\n return\n\n evt.preventDefault()\n\n if (target.key === node.key && target.allowed) {\n const movedNode = treeStore.moveNode(drag, node, target.type)\n if (movedNode) {\n const dropNode = treeStore.getNode(node.key) ?? node\n interactionContext.emitNodeDrop(movedNode, dropNode, target.type)\n }\n }\n\n interactionContext.resetDragState()\n}\n\nfunction filter(value: string) {\n treeStore.filter(value)\n}\n\nfunction resolveNodeClass(classValue: GrTreeNodeClass<T> | undefined, row: GrTreeVisibleRow<T>) {\n if (!classValue)\n return undefined\n\n return typeof classValue === 'function'\n ? classValue(row)\n : classValue\n}\n\nfunction resolveBranchLineColorValue(color: GrTreeBranchLineColor<T> | undefined, node: GrTreeNode<T>) {\n if (!color)\n return undefined\n\n return typeof color === 'function'\n ? color(node) ?? undefined\n : color\n}\n\nfunction isBranchLineActive(node: GrTreeNode<T>) {\n const selectedKey = currentKey.value\n\n if (selectedKey == null)\n return false\n\n if (node.key === selectedKey)\n return true\n\n return node.childNodes.some(child => child.key === selectedKey && !treeStore.isExpandedKey(child.key))\n}\n\nfunction resolveBranchLineColor(node: GrTreeNode<T>) {\n const defaultColor = resolveBranchLineColorValue(treeProps.branchLineColor, node) ?? DEFAULT_BRANCH_LINE_COLOR\n\n if (!isBranchLineActive(node))\n return defaultColor\n\n return resolveBranchLineColorValue(treeProps.branchLineActiveColor, node) ?? defaultColor\n}\n\nfunction resolveChildrenWrapStyle(row: GrTreeVisibleTreeRow<T>) {\n if (!treeProps.branchLine)\n return {\n }\n\n return {\n '--ds-tree-branch-line-color': resolveBranchLineColor(row.node),\n }\n}\n\ndefineExpose<GrTreeInstance<T>>({\n appendNode: treeStore.appendNode,\n filter,\n getCurrentNode: treeStore.getCurrentNode,\n setCurrentKey: treeStore.setCurrentKey,\n getCurrentKey: treeStore.getCurrentKey,\n getNode: treeStore.getNode,\n insertNodeAfter: treeStore.insertNodeAfter,\n insertNodeBefore: treeStore.insertNodeBefore,\n removeNode: treeStore.removeNode,\n setCurrentNode: treeStore.setCurrentNode,\n})\n</script>\n\n<template>\n <div\n :data-ds-tree=\"props.internalNested ? undefined : ''\"\n :class=\"props.internalNested ? 'ds-tree__children' : 'ds-tree'\"\n :role=\"props.internalNested ? 'group' : 'tree'\"\n >\n <div\n v-for=\"row in visibleRows\"\n :key=\"row.node.key\"\n data-ds-tree-node\n role=\"treeitem\"\n :aria-level=\"row.node.level\"\n :aria-expanded=\"row.isLeaf ? undefined : row.isExpanded\"\n >\n <div\n data-ds-tree-row\n class=\"ds-tree__row py-2 px-2\"\n :class=\"[\n treeProps.highlightCurrent && currentKey === row.node.key ? 'ds-tree__row--current' : '',\n row.isMatched ? 'ds-tree__row--matched' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'inner' ? 'ds-tree__row--drop-inner' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'prev' ? 'ds-tree__row--drop-prev' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'next' ? 'ds-tree__row--drop-next' : '',\n resolveNodeClass(treeProps.rowClass, row),\n ]\"\n tabindex=\"0\"\n @click=\"onRowClick(row.node)\"\n @drop=\"onDrop($event, row.node)\"\n @dragover=\"onDragOver($event, row.node, $event.currentTarget as HTMLElement)\"\n @mouseenter=\"onRowMouseEnter(row.node)\"\n @mouseleave=\"onRowMouseLeave(row.node)\"\n >\n <button\n v-if=\"treeProps.draggable\"\n type=\"button\"\n data-ds-tree-drag-handle\n class=\"ds-tree__drag-handle\"\n :class=\"[\n shouldShowDragHandle(row.node) ? 'ds-tree__drag-handle--visible' : '',\n canDrag(row.node) ? '' : 'ds-tree__drag-handle--disabled',\n resolveNodeClass(treeProps.dragHandleClass, row),\n ]\"\n :aria-label=\"treeProps.dragLabel\"\n :draggable=\"canDrag(row.node)\"\n @click.stop\n @mousedown.stop\n @dragstart=\"onDragStart($event, row.node)\"\n @dragend=\"onDragEnd\"\n >\n <span class=\"ds-tree__drag-icon\" :class=\"treeProps.dragHandleIcon\" />\n </button>\n\n <button\n v-if=\"!row.isLeaf\"\n data-ds-tree-toggle\n type=\"button\"\n class=\"ds-tree__toggle\"\n :class=\"resolveNodeClass(treeProps.toggleClass, row)\"\n :aria-label=\"row.isExpanded ? treeProps.collapseLabel : treeProps.expandLabel\"\n @click.stop=\"toggleExpand(row.node)\"\n >\n <span\n class=\"ds-tree__toggle-icon\"\n :class=\"[\n row.isExpanded ? treeProps.collapseIcon : treeProps.expandIcon,\n row.isExpanded && treeProps.toggleIconRotate ? 'ds-tree__toggle-icon--expanded' : '',\n resolveNodeClass(treeProps.toggleIconClass, row),\n ]\"\n />\n </button>\n <span\n v-else\n class=\"ds-tree__toggle-spacer\"\n :class=\"resolveNodeClass(treeProps.toggleSpacerClass, row)\"\n />\n\n <div class=\"ds-tree__content\" :class=\"resolveNodeClass(treeProps.contentClass, row)\">\n <slot\n :node=\"row.node\"\n :data=\"row.node.data\"\n >\n <span class=\"ds-tree__label\">{{ row.node.label }}</span>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"row.children.length\"\n class=\"ds-tree__children-wrap ml-6\"\n :class=\"treeProps.branchLine ? 'ds-tree__children-wrap--with-branch' : ''\"\n :style=\"resolveChildrenWrapStyle(row)\"\n >\n <GrTree\n v-bind=\"props\"\n :data=\"[]\"\n :internal-rows=\"row.children\"\n internal-nested\n :internal-store=\"treeStore\"\n :internal-interaction-context=\"interactionContext\"\n >\n <template #default=\"slotProps\">\n <slot v-bind=\"slotProps\">\n <span class=\"ds-tree__label\">{{ slotProps.node.label }}</span>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.ds-tree {\n --ds-tree-gap: 2px;\n --ds-tree-children-pl: 10px;\n --ds-tree-row-min-height: 28px;\n --ds-tree-row-radius: 8px;\n --ds-tree-row-pr: 8px;\n --ds-tree-row-color: var(--fg);\n --ds-tree-row-hover-bg: color-mix(in srgb, var(--primary, #000) 10%, transparent);\n --ds-tree-row-current-bg: color-mix(in srgb, var(--primary, #000) 5%, transparent);\n --ds-tree-row-current-hover-bg: color-mix(in srgb, var(--primary, #000) 16%, transparent);\n --ds-tree-drag-handle-size: 24px;\n --ds-tree-drag-handle-mr: 0;\n --ds-tree-drag-handle-radius: 6px;\n --ds-tree-drag-handle-color: inherit;\n --ds-tree-drag-handle-opacity: 0.55;\n --ds-tree-drag-handle-hover-bg: color-mix(in srgb, var(--muted, #000) 22%, transparent);\n --ds-tree-drag-handle-hover-color: var(--ds-tree-drag-handle-color);\n --ds-tree-drag-handle-hover-opacity: 0.9;\n --ds-tree-drag-handle-disabled-opacity: 0.25;\n --ds-tree-toggle-size: 24px;\n --ds-tree-toggle-mr: 0;\n --ds-tree-toggle-radius: 6px;\n --ds-tree-toggle-color: inherit;\n --ds-tree-toggle-hover-bg: color-mix(in srgb, var(--muted, #000) 25%, transparent);\n --ds-tree-toggle-hover-color: var(--ds-tree-toggle-color);\n --ds-tree-icon-size: 16px;\n --ds-tree-content-gap: 8px;\n --ds-tree-branch-line-default-color: var(--ds-tree-row-current-bg);\n --ds-tree-branch-line-width: 2px;\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n}\n\n.ds-tree__children {\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n}\n\n.ds-tree__children-wrap {\n --ds-tree-branch-line-color: var(--ds-tree-branch-line-default-color);\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n padding-left: var(--ds-tree-children-pl, 10px);\n border-left: var(--ds-tree-branch-line-width) solid transparent;\n}\n\n.ds-tree__children-wrap--with-branch {\n border-left-color: var(--ds-tree-branch-line-color, var(--ds-tree-branch-line-default-color));\n}\n\n.ds-tree__row {\n position: relative;\n display: flex;\n align-items: center;\n min-height: var(--ds-tree-row-min-height);\n border-radius: var(--ds-tree-row-radius);\n padding-right: var(--ds-tree-row-pr);\n cursor: default;\n user-select: none;\n outline: none;\n color: var(--ds-tree-row-color);\n}\n\n.ds-tree__row:hover {\n background: var(--ds-tree-row-hover-bg);\n}\n\n.ds-tree__row--current {\n background: var(--ds-tree-row-current-bg);\n}\n\n.ds-tree__row--current:hover {\n background: var(--ds-tree-row-current-hover-bg);\n}\n\n.ds-tree__row--matched .ds-tree__label {\n font-weight: 600;\n}\n\n.ds-tree__drag-handle {\n width: var(--ds-tree-drag-handle-size);\n height: var(--ds-tree-drag-handle-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: var(--ds-tree-drag-handle-mr);\n border-radius: var(--ds-tree-drag-handle-radius);\n color: var(--ds-tree-drag-handle-color);\n cursor: grab;\n visibility: hidden;\n pointer-events: none;\n opacity: 0;\n}\n\n.ds-tree__drag-handle--visible {\n visibility: visible;\n pointer-events: auto;\n opacity: var(--ds-tree-drag-handle-opacity);\n}\n\n.ds-tree__drag-handle:hover {\n background: var(--ds-tree-drag-handle-hover-bg);\n color: var(--ds-tree-drag-handle-hover-color);\n opacity: var(--ds-tree-drag-handle-hover-opacity);\n}\n\n.ds-tree__drag-handle:active {\n cursor: grabbing;\n}\n\n.ds-tree__drag-handle--disabled {\n cursor: default;\n opacity: var(--ds-tree-drag-handle-disabled-opacity);\n}\n\n.ds-tree__drag-icon {\n width: var(--ds-tree-icon-size);\n height: var(--ds-tree-icon-size);\n}\n\n.ds-tree__toggle {\n width: var(--ds-tree-toggle-size);\n height: var(--ds-tree-toggle-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: var(--ds-tree-toggle-mr);\n border-radius: var(--ds-tree-toggle-radius);\n color: var(--ds-tree-toggle-color);\n}\n\n.ds-tree__toggle:hover {\n background: var(--ds-tree-toggle-hover-bg);\n color: var(--ds-tree-toggle-hover-color);\n}\n\n.ds-tree__toggle-icon {\n width: var(--ds-tree-icon-size);\n height: var(--ds-tree-icon-size);\n transition: transform 120ms ease;\n}\n\n.ds-tree__toggle-icon--expanded {\n transform: rotate(90deg);\n}\n\n.ds-tree__toggle-spacer {\n width: var(--ds-tree-toggle-size);\n height: var(--ds-tree-toggle-size);\n margin-right: var(--ds-tree-toggle-mr);\n display: inline-block;\n}\n\n.ds-tree__content {\n min-width: 0;\n display: flex;\n align-items: center;\n gap: var(--ds-tree-content-gap);\n}\n\n.ds-tree__label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ds-tree__row--drop-inner {\n outline: 2px solid color-mix(in srgb, var(--primary, #000) 40%, transparent);\n}\n\n.ds-tree__row--drop-prev::before,\n.ds-tree__row--drop-next::after {\n content: '';\n position: absolute;\n left: 8px;\n right: 8px;\n height: 2px;\n background: color-mix(in srgb, var(--primary, #000) 55%, transparent);\n}\n\n.ds-tree__row--drop-prev::before {\n top: 2px;\n}\n\n.ds-tree__row--drop-next::after {\n bottom: 2px;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed } from 'vue'\nimport type {\n GrTreeAllowDropType,\n GrTreeInstance,\n GrTreeNode,\n GrTreeNodeDropType,\n} from './grTreeTypes'\nimport { createGrTreeDataAdapter } from './grTreeDataAdapter'\nimport { createGrTreeInteractionContext } from './grTreeInteractionContext'\nimport { createGrTreeStore } from './grTreeStore'\nimport type {\n GrTreeBranchLineColor,\n GrTreeNodeClass,\n GrTreeProps,\n GrTreeVisibleRow,\n GrTreeVisibleTreeRow,\n} from './grTreeProps'\n\ndefineOptions({\n name: 'GrTree',\n})\n\nconst DEFAULT_BRANCH_LINE_COLOR = 'var(--ds-tree-branch-line-default-color, #e2e8f0)'\n\nconst props = withDefaults(defineProps<GrTreeProps<T>>(), {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n highlightCurrent: true,\n indent: 0,\n expandIcon: 'i-lucide-chevron-right',\n collapseIcon: 'i-lucide-chevron-right',\n toggleIconRotate: true,\n branchLine: false,\n branchLineColor: undefined,\n branchLineActiveColor: undefined,\n draggable: false,\n dragHandleIcon: 'i-lucide-grip-vertical',\n dragLabel: 'Drag',\n expandLabel: 'Expand',\n collapseLabel: 'Collapse',\n rowClass: undefined,\n dragHandleClass: undefined,\n toggleClass: undefined,\n toggleIconClass: undefined,\n toggleSpacerClass: undefined,\n contentClass: undefined,\n internalRows: undefined,\n internalNested: false,\n internalStore: undefined,\n})\n\nconst emit = defineEmits<{\n (event: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (event: 'nodeExpand', data: T, node: GrTreeNode<T>): void\n (event: 'nodeCollapse', data: T, node: GrTreeNode<T>): void\n (event: 'nodeDrop', draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, dropType: GrTreeNodeDropType): void\n}>()\n\ndefineSlots<{\n default?: (props: { node: GrTreeNode<T>; data: T }) => any\n}>()\n\nconst dataAdapter = createGrTreeDataAdapter(props)\nconst treeStore = props.internalStore ?? createGrTreeStore({\n adapter: dataAdapter,\n data: () => props.data,\n defaultExpandedKeys: () => props.defaultExpandedKeys,\n filterNodeMethod: () => props.filterNodeMethod,\n})\nconst interactionContext = props.internalInteractionContext ?? createGrTreeInteractionContext(props, {\n emitNodeClick: (data, node) => emit('nodeClick', data, node),\n emitNodeExpand: (data, node) => emit('nodeExpand', data, node),\n emitNodeCollapse: (data, node) => emit('nodeCollapse', data, node),\n emitNodeDrop: (draggingNode, dropNode, dropType) => emit('nodeDrop', draggingNode, dropNode, dropType),\n})\n\nconst treeProps = props as Readonly<GrTreeProps<T>>\nconst currentKey = treeStore.currentKey\nconst hoveredKey = interactionContext.hoveredKey\nconst dropTarget = interactionContext.dropTarget\n\nconst visibleRows = computed<GrTreeVisibleTreeRow<T>[]>(() => {\n if (props.internalRows)\n return props.internalRows\n\n const { roots } = treeStore.treeModel.value\n const { isActive, subtreeHasMatch, matchedKeys, autoExpandKeys } = treeStore.filterInfo.value\n\n const walk = (nodes: GrTreeNode<T>[]): GrTreeVisibleTreeRow<T>[] => {\n const rows: GrTreeVisibleTreeRow<T>[] = []\n\n for (const node of nodes) {\n if (isActive && !subtreeHasMatch.get(node.key))\n continue\n\n const isLeaf = node.childNodes.length === 0\n const isMatched = matchedKeys.has(node.key)\n const isExpanded = treeStore.isExpandedKey(node.key) || (isActive && autoExpandKeys.has(node.key))\n\n rows.push({\n node,\n isExpanded,\n isLeaf,\n isMatched,\n children: isExpanded ? walk(node.childNodes) : [],\n })\n }\n\n return rows\n }\n\n return walk(roots)\n})\n\nfunction onRowClick(node: GrTreeNode<T>) {\n treeStore.setCurrentKey(node.key)\n interactionContext.emitNodeClick(node.data, node)\n}\n\nfunction onRowMouseEnter(node: GrTreeNode<T>) {\n hoveredKey.value = node.key\n}\n\nfunction onRowMouseLeave(node: GrTreeNode<T>) {\n if (hoveredKey.value === node.key)\n hoveredKey.value = undefined\n}\n\nfunction toggleExpand(node: GrTreeNode<T>) {\n const expanded = !treeStore.isExpandedKey(node.key)\n treeStore.toggleExpand(node)\n\n if (expanded)\n interactionContext.emitNodeExpand(node.data, node)\n else\n interactionContext.emitNodeCollapse(node.data, node)\n}\n\n// Drag & drop\nfunction canDrag(node: GrTreeNode<T>): boolean {\n return interactionContext.canDrag(node)\n}\n\nfunction shouldShowDragHandle(node: GrTreeNode<T>): boolean {\n return canDrag(node) && hoveredKey.value === node.key\n}\n\nfunction resolveDropType(evt: DragEvent, el: HTMLElement): GrTreeNodeDropType {\n const rect = el.getBoundingClientRect()\n const y = evt.clientY - rect.top\n const third = rect.height / 3\n if (y < third)\n return 'prev'\n if (y > third * 2)\n return 'next'\n return 'inner'\n}\n\nfunction canDrop(drag: GrTreeNode<T>, target: GrTreeNode<T>, type: GrTreeAllowDropType): boolean {\n return interactionContext.canDrop(drag, target, type)\n}\n\nfunction onDragStart(evt: DragEvent, node: GrTreeNode<T>) {\n if (!canDrag(node)) {\n evt.preventDefault()\n return\n }\n\n interactionContext.draggingNode.value = node\n interactionContext.dropTarget.value = null\n try {\n evt.dataTransfer?.setData('text/plain', String(node.key))\n }\n catch {\n // ignore\n }\n if (evt.dataTransfer)\n evt.dataTransfer.effectAllowed = 'move'\n}\n\nfunction onDragEnd() {\n interactionContext.resetDragState()\n}\n\nfunction onDragOver(evt: DragEvent, node: GrTreeNode<T>, rowEl: HTMLElement) {\n const drag = interactionContext.draggingNode.value\n if (!treeProps.draggable || !drag)\n return\n\n // required for `drop` to fire\n evt.preventDefault()\n\n const type = resolveDropType(evt, rowEl)\n const allowed = treeStore.canMoveNode(drag, node, type) && canDrop(drag, node, type)\n interactionContext.dropTarget.value = { key: node.key, type, allowed }\n if (evt.dataTransfer)\n evt.dataTransfer.dropEffect = allowed ? 'move' : 'none'\n}\n\nfunction onDrop(evt: DragEvent, node: GrTreeNode<T>) {\n const drag = interactionContext.draggingNode.value\n const target = interactionContext.dropTarget.value\n if (!treeProps.draggable || !drag || !target)\n return\n\n evt.preventDefault()\n\n if (target.key === node.key && target.allowed) {\n const movedNode = treeStore.moveNode(drag, node, target.type)\n if (movedNode) {\n const dropNode = treeStore.getNode(node.key) ?? node\n interactionContext.emitNodeDrop(movedNode, dropNode, target.type)\n }\n }\n\n interactionContext.resetDragState()\n}\n\nfunction filter(value: string) {\n treeStore.filter(value)\n}\n\nfunction resolveNodeClass(classValue: GrTreeNodeClass<T> | undefined, row: GrTreeVisibleRow<T>) {\n if (!classValue)\n return undefined\n\n return typeof classValue === 'function'\n ? classValue(row)\n : classValue\n}\n\nfunction resolveBranchLineColorValue(color: GrTreeBranchLineColor<T> | undefined, node: GrTreeNode<T>) {\n if (!color)\n return undefined\n\n return typeof color === 'function'\n ? color(node) ?? undefined\n : color\n}\n\nfunction isBranchLineActive(node: GrTreeNode<T>) {\n const selectedKey = currentKey.value\n\n if (selectedKey == null)\n return false\n\n if (node.key === selectedKey)\n return true\n\n return node.childNodes.some(child => child.key === selectedKey && !treeStore.isExpandedKey(child.key))\n}\n\nfunction resolveBranchLineColor(node: GrTreeNode<T>) {\n const defaultColor = resolveBranchLineColorValue(treeProps.branchLineColor, node) ?? DEFAULT_BRANCH_LINE_COLOR\n\n if (!isBranchLineActive(node))\n return defaultColor\n\n return resolveBranchLineColorValue(treeProps.branchLineActiveColor, node) ?? defaultColor\n}\n\nfunction resolveChildrenWrapStyle(row: GrTreeVisibleTreeRow<T>) {\n if (!treeProps.branchLine)\n return {\n }\n\n return {\n '--ds-tree-branch-line-color': resolveBranchLineColor(row.node),\n }\n}\n\ndefineExpose<GrTreeInstance<T>>({\n appendNode: treeStore.appendNode,\n filter,\n getCurrentNode: treeStore.getCurrentNode,\n setCurrentKey: treeStore.setCurrentKey,\n getCurrentKey: treeStore.getCurrentKey,\n getNode: treeStore.getNode,\n insertNodeAfter: treeStore.insertNodeAfter,\n insertNodeBefore: treeStore.insertNodeBefore,\n removeNode: treeStore.removeNode,\n setCurrentNode: treeStore.setCurrentNode,\n})\n</script>\n\n<template>\n <div\n :data-ds-tree=\"props.internalNested ? undefined : ''\"\n :class=\"props.internalNested ? 'ds-tree__children' : 'ds-tree'\"\n :role=\"props.internalNested ? 'group' : 'tree'\"\n >\n <div\n v-for=\"row in visibleRows\"\n :key=\"row.node.key\"\n data-ds-tree-node\n role=\"treeitem\"\n :aria-level=\"row.node.level\"\n :aria-expanded=\"row.isLeaf ? undefined : row.isExpanded\"\n >\n <div\n data-ds-tree-row\n class=\"ds-tree__row py-2 px-2\"\n :class=\"[\n treeProps.highlightCurrent && currentKey === row.node.key ? 'ds-tree__row--current' : '',\n row.isMatched ? 'ds-tree__row--matched' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'inner' ? 'ds-tree__row--drop-inner' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'prev' ? 'ds-tree__row--drop-prev' : '',\n dropTarget?.key === row.node.key && dropTarget.allowed && dropTarget.type === 'next' ? 'ds-tree__row--drop-next' : '',\n resolveNodeClass(treeProps.rowClass, row),\n ]\"\n tabindex=\"0\"\n @click=\"onRowClick(row.node)\"\n @drop=\"onDrop($event, row.node)\"\n @dragover=\"onDragOver($event, row.node, $event.currentTarget as HTMLElement)\"\n @mouseenter=\"onRowMouseEnter(row.node)\"\n @mouseleave=\"onRowMouseLeave(row.node)\"\n >\n <button\n v-if=\"treeProps.draggable\"\n type=\"button\"\n data-ds-tree-drag-handle\n class=\"ds-tree__drag-handle\"\n :class=\"[\n shouldShowDragHandle(row.node) ? 'ds-tree__drag-handle--visible' : '',\n canDrag(row.node) ? '' : 'ds-tree__drag-handle--disabled',\n resolveNodeClass(treeProps.dragHandleClass, row),\n ]\"\n :aria-label=\"treeProps.dragLabel\"\n :draggable=\"canDrag(row.node)\"\n @click.stop\n @mousedown.stop\n @dragstart=\"onDragStart($event, row.node)\"\n @dragend=\"onDragEnd\"\n >\n <span class=\"ds-tree__drag-icon\" :class=\"treeProps.dragHandleIcon\" />\n </button>\n\n <button\n v-if=\"!row.isLeaf\"\n data-ds-tree-toggle\n type=\"button\"\n class=\"ds-tree__toggle\"\n :class=\"resolveNodeClass(treeProps.toggleClass, row)\"\n :aria-label=\"row.isExpanded ? treeProps.collapseLabel : treeProps.expandLabel\"\n @click.stop=\"toggleExpand(row.node)\"\n >\n <span\n class=\"ds-tree__toggle-icon\"\n :class=\"[\n row.isExpanded ? treeProps.collapseIcon : treeProps.expandIcon,\n row.isExpanded && treeProps.toggleIconRotate ? 'ds-tree__toggle-icon--expanded' : '',\n resolveNodeClass(treeProps.toggleIconClass, row),\n ]\"\n />\n </button>\n <span\n v-else\n class=\"ds-tree__toggle-spacer\"\n :class=\"resolveNodeClass(treeProps.toggleSpacerClass, row)\"\n />\n\n <div class=\"ds-tree__content\" :class=\"resolveNodeClass(treeProps.contentClass, row)\">\n <slot\n :node=\"row.node\"\n :data=\"row.node.data\"\n >\n <span class=\"ds-tree__label\">{{ row.node.label }}</span>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"row.children.length\"\n class=\"ds-tree__children-wrap ml-6\"\n :class=\"treeProps.branchLine ? 'ds-tree__children-wrap--with-branch' : ''\"\n :style=\"resolveChildrenWrapStyle(row)\"\n >\n <GrTree\n v-bind=\"props\"\n :data=\"[]\"\n :internal-rows=\"row.children\"\n internal-nested\n :internal-store=\"treeStore\"\n :internal-interaction-context=\"interactionContext\"\n >\n <template #default=\"slotProps\">\n <slot v-bind=\"slotProps\">\n <span class=\"ds-tree__label\">{{ slotProps.node.label }}</span>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.ds-tree {\n --ds-tree-gap: 2px;\n --ds-tree-children-pl: 10px;\n --ds-tree-row-min-height: 28px;\n --ds-tree-row-radius: 8px;\n --ds-tree-row-pr: 8px;\n --ds-tree-row-color: var(--fg);\n --ds-tree-row-hover-bg: color-mix(in srgb, var(--primary, #000) 10%, transparent);\n --ds-tree-row-current-bg: color-mix(in srgb, var(--primary, #000) 5%, transparent);\n --ds-tree-row-current-hover-bg: color-mix(in srgb, var(--primary, #000) 16%, transparent);\n --ds-tree-drag-handle-size: 24px;\n --ds-tree-drag-handle-mr: 0;\n --ds-tree-drag-handle-radius: 6px;\n --ds-tree-drag-handle-color: inherit;\n --ds-tree-drag-handle-opacity: 0.55;\n --ds-tree-drag-handle-hover-bg: color-mix(in srgb, var(--muted, #000) 22%, transparent);\n --ds-tree-drag-handle-hover-color: var(--ds-tree-drag-handle-color);\n --ds-tree-drag-handle-hover-opacity: 0.9;\n --ds-tree-drag-handle-disabled-opacity: 0.25;\n --ds-tree-toggle-size: 24px;\n --ds-tree-toggle-mr: 0;\n --ds-tree-toggle-radius: 6px;\n --ds-tree-toggle-color: inherit;\n --ds-tree-toggle-hover-bg: color-mix(in srgb, var(--muted, #000) 25%, transparent);\n --ds-tree-toggle-hover-color: var(--ds-tree-toggle-color);\n --ds-tree-icon-size: 16px;\n --ds-tree-content-gap: 8px;\n --ds-tree-branch-line-default-color: var(--ds-tree-row-current-bg);\n --ds-tree-branch-line-width: 2px;\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n}\n\n.ds-tree__children {\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n}\n\n.ds-tree__children-wrap {\n --ds-tree-branch-line-color: var(--ds-tree-branch-line-default-color);\n display: flex;\n flex-direction: column;\n gap: var(--ds-tree-gap);\n padding-left: var(--ds-tree-children-pl, 10px);\n border-left: var(--ds-tree-branch-line-width) solid transparent;\n}\n\n.ds-tree__children-wrap--with-branch {\n border-left-color: var(--ds-tree-branch-line-color, var(--ds-tree-branch-line-default-color));\n}\n\n.ds-tree__row {\n position: relative;\n display: flex;\n align-items: center;\n min-height: var(--ds-tree-row-min-height);\n border-radius: var(--ds-tree-row-radius);\n padding-right: var(--ds-tree-row-pr);\n cursor: default;\n user-select: none;\n outline: none;\n color: var(--ds-tree-row-color);\n}\n\n.ds-tree__row:hover {\n background: var(--ds-tree-row-hover-bg);\n}\n\n.ds-tree__row--current {\n background: var(--ds-tree-row-current-bg);\n}\n\n.ds-tree__row--current:hover {\n background: var(--ds-tree-row-current-hover-bg);\n}\n\n.ds-tree__row--matched .ds-tree__label {\n font-weight: 600;\n}\n\n.ds-tree__drag-handle {\n width: var(--ds-tree-drag-handle-size);\n height: var(--ds-tree-drag-handle-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: var(--ds-tree-drag-handle-mr);\n border-radius: var(--ds-tree-drag-handle-radius);\n color: var(--ds-tree-drag-handle-color);\n cursor: grab;\n visibility: hidden;\n pointer-events: none;\n opacity: 0;\n}\n\n.ds-tree__drag-handle--visible {\n visibility: visible;\n pointer-events: auto;\n opacity: var(--ds-tree-drag-handle-opacity);\n}\n\n.ds-tree__drag-handle:hover {\n background: var(--ds-tree-drag-handle-hover-bg);\n color: var(--ds-tree-drag-handle-hover-color);\n opacity: var(--ds-tree-drag-handle-hover-opacity);\n}\n\n.ds-tree__drag-handle:active {\n cursor: grabbing;\n}\n\n.ds-tree__drag-handle--disabled {\n cursor: default;\n opacity: var(--ds-tree-drag-handle-disabled-opacity);\n}\n\n.ds-tree__drag-icon {\n width: var(--ds-tree-icon-size);\n height: var(--ds-tree-icon-size);\n}\n\n.ds-tree__toggle {\n width: var(--ds-tree-toggle-size);\n height: var(--ds-tree-toggle-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: var(--ds-tree-toggle-mr);\n border-radius: var(--ds-tree-toggle-radius);\n color: var(--ds-tree-toggle-color);\n}\n\n.ds-tree__toggle:hover {\n background: var(--ds-tree-toggle-hover-bg);\n color: var(--ds-tree-toggle-hover-color);\n}\n\n.ds-tree__toggle-icon {\n width: var(--ds-tree-icon-size);\n height: var(--ds-tree-icon-size);\n transition: transform 120ms ease;\n}\n\n.ds-tree__toggle-icon--expanded {\n transform: rotate(90deg);\n}\n\n.ds-tree__toggle-spacer {\n width: var(--ds-tree-toggle-size);\n height: var(--ds-tree-toggle-size);\n margin-right: var(--ds-tree-toggle-mr);\n display: inline-block;\n}\n\n.ds-tree__content {\n min-width: 0;\n display: flex;\n align-items: center;\n gap: var(--ds-tree-content-gap);\n}\n\n.ds-tree__label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ds-tree__row--drop-inner {\n outline: 2px solid color-mix(in srgb, var(--primary, #000) 40%, transparent);\n}\n\n.ds-tree__row--drop-prev::before,\n.ds-tree__row--drop-next::after {\n content: '';\n position: absolute;\n left: 8px;\n right: 8px;\n height: 2px;\n background: color-mix(in srgb, var(--primary, #000) 55%, transparent);\n}\n\n.ds-tree__row--drop-prev::before {\n top: 2px;\n}\n\n.ds-tree__row--drop-next::after {\n bottom: 2px;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
import { a as vClickOutside } from "../../../chunks/directives-Cuib0yOO.js";
|
|
2
|
+
import { t as GrInput_default } from "../../GrInput/chunks/GrInput-DLLRrH1A.js";
|
|
3
|
+
import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-BEWP9aJs.js";
|
|
4
|
+
import { t as GrTree_default } from "../../GrTree/chunks/GrTree-Dlev9oBd.js";
|
|
5
|
+
import { i as grTreeSelectPanelClass, r as grTreeSelectClass } from "../../../chunks/config-C0b_3LJV.js";
|
|
6
|
+
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
|
+
//#region src/components/GrTreeSelect/GrTreeSelect.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var _hoisted_1 = { class: "relative" };
|
|
9
|
+
var _hoisted_2 = [
|
|
10
|
+
"value",
|
|
11
|
+
"placeholder",
|
|
12
|
+
"disabled",
|
|
13
|
+
"aria-expanded",
|
|
14
|
+
"aria-invalid"
|
|
15
|
+
];
|
|
16
|
+
var _hoisted_3 = ["disabled", "aria-label"];
|
|
17
|
+
var _hoisted_4 = {
|
|
18
|
+
key: 1,
|
|
19
|
+
"data-testid": "ds-tree-select-chevron",
|
|
20
|
+
"data-ds-tree-select-chevron": "",
|
|
21
|
+
class: "absolute top-1/2 -translate-y-1/2 right-3 text-[var(--muted-fg)] pointer-events-none"
|
|
22
|
+
};
|
|
23
|
+
var _hoisted_5 = {
|
|
24
|
+
key: 2,
|
|
25
|
+
class: "absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none"
|
|
26
|
+
};
|
|
27
|
+
var _hoisted_6 = {
|
|
28
|
+
key: 0,
|
|
29
|
+
class: "p-2 border-b border-[var(--brd)]"
|
|
30
|
+
};
|
|
31
|
+
var _hoisted_7 = {
|
|
32
|
+
key: 0,
|
|
33
|
+
class: "px-3 py-2 text-[13px] text-[var(--muted-fg)]"
|
|
34
|
+
};
|
|
35
|
+
var _hoisted_8 = { class: "flex items-center gap-2 min-w-0" };
|
|
36
|
+
var _hoisted_9 = { class: "truncate" };
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/components/GrTreeSelect/GrTreeSelect.vue
|
|
39
|
+
var GrTreeSelect_default = /* @__PURE__ */ defineComponent({
|
|
40
|
+
__name: "GrTreeSelect",
|
|
41
|
+
props: {
|
|
42
|
+
modelValue: {},
|
|
43
|
+
data: {},
|
|
44
|
+
props: { default: () => ({
|
|
45
|
+
children: "children",
|
|
46
|
+
label: "label"
|
|
47
|
+
}) },
|
|
48
|
+
nodeKey: { default: "id" },
|
|
49
|
+
defaultExpandedKeys: { default: () => [] },
|
|
50
|
+
disabled: {
|
|
51
|
+
type: Boolean,
|
|
52
|
+
default: false
|
|
53
|
+
},
|
|
54
|
+
placeholder: { default: void 0 },
|
|
55
|
+
size: { default: "md" },
|
|
56
|
+
invalid: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
default: false
|
|
59
|
+
},
|
|
60
|
+
state: { default: "default" },
|
|
61
|
+
multiple: {
|
|
62
|
+
type: Boolean,
|
|
63
|
+
default: false
|
|
64
|
+
},
|
|
65
|
+
clearable: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
default: false
|
|
68
|
+
},
|
|
69
|
+
valueDisplay: { default: "label" },
|
|
70
|
+
filterable: {
|
|
71
|
+
type: Boolean,
|
|
72
|
+
default: false
|
|
73
|
+
},
|
|
74
|
+
filterPlaceholder: { default: void 0 },
|
|
75
|
+
filterInputmode: { default: void 0 },
|
|
76
|
+
filterNodeMethod: {
|
|
77
|
+
type: Function,
|
|
78
|
+
default: void 0
|
|
79
|
+
},
|
|
80
|
+
closeOnSelect: {
|
|
81
|
+
type: Boolean,
|
|
82
|
+
default: void 0
|
|
83
|
+
},
|
|
84
|
+
dropdownMaxHeight: { default: 320 }
|
|
85
|
+
},
|
|
86
|
+
emits: [
|
|
87
|
+
"update:modelValue",
|
|
88
|
+
"change",
|
|
89
|
+
"visibleChange",
|
|
90
|
+
"clear",
|
|
91
|
+
"nodeClick"
|
|
92
|
+
],
|
|
93
|
+
setup(__props, { emit: __emit }) {
|
|
94
|
+
const props = __props;
|
|
95
|
+
const { t } = useGranularityTranslations();
|
|
96
|
+
const emit = __emit;
|
|
97
|
+
const rootEl = ref(null);
|
|
98
|
+
const triggerEl = ref(null);
|
|
99
|
+
const filterInputRef = ref(null);
|
|
100
|
+
const treeRef = ref(null);
|
|
101
|
+
const panelEl = ref(null);
|
|
102
|
+
const clickOutsideExclude = [() => panelEl.value];
|
|
103
|
+
let hadPointerDownOnTrigger = false;
|
|
104
|
+
const open = ref(false);
|
|
105
|
+
const filterValue = ref("");
|
|
106
|
+
const panelStyle = ref({
|
|
107
|
+
left: "0px",
|
|
108
|
+
top: "0px",
|
|
109
|
+
width: "0px",
|
|
110
|
+
zIndex: "2147483647"
|
|
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
|
+
const closeOnSelectResolved = computed(() => {
|
|
135
|
+
return props.closeOnSelect ?? !props.multiple;
|
|
136
|
+
});
|
|
137
|
+
function getChildrenKey() {
|
|
138
|
+
return props.props.children ?? "children";
|
|
139
|
+
}
|
|
140
|
+
function getLabelKey() {
|
|
141
|
+
return props.props.label ?? "label";
|
|
142
|
+
}
|
|
143
|
+
function nodeLabel(data) {
|
|
144
|
+
const v = data[getLabelKey()];
|
|
145
|
+
return v == null ? "" : String(v);
|
|
146
|
+
}
|
|
147
|
+
function nodeChildren(data) {
|
|
148
|
+
const v = data[getChildrenKey()];
|
|
149
|
+
return Array.isArray(v) ? v : [];
|
|
150
|
+
}
|
|
151
|
+
function nodeKeyOf(data, index, parentKey) {
|
|
152
|
+
const v = data[props.nodeKey];
|
|
153
|
+
if (v != null) return v;
|
|
154
|
+
return parentKey == null ? index : `${String(parentKey)}:${index}`;
|
|
155
|
+
}
|
|
156
|
+
const labelByKey = computed(() => {
|
|
157
|
+
const map = /* @__PURE__ */ new Map();
|
|
158
|
+
const walk = (items, parentKey) => {
|
|
159
|
+
for (let i = 0; i < items.length; i++) {
|
|
160
|
+
const item = items[i];
|
|
161
|
+
const key = nodeKeyOf(item, i, parentKey);
|
|
162
|
+
map.set(key, nodeLabel(item));
|
|
163
|
+
walk(nodeChildren(item), key);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
walk(props.data ?? [], void 0);
|
|
167
|
+
return map;
|
|
168
|
+
});
|
|
169
|
+
const pathLabelsByKey = computed(() => {
|
|
170
|
+
const map = /* @__PURE__ */ new Map();
|
|
171
|
+
const walk = (items, parentKey, parentPath) => {
|
|
172
|
+
for (let i = 0; i < items.length; i++) {
|
|
173
|
+
const item = items[i];
|
|
174
|
+
const key = nodeKeyOf(item, i, parentKey);
|
|
175
|
+
const label = nodeLabel(item);
|
|
176
|
+
const path = [...parentPath, label];
|
|
177
|
+
map.set(key, path);
|
|
178
|
+
walk(nodeChildren(item), key, path);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
walk(props.data ?? [], void 0, []);
|
|
182
|
+
return map;
|
|
183
|
+
});
|
|
184
|
+
const selectedKeys = computed(() => {
|
|
185
|
+
if (props.multiple) return Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
186
|
+
const v = props.modelValue;
|
|
187
|
+
if (v == null || Array.isArray(v)) return [];
|
|
188
|
+
return [v];
|
|
189
|
+
});
|
|
190
|
+
const selectedKeySet = computed(() => new Set(selectedKeys.value));
|
|
191
|
+
const selectedLabels = computed(() => {
|
|
192
|
+
const map = labelByKey.value;
|
|
193
|
+
return selectedKeys.value.map((k) => map.get(k) ?? String(k));
|
|
194
|
+
});
|
|
195
|
+
const selectedPathLabels = computed(() => {
|
|
196
|
+
if (props.multiple) return void 0;
|
|
197
|
+
const key = selectedKeys.value[0];
|
|
198
|
+
if (key == null) return void 0;
|
|
199
|
+
const path = pathLabelsByKey.value.get(key);
|
|
200
|
+
if (path?.length) return path;
|
|
201
|
+
const labels = selectedLabels.value;
|
|
202
|
+
return labels.length ? [labels[0]] : void 0;
|
|
203
|
+
});
|
|
204
|
+
const displayValue = computed(() => {
|
|
205
|
+
const labels = selectedLabels.value;
|
|
206
|
+
if (labels.length === 0) return "";
|
|
207
|
+
if (!props.multiple) {
|
|
208
|
+
if (props.valueDisplay === "path") {
|
|
209
|
+
const path = selectedPathLabels.value;
|
|
210
|
+
if (path?.length) return path.join(" / ");
|
|
211
|
+
}
|
|
212
|
+
return labels[0];
|
|
213
|
+
}
|
|
214
|
+
if (labels.length === 1) return labels[0];
|
|
215
|
+
return `${labels[0]} +${labels.length - 1}`;
|
|
216
|
+
});
|
|
217
|
+
const hasSelection = computed(() => selectedKeys.value.length > 0);
|
|
218
|
+
const resolvedFilterPlaceholder = computed(() => {
|
|
219
|
+
return props.filterPlaceholder ?? t("gr.treeSelect.filterPlaceholder", "Search…");
|
|
220
|
+
});
|
|
221
|
+
const className = computed(() => {
|
|
222
|
+
return grTreeSelectClass({
|
|
223
|
+
size: props.size,
|
|
224
|
+
state: props.state,
|
|
225
|
+
invalid: props.invalid
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
const panelClasses = computed(() => {
|
|
229
|
+
return grTreeSelectPanelClass;
|
|
230
|
+
});
|
|
231
|
+
function setOpen(next) {
|
|
232
|
+
if (props.disabled) return;
|
|
233
|
+
if (open.value === next) return;
|
|
234
|
+
open.value = next;
|
|
235
|
+
emit("visibleChange", next);
|
|
236
|
+
}
|
|
237
|
+
function onClickOutside() {
|
|
238
|
+
setOpen(false);
|
|
239
|
+
}
|
|
240
|
+
function openDropdown() {
|
|
241
|
+
setOpen(true);
|
|
242
|
+
}
|
|
243
|
+
function closeDropdown() {
|
|
244
|
+
setOpen(false);
|
|
245
|
+
}
|
|
246
|
+
function toggleDropdown() {
|
|
247
|
+
setOpen(!open.value);
|
|
248
|
+
}
|
|
249
|
+
function onTriggerPointerDown() {
|
|
250
|
+
hadPointerDownOnTrigger = true;
|
|
251
|
+
if (typeof window !== "undefined") window.setTimeout(() => {
|
|
252
|
+
hadPointerDownOnTrigger = false;
|
|
253
|
+
}, 0);
|
|
254
|
+
else hadPointerDownOnTrigger = false;
|
|
255
|
+
}
|
|
256
|
+
function onTriggerFocus() {
|
|
257
|
+
if (hadPointerDownOnTrigger) return;
|
|
258
|
+
openDropdown();
|
|
259
|
+
}
|
|
260
|
+
function closeOnEscape(e) {
|
|
261
|
+
if (e.key === "Escape") {
|
|
262
|
+
closeDropdown();
|
|
263
|
+
nextTick(() => triggerEl.value?.focus());
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
watch(open, async (isOpen) => {
|
|
267
|
+
if (typeof document === "undefined") return;
|
|
268
|
+
document.removeEventListener("keydown", closeOnEscape);
|
|
269
|
+
unbindPanelPositionListeners();
|
|
270
|
+
if (isOpen) document.addEventListener("keydown", closeOnEscape);
|
|
271
|
+
if (!isOpen) return;
|
|
272
|
+
bindPanelPositionListeners();
|
|
273
|
+
await nextTick();
|
|
274
|
+
syncPanelPosition();
|
|
275
|
+
if (!props.multiple) {
|
|
276
|
+
const v = props.modelValue;
|
|
277
|
+
if (v != null && !Array.isArray(v)) treeRef.value?.setCurrentKey(v);
|
|
278
|
+
}
|
|
279
|
+
if (props.filterable) {
|
|
280
|
+
await nextTick();
|
|
281
|
+
filterInputRef.value?.focus();
|
|
282
|
+
}
|
|
283
|
+
}, { immediate: true });
|
|
284
|
+
onUnmounted(() => {
|
|
285
|
+
if (typeof document === "undefined") return;
|
|
286
|
+
document.removeEventListener("keydown", closeOnEscape);
|
|
287
|
+
unbindPanelPositionListeners();
|
|
288
|
+
});
|
|
289
|
+
watch(() => props.modelValue, (v) => {
|
|
290
|
+
if (props.multiple) return;
|
|
291
|
+
if (v == null || Array.isArray(v)) {
|
|
292
|
+
treeRef.value?.setCurrentKey(void 0);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
treeRef.value?.setCurrentKey(v);
|
|
296
|
+
});
|
|
297
|
+
watch(filterValue, (v) => {
|
|
298
|
+
treeRef.value?.filter(v);
|
|
299
|
+
});
|
|
300
|
+
watch(open, (isOpen) => {
|
|
301
|
+
if (isOpen) return;
|
|
302
|
+
if (filterValue.value.trim().length > 0) filterValue.value = "";
|
|
303
|
+
});
|
|
304
|
+
function emitModel(next) {
|
|
305
|
+
emit("update:modelValue", next);
|
|
306
|
+
emit("change", next);
|
|
307
|
+
}
|
|
308
|
+
function clear() {
|
|
309
|
+
if (props.disabled) return;
|
|
310
|
+
emitModel(props.multiple ? [] : null);
|
|
311
|
+
emit("clear");
|
|
312
|
+
if (!props.multiple) treeRef.value?.setCurrentKey(void 0);
|
|
313
|
+
}
|
|
314
|
+
function onTriggerKeydown(e) {
|
|
315
|
+
if (props.disabled) return;
|
|
316
|
+
if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
|
|
317
|
+
e.preventDefault();
|
|
318
|
+
openDropdown();
|
|
319
|
+
}
|
|
320
|
+
if (e.key === "Escape") {
|
|
321
|
+
e.preventDefault();
|
|
322
|
+
closeDropdown();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function onNodeClick(data, node) {
|
|
326
|
+
emit("nodeClick", data, node);
|
|
327
|
+
if (props.disabled) return;
|
|
328
|
+
if (props.multiple) {
|
|
329
|
+
const next = new Set(selectedKeySet.value);
|
|
330
|
+
if (next.has(node.key)) next.delete(node.key);
|
|
331
|
+
else next.add(node.key);
|
|
332
|
+
emitModel([...next]);
|
|
333
|
+
if (closeOnSelectResolved.value) closeDropdown();
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
emitModel(node.key);
|
|
337
|
+
if (closeOnSelectResolved.value) closeDropdown();
|
|
338
|
+
}
|
|
339
|
+
return (_ctx, _cache) => {
|
|
340
|
+
return withDirectives((openBlock(), createElementBlock("div", {
|
|
341
|
+
ref_key: "rootEl",
|
|
342
|
+
ref: rootEl,
|
|
343
|
+
"data-ds-tree-select": "",
|
|
344
|
+
class: "relative"
|
|
345
|
+
}, [createElementVNode("div", _hoisted_1, [
|
|
346
|
+
createElementVNode("input", {
|
|
347
|
+
ref_key: "triggerEl",
|
|
348
|
+
ref: triggerEl,
|
|
349
|
+
"data-testid": "ds-tree-select-trigger",
|
|
350
|
+
"data-ds-tree-select-trigger": "",
|
|
351
|
+
type: "text",
|
|
352
|
+
value: displayValue.value,
|
|
353
|
+
placeholder: __props.placeholder,
|
|
354
|
+
disabled: __props.disabled,
|
|
355
|
+
readonly: "",
|
|
356
|
+
role: "combobox",
|
|
357
|
+
"aria-readonly": "true",
|
|
358
|
+
"aria-expanded": open.value ? "true" : "false",
|
|
359
|
+
"aria-invalid": __props.invalid ? "true" : void 0,
|
|
360
|
+
class: normalizeClass(["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", [className.value, _ctx.$slots.value ? "text-transparent placeholder:text-transparent" : ""]]),
|
|
361
|
+
onPointerdown: onTriggerPointerDown,
|
|
362
|
+
onClick: toggleDropdown,
|
|
363
|
+
onFocus: onTriggerFocus,
|
|
364
|
+
onKeydown: onTriggerKeydown
|
|
365
|
+
}, null, 42, _hoisted_2),
|
|
366
|
+
__props.clearable && hasSelection.value ? (openBlock(), createElementBlock("button", {
|
|
367
|
+
key: 0,
|
|
368
|
+
"data-testid": "ds-tree-select-clear",
|
|
369
|
+
"data-ds-tree-select-clear": "",
|
|
370
|
+
type: "button",
|
|
371
|
+
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",
|
|
372
|
+
disabled: __props.disabled,
|
|
373
|
+
"aria-label": unref(t)("gr.common.clear", "Clear"),
|
|
374
|
+
onClick: withModifiers(clear, ["stop"])
|
|
375
|
+
}, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "i-lucide-x h-4 w-4" }, null, -1)])], 8, _hoisted_3)) : (openBlock(), createElementBlock("span", _hoisted_4, [createElementVNode("span", { class: normalizeClass(["i-lucide-chevron-down h-4 w-4 transition-transform duration-150", open.value ? "rotate-180" : ""]) }, null, 2)])),
|
|
376
|
+
_ctx.$slots.value ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "value", {
|
|
377
|
+
value: __props.modelValue,
|
|
378
|
+
labels: selectedLabels.value,
|
|
379
|
+
displayValue: displayValue.value,
|
|
380
|
+
pathLabels: selectedPathLabels.value
|
|
381
|
+
})])) : createCommentVNode("", true)
|
|
382
|
+
]), (openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, {
|
|
383
|
+
"enter-active-class": "transition ease-out duration-150",
|
|
384
|
+
"enter-from-class": "transform opacity-0 scale-95",
|
|
385
|
+
"enter-to-class": "transform opacity-100 scale-100",
|
|
386
|
+
"leave-active-class": "transition ease-in duration-100",
|
|
387
|
+
"leave-from-class": "transform opacity-100 scale-100",
|
|
388
|
+
"leave-to-class": "transform opacity-0 scale-95"
|
|
389
|
+
}, {
|
|
390
|
+
default: withCtx(() => [withDirectives(createElementVNode("div", {
|
|
391
|
+
ref_key: "panelEl",
|
|
392
|
+
ref: panelEl,
|
|
393
|
+
"data-testid": "ds-tree-select-panel",
|
|
394
|
+
"data-ds-tree-select-panel": "",
|
|
395
|
+
class: "fixed w-full",
|
|
396
|
+
style: normalizeStyle(panelStyle.value)
|
|
397
|
+
}, [createElementVNode("div", { class: normalizeClass(panelClasses.value) }, [__props.filterable ? (openBlock(), createElementBlock("div", _hoisted_6, [createVNode(GrInput_default, {
|
|
398
|
+
ref_key: "filterInputRef",
|
|
399
|
+
ref: filterInputRef,
|
|
400
|
+
modelValue: filterValue.value,
|
|
401
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => filterValue.value = $event),
|
|
402
|
+
"data-testid": "ds-tree-select-filter",
|
|
403
|
+
"data-ds-tree-select-filter": "",
|
|
404
|
+
type: "search",
|
|
405
|
+
inputmode: __props.filterInputmode,
|
|
406
|
+
placeholder: resolvedFilterPlaceholder.value,
|
|
407
|
+
size: "sm"
|
|
408
|
+
}, null, 8, [
|
|
409
|
+
"modelValue",
|
|
410
|
+
"inputmode",
|
|
411
|
+
"placeholder"
|
|
412
|
+
])])) : createCommentVNode("", true), createElementVNode("div", {
|
|
413
|
+
class: "p-1 overflow-auto",
|
|
414
|
+
style: normalizeStyle({ maxHeight: `${__props.dropdownMaxHeight}px` })
|
|
415
|
+
}, [(__props.data?.length ?? 0) === 0 ? (openBlock(), createElementBlock("div", _hoisted_7, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(t)("gr.treeSelect.empty", "No data")), 1)])])) : (openBlock(), createBlock(unref(GrTree_default), {
|
|
416
|
+
key: 1,
|
|
417
|
+
ref_key: "treeRef",
|
|
418
|
+
ref: treeRef,
|
|
419
|
+
data: __props.data,
|
|
420
|
+
props: props.props,
|
|
421
|
+
"node-key": __props.nodeKey,
|
|
422
|
+
"default-expanded-keys": __props.defaultExpandedKeys,
|
|
423
|
+
"filter-node-method": __props.filterNodeMethod,
|
|
424
|
+
"highlight-current": !__props.multiple,
|
|
425
|
+
onNodeClick
|
|
426
|
+
}, {
|
|
427
|
+
default: withCtx(({ node, data }) => [renderSlot(_ctx.$slots, "node", {
|
|
428
|
+
node,
|
|
429
|
+
data,
|
|
430
|
+
selected: selectedKeySet.value.has(node.key)
|
|
431
|
+
}, () => [createElementVNode("div", _hoisted_8, [createElementVNode("span", {
|
|
432
|
+
class: normalizeClass(["h-4 w-4 shrink-0", selectedKeySet.value.has(node.key) ? "i-lucide-check text-[var(--primary)]" : ""]),
|
|
433
|
+
"aria-hidden": "true"
|
|
434
|
+
}, null, 2), createElementVNode("span", _hoisted_9, toDisplayString(node.label), 1)])])]),
|
|
435
|
+
_: 3
|
|
436
|
+
}, 8, [
|
|
437
|
+
"data",
|
|
438
|
+
"props",
|
|
439
|
+
"node-key",
|
|
440
|
+
"default-expanded-keys",
|
|
441
|
+
"filter-node-method",
|
|
442
|
+
"highlight-current"
|
|
443
|
+
]))], 4)], 2)], 4), [[vShow, open.value]])]),
|
|
444
|
+
_: 3
|
|
445
|
+
})]))])), [[unref(vClickOutside), {
|
|
446
|
+
handler: onClickOutside,
|
|
447
|
+
enabled: open.value,
|
|
448
|
+
exclude: clickOutsideExclude
|
|
449
|
+
}]]);
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
//#endregion
|
|
454
|
+
export { GrTreeSelect_default as t };
|
|
455
|
+
|
|
456
|
+
//# sourceMappingURL=GrTreeSelect-DN6XFjOD.js.map
|