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("<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,85 +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(() => className(o, w.class ?? "flex-1 px-2 py-1 rounded-md border")), effect(() => o.value = toList(w.value).map((o) => String(o))), 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
+ });
268
276
  }
269
277
  }),
270
278
  createComponent(Match, {
271
279
  get when() {
272
- return isListOp(N());
280
+ return isListOp(F());
273
281
  },
274
282
  get children() {
275
- var o = _tmpl$2();
276
- return o.$$input = (o) => w.onChange(toList(o.target.value)), effect((E) => {
277
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.placeholder ?? "多个值用逗号分隔";
278
- 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;
279
287
  }, {
280
288
  e: void 0,
281
289
  t: void 0
282
- }), effect(() => o.value = toList(w.value).join(", ")), o;
290
+ }), effect(() => c.value = toList(O.value).join(", ")), c;
283
291
  }
284
292
  }),
285
293
  createComponent(Match, {
286
294
  get when() {
287
- return D() === "number";
295
+ return j() === "number";
288
296
  },
289
297
  get children() {
290
- var o = _tmpl$3();
291
- return o.$$input = (o) => w.onChange(o.target.value), effect((E) => {
292
- var D = w.class ?? "flex-1 px-2 py-1 rounded-md border", O = w.placeholder;
293
- 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;
294
302
  }, {
295
303
  e: void 0,
296
304
  t: void 0
297
- }), effect(() => o.value = w.value ?? ""), o;
305
+ }), effect(() => c.value = O.value ?? ""), c;
298
306
  }
299
307
  }),
300
308
  createComponent(Match, {
301
309
  get when() {
302
- return D() === "date";
310
+ return j() === "date";
303
311
  },
304
312
  get children() {
305
- var o = _tmpl$4();
306
- 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;
307
315
  }
308
316
  }),
309
317
  createComponent(Match, {
310
318
  get when() {
311
- return D() === "enum";
319
+ return j() === "enum";
312
320
  },
313
321
  get children() {
314
- var o = _tmpl$5();
315
- return o.firstChild, o.$$input = (o) => w.onChange(o.target.value), insert(o, () => j().map((o) => (() => {
316
- var w = _tmpl$7();
317
- return insert(w, () => String(o.label)), effect(() => w.value = String(o.value)), w;
318
- })()), null), effect(() => className(o, w.class ?? "flex-1 px-2 py-1 rounded-md border")), effect(() => o.value = w.value ?? ""), 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
+ });
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(D());
343
+ ].includes(j());
328
344
  },
329
345
  get children() {
330
- var o = _tmpl$5();
331
- return o.firstChild, o.$$input = (o) => w.onChange(o.target.value), insert(o, () => [!0, !1].map((o) => (() => {
332
- var w = _tmpl$7();
333
- return insert(w, () => String(o)), effect(() => w.value = String(o)), w;
334
- })()), null), effect(() => className(o, w.class ?? "flex-1 px-2 py-1 rounded-md border")), effect(() => o.value = w.value ?? ""), 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
+ });
335
363
  }
336
364
  })
337
365
  ];
338
366
  }
339
367
  });
340
368
  };
341
- function normalizeType(o) {
342
- return o?.enum ? "enum" : o?.type ?? "text";
369
+ function normalizeType(c) {
370
+ return c?.enum ? "enum" : c?.type ?? "text";
343
371
  }
344
- function defaultOp(o) {
345
- return RULES_BY_TYPE[o]?.[0]?.value;
372
+ function defaultOp(c) {
373
+ return RULES_BY_TYPE[c]?.[0]?.value;
346
374
  }
347
- function newRule(o, w) {
348
- let T = normalizeType(o), E = defaultOp(T);
375
+ function newRule(c, O) {
376
+ let k = normalizeType(c), A = defaultOp(k);
349
377
  return {
350
- field: o.id,
351
- op: E,
352
- value: VALUE_FREE_RULES.includes(E) ? null : "",
353
- ...w
378
+ field: c.id,
379
+ op: A,
380
+ value: VALUE_FREE_RULES.includes(A) ? null : "",
381
+ ...O
354
382
  };
355
383
  }
356
- function normalizeValueByOp(o, w) {
357
- 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 ?? "";
358
386
  }
359
- const AndOrFields = (o) => createComponent(AndOr, mergeProps(o, { renderRule: (w) => {
360
- 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()]);
361
389
  return (() => {
362
- var M = _tmpl$8(), N = M.firstChild;
363
- N.firstChild;
364
- var P = N.nextSibling;
365
- return N.$$input = (T) => {
366
- let E = T.target.value, D = o.fields.find((o) => o.id === E);
367
- w.update(newRule(D, { field: E }));
368
- }, insert(N, () => o.fields.map((o) => (() => {
369
- var w = _tmpl$7();
370
- return insert(w, () => o.name), effect(() => w.value = o.id), w;
371
- })()), null), P.$$input = (o) => {
372
- let T = o.target.value;
373
- w.update({
374
- op: T,
375
- value: normalizeValueByOp(T, w.node.value)
376
- });
377
- }, insert(P, () => j().map((o) => (() => {
378
- var w = _tmpl$7();
379
- return insert(w, () => o.label), effect(() => w.value = o.value), w;
380
- })())), 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, {
381
424
  get field() {
382
- return D();
425
+ return k();
383
426
  },
384
427
  get op() {
385
- return w.node.op;
428
+ return O.node.op;
386
429
  },
387
430
  get value() {
388
- return w.node.value;
431
+ return O.node.value;
389
432
  },
390
433
  get enum() {
391
- return D()?.enum;
434
+ return k()?.enum;
392
435
  },
393
436
  class: "flex-1 px-2 py-1 rounded-md border",
394
- onChange: (o) => w.update({ value: o })
395
- }), null), effect(() => className(N, `px-2 py-1 rounded-md border ${o.hideFields ? "hidden" : ""}`)), effect(() => N.value = w.node.field), effect(() => P.value = w.node.op || defaultOp(A())), M;
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 v = _tmpl$8();
158
- return insert(v, () => _.label), effect(() => v.selected = _.value === e.value), effect(() => v.value = _.value), v;
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"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.54",
3
+ "version": "0.0.56",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [