intable 0.0.54 → 0.0.56
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.
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolveOptions } from "../utils.js";
|
|
2
2
|
import { AndOr } from "./AndOr.js";
|
|
3
|
-
import { className, createComponent, delegateEvents, effect, insert, memo, mergeProps, setAttribute, template } from "solid-js/web";
|
|
3
|
+
import { className, createComponent, delegateEvents, effect, insert, memo, mergeProps, setAttribute, spread, template } from "solid-js/web";
|
|
4
4
|
import { Match, Switch, createMemo } from "solid-js";
|
|
5
|
-
var _tmpl$ = /* @__PURE__ */ template("<
|
|
6
|
-
function isValueFreeOp(
|
|
7
|
-
return VALUE_FREE_RULES.includes(
|
|
5
|
+
var _tmpl$ = /* @__PURE__ */ template("<input>"), _tmpl$2 = /* @__PURE__ */ template("<input type=number>"), _tmpl$3 = /* @__PURE__ */ template("<input type=date>"), _tmpl$4 = /* @__PURE__ */ template("<div class=\"flex-1 flex items-center gap-1\"><input placeholder=开始><span class=\"text-xs c-gray/70\">~</span><input placeholder=结束>"), _tmpl$5 = /* @__PURE__ */ template("<div class=\"flex items-center gap-2\">"), _tmpl$6 = /* @__PURE__ */ template("<select>"), _tmpl$7 = /* @__PURE__ */ template("<option value>"), _tmpl$8 = /* @__PURE__ */ template("<option>"), VALUE_FREE_RULES = ["blank", "noblank"];
|
|
6
|
+
function isValueFreeOp(c) {
|
|
7
|
+
return VALUE_FREE_RULES.includes(c);
|
|
8
8
|
}
|
|
9
9
|
const RULES_BY_TYPE = {
|
|
10
10
|
text: [
|
|
@@ -198,38 +198,38 @@ const RULES_BY_TYPE = {
|
|
|
198
198
|
}
|
|
199
199
|
]
|
|
200
200
|
};
|
|
201
|
-
function isBetweenOp(
|
|
202
|
-
return
|
|
201
|
+
function isBetweenOp(c) {
|
|
202
|
+
return c === "between" || c === "not_between";
|
|
203
203
|
}
|
|
204
|
-
function isListOp(
|
|
205
|
-
return
|
|
204
|
+
function isListOp(c) {
|
|
205
|
+
return c === "in" || c === "not_in";
|
|
206
206
|
}
|
|
207
|
-
function toPair(
|
|
208
|
-
return Array.isArray(
|
|
207
|
+
function toPair(c) {
|
|
208
|
+
return Array.isArray(c) ? [c[0] ?? "", c[1] ?? ""] : c == null || c === "" ? ["", ""] : [c, ""];
|
|
209
209
|
}
|
|
210
|
-
function toList(
|
|
211
|
-
return Array.isArray(
|
|
210
|
+
function toList(c) {
|
|
211
|
+
return Array.isArray(c) ? c : c == null || c === "" ? [] : String(c).split(",").map((c) => c.trim()).filter(Boolean);
|
|
212
212
|
}
|
|
213
|
-
const RuleValueEditor = (
|
|
214
|
-
let
|
|
213
|
+
const RuleValueEditor = (O) => {
|
|
214
|
+
let j = () => normalizeType(O.field), N = () => resolveOptions(O.enum ?? []), F = () => O.op || defaultOp(j());
|
|
215
215
|
return createComponent(Switch, {
|
|
216
216
|
get fallback() {
|
|
217
217
|
return (() => {
|
|
218
|
-
var
|
|
219
|
-
return
|
|
220
|
-
var
|
|
221
|
-
return
|
|
218
|
+
var c = _tmpl$();
|
|
219
|
+
return c.$$input = (c) => O.onChange(c.target.value), effect((A) => {
|
|
220
|
+
var j = O.class ?? "flex-1 px-2 py-1 rounded-md border", M = O.placeholder;
|
|
221
|
+
return j !== A.e && className(c, A.e = j), M !== A.t && setAttribute(c, "placeholder", A.t = M), A;
|
|
222
222
|
}, {
|
|
223
223
|
e: void 0,
|
|
224
224
|
t: void 0
|
|
225
|
-
}), effect(() =>
|
|
225
|
+
}), effect(() => c.value = O.value ?? ""), c;
|
|
226
226
|
})();
|
|
227
227
|
},
|
|
228
228
|
get children() {
|
|
229
229
|
return [
|
|
230
230
|
createComponent(Match, {
|
|
231
231
|
get when() {
|
|
232
|
-
return isValueFreeOp(
|
|
232
|
+
return isValueFreeOp(O.op || defaultOp(j()));
|
|
233
233
|
},
|
|
234
234
|
get children() {
|
|
235
235
|
return [];
|
|
@@ -237,85 +237,101 @@ const RuleValueEditor = (w) => {
|
|
|
237
237
|
}),
|
|
238
238
|
createComponent(Match, {
|
|
239
239
|
get when() {
|
|
240
|
-
return isBetweenOp(
|
|
240
|
+
return isBetweenOp(F());
|
|
241
241
|
},
|
|
242
242
|
get children() {
|
|
243
243
|
return (() => {
|
|
244
|
-
let [
|
|
244
|
+
let [c, A] = toPair(O.value), N = j() === "number" ? "number" : j() === "date" ? "date" : "text";
|
|
245
245
|
return (() => {
|
|
246
|
-
var
|
|
247
|
-
return
|
|
248
|
-
var
|
|
249
|
-
return
|
|
246
|
+
var j = _tmpl$4(), P = j.firstChild, F = P.nextSibling, I = F.nextSibling;
|
|
247
|
+
return P.$$input = (c) => O.onChange([c.target.value, A ?? ""]), setAttribute(P, "type", N), P.value = c ?? "", I.$$input = (k) => O.onChange([c ?? "", k.target.value]), setAttribute(I, "type", N), I.value = A ?? "", effect((c) => {
|
|
248
|
+
var A = O.class ?? "flex-1 px-2 py-1 rounded-md border", j = O.class ?? "flex-1 px-2 py-1 rounded-md border";
|
|
249
|
+
return A !== c.e && className(P, c.e = A), j !== c.t && className(I, c.t = j), c;
|
|
250
250
|
}, {
|
|
251
251
|
e: void 0,
|
|
252
252
|
t: void 0
|
|
253
|
-
}),
|
|
253
|
+
}), j;
|
|
254
254
|
})();
|
|
255
255
|
})();
|
|
256
256
|
}
|
|
257
257
|
}),
|
|
258
258
|
createComponent(Match, {
|
|
259
259
|
get when() {
|
|
260
|
-
return memo(() => !!isListOp(
|
|
260
|
+
return memo(() => !!isListOp(F()))() && j() === "enum";
|
|
261
261
|
},
|
|
262
262
|
get children() {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
263
|
+
return createComponent(Select, {
|
|
264
|
+
get class() {
|
|
265
|
+
return O.class ?? "flex-1 px-2 py-1 rounded-md border";
|
|
266
|
+
},
|
|
267
|
+
multiple: !0,
|
|
268
|
+
get value() {
|
|
269
|
+
return toList(O.value).map((c) => String(c));
|
|
270
|
+
},
|
|
271
|
+
onChange: (c) => O.onChange(c),
|
|
272
|
+
get options() {
|
|
273
|
+
return N();
|
|
274
|
+
}
|
|
275
|
+
});
|
|
268
276
|
}
|
|
269
277
|
}),
|
|
270
278
|
createComponent(Match, {
|
|
271
279
|
get when() {
|
|
272
|
-
return isListOp(
|
|
280
|
+
return isListOp(F());
|
|
273
281
|
},
|
|
274
282
|
get children() {
|
|
275
|
-
var
|
|
276
|
-
return
|
|
277
|
-
var
|
|
278
|
-
return
|
|
283
|
+
var c = _tmpl$();
|
|
284
|
+
return c.$$input = (c) => O.onChange(toList(c.target.value)), effect((A) => {
|
|
285
|
+
var j = O.class ?? "flex-1 px-2 py-1 rounded-md border", M = O.placeholder ?? "多个值用逗号分隔";
|
|
286
|
+
return j !== A.e && className(c, A.e = j), M !== A.t && setAttribute(c, "placeholder", A.t = M), A;
|
|
279
287
|
}, {
|
|
280
288
|
e: void 0,
|
|
281
289
|
t: void 0
|
|
282
|
-
}), effect(() =>
|
|
290
|
+
}), effect(() => c.value = toList(O.value).join(", ")), c;
|
|
283
291
|
}
|
|
284
292
|
}),
|
|
285
293
|
createComponent(Match, {
|
|
286
294
|
get when() {
|
|
287
|
-
return
|
|
295
|
+
return j() === "number";
|
|
288
296
|
},
|
|
289
297
|
get children() {
|
|
290
|
-
var
|
|
291
|
-
return
|
|
292
|
-
var
|
|
293
|
-
return
|
|
298
|
+
var c = _tmpl$2();
|
|
299
|
+
return c.$$input = (c) => O.onChange(c.target.value), effect((A) => {
|
|
300
|
+
var j = O.class ?? "flex-1 px-2 py-1 rounded-md border", M = O.placeholder;
|
|
301
|
+
return j !== A.e && className(c, A.e = j), M !== A.t && setAttribute(c, "placeholder", A.t = M), A;
|
|
294
302
|
}, {
|
|
295
303
|
e: void 0,
|
|
296
304
|
t: void 0
|
|
297
|
-
}), effect(() =>
|
|
305
|
+
}), effect(() => c.value = O.value ?? ""), c;
|
|
298
306
|
}
|
|
299
307
|
}),
|
|
300
308
|
createComponent(Match, {
|
|
301
309
|
get when() {
|
|
302
|
-
return
|
|
310
|
+
return j() === "date";
|
|
303
311
|
},
|
|
304
312
|
get children() {
|
|
305
|
-
var
|
|
306
|
-
return
|
|
313
|
+
var c = _tmpl$3();
|
|
314
|
+
return c.$$input = (c) => O.onChange(c.target.value), effect(() => className(c, O.class ?? "flex-1 px-2 py-1 rounded-md border")), effect(() => c.value = O.value ?? ""), c;
|
|
307
315
|
}
|
|
308
316
|
}),
|
|
309
317
|
createComponent(Match, {
|
|
310
318
|
get when() {
|
|
311
|
-
return
|
|
319
|
+
return j() === "enum";
|
|
312
320
|
},
|
|
313
321
|
get children() {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
322
|
+
return createComponent(Select, {
|
|
323
|
+
get class() {
|
|
324
|
+
return O.class ?? "flex-1 px-2 py-1 rounded-md border";
|
|
325
|
+
},
|
|
326
|
+
get value() {
|
|
327
|
+
return O.value ?? "";
|
|
328
|
+
},
|
|
329
|
+
onChange: (c) => O.onChange(c),
|
|
330
|
+
get options() {
|
|
331
|
+
return N();
|
|
332
|
+
},
|
|
333
|
+
clearable: !0
|
|
334
|
+
});
|
|
319
335
|
}
|
|
320
336
|
}),
|
|
321
337
|
createComponent(Match, {
|
|
@@ -324,76 +340,126 @@ const RuleValueEditor = (w) => {
|
|
|
324
340
|
"checkbox",
|
|
325
341
|
"switch",
|
|
326
342
|
"boolean"
|
|
327
|
-
].includes(
|
|
343
|
+
].includes(j());
|
|
328
344
|
},
|
|
329
345
|
get children() {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
346
|
+
return createComponent(Select, {
|
|
347
|
+
get class() {
|
|
348
|
+
return O.class ?? "flex-1 px-2 py-1 rounded-md border";
|
|
349
|
+
},
|
|
350
|
+
get value() {
|
|
351
|
+
return O.value ?? "";
|
|
352
|
+
},
|
|
353
|
+
onChange: (c) => O.onChange(c),
|
|
354
|
+
options: [{
|
|
355
|
+
label: "true",
|
|
356
|
+
value: "true"
|
|
357
|
+
}, {
|
|
358
|
+
label: "false",
|
|
359
|
+
value: "false"
|
|
360
|
+
}],
|
|
361
|
+
clearable: !0
|
|
362
|
+
});
|
|
335
363
|
}
|
|
336
364
|
})
|
|
337
365
|
];
|
|
338
366
|
}
|
|
339
367
|
});
|
|
340
368
|
};
|
|
341
|
-
function normalizeType(
|
|
342
|
-
return
|
|
369
|
+
function normalizeType(c) {
|
|
370
|
+
return c?.enum ? "enum" : c?.type ?? "text";
|
|
343
371
|
}
|
|
344
|
-
function defaultOp(
|
|
345
|
-
return RULES_BY_TYPE[
|
|
372
|
+
function defaultOp(c) {
|
|
373
|
+
return RULES_BY_TYPE[c]?.[0]?.value;
|
|
346
374
|
}
|
|
347
|
-
function newRule(
|
|
348
|
-
let
|
|
375
|
+
function newRule(c, O) {
|
|
376
|
+
let k = normalizeType(c), A = defaultOp(k);
|
|
349
377
|
return {
|
|
350
|
-
field:
|
|
351
|
-
op:
|
|
352
|
-
value: VALUE_FREE_RULES.includes(
|
|
353
|
-
...
|
|
378
|
+
field: c.id,
|
|
379
|
+
op: A,
|
|
380
|
+
value: VALUE_FREE_RULES.includes(A) ? null : "",
|
|
381
|
+
...O
|
|
354
382
|
};
|
|
355
383
|
}
|
|
356
|
-
function normalizeValueByOp(
|
|
357
|
-
return VALUE_FREE_RULES.includes(
|
|
384
|
+
function normalizeValueByOp(c, O) {
|
|
385
|
+
return VALUE_FREE_RULES.includes(c) ? null : isBetweenOp(c) ? toPair(O) : isListOp(c) ? toList(O) : O ?? "";
|
|
358
386
|
}
|
|
359
|
-
const AndOrFields = (
|
|
360
|
-
let
|
|
387
|
+
const AndOrFields = (c) => createComponent(AndOr, mergeProps(c, { renderRule: (O) => {
|
|
388
|
+
let k = createMemo(() => c.fields.find((c) => c.id === O.node.field)), j = createMemo(() => normalizeType(k())), M = createMemo(() => RULES_BY_TYPE[j()]);
|
|
361
389
|
return (() => {
|
|
362
|
-
var
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
390
|
+
var P = _tmpl$5();
|
|
391
|
+
return insert(P, createComponent(Select, {
|
|
392
|
+
get class() {
|
|
393
|
+
return `px-2 py-1 rounded-md border ${c.hideFields ? "hidden" : ""}`;
|
|
394
|
+
},
|
|
395
|
+
get value() {
|
|
396
|
+
return O.node.field;
|
|
397
|
+
},
|
|
398
|
+
onChange: (k) => {
|
|
399
|
+
let A = c.fields.find((c) => c.id === k);
|
|
400
|
+
O.update(newRule(A, { field: k }));
|
|
401
|
+
},
|
|
402
|
+
get options() {
|
|
403
|
+
return c.fields.map((c) => ({
|
|
404
|
+
label: c.name ?? c.id,
|
|
405
|
+
value: c.id
|
|
406
|
+
}));
|
|
407
|
+
},
|
|
408
|
+
placeholder: "选择字段"
|
|
409
|
+
}), null), insert(P, createComponent(Select, {
|
|
410
|
+
class: "px-2 py-1 rounded-md border",
|
|
411
|
+
get value() {
|
|
412
|
+
return O.node.op || defaultOp(j());
|
|
413
|
+
},
|
|
414
|
+
onChange: (c) => {
|
|
415
|
+
O.update({
|
|
416
|
+
op: c,
|
|
417
|
+
value: normalizeValueByOp(c, O.node.value)
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
get options() {
|
|
421
|
+
return M();
|
|
422
|
+
}
|
|
423
|
+
}), null), insert(P, createComponent(RuleValueEditor, {
|
|
381
424
|
get field() {
|
|
382
|
-
return
|
|
425
|
+
return k();
|
|
383
426
|
},
|
|
384
427
|
get op() {
|
|
385
|
-
return
|
|
428
|
+
return O.node.op;
|
|
386
429
|
},
|
|
387
430
|
get value() {
|
|
388
|
-
return
|
|
431
|
+
return O.node.value;
|
|
389
432
|
},
|
|
390
433
|
get enum() {
|
|
391
|
-
return
|
|
434
|
+
return k()?.enum;
|
|
392
435
|
},
|
|
393
436
|
class: "flex-1 px-2 py-1 rounded-md border",
|
|
394
|
-
onChange: (
|
|
395
|
-
}), null),
|
|
437
|
+
onChange: (c) => O.update({ value: c })
|
|
438
|
+
}), null), P;
|
|
396
439
|
})();
|
|
397
440
|
} }));
|
|
441
|
+
var Select = (c) => (() => {
|
|
442
|
+
var O = _tmpl$6();
|
|
443
|
+
return spread(O, mergeProps(c, {
|
|
444
|
+
options: null,
|
|
445
|
+
clearable: null,
|
|
446
|
+
get class() {
|
|
447
|
+
return c.class ?? "flex-1 px-2 py-1 rounded-md border";
|
|
448
|
+
},
|
|
449
|
+
onChange: (O) => {
|
|
450
|
+
let k = O.target;
|
|
451
|
+
c.onChange?.(k.multiple ? [...k.selectedOptions].map((c) => c.value) : k.value);
|
|
452
|
+
}
|
|
453
|
+
}), !1, !0), insert(O, (() => {
|
|
454
|
+
var O = memo(() => !!(c.clearable || c.placeholder));
|
|
455
|
+
return () => O() && (() => {
|
|
456
|
+
var O = _tmpl$7();
|
|
457
|
+
return insert(O, () => c.placeholder), effect(() => O.disabled = !c.clearable), O;
|
|
458
|
+
})();
|
|
459
|
+
})(), null), insert(O, () => c.options?.map((c) => (() => {
|
|
460
|
+
var O = _tmpl$8();
|
|
461
|
+
return insert(O, () => c.label), effect(() => O.value = c.value), O;
|
|
462
|
+
})()), null), effect(() => O.value = c.value), O;
|
|
463
|
+
})();
|
|
398
464
|
delegateEvents(["input"]);
|
|
399
465
|
export { AndOrFields, RULES_BY_TYPE, RuleValueEditor, isValueFreeOp, newRule, normalizeType };
|
|
@@ -153,10 +153,10 @@ const editors = {
|
|
|
153
153
|
return spread(_, e, !1, !0), insert(_, (() => {
|
|
154
154
|
var _ = memo(() => !e.multiple);
|
|
155
155
|
return () => _() && _tmpl$7();
|
|
156
|
-
})(), null), insert(_, () => e.options?.map((
|
|
157
|
-
var
|
|
158
|
-
return insert(
|
|
159
|
-
})()), null), _;
|
|
156
|
+
})(), null), insert(_, () => e.options?.map((e) => (() => {
|
|
157
|
+
var _ = _tmpl$8();
|
|
158
|
+
return insert(_, () => e.label), effect(() => _.value = e.value), _;
|
|
159
|
+
})()), null), effect(() => _.value = e.value), _;
|
|
160
160
|
})(), {}, !0)
|
|
161
161
|
};
|
|
162
162
|
delegateEvents(["keydown", "input"]);
|