@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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # @lumal/vben-compat
2
2
 
3
+ ## 0.0.5-beta (2026-10-20)
4
+
5
+ ### Minor Changes
6
+
7
+ - 新增 `/v5`,固定 Vben 5.7.0 高频 Form/Grid、路由与权限契约,返回可渲染组件和 API。
8
+ - 新增 `/v5/router` 无 UI 菜单适配入口,保留页面级懒加载;不引入 VXE/Vben 运行时。
9
+ - 根入口保留旧 register/API 语义,新增 `/legacy` 显式别名。
10
+ - 补齐校验、动态字段、分页排序、多选、失败恢复、生命周期及旧入口回归测试。
11
+ - 同步 Core 与图标依赖至 0.0.5-beta;未支持能力有明确类型、错误和迁移说明。
12
+
13
+ ## 0.0.4-beta (2026-10-20)
14
+
15
+ ### Patch Changes
16
+
17
+ - 同步 Core 依赖至 0.0.4-beta,继续保持既有表单与表格迁移子集 API。
18
+
3
19
  ## 0.0.3-beta (2026-10-16)
4
20
 
5
21
  ### Patch Changes
package/README.md CHANGED
@@ -1,9 +1,28 @@
1
1
  # @lumal/vben-compat
2
2
 
3
- Lumal 的 Vben 常用写法兼容层,支持 `useVbenForm` 常用控件映射,以及 `useVbenVxeGrid` 的 proxy、toolbar、actions、错误状态和可等待刷新流程。
3
+ 启动阶段仅转换 Vben 菜单时,从 `@lumal/vben-compat/v5/router` 导入
4
+ `adaptVbenMenus/adaptVbenRouteMeta`。该子入口不加载 UI,Form/Grid 留在业务路由懒加载。
5
+
6
+ 轻量迁移层,不是 Vben/VXE 完整运行时。Vben 5 基准为官方 v5.7.0,
7
+ commit `63a38dce49ba109f61607994e21ba921d8e970e9`。
4
8
 
5
9
  ```ts
6
- import { useVbenForm, useVbenVxeGrid } from '@lumal/vben-compat'
10
+ import { useVbenForm, useVbenVxeGrid } from '@lumal/vben-compat/v5'
11
+ import '@lumal/vben-compat/style.css'
12
+
13
+ const [Form, formApi] = useVbenForm({
14
+ schema: [{ component: 'Input', fieldName: 'name', label: '名称', rules: 'required' }],
15
+ })
7
16
  ```
8
17
 
