@atscript/vue-table 0.1.132 → 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-B-cgiCXP.d.cts → as-table-actions.vue-CckRRsL6.d.cts} +2 -2
  54. package/dist/{as-table-actions.vue-ClMa0OD1.d.mts → as-table-actions.vue-DsqauvXR.d.mts} +2 -2
  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-QMT93qPk.d.mts → as-table-root.vue-BPU92_Ns.d.mts} +55 -12
  72. package/dist/{as-table-root.vue-D0T3n-Vm.d.cts → as-table-root.vue-szvjZsCn.d.cts} +55 -12
  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-Ds7MEp37.d.cts → as-table.vue-4WhMA8AM.d.mts} +27 -3
  80. package/dist/{as-table.vue-Ce5606ZO.d.mts → 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-DfZF1Mux.d.mts → as-window-table.vue-CWsJvOkL.d.mts} +25 -2
  88. package/dist/{as-window-table.vue-Bhf9BK8E.d.cts → as-window-table.vue-h1bdyMv7.d.cts} +25 -2
  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,12 +1,12 @@
1
- const require_use_table_state = require("./use-table-state-Oi2ds4_a.cjs");
2
- const require_use_table = require("./use-table-nvBq1dZ4.cjs");
3
- const require_use_table_nav_bridge = require("./use-table-nav-bridge-uOQUDooh.cjs");
4
- const require_use_table_component = require("./use-table-component-DO_kvKSf.cjs");
5
- const require_as_config_dialog = require("./as-config-dialog-BOYWPYYH.cjs");
1
+ const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
+ const require_use_table = require("./use-table-CdFFqaEx.cjs");
3
+ const require_use_table_nav_bridge = require("./use-table-nav-bridge-CVUmTjDr.cjs");
4
+ const require_use_table_component = require("./use-table-component-DlLganVc.cjs");
5
+ const require_as_config_dialog = require("./as-config-dialog-Bt8oP8qg.cjs");
6
6
  const require_use_seed_on_open = require("./use-seed-on-open-Dg9I89fU.cjs");
7
7
  const require_as_filter_input = require("./as-filter-input-DJu2k9gO.cjs");
8
- const require_as_window_table = require("./as-window-table-jD_y9yet.cjs");
9
- const require_as_filters = require("./as-filters-DCZTHjf5.cjs");
8
+ const require_as_window_table = require("./as-window-table-CXq6UuUx.cjs");
9
+ const require_as_filters = require("./as-filters-DuCk8nkk.cjs");
10
10
  let _atscript_ui = require("@atscript/ui");
11
11
  let vue = require("vue");
12
12
  let _atscript_ui_table = require("@atscript/ui-table");
@@ -452,19 +452,27 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
452
452
  onKeydown: (0, vue.unref)(onDialogKeydown)
