@lumal/vben-compat 0.0.4-beta → 0.0.5-beta

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.
@@ -0,0 +1,201 @@
1
+ import type { SchemaFormOption, SchemaTableRow } from '@lumal/core/components';
2
+ import type { Component, ComputedRef } from 'vue';
3
+ export type V5Values = Record<string, unknown>;
4
+ export type V5Component = 'CheckboxGroup' | 'DatePicker' | 'Input' | 'InputNumber' | 'InputPassword' | 'InputTextarea' | 'RadioGroup' | 'Select' | 'Switch' | 'Textarea' | 'TreeSelect';
5
+ /** 结构化兼容 Zod 的校验器;只有使用它的应用才需要安装 Zod。 */
6
+ export interface V5Validator {
7
+ safeParseAsync: (value: unknown) => Promise<{
8
+ success: boolean;
9
+ data?: unknown;
10
+ error?: {
11
+ issues: readonly {
12
+ message: string;
13
+ }[];
14
+ };
15
+ }>;
16
+ }
17
+ export type V5Rule = 'required' | 'selectRequired' | V5Validator;
18
+ export type V5Resolver<R> = R | ((values: V5Values, api: VbenFormApi) => R);
19
+ export interface V5ComponentProps extends Record<string, unknown> {
20
+ disabled?: boolean;
21
+ options?: SchemaFormOption[];
22
+ placeholder?: string;
23
+ type?: string;
24
+ }
25
+ export interface FormSchema<T extends object = V5Values> {
26
+ fieldName: Extract<keyof T, string>;
27
+ component: V5Component;
28
+ label: string;
29
+ defaultValue?: unknown;
30
+ componentProps?: V5Resolver<V5ComponentProps>;
31
+ rules?: V5Rule;
32
+ help?: string;
33
+ dependencies?: {
34
+ triggerFields: string[];
35
+ if?: V5Resolver<boolean>;
36
+ show?: V5Resolver<boolean>;
37
+ disabled?: V5Resolver<boolean>;
38
+ required?: V5Resolver<boolean>;
39
+ componentProps?: V5Resolver<V5ComponentProps>;
40
+ };
41
+ }
42
+ export interface VbenFormProps<T extends object = V5Values> {
43
+ schema?: FormSchema<T>[];
44
+ commonConfig?: {
45
+ componentProps?: V5ComponentProps;
46
+ disabled?: boolean;
47
+ labelWidth?: number | string;
48
+ };
49
+ layout?: 'horizontal' | 'vertical';
50
+ wrapperClass?: string;
51
+ showDefaultActions?: boolean;
52
+ submitOnEnter?: boolean;
53
+ submitOnChange?: boolean;
54
+ scrollToFirstError?: boolean;
55
+ submitButtonOptions?: {
56
+ content?: string;
57
+ loading?: boolean;
58
+ disabled?: boolean;
59
+ };
60
+ resetButtonOptions?: {
61
+ content?: string;
62
+ show?: boolean;
63
+ };
64
+ handleSubmit?: (values: Partial<T> & V5Values) => Promise<unknown> | unknown;
65
+ handleReset?: () => Promise<unknown> | unknown;
66
+ handleValuesChange?: (values: Partial<T> & V5Values, changedFields: string[]) => void;
67
+ }
68
+ export interface V5ValidationResult {
69
+ valid: boolean;
70
+ errors: Record<string, string>;
71
+ }
72
+ export interface VbenFormApi<T extends object = V5Values> {
73
+ readonly isMounted: boolean;
74
+ getValues: () => Promise<Partial<T> & V5Values>;
75
+ setValues: (values: Partial<T>, filterFields?: boolean, shouldValidate?: boolean) => Promise<void>;
76
+ setFieldValue: (field: Extract<keyof T, string>, value: unknown, shouldValidate?: boolean) => Promise<void>;
77
+ resetForm: (state?: {
78
+ values?: Partial<T>;
79
+ }) => Promise<void>;
80
+ resetValidate: () => Promise<void>;
81
+ validate: () => Promise<V5ValidationResult>;
82
+ validateAndSubmitForm: () => Promise<(Partial<T> & V5Values) | undefined>;
83
+ submitForm: (event?: Event) => Promise<(Partial<T> & V5Values) | undefined>;
84
+ getState: () => VbenFormProps<T>;
85
+ setState: (state: Partial<VbenFormProps<T>> | ((previous: VbenFormProps<T>) => Partial<VbenFormProps<T>>)) => void;
86
+ updateSchema: (schemas: Array<Partial<FormSchema<T>> & Pick<FormSchema<T>, 'fieldName'>>) => void;
87
+ removeSchemaByFields: (fields: Array<Extract<keyof T, string>>) => Promise<void>;
88
+ getLatestSubmissionValues: () => Partial<T> & V5Values;
89
+ }
90
+ export type UseVbenFormReturn<T extends object = V5Values> = [Component, VbenFormApi<T>];
91
+ export interface VxeGridColumn<Row extends object = SchemaTableRow> {
92
+ field?: Extract<keyof Row, string>;
93
+ title?: string;
94
+ type?: 'checkbox' | 'seq';
95
+ width?: number | string;
96
+ minWidth?: number | string;
97
+ fixed?: 'left' | 'right';
98
+ align?: 'center' | 'left' | 'right';
99
+ visible?: boolean;
100
+ sortable?: boolean;
101
+ showOverflow?: boolean;
102
+ slots?: {
103
+ default?: string;
104
+ };
105
+ formatter?: (params: {
106
+ cellValue: unknown;
107
+ row: Row;
108
+ rowIndex: number;
109
+ }) => unknown;
110
+ }
111
+ export interface V5QueryParams {
112
+ page: {
113
+ currentPage: number;
114
+ pageSize: number;
115
+ };
116
+ sort: {
117
+ field?: string;
118
+ order?: 'asc' | 'desc' | null;
119
+ };
120
+ }
121
+ export interface VxeTableGridOptions<Row extends object = SchemaTableRow> {
122
+ columns?: VxeGridColumn<Row>[];
123
+ data?: Row[];
124
+ rowConfig?: {
125
+ keyField?: Extract<keyof Row, string>;
126
+ };
127
+ pagerConfig?: false | {
128
+ enabled?: boolean;
129
+ pageSize?: number;
130
+ currentPage?: number;
131
+ pageSizes?: number[];
132
+ };
133
+ proxyConfig?: {
134
+ autoLoad?: boolean;
135
+ response?: {
136
+ result?: string;
137
+ total?: string;
138
+ };
139
+ ajax?: {
140
+ query?: (params: V5QueryParams, formValues: V5Values) => Promise<unknown>;
141
+ };
142
+ };
143
+ toolbarConfig?: {
144
+ custom?: boolean;
145
+ refresh?: boolean;
146
+ search?: boolean;
147
+ };
148
+ loading?: boolean;
149
+ height?: number | string;
150
+ border?: boolean;
151
+ stripe?: boolean;
152
+ showOverflow?: boolean;
153
+ }
154
+ export interface VxeGridProps<Row extends object = SchemaTableRow> {
155
+ gridOptions?: VxeTableGridOptions<Row>;
156
+ formOptions?: VbenFormProps;
157
+ tableTitle?: string;
158
+ showSearchForm?: boolean;
159
+ gridEvents?: {
160
+ checkboxChange?: (params: {
161
+ records: Row[];
162
+ }) => void;
163
+ sortChange?: (params: {
164
+ field?: string;
165
+ order?: 'asc' | 'desc' | null;
166
+ }) => void;
167
+ pageChange?: (params: {
168
+ currentPage: number;
169
+ pageSize: number;
170
+ }) => void;
171
+ proxyQuery?: (params: {
172
+ result: unknown;
173
+ }) => void;
174
+ proxyQueryError?: (params: {
175
+ error: unknown;
176
+ }) => void;
177
+ };
178
+ }
179
+ export interface V5NativeGrid<Row extends object = SchemaTableRow> {
180
+ getCheckboxRecords: () => Row[];
181
+ clearCheckboxRow: () => void;
182
+ setCheckboxRow: (rows: Row | Row[], checked: boolean) => void;
183
+ getTableData: () => {
184
+ fullData: Row[];
185
+ tableData: Row[];
186
+ };
187
+ }
188
+ export interface VxeGridApi<Row extends object = SchemaTableRow> {
189
+ formApi: VbenFormApi;
190
+ readonly grid: V5NativeGrid<Row>;
191
+ readonly error: ComputedRef<unknown>;
192
+ getState: () => VxeGridProps<Row>;
193
+ query: (params?: V5Values) => Promise<void>;
194
+ reload: (params?: V5Values) => Promise<void>;
195
+ setGridOptions: (options: Partial<VxeTableGridOptions<Row>>) => void;
196
+ setState: (state: Partial<VxeGridProps<Row>> | ((previous: VxeGridProps<Row>) => Partial<VxeGridProps<Row>>)) => void;
197
+ setLoading: (loading: boolean) => void;
198
+ toggleSearchForm: (show?: boolean) => boolean;
199
+ }
200
+ export type UseVbenVxeGridReturn<Row extends object = SchemaTableRow> = [Component, VxeGridApi<Row>];
201
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v5/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.type-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.type-test.d.ts","sourceRoot":"","sources":["../../../src/v5/types.type-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export declare function assertSupported(value: object, keys: readonly string[], label: string): void;
2
+ /** 配置统一经过 hook / setState 校验,组件仅透传展示和 DOM 事件属性。 */
3
+ export declare function assertComponentAttrs(attrs: Record<string, unknown>, additional?: string[]): void;
4
+ export declare function cloneValues<T>(value: T): T;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/v5/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3F;AAED,mDAAmD;AACnD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,IAAI,CAKpG;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ1C"}
@@ -0,0 +1 @@
1
+ let e=require("vue");function t(e){let t=e?.replaceAll(`.`,``).replaceAll(`-`,``).toLowerCase()??`input`;return t.includes(`textarea`)?`textarea`:t.includes(`inputnumber`)?`number`:t.includes(`checkbox`)?`checkbox`:t.includes(`radio`)?`radio`:t.includes(`treeselect`)?`tree-select`:t.includes(`switch`)?`switch`:t.includes(`upload`)?`upload`:t.includes(`rangepicker`)?`daterange`:t.includes(`datepicker`)?`date`:t.includes(`select`)?`select`:t.includes(`hidden`)?`hidden`:`input`}function n(e={}){let{options:t,placeholder:n,...r}=e;return r}function r(e){let t=n(e.componentProps);return e.component?.toLowerCase()===`input.password`&&t.type===void 0&&(t.type=`password`),t}function i(e,t){if(t!==`date`)return t;let n=e.componentProps?.type?.toLowerCase();return n===`datetime`?`datetime`:n?.includes(`range`)?`daterange`:t}function a(e={}){return e.options?.map(e=>({disabled:e.disabled,label:e.label,value:e.value}))}function o(e){return!!(e.hidden||e.show===!1||e.ifShow===!1)}function s(e){return e.required??(e.rules?.some(e=>e.required)||void 0)}function c(e){let n=e.fieldName??e.field??``,c=e.componentProps??{};return{component:i(e,t(e.component)),defaultValue:e.defaultValue,field:n,hidden:o(e)||void 0,label:e.label,options:a(c),placeholder:c.placeholder,componentProps:r(e),required:s(e)}}function l(e=[]){return e.map(e=>c(e))}function u(e,t){let n={...t.model??{}};for(let t of e)!(t.field in n)&&t.defaultValue!==void 0&&(n[t.field]=t.defaultValue);return n}function d(e,t){for(let t of Object.keys(e))delete e[t];Object.assign(e,t)}function f(t={}){let n=(0,e.toRef)(t),r=(0,e.shallowRef)(),i=(0,e.reactive)({}),a=(0,e.computed)(()=>l(n.value.schemas));function o(){return{...i}}function s(e){Object.assign(i,e)}function c(e){d(i,e)}function f(){d(i,u(a.value,n.value))}function p(e=o()){n.value.submit?.(e)}function m(e){r.value=e}return(0,e.watch)(a,e=>{let t=u(e,n.value);for(let[e,n]of Object.entries(t))e in i||(i[e]=n)},{immediate:!0}),[m,{getFieldsValue:o,getFormInstance:()=>r.value,getLumalSchemas:()=>a.value,handleSubmit:p,handleUpdateModel:c,resetFields:f,schemaFormProps:(0,e.computed)(()=>({modelValue:o(),onSubmit:p,"onUpdate:modelValue":c,schemas:a.value,showActions:n.value.showActions,submitText:n.value.submitText})),setFieldsValue:s}]}function p(e={}){return{...e,...e.gridOptions??{},formOptions:{...e.formOptions,...e.gridOptions?.formOptions??{}}}}function m(e){return e.field??``}function h(e){return e.title??e.label??m(e)}function g(e){return{align:e.align,field:m(e),formatter:e.formatter,hidden:e.hidden??e.visible===!1,label:h(e),width:e.width}}function _(e=[]){return e.filter(e=>e.type!==`checkbox`&&e.type!==`radio`&&e.type!==`seq`).map(e=>g(e))}function v(e){return l(e.formOptions?.schemas)}function y(e,t){if(t)return t.split(`.`).reduce((e,t)=>{if(e&&typeof e==`object`)return e[t]},e)}function b(e){return Array.isArray(e)?e:void 0}function x(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e==`string`&&e.trim()){let t=Number(e);return Number.isFinite(t)?t:void 0}}function S(e,t){if(Array.isArray(e))return{rows:e,total:e.length};let n=e,r=t.proxyConfig?.props,i=y(n,r?.result)??n,a=y(i,r?.items)??y(i,r?.list)??b(i.items)??b(i.list)??b(i.records)??b(i.rows)??[];return{rows:a,total:x(y(i,r?.total))??x(i.total)??x(i.totalCount)??a.length}}function C(e,t){for(let t of Object.keys(e))delete e[t];Object.assign(e,t)}function w(t={}){let n=(0,e.toRef)(t),r=(0,e.shallowRef)(),i=(0,e.shallowRef)([]),a=(0,e.shallowRef)(0),o=(0,e.shallowRef)(!1),s=(0,e.shallowRef)(),c=(0,e.shallowRef)(1),l=(0,e.shallowRef)(10),u=(0,e.reactive)({}),d=0;(0,e.onScopeDispose)(()=>{d+=1},!0);let f=(0,e.computed)(()=>p(n.value)),m=(0,e.computed)(()=>_(f.value.columns)),h=(0,e.computed)(()=>v(f.value)),g=(0,e.computed)(()=>f.value.pagerConfig!==!1&&f.value.pagerConfig?.enabled!==!1),y=(0,e.computed)(()=>{let e=f.value.pagerConfig;return e===!1?void 0:e?.pageSizes});(0,e.watch)(()=>f.value.pagerConfig,e=>{e!==!1&&e?.pageSize&&(l.value=e.pageSize)},{immediate:!0});function b(e){r.value=e}function x(){return{...u}}function w(e){C(u,e)}function T(e,t=e.length){i.value=e,a.value=t}function E(e){o.value=e}function D(){s.value=void 0}async function O(){let e=++d,t=f.value.proxyConfig?.ajax?.query;if(!t)return D(),o.value=!1,!0;o.value=!0,D();try{let n=await t({...x(),page:c.value,pageSize:l.value});if(e!==d)return!1;let r=S(n,f.value);return T(r.rows,r.total),!0}catch(t){return e===d?(s.value=t,f.value.onError?.(t),!1):!1}finally{e===d&&(o.value=!1)}}function k(e=x()){return w(e),c.value=1,O()}function A(){return w({}),c.value=1,O()}function j(e=x()){return k(e)}function M(e={}){return w(e),c.value=1,O()}function N(e){return c.value=e.page,l.value=e.pageSize,O()}return[b,{crudTableProps:(0,e.computed)(()=>({columns:m.value,actions:f.value.actions,emptyText:s.value instanceof Error?s.value.message:s.value?String(s.value):f.value.emptyText,loading:o.value,onPageChange:N,onReset:M,onSearch:j,"onUpdate:page":e=>{c.value=e},"onUpdate:pageSize":e=>{l.value=e},"onUpdate:queryModel":w,page:c.value,pageSize:l.value,pageSizes:y.value,pagination:g.value,queryModel:x(),querySchemas:h.value,resetText:f.value.formOptions?.resetText??f.value.resetText,rowKey:f.value.rowKey,rows:i.value,searchText:f.value.formOptions?.submitText??f.value.searchText,title:f.value.title,toolbar:f.value.toolbarConfig,table:{...f.value.tableConfig,columns:m.value,rowKey:f.value.rowKey,selection:f.value.columns?.some(e=>e.type===`checkbox`)},total:a.value})),clearError:D,getError:()=>s.value,getGridInstance:()=>r.value,getLumalColumns:()=>m.value,getQueryModel:x,getRows:()=>i.value,getTotal:()=>a.value,handlePageChange:N,handleReset:M,handleSearch:j,reload:O,reset:A,search:k,setLoading:E,setQueryModel:w,setRows:T}]}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return w}});
@@ -0,0 +1,287 @@
1
+ import { computed as e, onScopeDispose as t, reactive as n, shallowRef as r, toRef as i, watch as a } from "vue";
2
+ //#region src/form/adapter.ts
3
+ function o(e) {
4
+ let t = e?.replaceAll(".", "").replaceAll("-", "").toLowerCase() ?? "input";
5
+ return t.includes("textarea") ? "textarea" : t.includes("inputnumber") ? "number" : t.includes("checkbox") ? "checkbox" : t.includes("radio") ? "radio" : t.includes("treeselect") ? "tree-select" : t.includes("switch") ? "switch" : t.includes("upload") ? "upload" : t.includes("rangepicker") ? "daterange" : t.includes("datepicker") ? "date" : t.includes("select") ? "select" : t.includes("hidden") ? "hidden" : "input";
6
+ }
7
+ function s(e = {}) {
8
+ let { options: t, placeholder: n, ...r } = e;
9
+ return r;
10
+ }
11
+ function c(e) {
12
+ let t = s(e.componentProps);
13
+ return e.component?.toLowerCase() === "input.password" && t.type === void 0 && (t.type = "password"), t;
14
+ }
15
+ function l(e, t) {
16
+ if (t !== "date") return t;
17
+ let n = e.componentProps?.type?.toLowerCase();
18
+ return n === "datetime" ? "datetime" : n?.includes("range") ? "daterange" : t;
19
+ }
20
+ function u(e = {}) {
21
+ return e.options?.map((e) => ({
22
+ disabled: e.disabled,
23
+ label: e.label,
24
+ value: e.value
25
+ }));
26
+ }
27
+ function d(e) {
28
+ return !!(e.hidden || e.show === !1 || e.ifShow === !1);
29
+ }
30
+ function f(e) {
31
+ return e.required ?? (e.rules?.some((e) => e.required) || void 0);
32
+ }
33
+ function p(e) {
34
+ let t = e.fieldName ?? e.field ?? "", n = e.componentProps ?? {};
35
+ return {
36
+ component: l(e, o(e.component)),
37
+ defaultValue: e.defaultValue,
38
+ field: t,
39
+ hidden: d(e) || void 0,
40
+ label: e.label,
41
+ options: u(n),
42
+ placeholder: n.placeholder,
43
+ componentProps: c(e),
44
+ required: f(e)
45
+ };
46
+ }
47
+ function m(e = []) {
48
+ return e.map((e) => p(e));
49
+ }
50
+ //#endregion
51
+ //#region src/form/useVbenForm.ts
52
+ function h(e, t) {
53
+ let n = { ...t.model ?? {} };
54
+ for (let t of e) !(t.field in n) && t.defaultValue !== void 0 && (n[t.field] = t.defaultValue);
55
+ return n;
56
+ }
57
+ function g(e, t) {
58
+ for (let t of Object.keys(e)) delete e[t];
59
+ Object.assign(e, t);
60
+ }
61
+ function _(t = {}) {
62
+ let o = i(t), s = r(), c = n({}), l = e(() => m(o.value.schemas));
63
+ function u() {
64
+ return { ...c };
65
+ }
66
+ function d(e) {
67
+ Object.assign(c, e);
68
+ }
69
+ function f(e) {
70
+ g(c, e);
71
+ }
72
+ function p() {
73
+ g(c, h(l.value, o.value));
74
+ }
75
+ function _(e = u()) {
76
+ o.value.submit?.(e);
77
+ }
78
+ function v(e) {
79
+ s.value = e;
80
+ }
81
+ return a(l, (e) => {
82
+ let t = h(e, o.value);
83
+ for (let [e, n] of Object.entries(t)) e in c || (c[e] = n);
84
+ }, { immediate: !0 }), [v, {
85
+ getFieldsValue: u,
86
+ getFormInstance: () => s.value,
87
+ getLumalSchemas: () => l.value,
88
+ handleSubmit: _,
89
+ handleUpdateModel: f,
90
+ resetFields: p,
91
+ schemaFormProps: e(() => ({
92
+ modelValue: u(),
93
+ onSubmit: _,
94
+ "onUpdate:modelValue": f,
95
+ schemas: l.value,
96
+ showActions: o.value.showActions,
97
+ submitText: o.value.submitText
98
+ })),
99
+ setFieldsValue: d
100
+ }];
101
+ }
102
+ //#endregion
103
+ //#region src/grid/adapter.ts
104
+ function v(e = {}) {
105
+ return {
106
+ ...e,
107
+ ...e.gridOptions ?? {},
108
+ formOptions: {
109
+ ...e.formOptions,
110
+ ...e.gridOptions?.formOptions ?? {}
111
+ }
112
+ };
113
+ }
114
+ function y(e) {
115
+ return e.field ?? "";
116
+ }
117
+ function b(e) {
118
+ return e.title ?? e.label ?? y(e);
119
+ }
120
+ function x(e) {
121
+ return {
122
+ align: e.align,
123
+ field: y(e),
124
+ formatter: e.formatter,
125
+ hidden: e.hidden ?? e.visible === !1,
126
+ label: b(e),
127
+ width: e.width
128
+ };
129
+ }
130
+ function S(e = []) {
131
+ return e.filter((e) => e.type !== "checkbox" && e.type !== "radio" && e.type !== "seq").map((e) => x(e));
132
+ }
133
+ function C(e) {
134
+ return m(e.formOptions?.schemas);
135
+ }
136
+ function w(e, t) {
137
+ if (t) return t.split(".").reduce((e, t) => {
138
+ if (e && typeof e == "object") return e[t];
139
+ }, e);
140
+ }
141
+ function T(e) {
142
+ return Array.isArray(e) ? e : void 0;
143
+ }
144
+ function E(e) {
145
+ if (typeof e == "number") return Number.isFinite(e) ? e : void 0;
146
+ if (typeof e == "string" && e.trim()) {
147
+ let t = Number(e);
148
+ return Number.isFinite(t) ? t : void 0;
149
+ }
150
+ }
151
+ function D(e, t) {
152
+ if (Array.isArray(e)) return {
153
+ rows: e,
154
+ total: e.length
155
+ };
156
+ let n = e, r = t.proxyConfig?.props, i = w(n, r?.result) ?? n, a = w(i, r?.items) ?? w(i, r?.list) ?? T(i.items) ?? T(i.list) ?? T(i.records) ?? T(i.rows) ?? [];
157
+ return {
158
+ rows: a,
159
+ total: E(w(i, r?.total)) ?? E(i.total) ?? E(i.totalCount) ?? a.length
160
+ };
161
+ }
162
+ function O(e, t) {
163
+ for (let t of Object.keys(e)) delete e[t];
164
+ Object.assign(e, t);
165
+ }
166
+ //#endregion
167
+ //#region src/grid/useVbenVxeGrid.ts
168
+ function k(o = {}) {
169
+ let s = i(o), c = r(), l = r([]), u = r(0), d = r(!1), f = r(), p = r(1), m = r(10), h = n({}), g = 0;
170
+ t(() => {
171
+ g += 1;
172
+ }, !0);
173
+ let _ = e(() => v(s.value)), y = e(() => S(_.value.columns)), b = e(() => C(_.value)), x = e(() => _.value.pagerConfig !== !1 && _.value.pagerConfig?.enabled !== !1), w = e(() => {
174
+ let e = _.value.pagerConfig;
175
+ return e === !1 ? void 0 : e?.pageSizes;
176
+ });
177
+ a(() => _.value.pagerConfig, (e) => {
178
+ e !== !1 && e?.pageSize && (m.value = e.pageSize);
179
+ }, { immediate: !0 });
180
+ function T(e) {
181
+ c.value = e;
182
+ }
183
+ function E() {
184
+ return { ...h };
185
+ }
186
+ function k(e) {
187
+ O(h, e);
188
+ }
189
+ function A(e, t = e.length) {
190
+ l.value = e, u.value = t;
191
+ }
192
+ function j(e) {
193
+ d.value = e;
194
+ }
195
+ function M() {
196
+ f.value = void 0;
197
+ }
198
+ async function N() {
199
+ let e = ++g, t = _.value.proxyConfig?.ajax?.query;
200
+ if (!t) return M(), d.value = !1, !0;
201
+ d.value = !0, M();
202
+ try {
203
+ let n = await t({
204
+ ...E(),
205
+ page: p.value,
206
+ pageSize: m.value
207
+ });
208
+ if (e !== g) return !1;
209
+ let r = D(n, _.value);
210
+ return A(r.rows, r.total), !0;
211
+ } catch (t) {
212
+ return e === g ? (f.value = t, _.value.onError?.(t), !1) : !1;
213
+ } finally {
214
+ e === g && (d.value = !1);
215
+ }
216
+ }
217
+ function P(e = E()) {
218
+ return k(e), p.value = 1, N();
219
+ }
220
+ function F() {
221
+ return k({}), p.value = 1, N();
222
+ }
223
+ function I(e = E()) {
224
+ return P(e);
225
+ }
226
+ function L(e = {}) {
227
+ return k(e), p.value = 1, N();
228
+ }
229
+ function R(e) {
230
+ return p.value = e.page, m.value = e.pageSize, N();
231
+ }
232
+ return [T, {
233
+ crudTableProps: e(() => ({
234
+ columns: y.value,
235
+ actions: _.value.actions,
236
+ emptyText: f.value instanceof Error ? f.value.message : f.value ? String(f.value) : _.value.emptyText,
237
+ loading: d.value,
238
+ onPageChange: R,
239
+ onReset: L,
240
+ onSearch: I,
241
+ "onUpdate:page": (e) => {
242
+ p.value = e;
243
+ },
244
+ "onUpdate:pageSize": (e) => {
245
+ m.value = e;
246
+ },
247
+ "onUpdate:queryModel": k,
248
+ page: p.value,
249
+ pageSize: m.value,
250
+ pageSizes: w.value,
251
+ pagination: x.value,
252
+ queryModel: E(),
253
+ querySchemas: b.value,
254
+ resetText: _.value.formOptions?.resetText ?? _.value.resetText,
255
+ rowKey: _.value.rowKey,
256
+ rows: l.value,
257
+ searchText: _.value.formOptions?.submitText ?? _.value.searchText,
258
+ title: _.value.title,
259
+ toolbar: _.value.toolbarConfig,
260
+ table: {
261
+ ..._.value.tableConfig,
262
+ columns: y.value,
263
+ rowKey: _.value.rowKey,
264
+ selection: _.value.columns?.some((e) => e.type === "checkbox")
265
+ },
266
+ total: u.value
267
+ })),
268
+ clearError: M,
269
+ getError: () => f.value,
270
+ getGridInstance: () => c.value,
271
+ getLumalColumns: () => y.value,
272
+ getQueryModel: E,
273
+ getRows: () => l.value,
274
+ getTotal: () => u.value,
275
+ handlePageChange: R,
276
+ handleReset: L,
277
+ handleSearch: I,
278
+ reload: N,
279
+ reset: F,
280
+ search: P,
281
+ setLoading: j,
282
+ setQueryModel: k,
283
+ setRows: A
284
+ }];
285
+ }
286
+ //#endregion
287
+ export { C as a, p as c, D as i, m as l, x as n, v as o, S as r, _ as s, k as t };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){if(!/^https?:\/\//i.test(e))throw Error(`[lumal/v5] 外链与 iframe 仅接受 HTTP(S) 绝对地址`);return e}function t(t={}){let{authority:n,activePath:r,link:i,iframeSrc:a,ignoreAccess:o,...s}=t;return{...s,roles:o?[]:n,activeMenu:r,externalLink:i?e(i):void 0,iframeSrc:a?e(a):void 0}}function n(e,r={}){return e.map(e=>{if(e.meta?.iframeSrc&&!r.iframeComponent)throw Error(`[lumal/v5] iframe 路由必须显式提供应用自己的 iframeComponent`);return{path:e.path,name:e.name,component:e.meta?.iframeSrc?r.iframeComponent:e.component,redirect:e.redirect,meta:t(e.meta),children:e.children?n(e.children,r):void 0}})}exports.adaptVbenMenus=n,exports.adaptVbenRouteMeta=t;
@@ -0,0 +1,30 @@
1
+ //#region src/v5/router.ts
2
+ function e(e) {
3
+ if (!/^https?:\/\//i.test(e)) throw Error("[lumal/v5] 外链与 iframe 仅接受 HTTP(S) 绝对地址");
4
+ return e;
5
+ }
6
+ function t(t = {}) {
7
+ let { authority: n, activePath: r, link: i, iframeSrc: a, ignoreAccess: o, ...s } = t;
8
+ return {
9
+ ...s,
10
+ roles: o ? [] : n,
11
+ activeMenu: r,
12
+ externalLink: i ? e(i) : void 0,
13
+ iframeSrc: a ? e(a) : void 0
14
+ };
15
+ }
16
+ function n(e, r = {}) {
17
+ return e.map((e) => {
18
+ if (e.meta?.iframeSrc && !r.iframeComponent) throw Error("[lumal/v5] iframe 路由必须显式提供应用自己的 iframeComponent");
19
+ return {
20
+ path: e.path,
21
+ name: e.name,
22
+ component: e.meta?.iframeSrc ? r.iframeComponent : e.component,
23
+ redirect: e.redirect,
24
+ meta: t(e.meta),
25
+ children: e.children ? n(e.children, r) : void 0
26
+ };
27
+ });
28
+ }
29
+ //#endregion
30
+ export { n as adaptVbenMenus, t as adaptVbenRouteMeta };
package/dist/v5.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./v5-router.cjs");let t=require("vue"),n=require("@lumal/core/permission"),r=require("@lumal/core/components"),i=require("@lumal/icons-vue");function a(e=(0,n.usePermissionStore)()){return{hasAccessByCodes:t=>t.length>0&&e.hasPermission(t,`some`),hasAccessByRoles:t=>t.length>0&&e.hasRole(t,`some`)}}function o(e,n=`frontend`){let r=new WeakMap;function i(i,o){r.get(i)?.();let s=i.style.display,c=(0,t.watchEffect)(()=>{let t=o.value,r=Array.isArray(t)?t:[t];if(o.arg&&![`role`,`code`].includes(o.arg))throw Error(`[lumal/v5] v-access 仅支持 code/role`);let c=a(e),l=t==null||(n===`frontend`&&o.arg===`role`?c.hasAccessByRoles(r):c.hasAccessByCodes(r));i.style.display=l?s:`none`});r.set(i,()=>{c(),i.style.display=s})}return{mounted:i,updated:i,unmounted(e){r.get(e)?.(),r.delete(e)}}}var s=(0,t.defineComponent)({__name:`AccessControl`,props:{codes:{default:()=>[]},type:{default:`role`}},setup(e){let n=e,r=a(),i=(0,t.computed)(()=>n.type===`code`?r.hasAccessByCodes(n.codes):r.hasAccessByRoles(n.codes));return(e,n)=>i.value?(0,t.renderSlot)(e.$slots,`default`,{key:0}):(0,t.createCommentVNode)(``,!0)}});function c(e,t,n){let r=Object.keys(e).filter(e=>!t.includes(e));if(r.length)throw Error(`[lumal/v5] ${n} 暂不支持:${r.join(`, `)}`)}function l(e,t=[]){let n=Object.keys(e).filter(e=>![`class`,`style`,`id`,`title`,`role`,`tabindex`,...t].includes(e)&&!/^(?:data-|aria-|on[A-Z])/.test(e));if(n.length)throw Error(`[lumal/v5] 组件配置请通过 hook 或 api.setState 更新:${n.join(`, `)}`)}function u(e){return e instanceof Date?new Date(e.getTime()):Array.isArray(e)?e.map(e=>u(e)):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,u(t)])):e}var d={class:`lumal-v5-form`},f={key:0,role:`alert`},p=(0,t.defineComponent)({__name:`V5Form`,props:{controller:{}},setup(e){let n=e,i=(0,t.useTemplateRef)(`formRef`),a=(0,t.computed)(()=>n.controller.state.value),o=(0,t.computed)(()=>Number(a.value.wrapperClass?.match(/(?:^|\s)grid-cols-(\d+)/)?.[1]??1));return(0,t.onMounted)(()=>{i.value&&n.controller.mount(i.value)}),(0,t.onBeforeUnmount)(()=>n.controller.unmount()),(n,s)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,[e.controller.failure.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,f,(0,t.toDisplayString)(e.controller.failure.value),1)):(0,t.createCommentVNode)(``,!0),(0,t.createVNode)((0,t.unref)(r.LumalSchemaForm),{ref_key:`formRef`,ref:i,"model-value":e.controller.values.value,schemas:e.controller.schemas.value,columns:o.value,disabled:a.value.commonConfig?.disabled,"submit-disabled":a.value.submitButtonOptions?.disabled,"label-width":a.value.commonConfig?.labelWidth,"label-position":a.value.layout===`vertical`?`top`:`right`,"submit-on-enter":a.value.submitOnEnter,"scroll-to-first-error":a.value.scrollToFirstError??!1,"show-actions":a.value.showDefaultActions,"show-reset":a.value.resetButtonOptions?.show!==!1,"submit-text":a.value.submitButtonOptions?.content,"reset-text":a.value.resetButtonOptions?.content,"submit-loading":e.controller.submitting.value||a.value.submitButtonOptions?.loading,"onUpdate:modelValue":e.controller.update,onValuesChange:e.controller.changed,onSubmit:e.controller.submitFromUi,onReset:e.controller.reset},(0,t.createSlots)({_:2},[(0,t.renderList)(a.value.schema?.filter(e=>n.$slots[e.fieldName]),r=>({name:`field-${r.fieldName}`,fn:(0,t.withCtx)(i=>[(0,t.renderSlot)(n.$slots,r.fieldName,{modelValue:i.value,"onUpdate:modelValue":t=>e.controller.api.setFieldValue(r.fieldName,t),values:i.model})])}))]),1032,[`model-value`,`schemas`,`columns`,`disabled`,`submit-disabled`,`label-width`,`label-position`,`submit-on-enter`,`scroll-to-first-error`,`show-actions`,`show-reset`,`submit-text`,`reset-text`,`submit-loading`,`onUpdate:modelValue`,`onValuesChange`,`onSubmit`,`onReset`])]))}}),m={CheckboxGroup:`checkbox`,DatePicker:`date`,Input:`input`,InputNumber:`number`,InputPassword:`input`,InputTextarea:`textarea`,RadioGroup:`radio`,Select:`select`,Switch:`switch`,Textarea:`textarea`,TreeSelect:`tree-select`};function h(e){c(e,[`schema`,`commonConfig`,`layout`,`wrapperClass`,`showDefaultActions`,`submitOnEnter`,`submitOnChange`,`scrollToFirstError`,`submitButtonOptions`,`resetButtonOptions`,`handleSubmit`,`handleReset`,`handleValuesChange`],`Form`),e.commonConfig&&c(e.commonConfig,[`componentProps`,`disabled`,`labelWidth`],`commonConfig`),e.submitButtonOptions&&c(e.submitButtonOptions,[`content`,`loading`,`disabled`],`submitButtonOptions`),e.resetButtonOptions&&c(e.resetButtonOptions,[`content`,`show`],`resetButtonOptions`);let t=new Set;for(let n of e.schema??[]){if(c(n,[`fieldName`,`component`,`label`,`defaultValue`,`componentProps`,`rules`,`help`,`dependencies`],`schema`),!m[n.component])throw Error(`[lumal/v5] 未支持的表单组件:${n.component}`);if(!n.fieldName||/[.[\]]/.test(n.fieldName)||t.has(n.fieldName))throw Error(`[lumal/v5] fieldName 必须是唯一的平面字段名,嵌套路径需应用侧映射`);if(t.add(n.fieldName),n.dependencies&&c(n.dependencies,[`triggerFields`,`if`,`show`,`disabled`,`required`,`componentProps`],`dependencies`),n.rules&&typeof n.rules==`string`&&![`required`,`selectRequired`].includes(n.rules))throw Error(`[lumal/v5] 未注册的校验规则:${n.rules}`);if(n.rules&&typeof n.rules==`object`&&typeof n.rules.safeParseAsync!=`function`)throw Error(`[lumal/v5] rules 仅支持 required、selectRequired 或 safeParseAsync 校验器`)}}function g(e={}){h(e);let n=(0,t.shallowRef)({showDefaultActions:!0,...e}),r=(0,t.shallowRef)({}),i=(0,t.shallowRef)(!1),a=(0,t.shallowRef)(``),o={},s,c=!1,l=0,d={},f,p;function g(){return Object.fromEntries((n.value.schema??[]).map(e=>[e.fieldName,u(e.defaultValue)]))}r.value=g();function _(){if(c)throw Error(`[lumal/v5] Form 已卸载`)}function v(e,t,n){return e===void 0?n:typeof e==`function`?e(t,p):e}let y=(0,t.computed)(()=>(n.value.schema??[]).map(e=>{let t=t=>({...n.value.commonConfig?.componentProps,...v(e.componentProps,t,{}),...v(e.dependencies?.componentProps,t,{}),...e.component===`InputPassword`?{type:`password`}:{}});return{field:e.fieldName,label:e.label,component:m[e.component],defaultValue:e.defaultValue,help:e.help,hidden:({model:t})=>!v(e.dependencies?.if,t,!0),visible:({model:t})=>v(e.dependencies?.show,t,!0),disabled:({model:n})=>v(e.dependencies?.disabled,n,t(n).disabled??!1),required:({model:t})=>v(e.dependencies?.required,t,typeof e.rules==`string`),componentProps:({model:e})=>t(e),options:({model:e})=>t(e).options??[],placeholder:typeof e.componentProps==`object`?e.componentProps.placeholder:void 0,rules:({model:t})=>[{async asyncValidator(n,r){delete o[e.fieldName];let i=v(e.dependencies?.required,t,typeof e.rules==`string`),a=r==null||r===``||Array.isArray(r)&&r.length===0,s=i&&a?`${e.label}不能为空`:``;if(!s&&e.rules&&typeof e.rules==`object`){let t=await e.rules.safeParseAsync(r);t.success||(s=t.error?.issues[0]?.message??`${e.label}不合法`)}if(s)throw o[e.fieldName]=s,Error(s)}}]}}));function b(e){_();let t=typeof e==`function`?e(n.value):e,i={...n.value,...t,commonConfig:{...n.value.commonConfig,...t.commonConfig},submitButtonOptions:{...n.value.submitButtonOptions,...t.submitButtonOptions},resetButtonOptions:{...n.value.resetButtonOptions,...t.resetButtonOptions}};h(i),n.value=i;let a=new Set((i.schema??[]).map(e=>e.fieldName));r.value={...g(),...Object.fromEntries(Object.entries(r.value).filter(([e])=>a.has(e)))}}function x(){Object.keys(o).forEach(e=>delete o[e]),s?.clearValidate(),a.value=``}async function S(){if(_(),await(0,t.nextTick)(),!s)throw Error(`[lumal/v5] 请先挂载 <Form />`);return x(),{valid:await s.validate(),errors:{...o}}}async function C(){if(_(),f)return f;let e=l,t=(async()=>{if((await S()).valid&&e===l){i.value=!0,a.value=``;try{let t=u(r.value);return await n.value.handleSubmit?.(t),e===l?(d=t,t):void 0}catch(t){throw e===l&&(a.value=t instanceof Error?t.message:String(t)),t}finally{e===l&&(i.value=!1)}}})();f=t;try{return await t}finally{f===t&&(f=void 0)}}p={get isMounted(){return!!s},async getValues(){return _(),u(r.value)},async setValues(e,i=!0,a=!1){_();let o=new Set((n.value.schema??[]).map(e=>e.fieldName));r.value={...r.value,...u(Object.fromEntries(Object.entries(e).filter(([e])=>!i||o.has(e))))},await(0,t.nextTick)(),a&&await S()},async setFieldValue(e,t,n=!1){await p.setValues({[e]:t},!0,n)},async resetForm(e){_(),r.value={...g(),...u(e?.values??{})},await(0,t.nextTick)(),x()},async resetValidate(){_(),x()},validate:S,submitForm:async e=>(e?.preventDefault(),C()),validateAndSubmitForm:C,getState:()=>n.value,setState:b,updateSchema:e=>b({schema:(n.value.schema??[]).map(t=>({...t,...e.find(e=>e.fieldName===t.fieldName)}))}),removeSchemaByFields:async e=>b({schema:n.value.schema?.filter(t=>!e.includes(t.fieldName))}),getLatestSubmissionValues:()=>u(d)};function w(){l+=1,s=void 0,f=void 0,i.value=!1,d={},x()}return(0,t.onScopeDispose)(()=>{w(),c=!0},!0),{api:p,state:n,values:r,schemas:y,submitting:i,failure:a,mount(e){if(_(),s)throw Error(`[lumal/v5] 每个 useVbenForm 只能同时挂载一个 Form`);s=e},unmount:w,update(e){r.value=e},changed(e,t){n.value.handleValuesChange?.(u(e),t),n.value.submitOnChange&&C().catch(()=>{})},async reset(){await p.resetForm(),await n.value.handleReset?.()},async submitFromUi(){await C().catch(()=>{})}}}function _(e={}){let n=g(e);return[(0,t.defineComponent)({name:`LumalVben5Form`,inheritAttrs:!1,setup:(e,{attrs:r,slots:i})=>()=>(l(r),(0,t.h)(p,{...r,controller:n},i))}),n.api]}var v={class:`lumal-v5-grid`},y={key:1,class:`lumal-v5-grid__error`,role:`alert`},b=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})((0,t.defineComponent)({__name:`V5Grid`,props:{controller:{},tableTitle:{}},setup(e){let n=e,a=(0,t.useTemplateRef)(`tableRef`),o=(0,t.computed)(()=>n.controller.state.value),s=(0,t.computed)(()=>o.value.gridOptions??{}),c=(0,t.computed)(()=>s.value.pagerConfig===!1?void 0:s.value.pagerConfig),l=(0,t.computed)(()=>(s.value.columns??[]).filter(e=>e.field&&e.slots?.default)),u=n.controller.Form;return(0,t.onMounted)(()=>{a.value&&n.controller.mount(a.value)}),(0,t.onBeforeUnmount)(()=>n.controller.unmount()),(n,d)=>((0,t.openBlock)(),(0,t.createElementBlock)(`section`,v,[o.value.formOptions?(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(u),{key:0,class:`lumal-v5-grid__form`},null,512)),[[t.vShow,o.value.showSearchForm]]):(0,t.createCommentVNode)(``,!0),e.controller.failure.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,y,[(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(e.controller.failure.value instanceof Error?e.controller.failure.value.message:String(e.controller.failure.value)),1),(0,t.createElementVNode)(`button`,{type:`button`,onClick:d[0]||=(...t)=>e.controller.retry&&e.controller.retry(...t)},` 重试 `)])):(0,t.createCommentVNode)(``,!0),(0,t.createVNode)((0,t.unref)(r.LumalSchemaTable),{ref_key:`tableRef`,ref:a,rows:e.controller.rows.value,columns:e.controller.columns.value,"row-key":s.value.rowConfig?.keyField??`id`,loading:e.controller.loading.value||s.value.loading,selection:s.value.columns?.some(e=>e.type===`checkbox`),"show-column-settings":s.value.toolbarConfig?.custom,"table-props":{border:s.value.border,stripe:s.value.stripe,height:s.value.height===`auto`?void 0:s.value.height},onSortChange:e.controller.changeSort,onSelectionChange:e.controller.select},(0,t.createSlots)({"toolbar-title":(0,t.withCtx)(()=>[(0,t.createTextVNode)((0,t.toDisplayString)(e.tableTitle??o.value.tableTitle),1)]),toolbar:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`toolbar-actions`,{},void 0,!0)]),"toolbar-tools":(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`toolbar-tools`,{},void 0,!0),s.value.toolbarConfig?.search&&o.value.formOptions?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,type:`button`,title:`切换查询`,"aria-label":`切换查询`,onClick:d[1]||=t=>e.controller.api.toggleSearchForm()},[(0,t.createVNode)((0,t.unref)(i.LumalIcon),{name:`lumal:filter`})])):(0,t.createCommentVNode)(``,!0),s.value.toolbarConfig?.refresh===!1?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:1,type:`button`,title:`刷新`,"aria-label":`刷新`,onClick:d[2]||=(...t)=>e.controller.retry&&e.controller.retry(...t)},[(0,t.createVNode)((0,t.unref)(i.LumalIcon),{name:`lumal:refresh`})]))]),_:2},[(0,t.renderList)(l.value,e=>({name:`table-${e.field}`,fn:(0,t.withCtx)(r=>[(0,t.renderSlot)(n.$slots,e.slots.default,{row:r.row,rowIndex:r.index,column:e},void 0,!0)])}))]),1032,[`rows`,`columns`,`row-key`,`loading`,`selection`,`show-column-settings`,`table-props`,`onSortChange`,`onSelectionChange`]),s.value.pagerConfig!==!1&&c.value?.enabled!==!1?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.LumalPagination),{key:2,page:e.controller.page.value,"page-size":e.controller.pageSize.value,"page-sizes":c.value?.pageSizes,total:e.controller.total.value,onChange:e.controller.changePage},null,8,[`page`,`page-size`,`page-sizes`,`total`,`onChange`])):(0,t.createCommentVNode)(``,!0)]))}}),[[`__scopeId`,`data-v-dc8a8099`]]);function x(e){c(e,[`gridOptions`,`formOptions`,`tableTitle`,`showSearchForm`,`gridEvents`],`Grid`);let t=e.gridOptions??{};c(t,[`columns`,`data`,`rowConfig`,`pagerConfig`,`proxyConfig`,`toolbarConfig`,`loading`,`height`,`border`,`stripe`,`showOverflow`],`gridOptions`),t.toolbarConfig&&c(t.toolbarConfig,[`custom`,`refresh`,`search`],`toolbarConfig`),t.rowConfig&&c(t.rowConfig,[`keyField`],`rowConfig`),t.pagerConfig&&c(t.pagerConfig,[`enabled`,`pageSize`,`currentPage`,`pageSizes`],`pagerConfig`),t.proxyConfig&&(c(t.proxyConfig,[`autoLoad`,`response`,`ajax`],`proxyConfig`),t.proxyConfig.response&&c(t.proxyConfig.response,[`result`,`total`],`proxyConfig.response`),t.proxyConfig.ajax&&c(t.proxyConfig.ajax,[`query`],`proxyConfig.ajax`)),e.gridEvents&&c(e.gridEvents,[`checkboxChange`,`sortChange`,`pageChange`,`proxyQuery`,`proxyQueryError`],`gridEvents`);for(let e of t.columns??[]){if(c(e,[`field`,`title`,`type`,`width`,`minWidth`,`fixed`,`align`,`visible`,`sortable`,`showOverflow`,`slots`,`formatter`],`column`),e.type&&![`checkbox`,`seq`].includes(e.type))throw Error(`[lumal/v5] 不支持的列类型:${e.type}`);if(e.formatter&&typeof e.formatter!=`function`)throw Error(`[lumal/v5] formatter 请使用函数,VXE 全局 renderer/formatter 不可用`);e.slots&&c(e.slots,[`default`],`column.slots`)}}function S(e,t){return t.split(`.`).reduce((e,t)=>e&&typeof e==`object`?e[t]:void 0,e)}function C(e,t){let n=Array.isArray(e)?e:S(e,t.proxyConfig?.response?.result??`items`),r=Array.isArray(e)?e.length:S(e,t.proxyConfig?.response?.total??`total`);if(!Array.isArray(n)||n.some(e=>!e||typeof e!=`object`||Array.isArray(e))||typeof r!=`number`||!Number.isFinite(r)||r<0)throw Error(`[lumal/v5] 查询结果必须是数组或 { items, total },其他格式请配置 proxyConfig.response`);return{rows:n,total:r}}function w(e){x(e);let n=(0,t.shallowRef)({showSearchForm:!0,...e}),r=(0,t.shallowRef)(e.gridOptions?.data??[]),i=(0,t.shallowRef)(r.value.length),a=(0,t.shallowRef)(e.gridOptions?.pagerConfig?e.gridOptions.pagerConfig.currentPage??1:1),o=(0,t.shallowRef)(e.gridOptions?.pagerConfig?e.gridOptions.pagerConfig.pageSize??10:10),s=(0,t.shallowRef)(!1),c=(0,t.shallowRef)(),l=(0,t.shallowRef)({}),u,d=0,f=!1,p=!1,[m,h]=_({...e.formOptions,showDefaultActions:!0,submitButtonOptions:{content:`查询`,...e.formOptions?.submitButtonOptions},handleSubmit:async e=>{await n.value.formOptions?.handleSubmit?.(e),a.value=1,await v()},handleReset:async()=>{await n.value.formOptions?.handleReset?.(),a.value=1,await v()}});function g(){if(p)throw Error(`[lumal/v5] Grid 已卸载`)}async function v(e={}){g();let t=++d,f=n.value.gridOptions??{},m=f.proxyConfig?.ajax?.query;if(m){s.value=!0,c.value=void 0;try{let s={...await h.getValues(),...e},c=await m({page:{currentPage:a.value,pageSize:o.value},sort:{...l.value}},s);if(t!==d||p)return;let g=C(c,f);r.value=g.rows,i.value=g.total,u?.clearSelection(),n.value.gridEvents?.proxyQuery?.({result:c})}catch(e){if(t!==d||p)return;throw c.value=e,n.value.gridEvents?.proxyQueryError?.({error:e}),e}finally{t===d&&(s.value=!1)}}}function y(e){g();let t=typeof e==`function`?e(n.value):e,s=n.value.gridOptions,c=t.gridOptions,l={...n.value,...t,formOptions:t.formOptions?{...n.value.formOptions,...t.formOptions}:n.value.formOptions,gridOptions:{...s,...c,proxyConfig:{...s?.proxyConfig,...c?.proxyConfig,ajax:{...s?.proxyConfig?.ajax,...c?.proxyConfig?.ajax},response:{...s?.proxyConfig?.response,...c?.proxyConfig?.response}},toolbarConfig:{...s?.toolbarConfig,...c?.toolbarConfig}}};if(x(l),n.value=l,c?.data&&(r.value=c.data,i.value=c.data.length),c?.pagerConfig&&(o.value=c.pagerConfig.pageSize??o.value,a.value=c.pagerConfig.currentPage??a.value),t.formOptions){let{handleSubmit:e,handleReset:n,...r}=t.formOptions;h.setState(r)}}let b=(0,t.computed)(()=>(n.value.gridOptions?.columns??[]).filter(e=>e.type!==`checkbox`).map((e,t)=>({field:e.field??`__seq_${t}`,label:e.title??``,width:e.width,minWidth:e.minWidth,fixed:e.fixed,align:e.align,hidden:e.visible===!1,showOverflowTooltip:e.showOverflow??n.value.gridOptions?.showOverflow,componentProps:{sortable:e.sortable?`custom`:!1},formatter:e.type===`seq`?(e,t,n)=>(a.value-1)*o.value+n+1:e.formatter?(t,n,r)=>e.formatter({cellValue:t,row:n,rowIndex:r}):void 0}))),S={grid:{getCheckboxRecords:()=>u?.getSelectedRows()??[],clearCheckboxRow:()=>u?.clearSelection(),setCheckboxRow:(e,t)=>{if(!u)throw Error(`[lumal/v5] 请先挂载 <Grid />`);for(let n of Array.isArray(e)?e:[e])u.toggleRowSelection(n,t)},getTableData:()=>({fullData:[...r.value],tableData:[...r.value]})},formApi:h,error:(0,t.computed)(()=>c.value),getState:()=>n.value,query:v,async reload(e){a.value=1,await v(e)},setGridOptions:e=>y({gridOptions:e}),setState:y,setLoading:e=>y({gridOptions:{loading:e}}),toggleSearchForm(e){return y({showSearchForm:e??!n.value.showSearchForm}),!!n.value.showSearchForm}};function w(){d+=1,u=void 0,f=!1,s.value=!1}return(0,t.onScopeDispose)(()=>{w(),p=!0},!0),{api:S,Form:m,state:n,columns:b,rows:r,total:i,page:a,pageSize:o,loading:s,failure:c,mount(e){if(g(),f)throw Error(`[lumal/v5] 每个 useVbenVxeGrid 只能同时挂载一个 Grid`);u=e,f=!0,n.value.gridOptions?.proxyConfig?.autoLoad!==!1&&v().catch(()=>{})},unmount:w,async changePage(e){a.value=e.page,o.value=e.pageSize,n.value.gridEvents?.pageChange?.({currentPage:a.value,pageSize:o.value}),await v().catch(()=>{})},async changeSort(e){l.value={field:e.prop??void 0,order:e.order===`ascending`?`asc`:e.order===`descending`?`desc`:null},a.value=1,n.value.gridEvents?.sortChange?.(l.value),await v().catch(()=>{})},select(e){n.value.gridEvents?.checkboxChange?.({records:e})},retry:()=>v().catch(()=>{})}}function T(e={}){let n=w(e);return[(0,t.defineComponent)({name:`LumalVben5Grid`,inheritAttrs:!1,setup:(e,{attrs:r,slots:i})=>()=>(l(r,[`tableTitle`,`table-title`]),(0,t.h)(b,{...r,controller:n},i))}),n.api]}exports.AccessControl=s,exports.adaptVbenMenus=e.adaptVbenMenus,exports.adaptVbenRouteMeta=e.adaptVbenRouteMeta,exports.createVbenAccessDirective=o,exports.useAccess=a,exports.useVbenForm=_,exports.useVbenVxeGrid=T;