9
- 兼容层用于迁移旧写法,不完整复刻 Vben。完整映射、迁移步骤和不支持项见仓库文档 `docs/migration-from-vben.md`。
18
+ `/v5` 返回组件与 API,Grid 的 formOptions 在顶层。根入口和 `/legacy`
19
+ 继续返回原 Lumal 的 `[register, api]`,不改变已有消费者语义。
20
+
21
+ 支持常见控件、校验、动态字段、值 API、查询分页排序、列与选择、toolbar 和常用插槽。
22
+ 未知配置明确报错。Grid 由 Core SchemaTable 承载,不安装 VXE;高级编辑、
23
+ 虚拟滚动、任意 renderer、嵌套表单路径和完整 Tailwind 布局不支持。
24
+ Vue 为 peer;UI 消费者还须安装 Core 的 Element Plus peer 并导入其样式。
25
+ 配置通过 hook / setState 更新,不接受 schema/gridOptions 组件 props;模型泛型、
26
+ 校验转换和错误传播的差异须按迁移矩阵逐项核对。
27
+
28
+ 完整矩阵、迁移样例、测试证据和限制见仓库 `docs/migration-from-vben.md`。
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});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}]}exports.adaptVbenFormSchema=c,exports.adaptVbenFormSchemas=l,exports.adaptVbenGridColumn=g,exports.adaptVbenGridColumns=_,exports.adaptVbenGridProxyResult=S,exports.adaptVbenGridQuerySchemas=v,exports.resolveVbenGridOptions=p,exports.useVbenForm=f,exports.useVbenVxeGrid=w;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src-D078O_Ix.cjs");exports.adaptVbenFormSchema=e.c,exports.adaptVbenFormSchemas=e.l,exports.adaptVbenGridColumn=e.n,exports.adaptVbenGridColumns=e.r,exports.adaptVbenGridProxyResult=e.i,exports.adaptVbenGridQuerySchemas=e.a,exports.resolveVbenGridOptions=e.o,exports.useVbenForm=e.s,exports.useVbenVxeGrid=e.t;
package/dist/index.js CHANGED
@@ -1,287 +1,2 @@
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 { p as adaptVbenFormSchema, m as adaptVbenFormSchemas, x as adaptVbenGridColumn, S as adaptVbenGridColumns, D as adaptVbenGridProxyResult, C as adaptVbenGridQuerySchemas, v as resolveVbenGridOptions, _ as useVbenForm, k as useVbenVxeGrid };
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./src-DnEVET3l.js";
2
+ export { t as adaptVbenFormSchema, r as adaptVbenFormSchemas, i as adaptVbenGridColumn, o as adaptVbenGridColumns, n as adaptVbenGridProxyResult, e as adaptVbenGridQuerySchemas, a as resolveVbenGridOptions, s as useVbenForm, c as useVbenVxeGrid };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src-D078O_Ix.cjs");exports.adaptVbenFormSchema=e.c,exports.adaptVbenFormSchemas=e.l,exports.adaptVbenGridColumn=e.n,exports.adaptVbenGridColumns=e.r,exports.adaptVbenGridProxyResult=e.i,exports.adaptVbenGridQuerySchemas=e.a,exports.resolveVbenGridOptions=e.o,exports.useVbenForm=e.s,exports.useVbenVxeGrid=e.t;
package/dist/legacy.js ADDED
@@ -0,0 +1,2 @@
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./src-DnEVET3l.js";
2
+ export { t as adaptVbenFormSchema, r as adaptVbenFormSchemas, i as adaptVbenGridColumn, o as adaptVbenGridColumns, n as adaptVbenGridProxyResult, e as adaptVbenGridQuerySchemas, a as resolveVbenGridOptions, s as useVbenForm, c as useVbenVxeGrid };
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/legacy.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAA"}
@@ -0,0 +1,22 @@
1
+ /***********************Vben 角色与权限组件*********************/
2
+ type __VLS_Props = {
3
+ codes?: string[];
4
+ type?: 'code' | 'role';
5
+ };
6
+ declare var __VLS_1: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_1) => any;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
11
+ type: "code" | "role";
12
+ codes: string[];
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
22
+ //# sourceMappingURL=AccessControl.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessControl.vue.d.ts","sourceRoot":"","sources":["../../../src/v5/AccessControl.vue"],"names":[],"mappings":"AAmBA,0DAA0D;AAC1D,KAAK,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AA4BhE,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAG/C,QAAA,MAAM,UAAU;UAjC8B,MAAM,GAAG,MAAM;WAAhC,MAAM,EAAE;6EAoCnC,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { FormController } from './form';
2
+ /***********************表单渲染与生命周期*********************/
3
+ type __VLS_Props = {
4
+ controller: FormController;
5
+ };
6
+ declare var __VLS_16: string, __VLS_17: {
7
+ modelValue: unknown;
8
+ 'onUpdate:modelValue': (value: unknown) => Promise<void>;
9
+ values: import("@lumal/core/components").SchemaFormModel<Record<string, unknown>>;
10
+ };
11
+ type __VLS_Slots = {} & {
12
+ [K in NonNullable<typeof __VLS_16>]?: (props: typeof __VLS_17) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
23
+ //# sourceMappingURL=V5Form.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V5Form.vue.d.ts","sourceRoot":"","sources":["../../../src/v5/V5Form.vue"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,QAAQ,CAAA;AAIxD,uDAAuD;AACvD,KAAK,WAAW,GAAG;IAAE,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AA8HlD,QAAA,IAAyB,QAAQ,QAAW,EAAE,QAAQ;;mCAftB,OAAO;;CAe2B,CAAE;AACpE,KAAK,WAAW,GAAG,EAAE,GACnB;KAAG,CAAC,IAAI,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG;CAAE,CAAC;AAO5E,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { GridController } from './grid';
2
+ /***********************表格渲染与生命周期*********************/
3
+ type __VLS_Props = {
4
+ controller: GridController;
5
+ tableTitle?: string;
6
+ };
7
+ declare var __VLS_19: {}, __VLS_22: {}, __VLS_36: string, __VLS_37: {
8
+ row: import("@lumal/core/components").SchemaTableRow;
9
+ rowIndex: number;
10
+ column: import("./types").VxeGridColumn<import("@lumal/core/components").SchemaTableRow>;
11
+ };
12
+ type __VLS_Slots = {} & {
13
+ [K in NonNullable<typeof __VLS_36>]?: (props: typeof __VLS_37) => any;
14
+ } & {
15
+ 'toolbar-actions'?: (props: typeof __VLS_19) => any;
16
+ } & {
17
+ 'toolbar-tools'?: (props: typeof __VLS_22) => any;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
28
+ //# sourceMappingURL=V5Grid.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V5Grid.vue.d.ts","sourceRoot":"","sources":["../../../src/v5/V5Grid.vue"],"names":[],"mappings":"AAuGA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,QAAQ,CAAA;AAKzD,uDAAuD;AACvD,KAAK,WAAW,GAAG;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA+NvE,QAAA,IAAyB,QAAQ,IAAW,EAAE,QAAQ,IAAW,EAAE,QAAQ,QAAW,EAAE,QAAQ;;;;CAAY,CAAE;AAC9G,KAAK,WAAW,GAAG,EAAE,GACnB;KAAG,CAAC,IAAI,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG;CAAE,GACzE;IAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GACvD;IAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAOxD,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PermissionStore } from '@lumal/core/permission';
2
+ import type { Directive } from 'vue';
3
+ /** Vben 5 使用交集判断,空条件不授权;不复用原生空条件放行语义。 */
4
+ export declare function useAccess(store?: PermissionStore): {
5
+ hasAccessByCodes: (codes: string[]) => boolean;
6
+ hasAccessByRoles: (roles: string[]) => boolean;
7
+ };
8
+ export declare function createVbenAccessDirective(store: PermissionStore, accessMode?: 'backend' | 'frontend'): Directive<HTMLElement, string | string[]>;
9
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/v5/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,KAAK,CAAA;AAItD,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,KAAK,GAAE,eAAsC;8BAEzC,MAAM,EAAE;8BACR,MAAM,EAAE;EAErC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,UAAU,GAAE,SAAS,GAAG,UAAuB,GAC9C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CA6B3C"}
@@ -0,0 +1,25 @@
1
+ import type { SchemaFormItem, SchemaFormModel } from '@lumal/core/components';
2
+ import type { UseVbenFormReturn, V5Values, VbenFormApi, VbenFormProps } from './types';
3
+ export interface NativeForm {
4
+ validate: () => Promise<boolean>;
5
+ clearValidate: () => void;
6
+ }
7
+ export type FormController = ReturnType<typeof createFormController>;
8
+ /***********************表单状态与原生 Schema 适配*********************/
9
+ export declare function createFormController(options?: VbenFormProps): {
10
+ api: VbenFormApi<V5Values>;
11
+ state: import("vue").ShallowRef<VbenFormProps<V5Values>, VbenFormProps<V5Values>>;
12
+ values: import("vue").ShallowRef<V5Values, V5Values>;
13
+ schemas: import("vue").ComputedRef<SchemaFormItem[]>;
14
+ submitting: import("vue").ShallowRef<boolean, boolean>;
15
+ failure: import("vue").ShallowRef<string, string>;
16
+ mount(native: NativeForm): void;
17
+ unmount: () => void;
18
+ update(next: SchemaFormModel): void;
19
+ changed(next: SchemaFormModel, fields: string[]): void;
20
+ reset(): Promise<void>;
21
+ submitFromUi(): Promise<void>;
22
+ };
23
+ /***********************Vben 5 组件返回契约*********************/
24
+ export declare function useVbenForm<T extends object = V5Values>(options?: VbenFormProps<T>): UseVbenFormReturn<T>;
25
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/v5/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACtG,OAAO,KAAK,EAAc,iBAAiB,EAAc,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAkB9G,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AACD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AA2BpE,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,aAAkB;;;;;;;kBAgM9C,UAAU;mBAnBN,IAAI;iBA0BT,eAAe;kBACd,eAAe,UAAU,MAAM,EAAE;;;EAWlD;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,QAAQ,EAAE,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAY7G"}
@@ -0,0 +1,34 @@
1
+ import type { SchemaTableColumn, SchemaTableRow, SchemaTableSortChangePayload } from '@lumal/core/components';
2
+ import type { UseVbenVxeGridReturn, VxeGridApi, VxeGridProps } from './types';
3
+ export interface NativeTable {
4
+ getSelectedRows: () => SchemaTableRow[];
5
+ clearSelection: () => void;
6
+ toggleRowSelection: (row: SchemaTableRow, checked: boolean) => void;
7
+ }
8
+ export type GridController = ReturnType<typeof createGridController>;
9
+ /***********************查询状态与生命周期*********************/
10
+ declare function createGridController(options: VxeGridProps): {
11
+ api: VxeGridApi<SchemaTableRow>;
12
+ Form: import("vue").Component;
13
+ state: import("vue").ShallowRef<VxeGridProps<SchemaTableRow>, VxeGridProps<SchemaTableRow>>;
14
+ columns: import("vue").ComputedRef<SchemaTableColumn<SchemaTableRow>[]>;
15
+ rows: import("vue").ShallowRef<SchemaTableRow[], SchemaTableRow[]>;
16
+ total: import("vue").ShallowRef<number, number>;
17
+ page: import("vue").ShallowRef<number, number>;
18
+ pageSize: import("vue").ShallowRef<number, number>;
19
+ loading: import("vue").ShallowRef<boolean, boolean>;
20
+ failure: import("vue").ShallowRef<unknown, unknown>;
21
+ mount(table: NativeTable): void;
22
+ unmount: () => void;
23
+ changePage(payload: {
24
+ page: number;
25
+ pageSize: number;
26
+ }): Promise<void>;
27
+ changeSort(payload: SchemaTableSortChangePayload): Promise<void>;
28
+ select(records: SchemaTableRow[]): void;
29
+ retry: () => Promise<void>;
30
+ };
31
+ /***********************Vben 5 Grid 返回契约*********************/
32
+ export declare function useVbenVxeGrid<Row extends object = SchemaTableRow>(options?: VxeGridProps<Row>): UseVbenVxeGridReturn<Row>;
33
+ export {};
34
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/v5/grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAC7G,OAAO,KAAK,EAAE,oBAAoB,EAAyC,UAAU,EAAE,YAAY,EAAuB,MAAM,SAAS,CAAA;AAMzI,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,cAAc,EAAE,CAAA;IACvC,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACpE;AA2CD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEpE,uDAAuD;AACvD,iBAAS,oBAAoB,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;;iBAkKlC,WAAW;mBArBN,IAAI;wBA+BI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;wBAMlC,4BAA4B;oBAMtC,cAAc,EAAE;;EAGnC;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,GAAG,SAAS,MAAM,GAAG,cAAc,EAAE,OAAO,GAAE,YAAY,CAAC,GAAG,CAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAW9H"}
@@ -0,0 +1,8 @@
1
+ export { createVbenAccessDirective, useAccess } from './access';
2
+ export { default as AccessControl } from './AccessControl.vue';
3
+ export { useVbenForm } from './form';
4
+ export { useVbenVxeGrid } from './grid';
5
+ export { adaptVbenMenus, adaptVbenRouteMeta } from './router';
6
+ export type { VbenMenuRecord, VbenRouteMeta } from './router';
7
+ export type * from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v5/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7D,mBAAmB,SAAS,CAAA"}
@@ -0,0 +1,30 @@
1
+ import type { LumalMenuRecord, LumalRouteMeta } from '@lumal/core/router';
2
+ export interface VbenRouteMeta {
3
+ title?: string;
4
+ icon?: string;
5
+ order?: number;
6
+ authority?: string[];
7
+ hideInMenu?: boolean;
8
+ hideInBreadcrumb?: boolean;
9
+ hideInTab?: boolean;
10
+ affixTab?: boolean;
11
+ keepAlive?: boolean;
12
+ activePath?: string;
13
+ link?: string;
14
+ iframeSrc?: string;
15
+ ignoreAccess?: boolean;
16
+ }
17
+ export interface VbenMenuRecord {
18
+ path: string;
19
+ name?: string;
20
+ component?: string;
21
+ redirect?: string;
22
+ meta?: VbenRouteMeta;
23
+ children?: VbenMenuRecord[];
24
+ }
25
+ /** 这里只转换数据;组件仍由消费应用自己的白名单 resolver 加载。 */
26
+ export declare function adaptVbenRouteMeta(meta?: VbenRouteMeta): LumalRouteMeta;
27
+ export declare function adaptVbenMenus(records: VbenMenuRecord[], options?: {
28
+ iframeComponent?: string;
29
+ }): LumalMenuRecord[];
30
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/v5/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEzE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAC5B;AAOD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,aAAkB,GAAG,cAAc,CAS3E;AACD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,EAAE,CAavH"}