@robot-admin/naive-ui-components 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +294 -279
- package/dist/C_ActionBar-DYG0Yf3A.css.map +1 -0
- package/dist/C_ActionBar-MAjRhqcI.css.map +1 -0
- package/dist/C_ActionBar.cjs +1 -1
- package/dist/C_ActionBar.css +47 -47
- package/dist/C_ActionBar.js +1 -1
- package/dist/C_ActionBar.js.map +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_ActionBar2.js.map +1 -1
- package/dist/{C_AntV-A3NXx_sF.css.map → C_AntV-BY8jqqmi.css.map} +1 -1
- package/dist/{C_AntV-D2Zp2qQF.css.map → C_AntV-BbkHc-_a.css.map} +1 -1
- package/dist/C_AntV.cjs +1 -1
- package/dist/C_AntV.css +78 -78
- package/dist/C_AntV.js +1 -1
- package/dist/C_AntV.js.map +1 -1
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AntV2.js.map +1 -1
- package/dist/{C_AudioPlayer-CXl4yP_m.css.map → C_AudioPlayer-DKRIGhi7.css.map} +1 -1
- package/dist/{C_AudioPlayer-CcBtt71m.css.map → C_AudioPlayer-DlB6eNsa.css.map} +1 -1
- package/dist/C_AudioPlayer.cjs +1 -1
- package/dist/C_AudioPlayer.css +47 -47
- package/dist/C_AudioPlayer.js +1 -1
- package/dist/C_AudioPlayer.js.map +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AudioPlayer2.js.map +1 -1
- package/dist/{C_AvatarGroup-CtPhfH9h.css.map → C_AvatarGroup-D02zci-i.css.map} +1 -1
- package/dist/{C_AvatarGroup-M1dNPH3E.css.map → C_AvatarGroup-DatHaUlY.css.map} +1 -1
- package/dist/C_AvatarGroup.css +21 -21
- package/dist/C_AvatarGroup.js.map +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_AvatarGroup2.js.map +1 -1
- package/dist/{C_Barcode-DjTmDkbQ.css.map → C_Barcode-DYDRDe2O.css.map} +1 -1
- package/dist/{C_Barcode-Do1Ozsmh.css.map → C_Barcode-muJdc_O4.css.map} +1 -1
- package/dist/C_Barcode.css +7 -7
- package/dist/C_Barcode.js.map +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Barcode2.js.map +1 -1
- package/dist/C_Breadcrumb.cjs +1 -1
- package/dist/C_Breadcrumb.js +1 -1
- package/dist/C_Breadcrumb.js.map +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Breadcrumb2.js.map +1 -1
- package/dist/{C_Captcha-CZmAETly.css.map → C_Captcha-9_hk6VmY.css.map} +1 -1
- package/dist/{C_Captcha-Ccq3DMrR.css.map → C_Captcha-MtASlJ0f.css.map} +1 -1
- package/dist/C_Captcha.css +19 -19
- package/dist/C_Captcha.js.map +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Captcha2.js.map +1 -1
- package/dist/C_Cascade.js.map +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Cascade2.js.map +1 -1
- package/dist/{C_Chat-CJ8KESTM.css.map → C_Chat-Csjz_BFw.css.map} +1 -1
- package/dist/{C_Chat-DzV4AFLd.css.map → C_Chat-DO1ZBA_0.css.map} +1 -1
- package/dist/C_Chat.cjs +1 -1
- package/dist/C_Chat.css +65 -65
- package/dist/C_Chat.js +1 -1
- package/dist/C_Chat.js.map +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Chat2.js.map +1 -1
- package/dist/{C_City-Cv5BESaN.css.map → C_City-Bam08Qv3.css.map} +1 -1
- package/dist/{C_City-DNKv4MpH.css.map → C_City-Bb3W-KaN.css.map} +1 -1
- package/dist/C_City.css +29 -29
- package/dist/C_City.js.map +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_City2.js.map +1 -1
- package/dist/C_Code-BFi5xxnM.css.map +1 -0
- package/dist/C_Code-CZ7yfnri.css.map +1 -0
- package/dist/C_Code.cjs +1 -1
- package/dist/C_Code.css +3 -3
- package/dist/C_Code.js +1 -1
- package/dist/C_Code.js.map +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Code2.js.map +1 -1
- package/dist/{C_CollapsePanel-CedsEM0N.css.map → C_CollapsePanel-CWkFCqNQ.css.map} +1 -1
- package/dist/{C_CollapsePanel-BkOivqn3.css.map → C_CollapsePanel-pcVJA_4z.css.map} +1 -1
- package/dist/C_CollapsePanel.cjs +1 -1
- package/dist/C_CollapsePanel.css +35 -35
- package/dist/C_CollapsePanel.js +1 -1
- package/dist/C_CollapsePanel.js.map +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_CollapsePanel2.js.map +1 -1
- package/dist/{C_ContextMenu-CCsCeI39.css.map → C_ContextMenu-B3Cgz_wJ.css.map} +1 -1
- package/dist/{C_ContextMenu-DOTBeltf.css.map → C_ContextMenu-u1LixF3_.css.map} +1 -1
- package/dist/C_ContextMenu.cjs +1 -1
- package/dist/C_ContextMenu.css +17 -17
- package/dist/C_ContextMenu.js +1 -1
- package/dist/C_ContextMenu.js.map +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_ContextMenu2.js.map +1 -1
- package/dist/{C_Cron-C0-8b5af.css.map → C_Cron-Civir5-I.css.map} +1 -1
- package/dist/{C_Cron-DqHQ92LN.css.map → C_Cron-iw3qpMsy.css.map} +1 -1
- package/dist/C_Cron.cjs +1 -1
- package/dist/C_Cron.css +37 -37
- package/dist/C_Cron.js +1 -1
- package/dist/C_Cron.js.map +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Cron2.js.map +1 -1
- package/dist/C_Date.js.map +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Date2.js.map +1 -1
- package/dist/{C_Draggable-Bq6o0qXn.css.map → C_Draggable-BCjIvIwT.css.map} +1 -1
- package/dist/{C_Draggable-r6nhx3yM.css.map → C_Draggable-DwkSlCOS.css.map} +1 -1
- package/dist/C_Draggable.css +46 -46
- package/dist/C_Draggable.js.map +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Draggable2.js.map +1 -1
- package/dist/C_Editor-BfjjYQ9B.css.map +1 -0
- package/dist/C_Editor-Do2StvoJ.css.map +1 -0
- package/dist/C_Editor.css +55 -55
- package/dist/C_Editor.js.map +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_Editor2.js.map +1 -1
- package/dist/{C_FilePreview-BVarVvnD.css.map → C_FilePreview-BhcbiXsV.css.map} +1 -1
- package/dist/{C_FilePreview-DHGlV4OR.css.map → C_FilePreview-DJudcIbW.css.map} +1 -1
- package/dist/C_FilePreview.cjs +1 -1
- package/dist/C_FilePreview.css +91 -91
- package/dist/C_FilePreview.js +1 -1
- package/dist/C_FilePreview.js.map +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FilePreview2.js.map +1 -1
- package/dist/{C_Form-BciQUPpS.css.map → C_Form-BtcAPIRi.css.map} +1 -1
- package/dist/{C_Form-CKHvXL3O.css.map → C_Form-D_gwQ7hC.css.map} +1 -1
- package/dist/C_Form.cjs +1 -1
- package/dist/C_Form.css +222 -222
- package/dist/C_Form.js +1 -1
- package/dist/C_Form.js.map +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_Form2.js.map +1 -1
- package/dist/{C_FormSearch-Bmd2CmG6.css.map → C_FormSearch-Bi4XYjjk.css.map} +1 -1
- package/dist/{C_FormSearch-DBNtnjaL.css.map → C_FormSearch-DUGOoX0u.css.map} +1 -1
- package/dist/C_FormSearch.css +45 -45
- package/dist/C_FormSearch.js.map +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormSearch2.js.map +1 -1
- package/dist/{C_FormulaEditor-3WG2vtQl.css.map → C_FormulaEditor-CJk3SSUJ.css.map} +1 -1
- package/dist/{C_FormulaEditor-Cm0CokN5.css.map → C_FormulaEditor-Cy7mjfVO.css.map} +1 -1
- package/dist/C_FormulaEditor.cjs +1 -1
- package/dist/C_FormulaEditor.css +78 -78
- package/dist/C_FormulaEditor.js +1 -1
- package/dist/C_FormulaEditor.js.map +1 -1
- package/dist/C_FormulaEditor2.js +1 -1
- package/dist/C_FormulaEditor2.js.map +1 -1
- package/dist/C_FullCalendar-BQA0OjGB.css.map +1 -0
- package/dist/C_FullCalendar-ChJUosAi.css.map +1 -0
- package/dist/C_FullCalendar.css +3 -3
- package/dist/C_FullCalendar.js.map +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_FullCalendar2.js.map +1 -1
- package/dist/C_GlobalSearch.js.map +1 -1
- package/dist/C_GlobalSearch2.js.map +1 -1
- package/dist/C_Guide.cjs +1 -1
- package/dist/C_Guide.js +1 -1
- package/dist/C_Guide.js.map +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Guide2.js.map +1 -1
- package/dist/C_Icon.js.map +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_Icon2.js.map +1 -1
- package/dist/{C_ImageCropper-D3L2-J_J.css.map → C_ImageCropper-BqZpkZfU.css.map} +1 -1
- package/dist/{C_ImageCropper-DrmUlaLi.css.map → C_ImageCropper-CylwGuzS.css.map} +1 -1
- package/dist/C_ImageCropper.cjs +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper.js +1 -1
- package/dist/C_ImageCropper.js.map +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_ImageCropper2.js.map +1 -1
- package/dist/C_Language.cjs +1 -1
- package/dist/C_Language.js +1 -1
- package/dist/C_Language.js.map +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Language2.js.map +1 -1
- package/dist/{C_Login-Cst_W1XC.css.map → C_Login-BkdnkBKX.css.map} +1 -1
- package/dist/{C_Login-DWZ_6K1x.css.map → C_Login-VkMM6OJ2.css.map} +1 -1
- package/dist/C_Login.cjs +1 -1
- package/dist/C_Login.css +72 -72
- package/dist/C_Login.js +1 -1
- package/dist/C_Login.js.map +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Login2.js.map +1 -1
- package/dist/{C_Map-BCJmDnJT.css.map → C_Map-DNnBcY70.css.map} +1 -1
- package/dist/{C_Map-WUMXSAfy.css.map → C_Map-LEXIx6zM.css.map} +1 -1
- package/dist/C_Map.css +4 -4
- package/dist/C_Map.js.map +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Map2.js.map +1 -1
- package/dist/{C_Markdown-7J0uPEuk.css.map → C_Markdown-DwmI0_0Q.css.map} +1 -1
- package/dist/{C_Markdown-C7Lg0_9z.css.map → C_Markdown-k0794RW0.css.map} +1 -1
- package/dist/C_Markdown.css +33 -33
- package/dist/C_Markdown.js.map +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Markdown2.js.map +1 -1
- package/dist/C_Menu.js.map +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_Menu2.js.map +1 -1
- package/dist/C_NotificationCenter.cjs +1 -1
- package/dist/C_NotificationCenter.js +1 -1
- package/dist/C_NotificationCenter.js.map +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_NotificationCenter2.js.map +1 -1
- package/dist/C_OrgChart.js.map +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_OrgChart2.js.map +1 -1
- package/dist/C_Progress.js.map +1 -1
- package/dist/C_Progress2.js +1 -1
- package/dist/C_Progress2.js.map +1 -1
- package/dist/{C_QRCode-DMxSyogU.css.map → C_QRCode-CFNTda_1.css.map} +1 -1
- package/dist/{C_QRCode-G7fiAkm4.css.map → C_QRCode-CmWr9lK-.css.map} +1 -1
- package/dist/C_QRCode.css +9 -9
- package/dist/C_QRCode.js.map +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_QRCode2.js.map +1 -1
- package/dist/{C_Signature-BJMvVPWT.css.map → C_Signature-BDx4ctsE.css.map} +1 -1
- package/dist/{C_Signature-BJUHx2BF.css.map → C_Signature-Bz_uNbwv.css.map} +1 -1
- package/dist/C_Signature.cjs +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature.js +1 -1
- package/dist/C_Signature.js.map +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Signature2.js.map +1 -1
- package/dist/C_Skeleton.js.map +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_Skeleton2.js.map +1 -1
- package/dist/{C_SplitPane-Br2eK8IG.css.map → C_SplitPane-BOwr1C7K.css.map} +1 -1
- package/dist/{C_SplitPane-DuyzUhKB.css.map → C_SplitPane-N-a_D-7F.css.map} +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +31 -31
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane.js.map +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_SplitPane2.js.map +1 -1
- package/dist/C_Steps-Bk1krgiR.css.map +1 -0
- package/dist/C_Steps-Dn2CMpy1.css.map +1 -0
- package/dist/C_Steps.css +38 -38
- package/dist/C_Steps.js.map +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Steps2.js.map +1 -1
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.js +1 -1
- package/dist/C_Table.js.map +1 -1
- package/dist/C_Table2.js +2 -2
- package/dist/C_Table2.js.map +1 -1
- package/dist/{C_TagsView-BsutyC3U.css.map → C_TagsView-DX3LecK1.css.map} +1 -1
- package/dist/{C_TagsView-Crm7yWg9.css.map → C_TagsView-DqOTa8bL.css.map} +1 -1
- package/dist/C_TagsView.cjs +1 -1
- package/dist/C_TagsView.css +36 -36
- package/dist/C_TagsView.js +1 -1
- package/dist/C_TagsView.js.map +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_TagsView2.js.map +1 -1
- package/dist/C_Theme.cjs +1 -1
- package/dist/C_Theme.js +1 -1
- package/dist/C_Theme.js.map +1 -1
- package/dist/C_Theme2.js +1 -1
- package/dist/C_Theme2.js.map +1 -1
- package/dist/C_Time-BzyQVvTS.css.map +1 -0
- package/dist/C_Time-DmpKLQHc.css.map +1 -0
- package/dist/C_Time.css +5 -5
- package/dist/C_Time.js.map +1 -1
- package/dist/C_Time2.js +1 -1
- package/dist/C_Time2.js.map +1 -1
- package/dist/{C_Timeline-DG70WtJP.css.map → C_Timeline-BKkimrZx.css.map} +1 -1
- package/dist/{C_Timeline-Dzxmmdjg.css.map → C_Timeline-DTuSCX6p.css.map} +1 -1
- package/dist/C_Timeline.cjs +1 -1
- package/dist/C_Timeline.css +45 -45
- package/dist/C_Timeline.js +1 -1
- package/dist/C_Timeline.js.map +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Timeline2.js.map +1 -1
- package/dist/{C_Transfer-CCEqnC-v.css.map → C_Transfer-BOB6OBqS.css.map} +1 -1
- package/dist/{C_Transfer-CStPm4NP.css.map → C_Transfer-Dpq7ezWC.css.map} +1 -1
- package/dist/C_Transfer.cjs +1 -1
- package/dist/C_Transfer.css +31 -31
- package/dist/C_Transfer.js +1 -1
- package/dist/C_Transfer.js.map +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Transfer2.js.map +1 -1
- package/dist/{C_Tree-B-Le4hjQ.css.map → C_Tree-D98nX9qT.css.map} +1 -1
- package/dist/{C_Tree-DnGc_MPb.css.map → C_Tree-ulfm7b-P.css.map} +1 -1
- package/dist/C_Tree.cjs +1 -1
- package/dist/C_Tree.css +33 -33
- package/dist/C_Tree.js +1 -1
- package/dist/C_Tree.js.map +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Tree2.js.map +1 -1
- package/dist/{C_Upload-CFAxVGVz.css.map → C_Upload-BR9fg5r4.css.map} +1 -1
- package/dist/{C_Upload-D8_QeSV0.css.map → C_Upload-CPqf74Ea.css.map} +1 -1
- package/dist/C_Upload.cjs +1 -1
- package/dist/C_Upload.css +4 -4
- package/dist/C_Upload.js +1 -1
- package/dist/C_Upload.js.map +1 -1
- package/dist/C_Upload2.js +2 -2
- package/dist/C_Upload2.js.map +1 -1
- package/dist/{C_VideoPlayer-Cdgv4Zq0.css.map → C_VideoPlayer-4J96tKfK.css.map} +1 -1
- package/dist/{C_VideoPlayer-rm0MODUv.css.map → C_VideoPlayer-D35seHkm.css.map} +1 -1
- package/dist/C_VideoPlayer.css +13 -13
- package/dist/C_VideoPlayer.js.map +1 -1
- package/dist/C_VideoPlayer2.js +3 -3
- package/dist/C_VideoPlayer2.js.map +1 -1
- package/dist/{C_VtableGantt-BpY-Rng3.css.map → C_VtableGantt-C2lxFmWg.css.map} +1 -1
- package/dist/{C_VtableGantt-DB87-jdS.css.map → C_VtableGantt-Dwnkw_WL.css.map} +1 -1
- package/dist/C_VtableGantt.cjs +1 -1
- package/dist/C_VtableGantt.css +15 -15
- package/dist/C_VtableGantt.js +1 -1
- package/dist/C_VtableGantt.js.map +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_VtableGantt2.js.map +1 -1
- package/dist/C_WaterFall.js.map +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WaterFall2.js.map +1 -1
- package/dist/{C_WorkFlow-7F6op6qN.css.map → C_WorkFlow-2hJfvvTK.css.map} +1 -1
- package/dist/{C_WorkFlow-Cy3HWA6A.css.map → C_WorkFlow-DHoNjl8-.css.map} +1 -1
- package/dist/C_WorkFlow.cjs +1 -1
- package/dist/C_WorkFlow.css +108 -108
- package/dist/C_WorkFlow.js +1 -1
- package/dist/C_WorkFlow.js.map +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/C_WorkFlow2.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants2.d.ts +4 -4
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.ts +4 -4
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index10.vue.d.ts +1 -1
- package/dist/index11.vue.d.ts +4 -4
- package/dist/index12.vue.d.ts +1 -1
- package/dist/index13.vue.d.ts +2 -2
- package/dist/index14.vue.d.ts +3 -3
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.ts +2 -2
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.ts +5 -5
- package/dist/index2.vue.d.ts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index24.vue.d.ts +1 -1
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.ts +3 -3
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index4.vue.d.ts +2 -2
- package/dist/index6.vue.d.ts +6 -6
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.ts +1 -1
- package/dist/index9.vue.d.ts +2 -2
- package/dist/menuAdapter.js.map +1 -1
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.js.map +1 -1
- package/dist/style.css +1483 -1483
- package/dist/themes/glass-morphism.css +1 -0
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +1 -1
- package/dist/useCropperCore.d.ts +2 -2
- package/dist/useDraggableLayout.d.ts +4 -4
- package/dist/useDynamicFormState.d.ts +21 -21
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useModalEdit.d.ts +1 -1
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +4 -4
- package/dist/useSplitResize.d.ts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +3 -3
- package/dist/useWorkflowValidation.d.ts +6 -6
- package/package.json +11 -8
- package/dist/C_ActionBar-jZPsiXtT.css.map +0 -1
- package/dist/C_ActionBar-nnfbZCea.css.map +0 -1
- package/dist/C_Code-DPZlNSxL.css.map +0 -1
- package/dist/C_Code-avZjAnHD.css.map +0 -1
- package/dist/C_Editor-C49qURgb.css.map +0 -1
- package/dist/C_Editor-DuxBD9Qg.css.map +0 -1
- package/dist/C_FullCalendar-1U4VlG7X.css.map +0 -1
- package/dist/C_FullCalendar-DLUdCtqf.css.map +0 -1
- package/dist/C_Steps-BHYNJI1l.css.map +0 -1
- package/dist/C_Steps-DY7vl-4I.css.map +0 -1
- package/dist/C_Time-Bd_e1YDN.css.map +0 -1
- package/dist/C_Time-CKb_fwdm.css.map +0 -1
package/dist/C_ActionBar.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* unplugin-vue-components disabled *//* 通用操作按钮组件样式 */
|
|
2
2
|
/* ================= 主容器 ================= */
|
|
3
|
-
.c-action-bar[data-v-
|
|
3
|
+
.c-action-bar[data-v-f5b5f258] {
|
|
4
4
|
display: flex;
|
|
5
5
|
align-items: center;
|
|
6
6
|
justify-content: space-between;
|
|
@@ -11,26 +11,26 @@
|
|
|
11
11
|
border: 1px solid var(--c-border);
|
|
12
12
|
transition: all 0.3s ease;
|
|
13
13
|
}
|
|
14
|
-
.c-action-bar.is-align-left[data-v-
|
|
14
|
+
.c-action-bar.is-align-left[data-v-f5b5f258] {
|
|
15
15
|
justify-content: flex-start;
|
|
16
16
|
}
|
|
17
|
-
.c-action-bar.is-align-center[data-v-
|
|
17
|
+
.c-action-bar.is-align-center[data-v-f5b5f258] {
|
|
18
18
|
justify-content: center;
|
|
19
19
|
}
|
|
20
|
-
.c-action-bar.is-align-right[data-v-
|
|
20
|
+
.c-action-bar.is-align-right[data-v-f5b5f258] {
|
|
21
21
|
justify-content: flex-end;
|
|
22
22
|
}
|
|
23
|
-
.c-action-bar.is-align-space-between[data-v-
|
|
23
|
+
.c-action-bar.is-align-space-between[data-v-f5b5f258] {
|
|
24
24
|
justify-content: space-between;
|
|
25
25
|
}
|
|
26
|
-
.c-action-bar.is-align-space-around[data-v-
|
|
26
|
+
.c-action-bar.is-align-space-around[data-v-f5b5f258] {
|
|
27
27
|
justify-content: space-around;
|
|
28
28
|
}
|
|
29
|
-
.c-action-bar.is-compact[data-v-
|
|
29
|
+
.c-action-bar.is-compact[data-v-f5b5f258] {
|
|
30
30
|
padding: 12px;
|
|
31
31
|
margin-bottom: 12px;
|
|
32
32
|
}
|
|
33
|
-
.c-action-bar.is-inline[data-v-
|
|
33
|
+
.c-action-bar.is-inline[data-v-f5b5f258] {
|
|
34
34
|
padding: 0;
|
|
35
35
|
margin-bottom: 0;
|
|
36
36
|
background: transparent;
|
|
@@ -38,97 +38,97 @@
|
|
|
38
38
|
border-radius: 0;
|
|
39
39
|
box-shadow: none;
|
|
40
40
|
}
|
|
41
|
-
.c-action-bar.is-wrap[data-v-
|
|
41
|
+
.c-action-bar.is-wrap[data-v-f5b5f258] {
|
|
42
42
|
flex-wrap: wrap;
|
|
43
43
|
gap: 12px;
|
|
44
44
|
}
|
|
45
45
|
@media (max-width: 768px) {
|
|
46
|
-
.c-action-bar[data-v-
|
|
46
|
+
.c-action-bar[data-v-f5b5f258] {
|
|
47
47
|
flex-direction: column;
|
|
48
48
|
gap: 12px;
|
|
49
49
|
}
|
|
50
|
-
.c-action-bar .actions-group[data-v-
|
|
50
|
+
.c-action-bar .actions-group[data-v-f5b5f258] {
|
|
51
51
|
width: 100%;
|
|
52
52
|
justify-content: center;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/* ================= 按钮组 ================= */
|
|
57
|
-
.actions-group[data-v-
|
|
57
|
+
.actions-group[data-v-f5b5f258] {
|
|
58
58
|
display: flex;
|
|
59
59
|
align-items: center;
|
|
60
60
|
gap: 12px;
|
|
61
61
|
flex-wrap: nowrap;
|
|
62
62
|
}
|
|
63
|
-
.actions-group.actions-left[data-v-
|
|
63
|
+
.actions-group.actions-left[data-v-f5b5f258] {
|
|
64
64
|
justify-content: flex-start;
|
|
65
65
|
}
|
|
66
|
-
.actions-group.actions-right[data-v-
|
|
66
|
+
.actions-group.actions-right[data-v-f5b5f258] {
|
|
67
67
|
justify-content: flex-end;
|
|
68
68
|
}
|
|
69
|
-
.c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-
|
|
69
|
+
.c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-f5b5f258], .c-action-bar.has-only-right.is-align-center .actions-group.actions-right[data-v-f5b5f258] {
|
|
70
70
|
width: 100%;
|
|
71
71
|
justify-content: center;
|
|
72
72
|
}
|
|
73
|
-
.c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-
|
|
73
|
+
.c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-f5b5f258], .c-action-bar.has-only-right.is-align-space-between .actions-group.actions-right[data-v-f5b5f258] {
|
|
74
74
|
width: 100%;
|
|
75
75
|
justify-content: space-between;
|
|
76
76
|
}
|
|
77
|
-
.c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-
|
|
77
|
+
.c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-f5b5f258], .c-action-bar.has-only-right.is-align-space-around .actions-group.actions-right[data-v-f5b5f258] {
|
|
78
78
|
width: 100%;
|
|
79
79
|
justify-content: space-around;
|
|
80
80
|
}
|
|
81
|
-
.c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-
|
|
81
|
+
.c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-f5b5f258] {
|
|
82
82
|
width: 100%;
|
|
83
83
|
justify-content: flex-end;
|
|
84
84
|
}
|
|
85
|
-
.c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-
|
|
85
|
+
.c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-f5b5f258] {
|
|
86
86
|
width: 100%;
|
|
87
87
|
justify-content: flex-start;
|
|
88
88
|
}
|
|
89
|
-
.actions-group[data-v-
|
|
89
|
+
.actions-group[data-v-f5b5f258] .n-button {
|
|
90
90
|
transition: all 0.3s ease;
|
|
91
91
|
font-weight: 500;
|
|
92
92
|
}
|
|
93
|
-
.actions-group[data-v-
|
|
93
|
+
.actions-group[data-v-f5b5f258] .n-button .n-icon {
|
|
94
94
|
transition: transform 0.3s ease;
|
|
95
95
|
}
|
|
96
|
-
.actions-group[data-v-
|
|
96
|
+
.actions-group[data-v-f5b5f258] .n-button:hover:not(:disabled) {
|
|
97
97
|
transform: translateY(-2px);
|
|
98
98
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
99
99
|
}
|
|
100
|
-
.actions-group[data-v-
|
|
100
|
+
.actions-group[data-v-f5b5f258] .n-button:hover:not(:disabled) .n-icon {
|
|
101
101
|
transform: scale(1.1);
|
|
102
102
|
}
|
|
103
|
-
.actions-group[data-v-
|
|
103
|
+
.actions-group[data-v-f5b5f258] .n-button:active:not(:disabled) {
|
|
104
104
|
transform: translateY(0);
|
|
105
105
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
106
106
|
}
|
|
107
|
-
.actions-group[data-v-
|
|
107
|
+
.actions-group[data-v-f5b5f258] .n-button:disabled {
|
|
108
108
|
cursor: not-allowed;
|
|
109
109
|
opacity: 0.5;
|
|
110
110
|
}
|
|
111
|
-
.actions-group[data-v-
|
|
111
|
+
.actions-group[data-v-f5b5f258] .n-button.n-button--loading {
|
|
112
112
|
pointer-events: none;
|
|
113
113
|
}
|
|
114
|
-
.actions-group[data-v-
|
|
114
|
+
.actions-group[data-v-f5b5f258] .n-button--primary-type:hover:not(:disabled) {
|
|
115
115
|
box-shadow: 0 4px 12px rgba(24, 160, 88, 0.3);
|
|
116
116
|
}
|
|
117
|
-
.actions-group[data-v-
|
|
117
|
+
.actions-group[data-v-f5b5f258] .n-button--info-type:hover:not(:disabled) {
|
|
118
118
|
box-shadow: 0 4px 12px rgba(42, 148, 125, 0.3);
|
|
119
119
|
}
|
|
120
|
-
.actions-group[data-v-
|
|
120
|
+
.actions-group[data-v-f5b5f258] .n-button--success-type:hover:not(:disabled) {
|
|
121
121
|
box-shadow: 0 4px 12px rgba(99, 226, 183, 0.3);
|
|
122
122
|
}
|
|
123
|
-
.actions-group[data-v-
|
|
123
|
+
.actions-group[data-v-f5b5f258] .n-button--warning-type:hover:not(:disabled) {
|
|
124
124
|
box-shadow: 0 4px 12px rgba(240, 138, 0, 0.3);
|
|
125
125
|
}
|
|
126
|
-
.actions-group[data-v-
|
|
126
|
+
.actions-group[data-v-f5b5f258] .n-button--error-type:hover:not(:disabled) {
|
|
127
127
|
box-shadow: 0 4px 12px rgba(208, 48, 80, 0.3);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
/* ================= 中间插槽区域 ================= */
|
|
131
|
-
.actions-center[data-v-
|
|
131
|
+
.actions-center[data-v-f5b5f258] {
|
|
132
132
|
display: flex;
|
|
133
133
|
align-items: center;
|
|
134
134
|
justify-content: center;
|
|
@@ -138,32 +138,32 @@
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
/* ================= 分隔线 ================= */
|
|
141
|
-
.action-divider[data-v-
|
|
141
|
+
.action-divider[data-v-f5b5f258] {
|
|
142
142
|
margin: 0 8px !important;
|
|
143
143
|
height: 20px;
|
|
144
144
|
opacity: 0.3;
|
|
145
145
|
transition: opacity 0.3s ease;
|
|
146
146
|
}
|
|
147
|
-
.action-divider[data-v-
|
|
147
|
+
.action-divider[data-v-f5b5f258]:hover {
|
|
148
148
|
opacity: 0.6;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
/* ================= 下拉菜单优化 ================= */
|
|
152
|
-
[data-v-
|
|
152
|
+
[data-v-f5b5f258] .n-dropdown-option {
|
|
153
153
|
transition: all 0.2s ease;
|
|
154
154
|
}
|
|
155
|
-
[data-v-
|
|
155
|
+
[data-v-f5b5f258] .n-dropdown-option:hover {
|
|
156
156
|
transform: translateX(4px);
|
|
157
157
|
}
|
|
158
|
-
[data-v-
|
|
158
|
+
[data-v-f5b5f258] .n-dropdown-option .n-icon {
|
|
159
159
|
transition: transform 0.2s ease;
|
|
160
160
|
}
|
|
161
|
-
[data-v-
|
|
161
|
+
[data-v-f5b5f258] .n-dropdown-option:hover .n-icon {
|
|
162
162
|
transform: scale(1.15);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
/* ================= 加载动画 ================= */
|
|
166
|
-
@keyframes button-loading-
|
|
166
|
+
@keyframes button-loading-f5b5f258 {
|
|
167
167
|
0% {
|
|
168
168
|
opacity: 0.6;
|
|
169
169
|
}
|
|
@@ -174,12 +174,12 @@
|
|
|
174
174
|
opacity: 0.6;
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
|
-
[data-v-
|
|
178
|
-
animation: button-loading-
|
|
177
|
+
[data-v-f5b5f258] .n-button--loading {
|
|
178
|
+
animation: button-loading-f5b5f258 1.5s ease-in-out infinite;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
/* ================= Tooltip 样式 ================= */
|
|
182
|
-
[data-v-
|
|
182
|
+
[data-v-f5b5f258] .n-tooltip .n-tooltip__content {
|
|
183
183
|
font-size: 12px;
|
|
184
184
|
padding: 6px 10px;
|
|
185
185
|
border-radius: 4px;
|
|
@@ -188,18 +188,18 @@
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
/* ================= 暗黑模式适配 ================= */
|
|
191
|
-
html.dark .c-action-bar[data-v-
|
|
191
|
+
html.dark .c-action-bar[data-v-f5b5f258] {
|
|
192
192
|
border-color: rgba(255, 255, 255, 0.09);
|
|
193
193
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
194
194
|
}
|
|
195
|
-
html.dark .actions-group[data-v-
|
|
195
|
+
html.dark .actions-group[data-v-f5b5f258] .n-button:hover:not(:disabled) {
|
|
196
196
|
box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
|
|
197
197
|
}
|
|
198
|
-
html.dark .action-divider[data-v-
|
|
198
|
+
html.dark .action-divider[data-v-f5b5f258] {
|
|
199
199
|
opacity: 0.15;
|
|
200
200
|
}
|
|
201
|
-
html.dark .action-divider[data-v-
|
|
201
|
+
html.dark .action-divider[data-v-f5b5f258]:hover {
|
|
202
202
|
opacity: 0.4;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
/*# sourceMappingURL=C_ActionBar-
|
|
205
|
+
/*# sourceMappingURL=C_ActionBar-DYG0Yf3A.css.map*/
|
package/dist/C_ActionBar.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{t as e}from"./C_ActionBar2.js";export{e as C_ActionBar};
|
package/dist/C_ActionBar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_ActionBar.js","names":["$slots"],"sources":["../src/components/C_ActionBar/index.vue","../src/components/C_ActionBar/index.vue","../src/components/C_ActionBar/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C_ActionBar.js","names":[],"sources":["../src/components/C_ActionBar/index.vue"],"sourcesContent":["<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-02-14\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-action-bar\"\n :class=\"{\n 'is-compact': finalConfig.compact,\n 'is-inline': finalConfig.inline,\n 'is-wrap': finalConfig.wrap,\n [`is-align-${finalConfig.align}`]: true,\n 'has-only-left':\n leftButtonList.length > 0 &&\n rightButtonList.length === 0 &&\n !$slots.center,\n 'has-only-right':\n rightButtonList.length > 0 &&\n leftButtonList.length === 0 &&\n !$slots.center,\n }\"\n >\n <div\n v-if=\"leftButtonList.length > 0\"\n class=\"actions-group actions-left\"\n :style=\"{ gap: `${finalConfig.gap}px` }\"\n >\n <template\n v-for=\"(action, index) in leftButtonList\"\n :key=\"action.key || `left-${index}`\"\n >\n <ActionButton\n :action=\"action\"\n @click=\"handleActionClick(action)\"\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\n />\n <NDivider\n v-if=\"\n finalConfig.showDivider &&\n index < leftButtonList.length - 1 &&\n finalConfig.dividerType === 'vertical'\n \"\n vertical\n class=\"action-divider\"\n />\n </template>\n </div>\n\n <div v-if=\"$slots.center\" class=\"actions-center\">\n <slot name=\"center\" />\n </div>\n\n <div\n v-if=\"rightButtonList.length > 0\"\n class=\"actions-group actions-right\"\n :style=\"{ gap: `${finalConfig.gap}px` }\"\n >\n <template\n v-for=\"(action, index) in rightButtonList\"\n :key=\"action.key || `right-${index}`\"\n >\n <ActionButton\n :action=\"action\"\n @click=\"handleActionClick(action)\"\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\n />\n <NDivider\n v-if=\"\n finalConfig.showDivider &&\n index < rightButtonList.length - 1 &&\n finalConfig.dividerType === 'vertical'\n \"\n vertical\n class=\"action-divider\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\nimport type {\n ActionItem,\n ActionDropdownItem,\n ActionBarConfig,\n TableActionsProps,\n TableActionsEmits,\n} from \"./types\";\n\ndefineOptions({ name: \"C_ActionBar\" });\n\nconst props = withDefaults(defineProps<TableActionsProps>(), {\n actions: () => [],\n leftActions: () => [],\n rightActions: () => [],\n config: () => ({}),\n});\n\nconst emit = defineEmits<TableActionsEmits>();\n\nconst defaultConfig: Required<ActionBarConfig> = {\n align: \"left\",\n size: \"medium\",\n gap: 8,\n wrap: false,\n showDivider: false,\n dividerType: \"vertical\",\n compact: false,\n inline: true,\n};\n\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\n ...defaultConfig,\n ...props.config,\n}));\n\nconst leftButtonList = computed<ActionItem[]>(() => {\n if (props.leftActions && props.leftActions.length > 0) {\n return props.leftActions.filter((action) => shouldShowAction(action));\n }\n if (props.actions.length > 0) {\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\n const hasRightGroup = props.actions.some(\n (action) => action.group === \"right\",\n );\n if (!hasRightActions && !hasRightGroup) {\n return props.actions.filter((action) => shouldShowAction(action));\n }\n return props.actions.filter(\n (action) => action.group === \"left\" && shouldShowAction(action),\n );\n }\n return [];\n});\n\nconst rightButtonList = computed<ActionItem[]>(() => {\n if (props.rightActions && props.rightActions.length > 0) {\n return props.rightActions.filter((action) => shouldShowAction(action));\n }\n return props.actions.filter(\n (action) => action.group === \"right\" && shouldShowAction(action),\n );\n});\n\nconst shouldShowAction = (action: ActionItem): boolean => {\n if (action.show === undefined) return true;\n return unref(action.show);\n};\n\nconst isActionDisabled = (action: ActionItem): boolean => {\n return unref(action.disabled) || false;\n};\n\nconst isActionLoading = (action: ActionItem): boolean => {\n return unref(action.loading) || false;\n};\n\nconst handleActionClick = async (action: ActionItem) => {\n if (action.dropdown && action.dropdown.length > 0) return;\n emit(\"action-click\", action);\n if (action.onClick) {\n await action.onClick();\n }\n};\n\nconst handleDropdownClick = async (\n item: ActionDropdownItem,\n action: ActionItem,\n) => {\n emit(\"dropdown-click\", item, action);\n if (item.onClick) {\n await item.onClick();\n }\n};\n\nconst ActionButton = defineComponent({\n name: \"ActionButton\",\n props: {\n action: {\n type: Object as PropType<ActionItem>,\n required: true,\n },\n },\n emits: [\"click\", \"dropdown-select\"],\n setup(props, { emit }) {\n const action = computed(() => props.action);\n\n const dropdownOptions = computed(() => {\n if (!action.value.dropdown) return [];\n return action.value.dropdown\n .filter((item) => {\n if (item.show === undefined) return true;\n return unref(item.show);\n })\n .map((item) => ({\n key: item.key,\n label: item.label,\n icon: item.icon\n ? () => h(C_Icon, { name: item.icon, size: 14 })\n : undefined,\n disabled: unref(item.disabled),\n }));\n });\n\n const handleDropdownSelect = (key: string) => {\n const item = action.value.dropdown?.find((d) => d.key === key);\n if (item) {\n emit(\"dropdown-select\", item);\n }\n };\n\n const createButtonVNode = (extraProps?: Record<string, any>) => {\n const button = h(\n NButton,\n {\n type: action.value.type || \"default\",\n size: action.value.size || finalConfig.value.size,\n loading: isActionLoading(action.value),\n disabled: isActionDisabled(action.value),\n ...extraProps,\n ...action.value.buttonProps,\n },\n {\n default: () => action.value.label,\n icon: action.value.icon\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\n : undefined,\n },\n );\n\n return action.value.directives && action.value.directives.length > 0\n ? withDirectives(button, action.value.directives as any)\n : button;\n };\n\n const renderButton = () => {\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\n if (action.value.tooltip) {\n return h(\n NTooltip,\n { placement: \"top\" },\n {\n trigger: () => vnode,\n default: () => action.value.tooltip,\n },\n );\n }\n return vnode;\n };\n\n const renderDropdownButton = () => {\n const vnode = createButtonVNode();\n return h(\n NDropdown,\n {\n options: dropdownOptions.value,\n onSelect: handleDropdownSelect,\n },\n {\n default: () => vnode,\n },\n );\n };\n\n return () => {\n if (action.value.dropdown && action.value.dropdown.length > 0) {\n return renderDropdownButton();\n }\n return renderButton();\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n@use \"./index.scss\";\n</style>\n"],"mappings":"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"}
|
package/dist/C_ActionBar2.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,openBlock as f,renderList as p,renderSlot as m,unref as h,withDirectives as g}from"vue";import{NButton as _,NDivider as v,NDropdown as y,NTooltip as b}from"naive-ui";const x={key:1,class:`actions-center`};var S=t(c({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`],setup(t,{emit:S}){let C=t,w=S,T={align:`left`,size:`medium`,gap:8,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!1,inline:!0},E=r(()=>({...T,...C.config})),D=r(()=>{if(C.leftActions&&C.leftActions.length>0)return C.leftActions.filter(e=>k(e));if(C.actions.length>0){let e=C.rightActions&&C.rightActions.length>0,t=C.actions.some(e=>e.group===`right`);return!e&&!t?C.actions.filter(e=>k(e)):C.actions.filter(e=>e.group===`left`&&k(e))}return[]}),O=r(()=>C.rightActions&&C.rightActions.length>0?C.rightActions.filter(e=>k(e)):C.actions.filter(e=>e.group===`right`&&k(e))),k=e=>e.show===void 0?!0:h(e.show),A=e=>h(e.disabled)||!1,j=e=>h(e.loading)||!1,M=async e=>{e.dropdown&&e.dropdown.length>0||(w(`action-click`,e),e.onClick&&await e.onClick())},N=async(e,t)=>{w(`dropdown-click`,e,t),e.onClick&&await e.onClick()},P=c({name:`ActionButton`,props:{action:{type:Object,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let i=r(()=>t.action),a=r(()=>i.value.dropdown?i.value.dropdown.filter(e=>e.show===void 0?!0:h(e.show)).map(t=>({key:t.key,label:t.label,icon:t.icon?()=>l(e,{name:t.icon,size:14}):void 0,disabled:h(t.disabled)})):[]),o=e=>{let t=i.value.dropdown?.find(t=>t.key===e);t&&n(`dropdown-select`,t)},s=t=>{let n=l(_,{type:i.value.type||`default`,size:i.value.size||E.value.size,loading:j(i.value),disabled:A(i.value),...t,...i.value.buttonProps},{default:()=>i.value.label,icon:i.value.icon?()=>l(e,{name:i.value.icon,size:16}):void 0});return i.value.directives&&i.value.directives.length>0?g(n,i.value.directives):n},c=()=>{let e=s({onClick:()=>n(`click`)});return i.value.tooltip?l(b,{placement:`top`},{trigger:()=>e,default:()=>i.value.tooltip}):e},u=()=>{let e=s();return l(y,{options:a.value,onSelect:o},{default:()=>e})};return()=>i.value.dropdown&&i.value.dropdown.length>0?u():c()}});return(e,t)=>(f(),o(`div`,{class:u([`c-action-bar`,{"is-compact":E.value.compact,"is-inline":E.value.inline,"is-wrap":E.value.wrap,[`is-align-${E.value.align}`]:!0,"has-only-left":D.value.length>0&&O.value.length===0&&!e.$slots.center,"has-only-right":O.value.length>0&&D.value.length===0&&!e.$slots.center}])},[D.value.length>0?(f(),o(`div`,{key:0,class:`actions-group actions-left`,style:d({gap:`${E.value.gap}px`})},[(f(!0),o(n,null,p(D.value,(e,t)=>(f(),o(n,{key:e.key||`left-${t}`},[s(h(P),{action:e,onClick:t=>M(e),onDropdownSelect:t=>N(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),E.value.showDivider&&t<D.value.length-1&&E.value.dividerType===`vertical`?(f(),i(h(v),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0),e.$slots.center?(f(),o(`div`,x,[m(e.$slots,`center`,{},void 0,!0)])):a(`v-if`,!0),O.value.length>0?(f(),o(`div`,{key:2,class:`actions-group actions-right`,style:d({gap:`${E.value.gap}px`})},[(f(!0),o(n,null,p(O.value,(e,t)=>(f(),o(n,{key:e.key||`right-${t}`},[s(h(P),{action:e,onClick:t=>M(e),onDropdownSelect:t=>N(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),E.value.showDivider&&t<O.value.length-1&&E.value.dividerType===`vertical`?(f(),i(h(v),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-f5b5f258`]]);export{S as t};
|
|
2
2
|
//# sourceMappingURL=C_ActionBar2.js.map
|
package/dist/C_ActionBar2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_ActionBar2.js","names":["$slots"],"sources":["../src/components/C_ActionBar/index.vue","../src/components/C_ActionBar/index.vue","../src/components/C_ActionBar/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-02-14\r\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div\r\n class=\"c-action-bar\"\r\n :class=\"{\r\n 'is-compact': finalConfig.compact,\r\n 'is-inline': finalConfig.inline,\r\n 'is-wrap': finalConfig.wrap,\r\n [`is-align-${finalConfig.align}`]: true,\r\n 'has-only-left':\r\n leftButtonList.length > 0 &&\r\n rightButtonList.length === 0 &&\r\n !$slots.center,\r\n 'has-only-right':\r\n rightButtonList.length > 0 &&\r\n leftButtonList.length === 0 &&\r\n !$slots.center,\r\n }\"\r\n >\r\n <div\r\n v-if=\"leftButtonList.length > 0\"\r\n class=\"actions-group actions-left\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in leftButtonList\"\r\n :key=\"action.key || `left-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < leftButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div v-if=\"$slots.center\" class=\"actions-center\">\r\n <slot name=\"center\" />\r\n </div>\r\n\r\n <div\r\n v-if=\"rightButtonList.length > 0\"\r\n class=\"actions-group actions-right\"\r\n :style=\"{ gap: `${finalConfig.gap}px` }\"\r\n >\r\n <template\r\n v-for=\"(action, index) in rightButtonList\"\r\n :key=\"action.key || `right-${index}`\"\r\n >\r\n <ActionButton\r\n :action=\"action\"\r\n @click=\"handleActionClick(action)\"\r\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\r\n />\r\n <NDivider\r\n v-if=\"\r\n finalConfig.showDivider &&\r\n index < rightButtonList.length - 1 &&\r\n finalConfig.dividerType === 'vertical'\r\n \"\r\n vertical\r\n class=\"action-divider\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\nimport type {\r\n ActionItem,\r\n ActionDropdownItem,\r\n ActionBarConfig,\r\n TableActionsProps,\r\n TableActionsEmits,\r\n} from \"./types\";\r\n\r\ndefineOptions({ name: \"C_ActionBar\" });\r\n\r\nconst props = withDefaults(defineProps<TableActionsProps>(), {\r\n actions: () => [],\r\n leftActions: () => [],\r\n rightActions: () => [],\r\n config: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<TableActionsEmits>();\r\n\r\nconst defaultConfig: Required<ActionBarConfig> = {\r\n align: \"left\",\r\n size: \"medium\",\r\n gap: 8,\r\n wrap: false,\r\n showDivider: false,\r\n dividerType: \"vertical\",\r\n compact: false,\r\n inline: true,\r\n};\r\n\r\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\r\n ...defaultConfig,\r\n ...props.config,\r\n}));\r\n\r\nconst leftButtonList = computed<ActionItem[]>(() => {\r\n if (props.leftActions && props.leftActions.length > 0) {\r\n return props.leftActions.filter((action) => shouldShowAction(action));\r\n }\r\n if (props.actions.length > 0) {\r\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\r\n const hasRightGroup = props.actions.some(\r\n (action) => action.group === \"right\",\r\n );\r\n if (!hasRightActions && !hasRightGroup) {\r\n return props.actions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"left\" && shouldShowAction(action),\r\n );\r\n }\r\n return [];\r\n});\r\n\r\nconst rightButtonList = computed<ActionItem[]>(() => {\r\n if (props.rightActions && props.rightActions.length > 0) {\r\n return props.rightActions.filter((action) => shouldShowAction(action));\r\n }\r\n return props.actions.filter(\r\n (action) => action.group === \"right\" && shouldShowAction(action),\r\n );\r\n});\r\n\r\nconst shouldShowAction = (action: ActionItem): boolean => {\r\n if (action.show === undefined) return true;\r\n return unref(action.show);\r\n};\r\n\r\nconst isActionDisabled = (action: ActionItem): boolean => {\r\n return unref(action.disabled) || false;\r\n};\r\n\r\nconst isActionLoading = (action: ActionItem): boolean => {\r\n return unref(action.loading) || false;\r\n};\r\n\r\nconst handleActionClick = async (action: ActionItem) => {\r\n if (action.dropdown && action.dropdown.length > 0) return;\r\n emit(\"action-click\", action);\r\n if (action.onClick) {\r\n await action.onClick();\r\n }\r\n};\r\n\r\nconst handleDropdownClick = async (\r\n item: ActionDropdownItem,\r\n action: ActionItem,\r\n) => {\r\n emit(\"dropdown-click\", item, action);\r\n if (item.onClick) {\r\n await item.onClick();\r\n }\r\n};\r\n\r\nconst ActionButton = defineComponent({\r\n name: \"ActionButton\",\r\n props: {\r\n action: {\r\n type: Object as PropType<ActionItem>,\r\n required: true,\r\n },\r\n },\r\n emits: [\"click\", \"dropdown-select\"],\r\n setup(props, { emit }) {\r\n const action = computed(() => props.action);\r\n\r\n const dropdownOptions = computed(() => {\r\n if (!action.value.dropdown) return [];\r\n return action.value.dropdown\r\n .filter((item) => {\r\n if (item.show === undefined) return true;\r\n return unref(item.show);\r\n })\r\n .map((item) => ({\r\n key: item.key,\r\n label: item.label,\r\n icon: item.icon\r\n ? () => h(C_Icon, { name: item.icon, size: 14 })\r\n : undefined,\r\n disabled: unref(item.disabled),\r\n }));\r\n });\r\n\r\n const handleDropdownSelect = (key: string) => {\r\n const item = action.value.dropdown?.find((d) => d.key === key);\r\n if (item) {\r\n emit(\"dropdown-select\", item);\r\n }\r\n };\r\n\r\n const createButtonVNode = (extraProps?: Record<string, any>) => {\r\n const button = h(\r\n NButton,\r\n {\r\n type: action.value.type || \"default\",\r\n size: action.value.size || finalConfig.value.size,\r\n loading: isActionLoading(action.value),\r\n disabled: isActionDisabled(action.value),\r\n ...extraProps,\r\n ...action.value.buttonProps,\r\n },\r\n {\r\n default: () => action.value.label,\r\n icon: action.value.icon\r\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\r\n : undefined,\r\n },\r\n );\r\n\r\n return action.value.directives && action.value.directives.length > 0\r\n ? withDirectives(button, action.value.directives as any)\r\n : button;\r\n };\r\n\r\n const renderButton = () => {\r\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\r\n if (action.value.tooltip) {\r\n return h(\r\n NTooltip,\r\n { placement: \"top\" },\r\n {\r\n trigger: () => vnode,\r\n default: () => action.value.tooltip,\r\n },\r\n );\r\n }\r\n return vnode;\r\n };\r\n\r\n const renderDropdownButton = () => {\r\n const vnode = createButtonVNode();\r\n return h(\r\n NDropdown,\r\n {\r\n options: dropdownOptions.value,\r\n onSelect: handleDropdownSelect,\r\n },\r\n {\r\n default: () => vnode,\r\n },\r\n );\r\n };\r\n\r\n return () => {\r\n if (action.value.dropdown && action.value.dropdown.length > 0) {\r\n return renderDropdownButton();\r\n }\r\n return renderButton();\r\n };\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@use \"./index.scss\";\r\n</style>\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C_ActionBar2.js","names":[],"sources":["../src/components/C_ActionBar/index.vue"],"sourcesContent":["<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-02-14\n * @Description: 通用操作按钮组件 - 配置化管理任何场景的按钮组\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2026 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-action-bar\"\n :class=\"{\n 'is-compact': finalConfig.compact,\n 'is-inline': finalConfig.inline,\n 'is-wrap': finalConfig.wrap,\n [`is-align-${finalConfig.align}`]: true,\n 'has-only-left':\n leftButtonList.length > 0 &&\n rightButtonList.length === 0 &&\n !$slots.center,\n 'has-only-right':\n rightButtonList.length > 0 &&\n leftButtonList.length === 0 &&\n !$slots.center,\n }\"\n >\n <div\n v-if=\"leftButtonList.length > 0\"\n class=\"actions-group actions-left\"\n :style=\"{ gap: `${finalConfig.gap}px` }\"\n >\n <template\n v-for=\"(action, index) in leftButtonList\"\n :key=\"action.key || `left-${index}`\"\n >\n <ActionButton\n :action=\"action\"\n @click=\"handleActionClick(action)\"\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\n />\n <NDivider\n v-if=\"\n finalConfig.showDivider &&\n index < leftButtonList.length - 1 &&\n finalConfig.dividerType === 'vertical'\n \"\n vertical\n class=\"action-divider\"\n />\n </template>\n </div>\n\n <div v-if=\"$slots.center\" class=\"actions-center\">\n <slot name=\"center\" />\n </div>\n\n <div\n v-if=\"rightButtonList.length > 0\"\n class=\"actions-group actions-right\"\n :style=\"{ gap: `${finalConfig.gap}px` }\"\n >\n <template\n v-for=\"(action, index) in rightButtonList\"\n :key=\"action.key || `right-${index}`\"\n >\n <ActionButton\n :action=\"action\"\n @click=\"handleActionClick(action)\"\n @dropdown-select=\"(item) => handleDropdownClick(item, action)\"\n />\n <NDivider\n v-if=\"\n finalConfig.showDivider &&\n index < rightButtonList.length - 1 &&\n finalConfig.dividerType === 'vertical'\n \"\n vertical\n class=\"action-divider\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, unref, h, withDirectives, defineComponent } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { NButton, NTooltip, NDropdown, NDivider } from \"naive-ui\";\nimport C_Icon from \"../C_Icon/index.vue\";\nimport type {\n ActionItem,\n ActionDropdownItem,\n ActionBarConfig,\n TableActionsProps,\n TableActionsEmits,\n} from \"./types\";\n\ndefineOptions({ name: \"C_ActionBar\" });\n\nconst props = withDefaults(defineProps<TableActionsProps>(), {\n actions: () => [],\n leftActions: () => [],\n rightActions: () => [],\n config: () => ({}),\n});\n\nconst emit = defineEmits<TableActionsEmits>();\n\nconst defaultConfig: Required<ActionBarConfig> = {\n align: \"left\",\n size: \"medium\",\n gap: 8,\n wrap: false,\n showDivider: false,\n dividerType: \"vertical\",\n compact: false,\n inline: true,\n};\n\nconst finalConfig = computed<Required<ActionBarConfig>>(() => ({\n ...defaultConfig,\n ...props.config,\n}));\n\nconst leftButtonList = computed<ActionItem[]>(() => {\n if (props.leftActions && props.leftActions.length > 0) {\n return props.leftActions.filter((action) => shouldShowAction(action));\n }\n if (props.actions.length > 0) {\n const hasRightActions = props.rightActions && props.rightActions.length > 0;\n const hasRightGroup = props.actions.some(\n (action) => action.group === \"right\",\n );\n if (!hasRightActions && !hasRightGroup) {\n return props.actions.filter((action) => shouldShowAction(action));\n }\n return props.actions.filter(\n (action) => action.group === \"left\" && shouldShowAction(action),\n );\n }\n return [];\n});\n\nconst rightButtonList = computed<ActionItem[]>(() => {\n if (props.rightActions && props.rightActions.length > 0) {\n return props.rightActions.filter((action) => shouldShowAction(action));\n }\n return props.actions.filter(\n (action) => action.group === \"right\" && shouldShowAction(action),\n );\n});\n\nconst shouldShowAction = (action: ActionItem): boolean => {\n if (action.show === undefined) return true;\n return unref(action.show);\n};\n\nconst isActionDisabled = (action: ActionItem): boolean => {\n return unref(action.disabled) || false;\n};\n\nconst isActionLoading = (action: ActionItem): boolean => {\n return unref(action.loading) || false;\n};\n\nconst handleActionClick = async (action: ActionItem) => {\n if (action.dropdown && action.dropdown.length > 0) return;\n emit(\"action-click\", action);\n if (action.onClick) {\n await action.onClick();\n }\n};\n\nconst handleDropdownClick = async (\n item: ActionDropdownItem,\n action: ActionItem,\n) => {\n emit(\"dropdown-click\", item, action);\n if (item.onClick) {\n await item.onClick();\n }\n};\n\nconst ActionButton = defineComponent({\n name: \"ActionButton\",\n props: {\n action: {\n type: Object as PropType<ActionItem>,\n required: true,\n },\n },\n emits: [\"click\", \"dropdown-select\"],\n setup(props, { emit }) {\n const action = computed(() => props.action);\n\n const dropdownOptions = computed(() => {\n if (!action.value.dropdown) return [];\n return action.value.dropdown\n .filter((item) => {\n if (item.show === undefined) return true;\n return unref(item.show);\n })\n .map((item) => ({\n key: item.key,\n label: item.label,\n icon: item.icon\n ? () => h(C_Icon, { name: item.icon, size: 14 })\n : undefined,\n disabled: unref(item.disabled),\n }));\n });\n\n const handleDropdownSelect = (key: string) => {\n const item = action.value.dropdown?.find((d) => d.key === key);\n if (item) {\n emit(\"dropdown-select\", item);\n }\n };\n\n const createButtonVNode = (extraProps?: Record<string, any>) => {\n const button = h(\n NButton,\n {\n type: action.value.type || \"default\",\n size: action.value.size || finalConfig.value.size,\n loading: isActionLoading(action.value),\n disabled: isActionDisabled(action.value),\n ...extraProps,\n ...action.value.buttonProps,\n },\n {\n default: () => action.value.label,\n icon: action.value.icon\n ? () => h(C_Icon, { name: action.value.icon, size: 16 })\n : undefined,\n },\n );\n\n return action.value.directives && action.value.directives.length > 0\n ? withDirectives(button, action.value.directives as any)\n : button;\n };\n\n const renderButton = () => {\n const vnode = createButtonVNode({ onClick: () => emit(\"click\") });\n if (action.value.tooltip) {\n return h(\n NTooltip,\n { placement: \"top\" },\n {\n trigger: () => vnode,\n default: () => action.value.tooltip,\n },\n );\n }\n return vnode;\n };\n\n const renderDropdownButton = () => {\n const vnode = createButtonVNode();\n return h(\n NDropdown,\n {\n options: dropdownOptions.value,\n onSelect: handleDropdownSelect,\n },\n {\n default: () => vnode,\n },\n );\n };\n\n return () => {\n if (action.value.dropdown && action.value.dropdown.length > 0) {\n return renderDropdownButton();\n }\n return renderButton();\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n@use \"./index.scss\";\n</style>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_AntV-A3NXx_sF.css","names":[],"sources":["../src/components/C_AntV/layout/ER/index.vue?vue&type=style&index=0&scoped=beb83641&lang.scss","../src/components/C_AntV/layout/BPMN/index.vue?vue&type=style&index=0&scoped=c27dede7&lang.scss","../src/components/C_AntV/layout/UML/components/UMLClassEditor.vue?vue&type=style&index=0&scoped=e47033f6&lang.scss","../src/components/C_AntV/layout/UML/index.vue?vue&type=style&index=0&scoped=1092fbdb&lang.scss","../src/components/C_AntV/index.vue?vue&type=style&index=0&scoped=f1ab77ea&lang.css"],"sourcesContent":["/* unplugin-vue-components disabled *//* ER 图布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.er-layout[data-v-beb83641] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n}\n.er-layout .toolbar[data-v-beb83641] {\n padding: 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n flex-shrink: 0;\n}\n.er-layout .graph-container[data-v-beb83641] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n}\n.er-layout .graph-container[data-v-beb83641] .x6-graph,\n.er-layout .graph-container[data-v-beb83641] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.er-layout .graph-container[data-v-beb83641] .x6-graph-svg-stage {\n outline: none;\n}\n.er-layout .table-editor[data-v-beb83641] {\n height: 100%;\n overflow-y: auto;\n padding: 0 4px;\n}\n.er-layout .table-editor[data-v-beb83641]::-webkit-scrollbar {\n width: 6px;\n}\n.er-layout .table-editor[data-v-beb83641]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641] {\n max-height: calc(100vh - 400px);\n overflow-y: auto;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641]::-webkit-scrollbar {\n width: 6px;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-beb83641] {\n margin-bottom: 16px;\n}\n.er-layout .table-editor .fields-container .field-card .field-header[data-v-beb83641] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 13px;\n font-weight: 500;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-beb83641] .n-card-header {\n padding: 10px 16px 8px;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-beb83641] .n-card__content {\n padding: 12px 16px 16px;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641] .n-select {\n min-width: 140px;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641] .n-select .n-select-menu {\n max-height: 200px;\n z-index: 9999;\n}\n.er-layout .table-editor .fields-container .n-form-item[data-v-beb83641] {\n margin-bottom: 8px;\n}\n.er-layout .table-editor .fields-container .n-form-item .n-form-item-label[data-v-beb83641] {\n font-size: 12px;\n color: #666;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.er-layout .table-editor .fields-container[data-v-beb83641] .n-input {\n min-width: 100px;\n}","/* unplugin-vue-components disabled *//* BPMN 布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.bpmn-layout[data-v-c27dede7] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background: var(--n-color-embedded);\n border-radius: 6px;\n overflow: hidden;\n}\n.bpmn-layout .top-toolbar[data-v-c27dede7] {\n background: var(--c-bg-card);\n border-bottom: 1px solid var(--c-border);\n padding: 10px 16px;\n flex-shrink: 0;\n}\n.bpmn-layout .top-toolbar .toolbar-section[data-v-c27dede7] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n.bpmn-layout .top-toolbar .toolbar-section .toolbar-group[data-v-c27dede7] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bpmn-layout .main-content[data-v-c27dede7] {\n display: flex;\n flex: 1;\n height: 0;\n}\n.bpmn-layout .main-content .left-panel[data-v-c27dede7] {\n width: 180px;\n background: var(--c-bg-card);\n border-right: 1px solid var(--c-border);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n}\n.bpmn-layout .main-content .left-panel .panel-title[data-v-c27dede7] {\n padding: 16px;\n font-weight: 600;\n font-size: 14px;\n color: var(--c-text-1);\n border-bottom: 1px solid var(--c-border);\n}\n.bpmn-layout .main-content .left-panel .element-grid[data-v-c27dede7] {\n padding: 16px 12px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item[data-v-c27dede7] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px 8px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--c-text-2);\n transition: all 0.2s ease;\n border: 1px solid transparent;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item[data-v-c27dede7]:hover {\n background: rgba(24, 144, 255, 0.1);\n border-color: rgba(24, 144, 255, 0.4);\n color: var(--c-primary);\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon[data-v-c27dede7] {\n flex-shrink: 0;\n border: 2px solid var(--c-border);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.circle[data-v-c27dede7] {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.rect[data-v-c27dede7] {\n width: 32px;\n height: 20px;\n border-radius: 4px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.diamond[data-v-c27dede7] {\n width: 24px;\n height: 24px;\n transform: rotate(45deg);\n border-radius: 3px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.start-event[data-v-c27dede7] {\n border-color: #52c41a;\n background: #f6ffed;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.end-event[data-v-c27dede7] {\n border-color: #ff4d4f;\n background: #fff2f0;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.activity[data-v-c27dede7] {\n border-color: #1890ff;\n background: #e6f7ff;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.gateway[data-v-c27dede7] {\n border-color: #722ed1;\n background: #f9f0ff;\n}\n.bpmn-layout .main-content .graph-wrapper[data-v-c27dede7] {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-c27dede7] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n border-radius: 4px;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-c27dede7] .x6-graph,\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-c27dede7] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-c27dede7] .x6-graph-svg-stage {\n outline: none;\n}\n.n-drawer .property-panel[data-v-c27dede7] {\n padding: 16px;\n}\n.n-drawer .property-panel .property-item[data-v-c27dede7] {\n margin-bottom: 16px;\n}\n.n-drawer .property-panel .property-item .property-label[data-v-c27dede7] {\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n margin-bottom: 8px;\n}\n.n-drawer .property-panel .form-actions[data-v-c27dede7] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--c-border);\n}","/* unplugin-vue-components disabled */.class-editor[data-v-e47033f6] {\n padding: 20px;\n height: calc(100vh - 60px);\n overflow-y: auto;\n}\n.section[data-v-e47033f6] {\n max-height: 300px;\n overflow-y: auto;\n padding-right: 4px;\n}\n.section[data-v-e47033f6]::-webkit-scrollbar {\n width: 6px;\n}\n.section[data-v-e47033f6]::-webkit-scrollbar-thumb {\n background: #d4d4d4;\n border-radius: 3px;\n}\n.section-header[data-v-e47033f6] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.item[data-v-e47033f6] {\n margin-bottom: 8px;\n}\n.section .n-card[data-v-e47033f6] {\n border: 1px solid #e8e8e8;\n}\n.section .n-card-header[data-v-e47033f6] {\n padding: 8px 12px;\n background: #fafafa;\n border-bottom: 1px solid #e8e8e8;\n}\n.section .n-card__content[data-v-e47033f6] {\n padding: 12px;\n}\n.section .n-form-item[data-v-e47033f6] {\n margin-bottom: 0;\n}\n.section .n-form-item-label[data-v-e47033f6] {\n font-size: 12px;\n margin-bottom: 4px;\n color: #666;\n}","/* unplugin-vue-components disabled *//* UML 类图布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.uml-layout[data-v-1092fbdb] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n}\n.uml-layout .toolbar[data-v-1092fbdb] {\n padding: 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n flex-shrink: 0;\n}\n.uml-layout .graph-container[data-v-1092fbdb] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n}\n.uml-layout .graph-container[data-v-1092fbdb] .x6-graph,\n.uml-layout .graph-container[data-v-1092fbdb] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.uml-layout .graph-container[data-v-1092fbdb] .x6-graph-svg-stage {\n outline: none;\n}\n\n/* 抽屉编辑器样式 - 使用单独的样式块避免 scoped 问题 */\n.class-editor[data-v-1092fbdb] {\n padding: 20px;\n height: calc(100vh - 60px);\n overflow-y: auto;\n}\n.class-editor[data-v-1092fbdb]::-webkit-scrollbar {\n width: 6px;\n}\n.class-editor[data-v-1092fbdb]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.class-editor .section[data-v-1092fbdb] {\n max-height: 300px;\n overflow-y: auto;\n padding-right: 4px;\n}\n.class-editor .section[data-v-1092fbdb]::-webkit-scrollbar {\n width: 6px;\n}\n.class-editor .section[data-v-1092fbdb]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.class-editor .section .item[data-v-1092fbdb] {\n margin-bottom: 8px;\n}\n.class-editor .section .n-card[data-v-1092fbdb] {\n border: 1px solid var(--c-border);\n}\n.class-editor .section .n-card .n-card-header[data-v-1092fbdb] {\n padding: 8px 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n}\n.class-editor .section .n-card .n-card__content[data-v-1092fbdb] {\n padding: 12px;\n}\n.class-editor .section .n-form-item[data-v-1092fbdb] {\n margin-bottom: 8px;\n}\n.class-editor .section .n-form-item .n-form-item-label[data-v-1092fbdb] {\n font-size: 12px;\n color: #666;\n margin-bottom: 4px;\n white-space: nowrap;\n}","/* unplugin-vue-components disabled */\n.c-antv-container[data-v-f1ab77ea] {\r\n width: 100%;\r\n height: 100%;\n}\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxFA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"C_AntV-BY8jqqmi.css","names":[],"sources":["../src/components/C_AntV/layout/ER/index.vue?vue&type=style&index=0&scoped=b168f2c7&lang.scss","../src/components/C_AntV/layout/BPMN/index.vue?vue&type=style&index=0&scoped=1fa85b2c&lang.scss","../src/components/C_AntV/layout/UML/components/UMLClassEditor.vue?vue&type=style&index=0&scoped=ea96ef84&lang.scss","../src/components/C_AntV/layout/UML/index.vue?vue&type=style&index=0&scoped=fcc8adc9&lang.scss","../src/components/C_AntV/index.vue?vue&type=style&index=0&scoped=f1ab77ea&lang.css"],"sourcesContent":["/* unplugin-vue-components disabled *//* ER 图布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.er-layout[data-v-b168f2c7] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n}\n.er-layout .toolbar[data-v-b168f2c7] {\n padding: 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n flex-shrink: 0;\n}\n.er-layout .graph-container[data-v-b168f2c7] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n}\n.er-layout .graph-container[data-v-b168f2c7] .x6-graph,\n.er-layout .graph-container[data-v-b168f2c7] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.er-layout .graph-container[data-v-b168f2c7] .x6-graph-svg-stage {\n outline: none;\n}\n.er-layout .table-editor[data-v-b168f2c7] {\n height: 100%;\n overflow-y: auto;\n padding: 0 4px;\n}\n.er-layout .table-editor[data-v-b168f2c7]::-webkit-scrollbar {\n width: 6px;\n}\n.er-layout .table-editor[data-v-b168f2c7]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7] {\n max-height: calc(100vh - 400px);\n overflow-y: auto;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7]::-webkit-scrollbar {\n width: 6px;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-b168f2c7] {\n margin-bottom: 16px;\n}\n.er-layout .table-editor .fields-container .field-card .field-header[data-v-b168f2c7] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 13px;\n font-weight: 500;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-b168f2c7] .n-card-header {\n padding: 10px 16px 8px;\n}\n.er-layout .table-editor .fields-container .field-card[data-v-b168f2c7] .n-card__content {\n padding: 12px 16px 16px;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7] .n-select {\n min-width: 140px;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7] .n-select .n-select-menu {\n max-height: 200px;\n z-index: 9999;\n}\n.er-layout .table-editor .fields-container .n-form-item[data-v-b168f2c7] {\n margin-bottom: 8px;\n}\n.er-layout .table-editor .fields-container .n-form-item .n-form-item-label[data-v-b168f2c7] {\n font-size: 12px;\n color: #666;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.er-layout .table-editor .fields-container[data-v-b168f2c7] .n-input {\n min-width: 100px;\n}","/* unplugin-vue-components disabled *//* BPMN 布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.bpmn-layout[data-v-1fa85b2c] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background: var(--n-color-embedded);\n border-radius: 6px;\n overflow: hidden;\n}\n.bpmn-layout .top-toolbar[data-v-1fa85b2c] {\n background: var(--c-bg-card);\n border-bottom: 1px solid var(--c-border);\n padding: 10px 16px;\n flex-shrink: 0;\n}\n.bpmn-layout .top-toolbar .toolbar-section[data-v-1fa85b2c] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n.bpmn-layout .top-toolbar .toolbar-section .toolbar-group[data-v-1fa85b2c] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bpmn-layout .main-content[data-v-1fa85b2c] {\n display: flex;\n flex: 1;\n height: 0;\n}\n.bpmn-layout .main-content .left-panel[data-v-1fa85b2c] {\n width: 180px;\n background: var(--c-bg-card);\n border-right: 1px solid var(--c-border);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n}\n.bpmn-layout .main-content .left-panel .panel-title[data-v-1fa85b2c] {\n padding: 16px;\n font-weight: 600;\n font-size: 14px;\n color: var(--c-text-1);\n border-bottom: 1px solid var(--c-border);\n}\n.bpmn-layout .main-content .left-panel .element-grid[data-v-1fa85b2c] {\n padding: 16px 12px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item[data-v-1fa85b2c] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px 8px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--c-text-2);\n transition: all 0.2s ease;\n border: 1px solid transparent;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item[data-v-1fa85b2c]:hover {\n background: rgba(24, 144, 255, 0.1);\n border-color: rgba(24, 144, 255, 0.4);\n color: var(--c-primary);\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon[data-v-1fa85b2c] {\n flex-shrink: 0;\n border: 2px solid var(--c-border);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.circle[data-v-1fa85b2c] {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.rect[data-v-1fa85b2c] {\n width: 32px;\n height: 20px;\n border-radius: 4px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.diamond[data-v-1fa85b2c] {\n width: 24px;\n height: 24px;\n transform: rotate(45deg);\n border-radius: 3px;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.start-event[data-v-1fa85b2c] {\n border-color: #52c41a;\n background: #f6ffed;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.end-event[data-v-1fa85b2c] {\n border-color: #ff4d4f;\n background: #fff2f0;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.activity[data-v-1fa85b2c] {\n border-color: #1890ff;\n background: #e6f7ff;\n}\n.bpmn-layout .main-content .left-panel .element-grid .element-item .element-icon.gateway[data-v-1fa85b2c] {\n border-color: #722ed1;\n background: #f9f0ff;\n}\n.bpmn-layout .main-content .graph-wrapper[data-v-1fa85b2c] {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-1fa85b2c] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n border-radius: 4px;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-1fa85b2c] .x6-graph,\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-1fa85b2c] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.bpmn-layout .main-content .graph-wrapper .graph-container[data-v-1fa85b2c] .x6-graph-svg-stage {\n outline: none;\n}\n.n-drawer .property-panel[data-v-1fa85b2c] {\n padding: 16px;\n}\n.n-drawer .property-panel .property-item[data-v-1fa85b2c] {\n margin-bottom: 16px;\n}\n.n-drawer .property-panel .property-item .property-label[data-v-1fa85b2c] {\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n margin-bottom: 8px;\n}\n.n-drawer .property-panel .form-actions[data-v-1fa85b2c] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--c-border);\n}","/* unplugin-vue-components disabled */.class-editor[data-v-ea96ef84] {\n padding: 20px;\n height: calc(100vh - 60px);\n overflow-y: auto;\n}\n.section[data-v-ea96ef84] {\n max-height: 300px;\n overflow-y: auto;\n padding-right: 4px;\n}\n.section[data-v-ea96ef84]::-webkit-scrollbar {\n width: 6px;\n}\n.section[data-v-ea96ef84]::-webkit-scrollbar-thumb {\n background: #d4d4d4;\n border-radius: 3px;\n}\n.section-header[data-v-ea96ef84] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.item[data-v-ea96ef84] {\n margin-bottom: 8px;\n}\n.section .n-card[data-v-ea96ef84] {\n border: 1px solid #e8e8e8;\n}\n.section .n-card-header[data-v-ea96ef84] {\n padding: 8px 12px;\n background: #fafafa;\n border-bottom: 1px solid #e8e8e8;\n}\n.section .n-card__content[data-v-ea96ef84] {\n padding: 12px;\n}\n.section .n-form-item[data-v-ea96ef84] {\n margin-bottom: 0;\n}\n.section .n-form-item-label[data-v-ea96ef84] {\n font-size: 12px;\n margin-bottom: 4px;\n color: #666;\n}","/* unplugin-vue-components disabled *//* UML 类图布局样式 */\n/* AntV X6 图形编辑器公共样式 */\n/* 用于 ER、UML、BPMN 等布局的共享样式 */\n/* 通用布局容器 */\n/* 工具栏样式 */\n/* 图形容器样式 */\n/* 表单项样式 */\n/* 卡片样式 */\n/* 滚动条样式 */\n/* 编辑器容器样式 */\n.uml-layout[data-v-fcc8adc9] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 400px;\n}\n.uml-layout .toolbar[data-v-fcc8adc9] {\n padding: 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n flex-shrink: 0;\n}\n.uml-layout .graph-container[data-v-fcc8adc9] {\n flex: 1;\n position: relative;\n min-height: 300px;\n width: 100%;\n border: 1px solid var(--c-border);\n overflow: hidden;\n}\n.uml-layout .graph-container[data-v-fcc8adc9] .x6-graph,\n.uml-layout .graph-container[data-v-fcc8adc9] .x6-graph-svg {\n width: 100% !important;\n height: 100% !important;\n display: block;\n}\n.uml-layout .graph-container[data-v-fcc8adc9] .x6-graph-svg-stage {\n outline: none;\n}\n\n/* 抽屉编辑器样式 - 使用单独的样式块避免 scoped 问题 */\n.class-editor[data-v-fcc8adc9] {\n padding: 20px;\n height: calc(100vh - 60px);\n overflow-y: auto;\n}\n.class-editor[data-v-fcc8adc9]::-webkit-scrollbar {\n width: 6px;\n}\n.class-editor[data-v-fcc8adc9]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.class-editor .section[data-v-fcc8adc9] {\n max-height: 300px;\n overflow-y: auto;\n padding-right: 4px;\n}\n.class-editor .section[data-v-fcc8adc9]::-webkit-scrollbar {\n width: 6px;\n}\n.class-editor .section[data-v-fcc8adc9]::-webkit-scrollbar-thumb {\n background: var(--n-scrollbar-color);\n border-radius: 3px;\n}\n.class-editor .section .item[data-v-fcc8adc9] {\n margin-bottom: 8px;\n}\n.class-editor .section .n-card[data-v-fcc8adc9] {\n border: 1px solid var(--c-border);\n}\n.class-editor .section .n-card .n-card-header[data-v-fcc8adc9] {\n padding: 8px 12px;\n background: var(--n-color-embedded);\n border-bottom: 1px solid var(--c-border);\n}\n.class-editor .section .n-card .n-card__content[data-v-fcc8adc9] {\n padding: 12px;\n}\n.class-editor .section .n-form-item[data-v-fcc8adc9] {\n margin-bottom: 8px;\n}\n.class-editor .section .n-form-item .n-form-item-label[data-v-fcc8adc9] {\n font-size: 12px;\n color: #666;\n margin-bottom: 4px;\n white-space: nowrap;\n}","/* unplugin-vue-components disabled */\n.c-antv-container[data-v-f1ab77ea] {\r\n width: 100%;\r\n height: 100%;\n}\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxFA;AACA;AACA;AACA;AACA"}
|