intable 0.0.65 → 0.0.67
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/__uno.css +1 -1
- package/dist/check.js +6 -0
- package/dist/chevron-down.js +6 -0
- package/dist/components/Filter.js +3 -3
- package/dist/components/Select.d.ts +24 -0
- package/dist/components/Select.js +149 -0
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useSelector.d.ts +1 -2
- package/dist/hooks/useSelector.js +23 -23
- package/dist/index.d.ts +4 -2
- package/dist/index.js +26 -15
- package/dist/plugins/EditablePlugin.d.ts +3 -2
- package/dist/plugins/EditablePlugin.js +73 -73
- package/dist/plugins/ExpressPlugin.d.ts +10 -0
- package/dist/plugins/ExpressPlugin.js +32 -0
- package/dist/plugins/OrmPlugin.d.ts +13 -1
- package/dist/plugins/OrmPlugin.js +156 -99
- package/dist/plugins/PaginationPlugin.d.ts +0 -6
- package/dist/plugins/PaginationPlugin.js +42 -61
- package/dist/plugins/RenderPlugin/components.js +3 -3
- package/dist/plugins/RenderPlugin/index.js +12 -8
- package/dist/style.css +2 -2
- package/package.json +2 -1
|
@@ -11,40 +11,40 @@ const EditablePlugin = {
|
|
|
11
11
|
name: "editable",
|
|
12
12
|
store: () => ({ editors: { ...editors } }),
|
|
13
13
|
rewriteProps: {
|
|
14
|
-
editable: ({ editable: e }, { store:
|
|
15
|
-
let
|
|
16
|
-
return !!
|
|
14
|
+
editable: ({ editable: e }, { store: u }) => (f) => {
|
|
15
|
+
let p = [f.col.editable, e].filter((e) => e != null);
|
|
16
|
+
return !!p.length && p.every((e) => unFn(e, f)) && !f.data[u.internal] && !f.col[u.internal];
|
|
17
17
|
},
|
|
18
|
-
Td: ({ Td: e }, { store:
|
|
19
|
-
let { props:
|
|
20
|
-
return createMemo(() =>
|
|
21
|
-
let
|
|
22
|
-
if (
|
|
23
|
-
let e = createMemo(() => JSON.stringify(
|
|
24
|
-
createEffect(on(e, () =>
|
|
25
|
-
let
|
|
26
|
-
props:
|
|
27
|
-
col:
|
|
28
|
-
eventKey:
|
|
29
|
-
data:
|
|
30
|
-
value:
|
|
18
|
+
Td: ({ Td: e }, { store: u }) => (p) => {
|
|
19
|
+
let { props: m } = u, _, v = () => unFn(u.props.editable, p);
|
|
20
|
+
return createMemo(() => v() ? unFn(() => {
|
|
21
|
+
let d = "", [b, x] = createSignal(!1), T = () => (([e, u]) => p.x == e && p.y == u)(u.selected.start || []), O = () => v() && !b() && T(), [k, A] = createSignal(!1), j = createAsyncMemo(() => {
|
|
22
|
+
if (b()) {
|
|
23
|
+
let e = createMemo(() => JSON.stringify(u.selected ?? "{}"));
|
|
24
|
+
createEffect(on(e, () => x(!1), { defer: !0 })), P.w = _.getBoundingClientRect().width, P.h = _.getBoundingClientRect().height;
|
|
25
|
+
let f = !1, h = p.data[p.col.id], g = ((e) => typeof e == "string" ? u.editors[e] : e)(p.col.editor ?? p.col.type ?? (p.col.enum && "select")) ?? (h == null ? null : u.editors[typeof h]) ?? u.editors.text, v = {
|
|
26
|
+
props: p.col.editorProps,
|
|
27
|
+
col: p.col,
|
|
28
|
+
eventKey: d,
|
|
29
|
+
data: p.data,
|
|
30
|
+
value: h,
|
|
31
31
|
ok: async () => {
|
|
32
|
-
await M(
|
|
32
|
+
await M(y.getValue()), x(!1);
|
|
33
33
|
},
|
|
34
|
-
cancel: () => (
|
|
35
|
-
onChange: (e) =>
|
|
36
|
-
},
|
|
37
|
-
return queueMicrotask(() =>
|
|
38
|
-
!
|
|
39
|
-
...
|
|
40
|
-
[
|
|
41
|
-
}),
|
|
42
|
-
}), [
|
|
34
|
+
cancel: () => (f = !0, x(!1)),
|
|
35
|
+
onChange: (e) => b() && M(e).catch(() => {})
|
|
36
|
+
}, y = g(v);
|
|
37
|
+
return queueMicrotask(() => y.focus?.()), onCleanup(() => {
|
|
38
|
+
!f && y.getValue() !== h && u.commands.rowChange({
|
|
39
|
+
...m.data[p.y],
|
|
40
|
+
[p.col.id]: y.getValue()
|
|
41
|
+
}), f || M(y.getValue()).catch(() => {}), d = "", y.destroy?.();
|
|
42
|
+
}), [v, y];
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
async function M(e) {
|
|
46
46
|
try {
|
|
47
|
-
A(!0), await
|
|
47
|
+
A(!0), await u.validateCell(e, p.data, p.col);
|
|
48
48
|
} finally {
|
|
49
49
|
A(!1);
|
|
50
50
|
}
|
|
@@ -52,19 +52,19 @@ const EditablePlugin = {
|
|
|
52
52
|
let N, P = createMutable({
|
|
53
53
|
w: 0,
|
|
54
54
|
h: 0
|
|
55
|
-
}), F = mergeProps$2(
|
|
56
|
-
ref: (e) => (
|
|
55
|
+
}), F = mergeProps$2(p, {
|
|
56
|
+
ref: (e) => (_ = e, p.ref?.(e)),
|
|
57
57
|
get class() {
|
|
58
|
-
return [
|
|
58
|
+
return [b() ? "is-editing" : "", p.class].filter(Boolean).join(" ");
|
|
59
59
|
},
|
|
60
60
|
get style() {
|
|
61
|
-
return [
|
|
61
|
+
return [b() ? `width: ${P.w}px; height: ${P.h}px; ` : "", p.style].filter(Boolean).join(" ");
|
|
62
62
|
},
|
|
63
|
-
onClick: (e) => (N?.focus?.(),
|
|
64
|
-
onDblClick: (e) => (
|
|
63
|
+
onClick: (e) => (N?.focus?.(), p.onClick?.(e)),
|
|
64
|
+
onDblClick: (e) => (x(v()), p.onDblClick?.(e))
|
|
65
65
|
});
|
|
66
66
|
return createComponent(e, mergeProps$2(F, { get children() {
|
|
67
|
-
return [() => j()?.[1]?.dialog ? [memo(() =>
|
|
67
|
+
return [() => j()?.[1]?.dialog ? [memo(() => p.children), memo(() => j()?.[1]?.el)] : j()?.[1]?.el ? (() => {
|
|
68
68
|
var e = _tmpl$();
|
|
69
69
|
return addEventListener(e, "keydown", (e) => {
|
|
70
70
|
e.stopPropagation(), e.key == "Enter" && !e.shiftKey && (j()?.[0].ok(), e.preventDefault()), e.key == "Escape" && j()?.[0].cancel();
|
|
@@ -72,12 +72,12 @@ const EditablePlugin = {
|
|
|
72
72
|
var e = memo(() => !!k());
|
|
73
73
|
return () => e() && _tmpl$2();
|
|
74
74
|
})(), null), e;
|
|
75
|
-
})() :
|
|
75
|
+
})() : p.children, () => O() && (() => {
|
|
76
76
|
var e = _tmpl$3();
|
|
77
77
|
return e.addEventListener("compositionend", () => {
|
|
78
|
-
|
|
78
|
+
x(!0);
|
|
79
79
|
}), e.$$input = (e) => {
|
|
80
|
-
|
|
80
|
+
d = e.target.value, x(!e.isComposing);
|
|
81
81
|
}, e.$$keydown = (e) => {
|
|
82
82
|
e.key == " " && e.preventDefault();
|
|
83
83
|
}, use((e) => {
|
|
@@ -85,34 +85,34 @@ const EditablePlugin = {
|
|
|
85
85
|
}, e), e;
|
|
86
86
|
})()];
|
|
87
87
|
} }));
|
|
88
|
-
}) : createComponent(e,
|
|
88
|
+
}) : createComponent(e, p));
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
ref: (e) => D = e,
|
|
96
|
-
class: "relative block px-2 size-full z-9 box-border resize-none outline-0",
|
|
97
|
-
get value() {
|
|
98
|
-
return T();
|
|
99
|
-
},
|
|
100
|
-
onInput: (e) => (E(w(e instanceof Event ? e.target.value : e)), C?.(T())),
|
|
101
|
-
onChange: (e) => (E(w(e instanceof Event ? e.target.value : e)), C?.(T()), h && b()),
|
|
102
|
-
get options() {
|
|
103
|
-
return memo(() => !!y.enum)() ? resolveOptions(y.enum ?? []) : void 0;
|
|
104
|
-
}
|
|
105
|
-
}, p, S)), setTimeout(() => {
|
|
106
|
-
h && D?.showPicker?.();
|
|
91
|
+
}, createEditor = (e, d, p) => (m) => createRoot((h) => {
|
|
92
|
+
let { eventKey: _, value: v, col: y, ok: b, cancel: x, props: S, onChange: C } = m, w = d?.out ?? ((e) => e), [T, E] = createSignal(p && _ || v), D;
|
|
93
|
+
return setTimeout(() => {
|
|
94
|
+
p && D?.showPicker?.();
|
|
107
95
|
}, 0), {
|
|
108
|
-
el:
|
|
96
|
+
el: createComponent(e, mergeProps$2({
|
|
97
|
+
ref: (e) => D = e,
|
|
98
|
+
class: "relative block px-2 size-full z-9 box-border resize-none outline-0",
|
|
99
|
+
get value() {
|
|
100
|
+
return T();
|
|
101
|
+
},
|
|
102
|
+
onInput: (e) => (E(w(e instanceof Event ? e.target.value : e)), C?.(T())),
|
|
103
|
+
onChange: (e) => (E(w(e instanceof Event ? e.target.value : e)), C?.(T()), p && !Array.isArray(T()) && b()),
|
|
104
|
+
get options() {
|
|
105
|
+
return memo(() => !!y.enum)() ? resolveOptions(y.enum ?? []) : void 0;
|
|
106
|
+
}
|
|
107
|
+
}, d, S, { aaa: m })),
|
|
109
108
|
getValue: T,
|
|
110
109
|
focus: () => D.focus(),
|
|
111
|
-
destroy:
|
|
110
|
+
destroy: h
|
|
112
111
|
};
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
});
|
|
113
|
+
var Input = (e) => (() => {
|
|
114
|
+
var u = _tmpl$4();
|
|
115
|
+
return spread(u, e, !1, !1), u;
|
|
116
116
|
})();
|
|
117
117
|
const editors = {
|
|
118
118
|
text: createEditor(Input),
|
|
@@ -136,31 +136,31 @@ const editors = {
|
|
|
136
136
|
color: createEditor(Input, { type: "color" }),
|
|
137
137
|
tel: createEditor(Input, { type: "tel" }),
|
|
138
138
|
password: createEditor(Input, { type: "password" }),
|
|
139
|
-
file: createEditor((
|
|
139
|
+
file: createEditor((u) => createComponent(Files, mergeProps$2(u, {
|
|
140
140
|
class: "relative z-9 outline-2 outline-blue min-h-a! h-a! p-1 bg-#fff",
|
|
141
|
-
onAdd: () => chooseFile({ multiple: !0 }).then((e) =>
|
|
141
|
+
onAdd: () => chooseFile({ multiple: !0 }).then((e) => u.onChange([...u.value || [], ...e.map((e) => ({
|
|
142
142
|
name: e.name,
|
|
143
143
|
size: e.size
|
|
144
144
|
}))]))
|
|
145
145
|
}))),
|
|
146
146
|
checkbox: createEditor((e) => (() => {
|
|
147
|
-
var
|
|
148
|
-
return typeof
|
|
147
|
+
var u = _tmpl$5(), d = e.ref;
|
|
148
|
+
return typeof d == "function" ? use(d, u) : e.ref = u, insert(u, createComponent(Checkbox, mergeProps$2(e, {
|
|
149
149
|
ref: () => {},
|
|
150
150
|
onInput: () => {},
|
|
151
151
|
class: "mx-3!"
|
|
152
|
-
}))),
|
|
152
|
+
}))), u;
|
|
153
153
|
})()),
|
|
154
154
|
select: createEditor((e) => (() => {
|
|
155
|
-
var
|
|
156
|
-
return spread(
|
|
157
|
-
var
|
|
158
|
-
return () =>
|
|
159
|
-
})(), null), insert(
|
|
160
|
-
var
|
|
161
|
-
return insert(
|
|
162
|
-
})()), null), effect(() =>
|
|
155
|
+
var u = _tmpl$6();
|
|
156
|
+
return spread(u, e, !1, !0), insert(u, (() => {
|
|
157
|
+
var u = memo(() => !e.multiple);
|
|
158
|
+
return () => u() && _tmpl$7();
|
|
159
|
+
})(), null), insert(u, () => e.options?.map((e) => (() => {
|
|
160
|
+
var u = _tmpl$8();
|
|
161
|
+
return insert(u, () => e.label), effect(() => u.value = e.value), u;
|
|
162
|
+
})()), null), effect(() => u.value = e.value), u;
|
|
163
163
|
})(), {}, !0)
|
|
164
164
|
};
|
|
165
165
|
editors.boolean = editors.checkbox, delegateEvents(["keydown", "input"]);
|
|
166
|
-
export { EditablePlugin, editors };
|
|
166
|
+
export { EditablePlugin, createEditor, editors };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createComponent } from "solid-js/web";
|
|
2
|
+
import { createComputed, untrack } from "solid-js";
|
|
3
|
+
const ExpressPlugin = {
|
|
4
|
+
name: "expand",
|
|
5
|
+
store: (e) => ({}),
|
|
6
|
+
rewriteProps: { Table: ({ Table: r }, { store: i }) => (a) => (createComputed(() => {
|
|
7
|
+
for (let e = 0; e < i.props.columns.length; e++) {
|
|
8
|
+
let n = i.props.columns[e];
|
|
9
|
+
if (!(!n.valueGetter && !n.valueSetter)) for (let r = 0; r < i.props.data.length; r++) {
|
|
10
|
+
let a = i.props.data[r];
|
|
11
|
+
n.id in a || Object.defineProperty(a, n.id, {
|
|
12
|
+
get: () => n.valueGetter?.({
|
|
13
|
+
col: n,
|
|
14
|
+
data: a,
|
|
15
|
+
x: e,
|
|
16
|
+
y: r
|
|
17
|
+
}),
|
|
18
|
+
set: (i) => untrack(() => n.valueSetter?.({
|
|
19
|
+
col: n,
|
|
20
|
+
data: a,
|
|
21
|
+
value: a[n.id],
|
|
22
|
+
x: e,
|
|
23
|
+
y: r
|
|
24
|
+
}, i)),
|
|
25
|
+
enumerable: !0,
|
|
26
|
+
configurable: !0
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}), createComponent(r, a)) }
|
|
31
|
+
};
|
|
32
|
+
export { ExpressPlugin };
|
|
@@ -1,15 +1,27 @@
|
|
|
1
|
-
import { type Plugin } from '..';
|
|
1
|
+
import { type Plugin, type TableProps } from '..';
|
|
2
2
|
declare module '../index' {
|
|
3
3
|
interface TableProps {
|
|
4
4
|
}
|
|
5
5
|
interface TableColumn {
|
|
6
|
+
table?: TableProps | ((p: {
|
|
7
|
+
data: any;
|
|
8
|
+
}) => TableProps);
|
|
6
9
|
/**
|
|
7
10
|
* 外键对象的属性。
|
|
8
11
|
* 会自动将外键对象 组装到当前行数据中,便于在表格中显示外键对象中的其他属性。
|
|
9
12
|
*/
|
|
10
13
|
foreignField?: string;
|
|
14
|
+
dialog?: boolean;
|
|
11
15
|
}
|
|
12
16
|
interface TableStore {
|
|
13
17
|
}
|
|
14
18
|
}
|
|
15
19
|
export declare const OrmPlugin: Plugin;
|
|
20
|
+
export declare const TableSelect: (o: {
|
|
21
|
+
value: any;
|
|
22
|
+
valueObject?: any;
|
|
23
|
+
onChange?: (value: any) => void;
|
|
24
|
+
table: TableProps;
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
}) => import("solid-js").JSX.Element;
|
|
27
|
+
export declare const fetchDataByKeys: (keys: any[], table: TableProps) => Promise<any[]>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { toArr } from "../utils.js";
|
|
1
|
+
import { isEmpty, toArr, unFn } from "../utils.js";
|
|
2
2
|
import { Tags } from "./RenderPlugin/components.js";
|
|
3
3
|
import { editors } from "./EditablePlugin.js";
|
|
4
4
|
import { renders } from "./RenderPlugin/index.js";
|
|
5
5
|
import { Dialog } from "../components/Dialog.js";
|
|
6
|
+
import { Select } from "../components/Select.js";
|
|
6
7
|
import { Intable } from "../index.js";
|
|
7
8
|
import { createComponent, delegateEvents, insert, memo, mergeProps, template } from "solid-js/web";
|
|
8
9
|
import { createComputed, createResource, createRoot, createSignal, mergeProps as mergeProps$1, splitProps, untrack } from "solid-js";
|
|
@@ -13,123 +14,178 @@ const OrmPlugin = {
|
|
|
13
14
|
name: "orm",
|
|
14
15
|
priority: -Infinity,
|
|
15
16
|
store: (e) => ({}),
|
|
16
|
-
rewriteProps: { Table: ({ Table: e }, { store:
|
|
17
|
-
let
|
|
17
|
+
rewriteProps: { Table: ({ Table: e }, { store: _ }) => (v) => {
|
|
18
|
+
let y = createMutable({});
|
|
18
19
|
return createComputed(() => {
|
|
19
|
-
let e =
|
|
20
|
-
if (e.length) for (let
|
|
21
|
-
if (
|
|
22
|
-
Object.defineProperty(e,
|
|
23
|
-
get: () => get(
|
|
24
|
-
set: (
|
|
20
|
+
let e = _.props.columns?.filter((e) => (e.type == "fk" || e.type == "fks") && e.foreignField);
|
|
21
|
+
if (e.length) for (let v of e) for (let e of _.props.data) {
|
|
22
|
+
if (v.foreignField in e) continue;
|
|
23
|
+
Object.defineProperty(e, v.foreignField, {
|
|
24
|
+
get: () => get(y, [v.id, e[_.props.rowKey]]),
|
|
25
|
+
set: (b) => untrack(() => set(y, [v.id, e[_.props.rowKey]], b)),
|
|
25
26
|
enumerable: !0,
|
|
26
27
|
configurable: !0
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
|
-
}), createComponent(e,
|
|
30
|
+
}), createComponent(e, v);
|
|
30
31
|
} }
|
|
31
32
|
};
|
|
32
|
-
var
|
|
33
|
-
let { eventKey:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
get title() {
|
|
42
|
-
return `选择 ${y.name}`;
|
|
33
|
+
var createEditor = (e) => (_) => createRoot((v) => {
|
|
34
|
+
let { eventKey: y, value: b, col: x, ok: S, cancel: C, props: w, onChange: T } = _, [E, D] = createSignal(b), O;
|
|
35
|
+
return setTimeout(() => {
|
|
36
|
+
O?.showPicker?.();
|
|
37
|
+
}, 0), {
|
|
38
|
+
el: createComponent(e, mergeProps({
|
|
39
|
+
ref: (e) => O = e,
|
|
40
|
+
get value() {
|
|
41
|
+
return E();
|
|
43
42
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class: "min-w-[40vw]",
|
|
47
|
-
children: O
|
|
48
|
-
}),
|
|
43
|
+
onChange: (e) => (D(e), T?.(E()), !Array.isArray(E()) && S())
|
|
44
|
+
}, w, { aaa: _ })),
|
|
49
45
|
getValue: E,
|
|
50
|
-
destroy:
|
|
51
|
-
dialog:
|
|
46
|
+
destroy: v,
|
|
47
|
+
dialog: x.dialog
|
|
52
48
|
};
|
|
53
|
-
}), ObjTags = (
|
|
54
|
-
let
|
|
55
|
-
[
|
|
49
|
+
}), ObjTags = (e) => {
|
|
50
|
+
let b;
|
|
51
|
+
[e, b] = splitProps(e, [
|
|
56
52
|
"col",
|
|
57
53
|
"data",
|
|
58
54
|
"value",
|
|
59
55
|
"onChange",
|
|
60
56
|
"multiple"
|
|
61
57
|
]);
|
|
62
|
-
let
|
|
58
|
+
let x = () => unFn(e.col.table, { data: e.data }), S = () => x()?.columns?.[0].id, C = () => x()?.rowKey ?? "id";
|
|
63
59
|
return createComponent(Tags, mergeProps({
|
|
64
60
|
get value() {
|
|
65
|
-
return toArr(
|
|
66
|
-
label: e[
|
|
67
|
-
value: e[
|
|
61
|
+
return toArr(e.value).map((e) => ({
|
|
62
|
+
label: e[S()],
|
|
63
|
+
value: e[C()]
|
|
68
64
|
}));
|
|
69
65
|
},
|
|
70
|
-
onChange: (
|
|
71
|
-
},
|
|
72
|
-
}, FKTags = (
|
|
73
|
-
let
|
|
74
|
-
[
|
|
66
|
+
onChange: (_) => e.onChange?.(e.multiple ? _ : _[0])
|
|
67
|
+
}, b));
|
|
68
|
+
}, FKTags = (e) => {
|
|
69
|
+
let b;
|
|
70
|
+
[e, b] = splitProps(e, [
|
|
75
71
|
"col",
|
|
76
72
|
"data",
|
|
77
73
|
"value",
|
|
78
74
|
"onChange",
|
|
79
75
|
"multiple"
|
|
80
76
|
]);
|
|
81
|
-
let
|
|
77
|
+
let x = () => unFn(e.col.table, { data: e.data }), S = () => x()?.columns?.[0].id, C = () => x()?.rowKey ?? "id", [w] = createResource(() => e.value, () => fetchDataByKeys(toArr(e.value).map((e) => e && typeof e != "object" ? e : e[C()]), x()), { initialValue: [] });
|
|
82
78
|
return createComputed(() => {
|
|
83
|
-
|
|
79
|
+
w(), untrack(() => set(e.data, e.col.foreignField, e.multiple ? w() : w()[0]));
|
|
84
80
|
}), createComponent(Tags, mergeProps({
|
|
85
81
|
get value() {
|
|
86
|
-
return
|
|
87
|
-
label: e[
|
|
88
|
-
value: e[
|
|
82
|
+
return w().map((e) => ({
|
|
83
|
+
label: e[S()],
|
|
84
|
+
value: e[C()]
|
|
89
85
|
}));
|
|
90
86
|
},
|
|
91
|
-
onChange: (
|
|
92
|
-
},
|
|
93
|
-
}, ObjEditor =
|
|
94
|
-
let
|
|
95
|
-
return (() => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
87
|
+
onChange: (_) => e.onChange?.(e.multiple ? _ : _[0])
|
|
88
|
+
}, b));
|
|
89
|
+
}, ObjEditor = createEditor((e) => {
|
|
90
|
+
let y = mergeProps$1(() => e.aaa.col), b = () => unFn(y.table, { data: e.aaa.data })?.rowKey ?? "id", x = () => y.type == "objs" || y.type == "fks", C = () => y.type == "fk" || y.type == "fks", T = () => C() ? toArr(e.value).map((e) => ({ [b()]: e })) : toArr(e.value), O = (_) => e.onChange(C() ? x() ? _.map((e) => e[b()]) : _?.[b()] ?? null : _);
|
|
91
|
+
return memo(() => memo(() => !!y.dialog)() ? createComponent(Dialog, {
|
|
92
|
+
get title() {
|
|
93
|
+
return `选择 ${y.name}`;
|
|
94
|
+
},
|
|
95
|
+
get onCancel() {
|
|
96
|
+
return e.aaa.cancel;
|
|
97
|
+
},
|
|
98
|
+
get onOk() {
|
|
99
|
+
return e.aaa.ok;
|
|
100
|
+
},
|
|
101
|
+
class: "min-w-[40vw]",
|
|
102
|
+
get children() {
|
|
103
|
+
var _ = _tmpl$(), v = _.firstChild, b = v.firstChild, S = b.firstChild, k = S.firstChild, A = k.nextSibling;
|
|
104
|
+
A.nextSibling;
|
|
105
|
+
var j = S.nextSibling, M = v.nextSibling;
|
|
106
|
+
return insert(S, () => T().length, A), j.$$click = () => e.onChange?.(x() ? [] : null), insert(v, (() => {
|
|
107
|
+
var _ = memo(() => !!C());
|
|
108
|
+
return () => _() ? createComponent(FKTags, mergeProps(e, {
|
|
109
|
+
class: "ml-2",
|
|
110
|
+
col: y,
|
|
111
|
+
get value() {
|
|
112
|
+
return T();
|
|
113
|
+
},
|
|
114
|
+
onChange: O,
|
|
115
|
+
get multiple() {
|
|
116
|
+
return x();
|
|
117
|
+
}
|
|
118
|
+
})) : createComponent(ObjTags, mergeProps(e, {
|
|
119
|
+
class: "ml-2",
|
|
120
|
+
col: y,
|
|
121
|
+
get value() {
|
|
122
|
+
return T();
|
|
123
|
+
},
|
|
124
|
+
onChange: O,
|
|
125
|
+
get multiple() {
|
|
126
|
+
return x();
|
|
127
|
+
}
|
|
128
|
+
}));
|
|
129
|
+
})(), null), insert(M, createComponent(Intable, mergeProps(() => e.aaa.col.table, {
|
|
130
|
+
class: "max-h-[65vh]",
|
|
131
|
+
get rowSelection() {
|
|
132
|
+
return {
|
|
133
|
+
...e.aaa.col.table?.rowSelection,
|
|
134
|
+
enable: !0,
|
|
135
|
+
multiple: x(),
|
|
136
|
+
value: T(),
|
|
137
|
+
onChange: O
|
|
138
|
+
};
|
|
120
139
|
}
|
|
121
|
-
}));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
140
|
+
}))), _;
|
|
141
|
+
}
|
|
142
|
+
}) : createComponent(TableSelect, mergeProps(e, {
|
|
143
|
+
get table() {
|
|
144
|
+
return unFn(y.table, { data: e.aaa.data });
|
|
145
|
+
},
|
|
146
|
+
get valueObject() {
|
|
147
|
+
return !C();
|
|
148
|
+
},
|
|
149
|
+
class: "min-h-full outline-1.5 outline-offset--1.5 outline-[--c-primary] bg-[--table-bg] py-1",
|
|
150
|
+
border: !1,
|
|
151
|
+
get multiple() {
|
|
152
|
+
return x();
|
|
153
|
+
}
|
|
154
|
+
})));
|
|
132
155
|
});
|
|
156
|
+
const TableSelect = (e) => {
|
|
157
|
+
let v = () => e.table?.rowKey ?? "id", y = () => e.multiple, b = () => !e.valueObject, x = () => b() ? toArr(e.value) : toArr(e.value).map((e) => e[v()]), [S] = createResource(x, () => fetchDataByKeys(x(), e.table), { initialValue: [] });
|
|
158
|
+
return createComponent(Select, mergeProps(e, {
|
|
159
|
+
searchable: !0,
|
|
160
|
+
get options() {
|
|
161
|
+
return S().map((_) => ({
|
|
162
|
+
label: _[e.table?.columns?.[0].id],
|
|
163
|
+
value: b() ? _[v()] : _
|
|
164
|
+
}));
|
|
165
|
+
},
|
|
166
|
+
request: ({ keyword: _ }) => {
|
|
167
|
+
let y = [];
|
|
168
|
+
return _ && y.push({
|
|
169
|
+
field: e.table?.columns?.[0].id,
|
|
170
|
+
op: "like",
|
|
171
|
+
value: _
|
|
172
|
+
}), e.table?.filter && y.push(...e.table.filter.value ?? e.table.filter.initialValue ?? e.table.filter.defaultValue ?? []), e.table?.request?.({ filters: y }).then((_) => _.data.map((_) => ({
|
|
173
|
+
label: _[e.table?.columns?.[0].id],
|
|
174
|
+
value: b() ? _[v()] : _
|
|
175
|
+
})));
|
|
176
|
+
},
|
|
177
|
+
get valueKey() {
|
|
178
|
+
return memo(() => !!b())() ? void 0 : v();
|
|
179
|
+
},
|
|
180
|
+
get value() {
|
|
181
|
+
return e.value;
|
|
182
|
+
},
|
|
183
|
+
onChange: (_) => e.onChange?.(_),
|
|
184
|
+
get multiple() {
|
|
185
|
+
return y();
|
|
186
|
+
}
|
|
187
|
+
}));
|
|
188
|
+
};
|
|
133
189
|
editors.obj = ObjEditor, editors.objs = ObjEditor, editors.fk = ObjEditor, editors.fks = ObjEditor, renders.fk = (e) => createComponent(FKTags, mergeProps(e, { disabled: !0 })), renders.fks = (e) => createComponent(FKTags, mergeProps(e, {
|
|
134
190
|
disabled: !0,
|
|
135
191
|
multiple: !0
|
|
@@ -137,25 +193,26 @@ editors.obj = ObjEditor, editors.objs = ObjEditor, editors.fk = ObjEditor, edito
|
|
|
137
193
|
disabled: !0,
|
|
138
194
|
multiple: !0
|
|
139
195
|
}));
|
|
140
|
-
|
|
141
|
-
let
|
|
142
|
-
let
|
|
143
|
-
return
|
|
196
|
+
const fetchDataByKeys = (() => {
|
|
197
|
+
let _ = /* @__PURE__ */ new WeakMap(), v = (e) => {
|
|
198
|
+
let v = _.get(e.request) || _.set(e.request, {}).get(e.request);
|
|
199
|
+
return v[e.rowKey] ??= [{}, {}];
|
|
144
200
|
};
|
|
145
|
-
return async (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
201
|
+
return async (_, y) => {
|
|
202
|
+
if (!y.request || (_ = _.filter((_) => !isEmpty(_)), !_.length)) return [];
|
|
203
|
+
let [b, x] = v(y), S = _.filter((e) => !b[e]);
|
|
204
|
+
if (S.length) {
|
|
205
|
+
let e = S.filter((e) => !x[e]), _ = y.request({ filters: [{
|
|
206
|
+
field: y.rowKey,
|
|
150
207
|
op: "in",
|
|
151
208
|
value: e
|
|
152
209
|
}] });
|
|
153
|
-
e.forEach((e,
|
|
154
|
-
|
|
155
|
-
}), await Promise.all(
|
|
210
|
+
e.forEach((e, v) => {
|
|
211
|
+
x[e] = _.then((_) => b[e] = _.data[v]).finally(() => delete x[e]);
|
|
212
|
+
}), await Promise.all(S.map((e) => x[e]));
|
|
156
213
|
}
|
|
157
|
-
return
|
|
214
|
+
return _.map((e) => b[e]);
|
|
158
215
|
};
|
|
159
216
|
})();
|
|
160
217
|
delegateEvents(["click"]);
|
|
161
|
-
export { OrmPlugin };
|
|
218
|
+
export { OrmPlugin, TableSelect, fetchDataByKeys };
|
|
@@ -7,16 +7,10 @@ declare module '..' {
|
|
|
7
7
|
defaultValue?: number;
|
|
8
8
|
value?: number;
|
|
9
9
|
onChange?: (page: number) => void;
|
|
10
|
-
/** Server-side pagination: called on page change with (page, pageSize).
|
|
11
|
-
* Parent should update `data` and `total` in response. */
|
|
12
|
-
request?: (page: number, pageSize: number) => void | Promise<void>;
|
|
13
|
-
/** Total record count (required for server-side pagination) */
|
|
14
10
|
total?: number;
|
|
15
11
|
};
|
|
16
12
|
}
|
|
17
13
|
interface TableStore {
|
|
18
|
-
_pgnTotal: number;
|
|
19
|
-
_pgnLoading: boolean;
|
|
20
14
|
}
|
|
21
15
|
}
|
|
22
16
|
export declare const PaginationPlugin: Plugin;
|