@robot-admin/naive-ui-components 0.8.0 → 0.8.2
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/CHANGELOG.md +1 -1
- package/README.md +279 -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/constants2.d.ts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index11.vue.d.ts +5 -5
- package/dist/index12.vue.d.ts +4 -4
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.ts +1 -1
- package/dist/index15.vue.d.ts +5 -5
- package/dist/index18.vue.d.ts +3 -3
- package/dist/index2.vue.d.ts +6 -6
- package/dist/index20.vue.d.ts +2 -2
- package/dist/index21.vue.d.ts +1 -1
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index27.vue.d.ts +3 -3
- package/dist/index28.vue.d.ts +2 -2
- package/dist/index3.vue.d.ts +1 -1
- package/dist/index4.vue.d.ts +4 -4
- package/dist/index6.vue.d.ts +1 -1
- package/dist/index8.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/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.ts +5 -5
- package/dist/useDynamicFormState.d.ts +17 -17
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.ts +3 -3
- package/dist/useModalEdit.d.ts +6 -6
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +3 -3
- package/dist/useSplitResize.d.ts +5 -5
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +1 -1
- package/dist/useWorkflowValidation.d.ts +3 -3
- package/package.json +5 -5
- 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_ContextMenu2.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,Teleport as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createVNode as l,defineComponent as u,nextTick as d,normalizeClass as f,normalizeStyle as p,openBlock as m,ref as h,renderList as g,
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,Teleport as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createVNode as l,defineComponent as u,nextTick as d,normalizeClass as f,normalizeStyle as p,openBlock as m,ref as h,renderList as g,resolveComponent as _,toDisplayString as v,withKeys as y,withModifiers as b}from"vue";const x={minWidth:180,maxWidth:280,subMenuPlacement:`right`,autoClose:!0,disabled:!1,zIndex:9999},S={key:0,class:`c-context-menu__divider`,role:`separator`},C=[`aria-disabled`,`onClick`,`onMouseenter`],w={key:0,class:`c-context-menu__icon`},T={class:`c-context-menu__label`},E={key:1,class:`c-context-menu__shortcut`},D={key:2,class:`c-context-menu__arrow`};var O=t(u({name:`C_ContextMenu`,__name:`index`,props:{items:{default:()=>[]},minWidth:{default:x.minWidth},maxWidth:{default:x.maxWidth},subMenuPlacement:{default:x.subMenuPlacement},autoClose:{type:Boolean,default:x.autoClose},disabled:{type:Boolean,default:x.disabled},zIndex:{default:x.zIndex}},emits:[`select`,`open`,`close`],setup(t,{expose:u,emit:x}){let O=t,k=x,A=h(!1),j=h({x:0,y:0}),M=h(),N=h(null),P=null,F=i(()=>O.items.filter(e=>!e.hidden)),I=i(()=>({left:`${j.value.x}px`,top:`${j.value.y}px`,minWidth:`${O.minWidth}px`,maxWidth:`${O.maxWidth}px`,zIndex:O.zIndex})),L=()=>{d(()=>{let e=M.value;if(!e)return;let t=e.getBoundingClientRect(),{innerWidth:n,innerHeight:r}=window;t.right>n&&(j.value.x=n-t.width-8),t.bottom>r&&(j.value.y=r-t.height-8),j.value.x<0&&(j.value.x=8),j.value.y<0&&(j.value.y=8)})},R=(e,t)=>{O.disabled||(j.value={x:e,y:t},A.value=!0,k(`open`,{x:e,y:t}),L(),d(()=>M.value?.focus()))},z=()=>{A.value=!1,N.value=null,k(`close`)},B=e=>{e.disabled||e.children?.length||(k(`select`,e),O.autoClose&&z())},V=e=>{P&&=(clearTimeout(P),null),e.children?.length&&!e.disabled?P=setTimeout(()=>{N.value=e.key},150):N.value=null},H=()=>{P&&=(clearTimeout(P),null),P=setTimeout(()=>{N.value=null},300)},U=e=>{k(`select`,e),O.autoClose&&z()};return u({open:R,close:z,visible:i(()=>A.value)}),(t,i)=>{let u=_(`C_ContextMenu`);return m(),s(n,null,[o(` 遮罩层 `),(m(),a(r,{to:`body`},[A.value?(m(),s(`div`,{key:0,class:`c-context-menu-overlay`,style:p({zIndex:O.zIndex-1}),onClick:z,onContextmenu:b(z,[`prevent`])},null,36)):o(`v-if`,!0),o(` 菜单面板 `),A.value?(m(),s(`div`,{key:1,ref_key:`menuRef`,ref:M,class:`c-context-menu`,style:p(I.value),role:`menu`,tabindex:`-1`,onKeydown:y(z,[`escape`])},[(m(!0),s(n,null,g(F.value,t=>(m(),s(n,{key:t.key},[o(` 分割线 `),t.divider?(m(),s(`div`,S)):(m(),s(n,{key:1},[o(` 普通菜单项 `),c(`div`,{class:f([`c-context-menu__item`,{"is-disabled":t.disabled,"is-danger":t.danger}]),role:`menuitem`,"aria-disabled":t.disabled,onClick:e=>B(t),onMouseenter:e=>V(t),onMouseleave:H},[o(` 图标 `),t.icon?(m(),s(`span`,w,[l(e,{name:t.icon},null,8,[`name`])])):o(`v-if`,!0),o(` 文本 `),c(`span`,T,v(t.label),1),o(` 快捷键 `),t.shortcut?(m(),s(`span`,E,v(t.shortcut),1)):o(`v-if`,!0),o(` 子菜单箭头 `),t.children?.length?(m(),s(`span`,D,[l(e,{name:`mdi:chevron-right`})])):o(`v-if`,!0),o(` 子菜单(递归) `),t.children?.length&&N.value===t.key?(m(),a(u,{key:3,items:t.children,"min-width":O.minWidth,"max-width":O.maxWidth,"sub-menu-placement":O.subMenuPlacement,"auto-close":O.autoClose,"z-index":O.zIndex+1,class:f([`c-context-menu__submenu`,`is-${O.subMenuPlacement}`]),style:{position:`absolute`},onSelect:U},null,8,[`items`,`min-width`,`max-width`,`sub-menu-placement`,`auto-close`,`z-index`,`class`])):o(`v-if`,!0)],42,C)],2112))],64))),128))],36)):o(`v-if`,!0)]))],2112)}}}),[[`__scopeId`,`data-v-cdd4d8bb`]]);export{x as n,O as t};
|
|
2
2
|
//# sourceMappingURL=C_ContextMenu2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_ContextMenu2.js","names":[],"sources":["../src/components/C_ContextMenu/types.ts","../src/components/C_ContextMenu/index.vue","../src/components/C_ContextMenu/index.vue","../src/components/C_ContextMenu/index.vue"],"sourcesContent":["/**\r\n * @Description: 右键菜单组件类型定义\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n */\r\n\r\n/** 菜单项 */\r\nexport interface ContextMenuItem {\r\n /** 唯一标识 */\r\n key: string\r\n /** 菜单文字 */\r\n label: string\r\n /** 图标(Iconify 图标名) */\r\n icon?: string\r\n /** 快捷键标注文字(仅展示,不绑定) */\r\n shortcut?: string\r\n /** 是否禁用 */\r\n disabled?: boolean\r\n /** 是否隐藏 */\r\n hidden?: boolean\r\n /** 分割线(此项渲染为分割线,label 被忽略) */\r\n divider?: boolean\r\n /** 子菜单(支持无限嵌套) */\r\n children?: ContextMenuItem[]\r\n /** 自定义样式类 */\r\n className?: string\r\n /** 危险操作(红色高亮) */\r\n danger?: boolean\r\n}\r\n\r\n/** 组件 Props */\r\nexport interface ContextMenuProps {\r\n /** 菜单项列表 */\r\n items: ContextMenuItem[]\r\n /** 菜单最小宽度 */\r\n minWidth?: number\r\n /** 菜单最大宽度 */\r\n maxWidth?: number\r\n /** 子菜单展开方向 */\r\n subMenuPlacement?: 'right' | 'left'\r\n /** 点击菜单项后是否自动关闭 */\r\n autoClose?: boolean\r\n /** 是否禁用整个菜单 */\r\n disabled?: boolean\r\n /** 自定义 z-index */\r\n zIndex?: number\r\n}\r\n\r\n/** 默认 Props */\r\nexport const DEFAULT_CONTEXT_MENU_PROPS = {\r\n minWidth: 180,\r\n maxWidth: 280,\r\n subMenuPlacement: 'right' as const,\r\n autoClose: true,\r\n disabled: false,\r\n zIndex: 9999,\r\n}\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Description: 右键菜单组件 — 声明式配置、快捷键标注、嵌套子菜单\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <!-- 遮罩层 -->\r\n <Teleport to=\"body\">\r\n <div\r\n v-if=\"visible\"\r\n class=\"c-context-menu-overlay\"\r\n :style=\"{ zIndex: props.zIndex - 1 }\"\r\n @click=\"close\"\r\n @contextmenu.prevent=\"close\"\r\n />\r\n\r\n <!-- 菜单面板 -->\r\n <div\r\n v-if=\"visible\"\r\n ref=\"menuRef\"\r\n class=\"c-context-menu\"\r\n :style=\"menuStyle\"\r\n role=\"menu\"\r\n tabindex=\"-1\"\r\n @keydown.escape=\"close\"\r\n >\r\n <template\r\n v-for=\"item in visibleItems\"\r\n :key=\"item.key\"\r\n >\r\n <!-- 分割线 -->\r\n <div\r\n v-if=\"item.divider\"\r\n class=\"c-context-menu__divider\"\r\n role=\"separator\"\r\n />\r\n\r\n <!-- 普通菜单项 -->\r\n <div\r\n v-else\r\n :class=\"[\r\n 'c-context-menu__item',\r\n {\r\n 'is-disabled': item.disabled,\r\n 'is-danger': item.danger,\r\n },\r\n ]\"\r\n role=\"menuitem\"\r\n :aria-disabled=\"item.disabled\"\r\n @click=\"handleItemClick(item)\"\r\n @mouseenter=\"handleMouseEnter(item)\"\r\n @mouseleave=\"handleMouseLeave\"\r\n >\r\n <!-- 图标 -->\r\n <span\r\n v-if=\"item.icon\"\r\n class=\"c-context-menu__icon\"\r\n >\r\n <C_Icon :name=\"item.icon\" />\r\n </span>\r\n\r\n <!-- 文本 -->\r\n <span class=\"c-context-menu__label\">{{ item.label }}</span>\r\n\r\n <!-- 快捷键 -->\r\n <span\r\n v-if=\"item.shortcut\"\r\n class=\"c-context-menu__shortcut\"\r\n >\r\n {{ item.shortcut }}\r\n </span>\r\n\r\n <!-- 子菜单箭头 -->\r\n <span\r\n v-if=\"item.children?.length\"\r\n class=\"c-context-menu__arrow\"\r\n >\r\n <C_Icon name=\"mdi:chevron-right\" />\r\n </span>\r\n\r\n <!-- 子菜单(递归) -->\r\n <C_ContextMenu\r\n v-if=\"item.children?.length && activeSubKey === item.key\"\r\n :items=\"item.children\"\r\n :min-width=\"props.minWidth\"\r\n :max-width=\"props.maxWidth\"\r\n :sub-menu-placement=\"props.subMenuPlacement\"\r\n :auto-close=\"props.autoClose\"\r\n :z-index=\"props.zIndex + 1\"\r\n class=\"c-context-menu__submenu\"\r\n :class=\"`is-${props.subMenuPlacement}`\"\r\n :style=\"{ position: 'absolute' }\"\r\n @select=\"handleSubSelect\"\r\n />\r\n </div>\r\n </template>\r\n </div>\r\n </Teleport>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, nextTick, ref } from 'vue'\r\n import C_Icon from '../C_Icon/index.vue'\r\n import {\r\n DEFAULT_CONTEXT_MENU_PROPS,\r\n type ContextMenuItem,\r\n type ContextMenuProps,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_ContextMenu' })\r\n\r\n const props = withDefaults(defineProps<ContextMenuProps>(), {\r\n items: () => [],\r\n minWidth: DEFAULT_CONTEXT_MENU_PROPS.minWidth,\r\n maxWidth: DEFAULT_CONTEXT_MENU_PROPS.maxWidth,\r\n subMenuPlacement: DEFAULT_CONTEXT_MENU_PROPS.subMenuPlacement,\r\n autoClose: DEFAULT_CONTEXT_MENU_PROPS.autoClose,\r\n disabled: DEFAULT_CONTEXT_MENU_PROPS.disabled,\r\n zIndex: DEFAULT_CONTEXT_MENU_PROPS.zIndex,\r\n })\r\n\r\n const emit = defineEmits<{\r\n (e: 'select', item: ContextMenuItem): void\r\n (e: 'open', position: { x: number; y: number }): void\r\n (e: 'close'): void\r\n }>()\r\n\r\n // ===== 状态 =====\r\n const visible = ref(false)\r\n const position = ref({ x: 0, y: 0 })\r\n const menuRef = ref<HTMLElement>()\r\n const activeSubKey = ref<string | null>(null)\r\n\r\n let subTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n // ===== 可见项 =====\r\n const visibleItems = computed(() => props.items.filter(item => !item.hidden))\r\n\r\n // ===== 菜单定位样式 =====\r\n const menuStyle = computed(() => ({\r\n left: `${position.value.x}px`,\r\n top: `${position.value.y}px`,\r\n minWidth: `${props.minWidth}px`,\r\n maxWidth: `${props.maxWidth}px`,\r\n zIndex: props.zIndex,\r\n }))\r\n\r\n // ===== 边界校正 =====\r\n const adjustPosition = () => {\r\n nextTick(() => {\r\n const el = menuRef.value\r\n if (!el) return\r\n const rect = el.getBoundingClientRect()\r\n const { innerWidth, innerHeight } = window\r\n\r\n if (rect.right > innerWidth) {\r\n position.value.x = innerWidth - rect.width - 8\r\n }\r\n if (rect.bottom > innerHeight) {\r\n position.value.y = innerHeight - rect.height - 8\r\n }\r\n if (position.value.x < 0) position.value.x = 8\r\n if (position.value.y < 0) position.value.y = 8\r\n })\r\n }\r\n\r\n // ===== 打开/关闭 =====\r\n const open = (x: number, y: number) => {\r\n if (props.disabled) return\r\n position.value = { x, y }\r\n visible.value = true\r\n emit('open', { x, y })\r\n adjustPosition()\r\n\r\n // 聚焦以支持 Escape 关闭\r\n nextTick(() => menuRef.value?.focus())\r\n }\r\n\r\n const close = () => {\r\n visible.value = false\r\n activeSubKey.value = null\r\n emit('close')\r\n }\r\n\r\n // ===== 菜单项点击 =====\r\n const handleItemClick = (item: ContextMenuItem) => {\r\n if (item.disabled) return\r\n if (item.children?.length) return // 有子菜单不触发\r\n\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 子菜单悬停 =====\r\n const handleMouseEnter = (item: ContextMenuItem) => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n if (item.children?.length && !item.disabled) {\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = item.key\r\n }, 150)\r\n } else {\r\n activeSubKey.value = null\r\n }\r\n }\r\n\r\n const handleMouseLeave = () => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = null\r\n }, 300)\r\n }\r\n\r\n // ===== 子菜单选择向上冒泡 =====\r\n const handleSubSelect = (item: ContextMenuItem) => {\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 暴露 API =====\r\n defineExpose({\r\n /** 在指定坐标打开菜单 */\r\n open,\r\n /** 关闭菜单 */\r\n close,\r\n /** 当前是否可见 */\r\n visible: computed(() => visible.value),\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 * @Description: 右键菜单组件 — 声明式配置、快捷键标注、嵌套子菜单\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <!-- 遮罩层 -->\r\n <Teleport to=\"body\">\r\n <div\r\n v-if=\"visible\"\r\n class=\"c-context-menu-overlay\"\r\n :style=\"{ zIndex: props.zIndex - 1 }\"\r\n @click=\"close\"\r\n @contextmenu.prevent=\"close\"\r\n />\r\n\r\n <!-- 菜单面板 -->\r\n <div\r\n v-if=\"visible\"\r\n ref=\"menuRef\"\r\n class=\"c-context-menu\"\r\n :style=\"menuStyle\"\r\n role=\"menu\"\r\n tabindex=\"-1\"\r\n @keydown.escape=\"close\"\r\n >\r\n <template\r\n v-for=\"item in visibleItems\"\r\n :key=\"item.key\"\r\n >\r\n <!-- 分割线 -->\r\n <div\r\n v-if=\"item.divider\"\r\n class=\"c-context-menu__divider\"\r\n role=\"separator\"\r\n />\r\n\r\n <!-- 普通菜单项 -->\r\n <div\r\n v-else\r\n :class=\"[\r\n 'c-context-menu__item',\r\n {\r\n 'is-disabled': item.disabled,\r\n 'is-danger': item.danger,\r\n },\r\n ]\"\r\n role=\"menuitem\"\r\n :aria-disabled=\"item.disabled\"\r\n @click=\"handleItemClick(item)\"\r\n @mouseenter=\"handleMouseEnter(item)\"\r\n @mouseleave=\"handleMouseLeave\"\r\n >\r\n <!-- 图标 -->\r\n <span\r\n v-if=\"item.icon\"\r\n class=\"c-context-menu__icon\"\r\n >\r\n <C_Icon :name=\"item.icon\" />\r\n </span>\r\n\r\n <!-- 文本 -->\r\n <span class=\"c-context-menu__label\">{{ item.label }}</span>\r\n\r\n <!-- 快捷键 -->\r\n <span\r\n v-if=\"item.shortcut\"\r\n class=\"c-context-menu__shortcut\"\r\n >\r\n {{ item.shortcut }}\r\n </span>\r\n\r\n <!-- 子菜单箭头 -->\r\n <span\r\n v-if=\"item.children?.length\"\r\n class=\"c-context-menu__arrow\"\r\n >\r\n <C_Icon name=\"mdi:chevron-right\" />\r\n </span>\r\n\r\n <!-- 子菜单(递归) -->\r\n <C_ContextMenu\r\n v-if=\"item.children?.length && activeSubKey === item.key\"\r\n :items=\"item.children\"\r\n :min-width=\"props.minWidth\"\r\n :max-width=\"props.maxWidth\"\r\n :sub-menu-placement=\"props.subMenuPlacement\"\r\n :auto-close=\"props.autoClose\"\r\n :z-index=\"props.zIndex + 1\"\r\n class=\"c-context-menu__submenu\"\r\n :class=\"`is-${props.subMenuPlacement}`\"\r\n :style=\"{ position: 'absolute' }\"\r\n @select=\"handleSubSelect\"\r\n />\r\n </div>\r\n </template>\r\n </div>\r\n </Teleport>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, nextTick, ref } from 'vue'\r\n import C_Icon from '../C_Icon/index.vue'\r\n import {\r\n DEFAULT_CONTEXT_MENU_PROPS,\r\n type ContextMenuItem,\r\n type ContextMenuProps,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_ContextMenu' })\r\n\r\n const props = withDefaults(defineProps<ContextMenuProps>(), {\r\n items: () => [],\r\n minWidth: DEFAULT_CONTEXT_MENU_PROPS.minWidth,\r\n maxWidth: DEFAULT_CONTEXT_MENU_PROPS.maxWidth,\r\n subMenuPlacement: DEFAULT_CONTEXT_MENU_PROPS.subMenuPlacement,\r\n autoClose: DEFAULT_CONTEXT_MENU_PROPS.autoClose,\r\n disabled: DEFAULT_CONTEXT_MENU_PROPS.disabled,\r\n zIndex: DEFAULT_CONTEXT_MENU_PROPS.zIndex,\r\n })\r\n\r\n const emit = defineEmits<{\r\n (e: 'select', item: ContextMenuItem): void\r\n (e: 'open', position: { x: number; y: number }): void\r\n (e: 'close'): void\r\n }>()\r\n\r\n // ===== 状态 =====\r\n const visible = ref(false)\r\n const position = ref({ x: 0, y: 0 })\r\n const menuRef = ref<HTMLElement>()\r\n const activeSubKey = ref<string | null>(null)\r\n\r\n let subTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n // ===== 可见项 =====\r\n const visibleItems = computed(() => props.items.filter(item => !item.hidden))\r\n\r\n // ===== 菜单定位样式 =====\r\n const menuStyle = computed(() => ({\r\n left: `${position.value.x}px`,\r\n top: `${position.value.y}px`,\r\n minWidth: `${props.minWidth}px`,\r\n maxWidth: `${props.maxWidth}px`,\r\n zIndex: props.zIndex,\r\n }))\r\n\r\n // ===== 边界校正 =====\r\n const adjustPosition = () => {\r\n nextTick(() => {\r\n const el = menuRef.value\r\n if (!el) return\r\n const rect = el.getBoundingClientRect()\r\n const { innerWidth, innerHeight } = window\r\n\r\n if (rect.right > innerWidth) {\r\n position.value.x = innerWidth - rect.width - 8\r\n }\r\n if (rect.bottom > innerHeight) {\r\n position.value.y = innerHeight - rect.height - 8\r\n }\r\n if (position.value.x < 0) position.value.x = 8\r\n if (position.value.y < 0) position.value.y = 8\r\n })\r\n }\r\n\r\n // ===== 打开/关闭 =====\r\n const open = (x: number, y: number) => {\r\n if (props.disabled) return\r\n position.value = { x, y }\r\n visible.value = true\r\n emit('open', { x, y })\r\n adjustPosition()\r\n\r\n // 聚焦以支持 Escape 关闭\r\n nextTick(() => menuRef.value?.focus())\r\n }\r\n\r\n const close = () => {\r\n visible.value = false\r\n activeSubKey.value = null\r\n emit('close')\r\n }\r\n\r\n // ===== 菜单项点击 =====\r\n const handleItemClick = (item: ContextMenuItem) => {\r\n if (item.disabled) return\r\n if (item.children?.length) return // 有子菜单不触发\r\n\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 子菜单悬停 =====\r\n const handleMouseEnter = (item: ContextMenuItem) => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n if (item.children?.length && !item.disabled) {\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = item.key\r\n }, 150)\r\n } else {\r\n activeSubKey.value = null\r\n }\r\n }\r\n\r\n const handleMouseLeave = () => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = null\r\n }, 300)\r\n }\r\n\r\n // ===== 子菜单选择向上冒泡 =====\r\n const handleSubSelect = (item: ContextMenuItem) => {\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 暴露 API =====\r\n defineExpose({\r\n /** 在指定坐标打开菜单 */\r\n open,\r\n /** 关闭菜单 */\r\n close,\r\n /** 当前是否可见 */\r\n visible: computed(() => visible.value),\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 * @Description: 右键菜单组件 — 声明式配置、快捷键标注、嵌套子菜单\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <!-- 遮罩层 -->\r\n <Teleport to=\"body\">\r\n <div\r\n v-if=\"visible\"\r\n class=\"c-context-menu-overlay\"\r\n :style=\"{ zIndex: props.zIndex - 1 }\"\r\n @click=\"close\"\r\n @contextmenu.prevent=\"close\"\r\n />\r\n\r\n <!-- 菜单面板 -->\r\n <div\r\n v-if=\"visible\"\r\n ref=\"menuRef\"\r\n class=\"c-context-menu\"\r\n :style=\"menuStyle\"\r\n role=\"menu\"\r\n tabindex=\"-1\"\r\n @keydown.escape=\"close\"\r\n >\r\n <template\r\n v-for=\"item in visibleItems\"\r\n :key=\"item.key\"\r\n >\r\n <!-- 分割线 -->\r\n <div\r\n v-if=\"item.divider\"\r\n class=\"c-context-menu__divider\"\r\n role=\"separator\"\r\n />\r\n\r\n <!-- 普通菜单项 -->\r\n <div\r\n v-else\r\n :class=\"[\r\n 'c-context-menu__item',\r\n {\r\n 'is-disabled': item.disabled,\r\n 'is-danger': item.danger,\r\n },\r\n ]\"\r\n role=\"menuitem\"\r\n :aria-disabled=\"item.disabled\"\r\n @click=\"handleItemClick(item)\"\r\n @mouseenter=\"handleMouseEnter(item)\"\r\n @mouseleave=\"handleMouseLeave\"\r\n >\r\n <!-- 图标 -->\r\n <span\r\n v-if=\"item.icon\"\r\n class=\"c-context-menu__icon\"\r\n >\r\n <C_Icon :name=\"item.icon\" />\r\n </span>\r\n\r\n <!-- 文本 -->\r\n <span class=\"c-context-menu__label\">{{ item.label }}</span>\r\n\r\n <!-- 快捷键 -->\r\n <span\r\n v-if=\"item.shortcut\"\r\n class=\"c-context-menu__shortcut\"\r\n >\r\n {{ item.shortcut }}\r\n </span>\r\n\r\n <!-- 子菜单箭头 -->\r\n <span\r\n v-if=\"item.children?.length\"\r\n class=\"c-context-menu__arrow\"\r\n >\r\n <C_Icon name=\"mdi:chevron-right\" />\r\n </span>\r\n\r\n <!-- 子菜单(递归) -->\r\n <C_ContextMenu\r\n v-if=\"item.children?.length && activeSubKey === item.key\"\r\n :items=\"item.children\"\r\n :min-width=\"props.minWidth\"\r\n :max-width=\"props.maxWidth\"\r\n :sub-menu-placement=\"props.subMenuPlacement\"\r\n :auto-close=\"props.autoClose\"\r\n :z-index=\"props.zIndex + 1\"\r\n class=\"c-context-menu__submenu\"\r\n :class=\"`is-${props.subMenuPlacement}`\"\r\n :style=\"{ position: 'absolute' }\"\r\n @select=\"handleSubSelect\"\r\n />\r\n </div>\r\n </template>\r\n </div>\r\n </Teleport>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { computed, nextTick, ref } from 'vue'\r\n import C_Icon from '../C_Icon/index.vue'\r\n import {\r\n DEFAULT_CONTEXT_MENU_PROPS,\r\n type ContextMenuItem,\r\n type ContextMenuProps,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_ContextMenu' })\r\n\r\n const props = withDefaults(defineProps<ContextMenuProps>(), {\r\n items: () => [],\r\n minWidth: DEFAULT_CONTEXT_MENU_PROPS.minWidth,\r\n maxWidth: DEFAULT_CONTEXT_MENU_PROPS.maxWidth,\r\n subMenuPlacement: DEFAULT_CONTEXT_MENU_PROPS.subMenuPlacement,\r\n autoClose: DEFAULT_CONTEXT_MENU_PROPS.autoClose,\r\n disabled: DEFAULT_CONTEXT_MENU_PROPS.disabled,\r\n zIndex: DEFAULT_CONTEXT_MENU_PROPS.zIndex,\r\n })\r\n\r\n const emit = defineEmits<{\r\n (e: 'select', item: ContextMenuItem): void\r\n (e: 'open', position: { x: number; y: number }): void\r\n (e: 'close'): void\r\n }>()\r\n\r\n // ===== 状态 =====\r\n const visible = ref(false)\r\n const position = ref({ x: 0, y: 0 })\r\n const menuRef = ref<HTMLElement>()\r\n const activeSubKey = ref<string | null>(null)\r\n\r\n let subTimer: ReturnType<typeof setTimeout> | null = null\r\n\r\n // ===== 可见项 =====\r\n const visibleItems = computed(() => props.items.filter(item => !item.hidden))\r\n\r\n // ===== 菜单定位样式 =====\r\n const menuStyle = computed(() => ({\r\n left: `${position.value.x}px`,\r\n top: `${position.value.y}px`,\r\n minWidth: `${props.minWidth}px`,\r\n maxWidth: `${props.maxWidth}px`,\r\n zIndex: props.zIndex,\r\n }))\r\n\r\n // ===== 边界校正 =====\r\n const adjustPosition = () => {\r\n nextTick(() => {\r\n const el = menuRef.value\r\n if (!el) return\r\n const rect = el.getBoundingClientRect()\r\n const { innerWidth, innerHeight } = window\r\n\r\n if (rect.right > innerWidth) {\r\n position.value.x = innerWidth - rect.width - 8\r\n }\r\n if (rect.bottom > innerHeight) {\r\n position.value.y = innerHeight - rect.height - 8\r\n }\r\n if (position.value.x < 0) position.value.x = 8\r\n if (position.value.y < 0) position.value.y = 8\r\n })\r\n }\r\n\r\n // ===== 打开/关闭 =====\r\n const open = (x: number, y: number) => {\r\n if (props.disabled) return\r\n position.value = { x, y }\r\n visible.value = true\r\n emit('open', { x, y })\r\n adjustPosition()\r\n\r\n // 聚焦以支持 Escape 关闭\r\n nextTick(() => menuRef.value?.focus())\r\n }\r\n\r\n const close = () => {\r\n visible.value = false\r\n activeSubKey.value = null\r\n emit('close')\r\n }\r\n\r\n // ===== 菜单项点击 =====\r\n const handleItemClick = (item: ContextMenuItem) => {\r\n if (item.disabled) return\r\n if (item.children?.length) return // 有子菜单不触发\r\n\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 子菜单悬停 =====\r\n const handleMouseEnter = (item: ContextMenuItem) => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n if (item.children?.length && !item.disabled) {\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = item.key\r\n }, 150)\r\n } else {\r\n activeSubKey.value = null\r\n }\r\n }\r\n\r\n const handleMouseLeave = () => {\r\n if (subTimer) {\r\n clearTimeout(subTimer)\r\n subTimer = null\r\n }\r\n subTimer = setTimeout(() => {\r\n activeSubKey.value = null\r\n }, 300)\r\n }\r\n\r\n // ===== 子菜单选择向上冒泡 =====\r\n const handleSubSelect = (item: ContextMenuItem) => {\r\n emit('select', item)\r\n if (props.autoClose) close()\r\n }\r\n\r\n // ===== 暴露 API =====\r\n defineExpose({\r\n /** 在指定坐标打开菜单 */\r\n open,\r\n /** 关闭菜单 */\r\n close,\r\n /** 当前是否可见 */\r\n visible: computed(() => visible.value),\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_ContextMenu2.js","names":[],"sources":["../src/components/C_ContextMenu/types.ts","../src/components/C_ContextMenu/index.vue"],"sourcesContent":["/**\n * @Description: 右键菜单组件类型定义\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n */\n\n/** 菜单项 */\nexport interface ContextMenuItem {\n /** 唯一标识 */\n key: string\n /** 菜单文字 */\n label: string\n /** 图标(Iconify 图标名) */\n icon?: string\n /** 快捷键标注文字(仅展示,不绑定) */\n shortcut?: string\n /** 是否禁用 */\n disabled?: boolean\n /** 是否隐藏 */\n hidden?: boolean\n /** 分割线(此项渲染为分割线,label 被忽略) */\n divider?: boolean\n /** 子菜单(支持无限嵌套) */\n children?: ContextMenuItem[]\n /** 自定义样式类 */\n className?: string\n /** 危险操作(红色高亮) */\n danger?: boolean\n}\n\n/** 组件 Props */\nexport interface ContextMenuProps {\n /** 菜单项列表 */\n items: ContextMenuItem[]\n /** 菜单最小宽度 */\n minWidth?: number\n /** 菜单最大宽度 */\n maxWidth?: number\n /** 子菜单展开方向 */\n subMenuPlacement?: 'right' | 'left'\n /** 点击菜单项后是否自动关闭 */\n autoClose?: boolean\n /** 是否禁用整个菜单 */\n disabled?: boolean\n /** 自定义 z-index */\n zIndex?: number\n}\n\n/** 默认 Props */\nexport const DEFAULT_CONTEXT_MENU_PROPS = {\n minWidth: 180,\n maxWidth: 280,\n subMenuPlacement: 'right' as const,\n autoClose: true,\n disabled: false,\n zIndex: 9999,\n}\n","<!--\n * @Description: 右键菜单组件 — 声明式配置、快捷键标注、嵌套子菜单\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <!-- 遮罩层 -->\n <Teleport to=\"body\">\n <div\n v-if=\"visible\"\n class=\"c-context-menu-overlay\"\n :style=\"{ zIndex: props.zIndex - 1 }\"\n @click=\"close\"\n @contextmenu.prevent=\"close\"\n />\n\n <!-- 菜单面板 -->\n <div\n v-if=\"visible\"\n ref=\"menuRef\"\n class=\"c-context-menu\"\n :style=\"menuStyle\"\n role=\"menu\"\n tabindex=\"-1\"\n @keydown.escape=\"close\"\n >\n <template\n v-for=\"item in visibleItems\"\n :key=\"item.key\"\n >\n <!-- 分割线 -->\n <div\n v-if=\"item.divider\"\n class=\"c-context-menu__divider\"\n role=\"separator\"\n />\n\n <!-- 普通菜单项 -->\n <div\n v-else\n :class=\"[\n 'c-context-menu__item',\n {\n 'is-disabled': item.disabled,\n 'is-danger': item.danger,\n },\n ]\"\n role=\"menuitem\"\n :aria-disabled=\"item.disabled\"\n @click=\"handleItemClick(item)\"\n @mouseenter=\"handleMouseEnter(item)\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- 图标 -->\n <span\n v-if=\"item.icon\"\n class=\"c-context-menu__icon\"\n >\n <C_Icon :name=\"item.icon\" />\n </span>\n\n <!-- 文本 -->\n <span class=\"c-context-menu__label\">{{ item.label }}</span>\n\n <!-- 快捷键 -->\n <span\n v-if=\"item.shortcut\"\n class=\"c-context-menu__shortcut\"\n >\n {{ item.shortcut }}\n </span>\n\n <!-- 子菜单箭头 -->\n <span\n v-if=\"item.children?.length\"\n class=\"c-context-menu__arrow\"\n >\n <C_Icon name=\"mdi:chevron-right\" />\n </span>\n\n <!-- 子菜单(递归) -->\n <C_ContextMenu\n v-if=\"item.children?.length && activeSubKey === item.key\"\n :items=\"item.children\"\n :min-width=\"props.minWidth\"\n :max-width=\"props.maxWidth\"\n :sub-menu-placement=\"props.subMenuPlacement\"\n :auto-close=\"props.autoClose\"\n :z-index=\"props.zIndex + 1\"\n class=\"c-context-menu__submenu\"\n :class=\"`is-${props.subMenuPlacement}`\"\n :style=\"{ position: 'absolute' }\"\n @select=\"handleSubSelect\"\n />\n </div>\n </template>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, nextTick, ref } from 'vue'\n import C_Icon from '../C_Icon/index.vue'\n import {\n DEFAULT_CONTEXT_MENU_PROPS,\n type ContextMenuItem,\n type ContextMenuProps,\n } from './types'\n\n defineOptions({ name: 'C_ContextMenu' })\n\n const props = withDefaults(defineProps<ContextMenuProps>(), {\n items: () => [],\n minWidth: DEFAULT_CONTEXT_MENU_PROPS.minWidth,\n maxWidth: DEFAULT_CONTEXT_MENU_PROPS.maxWidth,\n subMenuPlacement: DEFAULT_CONTEXT_MENU_PROPS.subMenuPlacement,\n autoClose: DEFAULT_CONTEXT_MENU_PROPS.autoClose,\n disabled: DEFAULT_CONTEXT_MENU_PROPS.disabled,\n zIndex: DEFAULT_CONTEXT_MENU_PROPS.zIndex,\n })\n\n const emit = defineEmits<{\n (e: 'select', item: ContextMenuItem): void\n (e: 'open', position: { x: number; y: number }): void\n (e: 'close'): void\n }>()\n\n // ===== 状态 =====\n const visible = ref(false)\n const position = ref({ x: 0, y: 0 })\n const menuRef = ref<HTMLElement>()\n const activeSubKey = ref<string | null>(null)\n\n let subTimer: ReturnType<typeof setTimeout> | null = null\n\n // ===== 可见项 =====\n const visibleItems = computed(() => props.items.filter(item => !item.hidden))\n\n // ===== 菜单定位样式 =====\n const menuStyle = computed(() => ({\n left: `${position.value.x}px`,\n top: `${position.value.y}px`,\n minWidth: `${props.minWidth}px`,\n maxWidth: `${props.maxWidth}px`,\n zIndex: props.zIndex,\n }))\n\n // ===== 边界校正 =====\n const adjustPosition = () => {\n nextTick(() => {\n const el = menuRef.value\n if (!el) return\n const rect = el.getBoundingClientRect()\n const { innerWidth, innerHeight } = window\n\n if (rect.right > innerWidth) {\n position.value.x = innerWidth - rect.width - 8\n }\n if (rect.bottom > innerHeight) {\n position.value.y = innerHeight - rect.height - 8\n }\n if (position.value.x < 0) position.value.x = 8\n if (position.value.y < 0) position.value.y = 8\n })\n }\n\n // ===== 打开/关闭 =====\n const open = (x: number, y: number) => {\n if (props.disabled) return\n position.value = { x, y }\n visible.value = true\n emit('open', { x, y })\n adjustPosition()\n\n // 聚焦以支持 Escape 关闭\n nextTick(() => menuRef.value?.focus())\n }\n\n const close = () => {\n visible.value = false\n activeSubKey.value = null\n emit('close')\n }\n\n // ===== 菜单项点击 =====\n const handleItemClick = (item: ContextMenuItem) => {\n if (item.disabled) return\n if (item.children?.length) return // 有子菜单不触发\n\n emit('select', item)\n if (props.autoClose) close()\n }\n\n // ===== 子菜单悬停 =====\n const handleMouseEnter = (item: ContextMenuItem) => {\n if (subTimer) {\n clearTimeout(subTimer)\n subTimer = null\n }\n if (item.children?.length && !item.disabled) {\n subTimer = setTimeout(() => {\n activeSubKey.value = item.key\n }, 150)\n } else {\n activeSubKey.value = null\n }\n }\n\n const handleMouseLeave = () => {\n if (subTimer) {\n clearTimeout(subTimer)\n subTimer = null\n }\n subTimer = setTimeout(() => {\n activeSubKey.value = null\n }, 300)\n }\n\n // ===== 子菜单选择向上冒泡 =====\n const handleSubSelect = (item: ContextMenuItem) => {\n emit('select', item)\n if (props.autoClose) close()\n }\n\n // ===== 暴露 API =====\n defineExpose({\n /** 在指定坐标打开菜单 */\n open,\n /** 关闭菜单 */\n close,\n /** 当前是否可见 */\n visible: computed(() => visible.value),\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_Cron-
|
|
1
|
+
{"version":3,"file":"C_Cron-Civir5-I.css","names":[],"sources":["../src/components/C_Cron/components/CronFieldEditor.vue?vue&type=style&index=0&scoped=769c51fe&lang.scss","../src/components/C_Cron/components/CronPreview.vue?vue&type=style&index=0&scoped=570ad3fb&lang.scss","../src/components/C_Cron/components/CronTemplates.vue?vue&type=style&index=0&scoped=5190cefc&lang.scss","../src/components/C_Cron/index.vue?vue&type=style&index=0&scoped=e9b95547&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-769c51fe] {\n display: grid;\n grid-template-columns: repeat(var(--cols, 10), 1fr);\n gap: 4px;\n}\n.cron-field-editor__cell[data-v-769c51fe] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n border-radius: 6px;\n font-size: 13px;\n font-variant-numeric: tabular-nums;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n color: var(--c-text-2);\n /* 非交互高亮(every / range / step 的视觉反馈) */\n /* 可交互模式(specific) */\n}\n.cron-field-editor__cell--on[data-v-769c51fe]:not(.cron-field-editor__cell--pick) {\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n}\n.cron-field-editor__cell--pick[data-v-769c51fe] {\n cursor: pointer;\n}\n.cron-field-editor__cell--pick[data-v-769c51fe]:hover:not(.cron-field-editor__cell--on) {\n background: var(--c-bg-card);\n}\n.cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-769c51fe] {\n background: var(--c-primary);\n color: #fff;\n font-weight: 600;\n}","/* unplugin-vue-components disabled */.cron-preview__header[data-v-570ad3fb] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 6px;\n color: var(--c-text-1);\n}\n.cron-preview__list[data-v-570ad3fb] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.cron-preview__item[data-v-570ad3fb] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 3px 4px;\n border-radius: 4px;\n font-size: 12px;\n transition: background var(--c-transition, 0.2s ease);\n}\n.cron-preview__item[data-v-570ad3fb]:hover {\n background: var(--c-bg-card);\n}\n.cron-preview__idx[data-v-570ad3fb] {\n width: 16px;\n text-align: center;\n color: var(--c-text-4);\n flex-shrink: 0;\n font-size: 11px;\n}\n.cron-preview__date[data-v-570ad3fb] {\n font-family: \"Courier New\", Courier, monospace;\n flex: 1;\n font-size: 12px;\n}\n.cron-preview__week[data-v-570ad3fb] {\n color: var(--c-text-4);\n font-size: 12px;\n flex-shrink: 0;\n}","/* unplugin-vue-components disabled */.cron-templates__header[data-v-5190cefc] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 10px;\n color: var(--c-text-1);\n}\n.cron-templates__cards[data-v-5190cefc] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 8px;\n}\n.cron-templates__card[data-v-5190cefc] {\n padding: 10px 12px;\n border-radius: 8px;\n border: 1px solid var(--c-border);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n}\n.cron-templates__card[data-v-5190cefc]:hover {\n border-color: var(--c-primary);\n background: color-mix(in srgb, var(--c-primary) 4%, transparent);\n}\n.cron-templates__card--active[data-v-5190cefc] {\n border-color: var(--c-primary);\n background: color-mix(in srgb, var(--c-primary) 8%, transparent);\n}\n.cron-templates__card-name[data-v-5190cefc] {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n}\n.cron-templates__card-expr[data-v-5190cefc] {\n font-family: \"Courier New\", Courier, monospace;\n font-size: 11px;\n color: var(--c-text-4);\n margin-top: 2px;\n}","/* unplugin-vue-components disabled *//* Cron 表达式编辑器 - 组件级全局样式 */\n.c-cron[data-v-e9b95547] {\n padding: 20px;\n border-radius: 10px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n /* ═══════ 顶部 ═══════ */\n /* ─── 分段式字段选择器 ──────────────────── */\n /* ─── 表达式行 ─────────────────────────── */\n /* ═══════ 主内容 ═══════ */\n /* ─── 右侧控制面板 ────────────────────── */\n /* ═══════ 底部模板 ═══════ */\n}\n.c-cron__header[data-v-e9b95547] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--c-border);\n margin-bottom: 16px;\n}\n.c-cron__title-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.c-cron__title[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 15px;\n}\n.c-cron__segments[data-v-e9b95547] {\n display: flex;\n gap: 2px;\n padding: 3px;\n border-radius: 10px;\n background: var(--c-bg);\n}\n.c-cron__segment[data-v-e9b95547] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 6px 5px;\n border-radius: 8px;\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n min-width: 0;\n}\n.c-cron__segment[data-v-e9b95547]:not(.c-cron__segment--active):hover {\n background: color-mix(in srgb, var(--c-bg-card) 60%, transparent);\n}\n.c-cron__segment--active[data-v-e9b95547] {\n background: var(--c-bg-card);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n}\n.c-cron__segment--active .c-cron__segment-value[data-v-e9b95547] {\n color: var(--c-primary);\n}\n.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-e9b95547] {\n opacity: 0.35;\n}\n.c-cron__segment-value[data-v-e9b95547] {\n font-family: \"Courier New\", Courier, monospace;\n font-size: 15px;\n font-weight: 700;\n line-height: 1.3;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: center;\n}\n.c-cron__segment-label[data-v-e9b95547] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.c-cron__expr-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.c-cron__expr-input[data-v-e9b95547] {\n width: 240px;\n flex-shrink: 0;\n}\n.c-cron__expr-desc[data-v-e9b95547] {\n flex: 1;\n font-size: 13px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.c-cron__description[data-v-e9b95547] {\n color: var(--c-text-2);\n}\n.c-cron__error[data-v-e9b95547] {\n color: var(--error-color);\n}\n.c-cron__body[data-v-e9b95547] {\n display: flex;\n gap: 24px;\n}\n.c-cron__main[data-v-e9b95547] {\n flex: 1;\n min-width: 0;\n}\n.c-cron__panel[data-v-e9b95547] {\n width: 260px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.c-cron__config[data-v-e9b95547] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.c-cron__config-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--c-text-2);\n flex-wrap: wrap;\n}\n.c-cron__config-num[data-v-e9b95547] {\n width: 68px;\n}\n.c-cron__quick[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n}\n.c-cron__quick a[data-v-e9b95547] {\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.c-cron__quick a[data-v-e9b95547]:hover {\n text-decoration: underline;\n}\n.c-cron__quick-sep[data-v-e9b95547] {\n color: var(--c-text-4);\n}\n.c-cron__quick-count[data-v-e9b95547] {\n margin-left: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.c-cron__panel-line[data-v-e9b95547] {\n height: 1px;\n background: var(--c-border);\n}\n.c-cron__footer[data-v-e9b95547] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ─── 响应式 ────────────────────────────────── */\n@media (max-width: 768px) {\n.c-cron__body[data-v-e9b95547] {\n flex-direction: column;\n}\n.c-cron__panel[data-v-e9b95547] {\n width: 100%;\n}\n.c-cron__segments[data-v-e9b95547] {\n flex-wrap: wrap;\n}\n.c-cron__segment[data-v-e9b95547] {\n min-width: calc(33% - 4px);\n}\n.c-cron__expr-row[data-v-e9b95547] {\n flex-wrap: wrap;\n}\n.c-cron__expr-input[data-v-e9b95547] {\n width: 100%;\n}\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;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_Cron-
|
|
1
|
+
{"version":3,"file":"C_Cron-iw3qpMsy.css","names":[],"sources":["../src/components/C_Cron/components/CronFieldEditor.vue?vue&type=style&index=0&scoped=769c51fe&lang.scss","../src/components/C_Cron/components/CronPreview.vue?vue&type=style&index=0&scoped=570ad3fb&lang.scss","../src/components/C_Cron/components/CronTemplates.vue?vue&type=style&index=0&scoped=5190cefc&lang.scss","../src/components/C_Cron/index.vue?vue&type=style&index=0&scoped=e9b95547&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-769c51fe] {\n display: grid;\n grid-template-columns: repeat(var(--cols, 10), 1fr);\n gap: 4px;\n}\n.cron-field-editor__cell[data-v-769c51fe] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n border-radius: 6px;\n font-size: 13px;\n font-variant-numeric: tabular-nums;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n color: var(--c-text-2);\n /* 非交互高亮(every / range / step 的视觉反馈) */\n /* 可交互模式(specific) */\n}\n.cron-field-editor__cell--on[data-v-769c51fe]:not(.cron-field-editor__cell--pick) {\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n}\n.cron-field-editor__cell--pick[data-v-769c51fe] {\n cursor: pointer;\n}\n.cron-field-editor__cell--pick[data-v-769c51fe]:hover:not(.cron-field-editor__cell--on) {\n background: var(--c-bg-card);\n}\n.cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-769c51fe] {\n background: var(--c-primary);\n color: #fff;\n font-weight: 600;\n}","/* unplugin-vue-components disabled */.cron-preview__header[data-v-570ad3fb] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 6px;\n color: var(--c-text-1);\n}\n.cron-preview__list[data-v-570ad3fb] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.cron-preview__item[data-v-570ad3fb] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 3px 4px;\n border-radius: 4px;\n font-size: 12px;\n transition: background var(--c-transition, 0.2s ease);\n}\n.cron-preview__item[data-v-570ad3fb]:hover {\n background: var(--c-bg-card);\n}\n.cron-preview__idx[data-v-570ad3fb] {\n width: 16px;\n text-align: center;\n color: var(--c-text-4);\n flex-shrink: 0;\n font-size: 11px;\n}\n.cron-preview__date[data-v-570ad3fb] {\n font-family: \"Courier New\", Courier, monospace;\n flex: 1;\n font-size: 12px;\n}\n.cron-preview__week[data-v-570ad3fb] {\n color: var(--c-text-4);\n font-size: 12px;\n flex-shrink: 0;\n}","/* unplugin-vue-components disabled */.cron-templates__header[data-v-5190cefc] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 10px;\n color: var(--c-text-1);\n}\n.cron-templates__cards[data-v-5190cefc] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 8px;\n}\n.cron-templates__card[data-v-5190cefc] {\n padding: 10px 12px;\n border-radius: 8px;\n border: 1px solid var(--c-border);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n}\n.cron-templates__card[data-v-5190cefc]:hover {\n border-color: var(--c-primary);\n background: color-mix(in srgb, var(--c-primary) 4%, transparent);\n}\n.cron-templates__card--active[data-v-5190cefc] {\n border-color: var(--c-primary);\n background: color-mix(in srgb, var(--c-primary) 8%, transparent);\n}\n.cron-templates__card-name[data-v-5190cefc] {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n}\n.cron-templates__card-expr[data-v-5190cefc] {\n font-family: \"Courier New\", Courier, monospace;\n font-size: 11px;\n color: var(--c-text-4);\n margin-top: 2px;\n}","/* unplugin-vue-components disabled *//* Cron 表达式编辑器 - 组件级全局样式 */\n.c-cron[data-v-e9b95547] {\n padding: 20px;\n border-radius: 10px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n /* ═══════ 顶部 ═══════ */\n /* ─── 分段式字段选择器 ──────────────────── */\n /* ─── 表达式行 ─────────────────────────── */\n /* ═══════ 主内容 ═══════ */\n /* ─── 右侧控制面板 ────────────────────── */\n /* ═══════ 底部模板 ═══════ */\n}\n.c-cron__header[data-v-e9b95547] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--c-border);\n margin-bottom: 16px;\n}\n.c-cron__title-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.c-cron__title[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 15px;\n}\n.c-cron__segments[data-v-e9b95547] {\n display: flex;\n gap: 2px;\n padding: 3px;\n border-radius: 10px;\n background: var(--c-bg);\n}\n.c-cron__segment[data-v-e9b95547] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 6px 5px;\n border-radius: 8px;\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n min-width: 0;\n}\n.c-cron__segment[data-v-e9b95547]:not(.c-cron__segment--active):hover {\n background: color-mix(in srgb, var(--c-bg-card) 60%, transparent);\n}\n.c-cron__segment--active[data-v-e9b95547] {\n background: var(--c-bg-card);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n}\n.c-cron__segment--active .c-cron__segment-value[data-v-e9b95547] {\n color: var(--c-primary);\n}\n.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-e9b95547] {\n opacity: 0.35;\n}\n.c-cron__segment-value[data-v-e9b95547] {\n font-family: \"Courier New\", Courier, monospace;\n font-size: 15px;\n font-weight: 700;\n line-height: 1.3;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: center;\n}\n.c-cron__segment-label[data-v-e9b95547] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.c-cron__expr-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.c-cron__expr-input[data-v-e9b95547] {\n width: 240px;\n flex-shrink: 0;\n}\n.c-cron__expr-desc[data-v-e9b95547] {\n flex: 1;\n font-size: 13px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.c-cron__description[data-v-e9b95547] {\n color: var(--c-text-2);\n}\n.c-cron__error[data-v-e9b95547] {\n color: var(--error-color);\n}\n.c-cron__body[data-v-e9b95547] {\n display: flex;\n gap: 24px;\n}\n.c-cron__main[data-v-e9b95547] {\n flex: 1;\n min-width: 0;\n}\n.c-cron__panel[data-v-e9b95547] {\n width: 260px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.c-cron__config[data-v-e9b95547] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.c-cron__config-row[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--c-text-2);\n flex-wrap: wrap;\n}\n.c-cron__config-num[data-v-e9b95547] {\n width: 68px;\n}\n.c-cron__quick[data-v-e9b95547] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n}\n.c-cron__quick a[data-v-e9b95547] {\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.c-cron__quick a[data-v-e9b95547]:hover {\n text-decoration: underline;\n}\n.c-cron__quick-sep[data-v-e9b95547] {\n color: var(--c-text-4);\n}\n.c-cron__quick-count[data-v-e9b95547] {\n margin-left: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.c-cron__panel-line[data-v-e9b95547] {\n height: 1px;\n background: var(--c-border);\n}\n.c-cron__footer[data-v-e9b95547] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ─── 响应式 ────────────────────────────────── */\n@media (max-width: 768px) {\n.c-cron__body[data-v-e9b95547] {\n flex-direction: column;\n}\n.c-cron__panel[data-v-e9b95547] {\n width: 100%;\n}\n.c-cron__segments[data-v-e9b95547] {\n flex-wrap: wrap;\n}\n.c-cron__segment[data-v-e9b95547] {\n min-width: calc(33% - 4px);\n}\n.c-cron__expr-row[data-v-e9b95547] {\n flex-wrap: wrap;\n}\n.c-cron__expr-input[data-v-e9b95547] {\n width: 100%;\n}\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;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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"}
|
package/dist/C_Cron.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`})
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_Cron.js`);exports.CRON_FIELD_META=e.a,exports.CRON_TEMPLATES=e.o,exports.C_Cron=e.t,exports.DEFAULT_CRON_EXPRESSION=e.s,exports.DEFAULT_CRON_VALUE=e.c,exports.DEFAULT_FIELD_VALUE=e.l,exports.MONTH_LABELS=e.u,exports.WEEK_LABELS=e.d,exports.useCronDescription=e.n,exports.useCronParser=e.i,exports.useCronPreview=e.r;
|
package/dist/C_Cron.css
CHANGED
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
margin-top: 2px;
|
|
117
117
|
}
|
|
118
118
|
/* unplugin-vue-components disabled *//* Cron 表达式编辑器 - 组件级全局样式 */
|
|
119
|
-
.c-cron[data-v-
|
|
119
|
+
.c-cron[data-v-e9b95547] {
|
|
120
120
|
padding: 20px;
|
|
121
121
|
border-radius: 10px;
|
|
122
122
|
border: 1px solid var(--c-border);
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
/* ─── 右侧控制面板 ────────────────────── */
|
|
129
129
|
/* ═══════ 底部模板 ═══════ */
|
|
130
130
|
}
|
|
131
|
-
.c-cron__header[data-v-
|
|
131
|
+
.c-cron__header[data-v-e9b95547] {
|
|
132
132
|
display: flex;
|
|
133
133
|
flex-direction: column;
|
|
134
134
|
gap: 12px;
|
|
@@ -136,26 +136,26 @@
|
|
|
136
136
|
border-bottom: 1px solid var(--c-border);
|
|
137
137
|
margin-bottom: 16px;
|
|
138
138
|
}
|
|
139
|
-
.c-cron__title-row[data-v-
|
|
139
|
+
.c-cron__title-row[data-v-e9b95547] {
|
|
140
140
|
display: flex;
|
|
141
141
|
align-items: center;
|
|
142
142
|
justify-content: space-between;
|
|
143
143
|
}
|
|
144
|
-
.c-cron__title[data-v-
|
|
144
|
+
.c-cron__title[data-v-e9b95547] {
|
|
145
145
|
display: flex;
|
|
146
146
|
align-items: center;
|
|
147
147
|
gap: 6px;
|
|
148
148
|
font-weight: 600;
|
|
149
149
|
font-size: 15px;
|
|
150
150
|
}
|
|
151
|
-
.c-cron__segments[data-v-
|
|
151
|
+
.c-cron__segments[data-v-e9b95547] {
|
|
152
152
|
display: flex;
|
|
153
153
|
gap: 2px;
|
|
154
154
|
padding: 3px;
|
|
155
155
|
border-radius: 10px;
|
|
156
156
|
background: var(--c-bg);
|
|
157
157
|
}
|
|
158
|
-
.c-cron__segment[data-v-
|
|
158
|
+
.c-cron__segment[data-v-e9b95547] {
|
|
159
159
|
flex: 1;
|
|
160
160
|
display: flex;
|
|
161
161
|
flex-direction: column;
|
|
@@ -167,20 +167,20 @@
|
|
|
167
167
|
user-select: none;
|
|
168
168
|
min-width: 0;
|
|
169
169
|
}
|
|
170
|
-
.c-cron__segment[data-v-
|
|
170
|
+
.c-cron__segment[data-v-e9b95547]:not(.c-cron__segment--active):hover {
|
|
171
171
|
background: color-mix(in srgb, var(--c-bg-card) 60%, transparent);
|
|
172
172
|
}
|
|
173
|
-
.c-cron__segment--active[data-v-
|
|
173
|
+
.c-cron__segment--active[data-v-e9b95547] {
|
|
174
174
|
background: var(--c-bg-card);
|
|
175
175
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
176
176
|
}
|
|
177
|
-
.c-cron__segment--active .c-cron__segment-value[data-v-
|
|
177
|
+
.c-cron__segment--active .c-cron__segment-value[data-v-e9b95547] {
|
|
178
178
|
color: var(--c-primary);
|
|
179
179
|
}
|
|
180
|
-
.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-
|
|
180
|
+
.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-e9b95547] {
|
|
181
181
|
opacity: 0.35;
|
|
182
182
|
}
|
|
183
|
-
.c-cron__segment-value[data-v-
|
|
183
|
+
.c-cron__segment-value[data-v-e9b95547] {
|
|
184
184
|
font-family: "Courier New", Courier, monospace;
|
|
185
185
|
font-size: 15px;
|
|
186
186
|
font-weight: 700;
|
|
@@ -191,21 +191,21 @@
|
|
|
191
191
|
white-space: nowrap;
|
|
192
192
|
text-align: center;
|
|
193
193
|
}
|
|
194
|
-
.c-cron__segment-label[data-v-
|
|
194
|
+
.c-cron__segment-label[data-v-e9b95547] {
|
|
195
195
|
font-size: 11px;
|
|
196
196
|
color: var(--c-text-4);
|
|
197
197
|
margin-top: 2px;
|
|
198
198
|
}
|
|
199
|
-
.c-cron__expr-row[data-v-
|
|
199
|
+
.c-cron__expr-row[data-v-e9b95547] {
|
|
200
200
|
display: flex;
|
|
201
201
|
align-items: center;
|
|
202
202
|
gap: 8px;
|
|
203
203
|
}
|
|
204
|
-
.c-cron__expr-input[data-v-
|
|
204
|
+
.c-cron__expr-input[data-v-e9b95547] {
|
|
205
205
|
width: 240px;
|
|
206
206
|
flex-shrink: 0;
|
|
207
207
|
}
|
|
208
|
-
.c-cron__expr-desc[data-v-
|
|
208
|
+
.c-cron__expr-desc[data-v-e9b95547] {
|
|
209
209
|
flex: 1;
|
|
210
210
|
font-size: 13px;
|
|
211
211
|
min-width: 0;
|
|
@@ -213,33 +213,33 @@
|
|
|
213
213
|
text-overflow: ellipsis;
|
|
214
214
|
white-space: nowrap;
|
|
215
215
|
}
|
|
216
|
-
.c-cron__description[data-v-
|
|
216
|
+
.c-cron__description[data-v-e9b95547] {
|
|
217
217
|
color: var(--c-text-2);
|
|
218
218
|
}
|
|
219
|
-
.c-cron__error[data-v-
|
|
219
|
+
.c-cron__error[data-v-e9b95547] {
|
|
220
220
|
color: var(--error-color);
|
|
221
221
|
}
|
|
222
|
-
.c-cron__body[data-v-
|
|
222
|
+
.c-cron__body[data-v-e9b95547] {
|
|
223
223
|
display: flex;
|
|
224
224
|
gap: 24px;
|
|
225
225
|
}
|
|
226
|
-
.c-cron__main[data-v-
|
|
226
|
+
.c-cron__main[data-v-e9b95547] {
|
|
227
227
|
flex: 1;
|
|
228
228
|
min-width: 0;
|
|
229
229
|
}
|
|
230
|
-
.c-cron__panel[data-v-
|
|
230
|
+
.c-cron__panel[data-v-e9b95547] {
|
|
231
231
|
width: 260px;
|
|
232
232
|
flex-shrink: 0;
|
|
233
233
|
display: flex;
|
|
234
234
|
flex-direction: column;
|
|
235
235
|
gap: 12px;
|
|
236
236
|
}
|
|
237
|
-
.c-cron__config[data-v-
|
|
237
|
+
.c-cron__config[data-v-e9b95547] {
|
|
238
238
|
display: flex;
|
|
239
239
|
flex-direction: column;
|
|
240
240
|
gap: 8px;
|
|
241
241
|
}
|
|
242
|
-
.c-cron__config-row[data-v-
|
|
242
|
+
.c-cron__config-row[data-v-e9b95547] {
|
|
243
243
|
display: flex;
|
|
244
244
|
align-items: center;
|
|
245
245
|
gap: 6px;
|
|
@@ -247,36 +247,36 @@
|
|
|
247
247
|
color: var(--c-text-2);
|
|
248
248
|
flex-wrap: wrap;
|
|
249
249
|
}
|
|
250
|
-
.c-cron__config-num[data-v-
|
|
250
|
+
.c-cron__config-num[data-v-e9b95547] {
|
|
251
251
|
width: 68px;
|
|
252
252
|
}
|
|
253
|
-
.c-cron__quick[data-v-
|
|
253
|
+
.c-cron__quick[data-v-e9b95547] {
|
|
254
254
|
display: flex;
|
|
255
255
|
align-items: center;
|
|
256
256
|
gap: 4px;
|
|
257
257
|
font-size: 13px;
|
|
258
258
|
}
|
|
259
|
-
.c-cron__quick a[data-v-
|
|
259
|
+
.c-cron__quick a[data-v-e9b95547] {
|
|
260
260
|
color: var(--c-primary);
|
|
261
261
|
cursor: pointer;
|
|
262
262
|
user-select: none;
|
|
263
263
|
}
|
|
264
|
-
.c-cron__quick a[data-v-
|
|
264
|
+
.c-cron__quick a[data-v-e9b95547]:hover {
|
|
265
265
|
text-decoration: underline;
|
|
266
266
|
}
|
|
267
|
-
.c-cron__quick-sep[data-v-
|
|
267
|
+
.c-cron__quick-sep[data-v-e9b95547] {
|
|
268
268
|
color: var(--c-text-4);
|
|
269
269
|
}
|
|
270
|
-
.c-cron__quick-count[data-v-
|
|
270
|
+
.c-cron__quick-count[data-v-e9b95547] {
|
|
271
271
|
margin-left: 4px;
|
|
272
272
|
font-size: 12px;
|
|
273
273
|
color: var(--c-text-4);
|
|
274
274
|
}
|
|
275
|
-
.c-cron__panel-line[data-v-
|
|
275
|
+
.c-cron__panel-line[data-v-e9b95547] {
|
|
276
276
|
height: 1px;
|
|
277
277
|
background: var(--c-border);
|
|
278
278
|
}
|
|
279
|
-
.c-cron__footer[data-v-
|
|
279
|
+
.c-cron__footer[data-v-e9b95547] {
|
|
280
280
|
margin-top: 16px;
|
|
281
281
|
padding-top: 16px;
|
|
282
282
|
border-top: 1px solid var(--c-border);
|
|
@@ -284,24 +284,24 @@
|
|
|
284
284
|
|
|
285
285
|
/* ─── 响应式 ────────────────────────────────── */
|
|
286
286
|
@media (max-width: 768px) {
|
|
287
|
-
.c-cron__body[data-v-
|
|
287
|
+
.c-cron__body[data-v-e9b95547] {
|
|
288
288
|
flex-direction: column;
|
|
289
289
|
}
|
|
290
|
-
.c-cron__panel[data-v-
|
|
290
|
+
.c-cron__panel[data-v-e9b95547] {
|
|
291
291
|
width: 100%;
|
|
292
292
|
}
|
|
293
|
-
.c-cron__segments[data-v-
|
|
293
|
+
.c-cron__segments[data-v-e9b95547] {
|
|
294
294
|
flex-wrap: wrap;
|
|
295
295
|
}
|
|
296
|
-
.c-cron__segment[data-v-
|
|
296
|
+
.c-cron__segment[data-v-e9b95547] {
|
|
297
297
|
min-width: calc(33% - 4px);
|
|
298
298
|
}
|
|
299
|
-
.c-cron__expr-row[data-v-
|
|
299
|
+
.c-cron__expr-row[data-v-e9b95547] {
|
|
300
300
|
flex-wrap: wrap;
|
|
301
301
|
}
|
|
302
|
-
.c-cron__expr-input[data-v-
|
|
302
|
+
.c-cron__expr-input[data-v-e9b95547] {
|
|
303
303
|
width: 100%;
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
/*# sourceMappingURL=C_Cron-
|
|
307
|
+
/*# sourceMappingURL=C_Cron-Civir5-I.css.map*/
|
package/dist/C_Cron.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./C_Cron2.js";export{e as CRON_FIELD_META,o as CRON_TEMPLATES,l as C_Cron,c as DEFAULT_CRON_EXPRESSION,t as DEFAULT_CRON_VALUE,i as DEFAULT_FIELD_VALUE,u as MONTH_LABELS,n as WEEK_LABELS,a as useCronDescription,r as useCronParser,s as useCronPreview};
|