@atscript/vue-table 0.1.131 → 0.1.133

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.
Files changed (111) hide show
  1. package/dist/as-action-form-dialog.cjs +42 -30
  2. package/dist/as-action-form-dialog.mjs +42 -30
  3. package/dist/{as-action-menu-content-4UfcabUe.mjs → as-action-menu-content-4D7CJNgr.mjs} +1 -1
  4. package/dist/{as-action-menu-content-C5qx9MPE.cjs → as-action-menu-content-DiS37BYK.cjs} +1 -1
  5. package/dist/as-column-menu.d.cts +1 -1
  6. package/dist/as-column-menu.d.mts +1 -1
  7. package/dist/{as-column-menu.vue-DL5N9mKR.d.mts → as-column-menu.vue-CZ8XqHl0.d.cts} +2 -2
  8. package/dist/{as-column-menu.vue-u_DNy3f-.d.cts → as-column-menu.vue-Cuelpv3p.d.mts} +2 -2
  9. package/dist/{as-config-dialog-BehfqIGd.mjs → as-config-dialog-BKsm8OHR.mjs} +30 -22
  10. package/dist/{as-config-dialog-BOYWPYYH.cjs → as-config-dialog-Bt8oP8qg.cjs} +29 -21
  11. package/dist/as-config-dialog.cjs +1 -1
  12. package/dist/as-config-dialog.mjs +1 -1
  13. package/dist/{as-confirm-dialog-bpN4A-KN.mjs → as-confirm-dialog-BV01t7dn.mjs} +12 -9
  14. package/dist/{as-confirm-dialog-UwhDHysk.cjs → as-confirm-dialog-Cw7KErhz.cjs} +12 -9
  15. package/dist/as-confirm-dialog.cjs +1 -1
  16. package/dist/as-confirm-dialog.mjs +1 -1
  17. package/dist/{as-filter-dialog-Dh2Ylthb.cjs → as-filter-dialog-Bxii-mYH.cjs} +31 -23
  18. package/dist/{as-filter-dialog-D1qzq-8b.mjs → as-filter-dialog-Ckrl79kU.mjs} +32 -24
  19. package/dist/as-filter-dialog.cjs +1 -1
  20. package/dist/as-filter-dialog.mjs +1 -1
  21. package/dist/{as-filter-field-DirBmnbb.mjs → as-filter-field-C-IFnj8K.mjs} +4 -4
  22. package/dist/{as-filter-field-DRsDJdpx.cjs → as-filter-field-xBr6TtKo.cjs} +4 -4
  23. package/dist/as-filter-field.cjs +1 -1
  24. package/dist/as-filter-field.mjs +1 -1
  25. package/dist/as-filters-DJEQj7_p.mjs +125 -0
  26. package/dist/as-filters-DuCk8nkk.cjs +130 -0
  27. package/dist/as-filters.cjs +1 -1
  28. package/dist/as-filters.d.cts +1 -1
  29. package/dist/as-filters.d.mts +1 -1
  30. package/dist/as-filters.mjs +1 -1
  31. package/dist/as-filters.vue-BG_ysCkC.d.mts +65 -0
  32. package/dist/as-filters.vue-DcxDnWAU.d.cts +65 -0
  33. package/dist/{as-preset-dialog-CDqCAR7N.mjs → as-preset-dialog-CCIacZ2C.mjs} +70 -20
  34. package/dist/{as-preset-dialog-DpM06jqR.cjs → as-preset-dialog-jZeyXJeJ.cjs} +74 -24
  35. package/dist/as-preset-dialog.cjs +1 -1
  36. package/dist/as-preset-dialog.mjs +1 -1
  37. package/dist/{as-preset-picker-jUS_YDX8.cjs → as-preset-picker-4xXU1KQz.cjs} +45 -21
  38. package/dist/{as-preset-picker-CISaxEZ0.mjs → as-preset-picker-DGSqQl9A.mjs} +39 -15
  39. package/dist/as-preset-picker.cjs +1 -1
  40. package/dist/as-preset-picker.mjs +1 -1
  41. package/dist/{as-row-actions-Bm6Bzyno.cjs → as-row-actions-B_OHWIAt.cjs} +2 -2
  42. package/dist/{as-row-actions-xqJeAdQl.mjs → as-row-actions-pukI1JT7.mjs} +2 -2
  43. package/dist/as-row-actions.cjs +1 -1
  44. package/dist/as-row-actions.mjs +1 -1
  45. package/dist/{as-table-BWUPzjRn.cjs → as-table-BejpMVid.cjs} +22 -4
  46. package/dist/{as-table-CDSG2yED.mjs → as-table-D5_bQ0p5.mjs} +22 -4
  47. package/dist/{as-table-actions-DMxeaczm.mjs → as-table-actions-DKYK_mTO.mjs} +57 -11
  48. package/dist/{as-table-actions-gV4lqqxc.cjs → as-table-actions-qb0gQz2D.cjs} +56 -10
  49. package/dist/as-table-actions.cjs +1 -1
  50. package/dist/as-table-actions.d.cts +1 -1
  51. package/dist/as-table-actions.d.mts +1 -1
  52. package/dist/as-table-actions.mjs +1 -1
  53. package/dist/{as-table-actions.vue-DTGYOsZh.d.mts → as-table-actions.vue-CckRRsL6.d.cts} +1 -1
  54. package/dist/{as-table-actions.vue-WXkllHVw.d.cts → as-table-actions.vue-DsqauvXR.d.mts} +1 -1
  55. package/dist/{as-table-base-BaTE3VSN.mjs → as-table-base-B0arhJI8.mjs} +141 -46
  56. package/dist/{as-table-base-RG2TEIgV.cjs → as-table-base-Dfw012G5.cjs} +141 -46
  57. package/dist/{as-table-header-cell-CIqlO6Lw.cjs → as-table-header-cell-Bb4ddLmQ.cjs} +1 -1
  58. package/dist/{as-table-header-cell-Bdhl5Lox.mjs → as-table-header-cell-q-c_QklI.mjs} +1 -1
  59. package/dist/as-table-header-cell.cjs +1 -1
  60. package/dist/as-table-header-cell.d.cts +1 -1
  61. package/dist/as-table-header-cell.d.mts +1 -1
  62. package/dist/as-table-header-cell.mjs +1 -1
  63. package/dist/{as-table-header-cell.vue-BCszzxtU.d.mts → as-table-header-cell.vue-BjVOEFqz.d.mts} +1 -1
  64. package/dist/{as-table-header-cell.vue-BzTzfGRo.d.cts → as-table-header-cell.vue-qS1Xfc-U.d.cts} +1 -1
  65. package/dist/{as-table-root-BLReUbRH.mjs → as-table-root-Bpsrp0Vz.mjs} +5 -5
  66. package/dist/{as-table-root-DLJ_3Jf4.cjs → as-table-root-CUDO9ybm.cjs} +5 -5
  67. package/dist/as-table-root.cjs +1 -1
  68. package/dist/as-table-root.d.cts +1 -1
  69. package/dist/as-table-root.d.mts +1 -1
  70. package/dist/as-table-root.mjs +1 -1
  71. package/dist/{as-table-root.vue-BqZl6JQ0.d.mts → as-table-root.vue-BPU92_Ns.d.mts} +59 -16
  72. package/dist/{as-table-root.vue-umgSvVUB.d.cts → as-table-root.vue-szvjZsCn.d.cts} +59 -16
  73. package/dist/{as-table-status-DGTZlpyq.mjs → as-table-status-B9jlzPPV.mjs} +53 -37
  74. package/dist/{as-table-status-Du4WLF4k.cjs → as-table-status-BgDexT2x.cjs} +53 -37
  75. package/dist/as-table.cjs +1 -1
  76. package/dist/as-table.d.cts +1 -1
  77. package/dist/as-table.d.mts +1 -1
  78. package/dist/as-table.mjs +1 -1
  79. package/dist/{as-table.vue-DxtfL26P.d.mts → as-table.vue-4WhMA8AM.d.mts} +27 -3
  80. package/dist/{as-table.vue-D9cCjbtr.d.cts → as-table.vue-_urybtQj.d.cts} +27 -3
  81. package/dist/{as-window-table-jD_y9yet.cjs → as-window-table-CXq6UuUx.cjs} +98 -19
  82. package/dist/{as-window-table-DWujiUQy.mjs → as-window-table-S1XWpDHQ.mjs} +98 -19
  83. package/dist/as-window-table.cjs +1 -1
  84. package/dist/as-window-table.d.cts +1 -1
  85. package/dist/as-window-table.d.mts +1 -1
  86. package/dist/as-window-table.mjs +1 -1
  87. package/dist/{as-window-table.vue-BpvgmsC1.d.mts → as-window-table.vue-CWsJvOkL.d.mts} +26 -3
  88. package/dist/{as-window-table.vue-BavmqDeH.d.cts → as-window-table.vue-h1bdyMv7.d.cts} +26 -3
  89. package/dist/error-message-CglODWl4.cjs +18 -0
  90. package/dist/error-message-hPSAu8Ug.mjs +13 -0
  91. package/dist/index.cjs +61 -29
  92. package/dist/index.d.cts +9 -9
  93. package/dist/index.d.mts +9 -9
  94. package/dist/index.mjs +62 -30
  95. package/dist/{types-CTMxE_zA.d.cts → types-BZ0HssRY.d.cts} +126 -4
  96. package/dist/{types-ByU4O0Yf.d.mts → types-CXz-4dPz.d.mts} +126 -4
  97. package/dist/{use-table-CyFcVtUN.mjs → use-table-Bk-jSxOM.mjs} +26 -11
  98. package/dist/{use-table-nvBq1dZ4.cjs → use-table-CdFFqaEx.cjs} +24 -9
  99. package/dist/{use-table-component-DO_kvKSf.cjs → use-table-component-DlLganVc.cjs} +1 -1
  100. package/dist/{use-table-component-K6xj1obF.mjs → use-table-component-KuzZxAP8.mjs} +1 -1
  101. package/dist/{use-table-nav-bridge-DeGeaQX-.mjs → use-table-nav-bridge-B9SSEajW.mjs} +1 -1
  102. package/dist/{use-table-nav-bridge-uOQUDooh.cjs → use-table-nav-bridge-CVUmTjDr.cjs} +1 -1
  103. package/dist/{use-table-state-Oi2ds4_a.cjs → use-table-state-D6dHOFrA.cjs} +329 -53
  104. package/dist/{use-table-state-BxX3SpeW.mjs → use-table-state-DLJbW753.mjs} +295 -55
  105. package/package.json +9 -9
  106. package/dist/as-filters-DCZTHjf5.cjs +0 -51
  107. package/dist/as-filters-beIud9sF.mjs +0 -46
  108. package/dist/as-filters.vue-DmECMd1v.d.mts +0 -10
  109. package/dist/as-filters.vue-fv-tRL2H.d.cts +0 -10
  110. package/dist/preset-aspect-display-IICxAlVo.mjs +0 -43
  111. package/dist/preset-aspect-display-TWwf6j1B.cjs +0 -72
@@ -1,8 +1,8 @@
1
- import { a as useTableContext, i as useRegisterMainActionListener } from "./use-table-state-BxX3SpeW.mjs";
1
+ import { a as useTableContext, i as useRegisterMainActionListener, p as onSelectControlKeydown } from "./use-table-state-DLJbW753.mjs";
2
2
  import { t as useSelectModeReset } from "./use-table-selection-C84z4OZy.mjs";
3
3
  import { t as useHasEmitListener } from "./use-has-emit-listener-BTMDIv2e.mjs";
4
4
  import { t as getCellValue } from "./get-cell-value-C8LLc_Rr.mjs";
5
- import { a as useCellComponents, i as useRafBatch, n as as_table_header_default, o as useCellResolver, r as as_table_colgroup_default, t as as_table_status_default } from "./as-table-status-DGTZlpyq.mjs";
5
+ import { a as useCellComponents, i as useRafBatch, n as as_table_header_default, o as useCellResolver, r as as_table_colgroup_default, t as as_table_status_default } from "./as-table-status-B9jlzPPV.mjs";
6
6
  import { t as useTableColumnHandlers } from "./use-table-column-handlers-CpiiIniD.mjs";
7
7
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, unref, useSlots, watch, withCtx, withModifiers } from "vue";
8
8
  import { DEFAULT_ROW_HEIGHT_PX, clampTopIndex, filledFilterCount } from "@atscript/ui-table";
@@ -175,6 +175,7 @@ const _hoisted_2 = ["aria-rowcount", "aria-multiselectable"];
175
175
  const _hoisted_3 = ["aria-activedescendant"];
176
176
  const _hoisted_4 = [
177
177
  "id",
178
+ "data-selectable",
178
179
  "aria-rowindex",
179
180
  "aria-selected",
180
181
  "onClick",
@@ -185,7 +186,14 @@ const _hoisted_5 = {
185
186
  class: "as-td-select",
186
187
  role: "gridcell"
187
188
  };
188
- const _hoisted_6 = ["aria-checked"];
189
+ const _hoisted_6 = [
190
+ "tabindex",
191
+ "aria-label",
192
+ "title",
193
+ "aria-checked",
194
+ "aria-disabled",
195
+ "onKeydown"
196
+ ];
189
197
  const _hoisted_7 = {
190
198
  key: 0,
191
199
  class: "as-table-checkbox-tick",
@@ -241,6 +249,14 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
241
249
  type: Boolean,
242
250
  required: false,
243
251
  default: false
252
+ },
253
+ rowClass: {
254
+ type: Function,
255
+ required: false
256
+ },
257
+ rowAttrs: {
258
+ type: Function,
259
+ required: false
244
260
  }
245
261
  },
246
262
  emits: [
@@ -267,6 +283,13 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
267
283
  return out;
268
284
  });
269
285
  const rowStyle = computed(() => ({ height: `${props.rowHeight}px` }));
286
+ /** Shared "selectable" verdict — frozen, so a hookless pool allocates nothing. */
287
+ const SELECTABLE = Object.freeze({ ok: true });
288
+ /** Accessible name for a row's selection control, carrying the disabled reason. */
289
+ function selectLabel(verdict) {
290
+ if (verdict.ok) return "Select row";
291
+ return verdict.reason ? `Select row, ${verdict.reason}` : "Select row, not selectable";
292
+ }
270
293
  const visibleSlots = computed(() => {
271
294
  const viewport = state.viewportRowCount.value;
272
295
  if (viewport <= 0) return [];
@@ -276,19 +299,38 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
276
299
  const rowValueFn = state.rowValueFn;
277
300
  const hasSelection = props.select !== "none";
278
301
  const selectedSet = hasSelection ? new Set(state.selectedRows.value) : null;
302
+ const gated = !!state.rowSelectable.value;
303
+ const hasHooks = gated || !!props.rowClass || !!props.rowAttrs;
279
304
  const out = [];
280
305
  for (let s = 0; s < count; s++) {
281
306
  const abs = top + s;
282
307
  const row = state.dataAt(abs);
283
308
  const pk = row === void 0 ? void 0 : rowValueFn(row);
284
309
  const selected = selectedSet !== null && row !== void 0 && selectedSet.has(pk);
310
+ let selectable = SELECTABLE;
311
+ let cls;
312
+ let attrs;
313
+ if (hasHooks && row !== void 0) {
314
+ const hookCtx = {
315
+ index: abs,
316
+ get selected() {
317
+ return selected;
318
+ }
319
+ };
320
+ if (gated) selectable = state.isRowSelectable(row, abs);
321
+ cls = props.rowClass?.(row, hookCtx);
322
+ attrs = props.rowAttrs?.(row, hookCtx);
323
+ }
285
324
  out.push({
286
325
  s,
287
326
  row,
288
327
  pk,
289
328
  errored: row === void 0 && state.errorAt(abs) !== null,
290
329
  selected,
291
- ariaSelected: hasSelection ? selected ? "true" : "false" : void 0
330
+ ariaSelected: hasSelection ? selected ? "true" : "false" : void 0,
331
+ selectable,
332
+ cls,
333
+ attrs
292
334
  });
293
335
  }
294
336
  return out;
@@ -324,6 +366,9 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
324
366
  mode: props.select
325
367
  });
326
368
  }
369
+ function onSelectCellKeydown(event, absIdx) {
370
+ onSelectControlKeydown(event, absIdx, props.select, state);
371
+ }
327
372
  watch([() => state.activeIndex.value, () => state.viewportRowCount.value], ([idx, viewport]) => {
328
373
  if (idx < 0) return;
329
374
  if (viewport <= 0) return;
@@ -362,11 +407,12 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
362
407
  state.requestMainAction(event);
363
408
  }
364
409
  function onSelectAllToggle(headerState) {
365
- if (headerState === "none") {
366
- const pks = [];
367
- for (const row of state.windowCache.value.values()) pks.push(state.rowValueFn(row));
368
- state.selectedRows.value = pks;
369
- } else state.selectedRows.value = [];
410
+ if (headerState !== "none") {
411
+ state.selectedRows.value = [];
412
+ return;
413
+ }
414
+ const entries = [...state.windowCache.value.entries()].toSorted((a, b) => a[0] - b[0]);
415
+ state.selectAll(entries.map((e) => e[1]), (i) => entries[i][0]);
370
416
  }
371
417
  const { onSort, onHide, onFilter, onFiltersOff, onResetWidth, onReorder, onClearFilters } = useTableColumnHandlers(state);
372
418
  const wrapperRef = ref(null);
@@ -488,23 +534,37 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
488
534
  onTouchmove: withModifiers(onTouchMove, ["prevent"]),
489
535
  onTouchend: onTouchEnd
490
536
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(visibleSlots.value, (slot) => {
491
- return openBlock(), createElementBlock(Fragment, { key: `slot-${slot.s}` }, [slot.row !== void 0 ? (openBlock(), createElementBlock("tr", {
537
+ return openBlock(), createElementBlock(Fragment, { key: `slot-${slot.s}` }, [createCommentVNode("\n `v-bind=\"slot.attrs\"` comes FIRST so every framework binding\n after it wins — consumer attrs decorate a row, never rewrite its\n id / role / aria / data contract.\n "), slot.row !== void 0 ? (openBlock(), createElementBlock("tr", mergeProps({
492
538
  key: 0,
539
+ ref_for: true
540
+ }, slot.attrs, {
493
541
  id: unref(state).rowId(unref(state).topIndex.value + slot.s),
494
- class: normalizeClass(["as-window-data-row", { "as-table-row-active": unref(state).activeIndex.value === unref(state).topIndex.value + slot.s }]),
542
+ class: [
543
+ "as-window-data-row",
544
+ { "as-table-row-active": unref(state).activeIndex.value === unref(state).topIndex.value + slot.s },
545
+ slot.cls
546
+ ],
547
+ "data-selectable": slot.selectable.ok ? void 0 : "false",
495
548
  role: "row",
496
549
  "aria-rowindex": unref(state).topIndex.value + slot.s + 2,
497
550
  "aria-selected": slot.ariaSelected,
498
- style: normalizeStyle(rowStyle.value),
551
+ style: rowStyle.value,
499
552
  onClick: ($event) => onRowClick(slot.row, $event, unref(state).topIndex.value + slot.s),
500
553
  onDblclick: ($event) => onRowDblClick(slot.row, $event, unref(state).topIndex.value + slot.s)
501
- }, [
554
+ }), [
502
555
  hasValue.value ? (openBlock(), createElementBlock("td", _hoisted_5, [createElementVNode("span", {
503
- class: normalizeClass(["as-table-checkbox", { "as-table-checkbox-checked": slot.selected }]),
556
+ class: normalizeClass(["as-table-checkbox", {
557
+ "as-table-checkbox-checked": slot.selected,
558
+ "as-table-checkbox-disabled": !slot.selectable.ok
559
+ }]),
504
560
  role: "checkbox",
505
- tabindex: "0",
506
- "aria-checked": slot.selected ? "true" : "false"
507
- }, [slot.selected ? (openBlock(), createElementBlock("span", _hoisted_7)) : createCommentVNode("v-if", true)], 10, _hoisted_6)])) : createCommentVNode("v-if", true),
561
+ tabindex: slot.selectable.ok ? 0 : void 0,
562
+ "aria-label": selectLabel(slot.selectable),
563
+ title: slot.selectable.reason,
564
+ "aria-checked": slot.selected ? "true" : "false",
565
+ "aria-disabled": slot.selectable.ok ? void 0 : "true",
566
+ onKeydown: ($event) => onSelectCellKeydown($event, unref(state).topIndex.value + slot.s)
567
+ }, [slot.selected ? (openBlock(), createElementBlock("span", _hoisted_7)) : createCommentVNode("v-if", true)], 42, _hoisted_6)])) : createCommentVNode("v-if", true),
508
568
  unref(hasAnyCellBindings) ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(state).columns.value, (col) => {
509
569
  return openBlock(), createElementBlock(Fragment, { key: col.path }, [(openBlock(true), createElementBlock(Fragment, null, renderList([unref(cellResolver)(col, slot.row, unref(state).topIndex.value + slot.s)], (bindings) => {
510
570
  return openBlock(), createElementBlock(Fragment, { key: 0 }, [cellSlotFlags.value[col.path] ? (openBlock(), createElementBlock("td", mergeProps({
@@ -537,7 +597,7 @@ var as_window_table_base_default = /* @__PURE__ */ defineComponent({
537
597
  class: "as-td-filler",
538
598
  role: "gridcell"
539
599
  }, null, -1))
540
- ], 46, _hoisted_4)) : (openBlock(), createBlock(as_window_skeleton_row_default, {
600
+ ], 16, _hoisted_4)) : (openBlock(), createBlock(as_window_skeleton_row_default, {
541
601
  key: 1,
542
602
  columns: unref(state).columns.value,
543
603
  "row-height": __props.rowHeight,
@@ -658,6 +718,18 @@ var as_window_table_default = /* @__PURE__ */ defineComponent({
658
718
  type: Boolean,
659
719
  required: false,
660
720
  default: false
721
+ },
722
+ rowSelectable: {
723
+ type: Function,
724
+ required: false
725
+ },
726
+ rowClass: {
727
+ type: Function,
728
+ required: false
729
+ },
730
+ rowAttrs: {
731
+ type: Function,
732
+ required: false
661
733
  }
662
734
  },
663
735
  emits: [
@@ -673,6 +745,9 @@ var as_window_table_default = /* @__PURE__ */ defineComponent({
673
745
  watch(() => props.rowDelete, (val) => {
674
746
  state.rowDelete.value = val;
675
747
  }, { immediate: true });
748
+ watch(() => props.rowSelectable, (val) => {
749
+ state.rowSelectable.value = val;
750
+ }, { immediate: true });
676
751
  useSelectModeReset(state, () => props.select);
677
752
  useRegisterMainActionListener(state, (req) => emit("main-action", req.row, req.absIndex, req.event), useHasEmitListener("onMainAction"));
678
753
  const containerRef = ref(null);
@@ -709,6 +784,8 @@ var as_window_table_default = /* @__PURE__ */ defineComponent({
709
784
  select: __props.select,
710
785
  headless: __props.headless,
711
786
  "enter-action": __props.enterAction,
787
+ "row-class": __props.rowClass,
788
+ "row-attrs": __props.rowAttrs,
712
789
  onRowClick: _cache[0] || (_cache[0] = (row, ev) => emit("row-click", row, ev)),
713
790
  onRowDblclick: _cache[1] || (_cache[1] = (row, ev) => emit("row-dblclick", row, ev)),
714
791
  onViewportMetricsChange: onMetrics
@@ -726,7 +803,9 @@ var as_window_table_default = /* @__PURE__ */ defineComponent({
726
803
  "column-min-width",
727
804
  "select",
728
805
  "headless",
729
- "enter-action"
806
+ "enter-action",
807
+ "row-class",
808
+ "row-attrs"
730
809
  ]), unref(state).querying.value ? (openBlock(), createElementBlock("div", _hoisted_1, [renderSlot(_ctx.$slots, "query-loading", {}, () => [_cache[2] || (_cache[2] = createElementVNode("span", {
731
810
  class: "as-table-query-overlay-icon",
732
811
  "aria-hidden": "true"
@@ -1,2 +1,2 @@
1
- const require_as_window_table = require("./as-window-table-jD_y9yet.cjs");
1
+ const require_as_window_table = require("./as-window-table-CXq6UuUx.cjs");
2
2
  module.exports = require_as_window_table.as_window_table_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-window-table.vue-BavmqDeH.cjs";
1
+ import { t as _default } from "./as-window-table.vue-h1bdyMv7.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-window-table.vue-BpvgmsC1.mjs";
1
+ import { t as _default } from "./as-window-table.vue-CWsJvOkL.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_window_table_default } from "./as-window-table-DWujiUQy.mjs";
1
+ import { t as as_window_table_default } from "./as-window-table-S1XWpDHQ.mjs";
2
2
  export { as_window_table_default as default };
@@ -1,4 +1,4 @@
1
- import { a as EnterAction, f as RowDeleteOpt, n as ColumnMenuConfig, u as QueryErrorKind } from "./types-ByU4O0Yf.mjs";
1
+ import { a as EnterAction, f as RowAttrsHook, g as RowSelectableHook, m as RowDeleteOpt, n as ColumnMenuConfig, p as RowClassHook, u as QueryErrorKind } from "./types-CXz-4dPz.mjs";
2
2
  import * as vue from "vue";
3
3
  import { SelectionMode } from "@atscript/ui-table";
4
4
 
@@ -58,20 +58,43 @@ type __VLS_Props = {
58
58
  * (sort/filter/reorder/resize) are unavailable in headless mode.
59
59
  */
60
60
  headless?: boolean;
61
+ /**
62
+ * Per-row selectability. Return `false` — or a string, surfaced as the
63
+ * disabled reason on the row's selection control — to make a row not
64
+ * selectable. Enforced on every path: row click, Space/Enter toggle, and
65
+ * the header select-all. Since 0.1.133.
66
+ *
67
+ * @example
68
+ * `:row-selectable="(row) => row.locked ? 'Locked by another user' : true"`
69
+ */
70
+ rowSelectable?: RowSelectableHook;
71
+ /**
72
+ * Extra classes for the row element — string, array, or
73
+ * `{ class: boolean }` map, merged with the framework's own row classes.
74
+ * Since 0.1.133.
75
+ */
76
+ rowClass?: RowClassHook;
77
+ /**
78
+ * Extra attributes for the row element. The framework's own `id`, `role`,
79
+ * `aria-*`, `data-*`, `class` and `style` always win, so a hook can
80
+ * decorate a row but never rewrite its accessibility contract.
81
+ * Since 0.1.133.
82
+ */
83
+ rowAttrs?: RowAttrsHook;
61
84
  };
62
85
  declare var __VLS_13: string, __VLS_14: any, __VLS_16: {};
63
86
  type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_13>]?: (props: typeof __VLS_14) => any } & {
64
87
  'query-loading'?: (props: typeof __VLS_16) => any;
65
88
  };
66
89
  declare const __VLS_base: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
90
+ "main-action": (row: Row, absIndex: number, event: KeyboardEvent | MouseEvent) => any;
67
91
  "row-click": (row: Row, event: MouseEvent) => any;
68
92
  "row-dblclick": (row: Row, event: MouseEvent) => any;
69
- "main-action": (row: Row, absIndex: number, event: MouseEvent | KeyboardEvent) => any;
70
93
  error: (error: Error, kind: QueryErrorKind) => any;
71
94
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
95
+ "onMain-action"?: ((row: Row, absIndex: number, event: KeyboardEvent | MouseEvent) => any) | undefined;
72
96
  "onRow-click"?: ((row: Row, event: MouseEvent) => any) | undefined;
73
97
  "onRow-dblclick"?: ((row: Row, event: MouseEvent) => any) | undefined;
74
- "onMain-action"?: ((row: Row, absIndex: number, event: MouseEvent | KeyboardEvent) => any) | undefined;
75
98
  onError?: ((error: Error, kind: QueryErrorKind) => any) | undefined;
76
99
  }>, {
77
100
  reorderable: boolean;
@@ -1,4 +1,4 @@
1
- import { a as EnterAction, f as RowDeleteOpt, n as ColumnMenuConfig, u as QueryErrorKind } from "./types-CTMxE_zA.cjs";
1
+ import { a as EnterAction, f as RowAttrsHook, g as RowSelectableHook, m as RowDeleteOpt, n as ColumnMenuConfig, p as RowClassHook, u as QueryErrorKind } from "./types-BZ0HssRY.cjs";
2
2
  import * as vue from "vue";
3
3
  import { SelectionMode } from "@atscript/ui-table";
4
4
 
@@ -58,20 +58,43 @@ type __VLS_Props = {
58
58
  * (sort/filter/reorder/resize) are unavailable in headless mode.
59
59
  */
60
60
  headless?: boolean;
61
+ /**
62
+ * Per-row selectability. Return `false` — or a string, surfaced as the
63
+ * disabled reason on the row's selection control — to make a row not
64
+ * selectable. Enforced on every path: row click, Space/Enter toggle, and
65
+ * the header select-all. Since 0.1.133.
66
+ *
67
+ * @example
68
+ * `:row-selectable="(row) => row.locked ? 'Locked by another user' : true"`
69
+ */
70
+ rowSelectable?: RowSelectableHook;
71
+ /**
72
+ * Extra classes for the row element — string, array, or
73
+ * `{ class: boolean }` map, merged with the framework's own row classes.
74
+ * Since 0.1.133.
75
+ */
76
+ rowClass?: RowClassHook;
77
+ /**
78
+ * Extra attributes for the row element. The framework's own `id`, `role`,
79
+ * `aria-*`, `data-*`, `class` and `style` always win, so a hook can
80
+ * decorate a row but never rewrite its accessibility contract.
81
+ * Since 0.1.133.
82
+ */
83
+ rowAttrs?: RowAttrsHook;
61
84
  };
62
85
  declare var __VLS_13: string, __VLS_14: any, __VLS_16: {};
63
86
  type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_13>]?: (props: typeof __VLS_14) => any } & {
64
87
  'query-loading'?: (props: typeof __VLS_16) => any;
65
88
  };
66
89
  declare const __VLS_base: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
90
+ "main-action": (row: Row, absIndex: number, event: KeyboardEvent | MouseEvent) => any;
67
91
  "row-click": (row: Row, event: MouseEvent) => any;
68
92
  "row-dblclick": (row: Row, event: MouseEvent) => any;
69
- "main-action": (row: Row, absIndex: number, event: MouseEvent | KeyboardEvent) => any;
70
93
  error: (error: Error, kind: QueryErrorKind) => any;
71
94
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
95
+ "onMain-action"?: ((row: Row, absIndex: number, event: KeyboardEvent | MouseEvent) => any) | undefined;
72
96
  "onRow-click"?: ((row: Row, event: MouseEvent) => any) | undefined;
73
97
  "onRow-dblclick"?: ((row: Row, event: MouseEvent) => any) | undefined;
74
- "onMain-action"?: ((row: Row, absIndex: number, event: MouseEvent | KeyboardEvent) => any) | undefined;
75
98
  onError?: ((error: Error, kind: QueryErrorKind) => any) | undefined;
76
99
  }>, {
77
100
  reorderable: boolean;
@@ -0,0 +1,18 @@
1
+ //#region src/utils/error-message.ts
2
+ /**
3
+ * Turn an unknown thrown value into copy a user can read. Anything that
4
+ * isn't an `Error` with a non-empty message falls back to `fallback` —
5
+ * `"[object Object]"` and empty bubbles never reach the surface.
6
+ *
7
+ * @since 0.1.133
8
+ */
9
+ function errorMessage(err, fallback) {
10
+ return err instanceof Error && err.message ? err.message : fallback;
11
+ }
12
+ //#endregion
13
+ Object.defineProperty(exports, "errorMessage", {
14
+ enumerable: true,
15
+ get: function() {
16
+ return errorMessage;
17
+ }
18
+ });
@@ -0,0 +1,13 @@
1
+ //#region src/utils/error-message.ts
2
+ /**
3
+ * Turn an unknown thrown value into copy a user can read. Anything that
4
+ * isn't an `Error` with a non-empty message falls back to `fallback` —
5
+ * `"[object Object]"` and empty bubbles never reach the surface.
6
+ *
7
+ * @since 0.1.133
8
+ */
9
+ function errorMessage(err, fallback) {
10
+ return err instanceof Error && err.message ? err.message : fallback;
11
+ }
12
+ //#endregion
13
+ export { errorMessage as t };
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_use_table_state = require("./use-table-state-Oi2ds4_a.cjs");
2
+ const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
3
3
  const require_use_table_selection = require("./use-table-selection-Cmiu1h4S.cjs");
4
- const require_use_table = require("./use-table-nvBq1dZ4.cjs");
5
- const require_use_table_nav_bridge = require("./use-table-nav-bridge-uOQUDooh.cjs");
6
- const require_use_table_component = require("./use-table-component-DO_kvKSf.cjs");
4
+ const require_use_table = require("./use-table-CdFFqaEx.cjs");
5
+ const require_use_table_nav_bridge = require("./use-table-nav-bridge-CVUmTjDr.cjs");
6
+ const require_use_table_component = require("./use-table-component-DlLganVc.cjs");
7
7
  const require_get_cell_value = require("./get-cell-value-4rHKP-TG.cjs");
8
8
  const require_as_cell_array = require("./as-cell-array-iPeUnk2G.cjs");
9
9
  const require_as_cell_date = require("./as-cell-date-DyixWKuS.cjs");
@@ -13,21 +13,21 @@ const require_as_cell_number = require("./as-cell-number-DuPMOesI.cjs");
13
13
  const require_format_cell = require("./format-cell-vCNTh4WZ.cjs");
14
14
  const require_as_cell_union = require("./as-cell-union-DJNsEKTi.cjs");
15
15
  const require_as_column_menu = require("./as-column-menu-fZVbJ9lU.cjs");
16
- const require_as_config_dialog = require("./as-config-dialog-BOYWPYYH.cjs");
17
- const require_as_confirm_dialog = require("./as-confirm-dialog-UwhDHysk.cjs");
16
+ const require_as_config_dialog = require("./as-config-dialog-Bt8oP8qg.cjs");
17
+ const require_as_confirm_dialog = require("./as-confirm-dialog-Cw7KErhz.cjs");
18
18
  const require_as_filter_input = require("./as-filter-input-DJu2k9gO.cjs");
19
- const require_as_filter_dialog = require("./as-filter-dialog-Dh2Ylthb.cjs");
20
- const require_as_table_header_cell = require("./as-table-header-cell-CIqlO6Lw.cjs");
21
- const require_as_window_table = require("./as-window-table-jD_y9yet.cjs");
22
- const require_as_filter_field = require("./as-filter-field-DRsDJdpx.cjs");
23
- const require_as_filters = require("./as-filters-DCZTHjf5.cjs");
24
- const require_as_preset_dialog = require("./as-preset-dialog-DpM06jqR.cjs");
25
- const require_as_row_actions = require("./as-row-actions-Bm6Bzyno.cjs");
19
+ const require_as_filter_dialog = require("./as-filter-dialog-Bxii-mYH.cjs");
20
+ const require_as_table_header_cell = require("./as-table-header-cell-Bb4ddLmQ.cjs");
21
+ const require_as_window_table = require("./as-window-table-CXq6UuUx.cjs");
22
+ const require_as_filter_field = require("./as-filter-field-xBr6TtKo.cjs");
23
+ const require_as_filters = require("./as-filters-DuCk8nkk.cjs");
24
+ const require_as_preset_dialog = require("./as-preset-dialog-jZeyXJeJ.cjs");
25
+ const require_as_row_actions = require("./as-row-actions-B_OHWIAt.cjs");
26
26
  const require_as_table_cell_value = require("./as-table-cell-value-D1JkTQt0.cjs");
27
- const require_as_table_root = require("./as-table-root-DLJ_3Jf4.cjs");
28
- const require_as_table = require("./as-table-BWUPzjRn.cjs");
29
- const require_as_table_actions = require("./as-table-actions-gV4lqqxc.cjs");
30
- const require_as_preset_picker = require("./as-preset-picker-jUS_YDX8.cjs");
27
+ const require_as_table_root = require("./as-table-root-CUDO9ybm.cjs");
28
+ const require_as_table = require("./as-table-BejpMVid.cjs");
29
+ const require_as_table_actions = require("./as-table-actions-qb0gQz2D.cjs");
30
+ const require_as_preset_picker = require("./as-preset-picker-4xXU1KQz.cjs");
31
31
  let _atscript_ui = require("@atscript/ui");
32
32
  let vue = require("vue");
33
33
  let _atscript_ui_table = require("@atscript/ui-table");
@@ -188,11 +188,19 @@ function findCleanEq(segment) {
188
188
  * dependency on `vue-router` is added to `@atscript/vue-table`. Consumers
189
189
  * pass in their already-resolved `useRoute()` and `useRouter()` instances.
190
190
  *
191
- * Scope: **owns the whole query string**. The getter returns the entire
192
- * `route.query` serialized; the setter replaces `route.query` wholesale.
193
- * Apps that need the table to coexist with non-table query params should
194
- * write their own `computed` instead — that pattern is small and keeps the
195
- * library's contract crisp.
191
+ * Scope: the bridge owns **only what the table reads back** (since 0.1.133).
192
+ * A key is the table's iff `urlQueryStringToState` would consume it — see
193
+ * `urlQueryConsumesKey` — or the bridge has written it before. Read and
194
+ * write therefore agree in both directions: a key the parser ignores (a host
195
+ * flag, an unrecognised `$control`) is never removed, and a key the parser
196
+ * reads is the bridge's to remove. Every write merges into the current
197
+ * `route.query`, in place.
198
+ *
199
+ * Without a `prefix` the bridge cannot tell a plain `field=value` filter from
200
+ * a page-owned flag of the same shape, so a plain key that was already in the
201
+ * URL when the bridge mounted counts as foreign until the bridge writes it
202
+ * itself. Pass `prefix` when a route carries a host key that could collide
203
+ * with a column path, or when it carries two tables.
196
204
  *
197
205
  * @example
198
206
  * ```vue
@@ -200,6 +208,9 @@ function findCleanEq(segment) {
200
208
  * import { useRoute, useRouter } from 'vue-router';
201
209
  * import { useTableUrlQuery } from '@atscript/vue-table';
202
210
  * const urlQuery = useTableUrlQuery(useRoute(), useRouter());
211
+ * // Two tables on one route:
212
+ * // const left = useTableUrlQuery(useRoute(), useRouter(), { prefix: 'a' });
213
+ * // const right = useTableUrlQuery(useRoute(), useRouter(), { prefix: 'b' });
203
214
  * <\/script>
204
215
  * <template>
205
216
  * <AsTableRoot v-model:url-query="urlQuery" url="/db/products" .../>
@@ -208,25 +219,46 @@ function findCleanEq(segment) {
208
219
  */
209
220
  function useTableUrlQuery(route, router, opts = {}) {
210
221
  const navigate = (opts.mode ?? "replace") === "push" ? router.push.bind(router) : router.replace.bind(router);
222
+ const prefix = opts.prefix ? `${opts.prefix}.` : "";
223
+ const written = /* @__PURE__ */ new Set();
224
+ function isOwn(key) {
225
+ if (prefix) return key.startsWith(prefix);
226
+ return written.has(key) || (0, _atscript_ui_table.urlQueryConsumesKey)(key);
227
+ }
211
228
  return (0, vue.computed)({
212
229
  get: () => {
213
230
  const q = route.query;
214
231
  const parts = [];
215
232
  for (const key in q) {
233
+ if (prefix && !key.startsWith(prefix)) continue;
234
+ const own = prefix ? key.slice(prefix.length) : key;
216
235
  const v = q[key];
217
- if (Array.isArray(v)) for (const item of v) parts.push(item == null ? key : `${key}=${item}`);
218
- else if (v == null) parts.push(key);
219
- else parts.push(`${key}=${v}`);
236
+ if (Array.isArray(v)) for (const item of v) parts.push(item == null ? own : `${own}=${item}`);
237
+ else if (v == null) parts.push(own);
238
+ else parts.push(`${own}=${v}`);
220
239
  }
221
240
  return parts.join("&");
222
241
  },
223
242
  set: (urlString) => {
224
- const query = {};
243
+ const serialized = /* @__PURE__ */ new Map();
225
244
  for (const segment of splitSegments(urlString)) {
226
245
  const eqIdx = findCleanEq(segment);
227
- if (eqIdx > 0) query[segment.slice(0, eqIdx)] = segment.slice(eqIdx + 1);
228
- else query[segment] = null;
246
+ const key = eqIdx > 0 ? `${prefix}${segment.slice(0, eqIdx)}` : `${prefix}${segment}`;
247
+ serialized.set(key, eqIdx > 0 ? segment.slice(eqIdx + 1) : null);
248
+ written.add(key);
249
+ }
250
+ const query = {};
251
+ for (const key in route.query) {
252
+ if (!isOwn(key)) {
253
+ query[key] = route.query[key];
254
+ continue;
255
+ }
256
+ if (serialized.has(key)) {
257
+ query[key] = serialized.get(key);
258
+ serialized.delete(key);
259
+ }
229
260
  }
261
+ for (const [key, value] of serialized) query[key] = value;
230
262
  navigate({ query });
231
263
  }
232
264
  });
@@ -317,7 +349,7 @@ function createInstance(app, opts) {
317
349
  cache.value = { ...result.prefs };
318
350
  existing.value = result.row;
319
351
  } catch (err) {
320
- if ((0, _atscript_ui_table.isAuthError)(err)) {
352
+ if ((0, _atscript_ui_table.isUnavailableError)(err)) {
321
353
  denied.value = true;
322
354
  clearCache();
323
355
  existing.value = null;
package/dist/index.d.cts CHANGED
@@ -1,16 +1,16 @@
1
- import { t as _default$11 } from "./as-filters.vue-fv-tRL2H.cjs";
1
+ import { t as _default$11 } from "./as-filters.vue-DcxDnWAU.cjs";
2
2
  import { t as _default$13 } from "./as-preset-picker.vue-DfXS3pGl.cjs";
3
- import { _ as TableNavBridge, c as NavKeyOptions, d as ReactiveTableState, f as RowDeleteOpt, g as TableActionsState, h as TVueTableActionInfo, m as TAsTableControls, n as ColumnMenuConfig, o as InvokeOpts, p as TAsCellTypeComponents, r as ConfigTab, s as MainActionRequest, t as ActionResult, u as QueryErrorKind } from "./types-CTMxE_zA.cjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-WXkllHVw.cjs";
5
- import { $ as createStaticTableState, A as createDefaultCellTypes, B as useTableActions, C as extractIdentifier, D as CellLocale, E as getColumnWidth, F as useAppPrefs, G as clearTableCache, H as useTableFilter, I as AS_PRESETS_APP, J as useTableSelection, K as useTable, L as injectPresetsApp, M as useTableComponent, N as UseAppPrefsOptions, O as provideCellLocale, P as UseAppPrefsReturn, Q as TableStateInternals, R as UseTableUrlQueryOptions, S as setDefaultClientFactory, T as getCellValue, U as useTableNavBridge, V as useTableSearch, W as UseTableOptions, X as CreateTableStateOptions, Y as CreateStaticTableStateOptions, Z as TableContext, _ as UserConfData, a as PRESET_ASPECTS, at as UsePresetsReturn, b as resetDefaultClientFactory, c as PresetData, ct as UseLocalDraftOptions, d as QueryOptions, et as createTableState, f as STANDARD_PRESET_ID, g as UrlQuerySync, h as SystemPresetInput, i as ClientFactory, it as UsePresetsOptions, j as createDefaultControls, k as useCellLocale, l as PresetSnapshot, lt as UseLocalDraftReturn, m as SystemPreset, n as AppConfData, nt as useTableContextOptional, o as PresetAspect, ot as usePresets, p as SYSTEM_PRESET_PREFIX, q as SelectionPersistence, r as AsPresetEntryRow, rt as ActivePresetView, s as PresetCapabilities, st as StorageLike, t as _default$19, tt as useTableContext, u as PresetSnapshotWire, ut as useLocalDraft, v as getDefaultClientFactory, w as formatCellValue, x as resolveSystemPresets, y as isSystemPresetId, z as useTableUrlQuery } from "./as-table-root.vue-umgSvVUB.cjs";
6
- import { t as _default$15 } from "./as-table.vue-D9cCjbtr.cjs";
7
- import { t as _default$20 } from "./as-window-table.vue-BavmqDeH.cjs";
3
+ import { S as TableNavBridge, _ as RowSelectableVerdict, b as TVueTableActionInfo, c as NavKeyOptions, d as ReactiveTableState, f as RowAttrsHook, g as RowSelectableHook, h as RowHookContext, m as RowDeleteOpt, n as ColumnMenuConfig, o as InvokeOpts, p as RowClassHook, r as ConfigTab, s as MainActionRequest, t as ActionResult, u as QueryErrorKind, v as TAsCellTypeComponents, x as TableActionsState, y as TAsTableControls } from "./types-BZ0HssRY.cjs";
4
+ import { t as _default$16 } from "./as-table-actions.vue-CckRRsL6.cjs";
5
+ import { $ as createStaticTableState, A as createDefaultCellTypes, B as useTableActions, C as extractIdentifier, D as CellLocale, E as getColumnWidth, F as useAppPrefs, G as clearTableCache, H as useTableFilter, I as AS_PRESETS_APP, J as useTableSelection, K as useTable, L as injectPresetsApp, M as useTableComponent, N as UseAppPrefsOptions, O as provideCellLocale, P as UseAppPrefsReturn, Q as TableStateInternals, R as UseTableUrlQueryOptions, S as setDefaultClientFactory, T as getCellValue, U as useTableNavBridge, V as useTableSearch, W as UseTableOptions, X as CreateTableStateOptions, Y as CreateStaticTableStateOptions, Z as TableContext, _ as UserConfData, a as PRESET_ASPECTS, at as UsePresetsReturn, b as resetDefaultClientFactory, c as PresetData, ct as UseLocalDraftOptions, d as QueryOptions, et as createTableState, f as STANDARD_PRESET_ID, g as UrlQuerySync, h as SystemPresetInput, i as ClientFactory, it as UsePresetsOptions, j as createDefaultControls, k as useCellLocale, l as PresetSnapshot, lt as UseLocalDraftReturn, m as SystemPreset, n as AppConfData, nt as useTableContextOptional, o as PresetAspect, ot as usePresets, p as SYSTEM_PRESET_PREFIX, q as SelectionPersistence, r as AsPresetEntryRow, rt as ActivePresetView, s as PresetCapabilities, st as StorageLike, t as _default$19, tt as useTableContext, u as PresetSnapshotWire, ut as useLocalDraft, v as getDefaultClientFactory, w as formatCellValue, x as resolveSystemPresets, y as isSystemPresetId, z as useTableUrlQuery } from "./as-table-root.vue-szvjZsCn.cjs";
6
+ import { t as _default$15 } from "./as-table.vue-_urybtQj.cjs";
7
+ import { t as _default$20 } from "./as-window-table.vue-h1bdyMv7.cjs";
8
8
  import { t as _default } from "./as-cell-array.vue-pFs5GcCR.cjs";
9
9
  import { t as _default$1 } from "./as-cell-date.vue-BBSps2B2.cjs";
10
10
  import { t as _default$2 } from "./as-cell-json.vue-C6wg4ARZ.cjs";
11
11
  import { t as _default$3 } from "./as-cell-number.vue-CJ2K5zeM.cjs";
12
12
  import { t as _default$4 } from "./as-cell-union.vue-CslPM_c2.cjs";
13
- import { t as _default$5 } from "./as-column-menu.vue-u_DNy3f-.cjs";
13
+ import { t as _default$5 } from "./as-column-menu.vue-CZ8XqHl0.cjs";
14
14
  import { t as _default$6 } from "./as-config-dialog.vue-DvvJi3xx.cjs";
15
15
  import { t as _default$7 } from "./as-confirm-dialog.vue-CXxLpzbu.cjs";
16
16
  import { t as _default$8 } from "./as-filter-dialog.vue-BV2J8PgZ.cjs";
@@ -19,5 +19,5 @@ import { t as _default$10 } from "./as-filter-input.vue-CS4nOk_Q.cjs";
19
19
  import { t as _default$12 } from "./as-preset-dialog.vue-DP9fy00Y.cjs";
20
20
  import { t as _default$14 } from "./as-row-actions.vue-Bvcc2tUN.cjs";
21
21
  import { t as _default$17 } from "./as-table-cell-value.vue-BgFDv2JQ.cjs";
22
- import { t as _default$18 } from "./as-table-header-cell.vue-BzTzfGRo.cjs";
23
- export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, _default as AsCellArray, _default$1 as AsCellDate, _default$2 as AsCellJson, _default$3 as AsCellNumber, _default$4 as AsCellUnion, _default$5 as AsColumnMenu, _default$6 as AsConfigDialog, _default$7 as AsConfirmDialog, _default$8 as AsFilterDialog, _default$9 as AsFilterField, _default$10 as AsFilterInput, _default$11 as AsFilters, _default$12 as AsPresetDialog, AsPresetEntryRow, _default$13 as AsPresetPicker, _default$14 as AsRowActions, _default$15 as AsTable, _default$16 as AsTableActions, _default$17 as AsTableCellValue, _default$18 as AsTableHeaderCell, _default$19 as AsTableRoot, _default$20 as AsWindowTable, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, InvokeOpts, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryOptions, ReactiveTableState, RowDeleteOpt, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };
22
+ import { t as _default$18 } from "./as-table-header-cell.vue-qS1Xfc-U.cjs";
23
+ export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, _default as AsCellArray, _default$1 as AsCellDate, _default$2 as AsCellJson, _default$3 as AsCellNumber, _default$4 as AsCellUnion, _default$5 as AsColumnMenu, _default$6 as AsConfigDialog, _default$7 as AsConfirmDialog, _default$8 as AsFilterDialog, _default$9 as AsFilterField, _default$10 as AsFilterInput, _default$11 as AsFilters, _default$12 as AsPresetDialog, AsPresetEntryRow, _default$13 as AsPresetPicker, _default$14 as AsRowActions, _default$15 as AsTable, _default$16 as AsTableActions, _default$17 as AsTableCellValue, _default$18 as AsTableHeaderCell, _default$19 as AsTableRoot, _default$20 as AsWindowTable, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, InvokeOpts, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryOptions, ReactiveTableState, RowAttrsHook, RowClassHook, RowDeleteOpt, RowHookContext, RowSelectableHook, RowSelectableVerdict, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };
package/dist/index.d.mts CHANGED
@@ -1,16 +1,16 @@
1
- import { t as _default$11 } from "./as-filters.vue-DmECMd1v.mjs";
1
+ import { t as _default$11 } from "./as-filters.vue-BG_ysCkC.mjs";
2
2
  import { t as _default$13 } from "./as-preset-picker.vue-BPjsiaVt.mjs";
3
- import { _ as TableNavBridge, c as NavKeyOptions, d as ReactiveTableState, f as RowDeleteOpt, g as TableActionsState, h as TVueTableActionInfo, m as TAsTableControls, n as ColumnMenuConfig, o as InvokeOpts, p as TAsCellTypeComponents, r as ConfigTab, s as MainActionRequest, t as ActionResult, u as QueryErrorKind } from "./types-ByU4O0Yf.mjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-DTGYOsZh.mjs";
5
- import { $ as createStaticTableState, A as createDefaultCellTypes, B as useTableActions, C as extractIdentifier, D as CellLocale, E as getColumnWidth, F as useAppPrefs, G as clearTableCache, H as useTableFilter, I as AS_PRESETS_APP, J as useTableSelection, K as useTable, L as injectPresetsApp, M as useTableComponent, N as UseAppPrefsOptions, O as provideCellLocale, P as UseAppPrefsReturn, Q as TableStateInternals, R as UseTableUrlQueryOptions, S as setDefaultClientFactory, T as getCellValue, U as useTableNavBridge, V as useTableSearch, W as UseTableOptions, X as CreateTableStateOptions, Y as CreateStaticTableStateOptions, Z as TableContext, _ as UserConfData, a as PRESET_ASPECTS, at as UsePresetsReturn, b as resetDefaultClientFactory, c as PresetData, ct as UseLocalDraftOptions, d as QueryOptions, et as createTableState, f as STANDARD_PRESET_ID, g as UrlQuerySync, h as SystemPresetInput, i as ClientFactory, it as UsePresetsOptions, j as createDefaultControls, k as useCellLocale, l as PresetSnapshot, lt as UseLocalDraftReturn, m as SystemPreset, n as AppConfData, nt as useTableContextOptional, o as PresetAspect, ot as usePresets, p as SYSTEM_PRESET_PREFIX, q as SelectionPersistence, r as AsPresetEntryRow, rt as ActivePresetView, s as PresetCapabilities, st as StorageLike, t as _default$19, tt as useTableContext, u as PresetSnapshotWire, ut as useLocalDraft, v as getDefaultClientFactory, w as formatCellValue, x as resolveSystemPresets, y as isSystemPresetId, z as useTableUrlQuery } from "./as-table-root.vue-BqZl6JQ0.mjs";
6
- import { t as _default$15 } from "./as-table.vue-DxtfL26P.mjs";
7
- import { t as _default$20 } from "./as-window-table.vue-BpvgmsC1.mjs";
3
+ import { S as TableNavBridge, _ as RowSelectableVerdict, b as TVueTableActionInfo, c as NavKeyOptions, d as ReactiveTableState, f as RowAttrsHook, g as RowSelectableHook, h as RowHookContext, m as RowDeleteOpt, n as ColumnMenuConfig, o as InvokeOpts, p as RowClassHook, r as ConfigTab, s as MainActionRequest, t as ActionResult, u as QueryErrorKind, v as TAsCellTypeComponents, x as TableActionsState, y as TAsTableControls } from "./types-CXz-4dPz.mjs";
4
+ import { t as _default$16 } from "./as-table-actions.vue-DsqauvXR.mjs";
5
+ import { $ as createStaticTableState, A as createDefaultCellTypes, B as useTableActions, C as extractIdentifier, D as CellLocale, E as getColumnWidth, F as useAppPrefs, G as clearTableCache, H as useTableFilter, I as AS_PRESETS_APP, J as useTableSelection, K as useTable, L as injectPresetsApp, M as useTableComponent, N as UseAppPrefsOptions, O as provideCellLocale, P as UseAppPrefsReturn, Q as TableStateInternals, R as UseTableUrlQueryOptions, S as setDefaultClientFactory, T as getCellValue, U as useTableNavBridge, V as useTableSearch, W as UseTableOptions, X as CreateTableStateOptions, Y as CreateStaticTableStateOptions, Z as TableContext, _ as UserConfData, a as PRESET_ASPECTS, at as UsePresetsReturn, b as resetDefaultClientFactory, c as PresetData, ct as UseLocalDraftOptions, d as QueryOptions, et as createTableState, f as STANDARD_PRESET_ID, g as UrlQuerySync, h as SystemPresetInput, i as ClientFactory, it as UsePresetsOptions, j as createDefaultControls, k as useCellLocale, l as PresetSnapshot, lt as UseLocalDraftReturn, m as SystemPreset, n as AppConfData, nt as useTableContextOptional, o as PresetAspect, ot as usePresets, p as SYSTEM_PRESET_PREFIX, q as SelectionPersistence, r as AsPresetEntryRow, rt as ActivePresetView, s as PresetCapabilities, st as StorageLike, t as _default$19, tt as useTableContext, u as PresetSnapshotWire, ut as useLocalDraft, v as getDefaultClientFactory, w as formatCellValue, x as resolveSystemPresets, y as isSystemPresetId, z as useTableUrlQuery } from "./as-table-root.vue-BPU92_Ns.mjs";
6
+ import { t as _default$15 } from "./as-table.vue-4WhMA8AM.mjs";
7
+ import { t as _default$20 } from "./as-window-table.vue-CWsJvOkL.mjs";
8
8
  import { t as _default } from "./as-cell-array.vue-D4vS7C_D.mjs";
9
9
  import { t as _default$1 } from "./as-cell-date.vue-Chs7WTZ9.mjs";
10
10
  import { t as _default$2 } from "./as-cell-json.vue-C0_LDvQw.mjs";
11
11
  import { t as _default$3 } from "./as-cell-number.vue-BBF0OuU8.mjs";
12
12
  import { t as _default$4 } from "./as-cell-union.vue-CL-Lf-Rm.mjs";
13
- import { t as _default$5 } from "./as-column-menu.vue-DL5N9mKR.mjs";
13
+ import { t as _default$5 } from "./as-column-menu.vue-Cuelpv3p.mjs";
14
14
  import { t as _default$6 } from "./as-config-dialog.vue-BvFZZRuY.mjs";
15
15
  import { t as _default$7 } from "./as-confirm-dialog.vue-Cz52-v6c.mjs";
16
16
  import { t as _default$8 } from "./as-filter-dialog.vue-likNLqzF.mjs";
@@ -19,5 +19,5 @@ import { t as _default$10 } from "./as-filter-input.vue-B9ma2l9j.mjs";
19
19
  import { t as _default$12 } from "./as-preset-dialog.vue-BRjjfPty.mjs";
20
20
  import { t as _default$14 } from "./as-row-actions.vue-DUSDuoR2.mjs";
21
21
  import { t as _default$17 } from "./as-table-cell-value.vue-kfNgVhzn.mjs";
22
- import { t as _default$18 } from "./as-table-header-cell.vue-BCszzxtU.mjs";
23
- export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, _default as AsCellArray, _default$1 as AsCellDate, _default$2 as AsCellJson, _default$3 as AsCellNumber, _default$4 as AsCellUnion, _default$5 as AsColumnMenu, _default$6 as AsConfigDialog, _default$7 as AsConfirmDialog, _default$8 as AsFilterDialog, _default$9 as AsFilterField, _default$10 as AsFilterInput, _default$11 as AsFilters, _default$12 as AsPresetDialog, AsPresetEntryRow, _default$13 as AsPresetPicker, _default$14 as AsRowActions, _default$15 as AsTable, _default$16 as AsTableActions, _default$17 as AsTableCellValue, _default$18 as AsTableHeaderCell, _default$19 as AsTableRoot, _default$20 as AsWindowTable, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, InvokeOpts, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryOptions, ReactiveTableState, RowDeleteOpt, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };
22
+ import { t as _default$18 } from "./as-table-header-cell.vue-BjVOEFqz.mjs";
23
+ export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, _default as AsCellArray, _default$1 as AsCellDate, _default$2 as AsCellJson, _default$3 as AsCellNumber, _default$4 as AsCellUnion, _default$5 as AsColumnMenu, _default$6 as AsConfigDialog, _default$7 as AsConfirmDialog, _default$8 as AsFilterDialog, _default$9 as AsFilterField, _default$10 as AsFilterInput, _default$11 as AsFilters, _default$12 as AsPresetDialog, AsPresetEntryRow, _default$13 as AsPresetPicker, _default$14 as AsRowActions, _default$15 as AsTable, _default$16 as AsTableActions, _default$17 as AsTableCellValue, _default$18 as AsTableHeaderCell, _default$19 as AsTableRoot, _default$20 as AsWindowTable, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, InvokeOpts, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryOptions, ReactiveTableState, RowAttrsHook, RowClassHook, RowDeleteOpt, RowHookContext, RowSelectableHook, RowSelectableVerdict, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };