@sparqjs/schema-ui-element-plus 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/action-types.d.ts +5 -0
- package/dist/adapter/action-types.d.ts.map +1 -0
- package/dist/adapter/action-types.js +2 -0
- package/dist/adapter/action-types.js.map +1 -0
- package/dist/adapter/action.d.ts +17 -0
- package/dist/adapter/action.d.ts.map +1 -0
- package/dist/adapter/action.js +67 -0
- package/dist/adapter/action.js.map +1 -0
- package/dist/adapter/audit.d.ts +6 -0
- package/dist/adapter/audit.d.ts.map +1 -0
- package/dist/adapter/audit.js +67 -0
- package/dist/adapter/audit.js.map +1 -0
- package/dist/adapter/container.d.ts +19 -0
- package/dist/adapter/container.d.ts.map +1 -0
- package/dist/adapter/container.js +114 -0
- package/dist/adapter/container.js.map +1 -0
- package/dist/adapter/context.d.ts +17 -0
- package/dist/adapter/context.d.ts.map +1 -0
- package/dist/adapter/context.js +30 -0
- package/dist/adapter/context.js.map +1 -0
- package/dist/adapter/field.d.ts +44 -0
- package/dist/adapter/field.d.ts.map +1 -0
- package/dist/adapter/field.js +704 -0
- package/dist/adapter/field.js.map +1 -0
- package/dist/adapter/index.d.ts +7 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +539 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/layout.d.ts +31 -0
- package/dist/adapter/layout.d.ts.map +1 -0
- package/dist/adapter/layout.js +226 -0
- package/dist/adapter/layout.js.map +1 -0
- package/dist/adapter/types.d.ts +67 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +2 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/icon-registry.d.ts +3 -0
- package/dist/icon-registry.d.ts.map +1 -0
- package/dist/icon-registry.js +82 -0
- package/dist/icon-registry.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/preset/data-adapter.d.ts +38 -0
- package/dist/preset/data-adapter.d.ts.map +1 -0
- package/dist/preset/data-adapter.js +51 -0
- package/dist/preset/data-adapter.js.map +1 -0
- package/dist/preset/index.d.ts +59 -0
- package/dist/preset/index.d.ts.map +1 -0
- package/dist/preset/index.js +80 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/ui-kit.d.ts +56 -0
- package/dist/ui-kit.d.ts.map +1 -0
- package/dist/ui-kit.js +398 -0
- package/dist/ui-kit.js.map +1 -0
- package/package.json +38 -0
- package/src/style.css +483 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ElementPlusActionContext, ElementPlusActionRendererContext } from './types';
|
|
2
|
+
export type ElementPlusActionExecute = ElementPlusActionContext['execute'];
|
|
3
|
+
export type ElementPlusResolvedAction = ElementPlusActionContext['action'];
|
|
4
|
+
export type { ElementPlusActionRendererContext };
|
|
5
|
+
//# sourceMappingURL=action-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-types.d.ts","sourceRoot":"","sources":["../../src/adapter/action-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAA;AAEzF,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAA;AAC1E,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAC1E,YAAY,EAAE,gCAAgC,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-types.js","sourceRoot":"","sources":["../../src/adapter/action-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VNodeChild } from 'vue';
|
|
2
|
+
import type { ElementPlusActionExecute, ElementPlusActionRendererContext, ElementPlusResolvedAction } from './action-types';
|
|
3
|
+
/**
|
|
4
|
+
* 将单个动作渲染为 Element Plus 按钮。
|
|
5
|
+
*
|
|
6
|
+
* `action` 提供可见标题、样式和透传 props。
|
|
7
|
+
* `execute` 处理当前已解析动作的点击事件。
|
|
8
|
+
*/
|
|
9
|
+
export declare function renderButton(context: ElementPlusActionRendererContext, action: ElementPlusResolvedAction, execute?: ElementPlusActionExecute): VNodeChild;
|
|
10
|
+
/**
|
|
11
|
+
* 将分组动作渲染为包含子动作的下拉菜单。
|
|
12
|
+
*
|
|
13
|
+
* 渲染下拉项前,`context.createChildContext` 会为每个子动作解析可见性、
|
|
14
|
+
* 禁用状态和执行处理器。
|
|
15
|
+
*/
|
|
16
|
+
export declare function renderDropdownAction(context: ElementPlusActionRendererContext): VNodeChild;
|
|
17
|
+
//# sourceMappingURL=action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/adapter/action.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,KAAK,EACR,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,EAC5B,MAAM,gBAAgB,CAAA;AAEvB;;;;;GAKG;AACH,wBAAgB,YAAY,CACxB,OAAO,EAAE,gCAAgC,EACzC,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,wBAAwB,GACnC,UAAU,CAeZ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gCAAgC,GAAG,UAAU,CA2C1F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SCHEMA_UI_BUTTON, SCHEMA_UI_DROPDOWN, SCHEMA_UI_DROPDOWN_ITEM, SCHEMA_UI_DROPDOWN_MENU, } from '@sparqjs/schema-core';
|
|
2
|
+
/**
|
|
3
|
+
* 将单个动作渲染为 Element Plus 按钮。
|
|
4
|
+
*
|
|
5
|
+
* `action` 提供可见标题、样式和透传 props。
|
|
6
|
+
* `execute` 处理当前已解析动作的点击事件。
|
|
7
|
+
*/
|
|
8
|
+
export function renderButton(context, action, execute) {
|
|
9
|
+
const props = {
|
|
10
|
+
type: resolveButtonType(action.type),
|
|
11
|
+
size: context.placement === 'operate' ? 'small' : undefined,
|
|
12
|
+
icon: action.icon,
|
|
13
|
+
...action.props,
|
|
14
|
+
...(execute ? { onClick: execute } : {}),
|
|
15
|
+
'data-sparq-element-plus-action': action.action,
|
|
16
|
+
'data-placement': context.placement,
|
|
17
|
+
'data-action-type': action.type,
|
|
18
|
+
};
|
|
19
|
+
return context.ui.render(SCHEMA_UI_BUTTON, props, {
|
|
20
|
+
default: () => action.title ?? action.action,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 将分组动作渲染为包含子动作的下拉菜单。
|
|
25
|
+
*
|
|
26
|
+
* 渲染下拉项前,`context.createChildContext` 会为每个子动作解析可见性、
|
|
27
|
+
* 禁用状态和执行处理器。
|
|
28
|
+
*/
|
|
29
|
+
export function renderDropdownAction(context) {
|
|
30
|
+
return context.ui.render(SCHEMA_UI_DROPDOWN, {
|
|
31
|
+
trigger: 'click',
|
|
32
|
+
...context.action.props,
|
|
33
|
+
'data-sparq-element-plus-action-group': context.action.action,
|
|
34
|
+
'data-placement': context.placement,
|
|
35
|
+
}, {
|
|
36
|
+
default: () => renderButton(context, context.action),
|
|
37
|
+
dropdown: () => context.ui.render(SCHEMA_UI_DROPDOWN_MENU, undefined, {
|
|
38
|
+
default: () => context.action.children?.flatMap((action) => {
|
|
39
|
+
const childContext = context.createChildContext?.(action);
|
|
40
|
+
if (!childContext) {
|
|
41
|
+
throw new Error(`Sparq Vue action context cannot create child action "${action.action}".`);
|
|
42
|
+
}
|
|
43
|
+
if (childContext.action.props?.visible === false) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
return context.ui.render(SCHEMA_UI_DROPDOWN_ITEM, {
|
|
47
|
+
disabled: childContext.action.props?.disabled,
|
|
48
|
+
divided: childContext.action.props?.divided,
|
|
49
|
+
'data-sparq-element-plus-action': childContext.action.action,
|
|
50
|
+
onClick: childContext.execute,
|
|
51
|
+
}, {
|
|
52
|
+
default: () => childContext.action.title ?? childContext.action.action,
|
|
53
|
+
});
|
|
54
|
+
}),
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function resolveButtonType(type) {
|
|
59
|
+
if (!type || type === 'dropdown') {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
if (['primary', 'success', 'warning', 'danger', 'info', 'text'].includes(type)) {
|
|
63
|
+
return type;
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/adapter/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SchemaAuditPanelContext, type SchemaAuditTriggerContext } from '@sparqjs/schema-vue';
|
|
2
|
+
import type { VNodeChild } from 'vue';
|
|
3
|
+
import type { ElementPlusUiContext } from './types';
|
|
4
|
+
export declare function renderAuditTrigger(context: SchemaAuditTriggerContext & ElementPlusUiContext): VNodeChild;
|
|
5
|
+
export declare function renderAuditPanel(context: SchemaAuditPanelContext & ElementPlusUiContext): VNodeChild;
|
|
6
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/adapter/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EACjC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEnD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,GAAG,UAAU,CAgBxG;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,oBAAoB,GAAG,UAAU,CA0BpG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SCHEMA_UI_ALERT, SCHEMA_UI_BUTTON, SCHEMA_UI_DRAWER } from '@sparqjs/schema-core';
|
|
2
|
+
import { renderAuditPanelContent, } from '@sparqjs/schema-vue';
|
|
3
|
+
export function renderAuditTrigger(context) {
|
|
4
|
+
return context.ui.render(SCHEMA_UI_BUTTON, {
|
|
5
|
+
type: 'primary',
|
|
6
|
+
plain: true,
|
|
7
|
+
size: 'small',
|
|
8
|
+
onClick() {
|
|
9
|
+
void context.open();
|
|
10
|
+
},
|
|
11
|
+
'data-sparq-audit-trigger': '',
|
|
12
|
+
}, {
|
|
13
|
+
default: () => '审计记录',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function renderAuditPanel(context) {
|
|
17
|
+
const state = context.auditState;
|
|
18
|
+
return context.ui.render(SCHEMA_UI_DRAWER, {
|
|
19
|
+
modelValue: state.open,
|
|
20
|
+
title: '审计记录',
|
|
21
|
+
size: 'min(640px, 100vw)',
|
|
22
|
+
appendToBody: true,
|
|
23
|
+
'onUpdate:modelValue'(value) {
|
|
24
|
+
if (!value) {
|
|
25
|
+
context.close?.();
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
'data-sparq-audit-panel': '',
|
|
29
|
+
}, {
|
|
30
|
+
default: () => renderAuditPanelContent(context, {
|
|
31
|
+
renderRefresh: () => renderAuditRefresh(context),
|
|
32
|
+
renderError: (_context, message) => renderAuditError(context, message),
|
|
33
|
+
renderLoadMore: () => renderAuditLoadMore(context),
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function renderAuditRefresh(context) {
|
|
38
|
+
return context.ui.render(SCHEMA_UI_BUTTON, {
|
|
39
|
+
size: 'small',
|
|
40
|
+
loading: context.auditState.loading,
|
|
41
|
+
onClick() {
|
|
42
|
+
void context.refresh?.();
|
|
43
|
+
},
|
|
44
|
+
}, {
|
|
45
|
+
default: () => '刷新',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function renderAuditError(context, message) {
|
|
49
|
+
return context.ui.render(SCHEMA_UI_ALERT, {
|
|
50
|
+
type: 'error',
|
|
51
|
+
title: message,
|
|
52
|
+
showIcon: true,
|
|
53
|
+
closable: false,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function renderAuditLoadMore(context) {
|
|
57
|
+
return context.ui.render(SCHEMA_UI_BUTTON, {
|
|
58
|
+
loading: context.auditState.loadingMore,
|
|
59
|
+
disabled: context.auditState.loadingMore,
|
|
60
|
+
onClick() {
|
|
61
|
+
void context.loadMore?.();
|
|
62
|
+
},
|
|
63
|
+
}, {
|
|
64
|
+
default: () => (context.auditState.loadingMore ? '加载中...' : '加载更多'),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/adapter/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC1F,OAAO,EACH,uBAAuB,GAG1B,MAAM,qBAAqB,CAAA;AAI5B,MAAM,UAAU,kBAAkB,CAAC,OAAyD;IACxF,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CACpB,gBAAgB,EAChB;QACI,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,OAAO;YACH,KAAK,OAAO,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,0BAA0B,EAAE,EAAE;KACjC,EACD;QACI,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;KACxB,CACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuD;IACpF,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAA;IAEhC,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CACpB,gBAAgB,EAChB;QACI,UAAU,EAAE,KAAK,CAAC,IAAI;QACtB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,mBAAmB;QACzB,YAAY,EAAE,IAAI;QAClB,qBAAqB,CAAC,KAAc;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAA;YACrB,CAAC;QACL,CAAC;QACD,wBAAwB,EAAE,EAAE;KAC/B,EACD;QACI,OAAO,EAAE,GAAG,EAAE,CACV,uBAAuB,CAAC,OAAO,EAAE;YAC7B,aAAa,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAChD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;YACtE,cAAc,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;SACrD,CAAC;KACT,CACJ,CAAA;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuD;IAC/E,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CACpB,gBAAgB,EAChB;QACI,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;QACnC,OAAO;YACH,KAAK,OAAO,CAAC,OAAO,EAAE,EAAE,CAAA;QAC5B,CAAC;KACJ,EACD;QACI,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;KACtB,CACJ,CAAA;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAuD,EAAE,OAAe;IAC9F,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE;QACtC,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAA;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAuD;IAChF,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CACpB,gBAAgB,EAChB;QACI,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;QACvC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;QACxC,OAAO;YACH,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QAC7B,CAAC;KACJ,EACD;QACI,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;KACtE,CACJ,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type VNodeChild } from 'vue';
|
|
2
|
+
import type { ElementPlusContainer, ElementPlusUiContext } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 使用 Element Plus 外壳渲染单个顶层容器。
|
|
5
|
+
*
|
|
6
|
+
* `context.kind` 决定 page、form、search、table 容器的外壳策略。
|
|
7
|
+
* `context.children` 是渲染器层已经完成渲染的最终子节点树。
|
|
8
|
+
*/
|
|
9
|
+
export declare function renderContainer(context: ElementPlusContainer & ElementPlusUiContext): import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* 保持外壳帮助内容和主体内容的稳定数组结构。
|
|
14
|
+
*
|
|
15
|
+
* 外壳没有帮助节点时 `help` 可以为空。
|
|
16
|
+
* `children` 应该已经由调用方完成渲染。
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderShellContent(help: VNodeChild | undefined, children: VNodeChild): VNodeChild;
|
|
19
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/adapter/container.ts"],"names":[],"mappings":"AAMA,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AAExC,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEzE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB;;GA8BnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEjG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { getErrorMessage, SCHEMA_UI_ALERT, SCHEMA_UI_BUTTON, SCHEMA_UI_FORM } from '@sparqjs/schema-core';
|
|
2
|
+
import { renderSearchOperationStructure, renderTableContainerStructure, resolveSearchItemsStructure, } from '@sparqjs/schema-vue';
|
|
3
|
+
import { h } from 'vue';
|
|
4
|
+
import { renderAutoGrid } from './layout';
|
|
5
|
+
/**
|
|
6
|
+
* 使用 Element Plus 外壳渲染单个顶层容器。
|
|
7
|
+
*
|
|
8
|
+
* `context.kind` 决定 page、form、search、table 容器的外壳策略。
|
|
9
|
+
* `context.children` 是渲染器层已经完成渲染的最终子节点树。
|
|
10
|
+
*/
|
|
11
|
+
export function renderContainer(context) {
|
|
12
|
+
const body = renderContainerBody(context);
|
|
13
|
+
const children = [renderHeader(context.title, context.helpNode), renderContainerContent(context, body)];
|
|
14
|
+
const props = {
|
|
15
|
+
...context.props,
|
|
16
|
+
class: ['sparq-view-container', `sparq-view-container--${context.kind}`, context.props?.class],
|
|
17
|
+
'data-sparq-element-plus-container': context.kind,
|
|
18
|
+
'data-container-kind': context.kind,
|
|
19
|
+
};
|
|
20
|
+
if (context.kind === 'form' || context.kind === 'search') {
|
|
21
|
+
return h(resolveContainerTag(context.kind), props, [
|
|
22
|
+
renderHeader(context.title, context.helpNode),
|
|
23
|
+
context.ui.render(SCHEMA_UI_FORM, {
|
|
24
|
+
model: context.form?.values,
|
|
25
|
+
...context.props,
|
|
26
|
+
'data-sparq-form': context.kind,
|
|
27
|
+
'data-sparq-element-plus-form': context.kind,
|
|
28
|
+
}, {
|
|
29
|
+
default: () => renderFormChildren(context, body),
|
|
30
|
+
}),
|
|
31
|
+
context.footer,
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
return h(resolveContainerTag(context.kind), props, children);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 保持外壳帮助内容和主体内容的稳定数组结构。
|
|
38
|
+
*
|
|
39
|
+
* 外壳没有帮助节点时 `help` 可以为空。
|
|
40
|
+
* `children` 应该已经由调用方完成渲染。
|
|
41
|
+
*/
|
|
42
|
+
export function renderShellContent(help, children) {
|
|
43
|
+
return [help, children];
|
|
44
|
+
}
|
|
45
|
+
function renderContainerContent(context, body) {
|
|
46
|
+
if (context.kind !== 'table') {
|
|
47
|
+
return body;
|
|
48
|
+
}
|
|
49
|
+
return renderTableContainerStructure(context.children, context.ui);
|
|
50
|
+
}
|
|
51
|
+
function renderContainerBody(context) {
|
|
52
|
+
if (context.state.status === 'loading') {
|
|
53
|
+
return h('div', { role: 'status', 'aria-live': 'polite', 'data-sparq-schema-loading': '' }, 'Loading schema...');
|
|
54
|
+
}
|
|
55
|
+
if (context.state.status === 'error') {
|
|
56
|
+
return context.ui.render(SCHEMA_UI_ALERT, {
|
|
57
|
+
type: 'error',
|
|
58
|
+
title: getErrorMessage(context.state.error, String(context.children || 'Failed to load schema.')),
|
|
59
|
+
showIcon: true,
|
|
60
|
+
closable: false,
|
|
61
|
+
'data-sparq-schema-error': '',
|
|
62
|
+
}, context.retry
|
|
63
|
+
? {
|
|
64
|
+
default: () => context.ui.render(SCHEMA_UI_BUTTON, { size: 'small', onClick: context.retry, 'data-sparq-schema-retry': '' }, { default: () => '重试' }),
|
|
65
|
+
}
|
|
66
|
+
: undefined);
|
|
67
|
+
}
|
|
68
|
+
const searchOperation = context.kind === 'search' ? renderSearchOperationStructure(context.children) : undefined;
|
|
69
|
+
return renderAutoGrid(context.layout, searchOperation
|
|
70
|
+
? [
|
|
71
|
+
...(context.items ?? []),
|
|
72
|
+
{
|
|
73
|
+
span: 6,
|
|
74
|
+
content: searchOperation,
|
|
75
|
+
},
|
|
76
|
+
]
|
|
77
|
+
: context.items, context.kind === 'search' ? resolveSearchItemsStructure(context.children) : context.children, context.ui);
|
|
78
|
+
}
|
|
79
|
+
function renderFormChildren(context, body) {
|
|
80
|
+
const state = renderFormState(context);
|
|
81
|
+
return state ? [state, body] : body;
|
|
82
|
+
}
|
|
83
|
+
function renderFormState(context) {
|
|
84
|
+
if (context.kind !== 'form') {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
if (context.controller?.page.formLoading) {
|
|
88
|
+
return h('div', {
|
|
89
|
+
'data-sparq-element-plus-form-loading': '',
|
|
90
|
+
}, 'Loading...');
|
|
91
|
+
}
|
|
92
|
+
if (context.controller?.page.formError) {
|
|
93
|
+
return context.ui.render(SCHEMA_UI_ALERT, {
|
|
94
|
+
type: 'error',
|
|
95
|
+
title: getErrorMessage(context.controller.page.formError, 'Failed to load form data.'),
|
|
96
|
+
showIcon: true,
|
|
97
|
+
closable: false,
|
|
98
|
+
'data-sparq-element-plus-form-error': '',
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
function resolveContainerTag(kind) {
|
|
104
|
+
return kind === 'page' ? 'section' : 'div';
|
|
105
|
+
}
|
|
106
|
+
function renderHeader(title, help) {
|
|
107
|
+
if (!title && !help) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return h('header', {
|
|
111
|
+
'data-slot': 'header',
|
|
112
|
+
}, [title ? h('h3', title) : undefined, help]);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/adapter/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type UiKit } from '@sparqjs/schema-vue';
|
|
2
|
+
import type { VNodeChild } from 'vue';
|
|
3
|
+
import type { ElementPlusUiContext } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* 合并内置 Element Plus UI 组件集和调用方注入的 UI 组件集。
|
|
6
|
+
*
|
|
7
|
+
* `defaultUiKit` 提供适配器默认组件。
|
|
8
|
+
* `context.ui` 符合 UiKit 契约时可以覆盖指定组件。
|
|
9
|
+
*/
|
|
10
|
+
export declare function withElementPlusUiKit<T extends {
|
|
11
|
+
ui?: unknown;
|
|
12
|
+
}>(defaultUiKit: UiKit, context: T): T & ElementPlusUiContext;
|
|
13
|
+
/**
|
|
14
|
+
* 传入原生 `h()` 调用前移除空 children。
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeLayoutChildren(children: VNodeChild): Exclude<VNodeChild, null | boolean | void> | undefined;
|
|
17
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/adapter/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEnD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,CAAC,GACX,CAAC,GAAG,oBAAoB,CAO1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,CAMxD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { mergeUiKit } from '@sparqjs/schema-vue';
|
|
2
|
+
/**
|
|
3
|
+
* 合并内置 Element Plus UI 组件集和调用方注入的 UI 组件集。
|
|
4
|
+
*
|
|
5
|
+
* `defaultUiKit` 提供适配器默认组件。
|
|
6
|
+
* `context.ui` 符合 UiKit 契约时可以覆盖指定组件。
|
|
7
|
+
*/
|
|
8
|
+
export function withElementPlusUiKit(defaultUiKit, context) {
|
|
9
|
+
const externalUi = isUiKit(context.ui) ? context.ui : undefined;
|
|
10
|
+
return {
|
|
11
|
+
...context,
|
|
12
|
+
ui: externalUi ? mergeUiKit(defaultUiKit, externalUi) : defaultUiKit,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 传入原生 `h()` 调用前移除空 children。
|
|
17
|
+
*/
|
|
18
|
+
export function normalizeLayoutChildren(children) {
|
|
19
|
+
if (children === null || children === undefined || typeof children === 'boolean') {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return children;
|
|
23
|
+
}
|
|
24
|
+
function isUiKit(value) {
|
|
25
|
+
return (typeof value === 'object' &&
|
|
26
|
+
value !== null &&
|
|
27
|
+
typeof value.render === 'function' &&
|
|
28
|
+
typeof value.get === 'function');
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/adapter/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,qBAAqB,CAAA;AAI5D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAChC,YAAmB,EACnB,OAAU;IAEV,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAE/D,OAAO;QACH,GAAG,OAAO;QACV,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY;KACvE,CAAA;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACnC,QAAoB;IAEpB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO,QAAsD,CAAA;AACjE,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC3B,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAe,CAAC,MAAM,KAAK,UAAU;QAC7C,OAAQ,KAAe,CAAC,GAAG,KAAK,UAAU,CAC7C,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type SchemaSearchItemContext, type SchemaTableFilterContext } from '@sparqjs/schema-vue';
|
|
2
|
+
import { type VNode, type VNodeChild } from 'vue';
|
|
3
|
+
import type { ElementPlusControlInput, ElementPlusFieldBinding, ElementPlusFieldContext, ElementPlusFieldNode, ElementPlusFieldRendererContext, ElementPlusUiContext } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* 渲染详情模式下的单个字段。
|
|
6
|
+
*
|
|
7
|
+
* 渲染器提供自定义内容时优先使用 `context.contentNode`。
|
|
8
|
+
* `context.binding` 作为兜底值来源。
|
|
9
|
+
*/
|
|
10
|
+
export declare function renderDetailField(context: ElementPlusFieldContext): VNodeChild;
|
|
11
|
+
/**
|
|
12
|
+
* 渲染字段节点对应的输入控件。
|
|
13
|
+
*
|
|
14
|
+
* `context.node` 提供组件 key、字段 schema 和数据源。
|
|
15
|
+
* `context.disabled` 和 `context.readonly` 存在时会覆盖字段 schema 标记。
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderFieldContent(context: ElementPlusFieldRendererContext): VNodeChild;
|
|
18
|
+
/**
|
|
19
|
+
* 构建搜索项使用的表单绑定对象。
|
|
20
|
+
*/
|
|
21
|
+
export declare function createSearchItemBinding(context: SchemaSearchItemContext): ElementPlusFieldBinding;
|
|
22
|
+
/**
|
|
23
|
+
* 构建表格筛选项使用的表单绑定对象。
|
|
24
|
+
*
|
|
25
|
+
* `context.filter.field` 可能为空,因此返回的回调必须保持空操作安全。
|
|
26
|
+
*/
|
|
27
|
+
export declare function createTableFilterBinding(context: SchemaTableFilterContext): ElementPlusFieldBinding;
|
|
28
|
+
/**
|
|
29
|
+
* 解析字段节点的可见标签。
|
|
30
|
+
*
|
|
31
|
+
* `raw.title` 优先于 `fieldSchema.label`,最后回退到字段名。
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveFieldLabel(node: ElementPlusFieldNode): string | undefined;
|
|
34
|
+
/** 将字段标题与可聚焦的补充提示组合为统一标签内容。 */
|
|
35
|
+
export declare function renderFieldLabel(context: ElementPlusFieldContext): string | VNode | undefined;
|
|
36
|
+
/** 为 UI adapter 内的自定义字段控件复用标题提示交互。 */
|
|
37
|
+
export declare function renderFieldLabelContent(label: string | undefined, tip?: string, fieldId?: string): string | VNode | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* 根据标准化字段输入渲染一个 Element Plus 控件。
|
|
40
|
+
*
|
|
41
|
+
* `input` 携带组件 key、绑定、字段 schema 和可选数据源。
|
|
42
|
+
*/
|
|
43
|
+
export declare function renderControl(context: ElementPlusUiContext, input: ElementPlusControlInput): VNodeChild;
|
|
44
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/adapter/field.ts"],"names":[],"mappings":"AAoDA,OAAO,EAAsB,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAGrH,OAAO,EAAqB,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AACpE,OAAO,KAAK,EACR,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAK/B,oBAAoB,EACvB,MAAM,SAAS,CAAA;AAEhB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CA6B9E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,+BAA+B,GAAG,UAAU,CAcvF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CAoCjG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,wBAAwB,GAAG,uBAAuB,CA2CnG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAEhF;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAG7F;AAED,sCAAsC;AACtC,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,KAAK,GAAG,SAAS,CA+B5B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,uBAAuB,GAAG,UAAU,CAuIvG"}
|