@aplus-frontend/ui 7.19.0-beta.1 → 7.19.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/es/src/ag-grid/context.mjs +1 -1
- package/es/src/ag-grid/editable/form-item.vue.d.ts +2 -4
- package/es/src/ag-grid/editable/form-item.vue.mjs +88 -77
- package/es/src/ag-grid/editable/index.vue.d.ts +2 -4
- package/es/src/ag-grid/editable/index.vue.mjs +9 -8
- package/es/src/ag-grid/editable/interface.d.ts +15 -1
- package/es/src/ag-grid/hooks/use-columns.mjs +31 -23
- package/es/src/ag-grid/hooks/use-pinned-row.mjs +2 -2
- package/es/src/ag-grid/index.vue.d.ts +2 -4
- package/es/src/ag-grid/index.vue.mjs +353 -335
- package/es/src/ag-grid/interface.d.ts +40 -1
- package/es/src/ag-grid/utils.d.ts +18 -0
- package/es/src/ag-grid/utils.mjs +39 -18
- package/es/src/ap-field/cascader/use-options.d.ts +4 -4
- package/es/src/ap-field/date/index.vue.d.ts +0 -1
- package/es/src/ap-field/date-range/index.vue.d.ts +0 -1
- package/es/src/ap-field/select/use-select-options.d.ts +2 -2
- package/es/src/ap-field/text/password.vue.d.ts +4 -4
- package/es/src/ap-field/tree-select/use-request.d.ts +4 -4
- package/es/src/ap-form/ap-form.vue.d.ts +1 -2
- package/es/src/ap-form/ap-form.vue2.mjs +63 -61
- package/es/src/ap-form/context.mjs +1 -1
- package/es/src/ap-form/drawer-form/index.vue.d.ts +3 -4
- package/es/src/ap-form/interface.d.ts +4 -0
- package/es/src/ap-form/item/index.vue.d.ts +6 -6
- package/es/src/ap-form/item-group/helper.mjs +2 -2
- package/es/src/ap-form/items/date/index.vue.d.ts +9 -11
- package/es/src/ap-form/items/date-range/index.vue.d.ts +13 -15
- package/es/src/ap-form/items/number/index.vue.d.ts +2 -3
- package/es/src/ap-form/items/select/index.vue.d.ts +8 -8
- package/es/src/ap-form/modal-form/index.vue.d.ts +3 -4
- package/es/src/ap-form/provider/context.mjs +1 -1
- package/es/src/ap-form/search-form/index.vue.d.ts +3 -4
- package/es/src/ap-grid/editable/form-item.vue.d.ts +2 -4
- package/es/src/ap-grid/editable/index.vue.d.ts +2 -4
- package/es/src/ap-grid/index.vue.d.ts +2 -4
- package/es/src/ap-grid/utils/table.mjs +2 -2
- package/es/src/ap-list/index.vue.d.ts +2 -4
- package/es/src/ap-modal/utils/confirm.d.ts +1 -1
- package/es/src/ap-pro-card/components/card/index.vue2.mjs +2 -2
- package/es/src/ap-table/ap-table.vue.d.ts +2 -4
- package/es/src/ap-table/components/setting/context.d.ts +1 -1
- package/es/src/ap-table/components/setting/context.mjs +1 -1
- package/es/src/ap-table/components/setting/modal/index.vue.mjs +127 -117
- package/es/src/ap-table/components/setting/sorter/context.mjs +1 -1
- package/es/src/ap-table/components/setting/template/edit-form.vue.d.ts +2 -3
- package/es/src/ap-table/constants.d.ts +20 -22
- package/es/src/ap-table/context.mjs +1 -1
- package/es/src/ap-table/hooks/use-table-paging-ng.mjs +9 -9
- package/es/src/ap-table/hooks/use-table-template-storage.d.ts +9 -9
- package/es/src/ap-table/hooks/use-table-template-storage.mjs +102 -95
- package/es/src/ap-table/utils.mjs +1 -1
- package/es/src/business/ag-grid-modal/hooks/use-ag-grid-instance.mjs +1 -1
- package/es/src/business/ap-batch-action-group/index.d.ts +3 -3
- package/es/src/business/ap-download/hooks/index.mjs +1 -1
- package/es/src/business/ap-draggable-grid/ApDraggableGrid.vue.d.ts +1 -1
- package/es/src/business/ap-draggable-grid/ApDraggableGrid.vue2.mjs +1 -3
- package/es/src/business/ap-draggable-grid/index.d.ts +1 -1
- package/es/src/business/ap-expand-alert/ApExpandAlert.vue.d.ts +2 -4
- package/es/src/business/ap-keep-alive/hook.mjs +1 -1
- package/es/src/business/ap-keep-alive/utils.mjs +1 -1
- package/es/src/business/ap-select-layout/index.d.ts +2 -4
- package/es/src/business/ap-select-layout/select-layout.vue.d.ts +2 -4
- package/es/src/business/ap-table-modal/index.d.ts +17 -5
- package/es/src/business/ap-upload/components/MultipleFile.vue.d.ts +1 -1
- package/es/src/business/ap-upload/components/MultipleFile.vue2.mjs +128 -112
- package/es/src/business/ap-value-select-card/index.vue.d.ts +2 -4
- package/es/src/business/ap-view/ap-view.vue.d.ts +1 -1
- package/es/src/business/ap-view/ap-view.vue2.mjs +87 -81
- package/es/src/business/ap-view/components/main-button-content.vue.d.ts +2 -3
- package/es/src/business/ap-view/components/menu-list-content.vue.d.ts +2 -3
- package/es/src/business/ap-view/hooks/use-send-to-url.d.ts +2 -0
- package/es/src/business/ap-view/hooks/use-send-to-url.mjs +46 -30
- package/es/src/business/ap-view/hooks/use-view-provide.mjs +1 -1
- package/es/src/business/ap-view/index.d.ts +3 -3
- package/es/src/business/ap-view/interface.d.ts +7 -1
- package/es/src/check-card/context.mjs +1 -1
- package/es/src/config-provider/constants.mjs +1 -1
- package/es/src/config-provider/hooks/use-locale.mjs +1 -1
- package/es/src/config-provider/hooks/use-namespace.d.ts +5 -1
- package/es/src/config-provider/hooks/use-namespace.mjs +1 -1
- package/es/src/config-provider/hooks/use-token.mjs +1 -1
- package/es/src/editable-table/form-item.vue.d.ts +2 -4
- package/es/src/editable-table/index.vue.d.ts +2 -4
- package/es/src/editable-table/utils.mjs +1 -1
- package/es/src/scroll-view/index.vue.d.ts +5 -5
- package/es/src/tests/wrapper.d.ts +4 -4
- package/es/src/text/context.mjs +1 -1
- package/es/src/time-ago/useTimeAgo.mjs +1 -1
- package/es/src/type.d.ts +1 -0
- package/es/src/utils/slot.mjs +1 -1
- package/es/src/version.d.ts +1 -1
- package/es/src/version.mjs +1 -1
- package/lib/src/ag-grid/editable/form-item.vue.d.ts +2 -4
- package/lib/src/ag-grid/editable/form-item.vue.js +1 -1
- package/lib/src/ag-grid/editable/index.vue.d.ts +2 -4
- package/lib/src/ag-grid/editable/index.vue.js +1 -1
- package/lib/src/ag-grid/editable/interface.d.ts +15 -1
- package/lib/src/ag-grid/hooks/use-columns.js +1 -1
- package/lib/src/ag-grid/hooks/use-pinned-row.js +1 -1
- package/lib/src/ag-grid/index.vue.d.ts +2 -4
- package/lib/src/ag-grid/index.vue.js +1 -1
- package/lib/src/ag-grid/interface.d.ts +40 -1
- package/lib/src/ag-grid/utils.d.ts +18 -0
- package/lib/src/ag-grid/utils.js +1 -1
- package/lib/src/ap-field/cascader/use-options.d.ts +4 -4
- package/lib/src/ap-field/date/index.vue.d.ts +0 -1
- package/lib/src/ap-field/date-range/index.vue.d.ts +0 -1
- package/lib/src/ap-field/select/use-select-options.d.ts +2 -2
- package/lib/src/ap-field/text/password.vue.d.ts +4 -4
- package/lib/src/ap-field/tree-select/use-request.d.ts +4 -4
- package/lib/src/ap-form/ap-form.vue.d.ts +1 -2
- package/lib/src/ap-form/ap-form.vue2.js +1 -1
- package/lib/src/ap-form/drawer-form/index.vue.d.ts +3 -4
- package/lib/src/ap-form/interface.d.ts +4 -0
- package/lib/src/ap-form/item/index.vue.d.ts +6 -6
- package/lib/src/ap-form/items/date/index.vue.d.ts +9 -11
- package/lib/src/ap-form/items/date-range/index.vue.d.ts +13 -15
- package/lib/src/ap-form/items/number/index.vue.d.ts +2 -3
- package/lib/src/ap-form/items/select/index.vue.d.ts +8 -8
- package/lib/src/ap-form/modal-form/index.vue.d.ts +3 -4
- package/lib/src/ap-form/search-form/index.vue.d.ts +3 -4
- package/lib/src/ap-grid/editable/form-item.vue.d.ts +2 -4
- package/lib/src/ap-grid/editable/index.vue.d.ts +2 -4
- package/lib/src/ap-grid/index.vue.d.ts +2 -4
- package/lib/src/ap-grid/utils/table.js +1 -1
- package/lib/src/ap-list/index.vue.d.ts +2 -4
- package/lib/src/ap-modal/utils/confirm.d.ts +1 -1
- package/lib/src/ap-table/ap-table.vue.d.ts +2 -4
- package/lib/src/ap-table/components/setting/context.d.ts +1 -1
- package/lib/src/ap-table/components/setting/modal/index.vue.js +1 -1
- package/lib/src/ap-table/components/setting/template/edit-form.vue.d.ts +2 -3
- package/lib/src/ap-table/constants.d.ts +20 -22
- package/lib/src/ap-table/hooks/use-table-paging-ng.js +1 -1
- package/lib/src/ap-table/hooks/use-table-template-storage.d.ts +9 -9
- package/lib/src/ap-table/hooks/use-table-template-storage.js +1 -1
- package/lib/src/business/ap-batch-action-group/index.d.ts +3 -3
- package/lib/src/business/ap-draggable-grid/ApDraggableGrid.vue.d.ts +1 -1
- package/lib/src/business/ap-draggable-grid/ApDraggableGrid.vue2.js +1 -1
- package/lib/src/business/ap-draggable-grid/index.d.ts +1 -1
- package/lib/src/business/ap-expand-alert/ApExpandAlert.vue.d.ts +2 -4
- package/lib/src/business/ap-select-layout/index.d.ts +2 -4
- package/lib/src/business/ap-select-layout/select-layout.vue.d.ts +2 -4
- package/lib/src/business/ap-table-modal/index.d.ts +17 -5
- package/lib/src/business/ap-upload/components/MultipleFile.vue.d.ts +1 -1
- package/lib/src/business/ap-upload/components/MultipleFile.vue2.js +1 -1
- package/lib/src/business/ap-value-select-card/index.vue.d.ts +2 -4
- package/lib/src/business/ap-view/ap-view.vue.d.ts +1 -1
- package/lib/src/business/ap-view/ap-view.vue2.js +1 -1
- package/lib/src/business/ap-view/components/main-button-content.vue.d.ts +2 -3
- package/lib/src/business/ap-view/components/menu-list-content.vue.d.ts +2 -3
- package/lib/src/business/ap-view/hooks/use-send-to-url.d.ts +2 -0
- package/lib/src/business/ap-view/hooks/use-send-to-url.js +1 -1
- package/lib/src/business/ap-view/index.d.ts +3 -3
- package/lib/src/business/ap-view/interface.d.ts +7 -1
- package/lib/src/config-provider/hooks/use-namespace.d.ts +5 -1
- package/lib/src/editable-table/form-item.vue.d.ts +2 -4
- package/lib/src/editable-table/index.vue.d.ts +2 -4
- package/lib/src/scroll-view/index.vue.d.ts +5 -5
- package/lib/src/tests/wrapper.d.ts +4 -4
- package/lib/src/time-ago/useTimeAgo.js +1 -1
- package/lib/src/type.d.ts +1 -0
- package/lib/src/version.d.ts +1 -1
- package/lib/src/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as fe, ref as g, computed as U, watch as z, toRef as de, useSlots as ve, createVNode as l, cloneVNode as ge, unref as e, createElementBlock as E, openBlock as T, Fragment as ye, createBlock as B, createCommentVNode as j, resolveDynamicComponent as N, withCtx as s, withDirectives as Se, createElementVNode as m, normalizeClass as u, toDisplayString as y, createTextVNode as x, isRef as he, vShow as Te } from "vue";
|
|
2
2
|
import { SettingOutlined as Ce, SaveOutlined as be } from "@ant-design/icons-vue";
|
|
3
|
-
import { Button as F, Modal as
|
|
3
|
+
import { Button as F, Modal as ke, Divider as $, RadioGroup as _e, RadioButton as M, Flex as ze, Space as q, Popover as xe } from "@aplus-frontend/antdv";
|
|
4
4
|
import "../../../../ap-button/index.mjs";
|
|
5
|
-
import { randomStr as
|
|
5
|
+
import { randomStr as Ae } from "../../../../utils/index.mjs";
|
|
6
6
|
import "../../../../config-provider/index.mjs";
|
|
7
|
-
import { getSingleVNode as
|
|
8
|
-
import { useInjectApTable as
|
|
9
|
-
import { useTableColumnState as
|
|
10
|
-
import { useTableTemplateStorage as
|
|
11
|
-
import
|
|
12
|
-
import { useProvideApColumnSetting as
|
|
7
|
+
import { getSingleVNode as we } from "../../../../utils/slot.mjs";
|
|
8
|
+
import { useInjectApTable as Ke } from "../../../context.mjs";
|
|
9
|
+
import { useTableColumnState as Be } from "../../../hooks/use-table-column-state.mjs";
|
|
10
|
+
import { useTableTemplateStorage as Ne } from "../../../hooks/use-table-template-storage.mjs";
|
|
11
|
+
import $e from "../../../style/setting.mjs";
|
|
12
|
+
import { useProvideApColumnSetting as Ie } from "../context.mjs";
|
|
13
13
|
import "../sorter/index.vue.mjs";
|
|
14
14
|
import "../template/edit-form.vue.mjs";
|
|
15
15
|
import "../template/index.vue.mjs";
|
|
16
16
|
import "../tree-select/index.vue.mjs";
|
|
17
|
-
import
|
|
18
|
-
import { useLocale as
|
|
17
|
+
import Re, { customCloneColumnStates as I, isEqualColumnStateIgnoreLabel as Ve } from "../utils.mjs";
|
|
18
|
+
import { useLocale as De } from "../../../../config-provider/hooks/use-locale.mjs";
|
|
19
19
|
import { useNamespace as G } from "../../../../config-provider/hooks/use-namespace.mjs";
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
const
|
|
20
|
+
import Le from "../template/index.vue2.mjs";
|
|
21
|
+
import Oe from "../tree-select/index.vue2.mjs";
|
|
22
|
+
import Pe from "../sorter/index.vue2.mjs";
|
|
23
|
+
import Ue from "../../../../ap-button/ap-button.vue.mjs";
|
|
24
|
+
import Ee from "../template/edit-form.vue2.mjs";
|
|
25
|
+
const je = {
|
|
26
26
|
style: {
|
|
27
27
|
"padding-inline": "8px"
|
|
28
28
|
}
|
|
29
|
-
},
|
|
29
|
+
}, ft = /* @__PURE__ */ fe({
|
|
30
30
|
name: "ApTableSetting",
|
|
31
31
|
__name: "index",
|
|
32
32
|
props: {
|
|
@@ -41,120 +41,130 @@ const Ee = {
|
|
|
41
41
|
columnsBackup: J,
|
|
42
42
|
updateSize: Q,
|
|
43
43
|
updateColumns: W
|
|
44
|
-
} =
|
|
44
|
+
} = Ke(), f = g(), C = U(() => c.config.persistenceKey), b = g(!1), {
|
|
45
45
|
basicTemplate: X,
|
|
46
|
-
customizeTemplateList:
|
|
46
|
+
customizeTemplateList: S,
|
|
47
47
|
addTemplate: Y,
|
|
48
|
-
deleteTemplate:
|
|
48
|
+
deleteTemplate: R,
|
|
49
49
|
updateTemplate: Z
|
|
50
|
-
} =
|
|
50
|
+
} = Ne(c.config, C, pe), {
|
|
51
51
|
columnState: p,
|
|
52
|
-
setColumnState:
|
|
52
|
+
setColumnState: V,
|
|
53
53
|
isAllSelected: ee,
|
|
54
54
|
toggleSelectAll: te
|
|
55
|
-
} =
|
|
55
|
+
} = Be([]), k = U(() => C.value && `${C.value}__active_key`);
|
|
56
56
|
function D(a) {
|
|
57
|
-
localStorage.setItem(
|
|
57
|
+
k.value && localStorage.setItem(k.value, a);
|
|
58
58
|
}
|
|
59
|
-
function
|
|
60
|
-
|
|
59
|
+
function A() {
|
|
60
|
+
if (k.value)
|
|
61
|
+
return localStorage.getItem(k.value);
|
|
61
62
|
}
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const o = g(c.config.defaultActiveKey ?? A());
|
|
64
|
+
z(() => S.value, (a) => {
|
|
65
|
+
a.length && !o.value && (o.value = a[0]?.key);
|
|
66
|
+
}, {
|
|
67
|
+
immediate: !0
|
|
68
|
+
}), Ie({
|
|
69
|
+
activeKey: o,
|
|
70
|
+
cacheConfig: de(c, "config"),
|
|
66
71
|
deleteTemplate: ue
|
|
67
72
|
});
|
|
68
73
|
const {
|
|
69
74
|
t: r
|
|
70
|
-
} =
|
|
75
|
+
} = De(), {
|
|
71
76
|
b: v,
|
|
72
|
-
be:
|
|
77
|
+
be: _
|
|
73
78
|
} = G("ap-column-setting"), {
|
|
74
79
|
b: ae
|
|
75
|
-
} = G("ap-table"),
|
|
76
|
-
icon:
|
|
80
|
+
} = G("ap-table"), ne = $e("ap-column-setting"), h = g(!1), L = g(!1), le = ve(), O = we(le.trigger) || l(F, {
|
|
81
|
+
icon: l(Ce, null, null),
|
|
77
82
|
class: ae("setting-trigger-button")
|
|
78
|
-
}, null), P = O ?
|
|
83
|
+
}, null), P = O ? ge(O, {
|
|
79
84
|
onClick: () => {
|
|
80
|
-
|
|
85
|
+
h.value = !0;
|
|
81
86
|
}
|
|
82
87
|
}) : null;
|
|
83
88
|
function oe() {
|
|
84
|
-
|
|
89
|
+
V(I(e(X).columnState));
|
|
85
90
|
}
|
|
86
|
-
function
|
|
87
|
-
W?.(
|
|
91
|
+
function w(a, t) {
|
|
92
|
+
W?.(Re(e(J), a)), Q?.(t);
|
|
88
93
|
}
|
|
89
94
|
function ie() {
|
|
90
|
-
|
|
91
|
-
const a =
|
|
95
|
+
w(e(p), e(f)), h.value = !1;
|
|
96
|
+
const a = I(p.value), t = Z(o.value, {
|
|
92
97
|
columnState: a,
|
|
93
98
|
size: f.value
|
|
94
99
|
});
|
|
95
|
-
D(
|
|
100
|
+
D(o.value), c.config?.onChange?.(a, t);
|
|
96
101
|
}
|
|
97
102
|
function se(a) {
|
|
98
|
-
const t = c.config.getActiveKey?.(a) ??
|
|
103
|
+
const t = c.config.getActiveKey?.(a) ?? Ae(), n = {
|
|
99
104
|
key: t,
|
|
100
105
|
label: a,
|
|
101
106
|
columnState: p.value,
|
|
102
107
|
size: f.value
|
|
103
108
|
};
|
|
104
|
-
Y(
|
|
109
|
+
Y(n), b.value = !1, o.value = t, c.config.onChange?.(n.columnState, n);
|
|
105
110
|
}
|
|
106
|
-
function re(a) {
|
|
107
|
-
const
|
|
108
|
-
|
|
111
|
+
function re(a, t) {
|
|
112
|
+
const n = [...t].find((i) => i?.key === a);
|
|
113
|
+
n && (V(I(n.columnState)), f.value = n.size);
|
|
109
114
|
}
|
|
110
115
|
function ue(a) {
|
|
111
|
-
if (a !==
|
|
112
|
-
|
|
116
|
+
if (a !== o.value) {
|
|
117
|
+
R(a);
|
|
113
118
|
return;
|
|
114
119
|
}
|
|
115
|
-
const t =
|
|
116
|
-
|
|
120
|
+
const t = S.value, n = t.findIndex((d) => d.key === a), i = t[n + 1]?.key ?? t[n - 1]?.key;
|
|
121
|
+
R(a), o.value = i, D(i);
|
|
117
122
|
}
|
|
118
123
|
function ce(a) {
|
|
119
124
|
if (L.value = a, !a) {
|
|
120
|
-
const t =
|
|
121
|
-
t && t !==
|
|
125
|
+
const t = A();
|
|
126
|
+
t && t !== o.value && (o.value = t);
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
129
|
function pe(a) {
|
|
125
|
-
const t =
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
|
|
130
|
+
const t = A() ?? a[0].key;
|
|
131
|
+
o.value = t;
|
|
132
|
+
const n = [...a].find((i) => i?.key === t);
|
|
133
|
+
n && w(n.columnState, n.size);
|
|
129
134
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
z(
|
|
136
|
+
[o, S],
|
|
137
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
138
|
+
([a, t], [n, i]) => {
|
|
139
|
+
if (t.length && !i?.length && a) {
|
|
140
|
+
const d = [...t].find((me) => me.key === a);
|
|
141
|
+
if (!d)
|
|
142
|
+
return;
|
|
143
|
+
w(d.columnState, d.size);
|
|
144
|
+
}
|
|
145
|
+
re(a, t);
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
immediate: !0
|
|
136
149
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const x = g(!1);
|
|
142
|
-
return w([f, p, S], ([a, t, l]) => {
|
|
143
|
-
if (!l)
|
|
150
|
+
);
|
|
151
|
+
const K = g(!1);
|
|
152
|
+
return z([f, p, h], ([a, t, n]) => {
|
|
153
|
+
if (!n)
|
|
144
154
|
return;
|
|
145
|
-
const
|
|
146
|
-
|
|
155
|
+
const i = S.value.find((d) => d.key === o.value);
|
|
156
|
+
i && (i.size !== a || !Ve(t, i.columnState)) ? K.value = !0 : K.value = !1;
|
|
147
157
|
}, {
|
|
148
158
|
deep: !0
|
|
149
|
-
}),
|
|
159
|
+
}), z(() => o.value, (a) => {
|
|
150
160
|
c.config.onActiveChange?.(a);
|
|
151
161
|
}, {
|
|
152
162
|
immediate: !0
|
|
153
|
-
}), (a, t) => (T(), E(
|
|
163
|
+
}), (a, t) => (T(), E(ye, null, [e(P) ? (T(), B(N(e(P)), {
|
|
154
164
|
key: 0
|
|
155
|
-
})) : j("", !0),
|
|
156
|
-
open:
|
|
157
|
-
"onUpdate:open": t[4] || (t[4] = (
|
|
165
|
+
})) : j("", !0), l(e(ke), {
|
|
166
|
+
open: h.value,
|
|
167
|
+
"onUpdate:open": t[4] || (t[4] = (n) => h.value = n),
|
|
158
168
|
title: e(r)("ap.apTable.setting.title"),
|
|
159
169
|
width: 1e3,
|
|
160
170
|
centered: !0,
|
|
@@ -163,61 +173,61 @@ const Ee = {
|
|
|
163
173
|
height: "516px"
|
|
164
174
|
},
|
|
165
175
|
"after-open-change": ce,
|
|
166
|
-
"wrap-class-name": `${e(v)()} ${e(
|
|
176
|
+
"wrap-class-name": `${e(v)()} ${e(ne)}`,
|
|
167
177
|
"ok-text": e(r)("ap.apTable.setting.saveAndApply"),
|
|
168
178
|
"mask-closable": !1,
|
|
169
179
|
onOk: ie
|
|
170
180
|
}, {
|
|
171
|
-
footer:
|
|
172
|
-
extra:
|
|
173
|
-
}) => [
|
|
181
|
+
footer: s(({
|
|
182
|
+
extra: n
|
|
183
|
+
}) => [l(e(ze), {
|
|
174
184
|
justify: "space-between"
|
|
175
185
|
}, {
|
|
176
|
-
default:
|
|
186
|
+
default: s(() => [l(e(q), {
|
|
177
187
|
size: 12
|
|
178
188
|
}, {
|
|
179
|
-
default:
|
|
180
|
-
open:
|
|
181
|
-
"onUpdate:open": t[3] || (t[3] = (
|
|
189
|
+
default: s(() => [l(e(xe), {
|
|
190
|
+
open: b.value,
|
|
191
|
+
"onUpdate:open": t[3] || (t[3] = (i) => b.value = i),
|
|
182
192
|
trigger: "click",
|
|
183
193
|
arrow: !1,
|
|
184
194
|
placement: "topLeft",
|
|
185
195
|
"destroy-tooltip-on-hide": ""
|
|
186
196
|
}, {
|
|
187
|
-
content:
|
|
197
|
+
content: s(() => [l(Ee, {
|
|
188
198
|
onConfirm: se,
|
|
189
|
-
onCancel: t[2] || (t[2] = () =>
|
|
199
|
+
onCancel: t[2] || (t[2] = () => b.value = !1)
|
|
190
200
|
})]),
|
|
191
|
-
default:
|
|
201
|
+
default: s(() => [l(e(Ue), {
|
|
192
202
|
type: "borderLink",
|
|
193
203
|
disabled: !a.config.persistenceKey
|
|
194
204
|
}, {
|
|
195
|
-
icon:
|
|
196
|
-
default:
|
|
205
|
+
icon: s(() => [l(e(be))]),
|
|
206
|
+
default: s(() => [x(y(e(r)("ap.apTable.setting.saveAsTemplate")) + " ", 1)]),
|
|
197
207
|
_: 1
|
|
198
208
|
}, 8, ["disabled"])]),
|
|
199
209
|
_: 1
|
|
200
|
-
}, 8, ["open"]),
|
|
210
|
+
}, 8, ["open"]), K.value ? (T(), E("span", {
|
|
201
211
|
key: 0,
|
|
202
212
|
class: u(e(v)("modify-tip"))
|
|
203
213
|
}, y(e(r)("ap.apTable.setting.modifyNotification")), 3)) : j("", !0)]),
|
|
204
214
|
_: 1
|
|
205
|
-
}),
|
|
215
|
+
}), l(e(q), {
|
|
206
216
|
size: 10
|
|
207
217
|
}, {
|
|
208
|
-
default:
|
|
218
|
+
default: s(() => [(T(), B(N(n.cancelBtn))), (T(), B(N(n.okBtn)))]),
|
|
209
219
|
_: 2
|
|
210
220
|
}, 1024)]),
|
|
211
221
|
_: 2
|
|
212
222
|
}, 1024)]),
|
|
213
|
-
default:
|
|
223
|
+
default: s(() => [Se(m("div", {
|
|
214
224
|
class: u(e(v)("wrapper"))
|
|
215
225
|
}, [m("div", {
|
|
216
226
|
class: u(e(v)("left"))
|
|
217
|
-
}, [
|
|
218
|
-
"customize-template-list": e(
|
|
219
|
-
"persistence-key":
|
|
220
|
-
}, null, 8, ["customize-template-list", "persistence-key"])], 2),
|
|
227
|
+
}, [l(Le, {
|
|
228
|
+
"customize-template-list": e(S),
|
|
229
|
+
"persistence-key": C.value
|
|
230
|
+
}, null, 8, ["customize-template-list", "persistence-key"])], 2), l(e($), {
|
|
221
231
|
type: "vertical",
|
|
222
232
|
style: {
|
|
223
233
|
height: "100%",
|
|
@@ -226,43 +236,43 @@ const Ee = {
|
|
|
226
236
|
}), m("div", {
|
|
227
237
|
class: u(e(v)("center"))
|
|
228
238
|
}, [m("div", {
|
|
229
|
-
class: u(e(
|
|
239
|
+
class: u(e(_)("center", "header"))
|
|
230
240
|
}, [m("div", {
|
|
231
|
-
class: u(e(
|
|
241
|
+
class: u(e(_)("center", "tip-wrapper"))
|
|
232
242
|
}, [m("span", {
|
|
233
|
-
class: u(e(
|
|
234
|
-
}, y(e(r)("ap.apTable.setting.selectAllTip")), 3),
|
|
243
|
+
class: u(e(_)("center", "header-tips"))
|
|
244
|
+
}, y(e(r)("ap.apTable.setting.selectAllTip")), 3), l(e(F), {
|
|
235
245
|
type: "link",
|
|
236
246
|
size: "small",
|
|
237
247
|
onClick: e(te)
|
|
238
248
|
}, {
|
|
239
|
-
default:
|
|
249
|
+
default: s(() => [x(y(e(ee) ? e(r)("ap.apTable.setting.unSelectAll") : e(r)("ap.apTable.setting.selectAll")), 1)]),
|
|
240
250
|
_: 1
|
|
241
|
-
}, 8, ["onClick"])], 2),
|
|
251
|
+
}, 8, ["onClick"])], 2), l(e(_e), {
|
|
242
252
|
value: f.value,
|
|
243
|
-
"onUpdate:value": t[0] || (t[0] = (
|
|
253
|
+
"onUpdate:value": t[0] || (t[0] = (n) => f.value = n)
|
|
244
254
|
}, {
|
|
245
|
-
default:
|
|
255
|
+
default: s(() => [l(e(M), {
|
|
246
256
|
value: "small"
|
|
247
257
|
}, {
|
|
248
|
-
default:
|
|
258
|
+
default: s(() => [x(y(e(r)("ap.apTable.setting.sizeSmall")), 1)]),
|
|
249
259
|
_: 1
|
|
250
|
-
}),
|
|
260
|
+
}), l(e(M), {
|
|
251
261
|
value: "middle"
|
|
252
262
|
}, {
|
|
253
|
-
default:
|
|
263
|
+
default: s(() => [x(y(e(r)("ap.apTable.setting.sizeNormal")), 1)]),
|
|
254
264
|
_: 1
|
|
255
265
|
})]),
|
|
256
266
|
_: 1
|
|
257
|
-
}, 8, ["value"])], 2), m("div",
|
|
267
|
+
}, 8, ["value"])], 2), m("div", je, [l(e($), {
|
|
258
268
|
dashed: "",
|
|
259
269
|
style: {
|
|
260
270
|
margin: "0px"
|
|
261
271
|
}
|
|
262
|
-
})]),
|
|
263
|
-
class: u(e(
|
|
272
|
+
})]), l(Oe, {
|
|
273
|
+
class: u(e(_)("center", "content")),
|
|
264
274
|
value: e(p)
|
|
265
|
-
}, null, 8, ["class", "value"])], 2),
|
|
275
|
+
}, null, 8, ["class", "value"])], 2), l(e($), {
|
|
266
276
|
type: "vertical",
|
|
267
277
|
style: {
|
|
268
278
|
height: "100%",
|
|
@@ -270,9 +280,9 @@ const Ee = {
|
|
|
270
280
|
}
|
|
271
281
|
}), m("div", {
|
|
272
282
|
class: u(e(v)("right"))
|
|
273
|
-
}, [
|
|
283
|
+
}, [l(Pe, {
|
|
274
284
|
value: e(p),
|
|
275
|
-
"onUpdate:value": t[1] || (t[1] = (
|
|
285
|
+
"onUpdate:value": t[1] || (t[1] = (n) => he(p) ? p.value = n : null),
|
|
276
286
|
onReset: oe
|
|
277
287
|
}, null, 8, ["value"])], 2)], 2), [[Te, L.value]])]),
|
|
278
288
|
_: 1
|
|
@@ -280,5 +290,5 @@ const Ee = {
|
|
|
280
290
|
}
|
|
281
291
|
});
|
|
282
292
|
export {
|
|
283
|
-
|
|
293
|
+
ft as default
|
|
284
294
|
};
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, ComponentInternalInstance, ExtractPropTypes, PropType, HTMLAttributes, VNodeProps, AllowedComponentProps, ComponentCustomProps, CreateComponentPublicInstanceWithMixins, GlobalComponents, GlobalDirectives, Slot, ComponentPublicInstance, ComponentOptionsBase, DebuggerEvent, nextTick, WatchOptions, WatchStopHandle, ShallowUnwrapRef, ComponentCustomProperties } from 'vue';
|
|
2
2
|
import { ColSize } from '@aplus-frontend/antdv/es/grid';
|
|
3
|
-
import { FormLabelAlign, ValidateMessages, FieldData, ValidateErrorEntity, NamePath,
|
|
3
|
+
import { FormLabelAlign, ValidateMessages, FieldData, ValidateErrorEntity, NamePath, ValidateOptions, InternalNamePath } from '@aplus-frontend/antdv/es/form/interface';
|
|
4
4
|
import { RequiredMark } from '@aplus-frontend/antdv/es/form/Form';
|
|
5
5
|
import { RuleObject } from '@aplus-frontend/antdv/es/form';
|
|
6
6
|
import { Options } from '../../../../../node_modules/scroll-into-view-if-needed';
|
|
7
7
|
import { Recordable } from '../../../../type';
|
|
8
8
|
import { VueTypeDef, VueTypeValidableDef } from '../../../../../node_modules/vue-types';
|
|
9
|
-
import { SizeType } from '@aplus-frontend/antdv/es/config-provider';
|
|
10
9
|
import { SizeType } from '@aplus-frontend/antdv/es/button';
|
|
11
10
|
import { VueNode } from '@aplus-frontend/antdv/es/_util/type';
|
|
12
11
|
import { ApFormProps, UpdateModelOptimizeFn, ApFormInternalInstance, WatchFunc } from '../../../../ap-form';
|
|
@@ -113,7 +112,7 @@ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOp
|
|
|
113
112
|
readonly onValidate?: ((name: string | number | string[] | number[], status: boolean, errors: string[]) => void) | undefined;
|
|
114
113
|
readonly initialValues?: Recordable | undefined;
|
|
115
114
|
readonly onValuesChange?: ((changedValues: Recordable, allValues: Recordable, fieldName: NamePath) => void) | undefined;
|
|
116
|
-
readonly syncToUrl?:
|
|
115
|
+
readonly syncToUrl?: boolean | ((values: Recordable, type: "get" | "set") => Recordable) | undefined;
|
|
117
116
|
readonly syncToUrlPriority?: boolean | undefined;
|
|
118
117
|
readonly autoFocusFirstInput?: boolean | undefined;
|
|
119
118
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
@@ -11,21 +11,19 @@ import { VueNode, CustomSlotsType } from '@aplus-frontend/antdv/es/_util/type';
|
|
|
11
11
|
import { AlignType } from '@aplus-frontend/antdv/es/vc-align/interface';
|
|
12
12
|
import { DateRender } from '@aplus-frontend/antdv/es/vc-picker/panels/DatePanel/DateBody';
|
|
13
13
|
import { MonthCellRender } from '@aplus-frontend/antdv/es/vc-picker/panels/MonthPanel/MonthBody';
|
|
14
|
-
import { PanelMode, RangeValue, OnPanelChange, PresetDate,
|
|
14
|
+
import { PanelMode, RangeValue, OnPanelChange, PresetDate, CustomFormat, DisabledTimes, DisabledTime, PickerMode, EventValue } from '@aplus-frontend/antdv/es/vc-picker/interface';
|
|
15
15
|
import { SharedTimeProps } from '@aplus-frontend/antdv/es/vc-picker/panels/TimePanel';
|
|
16
16
|
import { LiteralUnion, Recordable } from '../type';
|
|
17
17
|
import { ApFormatPresetType } from '../ap-field/date/interface';
|
|
18
|
-
import { DatePickerProps, InputNumberProps, RadioChangeEvent, SelectProps, CheckboxOptionType, CheckboxGroupProps, TreeSelectProps, CascaderProps } from '@aplus-frontend/antdv';
|
|
19
18
|
import { ZoneAlias } from '@aplus-frontend/utils';
|
|
20
|
-
import { SizeType } from '@aplus-frontend/antdv/es/config-provider';
|
|
21
19
|
import { OnCleanup } from '@vue/reactivity';
|
|
22
20
|
import { ApFormItemSlots, ApFormItemTextPassword, ApActionGroupProps, GroupActionTypes } from '..';
|
|
23
21
|
import { RangeDateRender, RangeType, RangeInfo } from '@aplus-frontend/antdv/es/vc-picker/RangePicker';
|
|
24
|
-
import { RangePickerProps } from '@aplus-frontend/antdv/es/date-picker';
|
|
25
22
|
import { ValueType } from '@aplus-frontend/antdv/es/input-number/src/utils/MiniDecimal';
|
|
26
23
|
import { VueTypeValidableDef, VueTypeDef } from '../../node_modules/vue-types';
|
|
27
24
|
import { RadioGroupChildOption } from '@aplus-frontend/antdv/es/radio/Group';
|
|
28
25
|
import { RadioGroupButtonStyle, RadioGroupOptionType } from '@aplus-frontend/antdv/es/radio/interface';
|
|
26
|
+
import { RadioChangeEvent, CheckboxOptionType, TreeSelectProps, CascaderProps } from '@aplus-frontend/antdv';
|
|
29
27
|
import { SelectValue, DefaultOptionType, LabeledValue, BaseOptionType } from '@aplus-frontend/antdv/es/select';
|
|
30
28
|
import { SelectHandler, FieldNames, FilterFunc } from '@aplus-frontend/antdv/es/vc-select/Select';
|
|
31
29
|
import { RenderDOMFunc, CustomTagProps, DropdownRender, DisplayValueType, Placement } from '@aplus-frontend/antdv/es/vc-select/BaseSelect';
|
|
@@ -83,7 +81,7 @@ export declare const apTableFormItemMap: {
|
|
|
83
81
|
readonly onSelect?: ((value: Dayjs) => void) | undefined;
|
|
84
82
|
readonly open?: boolean | undefined;
|
|
85
83
|
readonly disabled?: boolean | undefined;
|
|
86
|
-
readonly direction?:
|
|
84
|
+
readonly direction?: "ltr" | "rtl" | undefined;
|
|
87
85
|
readonly placeholder?: string | undefined;
|
|
88
86
|
readonly id?: string | undefined;
|
|
89
87
|
readonly getPopupContainer?: ((node: HTMLElement) => HTMLElement) | undefined;
|
|
@@ -120,19 +118,19 @@ export declare const apTableFormItemMap: {
|
|
|
120
118
|
readonly showToday?: boolean | undefined;
|
|
121
119
|
readonly showTime?: boolean | SharedTimeProps<Dayjs> | undefined;
|
|
122
120
|
readonly valueFormat?: string | undefined;
|
|
123
|
-
readonly value?:
|
|
121
|
+
readonly value?: number | null | undefined;
|
|
124
122
|
readonly defaultValue?: number | undefined;
|
|
125
123
|
readonly 'onUpdate:value'?: (((ts: number | null) => void) & ((...args: any[]) => any)) | undefined;
|
|
126
124
|
readonly onChange?: ((ts: number | null, dayStr: string) => void) | undefined;
|
|
127
125
|
readonly onOk?: ((ts: number | null) => void) | undefined;
|
|
128
126
|
readonly format?: LiteralUnion<ApFormatPresetType, string> | undefined;
|
|
129
|
-
readonly shownFormat?:
|
|
127
|
+
readonly shownFormat?: string | CustomFormat<Dayjs> | (string | CustomFormat<Dayjs>)[] | undefined;
|
|
130
128
|
readonly formatBegins?: boolean | undefined;
|
|
131
129
|
readonly timezone?: ( ZoneAlias | {
|
|
132
130
|
label?: string;
|
|
133
131
|
value: ZoneAlias;
|
|
134
132
|
}[]) | undefined;
|
|
135
|
-
readonly disabledTime?:
|
|
133
|
+
readonly disabledTime?: ((date: Dayjs) => DisabledTimes) | undefined;
|
|
136
134
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
137
135
|
$attrs: {
|
|
138
136
|
[x: string]: unknown;
|
|
@@ -892,8 +890,8 @@ export declare const apTableFormItemMap: {
|
|
|
892
890
|
readonly onMouseup?: MouseEventHandler | undefined;
|
|
893
891
|
readonly open?: boolean | undefined;
|
|
894
892
|
readonly separator?: VueNode;
|
|
895
|
-
readonly disabled?:
|
|
896
|
-
readonly direction?:
|
|
893
|
+
readonly disabled?: boolean | [boolean, boolean] | undefined;
|
|
894
|
+
readonly direction?: "ltr" | "rtl" | undefined;
|
|
897
895
|
readonly placeholder?: [string, string] | undefined;
|
|
898
896
|
readonly id?: string | undefined;
|
|
899
897
|
readonly getPopupContainer?: ((node: HTMLElement) => HTMLElement) | undefined;
|
|
@@ -928,7 +926,7 @@ export declare const apTableFormItemMap: {
|
|
|
928
926
|
readonly ranges?: Record<string, [ EventValue<Dayjs>, EventValue<Dayjs>] | (() => [ EventValue<Dayjs>, EventValue<Dayjs>])> | undefined;
|
|
929
927
|
readonly allowEmpty?: [boolean, boolean] | undefined;
|
|
930
928
|
readonly onCalendarChange?: ((values: RangeValue<Dayjs>, formatString: [string, string], info: RangeInfo) => void) | undefined;
|
|
931
|
-
readonly activePickerIndex?:
|
|
929
|
+
readonly activePickerIndex?: 0 | 1 | undefined;
|
|
932
930
|
readonly valueFormat?: string | undefined;
|
|
933
931
|
readonly value?: ( RangeValue<number> | null) | undefined;
|
|
934
932
|
readonly defaultValue?: RangeValue<number> | undefined;
|
|
@@ -936,13 +934,13 @@ export declare const apTableFormItemMap: {
|
|
|
936
934
|
readonly onChange?: ((ts: RangeValue<number> | null, dayStr: [string, string]) => void) | undefined;
|
|
937
935
|
readonly onOk?: ((ts: RangeValue<number>) => void) | undefined;
|
|
938
936
|
readonly format?: LiteralUnion<ApFormatPresetType, string> | undefined;
|
|
939
|
-
readonly shownFormat?:
|
|
937
|
+
readonly shownFormat?: string | CustomFormat<Dayjs> | (string | CustomFormat<Dayjs>)[] | undefined;
|
|
940
938
|
readonly timezone?: ( ZoneAlias | {
|
|
941
939
|
label?: string;
|
|
942
940
|
value: ZoneAlias;
|
|
943
941
|
}[]) | undefined;
|
|
944
942
|
readonly readModeSeparator?: any;
|
|
945
|
-
readonly presets?:
|
|
943
|
+
readonly presets?: true | PresetDate<RangeValue<Dayjs>>[] | {
|
|
946
944
|
thisWeek?: boolean;
|
|
947
945
|
lastWeek?: boolean;
|
|
948
946
|
last7Days?: boolean;
|
|
@@ -954,7 +952,7 @@ export declare const apTableFormItemMap: {
|
|
|
954
952
|
lastQuarter?: boolean;
|
|
955
953
|
thisYear?: boolean;
|
|
956
954
|
lastYear?: boolean;
|
|
957
|
-
};
|
|
955
|
+
} | undefined;
|
|
958
956
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
959
957
|
$attrs: {
|
|
960
958
|
[x: string]: unknown;
|
|
@@ -1788,7 +1786,7 @@ export declare const apTableFormItemMap: {
|
|
|
1788
1786
|
offset: ValueType;
|
|
1789
1787
|
type: "up" | "down";
|
|
1790
1788
|
}) => void) | undefined;
|
|
1791
|
-
readonly inputMode?:
|
|
1789
|
+
readonly inputMode?: "input" | "spinner" | undefined;
|
|
1792
1790
|
readonly thousands?: boolean | undefined;
|
|
1793
1791
|
readonly limitDecimalsRetain?: boolean | undefined;
|
|
1794
1792
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
@@ -2578,16 +2576,16 @@ export declare const apTableFormItemMap: {
|
|
|
2578
2576
|
readonly showAction?: ("click" | "focus")[] | undefined;
|
|
2579
2577
|
readonly onPopupScroll?: ((e: UIEvent) => void) | undefined;
|
|
2580
2578
|
readonly onInputKeyDown?: ((e: KeyboardEvent) => void) | undefined;
|
|
2581
|
-
readonly request?: ((value?: string, extraParams?: Recordable) => Promise<
|
|
2579
|
+
readonly request?: ((value?: string, extraParams?: Recordable) => Promise< DefaultOptionType[] | undefined>) | undefined;
|
|
2582
2580
|
readonly multiple?: boolean | undefined;
|
|
2583
|
-
readonly value?:
|
|
2581
|
+
readonly value?: (string | number) | LabeledValue | (string | number)[] | LabeledValue[] | undefined;
|
|
2584
2582
|
readonly 'onUpdate:value'?: (((val: SelectValue) => void) & ((...args: any[]) => any)) | undefined;
|
|
2585
|
-
readonly searchMode?:
|
|
2583
|
+
readonly searchMode?: "filter" | "request" | undefined;
|
|
2586
2584
|
readonly refetchOnFocus?: boolean | undefined;
|
|
2587
2585
|
readonly fetchOnFocus?: boolean | undefined;
|
|
2588
2586
|
readonly fetchOnOpen?: boolean | undefined;
|
|
2589
|
-
readonly lazy?:
|
|
2590
|
-
readonly addAll?:
|
|
2587
|
+
readonly lazy?: boolean | "first-focus" | "first-open" | undefined;
|
|
2588
|
+
readonly addAll?: boolean | number | undefined;
|
|
2591
2589
|
readonly params?: Recordable | undefined;
|
|
2592
2590
|
readonly searchDelay?: number | undefined;
|
|
2593
2591
|
readonly allowOnlySelect?: boolean | undefined;
|
|
@@ -3246,7 +3244,7 @@ export declare const apTableFormItemMap: {
|
|
|
3246
3244
|
readonly unCheckedValue?: string | number | boolean | undefined;
|
|
3247
3245
|
readonly 'onUpdate:checked'?: (((checked: string | number | boolean) => void) & ((...args: any[]) => any)) | undefined;
|
|
3248
3246
|
readonly onAction?: ((checked: string | boolean | number, e?: Event) => boolean | Promise<boolean>) | undefined;
|
|
3249
|
-
readonly confirm?:
|
|
3247
|
+
readonly confirm?: ((checked: string | number | boolean) => ApFieldSwitchConfirmConfig) | ApFieldSwitchConfirmConfig;
|
|
3250
3248
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
3251
3249
|
$attrs: {
|
|
3252
3250
|
[x: string]: unknown;
|
|
@@ -4326,7 +4324,7 @@ export declare const apTableFormItemMap: {
|
|
|
4326
4324
|
readonly id?: string | undefined;
|
|
4327
4325
|
readonly prefixCls?: string | undefined;
|
|
4328
4326
|
readonly name?: string | undefined;
|
|
4329
|
-
readonly request?: (() => Promise<
|
|
4327
|
+
readonly request?: (() => Promise<(string | number | CheckboxOptionType)[] | undefined>) | undefined;
|
|
4330
4328
|
readonly vertical?: boolean | undefined;
|
|
4331
4329
|
} & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
4332
4330
|
$attrs: {
|