intable 0.0.55 → 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("<select multiple>"), _tmpl$2 = /* @__PURE__ */ template("<input>"), _tmpl$3 = /* @__PURE__ */ template("<input type=number>"), _tmpl$4 = /* @__PURE__ */ template("<input type=date>"), _tmpl$5 = /* @__PURE__ */ template("<select><option value>"), _tmpl$6 = /* @__PURE__ */ template("<div class=\"flex-1 flex items-center gap-1\"><input placeholder=开始><span class=\"text-xs c-gray/70\">~</span><input placeholder=结束>"), _tmpl$7 = /* @__PURE__ */ template("<option>"), _tmpl$8 = /* @__PURE__ */ template("<div class=\"flex items-center gap-2\"><select><option value disabled>选择字段</option></select><select class=\"px-2 py-1 rounded-md border\">"), VALUE_FREE_RULES = ["blank", "noblank"];
6
- function isValueFreeOp(o) {
7
- return VALUE_FREE_RULES.includes(o);
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(o) {
202
- return o === "between" || o === "not_between";
201
+ function isBetweenOp(c) {
202
+ return c === "between" || c === "not_between";
203
203
  }
204
- function isListOp(o) {
205
- return o === "in" || o === "not_in";
204
+ function isListOp(c) {
205
+ return c === "in" || c === "not_in";
206
206
  }
207
- function toPair(o) {
208
- return Array.isArray(o) ? [o[0] ?? "", o[1] ?? ""] : o == null || o === "" ? ["", ""] : [o, ""];
207
+ function toPair(c) {
208
+ return Array.isArray(c) ? [c[0] ?? "", c[1] ?? ""] : c == null || c === "" ? ["", ""] : [c, ""];
209
209
  }
210
- function toList(o) {
211
- return Array.isArray(o) ? o : o == null || o === "" ? [] : String(o).split(",").map((o) => o.trim()).filter(Boolean);
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 = (w) => {
214
- let D = () => normalizeType(w.field), j = () => resolveOptions(w.enum ?? []), N = () => w.op || defaultOp(D());
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 o = _tmpl$2();
219
- return o.$$input = (o) => w.onChange(o.target.value), effect((E) => {
220
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.placeholder;
221
- return D !== E.e && className(o, E.e = D), O !== E.t && setAttribute(o, "placeholder", E.t = O), E;
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(() => o.value = w.value ?? ""), o;
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(w.op || defaultOp(D()));
232
+ return isValueFreeOp(O.op || defaultOp(j()));
233
233
  },
234
234
  get children() {
235
235
  return [];
@@ -237,97 +237,101 @@ const RuleValueEditor = (w) => {
237
237
  }),
238
238
  createComponent(Match, {
239
239
  get when() {
240
- return isBetweenOp(N());
240
+ return isBetweenOp(F());
241
241
  },
242
242
  get children() {
243
243
  return (() => {
244
- let [o, E] = toPair(w.value), k = D() === "number" ? "number" : D() === "date" ? "date" : "text";
244
+ let [c, A] = toPair(O.value), N = j() === "number" ? "number" : j() === "date" ? "date" : "text";
245
245
  return (() => {
246
- var D = _tmpl$6(), A = D.firstChild, j = A.nextSibling, N = j.nextSibling;
247
- return A.$$input = (o) => w.onChange([o.target.value, E ?? ""]), setAttribute(A, "type", k), A.value = o ?? "", N.$$input = (T) => w.onChange([o ?? "", T.target.value]), setAttribute(N, "type", k), N.value = E ?? "", effect((o) => {
248
- var E = w.class ?? "flex-1 px-2 py-1 rounded-md border", D = w.class ?? "flex-1 px-2 py-1 rounded-md border";
249
- return E !== o.e && className(A, o.e = E), D !== o.t && className(N, o.t = D), o;
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
- }), D;
253
+ }), j;
254
254
  })();
255
255
  })();
256
256
  }
257
257
  }),
258
258
  createComponent(Match, {
259
259
  get when() {
260
- return memo(() => !!isListOp(N()))() && D() === "enum";
260
+ return memo(() => !!isListOp(F()))() && j() === "enum";
261
261
  },
262
262
  get children() {
263
- var o = _tmpl$();
264
- return o.addEventListener("change", (o) => w.onChange([...o.target.selectedOptions].map((o) => o.value))), insert(o, () => j().map((o) => (() => {
265
- var w = _tmpl$7();
266
- return insert(w, () => String(o.label)), effect(() => w.value = String(o.value)), w;
267
- })())), effect((E) => {
268
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = toList(w.value).map((o) => String(o));
269
- return D !== E.e && className(o, E.e = D), O !== E.t && (o.value = E.t = O), E;
270
- }, {
271
- e: void 0,
272
- t: void 0
273
- }), o;
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
+ });
274
276
  }
275
277
  }),
276
278
  createComponent(Match, {
277
279
  get when() {
278
- return isListOp(N());
280
+ return isListOp(F());
279
281
  },
280
282
  get children() {
281
- var o = _tmpl$2();
282
- return o.$$input = (o) => w.onChange(toList(o.target.value)), effect((E) => {
283
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.placeholder ?? "多个值用逗号分隔";
284
- return D !== E.e && className(o, E.e = D), O !== E.t && setAttribute(o, "placeholder", E.t = O), E;
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;
285
287
  }, {
286
288
  e: void 0,
287
289
  t: void 0
288
- }), effect(() => o.value = toList(w.value).join(", ")), o;
290
+ }), effect(() => c.value = toList(O.value).join(", ")), c;
289
291
  }
290
292
  }),
291
293
  createComponent(Match, {
292
294
  get when() {
293
- return D() === "number";
295
+ return j() === "number";
294
296
  },
295
297
  get children() {
296
- var o = _tmpl$3();
297
- return o.$$input = (o) => w.onChange(o.target.value), effect((E) => {
298
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.placeholder;
299
- return D !== E.e && className(o, E.e = D), O !== E.t && setAttribute(o, "placeholder", E.t = O), E;
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;
300
302
  }, {
301
303
  e: void 0,
302
304
  t: void 0
303
- }), effect(() => o.value = w.value ?? ""), o;
305
+ }), effect(() => c.value = O.value ?? ""), c;
304
306
  }
305
307
  }),