453
453
  }, {
454
454
  default: (0, vue.withCtx)(() => [
455
- (0, vue.createElementVNode)("div", _hoisted_1, [(0, vue.createVNode)((0, vue.unref)(reka_ui.DialogTitle), { class: "as-filter-dialog-title" }, {
456
- default: (0, vue.withCtx)(() => [_cache[5] || (_cache[5] = (0, vue.createElementVNode)("span", { class: "as-filter-dialog-title-label" }, "Filter", -1)), (0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)(column.value?.label), 1)]),
457
- _: 1
458
- }), (0, vue.createVNode)((0, vue.unref)(reka_ui.DialogClose), {
459
- class: "as-filter-dialog-close",
460
- "aria-label": "Close"
461
- }, {
462
- default: (0, vue.withCtx)(() => [..._cache[6] || (_cache[6] = [(0, vue.createElementVNode)("span", {
463
- class: "i-as-close",
464
- "aria-hidden": "true"
465
- }, null, -1)])]),
466
- _: 1
467
- })]),
455
+ (0, vue.createElementVNode)("div", _hoisted_1, [
456
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DialogTitle), { class: "as-filter-dialog-title" }, {
457
+ default: (0, vue.withCtx)(() => [_cache[5] || (_cache[5] = (0, vue.createElementVNode)("span", { class: "as-filter-dialog-title-label" }, "Filter", -1)), (0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)(column.value?.label), 1)]),
458
+ _: 1
459
+ }),
460
+ (0, vue.createCommentVNode)(" Reka requires a description on every DialogContent — without it\n it logs a warning and leaves `aria-describedby=\"undefined\"` on\n the surface. The column name is already in the title, so the\n copy is screen-reader-only. "),
461
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DialogDescription), { class: "sr-only" }, {
462
+ default: (0, vue.withCtx)(() => [..._cache[6] || (_cache[6] = [(0, vue.createTextVNode)(" Build the filter conditions applied to this column. ", -1)])]),
463
+ _: 1
464
+ }),
465
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DialogClose), {
466
+ class: "as-filter-dialog-close",
467
+ "aria-label": "Close"
468
+ }, {
469
+ default: (0, vue.withCtx)(() => [..._cache[7] || (_cache[7] = [(0, vue.createElementVNode)("span", {
470
+ class: "i-as-close",
471
+ "aria-hidden": "true"
472
+ }, null, -1)])]),
473
+ _: 1
474
+ })
475
+ ]),
468
476
  column.value && hasValueHelp.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.TabsRoot), {
469
477
  key: 0,
470
478
  modelValue: activeTab.value,
@@ -477,7 +485,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
477
485
  value: "value-help",
478
486
  class: "as-config-tab-trigger"
479
487
  }, {
480
- default: (0, vue.withCtx)(() => [_cache[7] || (_cache[7] = (0, vue.createTextVNode)(" Values ", -1)), valueHelpConditions.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
488
+ default: (0, vue.withCtx)(() => [_cache[8] || (_cache[8] = (0, vue.createTextVNode)(" Values ", -1)), valueHelpConditions.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
481
489
  key: 0,
482
490
  class: (0, vue.normalizeClass)(["as-config-tab-count", { "as-config-tab-count-active": activeTab.value === "value-help" }])
483
491
  }, (0, vue.toDisplayString)(valueHelpConditions.value.length), 3)) : (0, vue.createCommentVNode)("v-if", true)]),
@@ -486,7 +494,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
486
494
  value: "conditions",
487
495
  class: "as-config-tab-trigger"
488
496
  }, {
489
- default: (0, vue.withCtx)(() => [_cache[8] || (_cache[8] = (0, vue.createTextVNode)(" Conditions ", -1)), filledFreeCount.value > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
497
+ default: (0, vue.withCtx)(() => [_cache[9] || (_cache[9] = (0, vue.createTextVNode)(" Conditions ", -1)), filledFreeCount.value > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
490
498
  key: 0,
491
499
  class: (0, vue.normalizeClass)(["as-config-tab-count", { "as-config-tab-count-active": activeTab.value === "conditions" }])
492
500
  }, (0, vue.toDisplayString)(filledFreeCount.value), 3)) : (0, vue.createCommentVNode)("v-if", true)]),
@@ -536,7 +544,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
536
544
  class: "as-filter-dialog-chip-remove",
537
545
  "aria-label": "Remove",
538
546
  onClick: ($event) => removeChip(chip)
539
- }, [..._cache[9] || (_cache[9] = [(0, vue.createElementVNode)("span", {
547
+ }, [..._cache[10] || (_cache[10] = [(0, vue.createElementVNode)("span", {
540
548
  class: "i-as-close",
541
549
  "aria-hidden": "true"
542
550
  }, null, -1)])], 8, _hoisted_8)]);
@@ -1,16 +1,16 @@
1
- import { a as useTableContext, r as provideTableContext, t as createStaticTableState } from "./use-table-state-BxX3SpeW.mjs";
2
- import { n as useTable } from "./use-table-CyFcVtUN.mjs";
3
- import { t as useTableNavBridge } from "./use-table-nav-bridge-DeGeaQX-.mjs";
4
- import { t as useTableComponent } from "./use-table-component-K6xj1obF.mjs";
5
- import { n as useDialogTabKeyboard, t as as_config_dialog_default } from "./as-config-dialog-BehfqIGd.mjs";
1
+ import { a as useTableContext, r as provideTableContext, t as createStaticTableState } from "./use-table-state-DLJbW753.mjs";
2
+ import { n as useTable } from "./use-table-Bk-jSxOM.mjs";
3
+ import { t as useTableNavBridge } from "./use-table-nav-bridge-B9SSEajW.mjs";
4
+ import { t as useTableComponent } from "./use-table-component-KuzZxAP8.mjs";
5
+ import { n as useDialogTabKeyboard, t as as_config_dialog_default } from "./as-config-dialog-BKsm8OHR.mjs";
6
6
  import { t as useSeedOnOpen } from "./use-seed-on-open-DO3A1kIb.mjs";
7
7
  import { t as as_filter_input_default } from "./as-filter-input-BM23TNeh.mjs";
8
- import { t as as_window_table_default } from "./as-window-table-DWujiUQy.mjs";
9
- import { t as as_filters_default } from "./as-filters-beIud9sF.mjs";
8
+ import { t as as_window_table_default } from "./as-window-table-S1XWpDHQ.mjs";
9
+ import { t as as_filters_default } from "./as-filters-DJEQj7_p.mjs";
10
10
  import { resolveValueHelp, valueHelpDictPaths } from "@atscript/ui";
11
11
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, resolveDynamicComponent, shallowRef, toDisplayString, unref, useModel, watch, withCtx } from "vue";
12
12
  import { columnFilterType, conditionLabel, conditionsForType, dateShortcuts, defaultCondition, filledFilterCount, formatFilterCondition, isFilled, isSimpleEq, sameColumnSet } from "@atscript/ui-table";
13
- import { DialogClose, DialogContent, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, TabsContent, TabsList, TabsRoot, TabsTrigger } from "reka-ui";
13
+ import { DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, TabsContent, TabsList, TabsRoot, TabsTrigger } from "reka-ui";
14
14
  //#region src/components/internal/as-filter-conditions.vue?vue&type=script&setup=true&lang.ts
15
15
  const _hoisted_1$2 = ["value", "onChange"];
16
16
  const _hoisted_2$2 = ["value"];
@@ -452,19 +452,27 @@ var as_filter_dialog_default = /* @__PURE__ */ defineComponent({
452
452
  onKeydown: unref(onDialogKeydown)
453
453
  }, {
454
454
  default: withCtx(() => [
455
- createElementVNode("div", _hoisted_1, [createVNode(unref(DialogTitle), { class: "as-filter-dialog-title" }, {
456
- default: withCtx(() => [_cache[5] || (_cache[5] = createElementVNode("span", { class: "as-filter-dialog-title-label" }, "Filter", -1)), createElementVNode("span", _hoisted_2, toDisplayString(column.value?.label), 1)]),
457
- _: 1
458
- }), createVNode(unref(DialogClose), {
459
- class: "as-filter-dialog-close",
460
- "aria-label": "Close"
461
- }, {
462
- default: withCtx(() => [..._cache[6] || (_cache[6] = [createElementVNode("span", {
463
- class: "i-as-close",
464
- "aria-hidden": "true"
465
- }, null, -1)])]),
466
- _: 1
467
- })]),
455
+ createElementVNode("div", _hoisted_1, [
456
+ createVNode(unref(DialogTitle), { class: "as-filter-dialog-title" }, {
457
+ default: withCtx(() => [_cache[5] || (_cache[5] = createElementVNode("span", { class: "as-filter-dialog-title-label" }, "Filter", -1)), createElementVNode("span", _hoisted_2, toDisplayString(column.value?.label), 1)]),
458
+ _: 1
459
+ }),
460
+ createCommentVNode(" Reka requires a description on every DialogContent — without it\n it logs a warning and leaves `aria-describedby=\"undefined\"` on\n the surface. The column name is already in the title, so the\n copy is screen-reader-only. "),
461
+ createVNode(unref(DialogDescription), { class: "sr-only" }, {
462
+ default: withCtx(() => [..._cache[6] || (_cache[6] = [createTextVNode(" Build the filter conditions applied to this column. ", -1)])]),
463
+ _: 1
464
+ }),
465
+ createVNode(unref(DialogClose), {
466
+ class: "as-filter-dialog-close",
467
+ "aria-label": "Close"
468
+ }, {
469
+ default: withCtx(() => [..._cache[7] || (_cache[7] = [createElementVNode("span", {
470
+ class: "i-as-close",
471
+ "aria-hidden": "true"
472
+ }, null, -1)])]),
473
+ _: 1
474
+ })
475
+ ]),
468
476
  column.value && hasValueHelp.value ? (openBlock(), createBlock(unref(TabsRoot), {
469
477
  key: 0,
470
478
  modelValue: activeTab.value,
@@ -477,7 +485,7 @@ var as_filter_dialog_default = /* @__PURE__ */ defineComponent({
477
485
  value: "value-help",
478
486
  class: "as-config-tab-trigger"
479
487
  }, {
480
- default: withCtx(() => [_cache[7] || (_cache[7] = createTextVNode(" Values ", -1)), valueHelpConditions.value.length > 0 ? (openBlock(), createElementBlock("span", {
488
+ default: withCtx(() => [_cache[8] || (_cache[8] = createTextVNode(" Values ", -1)), valueHelpConditions.value.length > 0 ? (openBlock(), createElementBlock("span", {
481
489
  key: 0,
482
490
  class: normalizeClass(["as-config-tab-count", { "as-config-tab-count-active": activeTab.value === "value-help" }])
483
491
  }, toDisplayString(valueHelpConditions.value.length), 3)) : createCommentVNode("v-if", true)]),
@@ -486,7 +494,7 @@ var as_filter_dialog_default = /* @__PURE__ */ defineComponent({
486
494
  value: "conditions",
487
495
  class: "as-config-tab-trigger"
488
496
  }, {
489
- default: withCtx(() => [_cache[8] || (_cache[8] = createTextVNode(" Conditions ", -1)), filledFreeCount.value > 0 ? (openBlock(), createElementBlock("span", {
497
+ default: withCtx(() => [_cache[9] || (_cache[9] = createTextVNode(" Conditions ", -1)), filledFreeCount.value > 0 ? (openBlock(), createElementBlock("span", {
490
498
  key: 0,
491
499
  class: normalizeClass(["as-config-tab-count", { "as-config-tab-count-active": activeTab.value === "conditions" }])
492
500
  }, toDisplayString(filledFreeCount.value), 3)) : createCommentVNode("v-if", true)]),
@@ -536,7 +544,7 @@ var as_filter_dialog_default = /* @__PURE__ */ defineComponent({
536
544
  class: "as-filter-dialog-chip-remove",
537
545
  "aria-label": "Remove",
538
546
  onClick: ($event) => removeChip(chip)
539
- }, [..._cache[9] || (_cache[9] = [createElementVNode("span", {
547
+ }, [..._cache[10] || (_cache[10] = [createElementVNode("span", {
540
548
  class: "i-as-close",
541
549
  "aria-hidden": "true"
542
550
  }, null, -1)])], 8, _hoisted_8)]);
@@ -1,2 +1,2 @@
1
- const require_as_filter_dialog = require("./as-filter-dialog-Dh2Ylthb.cjs");
1
+ const require_as_filter_dialog = require("./as-filter-dialog-Bxii-mYH.cjs");
2
2
  module.exports = require_as_filter_dialog.as_filter_dialog_default;
@@ -1,2 +1,2 @@
1
- import { t as as_filter_dialog_default } from "./as-filter-dialog-D1qzq-8b.mjs";
1
+ import { t as as_filter_dialog_default } from "./as-filter-dialog-Ckrl79kU.mjs";
2
2
  export { as_filter_dialog_default as default };
@@ -1,6 +1,6 @@
1
- import { a as useTableContext } from "./use-table-state-BxX3SpeW.mjs";
2
- import { n as useTable } from "./use-table-CyFcVtUN.mjs";
3
- import { t as as_table_base_default } from "./as-table-base-BaTE3VSN.mjs";
1
+ import { a as useTableContext } from "./use-table-state-DLJbW753.mjs";
2
+ import { n as useTable } from "./use-table-Bk-jSxOM.mjs";
3
+ import { t as as_table_base_default } from "./as-table-base-B0arhJI8.mjs";
4
4
  import { ValueHelpClient, getMetaEntry, resolveValueHelp, valueHelpDictPaths } from "@atscript/ui";
5
5
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, onBeforeUnmount, openBlock, ref, renderList, shallowRef, toDisplayString, unref, useId, watch, withCtx, withKeys, withModifiers } from "vue";
6
6
  import { arraysEqual, columnFilterType, debounce, formatFilterCondition, isFilled, isSimpleEq, parseFilterInput } from "@atscript/ui-table";
@@ -39,7 +39,7 @@ function useDragScroll(el) {
39
39
  function onDown(e) {
40
40
  const target = e.target;
41
41
  if (!el.value || !target) return;
42
- if (target.closest("input, textarea, button, [role=button], a")) return;
42
+ if (target.closest("button, a[href], input, select, textarea, summary, [role=button], [role=link], [role=checkbox], [role=menuitem], [role=switch], [role=tab], [role=option]")) return;
43
43
  if (e.button !== 0) return;
44
44
  startX = e.clientX;
45
45
  startScroll = el.value.scrollLeft;
@@ -1,6 +1,6 @@
1
- const require_use_table_state = require("./use-table-state-Oi2ds4_a.cjs");
2
- const require_use_table = require("./use-table-nvBq1dZ4.cjs");
3
- const require_as_table_base = require("./as-table-base-RG2TEIgV.cjs");
1
+ const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
+ const require_use_table = require("./use-table-CdFFqaEx.cjs");
3
+ const require_as_table_base = require("./as-table-base-Dfw012G5.cjs");
4
4
  let _atscript_ui = require("@atscript/ui");
5
5
  let vue = require("vue");
6
6
  let _atscript_ui_table = require("@atscript/ui-table");
@@ -39,7 +39,7 @@ function useDragScroll(el) {
39
39
  function onDown(e) {
40
40
  const target = e.target;
41
41
  if (!el.value || !target) return;
42
- if (target.closest("input, textarea, button, [role=button], a")) return;
42
+ if (target.closest("button, a[href], input, select, textarea, summary, [role=button], [role=link], [role=checkbox], [role=menuitem], [role=switch], [role=tab], [role=option]")) return;
43
43
  if (e.button !== 0) return;
44
44
  startX = e.clientX;
45
45
  startScroll = el.value.scrollLeft;
@@ -1,2 +1,2 @@
1
- const require_as_filter_field = require("./as-filter-field-DRsDJdpx.cjs");
1
+ const require_as_filter_field = require("./as-filter-field-xBr6TtKo.cjs");
2
2
  module.exports = require_as_filter_field.as_filter_field_default;
@@ -1,2 +1,2 @@
1
- import { t as as_filter_field_default } from "./as-filter-field-DirBmnbb.mjs";
1
+ import { t as as_filter_field_default } from "./as-filter-field-C-IFnj8K.mjs";
2
2
  export { as_filter_field_default as default };
@@ -0,0 +1,125 @@
1
+ import { a as useTableContext } from "./use-table-state-DLJbW753.mjs";
2
+ import { t as useTableComponent } from "./use-table-component-KuzZxAP8.mjs";
3
+ import { t as as_filter_field_default } from "./as-filter-field-C-IFnj8K.mjs";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, openBlock, renderList, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
5
+ import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "reka-ui";
6
+ //#region src/components/as-filters.vue?vue&type=script&setup=true&lang.ts
7
+ const _hoisted_1 = {
8
+ key: 0,
9
+ class: "as-filters-overflow-badge"
10
+ };
11
+ //#endregion
12
+ //#region src/components/as-filters.vue
13
+ var as_filters_default = /* @__PURE__ */ defineComponent({
14
+ inheritAttrs: false,
15
+ __name: "as-filters",
16
+ props: {
17
+ filterFields: {
18
+ type: Array,
19
+ required: false
20
+ },
21
+ maxVisible: {
22
+ type: Number,
23
+ required: false
24
+ },
25
+ overflow: {
26
+ type: String,
27
+ required: false
28
+ }
29
+ },
30
+ setup(__props) {
31
+ const props = __props;
32
+ const { state } = useTableContext();
33
+ const FilterField = useTableComponent("filterField", as_filter_field_default);
34
+ const columnMap = computed(() => {
35
+ const tableDef = state.tableDef.value;
36
+ if (!tableDef) return /* @__PURE__ */ new Map();
37
+ const map = /* @__PURE__ */ new Map();
38
+ for (const col of tableDef.columns) map.set(col.path, col);
39
+ return map;
40
+ });
41
+ const activeColumns = computed(() => {
42
+ const fields = props.filterFields ?? state.filterFields.value;
43
+ const map = columnMap.value;
44
+ if (map.size === 0) return [];
45
+ const result = [];
46
+ for (const path of fields) {
47
+ const col = map.get(path);
48
+ if (col) result.push(col);
49
+ }
50
+ return result;
51
+ });
52
+ /**
53
+ * The inline / overflow split, in one pass. `maxVisible` unset → no split at
54
+ * all (and `overflow` is moot), which is why `overflow` is empty rather than
55
+ * hidden-behind-a-trigger in that case.
56
+ */
57
+ const split = computed(() => {
58
+ const all = activeColumns.value;
59
+ if (props.maxVisible === void 0) return {
60
+ visible: all,
61
+ overflow: []
62
+ };
63
+ const limit = Math.max(0, props.maxVisible);
64
+ return {
65
+ visible: all.slice(0, limit),
66
+ overflow: all.slice(limit)
67
+ };
68
+ });
69
+ const activeOverflowCount = computed(() => {
70
+ const filters = state.filters.value;
71
+ let n = 0;
72
+ for (const col of split.value.overflow) if ((filters[col.path]?.length ?? 0) > 0) n++;
73
+ return n;
74
+ });
75
+ return (_ctx, _cache) => {
76
+ return openBlock(), createElementBlock(Fragment, null, [
77
+ createCommentVNode(" Multi-root fragment on purpose: the fields (and the overflow trigger)\n are direct children of whatever toolbar row the host wraps this in,\n so this component adds no box and no layout of its own. "),
78
+ (openBlock(true), createElementBlock(Fragment, null, renderList(split.value.visible, (col) => {
79
+ return openBlock(), createBlock(resolveDynamicComponent(unref(FilterField)), mergeProps({
80
+ key: col.path,
81
+ column: col
82
+ }, { ref_for: true }, _ctx.$attrs), null, 16, ["column"]);
83
+ }), 128)),
84
+ (props.overflow ?? "popover") === "popover" && split.value.overflow.length > 0 ? (openBlock(), createBlock(unref(PopoverRoot), { key: 0 }, {
85
+ default: withCtx(() => [createVNode(unref(PopoverTrigger), {
86
+ class: "as-filters-overflow-trigger",
87
+ "aria-label": "More filters"
88
+ }, {
89
+ default: withCtx(() => [
90
+ _cache[0] || (_cache[0] = createElementVNode("span", {
91
+ class: "i-as-filter as-filters-overflow-trigger-icon",
92
+ "aria-hidden": "true"
93
+ }, null, -1)),
94
+ activeOverflowCount.value > 0 ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(activeOverflowCount.value), 1)) : createCommentVNode("v-if", true),
95
+ _cache[1] || (_cache[1] = createElementVNode("span", {
96
+ class: "i-as-chevron-down as-filters-overflow-chevron",
97
+ "aria-hidden": "true"
98
+ }, null, -1))
99
+ ]),
100
+ _: 1
101
+ }), createVNode(unref(PopoverPortal), null, {
102
+ default: withCtx(() => [createVNode(unref(PopoverContent), {
103
+ class: "as-filters-overflow",
104
+ align: "end",
105
+ "side-offset": 4,
106
+ "collision-padding": 8
107
+ }, {
108
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(split.value.overflow, (col) => {
109
+ return openBlock(), createBlock(resolveDynamicComponent(unref(FilterField)), mergeProps({
110
+ key: col.path,
111
+ column: col
112
+ }, { ref_for: true }, _ctx.$attrs), null, 16, ["column"]);
113
+ }), 128))]),
114
+ _: 1
115
+ })]),
116
+ _: 1
117
+ })]),
118
+ _: 1
119
+ })) : createCommentVNode("v-if", true)
120
+ ], 64);
121
+ };
122
+ }
123
+ });
124
+ //#endregion
125
+ export { as_filters_default as t };
@@ -0,0 +1,130 @@
1
+ const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
+ const require_use_table_component = require("./use-table-component-DlLganVc.cjs");
3
+ const require_as_filter_field = require("./as-filter-field-xBr6TtKo.cjs");
4
+ let vue = require("vue");
5
+ let reka_ui = require("reka-ui");
6
+ //#region src/components/as-filters.vue?vue&type=script&setup=true&lang.ts
7
+ const _hoisted_1 = {
8
+ key: 0,
9
+ class: "as-filters-overflow-badge"
10
+ };
11
+ //#endregion
12
+ //#region src/components/as-filters.vue
13
+ var as_filters_default = /* @__PURE__ */ (0, vue.defineComponent)({
14
+ inheritAttrs: false,
15
+ __name: "as-filters",
16
+ props: {
17
+ filterFields: {
18
+ type: Array,
19
+ required: false
20
+ },
21
+ maxVisible: {
22
+ type: Number,
23
+ required: false
24
+ },
25
+ overflow: {
26
+ type: String,
27
+ required: false
28
+ }
29
+ },
30
+ setup(__props) {
31
+ const props = __props;
32
+ const { state } = require_use_table_state.useTableContext();
33
+ const FilterField = require_use_table_component.useTableComponent("filterField", require_as_filter_field.as_filter_field_default);
34
+ const columnMap = (0, vue.computed)(() => {
35
+ const tableDef = state.tableDef.value;
36
+ if (!tableDef) return /* @__PURE__ */ new Map();
37
+ const map = /* @__PURE__ */ new Map();
38
+ for (const col of tableDef.columns) map.set(col.path, col);
39
+ return map;
40
+ });
41
+ const activeColumns = (0, vue.computed)(() => {
42
+ const fields = props.filterFields ?? state.filterFields.value;
43
+ const map = columnMap.value;
44
+ if (map.size === 0) return [];
45
+ const result = [];
46
+ for (const path of fields) {
47
+ const col = map.get(path);
48
+ if (col) result.push(col);
49
+ }
50
+ return result;
51
+ });
52
+ /**
53
+ * The inline / overflow split, in one pass. `maxVisible` unset → no split at
54
+ * all (and `overflow` is moot), which is why `overflow` is empty rather than
55
+ * hidden-behind-a-trigger in that case.
56
+ */
57
+ const split = (0, vue.computed)(() => {
58
+ const all = activeColumns.value;
59
+ if (props.maxVisible === void 0) return {
60
+ visible: all,
61
+ overflow: []
62
+ };
63
+ const limit = Math.max(0, props.maxVisible);
64
+ return {
65
+ visible: all.slice(0, limit),
66
+ overflow: all.slice(limit)
67
+ };
68
+ });
69
+ const activeOverflowCount = (0, vue.computed)(() => {
70
+ const filters = state.filters.value;
71
+ let n = 0;
72
+ for (const col of split.value.overflow) if ((filters[col.path]?.length ?? 0) > 0) n++;
73
+ return n;
74
+ });
75
+ return (_ctx, _cache) => {
76
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [
77
+ (0, vue.createCommentVNode)(" Multi-root fragment on purpose: the fields (and the overflow trigger)\n are direct children of whatever toolbar row the host wraps this in,\n so this component adds no box and no layout of its own. "),
78
+ ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(split.value.visible, (col) => {
79
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(FilterField)), (0, vue.mergeProps)({
80
+ key: col.path,
81
+ column: col
82
+ }, { ref_for: true }, _ctx.$attrs), null, 16, ["column"]);
83
+ }), 128)),
84
+ (props.overflow ?? "popover") === "popover" && split.value.overflow.length > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.PopoverRoot), { key: 0 }, {
85
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.PopoverTrigger), {
86
+ class: "as-filters-overflow-trigger",
87
+ "aria-label": "More filters"
88
+ }, {
89
+ default: (0, vue.withCtx)(() => [
90
+ _cache[0] || (_cache[0] = (0, vue.createElementVNode)("span", {
91
+ class: "i-as-filter as-filters-overflow-trigger-icon",
92
+ "aria-hidden": "true"
93
+ }, null, -1)),
94
+ activeOverflowCount.value > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1, (0, vue.toDisplayString)(activeOverflowCount.value), 1)) : (0, vue.createCommentVNode)("v-if", true),
95
+ _cache[1] || (_cache[1] = (0, vue.createElementVNode)("span", {
96
+ class: "i-as-chevron-down as-filters-overflow-chevron",
97
+ "aria-hidden": "true"
98
+ }, null, -1))
99
+ ]),
100
+ _: 1
101
+ }), (0, vue.createVNode)((0, vue.unref)(reka_ui.PopoverPortal), null, {
102
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.PopoverContent), {
103
+ class: "as-filters-overflow",
104
+ align: "end",
105
+ "side-offset": 4,
106
+ "collision-padding": 8
107
+ }, {
108
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(split.value.overflow, (col) => {
109
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(FilterField)), (0, vue.mergeProps)({
110
+ key: col.path,
111
+ column: col
112
+ }, { ref_for: true }, _ctx.$attrs), null, 16, ["column"]);
113
+ }), 128))]),
114
+ _: 1
115
+ })]),
116
+ _: 1
117
+ })]),
118
+ _: 1
119
+ })) : (0, vue.createCommentVNode)("v-if", true)
120
+ ], 64);
121
+ };
122
+ }
123
+ });
124
+ //#endregion
125
+ Object.defineProperty(exports, "as_filters_default", {
126
+ enumerable: true,
127
+ get: function() {
128
+ return as_filters_default;
129
+ }
130
+ });
@@ -1,2 +1,2 @@
1
- const require_as_filters = require("./as-filters-DCZTHjf5.cjs");
1
+ const require_as_filters = require("./as-filters-DuCk8nkk.cjs");
2
2
  module.exports = require_as_filters.as_filters_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-filters.vue-fv-tRL2H.cjs";
1
+ import { t as _default } from "./as-filters.vue-DcxDnWAU.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-filters.vue-DmECMd1v.mjs";
1
+ import { t as _default } from "./as-filters.vue-BG_ysCkC.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_filters_default } from "./as-filters-beIud9sF.mjs";
1
+ import { t as as_filters_default } from "./as-filters-DJEQj7_p.mjs";
2
2
  export { as_filters_default as default };
@@ -0,0 +1,65 @@
1
+ import * as vue from "vue";
2
+
3
+ //#region src/components/as-filters.vue.d.ts
4
+ declare const _default: typeof __VLS_export;
5
+ declare const __VLS_export: vue.DefineComponent<{
6
+ filterFields?: string[];
7
+ /**
8
+ * Hard cap on how many filter fields render inline. Deterministic and
9
+ * count-based — this component never measures the toolbar. Width-driven
10
+ * responsiveness stays with the host, which already knows its own
11
+ * breakpoints and can feed a shorter `filterFields` list (or a smaller
12
+ * `maxVisible`).
13
+ *
14
+ * Omitted (the default) → every field renders inline, exactly as before.
15
+ *
16
+ * @since 0.1.133
17
+ */
18
+ maxVisible?: number;
19
+ /**
20
+ * What happens to the fields past `maxVisible`:
21
+ * - `'popover'` (the default whenever `maxVisible` is set) — they move into
22
+ * a popover behind a "More filters" trigger, which badges the number of
23
+ * ACTIVE hidden filters so nothing silently narrows the table from
24
+ * off-screen.
25
+ * - `'none'` — they are not rendered at all. Pick this only when the host
26
+ * surfaces them elsewhere (e.g. its own filter dialog); an active filter
27
+ * on a dropped field still applies to the query.
28
+ *
29
+ * Ignored when `maxVisible` is omitted.
30
+ *
31
+ * @since 0.1.133
32
+ */
33
+ overflow?: "popover" | "none";
34
+ }, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{
35
+ filterFields?: string[];
36
+ /**
37
+ * Hard cap on how many filter fields render inline. Deterministic and
38
+ * count-based — this component never measures the toolbar. Width-driven
39
+ * responsiveness stays with the host, which already knows its own
40
+ * breakpoints and can feed a shorter `filterFields` list (or a smaller
41
+ * `maxVisible`).
42
+ *
43
+ * Omitted (the default) → every field renders inline, exactly as before.
44
+ *
45
+ * @since 0.1.133
46
+ */
47
+ maxVisible?: number;
48
+ /**
49
+ * What happens to the fields past `maxVisible`:
50
+ * - `'popover'` (the default whenever `maxVisible` is set) — they move into
51
+ * a popover behind a "More filters" trigger, which badges the number of
52
+ * ACTIVE hidden filters so nothing silently narrows the table from
53
+ * off-screen.
54
+ * - `'none'` — they are not rendered at all. Pick this only when the host
55
+ * surfaces them elsewhere (e.g. its own filter dialog); an active filter
56
+ * on a dropped field still applies to the query.
57
+ *
58
+ * Ignored when `maxVisible` is omitted.
59
+ *
60
+ * @since 0.1.133
61
+ */
62
+ overflow?: "popover" | "none";
63
+ }> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
64
+ //#endregion
65
+ export { _default as t };