@robot-admin/naive-ui-components 0.22.1 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +7 -5
- package/README_EN.md +7 -5
- package/dist/C_ActionBar.d.cts +2 -1
- package/dist/C_ActionBar.d.ts +2 -1
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_BatchResult.cjs +1 -0
- package/dist/C_BatchResult.css +32 -0
- package/dist/C_BatchResult.d.cts +2 -0
- package/dist/C_BatchResult.d.ts +2 -0
- package/dist/C_BatchResult.js +1 -0
- package/dist/C_BatchResult2.cjs +1 -0
- package/dist/C_BatchResult2.js +1 -0
- package/dist/C_Breadcrumb.d.cts +2 -2
- package/dist/C_Breadcrumb.d.ts +1 -1
- package/dist/C_Cascade.d.cts +1 -1
- package/dist/C_Cascade.d.ts +1 -1
- package/dist/C_Chat.d.cts +1 -1
- package/dist/C_Chat.d.ts +1 -1
- package/dist/C_City.d.cts +1 -1
- package/dist/C_City.d.ts +1 -1
- package/dist/C_Code.d.cts +1 -1
- package/dist/C_Code.d.ts +1 -1
- package/dist/C_ContextMenu.d.cts +1 -1
- package/dist/C_ContextMenu.d.ts +1 -1
- package/dist/C_DataPicker.cjs +1 -0
- package/dist/C_DataPicker.css +55 -0
- package/dist/C_DataPicker.d.cts +2 -0
- package/dist/C_DataPicker.d.ts +5 -0
- package/dist/C_DataPicker.js +1 -0
- package/dist/C_DataPicker2.cjs +1 -0
- package/dist/C_DataPicker2.js +1 -0
- package/dist/C_Date.d.cts +1 -1
- package/dist/C_Date.d.ts +1 -1
- package/dist/C_Density.cjs +1 -0
- package/dist/C_Density.css +1 -0
- package/dist/C_Density.d.cts +3 -0
- package/dist/C_Density.d.ts +3 -0
- package/dist/C_Density.js +1 -0
- package/dist/C_Density2.cjs +1 -0
- package/dist/C_Density2.js +1 -0
- package/dist/C_Editor.d.cts +1 -1
- package/dist/C_Editor.d.ts +1 -1
- package/dist/C_ErrorSummary.cjs +1 -0
- package/dist/C_ErrorSummary.css +29 -0
- package/dist/C_ErrorSummary.d.cts +3 -0
- package/dist/C_ErrorSummary.d.ts +3 -0
- package/dist/C_ErrorSummary.js +1 -0
- package/dist/C_ErrorSummary2.cjs +1 -0
- package/dist/C_ErrorSummary2.js +1 -0
- package/dist/C_Form.base.css +150 -148
- package/dist/C_Form.css +151 -253
- package/dist/C_Form.d.cts +1 -1
- package/dist/C_Form.d.ts +19 -2
- package/dist/C_FormModal.css +1 -2
- package/dist/C_FormModal.d.cts +1 -1
- package/dist/C_FormModal.d.ts +17 -2
- package/dist/C_FormSearch.cjs +1 -1
- package/dist/C_FormSearch.css +124 -52
- package/dist/C_FormSearch.d.cts +3 -3
- package/dist/C_FormSearch.d.ts +5 -4
- package/dist/C_FormSearch.js +1 -1
- package/dist/C_FormulaEditor.d.cts +1 -1
- package/dist/C_FormulaEditor.d.ts +1 -1
- package/dist/C_Guide.d.cts +1 -1
- package/dist/C_Guide.d.ts +1 -1
- package/dist/C_Icon.d.cts +1 -1
- package/dist/C_Icon.d.ts +1 -1
- package/dist/C_Language.d.cts +1 -1
- package/dist/C_Language.d.ts +1 -1
- package/dist/C_Loading.d.cts +1 -1
- package/dist/C_Loading.d.ts +1 -1
- package/dist/C_Login.d.cts +1 -1
- package/dist/C_Login.d.ts +1 -1
- package/dist/C_Markdown.d.cts +1 -1
- package/dist/C_Markdown.d.ts +1 -1
- package/dist/C_Menu.d.cts +2 -2
- package/dist/C_Menu.d.ts +1 -1
- package/dist/C_OrgChart.d.cts +1 -1
- package/dist/C_OrgChart.d.ts +1 -1
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_SectionNav.cjs +1 -0
- package/dist/C_SectionNav.css +46 -0
- package/dist/C_SectionNav.d.cts +2 -0
- package/dist/C_SectionNav.d.ts +2 -0
- package/dist/C_SectionNav.js +1 -0
- package/dist/C_SectionNav2.cjs +1 -0
- package/dist/C_SectionNav2.js +1 -0
- package/dist/C_Skeleton.d.cts +1 -1
- package/dist/C_Skeleton.d.ts +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_Table.base.css +258 -256
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +109 -1283
- package/dist/C_Table.d.cts +2 -1
- package/dist/C_Table.d.ts +9 -8
- package/dist/C_Table.js +1 -1
- package/dist/C_Table2.cjs +3 -0
- package/dist/C_Table2.js +3 -0
- package/dist/C_Tabs.cjs +1 -1
- package/dist/C_Tabs.d.cts +1 -1
- package/dist/C_Tabs.d.ts +1 -1
- package/dist/C_Tabs.js +1 -1
- package/dist/C_TagsView.d.cts +1 -1
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.d.ts +1 -1
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.d.ts +1 -1
- package/dist/C_Tree.d.cts +1 -1
- package/dist/C_Tree.d.ts +9 -8
- package/dist/C_Upload.d.cts +1 -1
- package/dist/C_Upload.d.ts +1 -1
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/Card.cjs +1 -1
- package/dist/Card.js +1 -1
- package/dist/Steps.cjs +1 -1
- package/dist/Steps.js +1 -1
- package/dist/Tabs.cjs +1 -1
- package/dist/Tabs.js +1 -1
- package/dist/batchPatch.cjs +1 -0
- package/dist/batchPatch.d.cts +26 -0
- package/dist/batchPatch.d.ts +26 -0
- package/dist/batchPatch.js +1 -0
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +4 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.js +1 -1
- package/dist/config2.d.ts +1 -1
- package/dist/constants.d.cts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants2.d.cts +402 -173
- package/dist/constants2.d.ts +402 -173
- package/dist/constants3.d.cts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.cts +173 -402
- package/dist/constants4.d.ts +173 -402
- package/dist/contracts.d.ts +24 -0
- package/dist/data.cjs +1 -1
- package/dist/data.d.cts +5 -108
- package/dist/data.d.ts +5 -108
- package/dist/data.js +1 -1
- package/dist/data2.cjs +1 -1
- package/dist/data2.d.cts +108 -0
- package/dist/data2.d.ts +108 -0
- package/dist/data2.js +1 -1
- package/dist/data3.cjs +1 -0
- package/dist/data3.js +1 -0
- package/dist/dateRange.d.cts +108 -13
- package/dist/dateRange.d.ts +110 -14
- package/dist/density.d.ts +15 -0
- package/dist/dictionary.cjs +1 -0
- package/dist/dictionary.d.cts +38 -0
- package/dist/dictionary.d.ts +38 -0
- package/dist/dictionary.js +1 -0
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +63 -52
- package/dist/index.d.ts +71 -57
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +37 -80
- package/dist/index10.vue.d.ts +77 -53
- package/dist/index11.vue.d.cts +77 -53
- package/dist/index11.vue.d.ts +1117 -45
- package/dist/index12.vue.d.cts +1117 -45
- package/dist/index12.vue.d.ts +17 -128
- package/dist/index13.vue.d.cts +17 -128
- package/dist/index13.vue.d.ts +57 -53
- package/dist/index14.vue.d.cts +57 -53
- package/dist/index14.vue.d.ts +16 -25
- package/dist/index15.vue.d.cts +16 -25
- package/dist/index15.vue.d.ts +52 -12
- package/dist/index16.vue.d.cts +52 -12
- package/dist/index16.vue.d.ts +13 -129
- package/dist/index17.vue.d.cts +13 -129
- package/dist/index17.vue.d.ts +123 -74
- package/dist/index18.vue.d.cts +123 -74
- package/dist/index18.vue.d.ts +48 -71
- package/dist/index19.vue.d.cts +40 -91
- package/dist/index19.vue.d.ts +36 -96
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +38 -47
- package/dist/index20.vue.d.ts +13 -48
- package/dist/index21.vue.d.cts +12 -96
- package/dist/index21.vue.d.ts +25 -95
- package/dist/index22.vue.d.cts +20 -32
- package/dist/index22.vue.d.ts +75 -37
- package/dist/index23.vue.d.cts +77 -13
- package/dist/index23.vue.d.ts +71 -13
- package/dist/index24.vue.d.cts +1 -1
- package/dist/index25.vue.d.cts +116 -90
- package/dist/index25.vue.d.ts +116 -90
- package/dist/index26.vue.d.cts +94 -59
- package/dist/index26.vue.d.ts +94 -59
- package/dist/index27.vue.d.cts +75 -0
- package/dist/index27.vue.d.ts +75 -0
- package/dist/index28.vue.d.cts +103 -0
- package/dist/index28.vue.d.ts +103 -0
- package/dist/index29.vue.d.cts +105 -0
- package/dist/index29.vue.d.ts +105 -0
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index30.vue.d.cts +28 -0
- package/dist/index30.vue.d.ts +28 -0
- package/dist/index4.vue.d.cts +19 -128
- package/dist/index4.vue.d.ts +17 -34
- package/dist/index5.vue.d.cts +127 -35
- package/dist/index5.vue.d.ts +30 -19
- package/dist/index6.vue.d.cts +30 -19
- package/dist/index6.vue.d.ts +22 -118
- package/dist/index7.vue.d.cts +22 -118
- package/dist/index7.vue.d.ts +112 -18
- package/dist/index8.vue.d.cts +112 -18
- package/dist/index8.vue.d.ts +24 -35
- package/dist/index9.vue.d.cts +24 -35
- package/dist/index9.vue.d.ts +37 -80
- package/dist/numberCodec.cjs +1 -0
- package/dist/numberCodec.d.cts +25 -0
- package/dist/numberCodec.d.ts +25 -0
- package/dist/numberCodec.js +1 -0
- package/dist/observer.cjs +1 -0
- package/dist/observer.js +1 -0
- package/dist/presets.d.cts +2 -65
- package/dist/presets.d.ts +2 -65
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/serializeSearch.cjs +1 -0
- package/dist/serializeSearch.js +1 -0
- package/dist/style.css +548 -308
- package/dist/types.d.cts +60 -103
- package/dist/types.d.ts +62 -52
- package/dist/types2.d.cts +104 -51
- package/dist/types2.d.ts +56 -0
- package/dist/types3.d.cts +56 -0
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useComponentLocale.cjs +1 -1
- package/dist/useComponentLocale.js +1 -1
- package/dist/useCropperCore.d.cts +7 -7
- package/dist/useCropperCore.d.ts +7 -7
- package/dist/useDataResource.cjs +1 -0
- package/dist/useDataResource.js +1 -0
- package/dist/useDictionary.cjs +1 -0
- package/dist/useDictionary.js +1 -0
- package/dist/useDynamicFormState.d.cts +960 -10
- package/dist/useDynamicFormState.d.ts +951 -11
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFormArray.cjs +1 -0
- package/dist/useFormArray.d.cts +69 -0
- package/dist/useFormArray.d.ts +69 -0
- package/dist/useFormArray.js +1 -0
- package/dist/useFormConfig.d.cts +14 -0
- package/dist/useFormConfig.d.ts +17 -38
- package/dist/useGridWidth.cjs +1 -0
- package/dist/useGridWidth.js +1 -0
- package/dist/useInfiniteScroll.d.cts +1 -1
- package/dist/useInfiniteScroll.d.ts +1 -1
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSignatureHistory.d.cts +4 -4
- package/dist/useSignatureHistory.d.ts +4 -4
- package/dist/useSplitResize.d.cts +4 -4
- package/dist/useSplitResize.d.ts +4 -4
- package/dist/useTableGlobalConfig.cjs +1 -0
- package/dist/useTableGlobalConfig.js +1 -0
- package/dist/useTableQuery.cjs +1 -3
- package/dist/useTableQuery.js +1 -3
- package/dist/useWorkflowValidation.d.cts +2 -2
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/dist/validation.cjs +1 -0
- package/dist/validation.d.cts +18 -0
- package/dist/validation.d.ts +18 -0
- package/dist/validation.js +1 -0
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +3 -3
- package/dist/workflows.cjs +1 -0
- package/dist/workflows.d.cts +2 -0
- package/dist/workflows.d.ts +2 -0
- package/dist/workflows.js +1 -0
- package/docs/components.en.md +13 -1
- package/docs/components.md +13 -1
- package/docs/guides/batch-results.md +47 -0
- package/docs/guides/data-picker.md +65 -0
- package/docs/guides/data-workflows.md +123 -0
- package/docs/guides/form-density.en.md +39 -0
- package/docs/guides/form-density.md +39 -0
- package/docs/guides/search-workflows.md +164 -0
- package/package.json +21 -1
- package/dist/C_FormSearch2.cjs +0 -1
- package/dist/C_FormSearch2.js +0 -1
- package/dist/useTableQuery.d.cts +0 -1957
- package/dist/useTableQuery.d.ts +0 -1946
package/dist/Steps.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={class:`c-form-steps`},a={key:0,class:`single-panel`},o={key:0,class:`step-header`},s={class:`step-title`},c={key:0,class:`step-description`},l={class:`step-form-items`},u={class:`steps-actions`},d=(0,n.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{},submitting:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:d,emit:f}){let p=t,m=f,h=(0,n.ref)(0),g=(0,n.ref)(!1),_=!1,v=(0,n.reactive)({}),y=(0,n.computed)(()=>{let e=p.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}}),b=(0,n.computed)(()=>y.value.steps.length>0),x=(0,n.computed)(()=>{if(!b.value)return[];let e=new Map;return y.value.steps.forEach(t=>{e.set(t.key,[])}),p.formItems.forEach((t,n)=>{let r=(p.options?.[n])?.layout?.step||y.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),y.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),S=(0,n.computed)(()=>{for(let e=0;e<=h.value;e++)if(v[e]===!1)return`error`;return`process`}),C=(0,n.computed)(()=>h.value===0),w=(0,n.computed)(()=>h.value===x.value.length-1),T=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},E=async()=>{let e=x.value[h.value]?.config.key;if(!e||_)return!1;try{let t=p.validateStep?await p.validateStep(h.value,e):!0;return _||x.value[h.value]?.config.key!==e?!1:(m(`step-validate`,h.value),v[h.value]=t,t)}catch{return v[h.value]=!1,!1}},D=(e,t)=>_||x.value[h.value]?.config.key!==e||!x.value.some(e=>e.config.key===t&&!e.config.disabled),O=async(e,t=!1)=>{if(_||g.value||p.submitting||p.disabled||e<0||e>=x.value.length)return!1;if(e===h.value)return!0;let
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={class:`c-form-steps`},a={key:0,class:`single-panel`},o={key:0,class:`step-header`},s={class:`step-title`},c={key:0,class:`step-description`},l={class:`step-form-items`},u={class:`steps-actions`},d=(0,n.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{},submitting:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:d,emit:f}){let p=t,m=f,h=(0,n.ref)(0),g=(0,n.ref)(!1),_=!1,v=(0,n.reactive)({}),y=(0,n.computed)(()=>{let e=p.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}}),b=(0,n.computed)(()=>y.value.steps.length>0),x=(0,n.computed)(()=>{if(!b.value)return[];let e=new Map;return y.value.steps.forEach(t=>{e.set(t.key,[])}),p.formItems.forEach((t,n)=>{let r=(p.options?.[n])?.layout?.step||y.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),y.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),S=(0,n.computed)(()=>{for(let e=0;e<=h.value;e++)if(v[e]===!1)return`error`;return`process`}),C=(0,n.computed)(()=>h.value===0),w=(0,n.computed)(()=>h.value===x.value.length-1),T=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},E=async()=>{let e=x.value[h.value]?.config.key;if(!e||_)return!1;try{let t=p.validateStep?await p.validateStep(h.value,e):!0;return _||x.value[h.value]?.config.key!==e?!1:(m(`step-validate`,h.value),v[h.value]=t,t)}catch{return v[h.value]=!1,!1}},D=(e,t)=>_||x.value[h.value]?.config.key!==e||!x.value.some(e=>e.config.key===t&&!e.config.disabled),O=async(e,t=!1,n=()=>!0)=>{if(_||g.value||p.submitting||p.disabled||!n()||e<0||e>=x.value.length)return!1;if(e===h.value)return!0;let r=x.value[h.value]?.config.key,i=x.value[e].config.key;if(!r||D(r,i))return!1;try{return g.value=!0,t&&y.value.validateBeforeNext&&!await E()||D(r,i)||!n()||await p.beforeStepChange?.(h.value,e)===!1||D(r,i)||!n()?!1:(m(`step-before-change`,h.value,e),h.value=x.value.findIndex(e=>e.config.key===i),m(`step-change`,h.value,x.value[h.value].config.key),!0)}catch{return!1}finally{g.value=!1}},k=async()=>{await O(h.value+1,!0)},A=()=>{O(h.value-1)},j=async e=>{x.value[e]?.config.disabled||await O(e,e>h.value)},M=()=>{if(!b.value||x.value.length===0)return;let{defaultStep:e}=y.value;h.value=e>=0&&e<x.value.length&&!x.value[e]?.config.disabled?e:0};return(0,n.watch)((0,n.computed)(()=>y.value.steps.map(e=>e.key).join(`,`)),()=>{M()}),(0,n.watch)(()=>x.value.map(e=>e.config.key),(e,t)=>{let n=t[h.value],r=e.indexOf(n);h.value=r>=0?r:Math.max(0,Math.min(h.value,e.length-1)),Object.keys(v).forEach(e=>{delete v[Number(e)]})}),(0,n.onMounted)(()=>{M()}),(0,n.onScopeDispose)(()=>{_=!0}),d({revealField:async(e,t=()=>!0)=>{if(!b.value)return t();let n=p.formItems.findIndex(t=>t.props?.path===e);if(n<0)return!1;let r=p.options[n]?.layout?.step||y.value.steps[0]?.key,i=x.value.findIndex(e=>e.config.key===r);return i<0||x.value[i].config.disabled?!1:O(i,i>h.value,t)},nextStep:k,previousStep:A,goToStep:j,validateCurrentStep:E,currentStep:(0,n.readonly)(h),totalSteps:(0,n.computed)(()=>x.value.length)}),(d,f)=>{let p=r.NStep,m=r.NSteps,_=r.NCard,v=r.NButton,E=r.NSpace;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,i,[(0,n.createCommentVNode)(` 无步骤配置时的单一面板模式 `),b.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createCommentVNode)(` 有步骤配置时的分步骤模式 `),(0,n.createElementVNode)(`div`,{class:(0,n.normalizeClass)([`steps-container`,{"is-vertical":y.value.vertical}])},[(0,n.createCommentVNode)(` 步骤指示器 `),(0,n.createVNode)(m,{current:h.value+1,status:S.value,size:y.value.size,vertical:y.value.vertical,class:`steps-indicator`},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(x.value,e=>((0,n.openBlock)(),(0,n.createBlock)(p,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled||g.value||t.submitting||t.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),(0,n.createCommentVNode)(` 步骤内容区域 `),(0,n.createVNode)(_,{class:`steps-content`,bordered:!1},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(x.value,(e,t)=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.config.key,class:`step-panel`},[(0,n.createCommentVNode)(` 步骤标题和描述 `),y.value.showStepHeader?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,o,[(0,n.createElementVNode)(`h3`,s,(0,n.toDisplayString)(e.config.title),1),e.config.description?((0,n.openBlock)(),(0,n.createElementBlock)(`p`,c,(0,n.toDisplayString)(e.config.description),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步骤内的表单项 `),(0,n.createElementVNode)(`div`,l,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.items,(e,t)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e),{key:T(e,t)}))),128))])])),[[n.vShow,h.value===t]])),128))]),_:1}),(0,n.createCommentVNode)(` 步骤操作按钮 `),(0,n.createElementVNode)(`div`,u,[(0,n.createVNode)(E,{justify:`space-between`},{default:(0,n.withCtx)(()=>[h.value>0?((0,n.openBlock)(),(0,n.createBlock)(v,{key:0,size:t.controlSize,disabled:g.value||t.submitting||t.disabled,onClick:A},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(y.value.prevButtonText),1)]),_:1},8,[`size`,`disabled`])):(0,n.createCommentVNode)(`v-if`,!0),f[0]||=(0,n.createElementVNode)(`div`,null,null,-1),(0,n.createVNode)(E,null,{default:(0,n.withCtx)(()=>[h.value<x.value.length-1?((0,n.openBlock)(),(0,n.createBlock)(v,{key:0,size:t.controlSize,type:`primary`,loading:g.value,disabled:t.submitting||t.disabled,onClick:k},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(y.value.nextButtonText)+` `,1),(0,n.createVNode)(e.t,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`size`,`loading`,`disabled`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.renderSlot)(d.$slots,`step-actions`,{currentStep:h.value,totalSteps:x.value.length,isFirstStep:C.value,isLastStep:w.value,nextStep:k,previousStep:A,goToStep:j},void 0,!0)]),_:3})]),_:3})])],2)],2112)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,a,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.formItems,(e,t)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e),{key:T(e,t)}))),128))]))])}}});var f=t.t(d,[[`__scopeId`,`data-v-52fc924a`]]);exports.default=f;
|
package/dist/Steps.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,onMounted as f,onScopeDispose as p,openBlock as m,reactive as h,readonly as g,ref as _,renderList as v,renderSlot as ee,resolveComponent as y,resolveDynamicComponent as b,toDisplayString as x,vShow as S,watch as C,withCtx as w,withDirectives as T}from"vue";import{NButton as E,NCard as D,NSpace as O,NStep as k,NSteps as A}from"naive-ui";const j={class:`c-form-steps`},M={key:0,class:`single-panel`},N={key:0,class:`step-header`},te={class:`step-title`},ne={key:0,class:`step-description`},re={class:`step-form-items`},ie={class:`steps-actions`};var P=t(u({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{},submitting:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:u,emit:y}){let P=t,F=y,I=_(0),L=_(!1),R=!1,z=h({}),B=r(()=>{let e=P.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}}),V=r(()=>B.value.steps.length>0),H=r(()=>{if(!V.value)return[];let e=new Map;return B.value.steps.forEach(t=>{e.set(t.key,[])}),P.formItems.forEach((t,n)=>{let r=(P.options?.[n])?.layout?.step||B.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),B.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),U=r(()=>{for(let e=0;e<=I.value;e++)if(z[e]===!1)return`error`;return`process`}),W=r(()=>I.value===0),G=r(()=>I.value===H.value.length-1),K=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},q=async()=>{let e=H.value[I.value]?.config.key;if(!e||R)return!1;try{let t=P.validateStep?await P.validateStep(I.value,e):!0;return R||H.value[I.value]?.config.key!==e?!1:(F(`step-validate`,I.value),z[I.value]=t,t)}catch{return z[I.value]=!1,!1}},J=(e,t)=>R||H.value[I.value]?.config.key!==e||!H.value.some(e=>e.config.key===t&&!e.config.disabled),Y=async(e,t=!1)=>{if(R||L.value||P.submitting||P.disabled||e<0||e>=H.value.length)return!1;if(e===I.value)return!0;let
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,onMounted as f,onScopeDispose as p,openBlock as m,reactive as h,readonly as g,ref as _,renderList as v,renderSlot as ee,resolveComponent as y,resolveDynamicComponent as b,toDisplayString as x,vShow as S,watch as C,withCtx as w,withDirectives as T}from"vue";import{NButton as E,NCard as D,NSpace as O,NStep as k,NSteps as A}from"naive-ui";const j={class:`c-form-steps`},M={key:0,class:`single-panel`},N={key:0,class:`step-header`},te={class:`step-title`},ne={key:0,class:`step-description`},re={class:`step-form-items`},ie={class:`steps-actions`};var P=t(u({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{},submitting:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(t,{expose:u,emit:y}){let P=t,F=y,I=_(0),L=_(!1),R=!1,z=h({}),B=r(()=>{let e=P.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}}),V=r(()=>B.value.steps.length>0),H=r(()=>{if(!V.value)return[];let e=new Map;return B.value.steps.forEach(t=>{e.set(t.key,[])}),P.formItems.forEach((t,n)=>{let r=(P.options?.[n])?.layout?.step||B.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),B.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),U=r(()=>{for(let e=0;e<=I.value;e++)if(z[e]===!1)return`error`;return`process`}),W=r(()=>I.value===0),G=r(()=>I.value===H.value.length-1),K=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},q=async()=>{let e=H.value[I.value]?.config.key;if(!e||R)return!1;try{let t=P.validateStep?await P.validateStep(I.value,e):!0;return R||H.value[I.value]?.config.key!==e?!1:(F(`step-validate`,I.value),z[I.value]=t,t)}catch{return z[I.value]=!1,!1}},J=(e,t)=>R||H.value[I.value]?.config.key!==e||!H.value.some(e=>e.config.key===t&&!e.config.disabled),Y=async(e,t=!1,n=()=>!0)=>{if(R||L.value||P.submitting||P.disabled||!n()||e<0||e>=H.value.length)return!1;if(e===I.value)return!0;let r=H.value[I.value]?.config.key,i=H.value[e].config.key;if(!r||J(r,i))return!1;try{return L.value=!0,t&&B.value.validateBeforeNext&&!await q()||J(r,i)||!n()||await P.beforeStepChange?.(I.value,e)===!1||J(r,i)||!n()?!1:(F(`step-before-change`,I.value,e),I.value=H.value.findIndex(e=>e.config.key===i),F(`step-change`,I.value,H.value[I.value].config.key),!0)}catch{return!1}finally{L.value=!1}},X=async()=>{await Y(I.value+1,!0)},Z=()=>{Y(I.value-1)},Q=async e=>{H.value[e]?.config.disabled||await Y(e,e>I.value)},$=()=>{if(!V.value||H.value.length===0)return;let{defaultStep:e}=B.value;I.value=e>=0&&e<H.value.length&&!H.value[e]?.config.disabled?e:0};return C(r(()=>B.value.steps.map(e=>e.key).join(`,`)),()=>{$()}),C(()=>H.value.map(e=>e.config.key),(e,t)=>{let n=t[I.value],r=e.indexOf(n);I.value=r>=0?r:Math.max(0,Math.min(I.value,e.length-1)),Object.keys(z).forEach(e=>{delete z[Number(e)]})}),f(()=>{$()}),p(()=>{R=!0}),u({revealField:async(e,t=()=>!0)=>{if(!V.value)return t();let n=P.formItems.findIndex(t=>t.props?.path===e);if(n<0)return!1;let r=P.options[n]?.layout?.step||B.value.steps[0]?.key,i=H.value.findIndex(e=>e.config.key===r);return i<0||H.value[i].config.disabled?!1:Y(i,i>I.value,t)},nextStep:X,previousStep:Z,goToStep:Q,validateCurrentStep:q,currentStep:g(I),totalSteps:r(()=>H.value.length)}),(r,u)=>{let f=k,p=A,h=D,g=E,_=O;return m(),o(`div`,j,[a(` 无步骤配置时的单一面板模式 `),V.value?(m(),o(n,{key:1},[a(` 有步骤配置时的分步骤模式 `),s(`div`,{class:d([`steps-container`,{"is-vertical":B.value.vertical}])},[a(` 步骤指示器 `),l(p,{current:I.value+1,status:U.value,size:B.value.size,vertical:B.value.vertical,class:`steps-indicator`},{default:w(()=>[(m(!0),o(n,null,v(H.value,e=>(m(),i(f,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled||L.value||t.submitting||t.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),a(` 步骤内容区域 `),l(h,{class:`steps-content`,bordered:!1},{default:w(()=>[(m(!0),o(n,null,v(H.value,(e,t)=>T((m(),o(`div`,{key:e.config.key,class:`step-panel`},[a(` 步骤标题和描述 `),B.value.showStepHeader?(m(),o(`div`,N,[s(`h3`,te,x(e.config.title),1),e.config.description?(m(),o(`p`,ne,x(e.config.description),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 步骤内的表单项 `),s(`div`,re,[(m(!0),o(n,null,v(e.items,(e,t)=>(m(),i(b(e),{key:K(e,t)}))),128))])])),[[S,I.value===t]])),128))]),_:1}),a(` 步骤操作按钮 `),s(`div`,ie,[l(_,{justify:`space-between`},{default:w(()=>[I.value>0?(m(),i(g,{key:0,size:t.controlSize,disabled:L.value||t.submitting||t.disabled,onClick:Z},{default:w(()=>[l(e,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),c(` `+x(B.value.prevButtonText),1)]),_:1},8,[`size`,`disabled`])):a(`v-if`,!0),u[0]||=s(`div`,null,null,-1),l(_,null,{default:w(()=>[I.value<H.value.length-1?(m(),i(g,{key:0,size:t.controlSize,type:`primary`,loading:L.value,disabled:t.submitting||t.disabled,onClick:X},{default:w(()=>[c(x(B.value.nextButtonText)+` `,1),l(e,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`size`,`loading`,`disabled`])):a(`v-if`,!0),ee(r.$slots,`step-actions`,{currentStep:I.value,totalSteps:H.value.length,isFirstStep:W.value,isLastStep:G.value,nextStep:X,previousStep:Z,goToStep:Q},void 0,!0)]),_:3})]),_:3})])],2)],2112)):(m(),o(`div`,M,[(m(!0),o(n,null,v(t.formItems,(e,t)=>(m(),i(b(e),{key:K(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-52fc924a`]]);export{P as default};
|
package/dist/Tabs.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={class:`c-form-tabs`},a={key:0,class:`single-panel`},o={class:`tabs-container`},s={key:0,class:`tab-header`},c={class:`tab-description`},l={class:`tab-form-items`},u={key:0,class:`tabs-actions`},d=(0,n.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeTabChange:{},validateTab:{}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(t,{expose:d,emit:f}){let p=t,m=f,h=(0,n.ref)(``),g=(0,n.ref)(!1),_=!1,v=(0,n.reactive)({}),y=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),b=(0,n.computed)(()=>{let e=y(),t=p.layoutConfig?.tabs||{};return{...e,...t}}),x=(0,n.computed)(()=>b.value.tabs.length>0),S=(0,n.computed)(()=>{if(!x.value)return[];let e=new Map;return b.value.tabs.forEach(t=>{e.set(t.key,[])}),p.formItems.forEach((t,n)=>{let r=(p.options?.[n])?.layout?.tab||b.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),b.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),C=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?String(n.path):`tab-item-${t}`},w=async()=>{if(!h.value)return!0;try{let e=p.validateTab?await p.validateTab(h.value):!0;return m(`tab-validate`,h.value),v[h.value]=e,e}catch{return v[h.value]=!1,!1}},T=
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={class:`c-form-tabs`},a={key:0,class:`single-panel`},o={class:`tabs-container`},s={key:0,class:`tab-header`},c={class:`tab-description`},l={class:`tab-form-items`},u={key:0,class:`tabs-actions`},d=(0,n.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeTabChange:{},validateTab:{}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(t,{expose:d,emit:f}){let p=t,m=f,h=(0,n.ref)(``),g=(0,n.ref)(!1),_=!1,v=(0,n.reactive)({}),y=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),b=(0,n.computed)(()=>{let e=y(),t=p.layoutConfig?.tabs||{};return{...e,...t}}),x=(0,n.computed)(()=>b.value.tabs.length>0),S=(0,n.computed)(()=>{if(!x.value)return[];let e=new Map;return b.value.tabs.forEach(t=>{e.set(t.key,[])}),p.formItems.forEach((t,n)=>{let r=(p.options?.[n])?.layout?.tab||b.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),b.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),C=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?String(n.path):`tab-item-${t}`},w=async()=>{if(!h.value)return!0;try{let e=p.validateTab?await p.validateTab(h.value):!0;return m(`tab-validate`,h.value),v[h.value]=e,e}catch{return v[h.value]=!1,!1}},T=e=>S.value.find(t=>t.config.key===e&&!t.config.disabled),E=(e,t)=>!_&&h.value===e&&t(),D=(e,t,n)=>E(e,n)&&!!T(t),O=async(e,t,n)=>{if(b.value.validateBeforeSwitch&&e&&!await w()||!E(e,n))return!1;if(e){if(await p.beforeTabChange?.(e,t)===!1||!E(e,n))return!1;m(`tab-before-change`,e,t)}return!0},k=async(e,t=()=>!0)=>{let n=h.value;if(g.value||!E(n,t))return!1;if(!e||e===h.value)return!0;if(!T(e))return!1;try{return g.value=!0,!await O(n,e,t)||!D(n,e,t)?!1:(h.value=e,m(`tab-change`,e,S.value.findIndex(t=>t.config.key===e)),!0)}catch{return!1}finally{g.value=!1}},A=e=>{k(e)},j=e=>{m(`tab-close`,e)},M=()=>{m(`tab-add`)},N=()=>{if(!x.value||S.value.length===0){h.value=``;return}let{defaultTab:e}=b.value,t=S.value.find(t=>t.config.key===e&&!t.config.disabled)?.config.key||S.value.find(e=>!e.config.disabled)?.config.key;t&&t!==h.value&&(h.value=t,(0,n.nextTick)(()=>{let e=S.value.findIndex(e=>e.config.key===t);e>=0&&m(`tab-change`,t,e)}))};return(0,n.onMounted)(()=>{N()}),(0,n.onScopeDispose)(()=>{_=!0}),(0,n.watch)((0,n.computed)(()=>b.value.tabs.map(e=>e.key).join(`,`)),()=>{b.value.tabs.some(e=>e.key===h.value)||N()}),(0,n.watch)(()=>b.value.defaultTab,e=>{e&&e!==h.value&&k(e)}),d({revealField:async(e,t=()=>!0)=>{if(!x.value)return t();let n=p.options.find(t=>t.prop===e)?.layout?.tab||b.value.tabs[0]?.key,r=S.value.find(e=>e.config.key===n);return!r||r.config.disabled?!1:k(r.config.key,t)},switchToTab:k,validateCurrentTab:w,currentTab:(0,n.readonly)(h),totalTabs:(0,n.computed)(()=>S.value.length),tabsWithItems:(0,n.readonly)(S)}),(d,f)=>{let p=r.NBadge,m=r.NSpace,_=r.NEmpty,v=r.NTabPane,y=r.NTabs,T=r.NButton;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,i,[(0,n.createCommentVNode)(` 无标签配置时的单一面板模式 `),x.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createCommentVNode)(` 有标签配置时的分标签模式 `),(0,n.createElementVNode)(`div`,o,[(0,n.createVNode)(y,{value:h.value,type:b.value.type,size:b.value.size,placement:b.value.placement,animated:b.value.animated,closable:b.value.closable,addable:b.value.addable,class:`form-tabs`,"onUpdate:value":A,onClose:j,onAdd:M},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(S.value,t=>((0,n.openBlock)(),(0,n.createBlock)(v,{key:t.config.key,name:t.config.key,tab:t.config.title,disabled:t.config.disabled||g.value,closable:t.config.closable,"display-directive":`show`},{tab:(0,n.withCtx)(()=>[(0,n.createVNode)(m,{align:`center`,size:8},{default:(0,n.withCtx)(()=>[t.config.icon?((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:0,name:t.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(t.config.title),1),b.value.showCount?((0,n.openBlock)(),(0,n.createBlock)(p,{key:1,value:t.items.length,max:99,show:t.items.length>0,type:`info`},null,8,[`value`,`show`])):(0,n.createCommentVNode)(`v-if`,!0)]),_:2},1024)]),default:(0,n.withCtx)(()=>[b.value.showTabHeader&&t.config.description?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,s,[(0,n.createElementVNode)(`p`,c,(0,n.toDisplayString)(t.config.description),1)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,l,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.items,(e,t)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e),{key:C(e,t)}))),128))]),t.items.length===0?((0,n.openBlock)(),(0,n.createBlock)(_,{key:1,description:`暂无表单项`,class:`tab-empty`})):(0,n.createCommentVNode)(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),(0,n.createCommentVNode)(` 标签页操作按钮 `),b.value.showActions?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[(0,n.createVNode)(m,{justify:`space-between`},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(m,null,{default:(0,n.withCtx)(()=>[b.value.validateBeforeSwitch?((0,n.openBlock)(),(0,n.createBlock)(T,{key:0,type:`primary`,size:t.controlSize??`small`,onClick:w},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),f[0]||=(0,n.createTextVNode)(` 验证当前标签 `,-1)]),_:1},8,[`size`])):(0,n.createCommentVNode)(`v-if`,!0)]),_:1}),(0,n.createVNode)(m,null,{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(d.$slots,`tab-actions`,{currentTab:h.value,totalTabs:S.value.length,validateTab:w,switchToTab:k},void 0,!0)]),_:3})]),_:3})])):(0,n.createCommentVNode)(`v-if`,!0)])],2112)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,a,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.formItems,(e,t)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e),{key:C(e,t)}))),128))]))])}}});var f=t.t(d,[[`__scopeId`,`data-v-a597a3d1`]]);exports.default=f;
|
package/dist/Tabs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,nextTick as d,onMounted as f,onScopeDispose as p,openBlock as m,reactive as h,readonly as g,ref as _,renderList as v,renderSlot as y,resolveComponent as b,resolveDynamicComponent as x,toDisplayString as S,watch as C,withCtx as w}from"vue";import{NBadge as T,NButton as E,NEmpty as
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,nextTick as d,onMounted as f,onScopeDispose as p,openBlock as m,reactive as h,readonly as g,ref as _,renderList as v,renderSlot as y,resolveComponent as b,resolveDynamicComponent as x,toDisplayString as S,watch as C,withCtx as w}from"vue";import{NBadge as T,NButton as E,NEmpty as ee,NSpace as D,NTabPane as O,NTabs as k}from"naive-ui";const A={class:`c-form-tabs`},j={key:0,class:`single-panel`},M={class:`tabs-container`},N={key:0,class:`tab-header`},P={class:`tab-description`},F={class:`tab-form-items`},I={key:0,class:`tabs-actions`};var L=t(u({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeTabChange:{},validateTab:{}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(t,{expose:u,emit:b}){let L=t,R=b,z=_(``),B=_(!1),V=!1,H=h({}),U=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),W=r(()=>{let e=U(),t=L.layoutConfig?.tabs||{};return{...e,...t}}),G=r(()=>W.value.tabs.length>0),K=r(()=>{if(!G.value)return[];let e=new Map;return W.value.tabs.forEach(t=>{e.set(t.key,[])}),L.formItems.forEach((t,n)=>{let r=(L.options?.[n])?.layout?.tab||W.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),W.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),q=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?String(n.path):`tab-item-${t}`},J=async()=>{if(!z.value)return!0;try{let e=L.validateTab?await L.validateTab(z.value):!0;return R(`tab-validate`,z.value),H[z.value]=e,e}catch{return H[z.value]=!1,!1}},Y=e=>K.value.find(t=>t.config.key===e&&!t.config.disabled),X=(e,t)=>!V&&z.value===e&&t(),Z=(e,t,n)=>X(e,n)&&!!Y(t),te=async(e,t,n)=>{if(W.value.validateBeforeSwitch&&e&&!await J()||!X(e,n))return!1;if(e){if(await L.beforeTabChange?.(e,t)===!1||!X(e,n))return!1;R(`tab-before-change`,e,t)}return!0},Q=async(e,t=()=>!0)=>{let n=z.value;if(B.value||!X(n,t))return!1;if(!e||e===z.value)return!0;if(!Y(e))return!1;try{return B.value=!0,!await te(n,e,t)||!Z(n,e,t)?!1:(z.value=e,R(`tab-change`,e,K.value.findIndex(t=>t.config.key===e)),!0)}catch{return!1}finally{B.value=!1}},ne=e=>{Q(e)},re=e=>{R(`tab-close`,e)},ie=()=>{R(`tab-add`)},$=()=>{if(!G.value||K.value.length===0){z.value=``;return}let{defaultTab:e}=W.value,t=K.value.find(t=>t.config.key===e&&!t.config.disabled)?.config.key||K.value.find(e=>!e.config.disabled)?.config.key;t&&t!==z.value&&(z.value=t,d(()=>{let e=K.value.findIndex(e=>e.config.key===t);e>=0&&R(`tab-change`,t,e)}))};return f(()=>{$()}),p(()=>{V=!0}),C(r(()=>W.value.tabs.map(e=>e.key).join(`,`)),()=>{W.value.tabs.some(e=>e.key===z.value)||$()}),C(()=>W.value.defaultTab,e=>{e&&e!==z.value&&Q(e)}),u({revealField:async(e,t=()=>!0)=>{if(!G.value)return t();let n=L.options.find(t=>t.prop===e)?.layout?.tab||W.value.tabs[0]?.key,r=K.value.find(e=>e.config.key===n);return!r||r.config.disabled?!1:Q(r.config.key,t)},switchToTab:Q,validateCurrentTab:J,currentTab:g(z),totalTabs:r(()=>K.value.length),tabsWithItems:g(K)}),(r,u)=>{let d=T,f=D,p=ee,h=O,g=k,_=E;return m(),o(`div`,A,[a(` 无标签配置时的单一面板模式 `),G.value?(m(),o(n,{key:1},[a(` 有标签配置时的分标签模式 `),s(`div`,M,[l(g,{value:z.value,type:W.value.type,size:W.value.size,placement:W.value.placement,animated:W.value.animated,closable:W.value.closable,addable:W.value.addable,class:`form-tabs`,"onUpdate:value":ne,onClose:re,onAdd:ie},{default:w(()=>[(m(!0),o(n,null,v(K.value,t=>(m(),i(h,{key:t.config.key,name:t.config.key,tab:t.config.title,disabled:t.config.disabled||B.value,closable:t.config.closable,"display-directive":`show`},{tab:w(()=>[l(f,{align:`center`,size:8},{default:w(()=>[t.config.icon?(m(),i(e,{key:0,name:t.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):a(`v-if`,!0),s(`span`,null,S(t.config.title),1),W.value.showCount?(m(),i(d,{key:1,value:t.items.length,max:99,show:t.items.length>0,type:`info`},null,8,[`value`,`show`])):a(`v-if`,!0)]),_:2},1024)]),default:w(()=>[W.value.showTabHeader&&t.config.description?(m(),o(`div`,N,[s(`p`,P,S(t.config.description),1)])):a(`v-if`,!0),s(`div`,F,[(m(!0),o(n,null,v(t.items,(e,t)=>(m(),i(x(e),{key:q(e,t)}))),128))]),t.items.length===0?(m(),i(p,{key:1,description:`暂无表单项`,class:`tab-empty`})):a(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),a(` 标签页操作按钮 `),W.value.showActions?(m(),o(`div`,I,[l(f,{justify:`space-between`},{default:w(()=>[l(f,null,{default:w(()=>[W.value.validateBeforeSwitch?(m(),i(_,{key:0,type:`primary`,size:t.controlSize??`small`,onClick:J},{default:w(()=>[l(e,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),u[0]||=c(` 验证当前标签 `,-1)]),_:1},8,[`size`])):a(`v-if`,!0)]),_:1}),l(f,null,{default:w(()=>[y(r.$slots,`tab-actions`,{currentTab:z.value,totalTabs:K.value.length,validateTab:J,switchToTab:Q},void 0,!0)]),_:3})]),_:3})])):a(`v-if`,!0)])],2112)):(m(),o(`div`,j,[(m(!0),o(n,null,v(t.formItems,(e,t)=>(m(),i(x(e),{key:q(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-a597a3d1`]]);export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=new Set([`__proto__`,`constructor`,`prototype`]);function t(t){let n={},r=new Set;for(let i of t){if(e.has(i.field)||r.has(i.field))throw TypeError(`批改字段必须安全且唯一:${i.field}`);if(r.add(i.field),i.operation===`keep`)continue;let t=i.operation===`clear`?null:i.value;if(t!==null&&![`string`,`number`,`boolean`].includes(typeof t))throw TypeError(`批改只支持显式标量值`);if(typeof t==`number`&&!Number.isFinite(t))throw TypeError(`批改数值必须有限`);Object.defineProperty(n,i.field,{value:t,enumerable:!0,configurable:!0,writable:!0})}return n}function n(e){return[...new Map(e.map(e=>[e.key,e])).values()].filter(e=>e.retryable&&(e.status===`failure`||e.status===`conflict`)).map(e=>e.key)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/core/batchPatch.d.ts
|
|
2
|
+
/** 批改只表达显式标量变更,预览和后端事务由使用方组合。 */
|
|
3
|
+
type PatchScalar = string | number | boolean | null;
|
|
4
|
+
type BatchFieldChange<T extends object> = { [K in Extract<keyof T, string>]: NonNullable<T[K]> extends Exclude<PatchScalar, null> ? {
|
|
5
|
+
field: K;
|
|
6
|
+
operation: 'keep';
|
|
7
|
+
} | {
|
|
8
|
+
field: K;
|
|
9
|
+
operation: 'set';
|
|
10
|
+
value: Exclude<T[K], undefined>;
|
|
11
|
+
} | (null extends T[K] ? {
|
|
12
|
+
field: K;
|
|
13
|
+
operation: 'clear';
|
|
14
|
+
} : never) : never }[Extract<keyof T, string>];
|
|
15
|
+
/** keep 不发送,clear 发送 null,set 保留 0/false/空串;不会修改原记录。 */
|
|
16
|
+
declare function createBatchPatch<T extends object>(changes: readonly BatchFieldChange<T>[]): Partial<T>;
|
|
17
|
+
interface BatchOperationResult<K extends string | number = string | number> {
|
|
18
|
+
key: K;
|
|
19
|
+
status: 'success' | 'failure' | 'conflict' | 'skipped';
|
|
20
|
+
message?: string;
|
|
21
|
+
retryable?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** 失败重试仅包含后端明确允许的行,不把成功行再次提交。 */
|
|
24
|
+
declare function getRetryableKeys<K extends string | number>(results: readonly BatchOperationResult<K>[]): K[];
|
|
25
|
+
//#endregion
|
|
26
|
+
export { getRetryableKeys as a, createBatchPatch as i, BatchOperationResult as n, PatchScalar as r, BatchFieldChange as t };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/core/batchPatch.d.ts
|
|
2
|
+
/** 批改只表达显式标量变更,预览和后端事务由使用方组合。 */
|
|
3
|
+
type PatchScalar = string | number | boolean | null;
|
|
4
|
+
type BatchFieldChange<T extends object> = { [K in Extract<keyof T, string>]: NonNullable<T[K]> extends Exclude<PatchScalar, null> ? {
|
|
5
|
+
field: K;
|
|
6
|
+
operation: 'keep';
|
|
7
|
+
} | {
|
|
8
|
+
field: K;
|
|
9
|
+
operation: 'set';
|
|
10
|
+
value: Exclude<T[K], undefined>;
|
|
11
|
+
} | (null extends T[K] ? {
|
|
12
|
+
field: K;
|
|
13
|
+
operation: 'clear';
|
|
14
|
+
} : never) : never }[Extract<keyof T, string>];
|
|
15
|
+
/** keep 不发送,clear 发送 null,set 保留 0/false/空串;不会修改原记录。 */
|
|
16
|
+
declare function createBatchPatch<T extends object>(changes: readonly BatchFieldChange<T>[]): Partial<T>;
|
|
17
|
+
interface BatchOperationResult<K extends string | number = string | number> {
|
|
18
|
+
key: K;
|
|
19
|
+
status: 'success' | 'failure' | 'conflict' | 'skipped';
|
|
20
|
+
message?: string;
|
|
21
|
+
retryable?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** 失败重试仅包含后端明确允许的行,不把成功行再次提交。 */
|
|
24
|
+
declare function getRetryableKeys<K extends string | number>(results: readonly BatchOperationResult<K>[]): K[];
|
|
25
|
+
//#endregion
|
|
26
|
+
export { getRetryableKeys as a, createBatchPatch as i, BatchOperationResult as n, PatchScalar as r, BatchFieldChange as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=new Set([`__proto__`,`constructor`,`prototype`]);function t(t){let n={},r=new Set;for(let i of t){if(e.has(i.field)||r.has(i.field))throw TypeError(`批改字段必须安全且唯一:${i.field}`);if(r.add(i.field),i.operation===`keep`)continue;let t=i.operation===`clear`?null:i.value;if(t!==null&&![`string`,`number`,`boolean`].includes(typeof t))throw TypeError(`批改只支持显式标量值`);if(typeof t==`number`&&!Number.isFinite(t))throw TypeError(`批改数值必须有限`);Object.defineProperty(n,i.field,{value:t,enumerable:!0,configurable:!0,writable:!0})}return n}function n(e){return[...new Map(e.map(e=>[e.key,e])).values()].filter(e=>e.retryable&&(e.status===`failure`||e.status===`conflict`)).map(e=>e.key)}export{n,t};
|
package/dist/config.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=Symbol(`robot-component-feedback`),
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./dictionary.cjs`),t=Symbol(`robot-dictionary-provider`),n=Symbol(`robot-component-feedback`),r=Symbol(`robot-component-locale`),i=Symbol(`c-form-global-config`);exports.COMPONENT_FEEDBACK_KEY=n,exports.COMPONENT_LOCALE_KEY=r,exports.DICTIONARY_PROVIDER_KEY=t,exports.FORM_GLOBAL_CONFIG_KEY=i,exports.createDictionaryLabelResolver=e.t,exports.getDictionaryLabel=e.i,exports.parseDictionaryValue=e.a;
|
package/dist/config.d.cts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { i as ConfirmOptions, n as ComponentLocale, r as ComponentLocaleName, t as ComponentFeedback } from "./contracts.cjs";
|
|
2
2
|
import { n as FormConfig } from "./useFormConfig.cjs";
|
|
3
|
+
import { a as DictionarySource, c as getDictionaryLabel, i as DictionaryProvider, l as parseDictionaryValue, n as DictionaryOption, o as DictionaryValue, r as DictionaryParseResult, s as createDictionaryLabelResolver, t as DictionaryBinding } from "./dictionary.cjs";
|
|
3
4
|
import { InjectionKey } from "vue";
|
|
4
5
|
|
|
5
6
|
//#region src/context.d.ts
|
|
7
|
+
/** 应用作用域字典源;与表单/搜索/表格共享,不引入数据缓存或固定后端。 */
|
|
8
|
+
declare const DICTIONARY_PROVIDER_KEY: InjectionKey<DictionaryProvider>;
|
|
6
9
|
declare const COMPONENT_FEEDBACK_KEY: InjectionKey<ComponentFeedback>;
|
|
7
10
|
declare const COMPONENT_LOCALE_KEY: InjectionKey<ComponentLocale>;
|
|
8
11
|
/** 按需接入与全量安装共享同一个表单默认配置,不引入表单渲染依赖。 */
|
|
9
12
|
declare const FORM_GLOBAL_CONFIG_KEY: InjectionKey<FormConfig>;
|
|
10
13
|
//#endregion
|
|
11
|
-
export { COMPONENT_FEEDBACK_KEY, COMPONENT_LOCALE_KEY, type ComponentFeedback, type ComponentLocale, type ComponentLocaleName, type ConfirmOptions, FORM_GLOBAL_CONFIG_KEY, type FormConfig };
|
|
14
|
+
export { COMPONENT_FEEDBACK_KEY, COMPONENT_LOCALE_KEY, type ComponentFeedback, type ComponentLocale, type ComponentLocaleName, type ConfirmOptions, DICTIONARY_PROVIDER_KEY, type DictionaryBinding, type DictionaryOption, type DictionaryParseResult, type DictionaryProvider, type DictionarySource, type DictionaryValue, FORM_GLOBAL_CONFIG_KEY, type FormConfig, createDictionaryLabelResolver, getDictionaryLabel, parseDictionaryValue };
|
package/dist/config.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as ConfirmOptions, n as ComponentLocale, r as ComponentLocaleName, t as ComponentFeedback } from "./contracts.js";
|
|
2
|
+
import { n as FormConfig } from "./useFormConfig.js";
|
|
3
|
+
import { a as DictionarySource, c as getDictionaryLabel, i as DictionaryProvider, l as parseDictionaryValue, n as DictionaryOption, o as DictionaryValue, r as DictionaryParseResult, s as createDictionaryLabelResolver, t as DictionaryBinding } from "./dictionary.js";
|
|
2
4
|
import { InjectionKey } from "vue";
|
|
3
5
|
|
|
4
6
|
//#region src/context.d.ts
|
|
7
|
+
/** 应用作用域字典源;与表单/搜索/表格共享,不引入数据缓存或固定后端。 */
|
|
8
|
+
declare const DICTIONARY_PROVIDER_KEY: InjectionKey<DictionaryProvider>;
|
|
5
9
|
declare const COMPONENT_FEEDBACK_KEY: InjectionKey<ComponentFeedback>;
|
|
6
10
|
declare const COMPONENT_LOCALE_KEY: InjectionKey<ComponentLocale>;
|
|
7
11
|
/** 按需接入与全量安装共享同一个表单默认配置,不引入表单渲染依赖。 */
|
|
8
12
|
declare const FORM_GLOBAL_CONFIG_KEY: InjectionKey<FormConfig>;
|
|
9
13
|
//#endregion
|
|
10
|
-
export { COMPONENT_FEEDBACK_KEY, COMPONENT_LOCALE_KEY, type ComponentFeedback, type ComponentLocale, type ComponentLocaleName, type ConfirmOptions, FORM_GLOBAL_CONFIG_KEY, type FormConfig };
|
|
14
|
+
export { COMPONENT_FEEDBACK_KEY, COMPONENT_LOCALE_KEY, type ComponentFeedback, type ComponentLocale, type ComponentLocaleName, type ConfirmOptions, DICTIONARY_PROVIDER_KEY, type DictionaryBinding, type DictionaryOption, type DictionaryParseResult, type DictionaryProvider, type DictionarySource, type DictionaryValue, FORM_GLOBAL_CONFIG_KEY, type FormConfig, createDictionaryLabelResolver, getDictionaryLabel, parseDictionaryValue };
|
package/dist/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
import{a as e,i as t,t as n}from"./dictionary.js";const r=Symbol(`robot-dictionary-provider`),i=Symbol(`robot-component-feedback`),a=Symbol(`robot-component-locale`),o=Symbol(`c-form-global-config`);export{i as COMPONENT_FEEDBACK_KEY,a as COMPONENT_LOCALE_KEY,r as DICTIONARY_PROVIDER_KEY,o as FORM_GLOBAL_CONFIG_KEY,n as createDictionaryLabelResolver,t as getDictionaryLabel,e as parseDictionaryValue};
|
package/dist/config2.d.ts
CHANGED
package/dist/constants.d.cts
CHANGED
|
@@ -117,8 +117,8 @@ declare const __VLS_export: vue.DefineComponent<CronProps, CronExpose, {}, {}, {
|
|
|
117
117
|
"onValidation-change"?: ((result: CronValidation) => any) | undefined;
|
|
118
118
|
}>, {
|
|
119
119
|
disabled: boolean;
|
|
120
|
-
showTemplates: boolean;
|
|
121
120
|
showPreview: boolean;
|
|
121
|
+
showTemplates: boolean;
|
|
122
122
|
showSecond: boolean;
|
|
123
123
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
124
124
|
declare const _default: typeof __VLS_export;
|
package/dist/constants.d.ts
CHANGED
|
@@ -117,8 +117,8 @@ declare const __VLS_export: vue.DefineComponent<CronProps, CronExpose, {}, {}, {
|
|
|
117
117
|
"onValidation-change"?: ((result: CronValidation) => any) | undefined;
|
|
118
118
|
}>, {
|
|
119
119
|
disabled: boolean;
|
|
120
|
-
showTemplates: boolean;
|
|
121
120
|
showPreview: boolean;
|
|
121
|
+
showTemplates: boolean;
|
|
122
122
|
showSecond: boolean;
|
|
123
123
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
124
124
|
declare const _default: typeof __VLS_export;
|