306
308
  createComponent(Match, {
307
309
  get when() {
308
- return D() === "date";
310
+ return j() === "date";
309
311
  },
310
312
  get children() {
311
- var o = _tmpl$4();
312
- return o.$$input = (o) => w.onChange(o.target.value), effect(() => className(o, w.class ?? "flex-1 px-2 py-1 rounded-md border")), effect(() => o.value = w.value ?? ""), o;
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;
313
315
  }
314
316
  }),
315
317
  createComponent(Match, {
316
318
  get when() {
317
- return D() === "enum";
319
+ return j() === "enum";
318
320
  },
319
321
  get children() {
320
- var o = _tmpl$5();
321
- return o.firstChild, o.$$input = (o) => w.onChange(o.target.value), insert(o, () => j().map((o) => (() => {
322
- var w = _tmpl$7();
323
- return insert(w, () => String(o.label)), effect(() => w.value = String(o.value)), w;
324
- })()), null), effect((E) => {
325
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.value ?? "";
326
- return D !== E.e && className(o, E.e = D), O !== E.t && (o.value = E.t = O), E;
327
- }, {
328
- e: void 0,
329
- t: void 0
330
- }), o;
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
+ });
331
335
  }
332
336
  }),
333
337
  createComponent(Match, {
@@ -336,89 +340,126 @@ const RuleValueEditor = (w) => {
336
340
  "checkbox",
337
341
  "switch",
338
342
  "boolean"
339
- ].includes(D());
343
+ ].includes(j());
340
344
  },
341
345
  get children() {
342
- var o = _tmpl$5();
343
- return o.firstChild, o.$$input = (o) => w.onChange(o.target.value), insert(o, () => [!0, !1].map((o) => (() => {
344
- var w = _tmpl$7();
345
- return insert(w, () => String(o)), effect(() => w.value = String(o)), w;
346
- })()), null), effect((E) => {
347
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.value ?? "";
348
- return D !== E.e && className(o, E.e = D), O !== E.t && (o.value = E.t = O), E;
349
- }, {
350
- e: void 0,
351
- t: void 0
352
- }), o;
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
+ });
353
363
  }
