intable 0.0.70 → 0.0.72
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 +88 -85
- 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,82 @@ 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
|
+
color: ""
|
|
69
|
+
}, y));
|
|
68
70
|
}, FKTags = (e) => {
|
|
69
|
-
let
|
|
70
|
-
[e,
|
|
71
|
+
let y;
|
|
72
|
+
[e, y] = splitProps(e, [
|
|
71
73
|
"col",
|
|
72
74
|
"data",
|
|
73
75
|
"value",
|
|
74
76
|
"onChange",
|
|
75
77
|
"multiple"
|
|
76
78
|
]);
|
|
77
|
-
let
|
|
79
|
+
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
80
|
return createComputed(() => {
|
|
79
|
-
|
|
81
|
+
E(), untrack(() => set(e.data, e.col.foreignField, e.multiple ? E() : E()[0]));
|
|
80
82
|
}), createComponent(Tags, mergeProps({
|
|
81
83
|
get value() {
|
|
82
|
-
return
|
|
83
|
-
label: e[
|
|
84
|
-
value: e[
|
|
84
|
+
return E().map((e) => ({
|
|
85
|
+
label: e[w()],
|
|
86
|
+
value: e[T()]
|
|
85
87
|
}));
|
|
86
88
|
},
|
|
87
|
-
onChange: (
|
|
88
|
-
|
|
89
|
+
onChange: (y) => e.onChange?.(e.multiple ? y : y[0]),
|
|
90
|
+
color: ""
|
|
91
|
+
}, y));
|
|
89
92
|
}, ObjEditor = createEditor((e) => {
|
|
90
|
-
let y = mergeProps$1(() => e.aaa.col),
|
|
93
|
+
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
94
|
return memo(() => memo(() => !!y.dialog)() ? createComponent(Dialog, {
|
|
92
95
|
get title() {
|
|
93
96
|
return `选择 ${y.name}`;
|
|
@@ -100,12 +103,12 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
100
103
|
},
|
|
101
104
|
class: "min-w-[40vw]",
|
|
102
105
|
get children() {
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
var
|
|
106
|
-
return insert(
|
|
107
|
-
var
|
|
108
|
-
return () =>
|
|
106
|
+
var b = _tmpl$(), x = b.firstChild, C = x.firstChild, T = C.firstChild, M = T.firstChild, N = M.nextSibling;
|
|
107
|
+
N.nextSibling;
|
|
108
|
+
var P = T.nextSibling, F = x.nextSibling;
|
|
109
|
+
return insert(T, () => k().length, N), P.$$click = () => e.onChange?.(w() ? [] : null), insert(x, (() => {
|
|
110
|
+
var b = memo(() => !!E());
|
|
111
|
+
return () => b() ? createComponent(FKTags, mergeProps(e, {
|
|
109
112
|
class: "ml-2",
|
|
110
113
|
col: y,
|
|
111
114
|
get data() {
|
|
@@ -114,9 +117,9 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
114
117
|
get value() {
|
|
115
118
|
return k();
|
|
116
119
|
},
|
|
117
|
-
onChange:
|
|
120
|
+
onChange: j,
|
|
118
121
|
get multiple() {
|
|
119
|
-
return
|
|
122
|
+
return w();
|
|
120
123
|
}
|
|
121
124
|
})) : createComponent(ObjTags, mergeProps(e, {
|
|
122
125
|
class: "ml-2",
|
|
@@ -127,29 +130,29 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
127
130
|
get value() {
|
|
128
131
|
return k();
|
|
129
132
|
},
|
|
130
|
-
onChange:
|
|
133
|
+
onChange: j,
|
|
131
134
|
get multiple() {
|
|
132
|
-
return
|
|
135
|
+
return w();
|
|
133
136
|
}
|
|
134
137
|
}));
|
|
135
|
-
})(), null), insert(
|
|
138
|
+
})(), null), insert(F, createComponent(Intable, mergeProps({ get renderer() {
|
|
136
139
|
return useContext(Ctx).props.renderer;
|
|
137
|
-
} },
|
|
140
|
+
} }, S, {
|
|
138
141
|
class: "max-h-[65vh]",
|
|
139
142
|
get rowSelection() {
|
|
140
143
|
return {
|
|
141
|
-
...
|
|
144
|
+
...S()?.rowSelection,
|
|
142
145
|
enable: !0,
|
|
143
|
-
multiple:
|
|
146
|
+
multiple: w(),
|
|
144
147
|
value: k(),
|
|
145
|
-
onChange:
|
|
148
|
+
onChange: j
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
|
-
}))),
|
|
151
|
+
}))), b;
|
|
149
152
|
}
|
|
150
153
|
}) : createComponent(TableSelect, mergeProps(e, {
|
|
151
154
|
get table() {
|
|
152
|
-
return
|
|
155
|
+
return S();
|
|
153
156
|
},
|
|
154
157
|
get valueObject() {
|
|
155
158
|
return !E();
|
|
@@ -157,69 +160,69 @@ var createEditor = (e) => (_) => createRoot((v) => {
|
|
|
157
160
|
class: "min-h-full outline-1.5 outline-offset--1.5 outline-[--c-primary] bg-[--table-bg] py-1",
|
|
158
161
|
border: !1,
|
|
159
162
|
get multiple() {
|
|
160
|
-
return
|
|
163
|
+
return w();
|
|
161
164
|
}
|
|
162
165
|
})));
|
|
163
166
|
});
|
|
164
167
|
const TableSelect = (e) => {
|
|
165
|
-
let
|
|
168
|
+
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
169
|
return createComponent(Select, mergeProps(e, {
|
|
167
170
|
searchable: !0,
|
|
168
171
|
get options() {
|
|
169
|
-
return
|
|
170
|
-
label:
|
|
171
|
-
value:
|
|
172
|
+
return w().map((b) => ({
|
|
173
|
+
label: b[e.table?.columns?.[0].id],
|
|
174
|
+
value: S() ? b[y()] : b
|
|
172
175
|
}));
|
|
173
176
|
},
|
|
174
|
-
request: async ({ keyword:
|
|
175
|
-
let
|
|
176
|
-
return
|
|
177
|
+
request: async ({ keyword: b }) => {
|
|
178
|
+
let x = [];
|
|
179
|
+
return b && x.push({
|
|
177
180
|
field: e.table?.columns?.[0].id,
|
|
178
181
|
op: "like",
|
|
179
|
-
value:
|
|
180
|
-
}), e.table?.filter &&
|
|
181
|
-
label:
|
|
182
|
-
value:
|
|
182
|
+
value: b
|
|
183
|
+
}), 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) => ({
|
|
184
|
+
label: b[e.table?.columns?.[0].id],
|
|
185
|
+
value: S() ? b[y()] : b
|
|
183
186
|
}))) ?? [];
|
|
184
187
|
},
|
|
185
188
|
get valueKey() {
|
|
186
|
-
return memo(() => !!
|
|
189
|
+
return memo(() => !!S())() ? void 0 : y();
|
|
187
190
|
},
|
|
188
191
|
get value() {
|
|
189
192
|
return e.value;
|
|
190
193
|
},
|
|
191
|
-
onChange: (
|
|
194
|
+
onChange: (y) => e.onChange?.(y),
|
|
192
195
|
get multiple() {
|
|
193
|
-
return
|
|
196
|
+
return x();
|
|
194
197
|
}
|
|
195
198
|
}));
|
|
196
199
|
};
|
|
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, {
|
|
200
|
+
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
201
|
disabled: !0,
|
|
199
202
|
multiple: !0
|
|
200
|
-
})), renders.obj = (e) => createComponent(ObjTags, mergeProps(e, { disabled: !0 })), renders.objs = (e) => createComponent(ObjTags, mergeProps(e, {
|
|
203
|
+
}))), renders.obj = solidComponent((e) => createComponent(ObjTags, mergeProps(e, { disabled: !0 }))), renders.objs = solidComponent((e) => createComponent(ObjTags, mergeProps(e, {
|
|
201
204
|
disabled: !0,
|
|
202
205
|
multiple: !0
|
|
203
|
-
}));
|
|
206
|
+
})));
|
|
204
207
|
const fetchDataByKeys = (() => {
|
|
205
|
-
let
|
|
206
|
-
let
|
|
207
|
-
return
|
|
208
|
+
let e = /* @__PURE__ */ new WeakMap(), b = (y) => {
|
|
209
|
+
let b = e.get(y.request) || e.set(y.request, {}).get(y.request);
|
|
210
|
+
return b[y.rowKey] ??= [{}, {}];
|
|
208
211
|
};
|
|
209
|
-
return async (
|
|
210
|
-
if (!
|
|
211
|
-
let [
|
|
212
|
-
if (
|
|
213
|
-
let e =
|
|
214
|
-
field:
|
|
212
|
+
return async (e, x) => {
|
|
213
|
+
if (!x.request || (e = e.filter((e) => !isEmpty(e)), !e.length)) return [];
|
|
214
|
+
let [S, C] = b(x), w = e.filter((e) => !S[e]), T = w.filter((e) => !C[e]);
|
|
215
|
+
if (T.length) {
|
|
216
|
+
let e = x.request({ filters: [{
|
|
217
|
+
field: x.rowKey,
|
|
215
218
|
op: "in",
|
|
216
|
-
value:
|
|
219
|
+
value: T
|
|
217
220
|
}] });
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}), await Promise.all(
|
|
221
|
+
T.forEach((y, b) => {
|
|
222
|
+
C[y] = e.then((e) => S[y] = e.data[b]).finally(() => delete C[y]);
|
|
223
|
+
}), await Promise.all(w.map((e) => C[e]));
|
|
221
224
|
}
|
|
222
|
-
return
|
|
225
|
+
return e.map((e) => S[e]);
|
|
223
226
|
};
|
|
224
227
|
})();
|
|
225
228
|
delegateEvents(["click"]);
|