@robot-admin/naive-ui-components 0.6.29 → 0.6.30
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 +48 -48
- package/README.md +277 -277
- package/dist/C_ActionBar-jZPsiXtT.css.map +1 -0
- package/dist/C_ActionBar-nnfbZCea.css.map +1 -0
- package/dist/C_ActionBar.css +47 -47
- 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-BY8jqqmi.css.map → C_AntV-A3NXx_sF.css.map} +1 -1
- package/dist/{C_AntV-BbkHc-_a.css.map → C_AntV-D2Zp2qQF.css.map} +1 -1
- package/dist/C_AntV.css +78 -78
- package/dist/C_AntV.js.map +1 -1
- package/dist/C_AntV2.js +2 -2
- package/dist/C_AntV2.js.map +1 -1
- package/dist/{C_AudioPlayer-DKRIGhi7.css.map → C_AudioPlayer-CXl4yP_m.css.map} +1 -1
- package/dist/{C_AudioPlayer-DlB6eNsa.css.map → C_AudioPlayer-CcBtt71m.css.map} +1 -1
- package/dist/C_AudioPlayer.css +47 -47
- 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-D02zci-i.css.map → C_AvatarGroup-CtPhfH9h.css.map} +1 -1
- package/dist/{C_AvatarGroup-DatHaUlY.css.map → C_AvatarGroup-M1dNPH3E.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-DYDRDe2O.css.map → C_Barcode-DjTmDkbQ.css.map} +1 -1
- package/dist/{C_Barcode-muJdc_O4.css.map → C_Barcode-Do1Ozsmh.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.js.map +1 -1
- package/dist/C_Breadcrumb2.js.map +1 -1
- package/dist/{C_Captcha-9_hk6VmY.css.map → C_Captcha-CZmAETly.css.map} +1 -1
- package/dist/{C_Captcha-MtASlJ0f.css.map → C_Captcha-Ccq3DMrR.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_Chat-CJ8KESTM.css.map +1 -0
- package/dist/C_Chat-DzV4AFLd.css.map +1 -0
- package/dist/C_Chat.css +78 -72
- 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-Bam08Qv3.css.map → C_City-Cv5BESaN.css.map} +1 -1
- package/dist/{C_City-Bb3W-KaN.css.map → C_City-DNKv4MpH.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-DPZlNSxL.css.map +1 -0
- package/dist/C_Code-avZjAnHD.css.map +1 -0
- package/dist/C_Code.css +3 -3
- 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-CWkFCqNQ.css.map → C_CollapsePanel-BkOivqn3.css.map} +1 -1
- package/dist/{C_CollapsePanel-pcVJA_4z.css.map → C_CollapsePanel-CedsEM0N.css.map} +1 -1
- package/dist/C_CollapsePanel.css +35 -35
- 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-B3Cgz_wJ.css.map → C_ContextMenu-CCsCeI39.css.map} +1 -1
- package/dist/{C_ContextMenu-u1LixF3_.css.map → C_ContextMenu-DOTBeltf.css.map} +1 -1
- package/dist/C_ContextMenu.css +17 -17
- 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-Civir5-I.css.map → C_Cron-C0-8b5af.css.map} +1 -1
- package/dist/{C_Cron-iw3qpMsy.css.map → C_Cron-DqHQ92LN.css.map} +1 -1
- package/dist/C_Cron.css +37 -37
- 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.map +1 -1
- package/dist/{C_Draggable-BCjIvIwT.css.map → C_Draggable-Bq6o0qXn.css.map} +1 -1
- package/dist/{C_Draggable-DwkSlCOS.css.map → C_Draggable-r6nhx3yM.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-C49qURgb.css.map +1 -0
- package/dist/C_Editor-DuxBD9Qg.css.map +1 -0
- package/dist/C_Editor.css +60 -29
- 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-BhcbiXsV.css.map → C_FilePreview-BVarVvnD.css.map} +1 -1
- package/dist/{C_FilePreview-DJudcIbW.css.map → C_FilePreview-DHGlV4OR.css.map} +1 -1
- package/dist/C_FilePreview.css +91 -91
- 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-BtcAPIRi.css.map → C_Form-BciQUPpS.css.map} +1 -1
- package/dist/{C_Form-D_gwQ7hC.css.map → C_Form-CKHvXL3O.css.map} +1 -1
- package/dist/C_Form.css +222 -222
- 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-Bi4XYjjk.css.map → C_FormSearch-Bmd2CmG6.css.map} +1 -1
- package/dist/{C_FormSearch-DUGOoX0u.css.map → C_FormSearch-DBNtnjaL.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-CJk3SSUJ.css.map → C_FormulaEditor-3WG2vtQl.css.map} +1 -1
- package/dist/{C_FormulaEditor-Cy7mjfVO.css.map → C_FormulaEditor-Cm0CokN5.css.map} +1 -1
- package/dist/C_FormulaEditor.css +78 -78
- 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-1U4VlG7X.css.map +1 -0
- package/dist/C_FullCalendar-DLUdCtqf.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-BNtNpLLD.css.map → C_GlobalSearch-B6wK3m3k.css.map} +1 -1
- package/dist/{C_GlobalSearch-BlMeQ2D9.css.map → C_GlobalSearch-DoPjldFm.css.map} +1 -1
- package/dist/C_GlobalSearch.css +112 -112
- package/dist/C_GlobalSearch.js.map +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_GlobalSearch2.js.map +1 -1
- package/dist/C_Guide.d.cts +2 -2
- package/dist/C_Guide.d.ts +2 -2
- 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.map +1 -1
- package/dist/{C_ImageCropper-BqZpkZfU.css.map → C_ImageCropper-D3L2-J_J.css.map} +1 -1
- package/dist/{C_ImageCropper-CylwGuzS.css.map → C_ImageCropper-DrmUlaLi.css.map} +1 -1
- package/dist/C_ImageCropper.css +10 -10
- 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.js.map +1 -1
- package/dist/C_Language2.js.map +1 -1
- package/dist/{C_Login-BkdnkBKX.css.map → C_Login-Cst_W1XC.css.map} +1 -1
- package/dist/{C_Login-VkMM6OJ2.css.map → C_Login-DWZ_6K1x.css.map} +1 -1
- package/dist/C_Login.css +72 -72
- 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-DNnBcY70.css.map → C_Map-BCJmDnJT.css.map} +1 -1
- package/dist/{C_Map-LEXIx6zM.css.map → C_Map-WUMXSAfy.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 +1 -0
- package/dist/C_Markdown-C7Lg0_9z.css.map +1 -0
- package/dist/C_Markdown.css +48 -42
- 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_OrgChart-ChZu346B.css.map +1 -0
- package/dist/C_OrgChart-DqBufOv5.css.map +1 -0
- package/dist/C_OrgChart.cjs +1 -0
- package/dist/C_OrgChart.css +282 -0
- package/dist/C_OrgChart.d.cts +2 -0
- package/dist/C_OrgChart.d.ts +2 -0
- package/dist/C_OrgChart.js +1 -0
- package/dist/C_OrgChart.js.map +1 -0
- package/dist/C_OrgChart2.js +2 -0
- package/dist/C_OrgChart2.js.map +1 -0
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/{C_QRCode-CFNTda_1.css.map → C_QRCode-DMxSyogU.css.map} +1 -1
- package/dist/{C_QRCode-CmWr9lK-.css.map → C_QRCode-G7fiAkm4.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-BDx4ctsE.css.map → C_Signature-BJMvVPWT.css.map} +1 -1
- package/dist/{C_Signature-Bz_uNbwv.css.map → C_Signature-BJUHx2BF.css.map} +1 -1
- package/dist/C_Signature.css +15 -15
- 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-BNPbaut7.css.map +1 -0
- package/dist/C_Skeleton-Djsjw8XY.css.map +1 -0
- package/dist/C_Skeleton.cjs +1 -0
- package/dist/C_Skeleton.css +253 -0
- package/dist/C_Skeleton.d.cts +2 -0
- package/dist/C_Skeleton.d.ts +2 -0
- package/dist/C_Skeleton.js +1 -0
- package/dist/C_Skeleton.js.map +1 -0
- package/dist/C_Skeleton2.js +2 -0
- package/dist/C_Skeleton2.js.map +1 -0
- package/dist/{C_SplitPane-BOwr1C7K.css.map → C_SplitPane-Br2eK8IG.css.map} +1 -1
- package/dist/{C_SplitPane-N-a_D-7F.css.map → C_SplitPane-DuyzUhKB.css.map} +1 -1
- package/dist/C_SplitPane.css +31 -31
- 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-BHYNJI1l.css.map +1 -0
- package/dist/C_Steps-DY7vl-4I.css.map +1 -0
- package/dist/C_Steps.css +38 -38
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- 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-B8hpzOcR.css.map +1 -0
- package/dist/C_Table-CGP3n_u0.css.map +1 -0
- package/dist/C_Table.css +118 -93
- package/dist/C_Table.d.cts +2 -2
- package/dist/C_Table.d.ts +2 -2
- package/dist/C_Table.js.map +1 -1
- package/dist/C_Table2.js +1 -1
- package/dist/C_Table2.js.map +1 -1
- package/dist/{C_TagsView-JIkRrAHT.css.map → C_TagsView-BsutyC3U.css.map} +1 -1
- package/dist/{C_TagsView-mrh0FN4H.css.map → C_TagsView-Crm7yWg9.css.map} +1 -1
- package/dist/C_TagsView.css +36 -36
- package/dist/C_TagsView.d.cts +1 -1
- package/dist/C_TagsView.d.ts +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.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_Time-Bd_e1YDN.css.map +1 -0
- package/dist/C_Time-CKb_fwdm.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-BKkimrZx.css.map → C_Timeline-DG70WtJP.css.map} +1 -1
- package/dist/{C_Timeline-DTuSCX6p.css.map → C_Timeline-Dzxmmdjg.css.map} +1 -1
- package/dist/C_Timeline.css +45 -45
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.d.ts +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-BOB6OBqS.css.map → C_Transfer-CCEqnC-v.css.map} +1 -1
- package/dist/{C_Transfer-Dpq7ezWC.css.map → C_Transfer-CStPm4NP.css.map} +1 -1
- package/dist/C_Transfer.css +31 -31
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.d.ts +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-D98nX9qT.css.map → C_Tree-B-Le4hjQ.css.map} +1 -1
- package/dist/{C_Tree-ulfm7b-P.css.map → C_Tree-DnGc_MPb.css.map} +1 -1
- package/dist/C_Tree.css +33 -33
- 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-S30RmC9t.css.map → C_Upload-CFAxVGVz.css.map} +1 -1
- package/dist/{C_Upload-i8LB_29U.css.map → C_Upload-D8_QeSV0.css.map} +1 -1
- package/dist/C_Upload.css +14 -9
- package/dist/C_Upload.js.map +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_Upload2.js.map +1 -1
- package/dist/{C_VideoPlayer-4J96tKfK.css.map → C_VideoPlayer-Cdgv4Zq0.css.map} +1 -1
- package/dist/{C_VideoPlayer-D35seHkm.css.map → C_VideoPlayer-rm0MODUv.css.map} +1 -1
- package/dist/C_VideoPlayer.css +13 -13
- package/dist/C_VideoPlayer.js.map +1 -1
- package/dist/C_VideoPlayer2.js +1 -1
- package/dist/C_VideoPlayer2.js.map +1 -1
- package/dist/{C_VtableGantt-C2lxFmWg.css.map → C_VtableGantt-BpY-Rng3.css.map} +1 -1
- package/dist/{C_VtableGantt-Dwnkw_WL.css.map → C_VtableGantt-DB87-jdS.css.map} +1 -1
- package/dist/C_VtableGantt.css +15 -15
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +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_WorkFlow-2hJfvvTK.css.map → C_WorkFlow-7F6op6qN.css.map} +1 -1
- package/dist/{C_WorkFlow-DHoNjl8-.css.map → C_WorkFlow-Cy3HWA6A.css.map} +1 -1
- package/dist/C_WorkFlow.css +108 -108
- 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 +1 -1
- package/dist/constants2.d.ts +1 -1
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.ts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -20
- package/dist/index.d.ts +22 -20
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.ts +4 -4
- package/dist/index13.vue.d.ts +2 -2
- package/dist/index14.vue.d.ts +85 -7
- package/dist/index15.vue.d.ts +7 -7
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.ts +3 -3
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.ts +87 -40
- package/dist/index21.vue.d.ts +47 -27
- package/dist/index22.vue.d.ts +95 -79
- package/dist/index23.vue.d.ts +24 -7
- package/dist/index24.vue.d.ts +76 -100
- package/dist/index25.vue.d.ts +7 -70
- package/dist/index26.vue.d.ts +99 -649
- package/dist/index27.vue.d.ts +81 -0
- package/dist/index28.vue.d.ts +662 -0
- package/dist/index3.vue.d.ts +2 -2
- package/dist/index4.vue.d.ts +3 -3
- package/dist/index6.vue.d.ts +2 -2
- package/dist/index8.vue.d.ts +1 -1
- package/dist/menuAdapter.js.map +1 -1
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/resolver.js.map +1 -1
- package/dist/style.css +2305 -1693
- package/dist/useCollapsePanel.d.ts +5 -5
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.ts +4 -4
- package/dist/useDynamicFormState.d.ts +8 -8
- package/dist/useInfiniteScroll.d.ts +1 -1
- package/dist/useModalEdit.d.ts +52 -6
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +2 -2
- package/dist/useSplitResize.d.ts +5 -5
- package/dist/useTimeSelection.d.ts +1 -1
- package/dist/useTreeOperations.d.ts +4 -4
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/package.json +5 -1
- package/dist/C_ActionBar-DYG0Yf3A.css.map +0 -1
- package/dist/C_ActionBar-MAjRhqcI.css.map +0 -1
- package/dist/C_Chat-CcjZdAwu.css.map +0 -1
- package/dist/C_Chat-Diq7tyWU.css.map +0 -1
- package/dist/C_Code-BFi5xxnM.css.map +0 -1
- package/dist/C_Code-CZ7yfnri.css.map +0 -1
- package/dist/C_Editor-D0_6UhIa.css.map +0 -1
- package/dist/C_Editor-OlxIF9-5.css.map +0 -1
- package/dist/C_FullCalendar-BQA0OjGB.css.map +0 -1
- package/dist/C_FullCalendar-ChJUosAi.css.map +0 -1
- package/dist/C_Markdown-Kujzx1qG.css.map +0 -1
- package/dist/C_Markdown-YCAmBbNF.css.map +0 -1
- package/dist/C_Steps-Bk1krgiR.css.map +0 -1
- package/dist/C_Steps-Dn2CMpy1.css.map +0 -1
- package/dist/C_Table-BV1wUw6f.css.map +0 -1
- package/dist/C_Table-LlJ-JEdm.css.map +0 -1
- package/dist/C_Time-BzyQVvTS.css.map +0 -1
- package/dist/C_Time-DmpKLQHc.css.map +0 -1
package/dist/C_Form2.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./C_Editor2.js";import{NAlert as r,NBadge as i,NButton as a,NButtonGroup as o,NCard as s,NCascader as c,NCheckbox as l,NCheckboxGroup as u,NColorPicker as d,NDatePicker as f,NEmpty as p,NForm as m,NFormItem as h,NGrid as g,NGridItem as _,NInput as v,NInputNumber as y,NProgress as b,NRadio as x,NRadioGroup as S,NRate as C,NSelect as w,NSlider as ee,NSpace as T,NStep as te,NSteps as E,NSwitch as ne,NTabPane as re,NTabs as D,NTag as O,NTimePicker as k,NUpload as ie}from"naive-ui";import{Fragment as A,computed as j,createBlock as M,createCommentVNode as N,createElementBlock as P,createElementVNode as F,createTextVNode as I,createVNode as L,defineComponent as R,getCurrentInstance as ae,h as z,inject as oe,mergeProps as se,nextTick as ce,normalizeClass as B,normalizeStyle as V,onMounted as H,openBlock as U,reactive as W,readonly as G,ref as K,renderList as q,renderSlot as le,resolveDynamicComponent as J,toDisplayString as Y,toRaw as ue,unref as X,vShow as de,watch as Z,watchEffect as fe,withCtx as Q,withDirectives as pe,withKeys as $}from"vue";import{VueDraggable as me}from"vue-draggable-plus";import{mergeRules as he}from"@robot-admin/form-validate";const ge={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1},_e=[`steps`,`custom`];function ve(e){return{...ge,...e}}function ye(e){return!(e.showActions===!1||_e.includes(e.layout))}const be={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:null,upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:null},xe=e=>be[e]??null;function Se(e,t,n,r){let i=W({}),a=W({}),o=j(()=>e.value.filter(e=>e.show!==!1)),s=()=>{try{Object.keys(a).forEach(e=>delete a[e]),e.value.forEach(e=>{if(e.prop in i||(i[e.prop]=e.value===void 0?xe(e.type):e.value),e.rules?.length){let t=e.rules.every(e=>typeof e.validator==`function`);a[e.prop]=t?he(e.rules):e.rules}})}catch(e){console.error(`[C_Form] 初始化失败:`,e)}},c=e=>{t.value.validateOnChange&&ce(()=>{u(e).catch(()=>{})})},l=async()=>{if(!n.value)throw Error(`[C_Form] 表单引用不存在`);try{await n.value.validate(),r(`validate-success`,_())}catch(e){throw r(`validate-error`,e),e}},u=async e=>{if(!n.value)throw Error(`[C_Form] 表单引用不存在`);let t=Array.isArray(e)?e:[e];try{await n.value.validate()}catch(e){if(!Array.isArray(e))throw e;let n=e.filter(e=>e?.some(e=>{let n=e;return typeof n.field==`string`&&t.includes(n.field)}));if(n.length>0)throw n}},d=e=>{n.value&&(e?(Array.isArray(e)?e:[e]).forEach(e=>{i[e]!==void 0&&(i[e]=i[e])}):n.value.restoreValidation())},f=async(t,n)=>{try{let n=e.value.filter(t).map(e=>e.prop);return n.length===0||await u(n),!0}catch(e){return console.warn(`[C_Form] ${n}验证失败:`,e),!1}},p=async e=>{let n=t.value.steps?.steps?.[e]?.key;return n?f(e=>e.layout?.step===n,`步骤 ${e} `):!0},m=async e=>f(t=>t.layout?.tab===e,`标签页 ${e} `),h=async()=>f(e=>!!e.layout?.dynamic,`动态字段 `),g=async e=>f(t=>t.layout?.group===e,`自定义分组 ${e} `),_=()=>({...i}),v=e=>{Object.assign(i,e)},y=()=>{try{d(),e.value.forEach(e=>{let t=e.value===void 0?xe(e.type):e.value;i[e.prop]=t})}catch(e){console.error(`[C_Form] 重置表单失败:`,e)}};return H(()=>{s(),Z(()=>e.value,()=>s(),{deep:!0}),Z(()=>i,e=>r(`update:modelValue`,{...e}),{deep:!0})}),{formModel:i,formRules:a,visibleOptions:o,initialize:s,handleFieldChange:c,validate:l,validateField:u,validateStep:p,validateTab:m,validateDynamicFields:h,validateCustomGroup:g,clearValidation:d,getModel:_,setFields:v,resetFields:y,setFieldValue:async(e,t,n=!1)=>{i[e]=t,n&&await u(e)},getFieldValue:e=>i[e],setFieldsValue:async(e,t=!1)=>{Object.assign(i,e),t&&await l()},handleSubmit:async()=>{try{await l(),r(`submit`,{model:_(),form:n.value})}catch(e){console.warn(`[C_Form] 表单验证失败:`,e)}},handleReset:y}}function Ce(e){return{input:t=>z(e.NInput,{...t}),textarea:t=>z(e.NInput,{...t,type:`textarea`}),inputNumber:t=>z(e.NInputNumber,{...t}),switch:t=>z(e.NSwitch,{...t}),slider:t=>z(e.NSlider,{...t}),rate:t=>z(e.NRate,{...t}),datePicker:t=>z(e.NDatePicker,{...t}),daterange:t=>z(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>z(e.NTimePicker,{...t}),cascader:t=>z(e.NCascader,{...t}),colorPicker:t=>z(e.NColorPicker,{...t}),select:(t,n)=>z(e.NSelect,{...t,options:n.children?.map(e=>({value:e.value,label:e.label,disabled:e.disabled}))||[]}),checkbox:(t,n)=>z(e.NCheckboxGroup,{...t},{default:()=>z(e.NSpace,{},{default:()=>n.children?.map(t=>z(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>z(e.NRadioGroup,{...t},{default:()=>z(e.NSpace,{},{default:()=>n.children?.map(t=>z(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>z(e.NUpload,{fileList:t.value||[],"onUpdate:fileList":e=>{t[`onUpdate:value`]?.(e)},...n.attrs},{trigger:()=>i?.slots?.uploadClick?.()||z(e.NButton,{type:`primary`},{default:()=>`选择文件`}),tip:()=>i?.slots?.uploadTip?.()||null}),editor:(t,n,r)=>z(e.C_Editor,{editorId:`editor-${n.prop}`,modelValue:t.value||``,placeholder:n.placeholder,disabled:r.disabled,readonly:r.readonly,"onUpdate:modelValue":e=>{t[`onUpdate:value`]?.(e)},...n.attrs})}}const we={};function Te(e,t){we[e]=t}function Ee(e,t,n,r,i,a){let o={...Ce(i),...we},s=t=>{let n={value:e[t.prop],"onUpdate:value":n=>{e[t.prop]=n,r(t.prop)}};return t.type===`textarea`&&(n.type=`textarea`),t.placeholder&&(n.placeholder=t.placeholder),n},c=e=>{try{let t=o[e.type];return t?t({...s(e),...e.attrs},e,n.value,{slots:a,components:i}):(console.warn(`[C_Form] 未支持的组件类型: ${e.type}`),null)}catch(t){return console.error(`[C_Form] 渲染表单项失败:`,t,e),null}};return{renderFormItem:c,formItems:j(()=>t.value.map(e=>z(i.NFormItem,{label:e.label,path:e.prop,key:e.prop,required:!!e.rules?.length},{default:()=>c(e)}))),getBaseProps:s}}const De={class:`c-form-default`};var Oe=t(R({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(e,t)=>(U(),P(`div`,De,[(U(!0),P(A,null,q(e.formItems,e=>(U(),M(J(e),{key:e.key}))),128))]))}}),[[`__scopeId`,`data-v-a0e973bb`]]),ke=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=j(()=>280),r=j(()=>t.layoutConfig?.inline?.gap??16),i=j(()=>16),a=j(()=>{let e=t.layoutConfig?.inline?.align;return e===`start`||e===`end`?e:`center`}),o=j(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return`center`}}),s=j(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=j(()=>({display:`flex`,flexWrap:`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(e,t)=>(U(),P(`div`,{class:`c-form-inline`,style:V(c.value)},[(U(!0),P(A,null,q(e.formItems,(e,t)=>(U(),P(`div`,{key:l(e,t),class:`c-form-inline-item`,style:V(u(t))},[(U(),M(J(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-f8d8544a`]]);const Ae={class:`c-grid-layout`},je={class:`config-header`},Me={class:`config-controls`},Ne={class:`config-label`},Pe={class:`item-wrapper`};var Fe=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(t,{expose:n}){let i=t,a=K(!!import.meta.env?.DEV),o=W({cols:24,gutter:16,responsive:!0}),c=j(()=>i.layoutConfig?.grid||{}),l=j(()=>c.value.showConfigPanel),u=j(()=>c.value.showStats),d=j(()=>({cols:l.value?o.cols:c.value.cols??24,gutter:l.value?o.gutter:c.value.gutter??16,responsive:l.value?o.responsive:c.value.responsive??!0})),f=j(()=>({cols:d.value.cols,xGap:d.value.gutter,yGap:d.value.gutter,responsive:d.value.responsive?`screen`:`self`})),p=j(()=>[{key:`cols`,label:`列数`,component:`NInputNumber`,value:j({get:()=>o.cols,set:e=>o.cols=e}),props:{min:1,max:48,size:`small`}},{key:`gutter`,label:`间距`,component:`NInputNumber`,value:j({get:()=>o.gutter,set:e=>o.gutter=e}),props:{min:0,max:48,size:`small`}},{key:`responsive`,label:`响应式`,component:`NSwitch`,value:j({get:()=>o.responsive,set:e=>o.responsive=e}),props:{size:`small`}}]),m=j(()=>`列数: ${d.value.cols} | 间距: ${d.value.gutter}px | 项目: ${i.formItems.length}个`),h=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,v=(e,t)=>{let n=i.options?.[e]?.layout;return n?.[t]??n?.grid?.[t]},y=()=>{let{cols:e}=d.value;return e<=12?e:e<=24?12:8},b=e=>{let t=v(e,`span`),n=v(e,`offset`),r=v(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=d.value.cols?t:y(),offset:typeof n==`number`&&n>=0&&n<d.value.cols?n:0,suffix:!!r}},x=()=>{a.value&&console.log(`Grid config updated:`,ue(o))};return Z(c,e=>{e.cols!==void 0&&(o.cols=e.cols),e.gutter!==void 0&&(o.gutter=e.gutter),e.responsive!==void 0&&(o.responsive=e.responsive)},{immediate:!0}),a.value&&fe(()=>{let e=i.options.length,t=i.formItems.length;e>0&&e!==t&&console.warn(`[GridLayout] 配置数量(${e})与表单项数量(${t})不匹配`)}),n({updateGridConfig:e=>Object.assign(o,e),getCurrentConfig:()=>({...d.value}),getGridInfo:()=>({...d.value,itemCount:i.formItems.length})}),(t,n)=>{let i=s,o=_,c=g,d=r;return U(),P(`div`,Ae,[N(` 配置面板 `),l.value?(U(),M(i,{key:0,size:`small`,bordered:!1,class:`config-panel`},{header:Q(()=>[F(`div`,je,[L(e,{name:`mdi:view-grid`,size:18}),n[0]||=F(`span`,null,`网格配置`,-1)])]),default:Q(()=>[F(`div`,Me,[(U(!0),P(A,null,q(p.value,e=>(U(),P(`div`,{key:e.key,class:`config-item`},[F(`span`,Ne,Y(e.label)+`:`,1),(U(),M(J(e.component),se({value:e.value,"onUpdate:value":t=>e.value=t},{ref_for:!0},e.props,{"onUpdate:value":x}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1})):N(`v-if`,!0),N(` 网格容器 `),L(c,se(f.value,{class:`grid-container`}),{default:Q(()=>[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(o,se({key:h(e,t)},{ref_for:!0},b(t),{class:`grid-item`}),{default:Q(()=>[F(`div`,Pe,[(U(),M(J(e)))])]),_:2},1040))),128))]),_:1},16),N(` 统计信息 `),u.value&&a.value?(U(),M(d,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:Q(()=>[L(e,{name:`mdi:information-outline`,size:16}),n[1]||=I(` 网格信息 `,-1)]),default:Q(()=>[I(` `+Y(m.value),1)]),_:1})):N(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-0f32651a`]]);const Ie={class:`c-form-card`},Le={class:`flex items-center gap-2`},Re={class:`config-controls`},ze={class:`config-item`},Be={class:`flex items-center gap-2`},Ve={class:`text-xs min-w-12`},He={class:`config-item`},Ue={class:`config-item`},We={class:`config-item`},Ge={class:`flex items-center gap-3`},Ke={class:`card-header`},qe={class:`header-info`},Je={class:`header-text`},Ye={key:0},Xe={class:`header-actions`},Ze={class:`field-stats`},Qe={class:`card-content`},$e={key:0,class:`progress-section`},et={class:`action-content`},tt={class:`status-summary`},nt={class:`status-item`},rt={class:`progress-display`},it={class:`text-sm min-w-12`},at={class:`action-buttons`};var ot=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},formData:{default:()=>({})}},setup(t){let n=t,r=K(20),o=K(!0),c=K(!0),l=K(!0),u=K(`vertical`),d=K({}),f=j(()=>n.layoutConfig?.card?.groups||[]),p=j(()=>f.value.length>0),m=j(()=>n.layoutConfig?.card?.showLayoutConfig??!0),h=j(()=>n.layoutConfig?.card?.showActionPanel??!0),g=j(()=>p.value?`layout-${u.value}`:`layout-single`),_=j(()=>{if(!p.value)return[];let e=new Map;return f.value.forEach(t=>{e.set(t.key,[])}),n.formItems.forEach((t,r)=>{let i=(n.options?.[r])?.layout?.group||f.value[0]?.key||`default`;e.has(i)||e.set(i,[]),e.get(i).push(t)}),f.value.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),v=j(()=>{let e=Object.keys(d.value);return e.length>0&&e.every(e=>d.value[e])}),y=j(()=>{if(!n.options||n.options.length===0)return 0;let e=n.options.filter(e=>{let t=n.formData?.[e.prop||``];return C(t)}).length;return Math.round(e/n.options.length*100)}),C=e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:!0,w=e=>n.options?n.options.filter(t=>t.layout?.group===e.config.key).filter(e=>{let t=n.formData?.[e.prop||``];return C(t)}).length:0,T=e=>{if(e.items.length===0)return 0;let t=w(e);return Math.round(t/e.items.length*100)},te=e=>{let t={basic:`mdi:account`,contact:`mdi:phone`,preferences:`mdi:cog`,settings:`mdi:cog`,info:`mdi:information`,default:`mdi:form-select`};return t[e]||t.default},E=e=>{d.value[e]=!d.value[e]},re=()=>{let e=!v.value;f.value.forEach(t=>{d.value[t.key]=e})};return H(()=>{let e=n.layoutConfig?.card;e?.direction&&(u.value=e.direction),e?.showProgress!==void 0&&(l.value=e.showProgress),f.value.forEach(e=>{d.value[e.key]=!1})}),(t,n)=>{let f=ee,C=ne,D=x,O=S,k=s,ie=i,j=a,R=b;return U(),P(`div`,Ie,[N(` 布局配置面板 `),p.value&&m.value?(U(),M(k,{key:0,class:`layout-config-panel`,bordered:!1},{header:Q(()=>[F(`div`,Le,[L(e,{name:`mdi:cog`,size:18}),n[4]||=F(`span`,null,`布局配置`,-1)])]),default:Q(()=>[F(`div`,Re,[F(`div`,ze,[n[5]||=F(`span`,null,`卡片间距`,-1),F(`div`,Be,[L(f,{value:r.value,"onUpdate:value":n[0]||=e=>r.value=e,min:12,max:32,step:4,class:`w-24`},null,8,[`value`]),F(`span`,Ve,Y(r.value)+`px`,1)])]),F(`div`,He,[n[6]||=F(`span`,null,`显示图标`,-1),L(C,{value:o.value,"onUpdate:value":n[1]||=e=>o.value=e,size:`small`},null,8,[`value`])]),F(`div`,Ue,[n[7]||=F(`span`,null,`可折叠`,-1),L(C,{value:c.value,"onUpdate:value":n[2]||=e=>c.value=e,size:`small`},null,8,[`value`])]),F(`div`,We,[n[10]||=F(`span`,null,`布局方向`,-1),L(O,{value:u.value,"onUpdate:value":n[3]||=e=>u.value=e,size:`small`},{default:Q(()=>[L(D,{value:`vertical`},{default:Q(()=>n[8]||=[I(`垂直`,-1)]),_:1,__:[8]}),L(D,{value:`horizontal`},{default:Q(()=>n[9]||=[I(`水平`,-1)]),_:1,__:[9]})]),_:1},8,[`value`])])])]),_:1})):N(`v-if`,!0),N(` 表单内容区域 `),F(`div`,{class:B([`form-content`,g.value]),style:V({gap:`${r.value}px`})},[N(` 无分组时的单卡片模式 `),p.value?(U(),P(A,{key:1},[N(` 有分组时的多卡片模式 `),(U(!0),P(A,null,q(_.value,t=>(U(),M(k,{key:t.config.key,class:B([`group-card`,[`${t.config.key}-card`,{collapsed:c.value&&d.value[t.config.key]}]]),hoverable:``},{header:Q(()=>[F(`div`,Ke,[F(`div`,qe,[o.value&&t.config.icon?(U(),M(e,{key:0,name:t.config.icon,size:20,class:`card-icon`},null,8,[`name`])):o.value?(U(),M(e,{key:1,name:te(t.config.key),size:20,class:`card-icon`},null,8,[`name`])):N(`v-if`,!0),F(`div`,Je,[F(`h3`,null,Y(t.config.title),1),t.config.description?(U(),P(`p`,Ye,Y(t.config.description),1)):N(`v-if`,!0)])]),F(`div`,Xe,[N(` 统计信息 `),F(`div`,Ze,[L(ie,{value:t.items.length,type:`info`,"show-zero":``},null,8,[`value`]),L(ie,{value:`${w(t)}/${t.items.length}`,type:w(t)===t.items.length?`success`:`warning`},null,8,[`value`,`type`])]),N(` 折叠按钮 `),c.value?(U(),M(j,{key:0,quaternary:``,circle:``,size:`small`,onClick:e=>E(t.config.key)},{icon:Q(()=>[L(e,{name:d.value[t.config.key]?`mdi:chevron-down`:`mdi:chevron-up`,size:18},null,8,[`name`])]),_:2},1032,[`onClick`])):N(`v-if`,!0)])])]),default:Q(()=>[pe(F(`div`,Qe,[N(` 进度指示器 `),l.value?(U(),P(`div`,$e,[L(R,{percentage:T(t),color:T(t)===100?`#52c41a`:`#1890ff`,"show-indicator":!1,class:`mb-4`},null,8,[`percentage`,`color`])])):N(`v-if`,!0),N(` 表单项 `),(U(!0),P(A,null,q(t.items,e=>(U(),M(J(e),{key:e.key}))),128))],512),[[de,!d.value[t.config.key]]])]),_:2},1032,[`class`]))),128))],64)):(U(),M(k,{key:0,class:`single-card`,hoverable:``},{header:Q(()=>[F(`div`,Ge,[o.value?(U(),M(e,{key:0,name:`mdi:form-select`,size:18,style:{color:`#3b82f6`}})):N(`v-if`,!0),n[11]||=F(`span`,null,`表单信息`,-1)])]),default:Q(()=>[(U(!0),P(A,null,q(t.formItems,e=>(U(),M(J(e),{key:e.key}))),128))]),_:1}))],6),N(` 统一操作面板 `),p.value&&h.value?(U(),M(k,{key:1,class:`action-panel`,bordered:!1},{default:Q(()=>[F(`div`,et,[F(`div`,tt,[F(`div`,nt,[n[12]||=F(`span`,{class:`label`},`完成进度:`,-1),F(`div`,rt,[L(R,{percentage:y.value,"show-indicator":!1,color:y.value===100?`#52c41a`:`#1890ff`,class:`flex-1`},null,8,[`percentage`,`color`]),F(`span`,it,Y(y.value)+`%`,1)])])]),F(`div`,at,[c.value?(U(),M(j,{key:0,onClick:re},{icon:Q(()=>[L(e,{name:v.value?`mdi:unfold-more-horizontal`:`mdi:unfold-less-horizontal`,size:18},null,8,[`name`])]),default:Q(()=>[I(` `+Y(v.value?`展开全部`:`折叠全部`),1)]),_:1})):N(`v-if`,!0)])])]),_:1})):N(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-6fd4b008`]]);const st={class:`c-form-tabs`},ct={key:0,class:`single-panel`},lt={class:`tabs-container`},ut={key:0,class:`tab-header`},dt={class:`tab-description`},ft={class:`tab-form-items`},pt={key:0,class:`tabs-actions`};var mt=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(t,{expose:n,emit:r}){let o=t,s=r,c=K(``),l=W({}),u=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),d=j(()=>{let e=u(),t=o.layoutConfig?.tabs||{};return{...e,...t}}),f=j(()=>d.value.tabs.length>0),m=j(()=>{if(!f.value)return[];let e=new Map;return d.value.tabs.forEach(t=>{e.set(t.key,[])}),o.formItems.forEach((t,n)=>{let r=(o.options?.[n])?.layout?.tab||d.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),d.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),h=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`tab-item-${t}`},g=async()=>{if(!c.value)return!0;try{return s(`tab-validate`,c.value),l[c.value]=!0,!0}catch(e){return console.error(`[Tabs Layout] 标签验证失败:`,e),l[c.value]=!1,!1}},_=async e=>{if(!e||e===c.value)return!0;if(!m.value.some(t=>t.config.key===e))return!1;try{return d.value.validateBeforeSwitch&&c.value&&!await g()?!1:(c.value&&s(`tab-before-change`,c.value,e),c.value=e,s(`tab-change`,e,m.value.findIndex(t=>t.config.key===e)),!0)}catch(e){return console.error(`[Tabs Layout] 标签切换失败:`,e),!1}},v=e=>{_(e)},y=e=>{s(`tab-close`,e)},b=()=>{s(`tab-add`)},x=()=>{if(!f.value||m.value.length===0)return;let{defaultTab:e}=d.value,t=e||m.value[0]?.config.key;t&&t!==c.value&&(c.value=t,ce(()=>{let e=m.value.findIndex(e=>e.config.key===t);e>=0&&s(`tab-change`,t,e)}))};return H(()=>{x()}),Z(j(()=>d.value.tabs.map(e=>e.key).join(`,`)),()=>{c.value&&!d.value.tabs.some(e=>e.key===c.value)&&x()}),Z(()=>d.value.defaultTab,e=>{e&&e!==c.value&&_(e)}),n({switchToTab:_,validateCurrentTab:g,currentTab:G(c),totalTabs:j(()=>m.value.length),tabsWithItems:G(m)}),(t,n)=>{let r=i,o=T,s=p,l=re,u=D,x=a;return U(),P(`div`,st,[N(` 无标签配置时的单一面板模式 `),f.value?(U(),P(A,{key:1},[N(` 有标签配置时的分标签模式 `),F(`div`,lt,[L(u,{value:c.value,"onUpdate:value":[n[0]||=e=>c.value=e,v],type:d.value.type,size:d.value.size,placement:d.value.placement,animated:d.value.animated,closable:d.value.closable,addable:d.value.addable,class:`form-tabs`,onClose:y,onAdd:b},{default:Q(()=>[(U(!0),P(A,null,q(m.value,t=>(U(),M(l,{key:t.config.key,name:t.config.key,tab:t.config.title,disabled:t.config.disabled,closable:t.config.closable},{tab:Q(()=>[L(o,{align:`center`,size:8},{default:Q(()=>[t.config.icon?(U(),M(e,{key:0,name:t.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):N(`v-if`,!0),F(`span`,null,Y(t.config.title),1),d.value.showCount?(U(),M(r,{key:1,value:t.items.length,max:99,show:t.items.length>0,type:`info`},null,8,[`value`,`show`])):N(`v-if`,!0)]),_:2},1024)]),default:Q(()=>[d.value.showTabHeader&&t.config.description?(U(),P(`div`,ut,[F(`p`,dt,Y(t.config.description),1)])):N(`v-if`,!0),F(`div`,ft,[(U(!0),P(A,null,q(t.items,(e,t)=>(U(),M(J(e),{key:h(e,t)}))),128))]),t.items.length===0?(U(),M(s,{key:1,description:`暂无表单项`,class:`tab-empty`})):N(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),N(` 标签页操作按钮 `),d.value.showActions?(U(),P(`div`,pt,[L(o,{justify:`space-between`},{default:Q(()=>[L(o,null,{default:Q(()=>[d.value.validateBeforeSwitch?(U(),M(x,{key:0,type:`primary`,size:`small`,onClick:g},{default:Q(()=>[L(e,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),n[1]||=I(` 验证当前标签 `,-1)]),_:1,__:[1]})):N(`v-if`,!0)]),_:1}),L(o,null,{default:Q(()=>[le(t.$slots,`tab-actions`,{currentTab:c.value,totalTabs:m.value.length,validateTab:g,switchToTab:_},void 0,!0)]),_:3})]),_:3})])):N(`v-if`,!0)])],2112)):(U(),P(`div`,ct,[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(J(e),{key:h(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-e847fa5c`]]);const ht={class:`c-form-steps`},gt={key:0,class:`single-panel`},_t={class:`steps-container`},vt={key:0,class:`step-header`},yt={class:`step-title`},bt={key:0,class:`step-description`},xt={class:`step-form-items`},St={class:`steps-actions`};var Ct=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:n,emit:r}){let i=t,o=r,c=K(0),l=K(!1),u=W({}),d=j(()=>{let e=i.layoutConfig?.steps||{};return{steps:e.steps||[],vertical:e.vertical||!1,size:e.size||`medium`,showStepHeader:e.showStepHeader!==!1,validateBeforeNext:e.validateBeforeNext||!1,prevButtonText:e.prevButtonText||`上一步`,nextButtonText:e.nextButtonText||`下一步`,defaultStep:e.defaultStep||0}}),f=j(()=>d.value.steps.length>0),p=j(()=>{if(!f.value)return[];let e=new Map;return d.value.steps.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.step||d.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),d.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),m=j(()=>{for(let e=0;e<=c.value;e++)if(u[e]===!1)return`error`;return`process`}),h=j(()=>c.value===0),g=j(()=>c.value===p.value.length-1),_=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},v=async()=>{try{let e=await Promise.resolve(o(`step-validate`,c.value))!==!1;return u[c.value]=e,e}catch(e){return console.error(`[Steps Layout] 步骤验证失败:`,e),u[c.value]=!1,!1}},y=async(e,t=!1)=>{if(e<0||e>=p.value.length)return!1;if(e===c.value)return!0;try{return l.value=!0,t&&d.value.validateBeforeNext&&!await v()?!1:(await o(`step-before-change`,c.value,e),c.value=e,o(`step-change`,c.value,p.value[c.value].config.key),!0)}catch(e){return console.error(`[Steps Layout] 步骤切换失败:`,e),!1}finally{l.value=!1}},b=async()=>{await y(c.value+1,!0)},x=()=>{y(c.value-1)},S=async e=>{p.value[e]?.config.disabled||await y(e,e>c.value)},C=()=>{if(!f.value||p.value.length===0)return;let{defaultStep:e}=d.value;c.value=e>=0&&e<p.value.length&&!p.value[e]?.config.disabled?e:0};return Z(j(()=>d.value.steps.map(e=>e.key).join(`,`)),()=>{C()}),H(()=>{C()}),n({nextStep:b,previousStep:x,goToStep:S,validateCurrentStep:v,currentStep:G(c),totalSteps:j(()=>p.value.length)}),(t,n)=>{let r=te,i=E,o=s,u=a,v=T;return U(),P(`div`,ht,[N(` 无步骤配置时的单一面板模式 `),f.value?(U(),P(A,{key:1},[N(` 有步骤配置时的分步骤模式 `),F(`div`,_t,[N(` 步骤指示器 `),L(i,{current:c.value+1,status:m.value,size:d.value.size,vertical:d.value.vertical,class:`steps-indicator`},{default:Q(()=>[(U(!0),P(A,null,q(p.value,e=>(U(),M(r,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),N(` 步骤内容区域 `),L(o,{class:`steps-content`,bordered:!1},{default:Q(()=>[(U(!0),P(A,null,q(p.value,(e,t)=>pe((U(),P(`div`,{key:e.config.key,class:`step-panel`},[N(` 步骤标题和描述 `),d.value.showStepHeader?(U(),P(`div`,vt,[F(`h3`,yt,Y(e.config.title),1),e.config.description?(U(),P(`p`,bt,Y(e.config.description),1)):N(`v-if`,!0)])):N(`v-if`,!0),N(` 步骤内的表单项 `),F(`div`,xt,[(U(!0),P(A,null,q(e.items,(e,t)=>(U(),M(J(e),{key:_(e,t)}))),128))])])),[[de,c.value===t]])),128))]),_:1}),N(` 步骤操作按钮 `),F(`div`,St,[L(v,{justify:`space-between`},{default:Q(()=>[c.value>0?(U(),M(u,{key:0,disabled:l.value,onClick:x},{default:Q(()=>[L(e,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),I(` `+Y(d.value.prevButtonText),1)]),_:1},8,[`disabled`])):N(`v-if`,!0),n[0]||=F(`div`,null,null,-1),L(v,null,{default:Q(()=>[c.value<p.value.length-1?(U(),M(u,{key:0,type:`primary`,loading:l.value,onClick:b},{default:Q(()=>[I(Y(d.value.nextButtonText)+` `,1),L(e,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`loading`])):N(`v-if`,!0),le(t.$slots,`step-actions`,{currentStep:c.value,totalSteps:p.value.length,isFirstStep:h.value,isLastStep:g.value,nextStep:b,previousStep:x,goToStep:S},void 0,!0)]),_:3})]),_:3,__:[0]})])])],2112)):(U(),P(`div`,gt,[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(J(e),{key:_(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-04fd4a74`]]);const wt={maxFields:20,autoSave:!1,enableSort:!0,showControls:!0,showItemControls:!0},Tt=[{label:`文本输入`,value:`input`},{label:`数字输入`,value:`inputNumber`},{label:`多行文本`,value:`textarea`},{label:`下拉选择`,value:`select`},{label:`开关切换`,value:`switch`},{label:`评分组件`,value:`rate`}],Et=()=>{let e=W({config:{...wt},baseFields:[],dynamicFields:[],hiddenFieldIds:new Set,fieldCounter:0,isInitialized:!1}),t=j(()=>[...e.baseFields,...e.dynamicFields.map(t=>({...t,show:!e.hiddenFieldIds.has(t.prop)}))]),n=j(()=>t.value.filter(e=>e.show!==!1)),r=j(()=>e.dynamicFields.length),i=j(()=>e.hiddenFieldIds.size),a=j(()=>e.dynamicFields.length<e.config.maxFields),o=j(()=>e.hiddenFieldIds.size===0);return{state:G(e),allFields:t,visibleFields:n,dynamicFieldsCount:r,hiddenFieldsCount:i,canAddMoreFields:a,allVisible:o,FIELD_TYPE_OPTIONS:Tt,addField:(t={})=>{if(!a.value){console.warn(`[useDynamicFormState] 已达到最大字段数量限制`);return}e.fieldCounter++;let n=t.type||Tt[Math.floor(Math.random()*Tt.length)].value,r={id:`dynamic_field_${e.fieldCounter}`,type:n,prop:t.prop||`dynamic_${e.fieldCounter}`,label:t.label||`动态字段 ${e.fieldCounter}`,placeholder:t.placeholder||`请输入${t.label||`内容`}`,visible:!0,removable:!0,created:Date.now(),layout:t.layout||{span:12},...t};e.dynamicFields.push(r),console.log(`[useDynamicFormState] 添加字段:`,r)},removeField:t=>{if(e.dynamicFields.length===0){console.warn(`[useDynamicFormState] 没有可移除的动态字段`);return}let n=t??e.dynamicFields.length-1;if(n<0||n>=e.dynamicFields.length){console.warn(`[useDynamicFormState] 字段索引超出范围`);return}let r=e.dynamicFields.splice(n,1)[0];r&&(e.hiddenFieldIds.delete(r.prop),console.log(`[useDynamicFormState] 移除字段:`,r.prop))},clearDynamicFields:()=>{console.log(`[useDynamicFormState] 清空动态字段:`,e.dynamicFields.length),e.dynamicFields.forEach(t=>e.hiddenFieldIds.delete(t.prop)),e.dynamicFields.length=0,e.fieldCounter=0},toggleFieldVisibility:t=>{e.hiddenFieldIds.has(t)?(e.hiddenFieldIds.delete(t),console.log(`[useDynamicFormState] 显示字段:`,t)):(e.hiddenFieldIds.add(t),console.log(`[useDynamicFormState] 隐藏字段:`,t))},toggleAllVisibility:()=>{o.value?(e.dynamicFields.forEach(t=>{e.hiddenFieldIds.add(t.prop)}),console.log(`[useDynamicFormState] 隐藏所有动态字段`)):(e.hiddenFieldIds.clear(),console.log(`[useDynamicFormState] 显示所有字段`))},updateConfig:t=>{Object.assign(e.config,t),console.log(`[useDynamicFormState] 更新配置:`,t)},exportConfig:()=>{let t={baseFields:e.baseFields,dynamicFields:e.dynamicFields,config:e.config,hiddenFields:Array.from(e.hiddenFieldIds),timestamp:Date.now()};return JSON.stringify(t,null,2)},initialize:(t,n={})=>{console.log(`[useDynamicFormState] 初始化状态:`,{baseFieldsCount:t.length,config:n}),e.baseFields=[...t],Object.assign(e.config,n),e.isInitialized=!0,console.log(`[useDynamicFormState] 初始化完成`)}}},Dt=Symbol(`dynamicFormState`),Ot={class:`c-form-dynamic`},kt={key:0,class:`dynamic-controls`},At={class:`max-fields-config`},jt={class:`dynamic-stats`},Mt={class:`dynamic-controls-fallback`},Nt={class:`dynamic-form-items`};var Pt=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},dynamicFormState:{default:null}},emits:[`field-add`,`field-remove`,`fields-clear`],setup(t,{expose:n}){let o=t,c=oe(Dt,null),l=j(()=>o.dynamicFormState||c),u=j(()=>!!l.value),d=j(()=>o.layoutConfig?.dynamic?.grid?.cols??24),f=j(()=>o.layoutConfig?.dynamic?.grid?.gutter??16),p=j(()=>o.layoutConfig?.dynamic?.controls?.showControls!==!1),m=j(()=>l.value?.state.config.maxFields??o.layoutConfig?.dynamic?.dynamic?.maxFields??50),h=j(()=>l.value?.dynamicFieldsCount.value??0),v=j(()=>l.value?.canAddMoreFields.value??!1),b=j(()=>o.formItems.length),x=(e,t)=>e.key?.toString()||e.props?.path||`dynamic-item-${t}`,S=e=>{let t=o.options?.[e]?.layout?.span;return typeof t==`number`&&t>0&&t<=d.value?t:Math.min(12,d.value)},C=e=>{if(!l.value)return!1;let t=e.props?.path||e.key?.toString()||``;return l.value.state.dynamicFields.some(e=>e.prop===t)};return n({addField:()=>l.value?.addField(),removeField:()=>l.value?.removeField(),clearAllDynamic:()=>l.value?.clearDynamicFields(),isDynamicStateAvailable:u,dynamicState:l}),import.meta.env?.DEV&&fe(()=>{let{options:e,formItems:t}=o;e&&e.length!==t.length&&console.warn(`[Dynamic Layout] 配置项数量(${e.length})与表单项数量(${t.length})不匹配`),console.log(`[Dynamic Layout]`,u.value?`动态模式已启用`:`运行在静态模式`,{totalFields:b.value,dynamicFields:h.value,stateSource:o.dynamicFormState?`props透传`:`inject注入`})}),(t,n)=>{let o=i,c=a,w=T,ee=y,te=O,E=s,ne=r,re=_,D=g;return U(),P(`div`,Ot,[N(` 动态控制面板 `),p.value&&u.value?(U(),P(`div`,kt,[L(E,{size:`small`,title:`动态表单控制`,bordered:!1},{"header-extra":Q(()=>[L(o,{value:h.value,type:`warning`},{default:Q(()=>[L(e,{name:`mdi:layers`,size:16})]),_:1},8,[`value`])]),default:Q(()=>[L(w,{justify:`space-between`,align:`center`},{default:Q(()=>[L(w,null,{default:Q(()=>[L(c,{size:`small`,type:`primary`,disabled:!v.value,onClick:n[0]||=e=>l.value.addField()},{icon:Q(()=>[L(e,{name:`mdi:plus`,size:14})]),default:Q(()=>[I(` 添加字段 (`+Y(h.value)+`/`+Y(m.value)+`) `,1)]),_:1},8,[`disabled`]),L(c,{size:`small`,type:`warning`,disabled:h.value===0,onClick:n[1]||=e=>l.value.removeField()},{icon:Q(()=>[L(e,{name:`mdi:minus`,size:14})]),default:Q(()=>[n[4]||=I(` 移除字段 `,-1)]),_:1,__:[4]},8,[`disabled`]),L(c,{size:`small`,type:`error`,disabled:h.value===0,onClick:n[2]||=e=>l.value.clearDynamicFields()},{icon:Q(()=>[L(e,{name:`mdi:delete-sweep`,size:14})]),default:Q(()=>[n[5]||=I(` 清空动态 `,-1)]),_:1,__:[5]},8,[`disabled`])]),_:1}),N(` 最大字段数配置 `),F(`div`,At,[n[6]||=F(`span`,null,`最大字段数:`,-1),L(ee,{value:m.value,"onUpdate:value":n[3]||=e=>e&&l.value.updateConfig({maxFields:e}),min:5,max:50,size:`small`,style:{width:`100px`}},null,8,[`value`])])]),_:1}),F(`div`,jt,[L(w,null,{default:Q(()=>[L(te,{type:`info`},{default:Q(()=>[I(`总字段: `+Y(b.value),1)]),_:1}),L(te,{type:`warning`},{default:Q(()=>[I(`动态: `+Y(h.value),1)]),_:1})]),_:1})])]),_:1})])):p.value&&!u.value?(U(),P(A,{key:1},[N(` 状态不可用时的提示 `),F(`div`,Mt,[L(E,{size:`small`,title:`动态表单控制 (静态模式)`,bordered:!1},{default:Q(()=>[L(ne,{type:`info`,"show-icon":``},{icon:Q(()=>[L(e,{name:`mdi:information-outline`,size:16})]),default:Q(()=>[n[7]||=I(` 当前为静态模式,如需动态功能请在父组件中提供动态表单状态。 `,-1)]),_:1,__:[7]})]),_:1})])],2112)):N(`v-if`,!0),N(` 表单项渲染区域 `),F(`div`,Nt,[L(D,{cols:d.value,"x-gap":f.value,"y-gap":f.value},{default:Q(()=>[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(re,{key:x(e,t),span:S(t)},{default:Q(()=>[F(`div`,{class:B([`dynamic-item-wrapper`,{"is-dynamic-field":C(e)}])},[(U(),M(J(e)))],2)]),_:2},1032,[`span`]))),128))]),_:1},8,[`cols`,`x-gap`,`y-gap`])])])}}}),[[`__scopeId`,`data-v-dd1d4f2c`]]);const Ft={class:`custom-layout`},It={class:`toolbar-content`},Lt={class:`mode-section`},Rt={class:`stats-section`},zt={class:`stat-item`},Bt={class:`stat-value`},Vt={class:`stat-item`},Ht={class:`stat-value`},Ut={class:`actions-section`},Wt={class:`design-tools`},Gt={class:`tool-group`},Kt={key:0,class:`canvas-hint`},qt={class:`areas-container`},Jt={class:`area-header`},Yt={class:`area-info`},Xt=[`onClick`],Zt={class:`area-controls`},Qt={class:`field-preview`},$t={class:`field-label`},en={class:`field-type`},tn={key:0,class:`area-drop-zone`},nn={class:`field-name`},rn={class:`field-type-tag`},an={key:0,class:`empty-layout`},on={key:1,class:`form-container`},sn={class:`form-areas`};var cn=t(R({__name:`index`,props:{options:{default:()=>[]},formItems:{default:()=>[]},formData:{default:()=>({})}},emits:[`fields-change`,`export-data`],setup(e,{emit:t}){let n=e,r=t,i=K(!0),c=K([]),l=K([]),u=K(``),d=j(()=>n.options?.length>0?n.options:n.formItems?.map(e=>{let t=e.props;return{prop:t?.path||``,label:t?.label||t?.path||``,type:`input`,show:!0}}).filter(e=>e.prop)||[]),f=j(()=>c.value.reduce((e,t)=>e+t.fields.length,0)),m=()=>`${Date.now()}-${Math.random().toString(36).substring(2,11)}`,h=e=>({input:`输入框`,select:`下拉框`,radio:`单选框`,checkbox:`复选框`,textarea:`文本域`,date:`日期`,number:`数字`})[e]||e,g=e=>n.formItems?.find(t=>t.props?.path===e.prop)||null,_=e=>{let t={id:m(),title:`${e===`horizontal`?`水平`:e===`vertical`?`垂直`:`网格`}区域`,type:e,fields:[]};c.value.push(t)},y=e=>{let t=c.value.findIndex(t=>t.id===e);t!==-1&&c.value.splice(t,1)},b=e=>({...e,id:`${e.prop}-${m()}`}),x=(e,t)=>{let n=c.value.find(t=>t.id===e);if(n){let e=n.fields.findIndex(e=>e.id===t);e!==-1&&n.fields.splice(e,1)}},S=()=>{let e=JSON.stringify(c.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`layout-config-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},C=()=>{c.value=[]},w=()=>{r(`export-data`,{layout:c.value,formData:n.formData,timestamp:new Date().toISOString()})};return fe(()=>{let e=new Set(c.value.flatMap(e=>e.fields.map(e=>e.prop)));l.value=d.value.filter(t=>!e.has(t.prop)).map(e=>({...e,id:e.prop}))}),Z(()=>c.value,()=>{r(`fields-change`,c.value.flatMap(e=>e.fields.map(e=>({...e,id:void 0}))))},{deep:!0}),(e,t)=>{let n=a,r=o,d=s,m=v,ee=O,T=p;return U(),P(`div`,Ft,[N(` 顶部工具栏 `),L(d,{bordered:!1,class:`toolbar-card`},{default:Q(()=>[F(`div`,It,[N(` 模式切换 `),F(`div`,Lt,[t[12]||=F(`span`,{class:`section-label`},`自定义模式:`,-1),L(r,null,{default:Q(()=>[L(n,{type:i.value?`primary`:`default`,onClick:t[0]||=e=>i.value=!0,size:`small`},{default:Q(()=>t[10]||=[I(` 🎨 设计模式 `,-1)]),_:1,__:[10]},8,[`type`]),L(n,{type:i.value?`default`:`primary`,onClick:t[1]||=e=>i.value=!1,size:`small`},{default:Q(()=>t[11]||=[I(` 📝 填写模式 `,-1)]),_:1,__:[11]},8,[`type`])]),_:1})]),N(` 统计信息 `),F(`div`,Rt,[F(`div`,zt,[F(`div`,Bt,Y(c.value.length),1),t[13]||=F(`div`,{class:`stat-label`},`自定义区域`,-1)]),F(`div`,Vt,[F(`div`,Ht,Y(f.value),1),t[14]||=F(`div`,{class:`stat-label`},`字段总数`,-1)])]),N(` 操作按钮 `),F(`div`,Ut,[i.value?(U(),P(A,{key:0},[L(n,{secondary:``,onClick:S,size:`small`},{default:Q(()=>t[15]||=[I(` 💾 保存布局 `,-1)]),_:1,__:[15]}),L(n,{secondary:``,onClick:C,size:`small`},{default:Q(()=>t[16]||=[I(` 🔄 重置布局 `,-1)]),_:1,__:[16]})],64)):(U(),M(n,{key:1,secondary:``,onClick:w,size:`small`},{default:Q(()=>t[17]||=[I(` 📊 导出数据 `,-1)]),_:1,__:[17]}))])])]),_:1}),N(` 设计模式工具面板 `),i.value?(U(),M(d,{key:0,class:`design-panel`,title:`🎨 设计工具`},{default:Q(()=>[F(`div`,Wt,[F(`div`,Gt,[t[21]||=F(`span`,{class:`group-label`},`添加区域:`,-1),L(n,{onClick:t[2]||=e=>_(`horizontal`),size:`small`},{default:Q(()=>t[18]||=[I(` ➡️ 水平区域 `,-1)]),_:1,__:[18]}),L(n,{onClick:t[3]||=e=>_(`vertical`),size:`small`},{default:Q(()=>t[19]||=[I(` ⬇️ 垂直区域 `,-1)]),_:1,__:[19]}),L(n,{onClick:t[4]||=e=>_(`grid`),size:`small`},{default:Q(()=>t[20]||=[I(` ⚏ 网格区域 `,-1)]),_:1,__:[20]})])])]),_:1})):N(`v-if`,!0),N(` 主画布区域 `),F(`div`,{class:B([`layout-canvas`,{"design-mode":i.value}])},[N(` 设计模式 `),i.value?(U(),P(A,{key:0},[c.value.length===0?(U(),P(`div`,Kt,t[22]||=[F(`div`,{class:`hint-content`},[F(`h3`,null,`🎨 开始自定义你的布局`),F(`p`,null,`点击上方按钮添加区域`)],-1)])):(U(),P(A,{key:1},[N(` 区域列表 `),F(`div`,qt,[(U(!0),P(A,null,q(c.value,e=>(U(),P(`div`,{key:e.id,class:B([`custom-area`,`area-${e.type}`])},[F(`div`,Jt,[F(`div`,Yt,[u.value===e.id?(U(),M(m,{key:0,value:e.title,"onUpdate:value":t=>e.title=t,size:`small`,onBlur:t[5]||=e=>u.value=``,onKeyup:t[6]||=$(e=>u.value=``,[`enter`]),class:`title-input`},null,8,[`value`,`onUpdate:value`])):(U(),P(`span`,{key:1,class:`area-title`,onClick:t=>u.value=e.id},Y(e.title),9,Xt)),L(ee,{size:`small`},{default:Q(()=>[I(Y(e.fields.length)+` 字段`,1)]),_:2},1024)]),F(`div`,Zt,[L(n,{text:``,onClick:t=>y(e.id),size:`tiny`,type:`error`,title:`删除区域`},{default:Q(()=>t[23]||=[I(` 🗑️ `,-1)]),_:2,__:[23]},1032,[`onClick`])])]),N(` 字段容器(可拖入) `),L(X(me),{modelValue:e.fields,"onUpdate:modelValue":t=>e.fields=t,class:`area-fields`,group:{name:`form-fields`,pull:!0,put:!0},animation:200,"ghost-class":`field-ghost`,"item-key":`id`},{default:Q(()=>[(U(!0),P(A,null,q(e.fields,r=>(U(),P(`div`,{key:r.id,class:`field-item`},[F(`div`,Qt,[t[25]||=F(`span`,{class:`drag-handle`},`⠿`,-1),F(`span`,$t,Y(r.label||r.prop),1),F(`span`,en,Y(h(r.type)),1),L(n,{text:``,size:`tiny`,type:`error`,onClick:t=>x(e.id,r.id),title:`移出字段`},{default:Q(()=>t[24]||=[I(` ✕ `,-1)]),_:2,__:[24]},1032,[`onClick`])])]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`]),e.fields.length===0?(U(),P(`div`,tn,` 从下方字段池拖拽字段到这里 `)):N(`v-if`,!0)],2))),128))])],2112)),N(` 字段池(可拖出) `),L(d,{class:`field-pool`,title:`📦 可用字段`},{default:Q(()=>[L(X(me),{modelValue:l.value,"onUpdate:modelValue":t[7]||=e=>l.value=e,class:`pool-fields-grid`,group:{name:`form-fields`,pull:`clone`,put:!0},animation:200,sort:!1,"ghost-class":`field-ghost`,"item-key":`id`,clone:b},{default:Q(()=>[(U(!0),P(A,null,q(l.value,e=>(U(),P(`div`,{key:e.id,class:`pool-field`},[t[26]||=F(`span`,{class:`drag-handle`},`⠿`,-1),F(`span`,nn,Y(e.label||e.prop),1),F(`span`,rn,Y(h(e.type)),1)]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):(U(),P(A,{key:1},[N(` 填写模式 `),c.value.length===0?(U(),P(`div`,an,[L(T,{description:`尚未设计布局`},{extra:Q(()=>[L(n,{onClick:t[8]||=e=>i.value=!0,type:`primary`},{default:Q(()=>t[27]||=[I(` 🎨 开始设计 `,-1)]),_:1,__:[27]})]),_:1})])):(U(),P(`div`,on,[F(`div`,sn,[(U(!0),P(A,null,q(c.value,e=>(U(),P(`div`,{key:e.id,class:B([`form-area`,`area-${e.type}`])},[e.fields.length>0?(U(),M(d,{key:0,title:e.title},{default:Q(()=>[F(`div`,{class:B([`area-form-items`,`layout-${e.type}`])},[(U(!0),P(A,null,q(e.fields,e=>(U(),M(J(g(e)),{key:e.prop}))),128))],2)]),_:2},1032,[`title`])):(U(),M(T,{key:1,description:`此区域暂无字段`,size:`small`},{extra:Q(()=>[L(n,{onClick:t[9]||=e=>i.value=!0,size:`small`,secondary:``},{default:Q(()=>t[28]||=[I(` 🎨 添加字段 `,-1)]),_:1,__:[28]})]),_:1}))],2))),128))])]))],64))],2)])}}}),[[`__scopeId`,`data-v-732076e2`]]),ln=R({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(e,{expose:t,emit:r}){let i={default:Oe,inline:ke,grid:Fe,card:ot,tabs:mt,steps:Ct,dynamic:Pt,custom:cn},o={NFormItem:h,NInput:v,NInputNumber:y,NSwitch:ne,NSlider:ee,NRate:C,NDatePicker:f,NTimePicker:k,NCascader:c,NColorPicker:d,NSelect:w,NCheckboxGroup:u,NCheckbox:l,NRadioGroup:S,NRadio:x,NUpload:ie,NButton:a,NSpace:T,C_Editor:n},s=e,p=r,g=j(()=>ve(s.config)),_=K(null),{formModel:b,formRules:te,visibleOptions:E,initialize:re,handleFieldChange:D,validate:O,validateField:A,validateStep:P,validateTab:F,validateDynamicFields:R,validateCustomGroup:z,clearValidation:oe,getModel:ce,setFields:B,resetFields:V,setFieldValue:H,getFieldValue:W,setFieldsValue:G,handleSubmit:q,handleReset:Y}=Se(j(()=>s.options),g,_,p),{formItems:ue}=Ee(b,E,g,D,o,ae()?.slots),de=j(()=>i[g.value.layout]||i.default),fe=j(()=>({type:g.value.layout,grid:g.value.grid,inline:g.value.inline,card:g.value.card,tabs:g.value.tabs,steps:g.value.steps,dynamic:g.value.dynamic,custom:g.value.custom})),pe=j(()=>ye(g.value)),$=(e,...t)=>{let n=g.value[e];n?.(...t)},me=e=>{g.value.onFieldsChange?.(e)},he=(e,t)=>{g.value.onStepChange?.(e,t)},ge=async(e,t)=>(g.value.onStepBeforeChange?.(e,t),!0),_e=async e=>{try{let t=g.value.steps?.steps?.[e]?.key;if(!t)return!0;let n=s.options.filter(e=>e.layout?.step===t).map(e=>e.prop);return n.length===0?!0:(await A(n),g.value.onStepValidate?.(e),!0)}catch(t){return console.warn(`[C_Form] 步骤 ${e} 验证失败:`,t),!1}};return Z(()=>s.modelValue,e=>{e&&Object.assign(b,e)},{immediate:!0,deep:!0}),t({validate:O,validateField:A,validateStep:P,validateTab:F,validateDynamicFields:R,validateCustomGroup:z,clearValidation:oe,getModel:ce,setFields:B,resetFields:V,setFieldValue:H,getFieldValue:W,setFieldsValue:G,formRef:_,formModel:b,initialize:re,layoutType:j(()=>g.value.layout),shouldShowDefaultActions:pe}),(e,t)=>(U(),M(X(m),se({ref_key:`formRef`,ref:_,model:X(b),rules:X(te),"validate-on-rule-change":!1,"label-placement":g.value.labelPlacement,"label-width":g.value.labelWidth,size:g.value.size,disabled:g.value.disabled,readonly:g.value.readonly},e.$attrs),{default:Q(()=>[N(` 布局组件渲染 `),(U(),M(J(de.value),{"form-items":X(ue),"layout-config":fe.value,options:X(E),"form-data":X(b),onTabChange:t[0]||=e=>$(`onTabChange`,e),onTabValidate:t[1]||=e=>$(`onTabValidate`,e),onStepChange:he,onStepBeforeChange:ge,onStepValidate:_e,onFieldAdd:t[2]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[3]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[4]||=(e,t)=>g.value.onFieldToggle?.(e,t),onFieldsClear:t[5]||=e=>$(`onFieldsClear`),onRenderModeChange:t[6]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[7]||=(e,t)=>g.value.onGroupToggle?.(e,t),onGroupReset:t[8]||=e=>$(`onGroupReset`,e),onValidateSuccess:t[9]||=e=>p(`validate-success`,e),onValidateError:t[10]||=e=>p(`validate-error`,e),onFieldsChange:me},null,40,[`form-items`,`layout-config`,`options`,`form-data`])),N(` 表单操作按钮区域(只在特定布局中显示) `),pe.value?(U(),M(X(h),{key:0,style:{"margin-top":`20px`}},{default:Q(()=>[le(e.$slots,`action`,{form:_.value,model:X(b),validate:X(O),validateField:X(A),reset:X(V),setFields:X(B),getModel:X(ce),clearValidation:X(oe)},()=>[L(X(T),null,{default:Q(()=>[L(X(a),{type:`primary`,onClick:X(q)},{default:Q(()=>t[11]||=[I(`提交`,-1)]),_:1,__:[11]},8,[`onClick`]),L(X(a),{onClick:X(Y)},{default:Q(()=>t[12]||=[I(`重置`,-1)]),_:1,__:[12]},8,[`onClick`])]),_:1})])]),_:3})):N(`v-if`,!0)]),_:3},16,[`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`]))}});export{Te as a,ge as c,ye as d,Et as i,_e as l,Dt as n,Ee as o,Tt as r,Se as s,ln as t,ve as u};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./C_Editor2.js";import{NAlert as r,NBadge as i,NButton as a,NButtonGroup as o,NCard as s,NCascader as c,NCheckbox as l,NCheckboxGroup as u,NColorPicker as d,NDatePicker as f,NEmpty as p,NForm as m,NFormItem as h,NGrid as g,NGridItem as _,NInput as v,NInputNumber as y,NProgress as b,NRadio as x,NRadioGroup as S,NRate as C,NSelect as w,NSlider as ee,NSpace as T,NStep as te,NSteps as E,NSwitch as ne,NTabPane as re,NTabs as D,NTag as O,NTimePicker as k,NUpload as ie}from"naive-ui";import{Fragment as A,computed as j,createBlock as M,createCommentVNode as N,createElementBlock as P,createElementVNode as F,createTextVNode as I,createVNode as L,defineComponent as R,getCurrentInstance as ae,h as z,inject as oe,mergeProps as se,nextTick as ce,normalizeClass as B,normalizeStyle as V,onMounted as H,openBlock as U,reactive as W,readonly as G,ref as K,renderList as q,renderSlot as le,resolveDynamicComponent as J,toDisplayString as Y,toRaw as ue,unref as X,vShow as de,watch as Z,watchEffect as fe,withCtx as Q,withDirectives as pe,withKeys as $}from"vue";import{VueDraggable as me}from"vue-draggable-plus";import{mergeRules as he}from"@robot-admin/form-validate";const ge={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1},_e=[`steps`,`custom`];function ve(e){return{...ge,...e}}function ye(e){return!(e.showActions===!1||_e.includes(e.layout))}const be={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:null,upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:null},xe=e=>be[e]??null;function Se(e,t,n,r){let i=W({}),a=W({}),o=j(()=>e.value.filter(e=>e.show!==!1)),s=()=>{try{Object.keys(a).forEach(e=>delete a[e]),e.value.forEach(e=>{if(e.prop in i||(i[e.prop]=e.value===void 0?xe(e.type):e.value),e.rules?.length){let t=e.rules.every(e=>typeof e.validator==`function`);a[e.prop]=t?he(e.rules):e.rules}})}catch(e){console.error(`[C_Form] 初始化失败:`,e)}},c=e=>{t.value.validateOnChange&&ce(()=>{u(e).catch(()=>{})})},l=async()=>{if(!n.value)throw Error(`[C_Form] 表单引用不存在`);try{await n.value.validate(),r(`validate-success`,_())}catch(e){throw r(`validate-error`,e),e}},u=async e=>{if(!n.value)throw Error(`[C_Form] 表单引用不存在`);let t=Array.isArray(e)?e:[e];try{await n.value.validate()}catch(e){if(!Array.isArray(e))throw e;let n=e.filter(e=>e?.some(e=>{let n=e;return typeof n.field==`string`&&t.includes(n.field)}));if(n.length>0)throw n}},d=e=>{n.value&&(e?(Array.isArray(e)?e:[e]).forEach(e=>{i[e]!==void 0&&(i[e]=i[e])}):n.value.restoreValidation())},f=async(t,n)=>{try{let n=e.value.filter(t).map(e=>e.prop);return n.length===0||await u(n),!0}catch(e){return console.warn(`[C_Form] ${n}验证失败:`,e),!1}},p=async e=>{let n=t.value.steps?.steps?.[e]?.key;return n?f(e=>e.layout?.step===n,`步骤 ${e} `):!0},m=async e=>f(t=>t.layout?.tab===e,`标签页 ${e} `),h=async()=>f(e=>!!e.layout?.dynamic,`动态字段 `),g=async e=>f(t=>t.layout?.group===e,`自定义分组 ${e} `),_=()=>({...i}),v=e=>{Object.assign(i,e)},y=()=>{try{d(),e.value.forEach(e=>{let t=e.value===void 0?xe(e.type):e.value;i[e.prop]=t})}catch(e){console.error(`[C_Form] 重置表单失败:`,e)}};return H(()=>{s(),Z(()=>e.value,()=>s(),{deep:!0}),Z(()=>i,e=>r(`update:modelValue`,{...e}),{deep:!0})}),{formModel:i,formRules:a,visibleOptions:o,initialize:s,handleFieldChange:c,validate:l,validateField:u,validateStep:p,validateTab:m,validateDynamicFields:h,validateCustomGroup:g,clearValidation:d,getModel:_,setFields:v,resetFields:y,setFieldValue:async(e,t,n=!1)=>{i[e]=t,n&&await u(e)},getFieldValue:e=>i[e],setFieldsValue:async(e,t=!1)=>{Object.assign(i,e),t&&await l()},handleSubmit:async()=>{try{await l(),r(`submit`,{model:_(),form:n.value})}catch(e){console.warn(`[C_Form] 表单验证失败:`,e)}},handleReset:y}}function Ce(e){return{input:t=>z(e.NInput,{...t}),textarea:t=>z(e.NInput,{...t,type:`textarea`}),inputNumber:t=>z(e.NInputNumber,{...t}),switch:t=>z(e.NSwitch,{...t}),slider:t=>z(e.NSlider,{...t}),rate:t=>z(e.NRate,{...t}),datePicker:t=>z(e.NDatePicker,{...t}),daterange:t=>z(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>z(e.NTimePicker,{...t}),cascader:t=>z(e.NCascader,{...t}),colorPicker:t=>z(e.NColorPicker,{...t}),select:(t,n)=>z(e.NSelect,{...t,options:n.children?.map(e=>({value:e.value,label:e.label,disabled:e.disabled}))||[]}),checkbox:(t,n)=>z(e.NCheckboxGroup,{...t},{default:()=>z(e.NSpace,{},{default:()=>n.children?.map(t=>z(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>z(e.NRadioGroup,{...t},{default:()=>z(e.NSpace,{},{default:()=>n.children?.map(t=>z(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>z(e.NUpload,{fileList:t.value||[],"onUpdate:fileList":e=>{t[`onUpdate:value`]?.(e)},...n.attrs},{trigger:()=>i?.slots?.uploadClick?.()||z(e.NButton,{type:`primary`},{default:()=>`选择文件`}),tip:()=>i?.slots?.uploadTip?.()||null}),editor:(t,n,r)=>z(e.C_Editor,{editorId:`editor-${n.prop}`,modelValue:t.value||``,placeholder:n.placeholder,disabled:r.disabled,readonly:r.readonly,"onUpdate:modelValue":e=>{t[`onUpdate:value`]?.(e)},...n.attrs})}}const we={};function Te(e,t){we[e]=t}function Ee(e,t,n,r,i,a){let o={...Ce(i),...we},s=t=>{let n={value:e[t.prop],"onUpdate:value":n=>{e[t.prop]=n,r(t.prop)}};return t.type===`textarea`&&(n.type=`textarea`),t.placeholder&&(n.placeholder=t.placeholder),n},c=e=>{try{let t=o[e.type];return t?t({...s(e),...e.attrs},e,n.value,{slots:a,components:i}):(console.warn(`[C_Form] 未支持的组件类型: ${e.type}`),null)}catch(t){return console.error(`[C_Form] 渲染表单项失败:`,t,e),null}};return{renderFormItem:c,formItems:j(()=>t.value.map(e=>z(i.NFormItem,{label:e.label,path:e.prop,key:e.prop,required:!!e.rules?.length},{default:()=>c(e)}))),getBaseProps:s}}const De={class:`c-form-default`};var Oe=t(R({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(e,t)=>(U(),P(`div`,De,[(U(!0),P(A,null,q(e.formItems,e=>(U(),M(J(e),{key:e.key}))),128))]))}}),[[`__scopeId`,`data-v-a0e973bb`]]),ke=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=j(()=>280),r=j(()=>t.layoutConfig?.inline?.gap??16),i=j(()=>16),a=j(()=>{let e=t.layoutConfig?.inline?.align;return e===`start`||e===`end`?e:`center`}),o=j(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return`center`}}),s=j(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=j(()=>({display:`flex`,flexWrap:`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(e,t)=>(U(),P(`div`,{class:`c-form-inline`,style:V(c.value)},[(U(!0),P(A,null,q(e.formItems,(e,t)=>(U(),P(`div`,{key:l(e,t),class:`c-form-inline-item`,style:V(u(t))},[(U(),M(J(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-ca3767dc`]]);const Ae={class:`c-grid-layout`},je={class:`config-header`},Me={class:`config-controls`},Ne={class:`config-label`},Pe={class:`item-wrapper`};var Fe=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(t,{expose:n}){let i=t,a=K(!!import.meta.env?.DEV),o=W({cols:24,gutter:16,responsive:!0}),c=j(()=>i.layoutConfig?.grid||{}),l=j(()=>c.value.showConfigPanel),u=j(()=>c.value.showStats),d=j(()=>({cols:l.value?o.cols:c.value.cols??24,gutter:l.value?o.gutter:c.value.gutter??16,responsive:l.value?o.responsive:c.value.responsive??!0})),f=j(()=>({cols:d.value.cols,xGap:d.value.gutter,yGap:d.value.gutter,responsive:d.value.responsive?`screen`:`self`})),p=j(()=>[{key:`cols`,label:`列数`,component:`NInputNumber`,value:j({get:()=>o.cols,set:e=>o.cols=e}),props:{min:1,max:48,size:`small`}},{key:`gutter`,label:`间距`,component:`NInputNumber`,value:j({get:()=>o.gutter,set:e=>o.gutter=e}),props:{min:0,max:48,size:`small`}},{key:`responsive`,label:`响应式`,component:`NSwitch`,value:j({get:()=>o.responsive,set:e=>o.responsive=e}),props:{size:`small`}}]),m=j(()=>`列数: ${d.value.cols} | 间距: ${d.value.gutter}px | 项目: ${i.formItems.length}个`),h=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,v=(e,t)=>{let n=i.options?.[e]?.layout;return n?.[t]??n?.grid?.[t]},y=()=>{let{cols:e}=d.value;return e<=12?e:e<=24?12:8},b=e=>{let t=v(e,`span`),n=v(e,`offset`),r=v(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=d.value.cols?t:y(),offset:typeof n==`number`&&n>=0&&n<d.value.cols?n:0,suffix:!!r}},x=()=>{a.value&&console.log(`Grid config updated:`,ue(o))};return Z(c,e=>{e.cols!==void 0&&(o.cols=e.cols),e.gutter!==void 0&&(o.gutter=e.gutter),e.responsive!==void 0&&(o.responsive=e.responsive)},{immediate:!0}),a.value&&fe(()=>{let e=i.options.length,t=i.formItems.length;e>0&&e!==t&&console.warn(`[GridLayout] 配置数量(${e})与表单项数量(${t})不匹配`)}),n({updateGridConfig:e=>Object.assign(o,e),getCurrentConfig:()=>({...d.value}),getGridInfo:()=>({...d.value,itemCount:i.formItems.length})}),(t,n)=>{let i=s,o=_,c=g,d=r;return U(),P(`div`,Ae,[N(` 配置面板 `),l.value?(U(),M(i,{key:0,size:`small`,bordered:!1,class:`config-panel`},{header:Q(()=>[F(`div`,je,[L(e,{name:`mdi:view-grid`,size:18}),n[0]||=F(`span`,null,`网格配置`,-1)])]),default:Q(()=>[F(`div`,Me,[(U(!0),P(A,null,q(p.value,e=>(U(),P(`div`,{key:e.key,class:`config-item`},[F(`span`,Ne,Y(e.label)+`:`,1),(U(),M(J(e.component),se({value:e.value,"onUpdate:value":t=>e.value=t},{ref_for:!0},e.props,{"onUpdate:value":x}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1})):N(`v-if`,!0),N(` 网格容器 `),L(c,se(f.value,{class:`grid-container`}),{default:Q(()=>[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(o,se({key:h(e,t)},{ref_for:!0},b(t),{class:`grid-item`}),{default:Q(()=>[F(`div`,Pe,[(U(),M(J(e)))])]),_:2},1040))),128))]),_:1},16),N(` 统计信息 `),u.value&&a.value?(U(),M(d,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:Q(()=>[L(e,{name:`mdi:information-outline`,size:16}),n[1]||=I(` 网格信息 `,-1)]),default:Q(()=>[I(` `+Y(m.value),1)]),_:1})):N(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-feb1a2b2`]]);const Ie={class:`c-form-card`},Le={class:`flex items-center gap-2`},Re={class:`config-controls`},ze={class:`config-item`},Be={class:`flex items-center gap-2`},Ve={class:`text-xs min-w-12`},He={class:`config-item`},Ue={class:`config-item`},We={class:`config-item`},Ge={class:`flex items-center gap-3`},Ke={class:`card-header`},qe={class:`header-info`},Je={class:`header-text`},Ye={key:0},Xe={class:`header-actions`},Ze={class:`field-stats`},Qe={class:`card-content`},$e={key:0,class:`progress-section`},et={class:`action-content`},tt={class:`status-summary`},nt={class:`status-item`},rt={class:`progress-display`},it={class:`text-sm min-w-12`},at={class:`action-buttons`};var ot=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},formData:{default:()=>({})}},setup(t){let n=t,r=K(20),o=K(!0),c=K(!0),l=K(!0),u=K(`vertical`),d=K({}),f=j(()=>n.layoutConfig?.card?.groups||[]),p=j(()=>f.value.length>0),m=j(()=>n.layoutConfig?.card?.showLayoutConfig??!0),h=j(()=>n.layoutConfig?.card?.showActionPanel??!0),g=j(()=>p.value?`layout-${u.value}`:`layout-single`),_=j(()=>{if(!p.value)return[];let e=new Map;return f.value.forEach(t=>{e.set(t.key,[])}),n.formItems.forEach((t,r)=>{let i=(n.options?.[r])?.layout?.group||f.value[0]?.key||`default`;e.has(i)||e.set(i,[]),e.get(i).push(t)}),f.value.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),v=j(()=>{let e=Object.keys(d.value);return e.length>0&&e.every(e=>d.value[e])}),y=j(()=>{if(!n.options||n.options.length===0)return 0;let e=n.options.filter(e=>{let t=n.formData?.[e.prop||``];return C(t)}).length;return Math.round(e/n.options.length*100)}),C=e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:!0,w=e=>n.options?n.options.filter(t=>t.layout?.group===e.config.key).filter(e=>{let t=n.formData?.[e.prop||``];return C(t)}).length:0,T=e=>{if(e.items.length===0)return 0;let t=w(e);return Math.round(t/e.items.length*100)},te=e=>{let t={basic:`mdi:account`,contact:`mdi:phone`,preferences:`mdi:cog`,settings:`mdi:cog`,info:`mdi:information`,default:`mdi:form-select`};return t[e]||t.default},E=e=>{d.value[e]=!d.value[e]},re=()=>{let e=!v.value;f.value.forEach(t=>{d.value[t.key]=e})};return H(()=>{let e=n.layoutConfig?.card;e?.direction&&(u.value=e.direction),e?.showProgress!==void 0&&(l.value=e.showProgress),f.value.forEach(e=>{d.value[e.key]=!1})}),(t,n)=>{let f=ee,C=ne,D=x,O=S,k=s,ie=i,j=a,R=b;return U(),P(`div`,Ie,[N(` 布局配置面板 `),p.value&&m.value?(U(),M(k,{key:0,class:`layout-config-panel`,bordered:!1},{header:Q(()=>[F(`div`,Le,[L(e,{name:`mdi:cog`,size:18}),n[4]||=F(`span`,null,`布局配置`,-1)])]),default:Q(()=>[F(`div`,Re,[F(`div`,ze,[n[5]||=F(`span`,null,`卡片间距`,-1),F(`div`,Be,[L(f,{value:r.value,"onUpdate:value":n[0]||=e=>r.value=e,min:12,max:32,step:4,class:`w-24`},null,8,[`value`]),F(`span`,Ve,Y(r.value)+`px`,1)])]),F(`div`,He,[n[6]||=F(`span`,null,`显示图标`,-1),L(C,{value:o.value,"onUpdate:value":n[1]||=e=>o.value=e,size:`small`},null,8,[`value`])]),F(`div`,Ue,[n[7]||=F(`span`,null,`可折叠`,-1),L(C,{value:c.value,"onUpdate:value":n[2]||=e=>c.value=e,size:`small`},null,8,[`value`])]),F(`div`,We,[n[10]||=F(`span`,null,`布局方向`,-1),L(O,{value:u.value,"onUpdate:value":n[3]||=e=>u.value=e,size:`small`},{default:Q(()=>[L(D,{value:`vertical`},{default:Q(()=>n[8]||=[I(`垂直`,-1)]),_:1,__:[8]}),L(D,{value:`horizontal`},{default:Q(()=>n[9]||=[I(`水平`,-1)]),_:1,__:[9]})]),_:1},8,[`value`])])])]),_:1})):N(`v-if`,!0),N(` 表单内容区域 `),F(`div`,{class:B([`form-content`,g.value]),style:V({gap:`${r.value}px`})},[N(` 无分组时的单卡片模式 `),p.value?(U(),P(A,{key:1},[N(` 有分组时的多卡片模式 `),(U(!0),P(A,null,q(_.value,t=>(U(),M(k,{key:t.config.key,class:B([`group-card`,[`${t.config.key}-card`,{collapsed:c.value&&d.value[t.config.key]}]]),hoverable:``},{header:Q(()=>[F(`div`,Ke,[F(`div`,qe,[o.value&&t.config.icon?(U(),M(e,{key:0,name:t.config.icon,size:20,class:`card-icon`},null,8,[`name`])):o.value?(U(),M(e,{key:1,name:te(t.config.key),size:20,class:`card-icon`},null,8,[`name`])):N(`v-if`,!0),F(`div`,Je,[F(`h3`,null,Y(t.config.title),1),t.config.description?(U(),P(`p`,Ye,Y(t.config.description),1)):N(`v-if`,!0)])]),F(`div`,Xe,[N(` 统计信息 `),F(`div`,Ze,[L(ie,{value:t.items.length,type:`info`,"show-zero":``},null,8,[`value`]),L(ie,{value:`${w(t)}/${t.items.length}`,type:w(t)===t.items.length?`success`:`warning`},null,8,[`value`,`type`])]),N(` 折叠按钮 `),c.value?(U(),M(j,{key:0,quaternary:``,circle:``,size:`small`,onClick:e=>E(t.config.key)},{icon:Q(()=>[L(e,{name:d.value[t.config.key]?`mdi:chevron-down`:`mdi:chevron-up`,size:18},null,8,[`name`])]),_:2},1032,[`onClick`])):N(`v-if`,!0)])])]),default:Q(()=>[pe(F(`div`,Qe,[N(` 进度指示器 `),l.value?(U(),P(`div`,$e,[L(R,{percentage:T(t),color:T(t)===100?`#52c41a`:`#1890ff`,"show-indicator":!1,class:`mb-4`},null,8,[`percentage`,`color`])])):N(`v-if`,!0),N(` 表单项 `),(U(!0),P(A,null,q(t.items,e=>(U(),M(J(e),{key:e.key}))),128))],512),[[de,!d.value[t.config.key]]])]),_:2},1032,[`class`]))),128))],64)):(U(),M(k,{key:0,class:`single-card`,hoverable:``},{header:Q(()=>[F(`div`,Ge,[o.value?(U(),M(e,{key:0,name:`mdi:form-select`,size:18,style:{color:`#3b82f6`}})):N(`v-if`,!0),n[11]||=F(`span`,null,`表单信息`,-1)])]),default:Q(()=>[(U(!0),P(A,null,q(t.formItems,e=>(U(),M(J(e),{key:e.key}))),128))]),_:1}))],6),N(` 统一操作面板 `),p.value&&h.value?(U(),M(k,{key:1,class:`action-panel`,bordered:!1},{default:Q(()=>[F(`div`,et,[F(`div`,tt,[F(`div`,nt,[n[12]||=F(`span`,{class:`label`},`完成进度:`,-1),F(`div`,rt,[L(R,{percentage:y.value,"show-indicator":!1,color:y.value===100?`#52c41a`:`#1890ff`,class:`flex-1`},null,8,[`percentage`,`color`]),F(`span`,it,Y(y.value)+`%`,1)])])]),F(`div`,at,[c.value?(U(),M(j,{key:0,onClick:re},{icon:Q(()=>[L(e,{name:v.value?`mdi:unfold-more-horizontal`:`mdi:unfold-less-horizontal`,size:18},null,8,[`name`])]),default:Q(()=>[I(` `+Y(v.value?`展开全部`:`折叠全部`),1)]),_:1})):N(`v-if`,!0)])])]),_:1})):N(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-c9b312a4`]]);const st={class:`c-form-tabs`},ct={key:0,class:`single-panel`},lt={class:`tabs-container`},ut={key:0,class:`tab-header`},dt={class:`tab-description`},ft={class:`tab-form-items`},pt={key:0,class:`tabs-actions`};var mt=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(t,{expose:n,emit:r}){let o=t,s=r,c=K(``),l=W({}),u=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),d=j(()=>{let e=u(),t=o.layoutConfig?.tabs||{};return{...e,...t}}),f=j(()=>d.value.tabs.length>0),m=j(()=>{if(!f.value)return[];let e=new Map;return d.value.tabs.forEach(t=>{e.set(t.key,[])}),o.formItems.forEach((t,n)=>{let r=(o.options?.[n])?.layout?.tab||d.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),d.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),h=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`tab-item-${t}`},g=async()=>{if(!c.value)return!0;try{return s(`tab-validate`,c.value),l[c.value]=!0,!0}catch(e){return console.error(`[Tabs Layout] 标签验证失败:`,e),l[c.value]=!1,!1}},_=async e=>{if(!e||e===c.value)return!0;if(!m.value.some(t=>t.config.key===e))return!1;try{return d.value.validateBeforeSwitch&&c.value&&!await g()?!1:(c.value&&s(`tab-before-change`,c.value,e),c.value=e,s(`tab-change`,e,m.value.findIndex(t=>t.config.key===e)),!0)}catch(e){return console.error(`[Tabs Layout] 标签切换失败:`,e),!1}},v=e=>{_(e)},y=e=>{s(`tab-close`,e)},b=()=>{s(`tab-add`)},x=()=>{if(!f.value||m.value.length===0)return;let{defaultTab:e}=d.value,t=e||m.value[0]?.config.key;t&&t!==c.value&&(c.value=t,ce(()=>{let e=m.value.findIndex(e=>e.config.key===t);e>=0&&s(`tab-change`,t,e)}))};return H(()=>{x()}),Z(j(()=>d.value.tabs.map(e=>e.key).join(`,`)),()=>{c.value&&!d.value.tabs.some(e=>e.key===c.value)&&x()}),Z(()=>d.value.defaultTab,e=>{e&&e!==c.value&&_(e)}),n({switchToTab:_,validateCurrentTab:g,currentTab:G(c),totalTabs:j(()=>m.value.length),tabsWithItems:G(m)}),(t,n)=>{let r=i,o=T,s=p,l=re,u=D,x=a;return U(),P(`div`,st,[N(` 无标签配置时的单一面板模式 `),f.value?(U(),P(A,{key:1},[N(` 有标签配置时的分标签模式 `),F(`div`,lt,[L(u,{value:c.value,"onUpdate:value":[n[0]||=e=>c.value=e,v],type:d.value.type,size:d.value.size,placement:d.value.placement,animated:d.value.animated,closable:d.value.closable,addable:d.value.addable,class:`form-tabs`,onClose:y,onAdd:b},{default:Q(()=>[(U(!0),P(A,null,q(m.value,t=>(U(),M(l,{key:t.config.key,name:t.config.key,tab:t.config.title,disabled:t.config.disabled,closable:t.config.closable},{tab:Q(()=>[L(o,{align:`center`,size:8},{default:Q(()=>[t.config.icon?(U(),M(e,{key:0,name:t.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):N(`v-if`,!0),F(`span`,null,Y(t.config.title),1),d.value.showCount?(U(),M(r,{key:1,value:t.items.length,max:99,show:t.items.length>0,type:`info`},null,8,[`value`,`show`])):N(`v-if`,!0)]),_:2},1024)]),default:Q(()=>[d.value.showTabHeader&&t.config.description?(U(),P(`div`,ut,[F(`p`,dt,Y(t.config.description),1)])):N(`v-if`,!0),F(`div`,ft,[(U(!0),P(A,null,q(t.items,(e,t)=>(U(),M(J(e),{key:h(e,t)}))),128))]),t.items.length===0?(U(),M(s,{key:1,description:`暂无表单项`,class:`tab-empty`})):N(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),N(` 标签页操作按钮 `),d.value.showActions?(U(),P(`div`,pt,[L(o,{justify:`space-between`},{default:Q(()=>[L(o,null,{default:Q(()=>[d.value.validateBeforeSwitch?(U(),M(x,{key:0,type:`primary`,size:`small`,onClick:g},{default:Q(()=>[L(e,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),n[1]||=I(` 验证当前标签 `,-1)]),_:1,__:[1]})):N(`v-if`,!0)]),_:1}),L(o,null,{default:Q(()=>[le(t.$slots,`tab-actions`,{currentTab:c.value,totalTabs:m.value.length,validateTab:g,switchToTab:_},void 0,!0)]),_:3})]),_:3})])):N(`v-if`,!0)])],2112)):(U(),P(`div`,ct,[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(J(e),{key:h(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-68d1ce03`]]);const ht={class:`c-form-steps`},gt={key:0,class:`single-panel`},_t={class:`steps-container`},vt={key:0,class:`step-header`},yt={class:`step-title`},bt={key:0,class:`step-description`},xt={class:`step-form-items`},St={class:`steps-actions`};var Ct=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:n,emit:r}){let i=t,o=r,c=K(0),l=K(!1),u=W({}),d=j(()=>{let e=i.layoutConfig?.steps||{};return{steps:e.steps||[],vertical:e.vertical||!1,size:e.size||`medium`,showStepHeader:e.showStepHeader!==!1,validateBeforeNext:e.validateBeforeNext||!1,prevButtonText:e.prevButtonText||`上一步`,nextButtonText:e.nextButtonText||`下一步`,defaultStep:e.defaultStep||0}}),f=j(()=>d.value.steps.length>0),p=j(()=>{if(!f.value)return[];let e=new Map;return d.value.steps.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.step||d.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),d.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),m=j(()=>{for(let e=0;e<=c.value;e++)if(u[e]===!1)return`error`;return`process`}),h=j(()=>c.value===0),g=j(()=>c.value===p.value.length-1),_=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},v=async()=>{try{let e=await Promise.resolve(o(`step-validate`,c.value))!==!1;return u[c.value]=e,e}catch(e){return console.error(`[Steps Layout] 步骤验证失败:`,e),u[c.value]=!1,!1}},y=async(e,t=!1)=>{if(e<0||e>=p.value.length)return!1;if(e===c.value)return!0;try{return l.value=!0,t&&d.value.validateBeforeNext&&!await v()?!1:(await o(`step-before-change`,c.value,e),c.value=e,o(`step-change`,c.value,p.value[c.value].config.key),!0)}catch(e){return console.error(`[Steps Layout] 步骤切换失败:`,e),!1}finally{l.value=!1}},b=async()=>{await y(c.value+1,!0)},x=()=>{y(c.value-1)},S=async e=>{p.value[e]?.config.disabled||await y(e,e>c.value)},C=()=>{if(!f.value||p.value.length===0)return;let{defaultStep:e}=d.value;c.value=e>=0&&e<p.value.length&&!p.value[e]?.config.disabled?e:0};return Z(j(()=>d.value.steps.map(e=>e.key).join(`,`)),()=>{C()}),H(()=>{C()}),n({nextStep:b,previousStep:x,goToStep:S,validateCurrentStep:v,currentStep:G(c),totalSteps:j(()=>p.value.length)}),(t,n)=>{let r=te,i=E,o=s,u=a,v=T;return U(),P(`div`,ht,[N(` 无步骤配置时的单一面板模式 `),f.value?(U(),P(A,{key:1},[N(` 有步骤配置时的分步骤模式 `),F(`div`,_t,[N(` 步骤指示器 `),L(i,{current:c.value+1,status:m.value,size:d.value.size,vertical:d.value.vertical,class:`steps-indicator`},{default:Q(()=>[(U(!0),P(A,null,q(p.value,e=>(U(),M(r,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),N(` 步骤内容区域 `),L(o,{class:`steps-content`,bordered:!1},{default:Q(()=>[(U(!0),P(A,null,q(p.value,(e,t)=>pe((U(),P(`div`,{key:e.config.key,class:`step-panel`},[N(` 步骤标题和描述 `),d.value.showStepHeader?(U(),P(`div`,vt,[F(`h3`,yt,Y(e.config.title),1),e.config.description?(U(),P(`p`,bt,Y(e.config.description),1)):N(`v-if`,!0)])):N(`v-if`,!0),N(` 步骤内的表单项 `),F(`div`,xt,[(U(!0),P(A,null,q(e.items,(e,t)=>(U(),M(J(e),{key:_(e,t)}))),128))])])),[[de,c.value===t]])),128))]),_:1}),N(` 步骤操作按钮 `),F(`div`,St,[L(v,{justify:`space-between`},{default:Q(()=>[c.value>0?(U(),M(u,{key:0,disabled:l.value,onClick:x},{default:Q(()=>[L(e,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),I(` `+Y(d.value.prevButtonText),1)]),_:1},8,[`disabled`])):N(`v-if`,!0),n[0]||=F(`div`,null,null,-1),L(v,null,{default:Q(()=>[c.value<p.value.length-1?(U(),M(u,{key:0,type:`primary`,loading:l.value,onClick:b},{default:Q(()=>[I(Y(d.value.nextButtonText)+` `,1),L(e,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`loading`])):N(`v-if`,!0),le(t.$slots,`step-actions`,{currentStep:c.value,totalSteps:p.value.length,isFirstStep:h.value,isLastStep:g.value,nextStep:b,previousStep:x,goToStep:S},void 0,!0)]),_:3})]),_:3,__:[0]})])])],2112)):(U(),P(`div`,gt,[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(J(e),{key:_(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-7249a960`]]);const wt={maxFields:20,autoSave:!1,enableSort:!0,showControls:!0,showItemControls:!0},Tt=[{label:`文本输入`,value:`input`},{label:`数字输入`,value:`inputNumber`},{label:`多行文本`,value:`textarea`},{label:`下拉选择`,value:`select`},{label:`开关切换`,value:`switch`},{label:`评分组件`,value:`rate`}],Et=()=>{let e=W({config:{...wt},baseFields:[],dynamicFields:[],hiddenFieldIds:new Set,fieldCounter:0,isInitialized:!1}),t=j(()=>[...e.baseFields,...e.dynamicFields.map(t=>({...t,show:!e.hiddenFieldIds.has(t.prop)}))]),n=j(()=>t.value.filter(e=>e.show!==!1)),r=j(()=>e.dynamicFields.length),i=j(()=>e.hiddenFieldIds.size),a=j(()=>e.dynamicFields.length<e.config.maxFields),o=j(()=>e.hiddenFieldIds.size===0);return{state:G(e),allFields:t,visibleFields:n,dynamicFieldsCount:r,hiddenFieldsCount:i,canAddMoreFields:a,allVisible:o,FIELD_TYPE_OPTIONS:Tt,addField:(t={})=>{if(!a.value){console.warn(`[useDynamicFormState] 已达到最大字段数量限制`);return}e.fieldCounter++;let n=t.type||Tt[Math.floor(Math.random()*Tt.length)].value,r={id:`dynamic_field_${e.fieldCounter}`,type:n,prop:t.prop||`dynamic_${e.fieldCounter}`,label:t.label||`动态字段 ${e.fieldCounter}`,placeholder:t.placeholder||`请输入${t.label||`内容`}`,visible:!0,removable:!0,created:Date.now(),layout:t.layout||{span:12},...t};e.dynamicFields.push(r),console.log(`[useDynamicFormState] 添加字段:`,r)},removeField:t=>{if(e.dynamicFields.length===0){console.warn(`[useDynamicFormState] 没有可移除的动态字段`);return}let n=t??e.dynamicFields.length-1;if(n<0||n>=e.dynamicFields.length){console.warn(`[useDynamicFormState] 字段索引超出范围`);return}let r=e.dynamicFields.splice(n,1)[0];r&&(e.hiddenFieldIds.delete(r.prop),console.log(`[useDynamicFormState] 移除字段:`,r.prop))},clearDynamicFields:()=>{console.log(`[useDynamicFormState] 清空动态字段:`,e.dynamicFields.length),e.dynamicFields.forEach(t=>e.hiddenFieldIds.delete(t.prop)),e.dynamicFields.length=0,e.fieldCounter=0},toggleFieldVisibility:t=>{e.hiddenFieldIds.has(t)?(e.hiddenFieldIds.delete(t),console.log(`[useDynamicFormState] 显示字段:`,t)):(e.hiddenFieldIds.add(t),console.log(`[useDynamicFormState] 隐藏字段:`,t))},toggleAllVisibility:()=>{o.value?(e.dynamicFields.forEach(t=>{e.hiddenFieldIds.add(t.prop)}),console.log(`[useDynamicFormState] 隐藏所有动态字段`)):(e.hiddenFieldIds.clear(),console.log(`[useDynamicFormState] 显示所有字段`))},updateConfig:t=>{Object.assign(e.config,t),console.log(`[useDynamicFormState] 更新配置:`,t)},exportConfig:()=>{let t={baseFields:e.baseFields,dynamicFields:e.dynamicFields,config:e.config,hiddenFields:Array.from(e.hiddenFieldIds),timestamp:Date.now()};return JSON.stringify(t,null,2)},initialize:(t,n={})=>{console.log(`[useDynamicFormState] 初始化状态:`,{baseFieldsCount:t.length,config:n}),e.baseFields=[...t],Object.assign(e.config,n),e.isInitialized=!0,console.log(`[useDynamicFormState] 初始化完成`)}}},Dt=Symbol(`dynamicFormState`),Ot={class:`c-form-dynamic`},kt={key:0,class:`dynamic-controls`},At={class:`max-fields-config`},jt={class:`dynamic-stats`},Mt={class:`dynamic-controls-fallback`},Nt={class:`dynamic-form-items`};var Pt=t(R({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},dynamicFormState:{default:null}},emits:[`field-add`,`field-remove`,`fields-clear`],setup(t,{expose:n}){let o=t,c=oe(Dt,null),l=j(()=>o.dynamicFormState||c),u=j(()=>!!l.value),d=j(()=>o.layoutConfig?.dynamic?.grid?.cols??24),f=j(()=>o.layoutConfig?.dynamic?.grid?.gutter??16),p=j(()=>o.layoutConfig?.dynamic?.controls?.showControls!==!1),m=j(()=>l.value?.state.config.maxFields??o.layoutConfig?.dynamic?.dynamic?.maxFields??50),h=j(()=>l.value?.dynamicFieldsCount.value??0),v=j(()=>l.value?.canAddMoreFields.value??!1),b=j(()=>o.formItems.length),x=(e,t)=>e.key?.toString()||e.props?.path||`dynamic-item-${t}`,S=e=>{let t=o.options?.[e]?.layout?.span;return typeof t==`number`&&t>0&&t<=d.value?t:Math.min(12,d.value)},C=e=>{if(!l.value)return!1;let t=e.props?.path||e.key?.toString()||``;return l.value.state.dynamicFields.some(e=>e.prop===t)};return n({addField:()=>l.value?.addField(),removeField:()=>l.value?.removeField(),clearAllDynamic:()=>l.value?.clearDynamicFields(),isDynamicStateAvailable:u,dynamicState:l}),import.meta.env?.DEV&&fe(()=>{let{options:e,formItems:t}=o;e&&e.length!==t.length&&console.warn(`[Dynamic Layout] 配置项数量(${e.length})与表单项数量(${t.length})不匹配`),console.log(`[Dynamic Layout]`,u.value?`动态模式已启用`:`运行在静态模式`,{totalFields:b.value,dynamicFields:h.value,stateSource:o.dynamicFormState?`props透传`:`inject注入`})}),(t,n)=>{let o=i,c=a,w=T,ee=y,te=O,E=s,ne=r,re=_,D=g;return U(),P(`div`,Ot,[N(` 动态控制面板 `),p.value&&u.value?(U(),P(`div`,kt,[L(E,{size:`small`,title:`动态表单控制`,bordered:!1},{"header-extra":Q(()=>[L(o,{value:h.value,type:`warning`},{default:Q(()=>[L(e,{name:`mdi:layers`,size:16})]),_:1},8,[`value`])]),default:Q(()=>[L(w,{justify:`space-between`,align:`center`},{default:Q(()=>[L(w,null,{default:Q(()=>[L(c,{size:`small`,type:`primary`,disabled:!v.value,onClick:n[0]||=e=>l.value.addField()},{icon:Q(()=>[L(e,{name:`mdi:plus`,size:14})]),default:Q(()=>[I(` 添加字段 (`+Y(h.value)+`/`+Y(m.value)+`) `,1)]),_:1},8,[`disabled`]),L(c,{size:`small`,type:`warning`,disabled:h.value===0,onClick:n[1]||=e=>l.value.removeField()},{icon:Q(()=>[L(e,{name:`mdi:minus`,size:14})]),default:Q(()=>[n[4]||=I(` 移除字段 `,-1)]),_:1,__:[4]},8,[`disabled`]),L(c,{size:`small`,type:`error`,disabled:h.value===0,onClick:n[2]||=e=>l.value.clearDynamicFields()},{icon:Q(()=>[L(e,{name:`mdi:delete-sweep`,size:14})]),default:Q(()=>[n[5]||=I(` 清空动态 `,-1)]),_:1,__:[5]},8,[`disabled`])]),_:1}),N(` 最大字段数配置 `),F(`div`,At,[n[6]||=F(`span`,null,`最大字段数:`,-1),L(ee,{value:m.value,"onUpdate:value":n[3]||=e=>e&&l.value.updateConfig({maxFields:e}),min:5,max:50,size:`small`,style:{width:`100px`}},null,8,[`value`])])]),_:1}),F(`div`,jt,[L(w,null,{default:Q(()=>[L(te,{type:`info`},{default:Q(()=>[I(`总字段: `+Y(b.value),1)]),_:1}),L(te,{type:`warning`},{default:Q(()=>[I(`动态: `+Y(h.value),1)]),_:1})]),_:1})])]),_:1})])):p.value&&!u.value?(U(),P(A,{key:1},[N(` 状态不可用时的提示 `),F(`div`,Mt,[L(E,{size:`small`,title:`动态表单控制 (静态模式)`,bordered:!1},{default:Q(()=>[L(ne,{type:`info`,"show-icon":``},{icon:Q(()=>[L(e,{name:`mdi:information-outline`,size:16})]),default:Q(()=>[n[7]||=I(` 当前为静态模式,如需动态功能请在父组件中提供动态表单状态。 `,-1)]),_:1,__:[7]})]),_:1})])],2112)):N(`v-if`,!0),N(` 表单项渲染区域 `),F(`div`,Nt,[L(D,{cols:d.value,"x-gap":f.value,"y-gap":f.value},{default:Q(()=>[(U(!0),P(A,null,q(t.formItems,(e,t)=>(U(),M(re,{key:x(e,t),span:S(t)},{default:Q(()=>[F(`div`,{class:B([`dynamic-item-wrapper`,{"is-dynamic-field":C(e)}])},[(U(),M(J(e)))],2)]),_:2},1032,[`span`]))),128))]),_:1},8,[`cols`,`x-gap`,`y-gap`])])])}}}),[[`__scopeId`,`data-v-12a3673e`]]);const Ft={class:`custom-layout`},It={class:`toolbar-content`},Lt={class:`mode-section`},Rt={class:`stats-section`},zt={class:`stat-item`},Bt={class:`stat-value`},Vt={class:`stat-item`},Ht={class:`stat-value`},Ut={class:`actions-section`},Wt={class:`design-tools`},Gt={class:`tool-group`},Kt={key:0,class:`canvas-hint`},qt={class:`areas-container`},Jt={class:`area-header`},Yt={class:`area-info`},Xt=[`onClick`],Zt={class:`area-controls`},Qt={class:`field-preview`},$t={class:`field-label`},en={class:`field-type`},tn={key:0,class:`area-drop-zone`},nn={class:`field-name`},rn={class:`field-type-tag`},an={key:0,class:`empty-layout`},on={key:1,class:`form-container`},sn={class:`form-areas`};var cn=t(R({__name:`index`,props:{options:{default:()=>[]},formItems:{default:()=>[]},formData:{default:()=>({})}},emits:[`fields-change`,`export-data`],setup(e,{emit:t}){let n=e,r=t,i=K(!0),c=K([]),l=K([]),u=K(``),d=j(()=>n.options?.length>0?n.options:n.formItems?.map(e=>{let t=e.props;return{prop:t?.path||``,label:t?.label||t?.path||``,type:`input`,show:!0}}).filter(e=>e.prop)||[]),f=j(()=>c.value.reduce((e,t)=>e+t.fields.length,0)),m=()=>`${Date.now()}-${Math.random().toString(36).substring(2,11)}`,h=e=>({input:`输入框`,select:`下拉框`,radio:`单选框`,checkbox:`复选框`,textarea:`文本域`,date:`日期`,number:`数字`})[e]||e,g=e=>n.formItems?.find(t=>t.props?.path===e.prop)||null,_=e=>{let t={id:m(),title:`${e===`horizontal`?`水平`:e===`vertical`?`垂直`:`网格`}区域`,type:e,fields:[]};c.value.push(t)},y=e=>{let t=c.value.findIndex(t=>t.id===e);t!==-1&&c.value.splice(t,1)},b=e=>({...e,id:`${e.prop}-${m()}`}),x=(e,t)=>{let n=c.value.find(t=>t.id===e);if(n){let e=n.fields.findIndex(e=>e.id===t);e!==-1&&n.fields.splice(e,1)}},S=()=>{let e=JSON.stringify(c.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`layout-config-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},C=()=>{c.value=[]},w=()=>{r(`export-data`,{layout:c.value,formData:n.formData,timestamp:new Date().toISOString()})};return fe(()=>{let e=new Set(c.value.flatMap(e=>e.fields.map(e=>e.prop)));l.value=d.value.filter(t=>!e.has(t.prop)).map(e=>({...e,id:e.prop}))}),Z(()=>c.value,()=>{r(`fields-change`,c.value.flatMap(e=>e.fields.map(e=>({...e,id:void 0}))))},{deep:!0}),(e,t)=>{let n=a,r=o,d=s,m=v,ee=O,T=p;return U(),P(`div`,Ft,[N(` 顶部工具栏 `),L(d,{bordered:!1,class:`toolbar-card`},{default:Q(()=>[F(`div`,It,[N(` 模式切换 `),F(`div`,Lt,[t[12]||=F(`span`,{class:`section-label`},`自定义模式:`,-1),L(r,null,{default:Q(()=>[L(n,{type:i.value?`primary`:`default`,onClick:t[0]||=e=>i.value=!0,size:`small`},{default:Q(()=>t[10]||=[I(` 🎨 设计模式 `,-1)]),_:1,__:[10]},8,[`type`]),L(n,{type:i.value?`default`:`primary`,onClick:t[1]||=e=>i.value=!1,size:`small`},{default:Q(()=>t[11]||=[I(` 📝 填写模式 `,-1)]),_:1,__:[11]},8,[`type`])]),_:1})]),N(` 统计信息 `),F(`div`,Rt,[F(`div`,zt,[F(`div`,Bt,Y(c.value.length),1),t[13]||=F(`div`,{class:`stat-label`},`自定义区域`,-1)]),F(`div`,Vt,[F(`div`,Ht,Y(f.value),1),t[14]||=F(`div`,{class:`stat-label`},`字段总数`,-1)])]),N(` 操作按钮 `),F(`div`,Ut,[i.value?(U(),P(A,{key:0},[L(n,{secondary:``,onClick:S,size:`small`},{default:Q(()=>t[15]||=[I(` 💾 保存布局 `,-1)]),_:1,__:[15]}),L(n,{secondary:``,onClick:C,size:`small`},{default:Q(()=>t[16]||=[I(` 🔄 重置布局 `,-1)]),_:1,__:[16]})],64)):(U(),M(n,{key:1,secondary:``,onClick:w,size:`small`},{default:Q(()=>t[17]||=[I(` 📊 导出数据 `,-1)]),_:1,__:[17]}))])])]),_:1}),N(` 设计模式工具面板 `),i.value?(U(),M(d,{key:0,class:`design-panel`,title:`🎨 设计工具`},{default:Q(()=>[F(`div`,Wt,[F(`div`,Gt,[t[21]||=F(`span`,{class:`group-label`},`添加区域:`,-1),L(n,{onClick:t[2]||=e=>_(`horizontal`),size:`small`},{default:Q(()=>t[18]||=[I(` ➡️ 水平区域 `,-1)]),_:1,__:[18]}),L(n,{onClick:t[3]||=e=>_(`vertical`),size:`small`},{default:Q(()=>t[19]||=[I(` ⬇️ 垂直区域 `,-1)]),_:1,__:[19]}),L(n,{onClick:t[4]||=e=>_(`grid`),size:`small`},{default:Q(()=>t[20]||=[I(` ⚏ 网格区域 `,-1)]),_:1,__:[20]})])])]),_:1})):N(`v-if`,!0),N(` 主画布区域 `),F(`div`,{class:B([`layout-canvas`,{"design-mode":i.value}])},[N(` 设计模式 `),i.value?(U(),P(A,{key:0},[c.value.length===0?(U(),P(`div`,Kt,t[22]||=[F(`div`,{class:`hint-content`},[F(`h3`,null,`🎨 开始自定义你的布局`),F(`p`,null,`点击上方按钮添加区域`)],-1)])):(U(),P(A,{key:1},[N(` 区域列表 `),F(`div`,qt,[(U(!0),P(A,null,q(c.value,e=>(U(),P(`div`,{key:e.id,class:B([`custom-area`,`area-${e.type}`])},[F(`div`,Jt,[F(`div`,Yt,[u.value===e.id?(U(),M(m,{key:0,value:e.title,"onUpdate:value":t=>e.title=t,size:`small`,onBlur:t[5]||=e=>u.value=``,onKeyup:t[6]||=$(e=>u.value=``,[`enter`]),class:`title-input`},null,8,[`value`,`onUpdate:value`])):(U(),P(`span`,{key:1,class:`area-title`,onClick:t=>u.value=e.id},Y(e.title),9,Xt)),L(ee,{size:`small`},{default:Q(()=>[I(Y(e.fields.length)+` 字段`,1)]),_:2},1024)]),F(`div`,Zt,[L(n,{text:``,onClick:t=>y(e.id),size:`tiny`,type:`error`,title:`删除区域`},{default:Q(()=>t[23]||=[I(` 🗑️ `,-1)]),_:2,__:[23]},1032,[`onClick`])])]),N(` 字段容器(可拖入) `),L(X(me),{modelValue:e.fields,"onUpdate:modelValue":t=>e.fields=t,class:`area-fields`,group:{name:`form-fields`,pull:!0,put:!0},animation:200,"ghost-class":`field-ghost`,"item-key":`id`},{default:Q(()=>[(U(!0),P(A,null,q(e.fields,r=>(U(),P(`div`,{key:r.id,class:`field-item`},[F(`div`,Qt,[t[25]||=F(`span`,{class:`drag-handle`},`⠿`,-1),F(`span`,$t,Y(r.label||r.prop),1),F(`span`,en,Y(h(r.type)),1),L(n,{text:``,size:`tiny`,type:`error`,onClick:t=>x(e.id,r.id),title:`移出字段`},{default:Q(()=>t[24]||=[I(` ✕ `,-1)]),_:2,__:[24]},1032,[`onClick`])])]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`]),e.fields.length===0?(U(),P(`div`,tn,` 从下方字段池拖拽字段到这里 `)):N(`v-if`,!0)],2))),128))])],2112)),N(` 字段池(可拖出) `),L(d,{class:`field-pool`,title:`📦 可用字段`},{default:Q(()=>[L(X(me),{modelValue:l.value,"onUpdate:modelValue":t[7]||=e=>l.value=e,class:`pool-fields-grid`,group:{name:`form-fields`,pull:`clone`,put:!0},animation:200,sort:!1,"ghost-class":`field-ghost`,"item-key":`id`,clone:b},{default:Q(()=>[(U(!0),P(A,null,q(l.value,e=>(U(),P(`div`,{key:e.id,class:`pool-field`},[t[26]||=F(`span`,{class:`drag-handle`},`⠿`,-1),F(`span`,nn,Y(e.label||e.prop),1),F(`span`,rn,Y(h(e.type)),1)]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):(U(),P(A,{key:1},[N(` 填写模式 `),c.value.length===0?(U(),P(`div`,an,[L(T,{description:`尚未设计布局`},{extra:Q(()=>[L(n,{onClick:t[8]||=e=>i.value=!0,type:`primary`},{default:Q(()=>t[27]||=[I(` 🎨 开始设计 `,-1)]),_:1,__:[27]})]),_:1})])):(U(),P(`div`,on,[F(`div`,sn,[(U(!0),P(A,null,q(c.value,e=>(U(),P(`div`,{key:e.id,class:B([`form-area`,`area-${e.type}`])},[e.fields.length>0?(U(),M(d,{key:0,title:e.title},{default:Q(()=>[F(`div`,{class:B([`area-form-items`,`layout-${e.type}`])},[(U(!0),P(A,null,q(e.fields,e=>(U(),M(J(g(e)),{key:e.prop}))),128))],2)]),_:2},1032,[`title`])):(U(),M(T,{key:1,description:`此区域暂无字段`,size:`small`},{extra:Q(()=>[L(n,{onClick:t[9]||=e=>i.value=!0,size:`small`,secondary:``},{default:Q(()=>t[28]||=[I(` 🎨 添加字段 `,-1)]),_:1,__:[28]})]),_:1}))],2))),128))])]))],64))],2)])}}}),[[`__scopeId`,`data-v-a99d211f`]]),ln=R({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(e,{expose:t,emit:r}){let i={default:Oe,inline:ke,grid:Fe,card:ot,tabs:mt,steps:Ct,dynamic:Pt,custom:cn},o={NFormItem:h,NInput:v,NInputNumber:y,NSwitch:ne,NSlider:ee,NRate:C,NDatePicker:f,NTimePicker:k,NCascader:c,NColorPicker:d,NSelect:w,NCheckboxGroup:u,NCheckbox:l,NRadioGroup:S,NRadio:x,NUpload:ie,NButton:a,NSpace:T,C_Editor:n},s=e,p=r,g=j(()=>ve(s.config)),_=K(null),{formModel:b,formRules:te,visibleOptions:E,initialize:re,handleFieldChange:D,validate:O,validateField:A,validateStep:P,validateTab:F,validateDynamicFields:R,validateCustomGroup:z,clearValidation:oe,getModel:ce,setFields:B,resetFields:V,setFieldValue:H,getFieldValue:W,setFieldsValue:G,handleSubmit:q,handleReset:Y}=Se(j(()=>s.options),g,_,p),{formItems:ue}=Ee(b,E,g,D,o,ae()?.slots),de=j(()=>i[g.value.layout]||i.default),fe=j(()=>({type:g.value.layout,grid:g.value.grid,inline:g.value.inline,card:g.value.card,tabs:g.value.tabs,steps:g.value.steps,dynamic:g.value.dynamic,custom:g.value.custom})),pe=j(()=>ye(g.value)),$=(e,...t)=>{let n=g.value[e];n?.(...t)},me=e=>{g.value.onFieldsChange?.(e)},he=(e,t)=>{g.value.onStepChange?.(e,t)},ge=async(e,t)=>(g.value.onStepBeforeChange?.(e,t),!0),_e=async e=>{try{let t=g.value.steps?.steps?.[e]?.key;if(!t)return!0;let n=s.options.filter(e=>e.layout?.step===t).map(e=>e.prop);return n.length===0?!0:(await A(n),g.value.onStepValidate?.(e),!0)}catch(t){return console.warn(`[C_Form] 步骤 ${e} 验证失败:`,t),!1}};return Z(()=>s.modelValue,e=>{e&&Object.assign(b,e)},{immediate:!0,deep:!0}),t({validate:O,validateField:A,validateStep:P,validateTab:F,validateDynamicFields:R,validateCustomGroup:z,clearValidation:oe,getModel:ce,setFields:B,resetFields:V,setFieldValue:H,getFieldValue:W,setFieldsValue:G,formRef:_,formModel:b,initialize:re,layoutType:j(()=>g.value.layout),shouldShowDefaultActions:pe}),(e,t)=>(U(),M(X(m),se({ref_key:`formRef`,ref:_,model:X(b),rules:X(te),"validate-on-rule-change":!1,"label-placement":g.value.labelPlacement,"label-width":g.value.labelWidth,size:g.value.size,disabled:g.value.disabled,readonly:g.value.readonly},e.$attrs),{default:Q(()=>[N(` 布局组件渲染 `),(U(),M(J(de.value),{"form-items":X(ue),"layout-config":fe.value,options:X(E),"form-data":X(b),onTabChange:t[0]||=e=>$(`onTabChange`,e),onTabValidate:t[1]||=e=>$(`onTabValidate`,e),onStepChange:he,onStepBeforeChange:ge,onStepValidate:_e,onFieldAdd:t[2]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[3]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[4]||=(e,t)=>g.value.onFieldToggle?.(e,t),onFieldsClear:t[5]||=e=>$(`onFieldsClear`),onRenderModeChange:t[6]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[7]||=(e,t)=>g.value.onGroupToggle?.(e,t),onGroupReset:t[8]||=e=>$(`onGroupReset`,e),onValidateSuccess:t[9]||=e=>p(`validate-success`,e),onValidateError:t[10]||=e=>p(`validate-error`,e),onFieldsChange:me},null,40,[`form-items`,`layout-config`,`options`,`form-data`])),N(` 表单操作按钮区域(只在特定布局中显示) `),pe.value?(U(),M(X(h),{key:0,style:{"margin-top":`20px`}},{default:Q(()=>[le(e.$slots,`action`,{form:_.value,model:X(b),validate:X(O),validateField:X(A),reset:X(V),setFields:X(B),getModel:X(ce),clearValidation:X(oe)},()=>[L(X(T),null,{default:Q(()=>[L(X(a),{type:`primary`,onClick:X(q)},{default:Q(()=>t[11]||=[I(`提交`,-1)]),_:1,__:[11]},8,[`onClick`]),L(X(a),{onClick:X(Y)},{default:Q(()=>t[12]||=[I(`重置`,-1)]),_:1,__:[12]},8,[`onClick`])]),_:1})])]),_:3})):N(`v-if`,!0)]),_:3},16,[`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`]))}});export{Te as a,ge as c,ye as d,Et as i,_e as l,Dt as n,Ee as o,Tt as r,Se as s,ln as t,ve as u};
|
|
2
2
|
//# sourceMappingURL=C_Form2.js.map
|