354
364
  })
355
365
  ];
356
366
  }
357
367
  });
358
368
  };
359
- function normalizeType(o) {
360
- return o?.enum ? "enum" : o?.type ?? "text";
369
+ function normalizeType(c) {
370
+ return c?.enum ? "enum" : c?.type ?? "text";
361
371
  }
362
- function defaultOp(o) {
363
- return RULES_BY_TYPE[o]?.[0]?.value;
372
+ function defaultOp(c) {
373
+ return RULES_BY_TYPE[c]?.[0]?.value;
364
374
  }
365
- function newRule(o, w) {
366
- let T = normalizeType(o), E = defaultOp(T);
375
+ function newRule(c, O) {
376
+ let k = normalizeType(c), A = defaultOp(k);
367
377
  return {
368
- field: o.id,
369
- op: E,
370
- value: VALUE_FREE_RULES.includes(E) ? null : "",
371
- ...w
378
+ field: c.id,
379
+ op: A,
380
+ value: VALUE_FREE_RULES.includes(A) ? null : "",
381
+ ...O
372
382
  };
373
383
  }
374
- function normalizeValueByOp(o, w) {
375
- return VALUE_FREE_RULES.includes(o) ? null : isBetweenOp(o) ? toPair(w) : isListOp(o) ? toList(w) : w ?? "";
384
+ function normalizeValueByOp(c, O) {
385
+ return VALUE_FREE_RULES.includes(c) ? null : isBetweenOp(c) ? toPair(O) : isListOp(c) ? toList(O) : O ?? "";
376
386
  }
377
- const AndOrFields = (o) => createComponent(AndOr, mergeProps(o, { renderRule: (w) => {
378
- let D = createMemo(() => o.fields.find((o) => o.id === w.node.field)), A = createMemo(() => normalizeType(D())), j = createMemo(() => RULES_BY_TYPE[A()]);
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()]);
379
389
  return (() => {
380
- var M = _tmpl$8(), N = M.firstChild;
381
- N.firstChild;
382
- var P = N.nextSibling;
383
- return N.$$input = (T) => {
384
- let E = T.target.value, D = o.fields.find((o) => o.id === E);
385
- w.update(newRule(D, { field: E }));
386
- }, insert(N, () => o.fields.map((o) => (() => {
387
- var w = _tmpl$7();
388
- return insert(w, () => o.name), effect(() => w.value = o.id), w;
389
- })()), null), P.$$input = (o) => {
390
- let T = o.target.value;
391
- w.update({
392
- op: T,
393
- value: normalizeValueByOp(T, w.node.value)
394
- });
395
- }, insert(P, () => j().map((o) => (() => {
396
- var w = _tmpl$7();
397
- return insert(w, () => o.label), effect(() => w.value = o.value), w;
398
- })())), insert(M, createComponent(RuleValueEditor, {
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, {
399
424
  get field() {
400
- return D();
425
+ return k();
401
426
  },
402
427
  get op() {
403
- return w.node.op;
428
+ return O.node.op;
404
429
  },
405
430
  get value() {
406
- return w.node.value;
431
+ return O.node.value;
407
432
  },
408
433
  get enum() {
409
- return D()?.enum;
434
+ return k()?.enum;
410
435
  },
411
436
  class: "flex-1 px-2 py-1 rounded-md border",
412
- onChange: (o) => w.update({ value: o })
413
- }), null), effect((E) => {
414
- var D = `px-2 py-1 rounded-md border ${o.hideFields ? "hidden" : ""}`, O = w.node.field, k = w.node.op || defaultOp(A());
415
- return D !== E.e && className(N, E.e = D), O !== E.t && (N.value = E.t = O), k !== E.a && (P.value = E.a = k), E;
416
- }, {
417
- e: void 0,
418
- t: void 0,
419
- a: void 0
420
- }), M;
437
+ onChange: (c) => O.update({ value: c })
438
+ }), null), P;
421
439
  })();
422
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
+ })();
423
464
  delegateEvents(["input"]);
424
465
  export { AndOrFields, RULES_BY_TYPE, RuleValueEditor, isValueFreeOp, newRule, normalizeType };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.55",
3
+ "version": "0.0.56",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [