dynamicformdjx 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## 概述
12
12
 
13
- > 新增综合`CRUD`模板
13
+ > 新增触底加载下拉刷新
14
14
 
15
15
  `DynamicForm` 一个灵活且动态的表单组件,使用数组,简化模版操作,提供多种hook快速操作表单等。
16
16
 
@@ -37,7 +37,7 @@ yarn add dynamicformdjx
37
37
  pnpm add dynamicformdjx
38
38
  ```
39
39
 
40
- ### 综合`CRUD` template **新**
40
+ ### 综合`CRUD` template
41
41
 
42
42
  > (依赖于naive ui或element plus组件库,请配合一起使用)
43
43
 
@@ -859,4 +859,175 @@ pnpm add dynamicformdjx
859
859
  <p>Result</p>
860
860
  <button @click="setData">setData 8888</button>
861
861
  </template>
862
+ ```
863
+
864
+ ### 触底加载下拉刷新 **新**
865
+
866
+ ```vue
867
+ <script setup lang="ts">
868
+ import {reactive, ref} from "vue";
869
+ import {LoadedScroll} from "dynamicformdjx";
870
+
871
+ type Row = {
872
+ id: number;
873
+ name: string;
874
+ };
875
+ type pageModal = {
876
+ pageNo: number, pageSize: number
877
+ }
878
+
879
+ const tableData = ref<Row[]>([]);
880
+ const loading = ref(true);
881
+ const finished = ref(false);
882
+ const isError = ref(false);
883
+ const pageModal = reactive({
884
+ pageNo: 1,
885
+ pageSize: 20,
886
+ total: 100
887
+ })
888
+
889
+ async function fetchData() {
890
+ try {
891
+ const list = await mockApi(pageModal);
892
+
893
+ if (tableData.value.length >= pageModal.total) {
894
+ finished.value = true;
895
+ return
896
+ }
897
+
898
+ tableData.value.push(...list);
899
+ pageModal.pageNo++;
900
+ } catch (e) {
901
+ throw e;
902
+ }
903
+ }
904
+
905
+ function mockApi(pm: pageModal): Promise<Row[]> {
906
+ return new Promise((resolve, reject) => {
907
+ setTimeout(() => {
908
+ if (pm.pageNo === 3) {
909
+ // test fail
910
+ pageModal.pageNo += 1
911
+ return reject("error");
912
+ }
913
+ const start = (pm.pageNo - 1) * pm.pageSize + 1;
914
+
915
+ resolve(
916
+ Array.from({length: pm.pageSize}, (_, i) => ({
917
+ id: start + i,
918
+ name: `Data ${start + i}`,
919
+ }))
920
+ );
921
+ }, 1500);
922
+ });
923
+ }
924
+
925
+ async function refreshData() {
926
+ pageModal.pageNo = 1
927
+ finished.value = false;
928
+ isError.value = false;
929
+ tableData.value = [];
930
+
931
+ await fetchData();
932
+ }
933
+ </script>
934
+
935
+ <template>
936
+ <h2>LoadedScroll Test</h2>
937
+ <LoadedScroll
938
+ v-model:loading="loading"
939
+ v-model:is-error="isError"
940
+ :load-data="fetchData"
941
+ :finished="finished"
942
+ scroll-node=".native-table-body"
943
+ pull-refresh
944
+ :refresh-data="refreshData"
945
+ support-mode="all"
946
+ >
947
+ <template #default="{ hintHeight }">
948
+ <div class="native-table-wrap">
949
+ <div
950
+ class="native-table-body"
951
+ >
952
+ <table class="native-table">
953
+ <thead>
954
+ <tr>
955
+ <th>ID</th>
956
+ <th>Title</th>
957
+ </tr>
958
+ </thead>
959
+
960
+ <tbody>
961
+ <tr v-for="row in tableData" :key="row.id">
962
+ <td>{{ row.id }}</td>
963
+ <td>{{ row.name }}</td>
964
+ </tr>
965
+
966
+ <tr v-if="!tableData.length && !loading">
967
+ <td colspan="2" class="empty-cell">
968
+ No Data
969
+ </td>
970
+ </tr>
971
+ </tbody>
972
+ </table>
973
+ </div>
974
+ </div>
975
+ </template>
976
+ </LoadedScroll>
977
+ </template>
978
+
979
+ <style scoped>
980
+ h2{
981
+ text-align: center;
982
+ margin: 10px;
983
+ }
984
+ .native-table-wrap {
985
+ height: calc(100vh - 130px);
986
+ border: 1px solid #e5e7eb;
987
+ border-radius: 8px;
988
+ overflow: hidden;
989
+ }
990
+
991
+ .native-table-body {
992
+ height: 100%;
993
+ overflow-y: auto;
994
+ overscroll-behavior: contain;
995
+ }
996
+
997
+ .native-table {
998
+ width: 100%;
999
+ border-collapse: collapse;
1000
+ table-layout: fixed;
1001
+ font-size: 14px;
1002
+ }
1003
+
1004
+ .native-table thead {
1005
+ position: sticky;
1006
+ top: 0;
1007
+ z-index: 1;
1008
+ background: #f8fafc;
1009
+ }
1010
+
1011
+ .native-table th,
1012
+ .native-table td {
1013
+ padding: 10px 12px;
1014
+ border-bottom: 1px solid #e5e7eb;
1015
+ text-align: left;
1016
+ }
1017
+
1018
+ .native-table th {
1019
+ font-weight: 600;
1020
+ color: #374151;
1021
+ }
1022
+
1023
+ .native-table td {
1024
+ color: #111827;
1025
+ }
1026
+
1027
+ .empty-cell {
1028
+ height: 220px;
1029
+ text-align: center !important;
1030
+ color: #999;
1031
+ }
1032
+ </style>
862
1033
  ```
@@ -20,6 +20,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
20
20
  type: PropType<number[]>;
21
21
  default: number[];
22
22
  };
23
+ observeDelay: {
24
+ type: NumberConstructor;
25
+ default: number;
26
+ };
23
27
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
24
28
  title: {
25
29
  type: StringConstructor;
@@ -40,10 +44,15 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
40
44
  type: PropType<number[]>;
41
45
  default: number[];
42
46
  };
47
+ observeDelay: {
48
+ type: NumberConstructor;
49
+ default: number;
50
+ };
43
51
  }>> & Readonly<{}>, {
44
52
  zealHeight: string;
45
53
  outPadding: number;
46
54
  searchBtnTxt: string[];
47
55
  checkWindowSize: number[];
56
+ observeDelay: number;
48
57
  }, SlotsType<ZealCardSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
49
58
  export default _default;
@@ -1,9 +1,12 @@
1
- import { PropType, SlotsType } from 'vue';
1
+ import { ExtractPropTypes, PropType, SlotsType } from 'vue';
2
2
  import { DyFormItem, ZealColumn, ZealPagination } from '../types/form';
3
- import { EleZealTablePaginationSlots, EleZealTableSlots, ZealTableSearchSlots } from '../types/slots';
3
+ import { EleZealTablePaginationSlots, EleZealTableSlots, ZealTableBtnControlSlots, ZealTableSearchSlots } from '../types/slots';
4
4
  import { TableProps } from 'element-plus';
5
5
  import { PaginationProps } from 'element-plus/es/components/pagination/src/pagination';
6
- export declare const EleZealTableSearch: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
6
+ import { TableBtnType } from '../types';
7
+ import { dropdownProps } from 'element-plus/es/components/dropdown/src/dropdown';
8
+ import { buttonProps } from 'element-plus/es/components/button/src/button';
9
+ export declare const EleZealTableSearch: import('vue').DefineComponent<ExtractPropTypes<{
7
10
  title: {
8
11
  type: StringConstructor;
9
12
  };
@@ -49,7 +52,7 @@ export declare const EleZealTableSearch: import('vue').DefineComponent<import('v
49
52
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
50
53
  onReset: () => true;
51
54
  onSearch: (data: object) => true;
52
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
55
+ }, string, import('vue').PublicProps, Readonly<ExtractPropTypes<{
53
56
  title: {
54
57
  type: StringConstructor;
55
58
  };
@@ -106,7 +109,7 @@ export declare const EleZealTableSearch: import('vue').DefineComponent<import('v
106
109
  closeDrawerAuto: boolean;
107
110
  copyDefault: boolean;
108
111
  }, SlotsType<ZealTableSearchSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
109
- export declare const EleZealTablePaginationControl: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
112
+ export declare const EleZealTablePaginationControl: import('vue').DefineComponent<ExtractPropTypes<{
110
113
  pagination: {
111
114
  type: PropType<ZealPagination>;
112
115
  required: true;
@@ -118,7 +121,7 @@ export declare const EleZealTablePaginationControl: import('vue').DefineComponen
118
121
  type: BooleanConstructor;
119
122
  default: boolean;
120
123
  };
121
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
124
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ExtractPropTypes<{
122
125
  pagination: {
123
126
  type: PropType<ZealPagination>;
124
127
  required: true;
@@ -133,7 +136,7 @@ export declare const EleZealTablePaginationControl: import('vue').DefineComponen
133
136
  }>> & Readonly<{}>, {
134
137
  isMobile: boolean;
135
138
  }, SlotsType<EleZealTablePaginationSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
136
- export declare const EleZealTable: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
139
+ export declare const EleZealTable: import('vue').DefineComponent<ExtractPropTypes<{
137
140
  data: {
138
141
  type: PropType<any[]>;
139
142
  default: () => never[];
@@ -163,7 +166,7 @@ export declare const EleZealTable: import('vue').DefineComponent<import('vue').E
163
166
  tableConfig: {
164
167
  type: PropType<Partial<TableProps<any>>>;
165
168
  };
166
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
169
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ExtractPropTypes<{
167
170
  data: {
168
171
  type: PropType<any[]>;
169
172
  default: () => never[];
@@ -200,3 +203,82 @@ export declare const EleZealTable: import('vue').DefineComponent<import('vue').E
200
203
  stripe: boolean;
201
204
  columns: ZealColumn<any>[];
202
205
  }, SlotsType<EleZealTableSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
206
+ export declare const EleZealTableBtnControl: import('vue').DefineComponent<ExtractPropTypes<{
207
+ isMobile: {
208
+ type: BooleanConstructor;
209
+ default: boolean;
210
+ };
211
+ btnItems: {
212
+ type: PropType<(TableBtnType & Partial<ExtractPropTypes<typeof buttonProps>>)[]>;
213
+ default: () => never[];
214
+ };
215
+ size: {
216
+ type: PropType<"small" | "large">;
217
+ default: string;
218
+ };
219
+ dropDownProps: {
220
+ type: PropType<Partial<ExtractPropTypes<typeof dropdownProps>>>;
221
+ };
222
+ dropDownText: {
223
+ type: StringConstructor;
224
+ default: string;
225
+ };
226
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
227
+ onSelect: (k: string) => true;
228
+ }, string, import('vue').PublicProps, Readonly<ExtractPropTypes<{
229
+ isMobile: {
230
+ type: BooleanConstructor;
231
+ default: boolean;
232
+ };
233
+ btnItems: {
234
+ type: PropType<(TableBtnType & Partial<ExtractPropTypes<typeof buttonProps>>)[]>;
235
+ default: () => never[];
236
+ };
237
+ size: {
238
+ type: PropType<"small" | "large">;
239
+ default: string;
240
+ };
241
+ dropDownProps: {
242
+ type: PropType<Partial<ExtractPropTypes<typeof dropdownProps>>>;
243
+ };
244
+ dropDownText: {
245
+ type: StringConstructor;
246
+ default: string;
247
+ };
248
+ }>> & Readonly<{
249
+ onOnSelect?: ((k: string) => any) | undefined;
250
+ }>, {
251
+ size: "small" | "large";
252
+ isMobile: boolean;
253
+ btnItems: (TableBtnType & Partial<ExtractPropTypes<{
254
+ readonly size: {
255
+ readonly type: import('vue').PropType<import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", never>>;
256
+ readonly required: false;
257
+ readonly validator: ((val: unknown) => boolean) | undefined;
258
+ __epPropKey: true;
259
+ };
260
+ readonly disabled: BooleanConstructor;
261
+ readonly type: import('element-plus/es/utils/index.mjs').EpPropFinalized<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown, "", boolean>;
262
+ readonly icon: {
263
+ readonly type: import('vue').PropType<import('element-plus/es/utils/index.mjs').EpPropMergeType<(new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component) | ((new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component))[], unknown, unknown>>;
264
+ readonly required: false;
265
+ readonly validator: ((val: unknown) => boolean) | undefined;
266
+ __epPropKey: true;
267
+ };
268
+ readonly nativeType: import('element-plus/es/utils/index.mjs').EpPropFinalized<StringConstructor, "button" | "reset" | "submit", unknown, "button", boolean>;
269
+ readonly loading: BooleanConstructor;
270
+ readonly loadingIcon: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component) | ((new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component))[], unknown, unknown, () => any, boolean>;
271
+ readonly plain: import('element-plus/es/utils/index.mjs').EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
272
+ readonly text: import('element-plus/es/utils/index.mjs').EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
273
+ readonly link: BooleanConstructor;
274
+ readonly bg: BooleanConstructor;
275
+ readonly autofocus: BooleanConstructor;
276
+ readonly round: import('element-plus/es/utils/index.mjs').EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
277
+ readonly circle: BooleanConstructor;
278
+ readonly color: StringConstructor;
279
+ readonly dark: BooleanConstructor;
280
+ readonly autoInsertSpace: import('element-plus/es/utils/index.mjs').EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
281
+ readonly tag: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component) | ((new (...args: any[]) => (string | import('vue').Component) & {}) | (() => string | import('vue').Component))[], unknown, unknown, "button", boolean>;
282
+ }>>)[];
283
+ dropDownText: string;
284
+ }, SlotsType<ZealTableBtnControlSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,7 @@
1
+ import { eleZealCardRef } from '..';
2
+ import { ZealColumnType } from '../../types';
3
+ import { ZealColumn } from '../../types/form.ts';
4
+ export declare function useZealColumnTool<T extends Record<string, any>>(createColumn: ((obj: ZealColumnType) => ZealColumn<T>[]), config?: ZealColumn<T>): {
5
+ eleZealCardRef: import('vue').Ref<eleZealCardRef | null, eleZealCardRef | null>;
6
+ tableColumns: import('vue').ComputedRef<ZealColumn<T>[]>;
7
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("../index-BRJXkpNJ.cjs"),t=require("vue"),c=require("element-plus"),J=t.defineComponent({name:"EleDynamicInput",props:{size:{type:String},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},modelValue:{type:Object,required:!0}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,o)=>!0},slots:Object,setup(e,{emit:o,expose:l,slots:r}){const s={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,hideArrayBtn:!1,hideNumberBtn:!1,...e.configs},y={arraySplitSymbol:",",...e.dyListConfigs},a=e.size,i=t.ref(N.tranArr(e.modelValue,e.randomFun,y.arraySplitSymbol)),v=t.ref(null);t.watch(i,p=>{if(!e.isController)return;const V=N.resetObj(p,y.arraySplitSymbol);o("update:modelValue",V),o("onMerge",V,t.toRaw(i.value))},{deep:!0}),l({onSet:p=>{i.value=N.tranArr(p??e.modelValue,e.randomFun,y.arraySplitSymbol)},getResult:(p="res")=>p==="ori"?t.toRaw(i.value):N.resetObj(i.value,y.arraySplitSymbol)});const n=()=>i.value.push({rId:e.randomFun(),key:"",value:""}),f=()=>{i.value=N.tranArr(e.modelValue,e.randomFun,y.arraySplitSymbol),o("onReset")},d=()=>{i.value.sort((V,g)=>+V.rId-+g.rId);const p=N.resetObj(i.value,y.arraySplitSymbol);o("update:modelValue",p),o("onMerge",p,t.toRaw(i.value)),i.value=N.tranArr(p,e.randomFun,y.arraySplitSymbol)};return()=>t.createVNode("div",{class:e.dyCls??`dynamicForm ${a}`,style:{maxHeight:u.maxHeight}},[t.createVNode("div",{class:`dyFormList ${i.value.length?"":"noList"}`,ref:v},[i.value.map((p,V,g)=>{const b={row:p,index:V,isLast:V===g.length-1,addItem:()=>{i.value.push({rId:e.randomFun(),key:"",value:""}),u.autoScroll&&t.nextTick(()=>{const h=v.value;h?.scrollTo({top:h.scrollHeight,behavior:"smooth"})})},removeItem:()=>{i.value=i.value.filter(h=>h.rId!==p.rId)},toggleArray:()=>p.isArray=!p.isArray,toggleNumber:()=>p.isNumber=!p.isNumber};return t.createVNode("div",{class:"dItem",key:p.rId},[t.createVNode("div",{class:"input"},[t.createVNode(c.ElInput,{size:a,modelValue:p.key,class:"key",onInput:h=>{p.key=h}},null),t.createTextVNode(":"),t.createVNode(c.ElInput,{size:a,modelValue:p.value,class:"value",onInput:h=>{u.allowFilter&&p.isNumber?p.value=N.formatNumberInput(h,p.isArray,y.arraySplitSymbol):p.value=h}},{prefix:()=>r.typeTools?r.typeTools(b):t.createVNode(t.Fragment,null,[!u.hideArrayBtn&&t.createVNode(c.ElButton,{class:"typeBtn",type:p.isArray?"success":"default",size:"small",onClick:b.toggleArray},{default:()=>[t.createTextVNode("Array")]}),!u.hideNumberBtn&&t.createVNode(c.ElButton,{class:"typeBtn",type:p.isNumber?"success":"default",size:"small",onClick:b.toggleNumber},{default:()=>[t.createTextVNode("Number")]})])})]),t.createVNode("div",{class:"btn"},[r.rowActions?r.rowActions(b):t.createVNode(t.Fragment,null,[t.createVNode(c.ElButton,{type:"success",size:a,disabled:!b.isLast,onClick:b.addItem},{default:()=>[t.createTextVNode("+")]}),t.createVNode(c.ElButton,{size:a,type:"danger",onClick:b.removeItem},{default:()=>[t.createTextVNode("-")]})])])])})]),t.createVNode("div",{class:`control ${i.value.length?"":"noList"}`},[!i.value.length&&(r.newBtn?r.newBtn({newItem:n}):t.createVNode(c.ElButton,{size:a,type:"success",onClick:n},{default:()=>[s.newTxt]})),!e.isController&&t.createVNode(t.Fragment,null,[!u.hideReset&&(r.resetBtn?r.resetBtn({reset:f}):t.createVNode(c.ElButton,{size:a,type:"default",onClick:f},{default:()=>[s.resetTxt]})),r.mergeBtn?r.mergeBtn({merge:d}):t.createVNode(c.ElButton,{size:a,type:"info",onClick:d},{default:()=>[s.mergeTxt]})])])])}});function Q(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const X=t.defineComponent({name:"EleDynamicCascadeInput",props:{modelValue:{type:Object,required:!0},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},depth:{type:Number,default:3},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},newChildTxt:{type:Function,default:e=>`添加 '${e.key}' 子项`}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,o)=>!0},slots:Object,setup(e,{emit:o,expose:l,slots:r}){const s={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,hideArrayBtn:!1,hideNumberBtn:!1,showPad:!0,retractLen:0,borderColors:[],...e.configs},y={arraySplitSymbol:",",...e.dyListConfigs},a=g=>["string","number"].includes(g),i=g=>Object.keys(g).map((b,h)=>{let m=g[b];const S=Array.isArray(m),B=S?m.every(T=>typeof T=="number"):typeof m=="number",E=m===null;return a(typeof m)&&(m=g[b]),E&&(m=""),{rId:e.randomFun(h),key:b,value:Object.prototype.toString.call(m)==="[object Object]"?i(g[b]):S?m.join(y.arraySplitSymbol):m,isArray:S||void 0,isNumber:B||void 0}}),v=g=>g.reduce((b,h)=>{const m=h.value;return h.key.trim().length&&(b[h.key]=Array.isArray(m)?v(m):N.parseValue(h.value,h.isArray,h.isNumber,y.arraySplitSymbol)),b},{}),n=t.ref(i(e.modelValue)),f=(g,b=1,h)=>t.createVNode("div",{class:[`depth-${b}`,u.showBorder?"":"no-border",u.showPad?"":"no-pad"],style:{"--depth":b,["--c"+[b]]:N.saferRepairColor(u.borderColors,b)}},[g.map((m,S,B)=>{const E=Array.isArray(m.value),T=a(typeof m.value),w={row:m,index:S,isLast:S===B.length-1,addItem:()=>{g.push({rId:e.randomFun(),key:"",value:""})},addChild:()=>{T&&(m.value=[],m.isArray=void 0),m.value.push({rId:e.randomFun(),key:"",value:""})},removeItem:()=>{if(g.splice(S,1),g.length<1){if(h===void 0)return v([]);const k=n.value.findIndex(K=>K.rId===h?.rId);b<1?n.value.splice(k,1,{...h,value:""}):h.value=""}},toggleArray:()=>m.isArray=!m.isArray,toggleNumber:()=>m.isNumber=!m.isNumber};return t.createVNode("div",{class:"dItem",key:m.rId,style:{marginLeft:b>1?`${b*u.retractLen}px`:"0"}},[t.createVNode("div",{class:"input"},[!E&&t.createVNode(t.Fragment,null,[t.createVNode(c.ElInput,{modelValue:m.key,class:"key",onInput:k=>m.key=k},null),t.createTextVNode(":")]),t.createVNode(c.ElInput,{class:`value ${E?"isKey":""}`,modelValue:T?m.value:m.key,onInput:k=>{if(E){m.key=k;return}u.allowFilter&&m.isNumber?m.value=N.formatNumberInput(k,m.isArray,y.arraySplitSymbol):m.value=k}},{prefix:Array.isArray(m.value)?void 0:()=>r.typeTools?r.typeTools(w):t.createVNode(t.Fragment,null,[!u.hideArrayBtn&&t.createVNode(c.ElButton,{type:m.isArray?"success":"default",size:"small",onClick:w.toggleArray},{default:()=>[t.createTextVNode("Array")]}),t.createTextVNode(" "),!u.hideNumberBtn&&t.createVNode(c.ElButton,{type:m.isNumber?"success":"default",size:"small",onClick:w.toggleNumber},{default:()=>[t.createTextVNode("Number")]})]),suffix:()=>{let k;return b<e.depth?!E&&(r.newChild?r.newChild(w):t.createVNode(c.ElButton,{type:"success",size:"small",onClick:()=>{T&&(m.value=[],m.isArray=void 0),m.value.push({rId:e.randomFun(),key:"",value:""})}},Q(k=e.newChildTxt(m))?k:{default:()=>[k]})):null}})]),t.createVNode("div",{class:"btn"},[r.rowActions?r.rowActions(w):t.createVNode(t.Fragment,null,[t.createVNode(c.ElButton,{type:"success",disabled:!w.isLast,onClick:w.addItem},{default:()=>[t.createTextVNode("+")]}),t.createVNode(c.ElButton,{type:"danger",onClick:w.removeItem},{default:()=>[t.createTextVNode("-")]})])]),Array.isArray(m.value)&&f(m.value,b+1,m)])})]);t.watch(n,g=>{if(!e.isController)return;const b=v(g);o("update:modelValue",b),o("onMerge",b,t.toRaw(n.value))},{deep:!0}),l({onSet:g=>{n.value=i(g??e.modelValue)},getResult:(g="res")=>g==="ori"?t.toRaw(n.value):v(n.value)});const d=()=>n.value.push({rId:e.randomFun(),key:"",value:""}),p=()=>{n.value=i(e.modelValue),o("onReset")},V=()=>{const g=v(n.value);o("update:modelValue",g),o("onMerge",g,t.toRaw(n.value)),n.value=i(g)};return()=>t.createVNode("div",{class:`dynamicCascadeForm ${e.dyCls}`},[t.createVNode("div",{class:`dyFormList ${n.value.length?"":"noObj"}`,style:{maxHeight:u.maxHeight}},[f(n.value)]),t.createVNode("div",{class:`control ${n.value.length?"":"noObj"}`},[!n.value.length&&(r.newBtn?r.newBtn({newItem:d}):t.createVNode(c.ElButton,{type:"success",onClick:d},{default:()=>[s.newTxt]})),!e.isController&&t.createVNode(t.Fragment,null,[!u.hideReset&&(r.resetBtn?r.resetBtn({reset:p}):t.createVNode(c.ElButton,{type:"default",onClick:p},{default:()=>[s.resetTxt]})),r.mergeBtn?r.mergeBtn({merge:V}):t.createVNode(c.ElButton,{type:"info",onClick:V},{default:()=>[s.mergeTxt]})])])])}}),x=t.defineComponent({name:"EleDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPosition:"left",size:"default"})},rowConfig:{type:Object,default:()=>({gutter:10,justify:"start",align:"top"})},rules:{type:Object},preset:{type:String,default:"fullRow",validator:e=>["fullRow","grid"].includes(e)?!0:(console.error("preset value must be `fullRow` or `grid`, the default value is `fullRow`"),!1)},items:{type:Array,require:!0}},slots:Object,setup(e,{expose:o,slots:l}){const r=t.ref(null),s=t.computed(()=>(e.items??[]).filter(n=>!n.hidden)),u=t.computed(()=>s.value?s.value.reduce((n,f)=>(n[f.key]=f.value.value,n),{}):{}),y=t.computed(()=>({...s.value?.reduce((f,d)=>{let p=d.rule;return d.required&&!d.rule&&(p={required:!0,message:d.requiredHint?.(d.label??"")??`${d.label}不能为空`,trigger:"blur"}),f[d.key]=p,f},{}),...e.rules})),a=t.computed(()=>[...s.value].sort((f,d)=>{const p=f.sort??1/0,V=d.sort??1/0;return Number(p)-Number(V)}));function i(n=null){s.value&&s.value.forEach(f=>{f.value.value=n})}function v(){return new Promise((n,f)=>{r.value?.validate((d,p)=>{d?n(u.value):f(p)})})}if(o({reset:i,validator:v,getResult:(n="res")=>n==="ori"?s.value:u.value}),!e.items)throw new Error("prop items must be not null");return()=>t.createVNode("div",{class:"naiDynamicForm"},[l.header&&t.createVNode("div",{class:"header"},[l.header?.()]),t.createVNode(c.ElForm,t.mergeProps({ref:r},e.formConfig,{model:u.value,rules:y.value}),{default(){const n=a.value;return e.preset==="grid"?t.h(c.ElRow,{...e.rowConfig},{default:()=>n?.map(f=>t.h(c.ElCol,{span:f.span??24,offset:f.offset??0},{default:()=>t.h(c.ElFormItem,{label:f.label,prop:f.path||f.key},{default:R(f)})}))}):n?.map(f=>t.h(c.ElFormItem,{label:f.label,prop:f.path||f.key},{default:R(f)}))}}),l.footer&&t.h("div",{class:"footer"},l.footer?.())])}});function R(e){return function(){return e.render2?e.render2(e):null}}function O(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const Y=t.defineComponent({name:"ElePopupModal",props:{title:{type:String},modalProps:{type:Object},to:{type:[String,Object]},showClose:{type:Boolean,default:!0},closeOnMask:{type:Boolean,default:!0},width:{type:String,default:"min(1080px,90%)"},onCancel:{type:Function,default:()=>!0},onSubmit:{type:Function,default:()=>!0},footerTxt:{type:Array,default:()=>["Cancel","Submit"]}},slots:Object,setup(e,{expose:o,emit:l,slots:r}){const s=t.computed(()=>({alignCenter:!0,draggable:!0,appendToBody:!0,...e.modalProps??{}})),u=t.ref(!1),y=t.reactive({c:!1,s:!1}),a=n=>{u.value=n??!u.value};o({toggle:a});const i=async()=>{y.c=!0,(await e.onCancel?.()??!0)&&a(!1),y.c=!1},v=async()=>{y.s=!0,(await e.onSubmit?.()??!0)&&a(!1),y.s=!1};return()=>t.createVNode(c.ElDialog,t.mergeProps({modelValue:u.value,"onUpdate:modelValue":n=>u.value=n,showClose:e.showClose,closeOnClickModal:e.closeOnMask,style:{width:e.width},title:e.title,appendTo:e.to},s.value),{footer:()=>{const[n,f]=e.footerTxt,{c:d,s:p}=y;return t.createVNode("div",{class:"flex justify-end align-center"},[t.createVNode(c.ElButton,{size:"small",onClick:i,loading:d},O(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{size:"small",type:"success",onClick:v,loading:p},O(f)?f:{default:()=>[f]})])},...r})}});function A(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const ee=t.defineComponent({name:"EleZealCard",props:{title:{type:String},zealHeight:{type:String,default:"100vh"},outPadding:{type:Number,default:20},searchBtnTxt:{type:Array,default:()=>["Reset","Search"]},checkWindowSize:{type:Array,default:[756,500]}},slots:Object,setup(e,{slots:o}){const l=N.useWindowSize(...e.checkWindowSize),{wrapRef:r,cardRef:s,restRef:u,tableHeight:y}=N.useObserverSize(c.ElCard);return()=>{const a=N.unwrapObj(l);return t.createVNode("div",{class:"zealCard",style:{height:`calc(${e.zealHeight} - ${e.outPadding*2}px)`},ref:r},[t.createVNode(c.ElCard,{ref:s},{default:()=>[o.default?.({tableHeight:y.value,...a})],header:()=>{const[i,v]=e.searchBtnTxt;return t.createVNode("div",{class:"header"},[o.header?.(a)??t.createVNode(t.Fragment,null,[t.createVNode("div",{class:"title"},[e.title]),t.createVNode("div",{class:"search"},[o.searchForm?.(),o.searchBtn?.()||o.searchForm&&t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small"},A(i)?i:{default:()=>[i]}),t.createVNode(c.ElButton,{type:"info",size:"small"},A(v)?v:{default:()=>[v]})])])]),t.createVNode("div",{class:"controlBtn"},[t.createVNode("div",null,[o.controlBtn?.()]),o.toolBtn?.()])])},footer:()=>t.createVNode("div",{class:"footer"},[o.footer?.(a)])}),t.createVNode("div",{ref:u},[o.rest?.()])])}}});function C(e,o,l){return e?.[o]??l}function te(e){return!!e&&(e.type==="group"||Array.isArray(e.children)||Array.isArray(e.options))}function I(e){return(e??[]).map(o=>{if(te(o)){const l=o.children??o.options??[];return{...o,__isGroup:!0,__children:l}}return{...o,__isGroup:!1}})}function ae(e,o,l="label",r="value"){const s=I(o);for(const u of s)if(u.__isGroup){for(const y of u.__children)if(C(y,r,y.value)===e)return C(y,l,y.label)}else if(C(u,r,u.value)===e)return C(u,l,u.label);return""}function P(e,o={},l){const{onChange:r,value:s,...u}=l;return t.h(c.ElInput,{...u,modelValue:e.value,"onUpdate:modelValue":y=>{e.value=y,l?.onChange?.(y,l)},...o})}function j(e,o,l={},r){const{onChange:s,labelField:u,valueField:y,options:a,...i}=r??{},v=u??"label",n=y??"value",f=I(a??o);return t.h(c.ElSelect,{...i,modelValue:e.value,"onUpdate:modelValue":d=>{e.value=d,r?.onChange?.(d,r,f)},...l},{default:()=>f.map((d,p)=>{if(d.__isGroup)return t.h(c.ElOptionGroup,{key:d.key??`g-${p}`,label:C(d,v,d.label)},{default:()=>(d.__children??[]).map((b,h)=>{const m=C(b,v,b.label),S=C(b,n,b.value);return t.h(c.ElOption,{key:b.key??`${p}-${h}`,label:m,value:S,disabled:b.disabled})})});const V=C(d,v,d.label),g=C(d,n,d.value);return t.h(c.ElOption,{key:d.key??`${p}`,label:V,value:g,disabled:d.disabled})})})}function z(e,o,l={},r,s){const{labelField:u,valueField:y,options:a,onChange:i,...v}=r??{},n=u??"label",f=y??"value",d=a??o,p=I(d),V=()=>{if(s)return s;const g=Array.isArray(e.value)?e.value.length?`已选 ${e.value.length} 项`:"请选择":e.value!=null?ae(e.value,d,n,f)||String(e.value):"请选择";return t.h(c.ElButton,null,{default:()=>g})};return Array.isArray(e.value)?t.createVNode(c.ElPopover,{trigger:"click",...v,...l},{reference:()=>V(),default:()=>t.h(c.ElCheckboxGroup,{modelValue:e.value,"onUpdate:modelValue":g=>{e.value=g,r?.onChange?.(g,r,p)}},{default:()=>t.h(c.ElSpace,{wrap:!0},{default:()=>p.flatMap((g,b)=>(g.__isGroup?g.__children??[]:[g]).map((m,S)=>{const B=C(m,n,m.label),E=C(m,f,m.value);return t.h(c.ElCheckbox,{key:m.key??`${b}-${S}`,label:E,disabled:m.disabled},{default:()=>B})}))})})}):t.createVNode(c.ElDropdown,{trigger:"click",...v,onCommand:g=>{e.value=g,r?.onChange?.(g,r,p)},...l},{default:()=>V(),dropdown:()=>t.h(c.ElDropdownMenu,null,{default:()=>p.flatMap((g,b)=>(g.__isGroup?g.__children??[]:[g]).map((m,S)=>{const B=C(m,n,m.label),E=C(m,f,m.value);return t.h(c.ElDropdownItem,{key:m.key??`${b}-${S}`,command:E,disabled:m.disabled},{default:()=>B})}))})})}function D(e,o,l={},r){const{valueField:s="value",labelField:u="label",childrenField:y="children",onChange:a,options:i,...v}=r??{},n=i??o;return t.h(c.ElTreeSelect,{...v,data:n,modelValue:e.value,"onUpdate:modelValue":f=>{e.value=f,r?.onChange?.(f,r,n)},props:{value:s,label:u,children:y,disabled:"disabled"},...l})}function $(e,o,l={},r){const{onChange:s,labelField:u,valueField:y,options:a,...i}=r??{},v=u??"label",n=y??"value",f=a??o;return t.h(c.ElRadioGroup,{...i,modelValue:e.value,"onUpdate:modelValue":d=>{e.value=d,r?.onChange?.(d,r,f)},...l},{default:()=>(f??[]).map((d,p)=>{const V=C(d,v,d.label),g=C(d,n,d.value);return t.h(c.ElRadio,{key:d.key??p,label:g,disabled:d.disabled},()=>V)})})}function M(e,o,l={},r){const{onChange:s,labelField:u,valueField:y,options:a,...i}=r??{},v=u??"label",n=y??"value",f=a??o;return t.h(c.ElRadioGroup,{...i,modelValue:e.value,"onUpdate:modelValue":d=>{e.value=d,r?.onChange?.(d,r,f)},...l},{default:()=>(f??[]).map((d,p)=>{const V=C(d,v,d.label),g=C(d,n,d.value);return t.h(c.ElRadioButton,{key:d.key??p,label:g,disabled:d.disabled},()=>V)})})}function _(e,o,l={},r){const{onChange:s,labelField:u,valueField:y,options:a,...i}=r??{},v=u??"label",n=y??"value",f=a??o;return t.h(c.ElCheckboxGroup,{...i,modelValue:e.value,"onUpdate:modelValue":d=>{e.value=d,r?.onChange?.(d,r,f)},...l},{default:()=>t.h(c.ElSpace,{wrap:!0},{default:()=>(f??[]).map((d,p)=>{const V=C(d,v,d.label),g=C(d,n,d.value);return t.h(c.ElCheckbox,{key:d.key??p,label:g,disabled:d.disabled},()=>V)})})})}function G(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElSwitch,{...s,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,l?.onChange?.(u,l)},...o})}function L(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElDatePicker,{...s,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,l?.onChange?.(u,l)},...o})}function U(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElTimePicker,{...s,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,l?.onChange?.(u,l)},...o})}function H(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElCheckbox,{...s,label:o?.label??l?.label,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,l?.onChange?.(e.value,l)},...o})}function Z(e,o={},l){const{onChange:r,value:s,labelField:u="label",valueField:y,...a}=l??{};return t.h(c.ElInputTag,{...a,modelValue:y?e.value.map(i=>i[y]):e.value,"onUpdate:modelValue":i=>{e.value=y?i.map(v=>({[u]:v,[y]:v})):i,l?.onChange?.(i,l)},...o})}function q(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElSlider,{...s,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,l?.onChange?.(u,l)},...o})}function W(e,o={},l){const{onChange:r,...s}=l??{};return t.h(c.ElInputNumber,{...s,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u??null,l?.onChange?.(e.value,l)},...o})}const le=Object.freeze(Object.defineProperty({__proto__:null,renderCheckbox:H,renderCheckboxGroup:_,renderDatePicker:L,renderDynamicTags:Z,renderInput:P,renderInputNumber:W,renderPopSelect:z,renderRadioButtonGroup:M,renderRadioGroup:$,renderSelect:j,renderSlider:q,renderSwitch:G,renderTimePicker:U,renderTreeSelect:D},Symbol.toStringTag,{value:"Module"}));function re(e){return function(l,r=!0){const s=e,u={renderInput:a=>s.renderInput(a.value,a.renderProps??{},a),renderSelect:a=>s.renderSelect(a.value,a.options??[],a.renderProps??{},a),renderPopSelect:a=>s.renderPopSelect(a.value,a.options??[],a.renderProps??{},a),renderTreeSelect:a=>s.renderTreeSelect(a.value,a.options??[],a.renderProps??{},a),renderRadioGroup:a=>s.renderRadioGroup(a.value,a.options??[],a.renderProps??{},a),renderRadioButtonGroup:a=>s.renderRadioButtonGroup(a.value,a.options??[],a.renderProps??{},a),renderCheckboxGroup:a=>s.renderCheckboxGroup(a.value,a.options??[],a.renderProps??{},a),renderSwitch:a=>s.renderSwitch(a.value,a.renderProps??{},a),renderDatePicker:a=>s.renderDatePicker(a.value,a.renderProps??{},a),renderTimePicker:a=>s.renderTimePicker(a.value,a.renderProps??{},a),renderCheckbox:a=>s.renderCheckbox(a.value,a.renderProps??{},a),renderDynamicTags:a=>s.renderDynamicTags(a.value,a.renderProps??{},a),renderSlider:a=>s.renderSlider(a.value,a.renderProps??{},a),renderInputNumber:a=>s.renderInputNumber(a.value,a.renderProps??{},a)};return l.map(a=>{const i=a;if(i.value=N.ensureRef(a.value),typeof a.render2=="function")i.render2=a.render2;else{const v=a.renderType??"renderInput",n=u[v];n?i.render2=()=>n(i):(console.warn(`[useDecorateForm] unknown renderType: ${a.renderType}`),i.render2=()=>u.renderInput(i))}return r?t.shallowReactive(i):i})}}const ne=re(le);function F(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const oe=t.defineComponent({name:"EleZealTableSearch",props:{title:{type:String},drawerTitle:{type:String},searchItems:{type:Array,default:[]},searchFormMaxHeight:{type:String,default:"200px"},size:{type:[Number,String],default:240},drawerOpenTxt:{type:String,default:"Search Drawer"},searchBtnTxt:{type:Array,default:()=>["Reset","Search"]},mobileDrawer:{type:Boolean,default:!0},closeDrawerAuto:{type:Boolean,default:!1},copyDefault:{type:Boolean,default:!1},isMobile:{type:Boolean,default:!1}},emits:{onReset:()=>!0,onSearch:e=>!0},slots:Object,setup(e,{emit:o,slots:l,expose:r}){const s=t.ref(!1),u=t.ref({}),y=N.useDyForm(e.searchItems),a=n=>{s.value=n??!s.value},i=()=>{e.copyDefault?y.setValues(u.value):y.onReset(null),o("onReset"),a(!1)},v=()=>{const n=y.getValues();o("onSearch",n),a(!1)};return t.watch(()=>e.isMobile,n=>{e.closeDrawerAuto||n||a(!1)}),t.onMounted(async()=>{await t.nextTick(),e.copyDefault&&(u.value=y.getValues())}),r({onReset:i,onSearch:v,toggleDrawer:a,getParams:()=>y.getValues()}),()=>{const[n,f]=e.searchBtnTxt;return t.createVNode("div",{class:"eleZealTableSearch"},[!e.mobileDrawer||!e.isMobile?t.createVNode(t.Fragment,null,[l.title?.()??t.createVNode("div",{class:"naiTitle"},[e.title]),t.createVNode("div",{class:"searchForm",style:{maxHeight:e.searchFormMaxHeight}},[t.createVNode(x,{items:e.searchItems,preset:"grid",formConfig:{labelPosition:"left",showMessage:!1}},null)]),l.searchBtn?l.searchBtn?.({onSearch:v,onReset:i}):t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small",onClick:i},F(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{type:"primary",size:"small",onClick:v},F(f)?f:{default:()=>[f]})])]):t.createVNode("div",{class:"drawerSearchBtn"},[l.title?.()??t.createVNode("div",{class:"naiTitle"},[e.title]),l.drawerBtn?l.drawerBtn?.({openDrawer:()=>a(!0)}):t.createVNode(c.ElButton,{size:"small",onClick:()=>{a(!0)}},{default:()=>[e.drawerOpenTxt]})]),t.createVNode(c.ElDrawer,{class:"eleZealSearchDrawer",modelValue:s.value,"onUpdate:modelValue":d=>s.value=d,size:e.size,trapFocus:!1,direction:"ttb"},{default:()=>[t.createVNode("div",{class:"searchForm"},[t.createVNode(x,{formConfig:{labelPosition:"left",size:"small",showMessage:!1},items:e.searchItems},null)])],header:()=>t.createVNode("div",null,[e.drawerTitle??e.title]),footer:()=>l.searchBtn?l.searchBtn?.({onSearch:v,onReset:i}):t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small",onClick:i},F(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{type:"primary",size:"small",onClick:v},F(f)?f:{default:()=>[f]})])})])}}}),ue=t.defineComponent({name:"EleZealTablePaginationControl",props:{pagination:{type:Object,required:!0},pageConfig:{type:Object},isMobile:{type:Boolean,default:!1}},slots:Object,setup(e,{slots:o}){const l=t.toRef(e,"pagination");function r(u){l.value.pageNo=u,l.value?.onChange()}function s(u){l.value.pageNo=1,l.value.pageSize=u,l.value?.onPageSizeChange()}return()=>t.createVNode(c.ElPagination,t.mergeProps({currentPage:l.value?.pageNo,"page-size":l.value?.pageSize,total:l.value?.total,pageSizes:l.value?.pageSizes,layout:!o.default&&e.isMobile?se(l.value?.layout):l.value?.layout,"onUpdate:current-page":r,"onUpdate:page-size":s},e.pageConfig),{...o})}}),de=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),se=(e,o=["sizes","jumper"])=>{if(!e||o.length===0)return e;const l=new RegExp(`(^|,\\s*)(${o.map(de).join("|")})(?=\\s*,|$)`,"g");return e.replace(l,"").replace(/^,|,$/g,"")},ce=t.defineComponent({name:"EleZealTable",props:{data:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},maxHeight:{type:[Number,String]},columnAlign:{type:String},stripe:{type:Boolean,default:!0},border:{type:Boolean,default:!1},tableConfig:{type:Object}},slots:Object,setup(e,{slots:o,attrs:l}){return()=>t.withDirectives(t.createVNode(c.ElTable,t.mergeProps(e.tableConfig,l,{data:e.data,maxHeight:e.maxHeight,stripe:e.stripe,border:e.border}),{default:()=>[e.columns.map(r=>{const s=r.key??String(r.prop??r.label),u=r.align??e.columnAlign,{render2:y,slot:a,...i}=r,v=a||(r.prop?`cell-${String(r.prop)}`:void 0),n=v?o[v]:void 0;return t.createVNode(c.ElTableColumn,t.mergeProps(i,{align:u,key:s}),{default:f=>y?y(f.row,f.$index):n?n(f):r.prop?f.row[r.prop]:null})})],...o}),[[t.resolveDirective("loading"),e.loading]])}});exports.EleDynamicCascadeInput=X;exports.EleDynamicForm=x;exports.EleDynamicInput=J;exports.ElePopupModal=Y;exports.EleZealCard=ee;exports.EleZealTable=ce;exports.EleZealTablePaginationControl=ue;exports.EleZealTableSearch=oe;exports.renderCheckbox=H;exports.renderCheckboxGroup=_;exports.renderDatePicker=L;exports.renderDynamicTags=Z;exports.renderInput=P;exports.renderInputNumber=W;exports.renderPopSelect=z;exports.renderRadioButtonGroup=M;exports.renderRadioGroup=$;exports.renderSelect=j;exports.renderSlider=q;exports.renderSwitch=G;exports.renderTimePicker=U;exports.renderTreeSelect=D;exports.useDecorateForm=ne;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("../index-BAqRAwDC.cjs"),t=require("vue"),c=require("element-plus"),J=t.defineComponent({name:"EleDynamicInput",props:{size:{type:String},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},modelValue:{type:Object,required:!0}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,o)=>!0},slots:Object,setup(e,{emit:o,expose:a,slots:r}){const d={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,hideArrayBtn:!1,hideNumberBtn:!1,...e.configs},m={arraySplitSymbol:",",...e.dyListConfigs},l=e.size,s=t.ref(N.tranArr(e.modelValue,e.randomFun,m.arraySplitSymbol)),g=t.ref(null);t.watch(s,p=>{if(!e.isController)return;const C=N.resetObj(p,m.arraySplitSymbol);o("update:modelValue",C),o("onMerge",C,t.toRaw(s.value))},{deep:!0}),a({onSet:p=>{s.value=N.tranArr(p??e.modelValue,e.randomFun,m.arraySplitSymbol)},getResult:(p="res")=>p==="ori"?t.toRaw(s.value):N.resetObj(s.value,m.arraySplitSymbol)});const n=()=>s.value.push({rId:e.randomFun(),key:"",value:""}),f=()=>{s.value=N.tranArr(e.modelValue,e.randomFun,m.arraySplitSymbol),o("onReset")},i=()=>{s.value.sort((C,b)=>+C.rId-+b.rId);const p=N.resetObj(s.value,m.arraySplitSymbol);o("update:modelValue",p),o("onMerge",p,t.toRaw(s.value)),s.value=N.tranArr(p,e.randomFun,m.arraySplitSymbol)};return()=>t.createVNode("div",{class:e.dyCls??`dynamicForm ${l}`,style:{maxHeight:u.maxHeight}},[t.createVNode("div",{class:`dyFormList ${s.value.length?"":"noList"}`,ref:g},[s.value.map((p,C,b)=>{const v={row:p,index:C,isLast:C===b.length-1,addItem:()=>{s.value.push({rId:e.randomFun(),key:"",value:""}),u.autoScroll&&t.nextTick(()=>{const h=g.value;h?.scrollTo({top:h.scrollHeight,behavior:"smooth"})})},removeItem:()=>{s.value=s.value.filter(h=>h.rId!==p.rId)},toggleArray:()=>p.isArray=!p.isArray,toggleNumber:()=>p.isNumber=!p.isNumber};return t.createVNode("div",{class:"dItem",key:p.rId},[t.createVNode("div",{class:"input"},[t.createVNode(c.ElInput,{size:l,modelValue:p.key,class:"key",onInput:h=>{p.key=h}},null),t.createTextVNode(":"),t.createVNode(c.ElInput,{size:l,modelValue:p.value,class:"value",onInput:h=>{u.allowFilter&&p.isNumber?p.value=N.formatNumberInput(h,p.isArray,m.arraySplitSymbol):p.value=h}},{prefix:()=>r.typeTools?r.typeTools(v):t.createVNode(t.Fragment,null,[!u.hideArrayBtn&&t.createVNode(c.ElButton,{class:"typeBtn",type:p.isArray?"success":"default",size:"small",onClick:v.toggleArray},{default:()=>[t.createTextVNode("Array")]}),!u.hideNumberBtn&&t.createVNode(c.ElButton,{class:"typeBtn",type:p.isNumber?"success":"default",size:"small",onClick:v.toggleNumber},{default:()=>[t.createTextVNode("Number")]})])})]),t.createVNode("div",{class:"btn"},[r.rowActions?r.rowActions(v):t.createVNode(t.Fragment,null,[t.createVNode(c.ElButton,{type:"success",size:l,disabled:!v.isLast,onClick:v.addItem},{default:()=>[t.createTextVNode("+")]}),t.createVNode(c.ElButton,{size:l,type:"danger",onClick:v.removeItem},{default:()=>[t.createTextVNode("-")]})])])])})]),t.createVNode("div",{class:`control ${s.value.length?"":"noList"}`},[!s.value.length&&(r.newBtn?r.newBtn({newItem:n}):t.createVNode(c.ElButton,{size:l,type:"success",onClick:n},{default:()=>[d.newTxt]})),!e.isController&&t.createVNode(t.Fragment,null,[!u.hideReset&&(r.resetBtn?r.resetBtn({reset:f}):t.createVNode(c.ElButton,{size:l,type:"default",onClick:f},{default:()=>[d.resetTxt]})),r.mergeBtn?r.mergeBtn({merge:i}):t.createVNode(c.ElButton,{size:l,type:"info",onClick:i},{default:()=>[d.mergeTxt]})])])])}});function Q(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const X=t.defineComponent({name:"EleDynamicCascadeInput",props:{modelValue:{type:Object,required:!0},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},depth:{type:Number,default:3},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},newChildTxt:{type:Function,default:e=>`添加 '${e.key}' 子项`}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,o)=>!0},slots:Object,setup(e,{emit:o,expose:a,slots:r}){const d={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,hideArrayBtn:!1,hideNumberBtn:!1,showPad:!0,retractLen:0,borderColors:[],...e.configs},m={arraySplitSymbol:",",...e.dyListConfigs},l=b=>["string","number"].includes(b),s=b=>Object.keys(b).map((v,h)=>{let y=b[v];const S=Array.isArray(y),T=S?y.every(F=>typeof F=="number"):typeof y=="number",E=y===null;return l(typeof y)&&(y=b[v]),E&&(y=""),{rId:e.randomFun(h),key:v,value:Object.prototype.toString.call(y)==="[object Object]"?s(b[v]):S?y.join(m.arraySplitSymbol):y,isArray:S||void 0,isNumber:T||void 0}}),g=b=>b.reduce((v,h)=>{const y=h.value;return h.key.trim().length&&(v[h.key]=Array.isArray(y)?g(y):N.parseValue(h.value,h.isArray,h.isNumber,m.arraySplitSymbol)),v},{}),n=t.ref(s(e.modelValue)),f=(b,v=1,h)=>t.createVNode("div",{class:[`depth-${v}`,u.showBorder?"":"no-border",u.showPad?"":"no-pad"],style:{"--depth":v,["--c"+[v]]:N.saferRepairColor(u.borderColors,v)}},[b.map((y,S,T)=>{const E=Array.isArray(y.value),F=l(typeof y.value),w={row:y,index:S,isLast:S===T.length-1,addItem:()=>{b.push({rId:e.randomFun(),key:"",value:""})},addChild:()=>{F&&(y.value=[],y.isArray=void 0),y.value.push({rId:e.randomFun(),key:"",value:""})},removeItem:()=>{if(b.splice(S,1),b.length<1){if(h===void 0)return g([]);const k=n.value.findIndex(K=>K.rId===h?.rId);v<1?n.value.splice(k,1,{...h,value:""}):h.value=""}},toggleArray:()=>y.isArray=!y.isArray,toggleNumber:()=>y.isNumber=!y.isNumber};return t.createVNode("div",{class:"dItem",key:y.rId,style:{marginLeft:v>1?`${v*u.retractLen}px`:"0"}},[t.createVNode("div",{class:"input"},[!E&&t.createVNode(t.Fragment,null,[t.createVNode(c.ElInput,{modelValue:y.key,class:"key",onInput:k=>y.key=k},null),t.createTextVNode(":")]),t.createVNode(c.ElInput,{class:`value ${E?"isKey":""}`,modelValue:F?y.value:y.key,onInput:k=>{if(E){y.key=k;return}u.allowFilter&&y.isNumber?y.value=N.formatNumberInput(k,y.isArray,m.arraySplitSymbol):y.value=k}},{prefix:Array.isArray(y.value)?void 0:()=>r.typeTools?r.typeTools(w):t.createVNode(t.Fragment,null,[!u.hideArrayBtn&&t.createVNode(c.ElButton,{type:y.isArray?"success":"default",size:"small",onClick:w.toggleArray},{default:()=>[t.createTextVNode("Array")]}),t.createTextVNode(" "),!u.hideNumberBtn&&t.createVNode(c.ElButton,{type:y.isNumber?"success":"default",size:"small",onClick:w.toggleNumber},{default:()=>[t.createTextVNode("Number")]})]),suffix:()=>{let k;return v<e.depth?!E&&(r.newChild?r.newChild(w):t.createVNode(c.ElButton,{type:"success",size:"small",onClick:()=>{F&&(y.value=[],y.isArray=void 0),y.value.push({rId:e.randomFun(),key:"",value:""})}},Q(k=e.newChildTxt(y))?k:{default:()=>[k]})):null}})]),t.createVNode("div",{class:"btn"},[r.rowActions?r.rowActions(w):t.createVNode(t.Fragment,null,[t.createVNode(c.ElButton,{type:"success",disabled:!w.isLast,onClick:w.addItem},{default:()=>[t.createTextVNode("+")]}),t.createVNode(c.ElButton,{type:"danger",onClick:w.removeItem},{default:()=>[t.createTextVNode("-")]})])]),Array.isArray(y.value)&&f(y.value,v+1,y)])})]);t.watch(n,b=>{if(!e.isController)return;const v=g(b);o("update:modelValue",v),o("onMerge",v,t.toRaw(n.value))},{deep:!0}),a({onSet:b=>{n.value=s(b??e.modelValue)},getResult:(b="res")=>b==="ori"?t.toRaw(n.value):g(n.value)});const i=()=>n.value.push({rId:e.randomFun(),key:"",value:""}),p=()=>{n.value=s(e.modelValue),o("onReset")},C=()=>{const b=g(n.value);o("update:modelValue",b),o("onMerge",b,t.toRaw(n.value)),n.value=s(b)};return()=>t.createVNode("div",{class:`dynamicCascadeForm ${e.dyCls}`},[t.createVNode("div",{class:`dyFormList ${n.value.length?"":"noObj"}`,style:{maxHeight:u.maxHeight}},[f(n.value)]),t.createVNode("div",{class:`control ${n.value.length?"":"noObj"}`},[!n.value.length&&(r.newBtn?r.newBtn({newItem:i}):t.createVNode(c.ElButton,{type:"success",onClick:i},{default:()=>[d.newTxt]})),!e.isController&&t.createVNode(t.Fragment,null,[!u.hideReset&&(r.resetBtn?r.resetBtn({reset:p}):t.createVNode(c.ElButton,{type:"default",onClick:p},{default:()=>[d.resetTxt]})),r.mergeBtn?r.mergeBtn({merge:C}):t.createVNode(c.ElButton,{type:"info",onClick:C},{default:()=>[d.mergeTxt]})])])])}}),x=t.defineComponent({name:"EleDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPosition:"left",size:"default"})},rowConfig:{type:Object,default:()=>({gutter:10,justify:"start",align:"top"})},rules:{type:Object},preset:{type:String,default:"fullRow",validator:e=>["fullRow","grid"].includes(e)?!0:(console.error("preset value must be `fullRow` or `grid`, the default value is `fullRow`"),!1)},items:{type:Array,require:!0}},slots:Object,setup(e,{expose:o,slots:a}){const r=t.ref(null),d=t.computed(()=>(e.items??[]).filter(n=>!n.hidden)),u=t.computed(()=>d.value?d.value.reduce((n,f)=>(n[f.key]=f.value.value,n),{}):{}),m=t.computed(()=>({...d.value?.reduce((f,i)=>{let p=i.rule;return i.required&&!i.rule&&(p={required:!0,message:i.requiredHint?.(i.label??"")??`${i.label}不能为空`,trigger:"blur"}),f[i.key]=p,f},{}),...e.rules})),l=t.computed(()=>[...d.value].sort((f,i)=>{const p=f.sort??1/0,C=i.sort??1/0;return Number(p)-Number(C)}));function s(n=null){d.value&&d.value.forEach(f=>{f.value.value=n})}function g(){return new Promise((n,f)=>{r.value?.validate((i,p)=>{i?n(u.value):f(p)})})}if(o({reset:s,validator:g,getResult:(n="res")=>n==="ori"?d.value:u.value}),!e.items)throw new Error("prop items must be not null");return()=>t.createVNode("div",{class:"naiDynamicForm"},[a.header&&t.createVNode("div",{class:"header"},[a.header?.()]),t.createVNode(c.ElForm,t.mergeProps({ref:r},e.formConfig,{model:u.value,rules:m.value}),{default(){const n=l.value;return e.preset==="grid"?t.h(c.ElRow,{...e.rowConfig},{default:()=>n?.map(f=>t.h(c.ElCol,{span:f.span??24,offset:f.offset??0},{default:()=>t.h(c.ElFormItem,{label:f.label,prop:f.path||f.key},{default:R(f)})}))}):n?.map(f=>t.h(c.ElFormItem,{label:f.label,prop:f.path||f.key},{default:R(f)}))}}),a.footer&&t.h("div",{class:"footer"},a.footer?.())])}});function R(e){return function(){return e.render2?e.render2(e):null}}function O(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const Y=t.defineComponent({name:"ElePopupModal",props:{title:{type:String},modalProps:{type:Object},to:{type:[String,Object]},showClose:{type:Boolean,default:!0},closeOnMask:{type:Boolean,default:!0},width:{type:String,default:"min(1080px,90%)"},onCancel:{type:Function,default:()=>!0},onSubmit:{type:Function,default:()=>!0},footerTxt:{type:Array,default:()=>["Cancel","Submit"]}},slots:Object,setup(e,{expose:o,emit:a,slots:r}){const d=t.computed(()=>({alignCenter:!0,draggable:!0,appendToBody:!0,...e.modalProps??{}})),u=t.ref(!1),m=t.reactive({c:!1,s:!1}),l=n=>{u.value=n??!u.value};o({toggle:l});const s=async()=>{m.c=!0,(await e.onCancel?.()??!0)&&l(!1),m.c=!1},g=async()=>{m.s=!0,(await e.onSubmit?.()??!0)&&l(!1),m.s=!1};return()=>t.createVNode(c.ElDialog,t.mergeProps({modelValue:u.value,"onUpdate:modelValue":n=>u.value=n,showClose:e.showClose,closeOnClickModal:e.closeOnMask,style:{width:e.width},title:e.title,appendTo:e.to},d.value),{footer:()=>{const[n,f]=e.footerTxt,{c:i,s:p}=m;return t.createVNode("div",{class:"flex justify-end align-center"},[t.createVNode(c.ElButton,{size:"small",onClick:s,loading:i},O(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{size:"small",type:"success",onClick:g,loading:p},O(f)?f:{default:()=>[f]})])},...r})}});function A(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const ee=t.defineComponent({name:"EleZealCard",props:{title:{type:String},zealHeight:{type:String,default:"100vh"},outPadding:{type:Number,default:20},searchBtnTxt:{type:Array,default:()=>["Reset","Search"]},checkWindowSize:{type:Array,default:[756,500]},observeDelay:{type:Number,default:100}},slots:Object,setup(e,{slots:o,expose:a}){const r=N.useWindowSize(...e.checkWindowSize),{wrapRef:d,cardRef:u,restRef:m,tableHeight:l}=N.useObserverSize(c.ElCard,e.observeDelay);return a({tableHeight:l,isMobile:t.computed(()=>r.isMobile)}),()=>{const s=N.unwrapObj(r);return t.createVNode("div",{class:"zealCard",style:{height:`calc(${e.zealHeight} - ${e.outPadding*2}px)`},ref:d},[t.createVNode(c.ElCard,{ref:u},{default:()=>[o.default?.({tableHeight:l.value,...s})],header:()=>{const[g,n]=e.searchBtnTxt;return t.createVNode("div",{class:"header"},[o.header?.(s)??t.createVNode(t.Fragment,null,[t.createVNode("div",{class:"title"},[e.title]),t.createVNode("div",{class:"search"},[o.searchForm?.(s),o.searchBtn?.(s)||o.searchForm&&t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small"},A(g)?g:{default:()=>[g]}),t.createVNode(c.ElButton,{type:"info",size:"small"},A(n)?n:{default:()=>[n]})])])]),t.createVNode("div",{class:"controlBtn"},[t.createVNode("div",null,[o.controlBtn?.(s)]),o.toolBtn?.(s)])])},footer:o.footer?()=>t.createVNode("div",{class:"footer"},[o.footer?.(s)]):null}),t.createVNode("div",{ref:m},[o.rest?.(s)])])}}});function V(e,o,a){return e?.[o]??a}function te(e){return!!e&&(e.type==="group"||Array.isArray(e.children)||Array.isArray(e.options))}function I(e){return(e??[]).map(o=>{if(te(o)){const a=o.children??o.options??[];return{...o,__isGroup:!0,__children:a}}return{...o,__isGroup:!1}})}function le(e,o,a="label",r="value"){const d=I(o);for(const u of d)if(u.__isGroup){for(const m of u.__children)if(V(m,r,m.value)===e)return V(m,a,m.label)}else if(V(u,r,u.value)===e)return V(u,a,u.label);return""}function P(e,o={},a){const{onChange:r,value:d,...u}=a;return t.h(c.ElInput,{...u,modelValue:e.value,"onUpdate:modelValue":m=>{e.value=m,a?.onChange?.(m,a)},...o})}function j(e,o,a={},r){const{onChange:d,labelField:u,valueField:m,options:l,...s}=r??{},g=u??"label",n=m??"value",f=I(l??o);return t.h(c.ElSelect,{...s,modelValue:e.value,"onUpdate:modelValue":i=>{e.value=i,r?.onChange?.(i,r,f)},...a},{default:()=>f.map((i,p)=>{if(i.__isGroup)return t.h(c.ElOptionGroup,{key:i.key??`g-${p}`,label:V(i,g,i.label)},{default:()=>(i.__children??[]).map((v,h)=>{const y=V(v,g,v.label),S=V(v,n,v.value);return t.h(c.ElOption,{key:v.key??`${p}-${h}`,label:y,value:S,disabled:v.disabled})})});const C=V(i,g,i.label),b=V(i,n,i.value);return t.h(c.ElOption,{key:i.key??`${p}`,label:C,value:b,disabled:i.disabled})})})}function z(e,o,a={},r,d){const{labelField:u,valueField:m,options:l,onChange:s,...g}=r??{},n=u??"label",f=m??"value",i=l??o,p=I(i),C=()=>{if(d)return d;const b=Array.isArray(e.value)?e.value.length?`已选 ${e.value.length} 项`:"请选择":e.value!=null?le(e.value,i,n,f)||String(e.value):"请选择";return t.h(c.ElButton,null,{default:()=>b})};return Array.isArray(e.value)?t.createVNode(c.ElPopover,{trigger:"click",...g,...a},{reference:()=>C(),default:()=>t.h(c.ElCheckboxGroup,{modelValue:e.value,"onUpdate:modelValue":b=>{e.value=b,r?.onChange?.(b,r,p)}},{default:()=>t.h(c.ElSpace,{wrap:!0},{default:()=>p.flatMap((b,v)=>(b.__isGroup?b.__children??[]:[b]).map((y,S)=>{const T=V(y,n,y.label),E=V(y,f,y.value);return t.h(c.ElCheckbox,{key:y.key??`${v}-${S}`,label:E,disabled:y.disabled},{default:()=>T})}))})})}):t.createVNode(c.ElDropdown,{trigger:"click",...g,onCommand:b=>{e.value=b,r?.onChange?.(b,r,p)},...a},{default:()=>C(),dropdown:()=>t.h(c.ElDropdownMenu,null,{default:()=>p.flatMap((b,v)=>(b.__isGroup?b.__children??[]:[b]).map((y,S)=>{const T=V(y,n,y.label),E=V(y,f,y.value);return t.h(c.ElDropdownItem,{key:y.key??`${v}-${S}`,command:E,disabled:y.disabled},{default:()=>T})}))})})}function D(e,o,a={},r){const{valueField:d="value",labelField:u="label",childrenField:m="children",onChange:l,options:s,...g}=r??{},n=s??o;return t.h(c.ElTreeSelect,{...g,data:n,modelValue:e.value,"onUpdate:modelValue":f=>{e.value=f,r?.onChange?.(f,r,n)},props:{value:d,label:u,children:m,disabled:"disabled"},...a})}function M(e,o,a={},r){const{onChange:d,labelField:u,valueField:m,options:l,...s}=r??{},g=u??"label",n=m??"value",f=l??o;return t.h(c.ElRadioGroup,{...s,modelValue:e.value,"onUpdate:modelValue":i=>{e.value=i,r?.onChange?.(i,r,f)},...a},{default:()=>(f??[]).map((i,p)=>{const C=V(i,g,i.label),b=V(i,n,i.value);return t.h(c.ElRadio,{key:i.key??p,label:b,disabled:i.disabled},()=>C)})})}function $(e,o,a={},r){const{onChange:d,labelField:u,valueField:m,options:l,...s}=r??{},g=u??"label",n=m??"value",f=l??o;return t.h(c.ElRadioGroup,{...s,modelValue:e.value,"onUpdate:modelValue":i=>{e.value=i,r?.onChange?.(i,r,f)},...a},{default:()=>(f??[]).map((i,p)=>{const C=V(i,g,i.label),b=V(i,n,i.value);return t.h(c.ElRadioButton,{key:i.key??p,label:b,disabled:i.disabled},()=>C)})})}function _(e,o,a={},r){const{onChange:d,labelField:u,valueField:m,options:l,...s}=r??{},g=u??"label",n=m??"value",f=l??o;return t.h(c.ElCheckboxGroup,{...s,modelValue:e.value,"onUpdate:modelValue":i=>{e.value=i,r?.onChange?.(i,r,f)},...a},{default:()=>t.h(c.ElSpace,{wrap:!0},{default:()=>(f??[]).map((i,p)=>{const C=V(i,g,i.label),b=V(i,n,i.value);return t.h(c.ElCheckbox,{key:i.key??p,label:b,disabled:i.disabled},()=>C)})})})}function G(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElSwitch,{...d,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,a?.onChange?.(u,a)},...o})}function L(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElDatePicker,{...d,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,a?.onChange?.(u,a)},...o})}function H(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElTimePicker,{...d,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,a?.onChange?.(u,a)},...o})}function Z(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElCheckbox,{...d,label:o?.label??a?.label,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,a?.onChange?.(e.value,a)},...o})}function U(e,o={},a){const{onChange:r,value:d,labelField:u="label",valueField:m,...l}=a??{};return t.h(c.ElInputTag,{...l,modelValue:m?e.value.map(s=>s[m]):e.value,"onUpdate:modelValue":s=>{e.value=m?s.map(g=>({[u]:g,[m]:g})):s,a?.onChange?.(s,a)},...o})}function q(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElSlider,{...d,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u,a?.onChange?.(u,a)},...o})}function W(e,o={},a){const{onChange:r,...d}=a??{};return t.h(c.ElInputNumber,{...d,modelValue:e.value,"onUpdate:modelValue":u=>{e.value=u??null,a?.onChange?.(e.value,a)},...o})}const ae=Object.freeze(Object.defineProperty({__proto__:null,renderCheckbox:Z,renderCheckboxGroup:_,renderDatePicker:L,renderDynamicTags:U,renderInput:P,renderInputNumber:W,renderPopSelect:z,renderRadioButtonGroup:$,renderRadioGroup:M,renderSelect:j,renderSlider:q,renderSwitch:G,renderTimePicker:H,renderTreeSelect:D},Symbol.toStringTag,{value:"Module"}));function re(e){return function(a,r=!0){const d=e,u={renderInput:l=>d.renderInput(l.value,l.renderProps??{},l),renderSelect:l=>d.renderSelect(l.value,l.options??[],l.renderProps??{},l),renderPopSelect:l=>d.renderPopSelect(l.value,l.options??[],l.renderProps??{},l),renderTreeSelect:l=>d.renderTreeSelect(l.value,l.options??[],l.renderProps??{},l),renderRadioGroup:l=>d.renderRadioGroup(l.value,l.options??[],l.renderProps??{},l),renderRadioButtonGroup:l=>d.renderRadioButtonGroup(l.value,l.options??[],l.renderProps??{},l),renderCheckboxGroup:l=>d.renderCheckboxGroup(l.value,l.options??[],l.renderProps??{},l),renderSwitch:l=>d.renderSwitch(l.value,l.renderProps??{},l),renderDatePicker:l=>d.renderDatePicker(l.value,l.renderProps??{},l),renderTimePicker:l=>d.renderTimePicker(l.value,l.renderProps??{},l),renderCheckbox:l=>d.renderCheckbox(l.value,l.renderProps??{},l),renderDynamicTags:l=>d.renderDynamicTags(l.value,l.renderProps??{},l),renderSlider:l=>d.renderSlider(l.value,l.renderProps??{},l),renderInputNumber:l=>d.renderInputNumber(l.value,l.renderProps??{},l)};return a.map(l=>{const s=l;if(s.value=N.ensureRef(l.value),typeof l.render2=="function")s.render2=l.render2;else{const g=l.renderType??"renderInput",n=u[g];n?s.render2=()=>n(s):(console.warn(`[useDecorateForm] unknown renderType: ${l.renderType}`),s.render2=()=>u.renderInput(s))}return r?t.shallowReactive(s):s})}}const ne=re(ae);function B(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const oe=t.defineComponent({name:"EleZealTableSearch",props:{title:{type:String},drawerTitle:{type:String},searchItems:{type:Array,default:[]},searchFormMaxHeight:{type:String,default:"200px"},size:{type:[Number,String],default:240},drawerOpenTxt:{type:String,default:"Search Drawer"},searchBtnTxt:{type:Array,default:()=>["Reset","Search"]},mobileDrawer:{type:Boolean,default:!0},closeDrawerAuto:{type:Boolean,default:!1},copyDefault:{type:Boolean,default:!1},isMobile:{type:Boolean,default:!1}},emits:{onReset:()=>!0,onSearch:e=>!0},slots:Object,setup(e,{emit:o,slots:a,expose:r}){const d=t.ref(!1),u=t.ref({}),m=N.useDyForm(e.searchItems),l=n=>{d.value=n??!d.value},s=()=>{e.copyDefault?m.setValues(u.value):m.onReset(null),o("onReset"),l(!1)},g=()=>{const n=m.getValues();o("onSearch",n),l(!1)};return t.watch(()=>e.isMobile,n=>{e.closeDrawerAuto||n||l(!1)}),t.onMounted(async()=>{await t.nextTick(),e.copyDefault&&(u.value=m.getValues())}),r({onReset:s,onSearch:g,toggleDrawer:l,getParams:()=>m.getValues()}),()=>{const[n,f]=e.searchBtnTxt;return t.createVNode("div",{class:"eleZealTableSearch"},[!e.mobileDrawer||!e.isMobile?t.createVNode(t.Fragment,null,[a.title?.()??t.createVNode("div",{class:"naiTitle"},[e.title]),t.createVNode("div",{class:"searchForm",style:{maxHeight:e.searchFormMaxHeight}},[t.createVNode(x,{items:e.searchItems,preset:"grid",formConfig:{labelPosition:"left",showMessage:!1}},null)]),a.searchBtn?a.searchBtn?.({onSearch:g,onReset:s}):t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small",onClick:s},B(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{type:"primary",size:"small",onClick:g},B(f)?f:{default:()=>[f]})])]):t.createVNode("div",{class:"drawerSearchBtn"},[a.title?.()??t.createVNode("div",{class:"naiTitle"},[e.title]),a.drawerBtn?a.drawerBtn?.({openDrawer:()=>l(!0)}):t.createVNode(c.ElButton,{size:"small",onClick:()=>{l(!0)}},{default:()=>[e.drawerOpenTxt]})]),t.createVNode(c.ElDrawer,{class:"eleZealSearchDrawer",modelValue:d.value,"onUpdate:modelValue":i=>d.value=i,size:e.size,trapFocus:!1,direction:"ttb"},{default:()=>[t.createVNode("div",{class:"searchForm"},[t.createVNode(x,{formConfig:{labelPosition:"left",size:"small",showMessage:!1},items:e.searchItems},null)])],header:()=>t.createVNode("div",null,[e.drawerTitle??e.title]),footer:()=>a.searchBtn?a.searchBtn?.({onSearch:g,onReset:s}):t.createVNode("div",{class:"searchBtn"},[t.createVNode(c.ElButton,{size:"small",onClick:s},B(n)?n:{default:()=>[n]}),t.createVNode(c.ElButton,{type:"primary",size:"small",onClick:g},B(f)?f:{default:()=>[f]})])})])}}}),ue=t.defineComponent({name:"EleZealTablePaginationControl",props:{pagination:{type:Object,required:!0},pageConfig:{type:Object},isMobile:{type:Boolean,default:!1}},slots:Object,setup(e,{slots:o}){const a=t.toRef(e,"pagination");function r(u){a.value.pageNo=u,a.value?.onChange()}function d(u){a.value.pageNo=1,a.value.pageSize=u,a.value?.onPageSizeChange()}return()=>t.createVNode(c.ElPagination,t.mergeProps({currentPage:a.value?.pageNo,"page-size":a.value?.pageSize,total:a.value?.total,pageSizes:a.value?.pageSizes,layout:!o.default&&e.isMobile?se(a.value?.layout):a.value?.layout,"onUpdate:current-page":r,"onUpdate:page-size":d},e.pageConfig),{...o})}}),de=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),se=(e,o=["sizes","jumper"])=>{if(!e||o.length===0)return e;const a=new RegExp(`(^|,\\s*)(${o.map(de).join("|")})(?=\\s*,|$)`,"g");return e.replace(a,"").replace(/^,|,$/g,"")},ce=t.defineComponent({name:"EleZealTable",props:{data:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},maxHeight:{type:[Number,String]},columnAlign:{type:String},stripe:{type:Boolean,default:!0},border:{type:Boolean,default:!1},tableConfig:{type:Object}},slots:Object,setup(e,{slots:o,attrs:a}){return()=>t.withDirectives(t.createVNode(c.ElTable,t.mergeProps(e.tableConfig,a,{data:e.data,maxHeight:e.maxHeight,stripe:e.stripe,border:e.border}),{default:()=>[e.columns.map(r=>{const d=r.key??String(r.prop??r.label),u=r.align??e.columnAlign,{render2:m,slot:l,...s}=r,g=l||(r.prop?`cell-${String(r.prop)}`:void 0),n=g?o[g]:void 0;return t.createVNode(c.ElTableColumn,t.mergeProps(s,{align:u,key:d}),{default:f=>m?m(f.row,f.$index):n?n(f):r.prop?f.row[r.prop]:null})})],...o}),[[t.resolveDirective("loading"),e.loading]])}}),ie=t.defineComponent({name:"EleZealTableBtnControl",props:{isMobile:{type:Boolean,default:!1},btnItems:{type:Array,default:()=>[]},size:{type:String,default:"small"},dropDownProps:{type:Object},dropDownText:{type:String,default:"controls"}},slots:Object,emits:{onSelect:e=>!0},setup(e,{emit:o,slots:a}){const r=e.btnItems,{dropDownText:d,size:u}=e;return()=>t.createVNode("div",{class:"zealTableBtnControl"},[e.isMobile?t.createVNode(c.ElDropdown,t.mergeProps({size:u,trigger:"click",placement:"bottom"},e.dropDownProps),{default:()=>[a.text?a.text():t.createVNode(c.ElButton,{size:u},B(d)?d:{default:()=>[d]})],dropdown:()=>{let m;return t.createVNode(c.ElDropdownMenu,null,B(m=r.map(l=>t.createVNode(c.ElDropdownItem,{disabled:l.disabled,key:l.key,onClick:()=>{l.onSelect?.(l.key),o("onSelect",l.key)}},{default:()=>[l.title]})))?m:{default:()=>[m]})}}):r.map(m=>{const{key:l,onSelect:s,title:g,...n}=m;return t.createVNode(c.ElButton,t.mergeProps({size:u,key:l,onClick:()=>{s?.(l),o("onSelect",l)}},n),B(g)?g:{default:()=>[g]})})])}});function fe(e,o){const a=t.ref(null),r=t.computed(()=>{const d=a.value;return e({isMobile:d?.isMobile??t.ref(!1),tableHeight:d?.tableHeight??t.ref(0)}).map(u=>({...o,...u}))});return{eleZealCardRef:a,tableColumns:r}}exports.EleDynamicCascadeInput=X;exports.EleDynamicForm=x;exports.EleDynamicInput=J;exports.ElePopupModal=Y;exports.EleZealCard=ee;exports.EleZealTable=ce;exports.EleZealTableBtnControl=ie;exports.EleZealTablePaginationControl=ue;exports.EleZealTableSearch=oe;exports.renderCheckbox=Z;exports.renderCheckboxGroup=_;exports.renderDatePicker=L;exports.renderDynamicTags=U;exports.renderInput=P;exports.renderInputNumber=W;exports.renderPopSelect=z;exports.renderRadioButtonGroup=$;exports.renderRadioGroup=M;exports.renderSelect=j;exports.renderSlider=q;exports.renderSwitch=G;exports.renderTimePicker=H;exports.renderTreeSelect=D;exports.useDecorateForm=ne;exports.useZealColumnTool=fe;
@@ -1,16 +1,18 @@
1
- import { ExposeDyFType, ExposePopupMType, ExposeType, ExposeZealTSearchType } from '../types';
1
+ import { ExposeDyFType, ExposePopupMType, ExposeType, ExposeZealCardType, ExposeZealTSearchType } from '../types';
2
2
  import { default as EleDynamicInput } from './EleDynamicInput';
3
3
  import { default as EleDynamicCascadeInput } from './EleDynamicCascadeInput';
4
4
  import { default as EleDynamicForm } from './EleDynamicForm';
5
5
  import { default as ElePopupModal } from './ElePopupModal';
6
6
  import { default as EleZealCard } from './EleZealCard';
7
7
  import { useDecorateForm } from './hooks/decorateForm';
8
- import { EleZealTableSearch, EleZealTablePaginationControl, EleZealTable } from './EleZealTableTool';
8
+ import { EleZealTableSearch, EleZealTablePaginationControl, EleZealTable, EleZealTableBtnControl } from './EleZealTableTool';
9
9
  type eleDynamicInputRef = InstanceType<typeof EleDynamicInput> & ExposeType;
10
10
  type eleCascadeDynamicInputRef = InstanceType<typeof EleDynamicCascadeInput> & ExposeType;
11
11
  type eleDynamicFormRef = InstanceType<typeof EleDynamicForm> & ExposeDyFType;
12
12
  type elePopupModalRef = InstanceType<typeof ElePopupModal> & ExposePopupMType;
13
13
  type eleZealTableSearchRef = InstanceType<typeof EleZealTableSearch> & ExposeZealTSearchType;
14
+ type eleZealCardRef = InstanceType<typeof EleZealCard> & ExposeZealCardType;
14
15
  export * from './hooks/renderForm';
15
- export type { eleDynamicInputRef, eleCascadeDynamicInputRef, eleDynamicFormRef, elePopupModalRef, eleZealTableSearchRef };
16
- export { EleDynamicInput, EleDynamicCascadeInput, EleDynamicForm, ElePopupModal, EleZealCard, useDecorateForm, EleZealTableSearch, EleZealTablePaginationControl, EleZealTable };
16
+ export * from './hooks/useZealTool';
17
+ export type { eleDynamicInputRef, eleCascadeDynamicInputRef, eleDynamicFormRef, elePopupModalRef, eleZealCardRef, eleZealTableSearchRef };
18
+ export { EleDynamicInput, EleDynamicCascadeInput, EleDynamicForm, ElePopupModal, EleZealCard, useDecorateForm, EleZealTableSearch, EleZealTablePaginationControl, EleZealTable, EleZealTableBtnControl };