@lumal/vben-compat 0.0.3-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.
- package/CHANGELOG.md +16 -0
- package/README.md +22 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -287
- package/dist/legacy.cjs +1 -0
- package/dist/legacy.js +2 -0
- package/dist/src/legacy.d.ts +2 -0
- package/dist/src/legacy.d.ts.map +1 -0
- package/dist/src/v5/AccessControl.vue.d.ts +22 -0
- package/dist/src/v5/AccessControl.vue.d.ts.map +1 -0
- package/dist/src/v5/V5Form.vue.d.ts +23 -0
- package/dist/src/v5/V5Form.vue.d.ts.map +1 -0
- package/dist/src/v5/V5Grid.vue.d.ts +28 -0
- package/dist/src/v5/V5Grid.vue.d.ts.map +1 -0
- package/dist/src/v5/access.d.ts +9 -0
- package/dist/src/v5/access.d.ts.map +1 -0
- package/dist/src/v5/form.d.ts +25 -0
- package/dist/src/v5/form.d.ts.map +1 -0
- package/dist/src/v5/grid.d.ts +34 -0
- package/dist/src/v5/grid.d.ts.map +1 -0
- package/dist/src/v5/index.d.ts +8 -0
- package/dist/src/v5/index.d.ts.map +1 -0
- package/dist/src/v5/router.d.ts +30 -0
- package/dist/src/v5/router.d.ts.map +1 -0
- package/dist/src/v5/types.d.ts +201 -0
- package/dist/src/v5/types.d.ts.map +1 -0
- package/dist/src/v5/types.type-test.d.ts +2 -0
- package/dist/src/v5/types.type-test.d.ts.map +1 -0
- package/dist/src/v5/utils.d.ts +5 -0
- package/dist/src/v5/utils.d.ts.map +1 -0
- package/dist/src-D078O_Ix.cjs +1 -0
- package/dist/src-DnEVET3l.js +287 -0
- package/dist/v5-router.cjs +1 -0
- package/dist/v5-router.js +30 -0
- package/dist/v5.cjs +1 -0
- package/dist/v5.js +727 -0
- package/dist/vben-compat.css +2 -0
- package/package.json +22 -3
|
@@ -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 @@
|
|
|
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;
|