intable 0.0.70 → 0.0.71
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/plugins/OrmPlugin.js +85 -84
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { solidComponent } from "../components/utils.js";
|
|
1
2
|
import { isEmpty, toArr, unFn } from "../utils.js";
|
|
2
3
|
import { Tags } from "./RenderPlugin/components.js";
|
|
3
4
|
import { editors } from "./EditablePlugin.js";
|
|
@@ -14,80 +15,80 @@ const OrmPlugin = {
|
|
|
14
15
|
name: "orm",
|
|
15
16
|
priority: -Infinity,
|
|
16
17
|
store: (e) => ({}),
|
|
17
|
-
rewriteProps: { Table: ({ Table: e }, { store:
|
|
18
|
-
let
|
|
18
|
+
rewriteProps: { Table: ({ Table: e }, { store: y }) => (b) => {
|
|
19
|
+
let x = createMutable({});
|
|
19
20
|
return createComputed(() => {
|
|
20
|
-
let e =
|
|
21
|
-
if (e.length) for (let
|
|
22
|
-
if (
|
|
23
|
-
Object.defineProperty(e,
|
|
24
|
-
get: () => get(
|
|
25
|
-
set: (
|
|
21
|
+
let e = y.props.columns?.filter((e) => (e.type == "fk" || e.type == "fks") && e.foreignField);
|
|
22
|
+
if (e.length) for (let b of e) for (let e of y.props.data) {
|
|
23
|
+
if (b.foreignField in e) continue;
|
|
24
|
+
Object.defineProperty(e, b.foreignField, {
|
|
25
|
+
get: () => get(x, [b.id, e[y.props.rowKey]]),
|
|
26
|
+
set: (S) => untrack(() => set(x, [b.id, e[y.props.rowKey]], S)),
|
|
26
27
|
enumerable: !0,
|
|
27
28
|
configurable: !0
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
|
-
}), createComponent(e,
|
|
31
|
+
}), createComponent(e, b);
|
|
31
32
|
} }
|
|
32
33
|
};
|
|
33
|
-
var createEditor = (e) => (
|
|
34
|
-
let { eventKey:
|
|
34
|
+
var createEditor = (e) => (y) => createRoot((b) => {
|
|
35
|
+
let { eventKey: x, value: S, col: C, ok: w, cancel: T, props: E, onChange: D } = y, [O, k] = createSignal(S), A;
|
|
35
36
|
return setTimeout(() => {
|
|
36
|
-
|
|
37
|
+
A?.showPicker?.();
|
|
37
38
|
}, 0), {
|
|
38
39
|
el: createComponent(e, mergeProps({
|
|
39
|
-
ref: (e) =>
|
|
40
|
+
ref: (e) => A = e,
|
|
40
41
|
get value() {
|
|
41
|
-
return
|
|
42
|
+
return O();
|
|
42
43
|
},
|
|
43
|
-
onChange: (e) => (
|
|
44
|
-
},
|
|
45
|
-
getValue:
|
|
46
|
-
destroy:
|
|
47
|
-
dialog:
|
|
44
|
+
onChange: (e) => (k(e), D?.(O()), !Array.isArray(O()) && w())
|
|
45
|
+
}, E, { aaa: y })),
|
|
46
|
+
getValue: O,
|
|
47
|
+
destroy: b,
|
|
48
|
+
dialog: C.dialog
|
|
48
49
|
};
|
|
49
50
|
}), ObjTags = (e) => {
|
|
50
|
-
let
|
|
51
|
-
[e,
|
|
51
|
+
let y;
|
|
52
|
+
[e, y] = splitProps(e, [
|
|
52
53
|
"col",
|
|
53
54
|
"data",
|
|
54
55
|
"value",
|
|
55
56
|
"onChange",
|
|
56
57
|
"multiple"
|
|
57
58
|
]);
|
|
58
|
-
let
|
|
59
|
+
let C = () => unFn(e.col.table, { data: e.data }), w = () => C()?.columns?.[0].id, T = () => C()?.rowKey ?? "id";
|
|
59
60
|
return createComponent(Tags, mergeProps({
|
|
60
61
|
get value() {
|
|
61
62
|
return toArr(e.value).map((e) => ({
|
|
62
|
-
label: e[
|
|
63
|
-
value: e[
|
|
63
|
+
label: e[w()],
|
|
64
|
+
value: e[T()]
|
|
64
65
|
}));
|
|
65
66
|
},
|
|
66
|
-
onChange: (
|
|
67
|
-
},
|
|
67
|
+
onChange: (y) => e.onChange?.(e.multiple ? y : y[0])
|
|
68
|
+
}, y));
|
|
68
69
|
}, FKTags = (e) => {
|
|
69
|
-
let
|
|
70
|
-
[e,
|
|
70
|
+
let y;
|
|
71
|
+
[e, y] = splitProps(e, [
|
|
71
72
|
"col",
|
|
72
73
|
"data",
|
|
73
74
|
"value",
|
|
74
75
|
"onChange",
|
|
75
76
|
"multiple"
|
|
76
77
|
]);
|
|
77
|
-
let
|
|
78
|
+
let C = () => unFn(e.col.table, { data: e.data }), w = () => C()?.columns?.[0].id, T = () => C()?.rowKey ?? "id", [E] = createResource(() => e.value, () => fetchDataByKeys(toArr(e.value).map((e) => e && typeof e != "object" ? e : e[T()]), C()), { initialValue: [] });
|
|
78
79
|
return createComputed(() => {
|
|
79
|
-
|
|
80
|
+
E(), untrack(() => set(e.data, e.col.foreignField, e.multiple ? E() : E()[0]));
|
|
80
81
|
}), createComponent(Tags, mergeProps({
|
|
81
82
|
get value() {
|
|
82
|
-
return
|
|
83
|
-
label: e[
|
|
84
|
-
value: e[
|
|
83
|
+
return E().map((e) => ({
|
|
84
|
+
label: e[w()],
|
|
85
|
+
value: e[T()]
|
|
85
86
|
}));
|
|
86
87
|
},
|
|
87
|
-
onChange: (
|
|
88
|
-
},
|
|
88
|
+
onChange: (y) => e.onChange?.(e.multiple ? y : y[0])
|
|
89
|
+
}, y));
|
|
89
90
|
}, ObjEditor = createEditor((e) => {
|
|
90
|
-
let y = mergeProps$1(() => e.aaa.col),
|
|
91
|
+
let y = mergeProps$1(() => e.aaa.col), S = () => unFn(y.table, { data: e.aaa.data }), C = () => S()?.rowKey ?? "id", w = () => y.type == "objs" || y.type == "fks", E = () => y.type == "fk" || y.type == "fks", k = () => E() ? toArr(e.value).map((e) => ({ [C()]: e })) : toArr(e.value), j = (y) => e.onChange(E() ? w() ? y.map((e) => e[C()]) : y?.[C()] ?? null : y);
|
|
91
92
|
return memo(() => memo(() => !!y.dialog)() ? createComponent(Dialog, {
|
|
92
93
|
get title() {
|
|
93
94
|
return `选择 ${y.name}`;
|
|
@@ -100,12 +101,12 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
100
101
|
},
|
|
101
102
|
class: "min-w-[40vw]",
|
|
102
103
|
get children() {
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
var
|
|
106
|
-
return insert(
|
|
107
|
-
var
|
|
108
|
-
return () =>
|
|
104
|
+
var b = _tmpl$(), x = b.firstChild, C = x.firstChild, T = C.firstChild, M = T.firstChild, N = M.nextSibling;
|
|
105
|
+
N.nextSibling;
|
|
106
|
+
var P = T.nextSibling, F = x.nextSibling;
|
|
107
|
+
return insert(T, () => k().length, N), P.$$click = () => e.onChange?.(w() ? [] : null), insert(x, (() => {
|
|
108
|
+
var b = memo(() => !!E());
|
|
109
|
+
return () => b() ? createComponent(FKTags, mergeProps(e, {
|
|
109
110
|
class: "ml-2",
|
|
110
111
|
col: y,
|
|
111
112
|
get data() {
|
|
@@ -114,9 +115,9 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
114
115
|
get value() {
|
|
115
116
|
return k();
|
|
116
117
|
},
|
|
117
|
-
onChange:
|
|
118
|
+
onChange: j,
|
|
118
119
|
get multiple() {
|
|
119
|
-
return
|
|
120
|
+
return w();
|
|
120
121
|
}
|
|
121
122
|
})) : createComponent(ObjTags, mergeProps(e, {
|
|
122
123
|
class: "ml-2",
|
|
@@ -127,29 +128,29 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
127
128
|
get value() {
|
|
128
129
|
return k();
|
|
129
130
|
},
|
|
130
|
-
onChange:
|
|
131
|
+
onChange: j,
|
|
131
132
|
get multiple() {
|
|
132
|
-
return
|
|
133
|
+
return w();
|
|
133
134
|
}
|
|
134
135
|
}));
|
|
135
|
-
})(), null), insert(
|
|
136
|
+
})(), null), insert(F, createComponent(Intable, mergeProps({ get renderer() {
|
|
136
137
|
return useContext(Ctx).props.renderer;
|
|
137
|
-
} },
|
|
138
|
+
} }, S, {
|
|
138
139
|
class: "max-h-[65vh]",
|
|
139
140
|
get rowSelection() {
|
|
140
141
|
return {
|
|
141
|
-
...
|
|
142
|
+
...S()?.rowSelection,
|
|
142
143
|
enable: !0,
|
|
143
|
-
multiple:
|
|
144
|
+
multiple: w(),
|
|
144
145
|
value: k(),
|
|
145
|
-
onChange:
|
|
146
|
+
onChange: j
|
|
146
147
|
};
|
|
147
148
|
}
|
|
148
|
-
}))),
|
|
149
|
+
}))), b;
|
|
149
150
|
}
|
|
150
151
|
}) : createComponent(TableSelect, mergeProps(e, {
|
|
151
152
|
get table() {
|
|
152
|
-
return
|
|
153
|
+
return S();
|
|
153
154
|
},
|
|
154
155
|
get valueObject() {
|
|
155
156
|
return !E();
|
|
@@ -157,69 +158,69 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
157
158
|
class: "min-h-full outline-1.5 outline-offset--1.5 outline-[--c-primary] bg-[--table-bg] py-1",
|
|
158
159
|
border: !1,
|
|
159
160
|
get multiple() {
|
|
160
|
-
return
|
|
161
|
+
return w();
|
|
161
162
|
}
|
|
162
163
|
})));
|
|
163
164
|
});
|
|
164
165
|
const TableSelect = (e) => {
|
|
165
|
-
let
|
|
166
|
+
let y = () => e.table?.rowKey ?? "id", x = () => e.multiple, S = () => !e.valueObject, C = () => S() ? toArr(e.value) : toArr(e.value).map((e) => e[y()]), [w] = createResource(C, () => fetchDataByKeys(C(), e.table), { initialValue: [] });
|
|
166
167
|
return createComponent(Select, mergeProps(e, {
|
|
167
168
|
searchable: !0,
|
|
168
169
|
get options() {
|
|
169
|
-
return
|
|
170
|
-
label:
|
|
171
|
-
value:
|
|
170
|
+
return w().map((b) => ({
|
|
171
|
+
label: b[e.table?.columns?.[0].id],
|
|
172
|
+
value: S() ? b[y()] : b
|
|
172
173
|
}));
|
|
173
174
|
},
|
|
174
|
-
request: async ({ keyword:
|
|
175
|
-
let
|
|
176
|
-
return
|
|
175
|
+
request: async ({ keyword: b }) => {
|
|
176
|
+
let x = [];
|
|
177
|
+
return b && x.push({
|
|
177
178
|
field: e.table?.columns?.[0].id,
|
|
178
179
|
op: "like",
|
|
179
|
-
value:
|
|
180
|
-
}), e.table?.filter &&
|
|
181
|
-
label:
|
|
182
|
-
value:
|
|
180
|
+
value: b
|
|
181
|
+
}), e.table?.filter && x.push(...e.table.filter.value ?? e.table.filter.initialValue ?? e.table.filter.defaultValue ?? []), e.table?.request?.({ filters: x }).then((b) => b.data.map((b) => ({
|
|
182
|
+
label: b[e.table?.columns?.[0].id],
|
|
183
|
+
value: S() ? b[y()] : b
|
|
183
184
|
}))) ?? [];
|
|
184
185
|
},
|
|
185
186
|
get valueKey() {
|
|
186
|
-
return memo(() => !!
|
|
187
|
+
return memo(() => !!S())() ? void 0 : y();
|
|
187
188
|
},
|
|
188
189
|
get value() {
|
|
189
190
|
return e.value;
|
|
190
191
|
},
|
|
191
|
-
onChange: (
|
|
192
|
+
onChange: (y) => e.onChange?.(y),
|
|
192
193
|
get multiple() {
|
|
193
|
-
return
|
|
194
|
+
return x();
|
|
194
195
|
}
|
|
195
196
|
}));
|
|
196
197
|
};
|
|
197
|
-
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, {
|
|
198
|
+
editors.obj = ObjEditor, editors.objs = ObjEditor, editors.fk = ObjEditor, editors.fks = ObjEditor, renders.fk = solidComponent((e) => createComponent(FKTags, mergeProps(e, { disabled: !0 }))), renders.fks = solidComponent((e) => createComponent(FKTags, mergeProps(e, {
|
|
198
199
|
disabled: !0,
|
|
199
200
|
multiple: !0
|
|
200
|
-
})), renders.obj = (e) => createComponent(ObjTags, mergeProps(e, { disabled: !0 })), renders.objs = (e) => createComponent(ObjTags, mergeProps(e, {
|
|
201
|
+
}))), renders.obj = solidComponent((e) => createComponent(ObjTags, mergeProps(e, { disabled: !0 }))), renders.objs = solidComponent((e) => createComponent(ObjTags, mergeProps(e, {
|
|
201
202
|
disabled: !0,
|
|
202
203
|
multiple: !0
|
|
203
|
-
}));
|
|
204
|
+
})));
|
|
204
205
|
const fetchDataByKeys = (() => {
|
|
205
|
-
let
|
|
206
|
-
let
|
|
207
|
-
return
|
|
206
|
+
let e = /* @__PURE__ */ new WeakMap(), b = (y) => {
|
|
207
|
+
let b = e.get(y.request) || e.set(y.request, {}).get(y.request);
|
|
208
|
+
return b[y.rowKey] ??= [{}, {}];
|
|
208
209
|
};
|
|
209
|
-
return async (
|
|
210
|
-
if (!
|
|
211
|
-
let [
|
|
212
|
-
if (
|
|
213
|
-
let e =
|
|
214
|
-
field:
|
|
210
|
+
return async (e, x) => {
|
|
211
|
+
if (!x.request || (e = e.filter((e) => !isEmpty(e)), !e.length)) return [];
|
|
212
|
+
let [S, C] = b(x), w = e.filter((e) => !S[e]);
|
|
213
|
+
if (w.length) {
|
|
214
|
+
let e = w.filter((e) => !C[e]), y = x.request({ filters: [{
|
|
215
|
+
field: x.rowKey,
|
|
215
216
|
op: "in",
|
|
216
217
|
value: e
|
|
217
218
|
}] });
|
|
218
|
-
e.forEach((e,
|
|
219
|
-
|
|
220
|
-
}), await Promise.all(
|
|
219
|
+
e.forEach((e, b) => {
|
|
220
|
+
C[e] = y.then((y) => S[e] = y.data[b]).finally(() => delete C[e]);
|
|
221
|
+
}), await Promise.all(w.map((e) => C[e]));
|
|
221
222
|
}
|
|
222
|
-
return
|
|
223
|
+
return e.map((e) => S[e]);
|
|
223
224
|
};
|
|
224
225
|
})();
|
|
225
226
|
delegateEvents(["click"]);
|