@atscript/vue-table 0.1.147 → 0.1.148

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 (177) hide show
  1. package/dist/as-action-form-dialog.cjs +1 -1
  2. package/dist/as-action-form-dialog.mjs +1 -1
  3. package/dist/{as-action-menu-content-35yQWbLF.mjs → as-action-menu-content-BBwL1YZU.mjs} +1 -1
  4. package/dist/{as-action-menu-content-BJ0tn6jq.cjs → as-action-menu-content-DAOjkslC.cjs} +1 -1
  5. package/dist/{as-cell-array-CCZ0Ajj9.cjs → as-cell-array-CB4Nt6Fo.cjs} +3 -2
  6. package/dist/{as-cell-array-Bgc4GYZf.mjs → as-cell-array-CnoVd9ps.mjs} +4 -3
  7. package/dist/as-cell-array.cjs +1 -1
  8. package/dist/as-cell-array.d.mts +1 -1
  9. package/dist/as-cell-array.mjs +1 -1
  10. package/dist/{as-cell-date-RU5JPJhI.cjs → as-cell-date-DrnhvCr4.cjs} +3 -14
  11. package/dist/{as-cell-date-B9mu0OOD.mjs → as-cell-date-dhIM7hWA.mjs} +2 -13
  12. package/dist/as-cell-date.cjs +1 -1
  13. package/dist/as-cell-date.d.mts +1 -1
  14. package/dist/as-cell-date.mjs +1 -1
  15. package/dist/{as-cell-json-ByEGYRST.mjs → as-cell-json-ChN_NDhO.mjs} +1 -1
  16. package/dist/{as-cell-json-w5YJxNuF.cjs → as-cell-json-CzHTpkjS.cjs} +1 -1
  17. package/dist/as-cell-json.cjs +1 -1
  18. package/dist/as-cell-json.d.mts +1 -1
  19. package/dist/as-cell-json.mjs +1 -1
  20. package/dist/{as-cell-number-DGJCTXDf.cjs → as-cell-number-C4JMqvqa.cjs} +1 -1
  21. package/dist/{as-cell-number-CNDT6gfw.mjs → as-cell-number-D-mSaE_G.mjs} +1 -1
  22. package/dist/as-cell-number.cjs +1 -1
  23. package/dist/as-cell-number.d.mts +1 -1
  24. package/dist/as-cell-number.mjs +1 -1
  25. package/dist/{as-cell-union-DMnoa7RM.mjs → as-cell-union-C9Bbnkrg.mjs} +1 -1
  26. package/dist/{as-cell-union-LOGvhPeK.cjs → as-cell-union-DpCEHLzN.cjs} +1 -1
  27. package/dist/as-cell-union.cjs +1 -1
  28. package/dist/as-cell-union.d.mts +1 -1
  29. package/dist/as-cell-union.mjs +1 -1
  30. package/dist/as-column-menu.d.cts +1 -1
  31. package/dist/as-column-menu.d.mts +1 -1
  32. package/dist/{as-column-menu.vue-B6iuKmIj.d.cts → as-column-menu.vue-4zJmC_M6.d.mts} +2 -2
  33. package/dist/{as-column-menu.vue-wxb2f92k.d.mts → as-column-menu.vue-CS_8jHG3.d.cts} +2 -2
  34. package/dist/{as-config-dialog-BJkBzaku.cjs → as-config-dialog-CnIvMsK0.cjs} +10 -5
  35. package/dist/{as-config-dialog-D503Ek_m.mjs → as-config-dialog-ZKMnfirD.mjs} +10 -5
  36. package/dist/as-config-dialog.cjs +1 -1
  37. package/dist/as-config-dialog.d.mts +1 -1
  38. package/dist/as-config-dialog.mjs +1 -1
  39. package/dist/{as-confirm-dialog-CJfDnaiU.mjs → as-confirm-dialog-DMiGquH1.mjs} +1 -1
  40. package/dist/{as-confirm-dialog-C5xPbkox.cjs → as-confirm-dialog-cSEHVFBq.cjs} +1 -1
  41. package/dist/as-confirm-dialog.cjs +1 -1
  42. package/dist/as-confirm-dialog.d.mts +1 -1
  43. package/dist/as-confirm-dialog.mjs +1 -1
  44. package/dist/{as-filter-dialog-CxjO-Ge5.mjs → as-filter-dialog-DNFR30fV.mjs} +61 -38
  45. package/dist/{as-filter-dialog-Co0WfWOe.cjs → as-filter-dialog-KjvJdaMg.cjs} +60 -37
  46. package/dist/as-filter-dialog.cjs +1 -1
  47. package/dist/as-filter-dialog.d.mts +1 -1
  48. package/dist/as-filter-dialog.mjs +1 -1
  49. package/dist/{as-filter-field-FTrxFkTw.cjs → as-filter-field-BsucQwbm.cjs} +247 -35
  50. package/dist/{as-filter-field-ByPlGyWz.mjs → as-filter-field-DE6MJMx7.mjs} +227 -39
  51. package/dist/as-filter-field.cjs +1 -1
  52. package/dist/as-filter-field.d.mts +1 -1
  53. package/dist/as-filter-field.mjs +1 -1
  54. package/dist/as-filter-input-ChJ8JE6-.cjs +254 -0
  55. package/dist/as-filter-input-DmOW_jzK.mjs +249 -0
  56. package/dist/as-filter-input.cjs +1 -1
  57. package/dist/as-filter-input.d.cts +1 -1
  58. package/dist/as-filter-input.d.mts +1 -1
  59. package/dist/as-filter-input.mjs +1 -1
  60. package/dist/{as-filter-input.vue-CksJOtqw.d.cts → as-filter-input.vue-BLTzA2Iy.d.cts} +9 -0
  61. package/dist/{as-filter-input.vue-DMwr0ArL.d.mts → as-filter-input.vue-CmWQGQCv.d.mts} +9 -0
  62. package/dist/{as-filters-W3iMELuL.cjs → as-filters-CYC_SXaA.cjs} +4 -4
  63. package/dist/{as-filters-CJZJiOXb.mjs → as-filters-DErM2bFq.mjs} +4 -4
  64. package/dist/as-filters.cjs +1 -1
  65. package/dist/as-filters.d.mts +1 -1
  66. package/dist/as-filters.mjs +1 -1
  67. package/dist/{as-preset-dialog-CLOVEpWZ.mjs → as-preset-dialog-CY5dPfZa.mjs} +2 -2
  68. package/dist/{as-preset-dialog-Dvvx0jmU.cjs → as-preset-dialog-tM-jrQgs.cjs} +2 -2
  69. package/dist/as-preset-dialog.cjs +1 -1
  70. package/dist/as-preset-dialog.d.mts +1 -1
  71. package/dist/as-preset-dialog.mjs +1 -1
  72. package/dist/{as-preset-picker-DFLhbm59.cjs → as-preset-picker-CjSXtx83.cjs} +2 -2
  73. package/dist/{as-preset-picker-CwFObhME.mjs → as-preset-picker-DkZ7sinz.mjs} +2 -2
  74. package/dist/as-preset-picker.cjs +1 -1
  75. package/dist/as-preset-picker.d.mts +1 -1
  76. package/dist/as-preset-picker.mjs +1 -1
  77. package/dist/{as-residual-filter-BRsEs8oe.mjs → as-residual-filter-DHfbtTQj.mjs} +4 -5
  78. package/dist/{as-residual-filter-sZlsFPDS.cjs → as-residual-filter-XkXnMQNu.cjs} +4 -5
  79. package/dist/as-residual-filter.cjs +1 -1
  80. package/dist/as-residual-filter.d.mts +1 -1
  81. package/dist/as-residual-filter.mjs +1 -1
  82. package/dist/{as-row-actions-DyjIXePd.mjs → as-row-actions-BNQ7jrie.mjs} +2 -2
  83. package/dist/{as-row-actions-DFv2cSrP.cjs → as-row-actions-q_oMmUz1.cjs} +2 -2
  84. package/dist/as-row-actions.cjs +1 -1
  85. package/dist/as-row-actions.d.cts +1 -1
  86. package/dist/as-row-actions.d.mts +1 -1
  87. package/dist/as-row-actions.mjs +1 -1
  88. package/dist/{as-row-actions.vue-BHrZBXVU.d.cts → as-row-actions.vue-BB8ATWBY.d.mts} +1 -1
  89. package/dist/{as-row-actions.vue-D4MylwCW.d.mts → as-row-actions.vue-CnjcRD0P.d.cts} +1 -1
  90. package/dist/{as-select-cell-CoQJjhnq.cjs → as-select-cell-Dc3lArvR.cjs} +5 -5
  91. package/dist/{as-select-cell-Dl8fohIj.mjs → as-select-cell-DjcPorVb.mjs} +5 -5
  92. package/dist/{as-selection-banner-DBtLjulh.mjs → as-selection-banner-Ca9DWVdW.mjs} +1 -1
  93. package/dist/{as-selection-banner-BI5gKHqW.cjs → as-selection-banner-CxPXBztW.cjs} +1 -1
  94. package/dist/{as-table-B1FowaPF.cjs → as-table-BIAkCI4g.cjs} +4 -4
  95. package/dist/{as-table-Cpvfv9zA.mjs → as-table-Bcz-WOTS.mjs} +4 -4
  96. package/dist/{as-table-actions-BlbAps1h.mjs → as-table-actions-DPq5SrGa.mjs} +2 -2
  97. package/dist/{as-table-actions-B0xaicfv.cjs → as-table-actions-TaI-NeVv.cjs} +2 -2
  98. package/dist/as-table-actions.cjs +1 -1
  99. package/dist/as-table-actions.d.cts +1 -1
  100. package/dist/as-table-actions.d.mts +1 -1
  101. package/dist/as-table-actions.mjs +1 -1
  102. package/dist/{as-table-actions.vue-7ml3JiOO.d.mts → as-table-actions.vue-C2szPEXd.d.mts} +2 -2
  103. package/dist/{as-table-actions.vue-BKRqHprR.d.cts → as-table-actions.vue-CBD_tEpe.d.cts} +2 -2
  104. package/dist/{as-table-base-EzKaChOp.mjs → as-table-base-CsK79vYe.mjs} +2 -2
  105. package/dist/{as-table-base-LZ26YlWp.cjs → as-table-base-Dvey_Gie.cjs} +2 -2
  106. package/dist/{as-table-cell-value-DoH8Mieo.mjs → as-table-cell-value-D-S127gr.mjs} +13 -2
  107. package/dist/{as-table-cell-value-COyZnwUj.cjs → as-table-cell-value-VWlXc5dA.cjs} +12 -1
  108. package/dist/as-table-cell-value.cjs +1 -1
  109. package/dist/as-table-cell-value.d.mts +1 -1
  110. package/dist/as-table-cell-value.mjs +1 -1
  111. package/dist/{as-table-header-cell-gHhCdxJX.cjs → as-table-header-cell-DB7Cdskr.cjs} +1 -1
  112. package/dist/{as-table-header-cell-DrVzYaof.mjs → as-table-header-cell-ahzAeHXj.mjs} +1 -1
  113. package/dist/as-table-header-cell.cjs +1 -1
  114. package/dist/as-table-header-cell.d.cts +1 -1
  115. package/dist/as-table-header-cell.d.mts +1 -1
  116. package/dist/as-table-header-cell.mjs +1 -1
  117. package/dist/{as-table-header-cell.vue-BCk4NPYT.d.cts → as-table-header-cell.vue-D2s9YLSJ.d.cts} +1 -1
  118. package/dist/{as-table-header-cell.vue-BZU8s9CT.d.mts → as-table-header-cell.vue-DfDNma_Z.d.mts} +1 -1
  119. package/dist/{as-table-root-BYHXuNPI.mjs → as-table-root-BnkF5-rh.mjs} +49 -9
  120. package/dist/{as-table-root-K6fWKHtF.cjs → as-table-root-Nsk-9XaH.cjs} +48 -8
  121. package/dist/as-table-root.cjs +1 -1
  122. package/dist/as-table-root.d.cts +1 -1
  123. package/dist/as-table-root.d.mts +1 -1
  124. package/dist/as-table-root.mjs +1 -1
  125. package/dist/{as-table-root.vue-Bm2DxAqU.d.mts → as-table-root.vue-D56WcudY.d.mts} +313 -1638
  126. package/dist/{as-table-root.vue-CF03c4vu.d.cts → as-table-root.vue-DXXcBPu_.d.cts} +313 -1638
  127. package/dist/as-table.cjs +1 -1
  128. package/dist/as-table.d.cts +1 -1
  129. package/dist/as-table.d.mts +1 -1
  130. package/dist/as-table.mjs +1 -1
  131. package/dist/{as-window-table-CygDqZMU.mjs → as-window-table-DjplqWzr.mjs} +4 -4
  132. package/dist/{as-window-table-_flc8o64.cjs → as-window-table-ubm2u8_i.cjs} +4 -4
  133. package/dist/as-window-table.cjs +1 -1
  134. package/dist/as-window-table.d.cts +1 -1
  135. package/dist/as-window-table.d.mts +1 -1
  136. package/dist/as-window-table.mjs +1 -1
  137. package/dist/index.cjs +68 -90
  138. package/dist/index.d.cts +8 -8
  139. package/dist/index.d.mts +21 -21
  140. package/dist/index.mjs +69 -91
  141. package/dist/{intent-scope-BXPEN5kJ.d.cts → intent-scope-CGch9yhy.d.cts} +13 -0
  142. package/dist/{intent-scope-Ck7RZ0dK.d.mts → intent-scope-CvD4YOvf.d.mts} +13 -0
  143. package/dist/use-condition-format-5LcuInDy.mjs +34 -0
  144. package/dist/use-condition-format-DrgfX6xL.cjs +39 -0
  145. package/dist/{use-table-DP6Y0kbl.mjs → use-table-BYNBpLJt.mjs} +23 -2
  146. package/dist/{use-table-CydIJZbx.cjs → use-table-C9qI-TL6.cjs} +22 -1
  147. package/dist/{use-table-component-aqfGzECx.cjs → use-table-component-CsdvdGJT.cjs} +1 -1
  148. package/dist/{use-table-component-DNGUvhf7.mjs → use-table-component-Dy397695.mjs} +1 -1
  149. package/dist/{use-table-nav-bridge-BhOPIT2R.mjs → use-table-nav-bridge-CJBERyPB.mjs} +1 -1
  150. package/dist/{use-table-nav-bridge-B7A30yja.cjs → use-table-nav-bridge-Gm4ZfOjJ.cjs} +1 -1
  151. package/dist/{use-table-state-sDnqOi3b.cjs → use-table-state-BQchKxUr.cjs} +53 -6
  152. package/dist/{use-table-state-1OZfdhQi.mjs → use-table-state-CIoWhwTD.mjs} +54 -7
  153. package/package.json +11 -11
  154. package/dist/as-filter-input-BM23TNeh.mjs +0 -101
  155. package/dist/as-filter-input-DJu2k9gO.cjs +0 -106
  156. /package/dist/{as-cell-array.vue-Dj3nZop3.d.mts → as-cell-array.vue-D4vS7C_D.d.mts} +0 -0
  157. /package/dist/{as-cell-date.vue-BPuyH7q3.d.mts → as-cell-date.vue-Chs7WTZ9.d.mts} +0 -0
  158. /package/dist/{as-cell-json-popover-Dkdv5Y9E.mjs → as-cell-json-popover-CH5bAcLE.mjs} +0 -0
  159. /package/dist/{as-cell-json-popover-BM2QLgfk.cjs → as-cell-json-popover-vty5vMjW.cjs} +0 -0
  160. /package/dist/{as-cell-json.vue-D8J7YwVV.d.mts → as-cell-json.vue-C0_LDvQw.d.mts} +0 -0
  161. /package/dist/{as-cell-number.vue-sUoZvuat.d.mts → as-cell-number.vue-BBF0OuU8.d.mts} +0 -0
  162. /package/dist/{as-cell-union.vue-DZBejMxR.d.mts → as-cell-union.vue-CL-Lf-Rm.d.mts} +0 -0
  163. /package/dist/{as-config-dialog.vue-D2AVR1a5.d.mts → as-config-dialog.vue-BvFZZRuY.d.mts} +0 -0
  164. /package/dist/{as-confirm-dialog.vue-BxAaCuYf.d.mts → as-confirm-dialog.vue-Cz52-v6c.d.mts} +0 -0
  165. /package/dist/{as-filter-dialog.vue-WYXGtymZ.d.mts → as-filter-dialog.vue-likNLqzF.d.mts} +0 -0
  166. /package/dist/{as-filter-field.vue-DTpuDkHh.d.mts → as-filter-field.vue-BbXLhd6O.d.mts} +0 -0
  167. /package/dist/{as-filters.vue-dHbGmcbr.d.mts → as-filters.vue-Bu4wK0iD.d.mts} +0 -0
  168. /package/dist/{as-preset-dialog.vue-BrnvBWxJ.d.mts → as-preset-dialog.vue-BRjjfPty.d.mts} +0 -0
  169. /package/dist/{as-preset-picker.vue-OaAV2v9z.d.mts → as-preset-picker.vue-DAUZOlOD.d.mts} +0 -0
  170. /package/dist/{as-residual-filter.vue-Cev_8Wy7.d.mts → as-residual-filter.vue-DbeOOtR7.d.mts} +0 -0
  171. /package/dist/{as-table-cell-value.vue-kfNgVhzn.d.mts → as-table-cell-value.vue-BXIH_yfq.d.mts} +0 -0
  172. /package/dist/{error-message-CfKpn_5w.cjs → error-message-CoUcpWal.cjs} +0 -0
  173. /package/dist/{error-message-gNEXnnbb.mjs → error-message-rziSiSjs.mjs} +0 -0
  174. /package/dist/{use-cell-locale-MQXoONh5.mjs → use-cell-locale-BTJZ6UcP.mjs} +0 -0
  175. /package/dist/{use-cell-locale-BGBRQB7s.cjs → use-cell-locale-Dv514-Al.cjs} +0 -0
  176. /package/dist/{use-has-emit-listener-DrBbsLHQ.mjs → use-has-emit-listener-CsF2w9iT.mjs} +0 -0
  177. /package/dist/{use-has-emit-listener-BaGFZDyM.cjs → use-has-emit-listener-gD1aWp6N.cjs} +0 -0
@@ -1,12 +1,14 @@
1
- const require_use_table_state = require("./use-table-state-sDnqOi3b.cjs");
2
- const require_use_table = require("./use-table-CydIJZbx.cjs");
3
- const require_use_table_nav_bridge = require("./use-table-nav-bridge-B7A30yja.cjs");
4
- const require_use_table_component = require("./use-table-component-aqfGzECx.cjs");
5
- const require_as_config_dialog = require("./as-config-dialog-BJkBzaku.cjs");
1
+ const require_use_table_state = require("./use-table-state-BQchKxUr.cjs");
2
+ const require_use_table = require("./use-table-C9qI-TL6.cjs");
3
+ const require_use_table_nav_bridge = require("./use-table-nav-bridge-Gm4ZfOjJ.cjs");
4
+ const require_use_table_component = require("./use-table-component-CsdvdGJT.cjs");
5
+ const require_as_config_dialog = require("./as-config-dialog-CnIvMsK0.cjs");
6
6
  const require_use_seed_on_open = require("./use-seed-on-open-Dg9I89fU.cjs");
7
- const require_as_filter_input = require("./as-filter-input-DJu2k9gO.cjs");
8
- const require_as_window_table = require("./as-window-table-_flc8o64.cjs");
9
- const require_as_filters = require("./as-filters-W3iMELuL.cjs");
7
+ const require_use_condition_format = require("./use-condition-format-DrgfX6xL.cjs");
8
+ const require_as_filter_field = require("./as-filter-field-BsucQwbm.cjs");
9
+ const require_as_filter_input = require("./as-filter-input-ChJ8JE6-.cjs");
10
+ const require_as_window_table = require("./as-window-table-ubm2u8_i.cjs");
11
+ const require_as_filters = require("./as-filters-CYC_SXaA.cjs");
10
12
  let _atscript_ui = require("@atscript/ui");
11
13
  let vue = require("vue");
12
14
  let _atscript_ui_table = require("@atscript/ui-table");
@@ -39,11 +41,12 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
39
41
  const props = __props;
40
42
  const FilterInput = require_use_table_component.useTableComponent("filterInput", require_as_filter_input.as_filter_input_default);
41
43
  const model = (0, vue.useModel)(__props, "modelValue");
42
- const filterType = (0, vue.computed)(() => (0, _atscript_ui_table.columnFilterType)(props.column.type));
43
- const availableConditions = (0, vue.computed)(() => (0, _atscript_ui_table.columnFilterConditions)(props.column));
44
- const defCondition = (0, vue.computed)(() => (0, _atscript_ui_table.columnDefaultCondition)(props.column));
45
- const isDateType = (0, vue.computed)(() => filterType.value === "date");
46
- const shortcuts = (0, vue.computed)(() => isDateType.value ? (0, _atscript_ui_table.dateShortcuts)() : []);
44
+ const spec = (0, vue.computed)(() => (0, _atscript_ui_table.columnFilter)(props.column));
45
+ const filterType = (0, vue.computed)(() => spec.value.kind);
46
+ const availableConditions = (0, vue.computed)(() => spec.value.conditions);
47
+ const defCondition = (0, vue.computed)(() => spec.value.defaultCondition);
48
+ const allShortcuts = (0, _atscript_ui_table.temporalShortcuts)();
49
+ const shortcuts = (0, vue.computed)(() => (0, _atscript_ui_table.isTemporalKind)(filterType.value) ? allShortcuts : []);
47
50
  function updateCondition(index, update) {
48
51
  model.value = model.value.map((c, i) => i === index ? {
49
52
  ...c,
@@ -63,11 +66,11 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
63
66
  value: []
64
67
  }];
65
68
  }
66
- function applyShortcut(dates) {
67
- model.value = [{
68
- type: "bw",
69
- value: [dates[0], dates[1]]
70
- }];
69
+ function applyShortcut(sc) {
70
+ model.value = sc.conditions.map((c) => ({
71
+ type: c.type,
72
+ value: [...c.value]
73
+ }));
71
74
  }
72
75
  return (_ctx, _cache) => {
73
76
  return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [
@@ -87,7 +90,7 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
87
90
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("option", {
88
91
  key: ct,
89
92
  value: ct
90
- }, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui_table.conditionLabel)(ct)), 9, _hoisted_2$2);
93
+ }, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui_table.conditionLabel)(ct, filterType.value)), 9, _hoisted_2$2);
91
94
  }), 128))], 40, _hoisted_1$2),
92
95
  ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(FilterInput)), {
93
96
  column: __props.column,
@@ -118,12 +121,12 @@ var as_filter_conditions_default = /* @__PURE__ */ (0, vue.defineComponent)({
118
121
  class: "as-filter-add-condition",
119
122
  onClick: addCondition
120
123
  }, " + Add condition "),
121
- isDateType.value && shortcuts.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$2, [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("span", { class: "as-filter-shortcuts-label" }, "Quick:", -1)), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(shortcuts.value, (sc) => {
124
+ shortcuts.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$2, [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("span", { class: "as-filter-shortcuts-label" }, "Quick:", -1)), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(shortcuts.value, (sc) => {
122
125
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
123
- key: sc.label,
126
+ key: sc.id,
124
127
  type: "button",
125
128
  class: "as-filter-shortcut-btn",
126
- onClick: ($event) => applyShortcut(sc.dates)
129
+ onClick: ($event) => applyShortcut(sc)
127
130
  }, (0, vue.toDisplayString)(sc.label), 9, _hoisted_5$2);
128
131
  }), 128))])) : (0, vue.createCommentVNode)("v-if", true)
129
132
  ], 64);
@@ -163,7 +166,9 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
163
166
  setup(__props) {
164
167
  const props = __props;
165
168
  const model = (0, vue.useModel)(__props, "modelValue");
169
+ const outer = require_use_table_state.useTableContextOptional();
166
170
  const info = props.column.valueHelpInfo;
171
+ const distinct = props.column.distinct;
167
172
  const options = props.column.options;
168
173
  function modelToValues(conds) {
169
174
  const values = [];
@@ -187,22 +192,36 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
187
192
  provideContext: true,
188
193
  rowValueFn: (row) => row[info.targetField],
189
194
  selectionPersistence: "persist",
190
- selectedRows: selectionRef
195
+ selectedRows: selectionRef,
196
+ forceFilters: info.filter,
197
+ alwaysSelected: [info.targetField]
191
198
  });
192
- else if (options) {
199
+ else if (distinct) {
200
+ const fetchPage = require_as_filter_field.createDistinctPager(outer?.state, props.column);
201
+ const { state } = require_use_table_state.createStaticTableState({
202
+ rows: [],
203
+ columns: [require_as_filter_field.valueColumn(false)],
204
+ searchPaths: ["__label"],
205
+ limit: 100,
206
+ selection: {
207
+ rowValueFn: (row) => row.__value,
208
+ selectedRows: selectionRef
209
+ },
210
+ remote: ({ searchTerm }, page, size) => fetchPage(searchTerm.trim(), page, size)
211
+ });
212
+ innerState = state;
213
+ require_use_table_state.provideTableContext({
214
+ state,
215
+ client: {},
216
+ controls: {}
217
+ });
218
+ } else if (options) {
193
219
  const { state } = require_use_table_state.createStaticTableState({
194
220
  rows: options.map((o) => ({
195
221
  __value: o.key,
196
222
  __label: o.label
197
223
  })),
198
- columns: [{
199
- path: "__label",
200
- label: "Value",
201
- type: "text",
202
- sortable: true,
203
- filterable: false,
204
- order: 0
205
- }],
224
+ columns: [require_as_filter_field.valueColumn(true)],
206
225
  searchPaths: ["__label"],
207
226
  selection: {
208
227
  rowValueFn: (row) => row.__value,
@@ -219,7 +238,9 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
219
238
  if (info) (0, vue.onMounted)(() => {
220
239
  (0, _atscript_ui.resolveValueHelp)(info.url).then((r) => {
221
240
  resolved.value = r;
222
- }).catch(() => {});
241
+ }).catch((err) => {
242
+ require_as_filter_field.declineIfRejected(outer?.state, info, err);
243
+ });
223
244
  });
224
245
  if (info && innerState) {
225
246
  const fkState = innerState;
@@ -229,7 +250,8 @@ var as_filter_value_help_default = /* @__PURE__ */ (0, vue.defineComponent)({
229
250
  initialized = true;
230
251
  stop();
231
252
  const dictPaths = (0, _atscript_ui.valueHelpDictPaths)(r);
232
- const dictCols = fkState.allColumns.value.filter((c) => dictPaths.has(c.path));
253
+ const pinned = new Set(info.pinned);
254
+ const dictCols = fkState.allColumns.value.filter((c) => dictPaths.has(c.path) && !pinned.has(c.path));
233
255
  fkState.columnNames.value = dictCols.map((c) => c.path);
234
256
  if (fkState.filterFields.value.length === 0) fkState.filterFields.value = dictCols.filter(_atscript_ui_table.isColumnFilterable).map((c) => c.path);
235
257
  fkState.query();
@@ -332,6 +354,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
332
354
  __name: "as-filter-dialog",
333
355
  setup(__props) {
334
356
  const { state } = require_use_table_state.useTableContext();
357
+ const { formatCondition } = require_use_condition_format.useConditionFormat(state);
335
358
  const FilterValueHelp = require_use_table_component.useTableComponent("filterValueHelp", as_filter_value_help_default);
336
359
  const isOpen = (0, vue.computed)({
337
360
  get: () => state.filterDialogColumn.value !== null,
@@ -340,7 +363,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
340
363
  }
341
364
  });
342
365
  const column = (0, vue.computed)(() => state.filterDialogColumn.value);
343
- const hasValueHelp = (0, vue.computed)(() => !!column.value && column.value.filterable && (!!column.value.valueHelpInfo || column.value.options != null && column.value.options.length > 0));
366
+ const hasValueHelp = (0, vue.computed)(() => !!column.value && column.value.filterable && require_as_filter_field.hasValuePicker(state, column.value));
344
367
  const defCondition = (0, vue.computed)(() => column.value ? (0, _atscript_ui_table.columnDefaultCondition)(column.value) : "eq");
345
368
  const valueHelpConditions = (0, vue.ref)([]);
346
369
  const freeConditions = (0, vue.ref)([]);
@@ -366,7 +389,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
366
389
  valueHelpConditions.value.forEach((c, i) => {
367
390
  if ((0, _atscript_ui_table.isFilled)(c)) result.push({
368
391
  key: `vh:${i}:${String(c.value[0] ?? "")}`,
369
- label: (0, _atscript_ui_table.formatFilterCondition)(c),
392
+ label: formatCondition(column.value, c),
370
393
  bucket: "value-help",
371
394
  index: i
372
395
  });
@@ -374,7 +397,7 @@ var as_filter_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
374
397
  freeConditions.value.forEach((c, i) => {
375
398
  if ((0, _atscript_ui_table.isFilled)(c)) result.push({
376
399
  key: `fc:${i}:${c.type}:${String(c.value[0] ?? "")}`,
377
- label: (0, _atscript_ui_table.formatFilterCondition)(c),
400
+ label: formatCondition(column.value, c),
378
401
  bucket: "free",
379
402
  index: i
380
403
  });
@@ -1,2 +1,2 @@
1
- const require_as_filter_dialog = require("./as-filter-dialog-Co0WfWOe.cjs");
1
+ const require_as_filter_dialog = require("./as-filter-dialog-KjvJdaMg.cjs");
2
2
  module.exports = require_as_filter_dialog.as_filter_dialog_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-filter-dialog.vue-WYXGtymZ.mjs";
1
+ import { t as _default } from "./as-filter-dialog.vue-likNLqzF.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_filter_dialog_default } from "./as-filter-dialog-CxjO-Ge5.mjs";
1
+ import { t as as_filter_dialog_default } from "./as-filter-dialog-DNFR30fV.mjs";
2
2
  export { as_filter_dialog_default as default };
@@ -1,11 +1,171 @@
1
- const require_use_table_state = require("./use-table-state-sDnqOi3b.cjs");
2
- const require_use_table = require("./use-table-CydIJZbx.cjs");
3
- const require_as_table_base = require("./as-table-base-LZ26YlWp.cjs");
1
+ const require_use_table_state = require("./use-table-state-BQchKxUr.cjs");
2
+ const require_use_table = require("./use-table-C9qI-TL6.cjs");
3
+ const require_use_condition_format = require("./use-condition-format-DrgfX6xL.cjs");
4
+ const require_as_table_base = require("./as-table-base-Dvey_Gie.cjs");
4
5
  let _atscript_ui = require("@atscript/ui");
5
6
  let vue = require("vue");
6
7
  let _atscript_ui_table = require("@atscript/ui-table");
7
8
  let _vueuse_core = require("@vueuse/core");
8
9
  let reka_ui = require("reka-ui");
10
+ //#region src/composables/use-value-pickers.ts
11
+ /** The single "Value" column of an enum or distinct-values picker table (rows carry `__value` / `__label`). */
12
+ function valueColumn(sortable) {
13
+ return {
14
+ path: "__label",
15
+ label: "Value",
16
+ type: "text",
17
+ sortable,
18
+ filterable: false,
19
+ nullable: false,
20
+ order: 0
21
+ };
22
+ }
23
+ /** How long an unsearched first page is reused (the inline field and the dialog share it). */
24
+ const PAGE1_TTL_MS = 3e4;
25
+ const createStore = () => ({
26
+ declined: (0, vue.shallowReactive)(/* @__PURE__ */ new Set()),
27
+ page1: /* @__PURE__ */ new Map()
28
+ });
29
+ const stores = /* @__PURE__ */ new WeakMap();
30
+ function storeOf(host) {
31
+ const def = host?.tableDef.value;
32
+ if (!def) return createStore();
33
+ let store = stores.get(def);
34
+ if (!store) {
35
+ store = createStore();
36
+ stores.set(def, store);
37
+ }
38
+ return store;
39
+ }
40
+ const keyOf = (info) => `${info.url}\0${info.targetField}`;
41
+ /**
42
+ * Whether `column` offers a value picker: literal options, the distinct values of
43
+ * its own table, or a dictionary the server has not declined for this table —
44
+ * and only on a column the server filters by value with the operators a picker
45
+ * emits (`$eq` / `$in`): an existence-only (JSON-stored) column takes the
46
+ * empty / not-empty input instead.
47
+ */
48
+ function hasValuePicker(host, column) {
49
+ if (!column.filterable) return false;
50
+ const ops = column.filterOps;
51
+ if (ops && !(ops.includes("$eq") || ops.includes("$in"))) return false;
52
+ if (column.options?.length || column.distinct) return true;
53
+ const info = column.valueHelpInfo;
54
+ return !!info && !storeOf(host).declined.has(keyOf(info));
55
+ }
56
+ /**
57
+ * The dictionary answered 4xx (not readable for this caller): this table stops
58
+ * offering that picker and the column takes free text. Anything else is no verdict.
59
+ */
60
+ function declineIfRejected(host, info, err) {
61
+ if ((0, _atscript_ui.isPickerDeclined)(err)) storeOf(host).declined.add(keyOf(info));
62
+ }
63
+ /**
64
+ * Pager over the distinct values of `column.distinct`: `fetch(searchTerm, page, size)`
65
+ * asks the table's controller via `$groupBy`. Values are ordered (and so paged) only
66
+ * on a sortable column; otherwise the first `size` values are the whole list — search
67
+ * narrows it. A 4xx rejects: the picker shows the error. An unsearched first page is
68
+ * reused for a short while, so reopening a picker (or its dialog) does not re-ask.
69
+ */
70
+ function createDistinctPager(host, column) {
71
+ const { url, field } = column.distinct;
72
+ const numeric = column.valueKind !== void 0 && _atscript_ui.NUMERIC_VALUE_KINDS.has(column.valueKind);
73
+ const paged = column.sortable;
74
+ return async function fetch(searchTerm, page, size) {
75
+ const text = searchTerm.trim();
76
+ const skip = paged ? (page - 1) * size : 0;
77
+ const empty = !paged && page > 1;
78
+ const scope = host?.forceFilters?.value;
79
+ const load = () => (0, _atscript_ui.fetchDistinctValues)((0, _atscript_ui.getMetaEntry)(url).client, field, {
80
+ text,
81
+ limit: size,
82
+ skip,
83
+ sortable: paged,
84
+ numeric,
85
+ filter: scope
86
+ });
87
+ let result;
88
+ if (empty) result = {
89
+ items: [],
90
+ hasMore: false
91
+ };
92
+ else if (text || page > 1) result = await load();
93
+ else {
94
+ const store = storeOf(host);
95
+ const key = `${url}\0${field}\0${size}\0${scope ? (0, _atscript_ui_table.stableValueKey)(scope) : ""}`;
96
+ let hit = store.page1.get(key);
97
+ if (!hit || Date.now() - hit.at > PAGE1_TTL_MS) {
98
+ const pending = load();
99
+ hit = {
100
+ at: Date.now(),
101
+ result: pending
102
+ };
103
+ store.page1.set(key, hit);
104
+ pending.catch(() => store.page1.delete(key));
105
+ }
106
+ result = await hit.result;
107
+ }
108
+ const hasMore = paged && result.hasMore;
109
+ const count = skip + result.items.length + (hasMore ? 1 : 0);
110
+ return {
111
+ data: result.items.map((v) => ({
112
+ __value: v,
113
+ __label: String(v)
114
+ })),
115
+ count,
116
+ page,
117
+ itemsPerPage: size,
118
+ pages: Math.max(1, Math.ceil(count / size))
119
+ };
120
+ };
121
+ }
122
+ /**
123
+ * Reactive state of an inline distinct-values dropdown over `pager`: the first
124
+ * `shown` values of the first `size`, and how many exist (`count`, one past `size`
125
+ * when more follow — the dialog pages the rest). A superseded search is dropped.
126
+ */
127
+ function useDistinctPicker(pager, size, shown) {
128
+ const rows = (0, vue.shallowRef)([]);
129
+ const count = (0, vue.ref)(0);
130
+ /** More values exist past the first `size` (`count` is then one past `size`). */
131
+ const more = (0, vue.ref)(false);
132
+ const querying = (0, vue.ref)(false);
133
+ const error = (0, vue.shallowRef)(null);
134
+ /** The first page arrived once — reopening the dropdown does not ask again. */
135
+ const loaded = (0, vue.ref)(false);
136
+ let seq = 0;
137
+ async function load(text) {
138
+ const mine = ++seq;
139
+ querying.value = true;
140
+ try {
141
+ const res = await pager(text, 1, size);
142
+ if (mine !== seq) return;
143
+ rows.value = res.data.slice(0, shown);
144
+ count.value = res.count;
145
+ more.value = res.count > size;
146
+ error.value = null;
147
+ loaded.value = true;
148
+ } catch (err) {
149
+ if (mine !== seq) return;
150
+ rows.value = [];
151
+ count.value = 0;
152
+ more.value = false;
153
+ error.value = err instanceof Error ? err : new Error(String(err));
154
+ } finally {
155
+ if (mine === seq) querying.value = false;
156
+ }
157
+ }
158
+ return {
159
+ rows,
160
+ count,
161
+ more,
162
+ querying,
163
+ error,
164
+ loaded,
165
+ load
166
+ };
167
+ }
168
+ //#endregion
9
169
  //#region src/composables/use-drag-scroll.ts
10
170
  /**
11
171
  * Pointer-drag horizontal scroll for a container. Listens for pointerdown on
@@ -115,8 +275,11 @@ const _hoisted_15 = ["onClick"];
115
275
  const _hoisted_16 = [
116
276
  "id",
117
277
  "value",
278
+ "placeholder",
118
279
  "onKeydown"
119
280
  ];
281
+ const DISTINCT_WINDOW = 100;
282
+ const DISTINCT_SHOWN = 10;
120
283
  //#endregion
121
284
  //#region src/components/defaults/as-filter-field.vue
122
285
  var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -128,28 +291,34 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
128
291
  setup(__props) {
129
292
  const props = __props;
130
293
  const { state } = require_use_table_state.useTableContext();
294
+ const { formatCondition } = require_use_condition_format.useConditionFormat(state);
295
+ const isTemporal = (0, vue.computed)(() => (0, _atscript_ui_table.isTemporalKind)((0, _atscript_ui_table.columnFilterKind)(props.column)));
131
296
  const chipsScrollEl = (0, vue.ref)(null);
132
297
  useDragScroll(chipsScrollEl);
133
298
  const info = props.column.valueHelpInfo;
134
- const hasValueHelp = !!info;
299
+ const distinct = props.column.distinct;
135
300
  const hasOptions = !!(props.column.options && props.column.options.length > 0);
136
- const hasDropdown = hasValueHelp || hasOptions;
301
+ const hasDropdown = (0, vue.computed)(() => hasValuePicker(state, props.column));
137
302
  let vhClient;
138
303
  let innerState;
139
304
  const resolved = (0, vue.shallowRef)(null);
140
- if (hasValueHelp && info) {
305
+ if (info) {
141
306
  vhClient = new _atscript_ui.ValueHelpClient((0, _atscript_ui.getMetaEntry)(info.url).client);
142
307
  innerState = require_use_table.useTable(info.url, {
143
308
  select: "none",
144
309
  queryOnMount: false,
145
310
  limit: 10,
146
- provideContext: false
311
+ provideContext: false,
312
+ forceFilters: info.filter,
313
+ alwaysSelected: [info.targetField]
147
314
  });
148
315
  }
316
+ const distinctPicker = distinct ? useDistinctPicker(createDistinctPager(state, props.column), DISTINCT_WINDOW, DISTINCT_SHOWN) : void 0;
149
317
  const dictColumns = (0, vue.computed)(() => {
150
318
  if (!resolved.value || !innerState) return [];
151
319
  const paths = (0, _atscript_ui.valueHelpDictPaths)(resolved.value);
152
- return innerState.allColumns.value.filter((c) => paths.has(c.path));
320
+ const pinned = new Set(info?.pinned);
321
+ return innerState.allColumns.value.filter((c) => paths.has(c.path) && !pinned.has(c.path));
153
322
  });
154
323
  async function ensureResolved() {
155
324
  if (resolved.value) return resolved.value;
@@ -157,7 +326,8 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
157
326
  try {
158
327
  resolved.value = await (0, _atscript_ui.resolveValueHelp)(info.url);
159
328
  return resolved.value;
160
- } catch {
329
+ } catch (err) {
330
+ declineIfRejected(state, info, err);
161
331
  return null;
162
332
  }
163
333
  }
@@ -166,33 +336,28 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
166
336
  }
167
337
  const enumRows = hasOptions ? (0, vue.computed)(() => (props.column.options ?? []).map((opt) => ({
168
338
  __key: opt.key,
169
- __label: opt.label
339
+ __label: opt.label,
340
+ __value: (0, _atscript_ui.optionValue)(opt)
170
341
  }))) : void 0;
171
- const enumColumns = hasOptions ? [{
172
- path: "__label",
173
- label: "Value",
174
- type: "text",
175
- sortable: false,
176
- filterable: false,
177
- order: 0
178
- }] : void 0;
342
+ const enumColumns = hasOptions || distinct ? [valueColumn(false)] : void 0;
179
343
  const dropdownRows = (0, vue.computed)(() => {
180
344
  if (innerState) return innerState.results.value;
345
+ if (distinctPicker) return distinctPicker.rows.value;
181
346
  if (enumRows) return enumRows.value;
182
347
  return [];
183
348
  });
184
349
  const dropdownColumns = (0, vue.computed)(() => {
185
- if (hasValueHelp) return dictColumns.value;
350
+ if (info) return dictColumns.value;
186
351
  if (enumColumns) return enumColumns;
187
352
  return [];
188
353
  });
189
354
  const dropdownQuerying = (0, vue.computed)(() => {
190
355
  if (innerState) return innerState.querying.value;
191
- return false;
356
+ return distinctPicker?.querying.value ?? false;
192
357
  });
193
358
  const dropdownQueryError = (0, vue.computed)(() => {
194
359
  if (innerState) return innerState.queryError.value;
195
- return null;
360
+ return distinctPicker?.error.value ?? null;
196
361
  });
197
362
  const dropdownLoadingMetadata = (0, vue.computed)(() => {
198
363
  if (innerState) return innerState.loadingMetadata.value;
@@ -200,17 +365,21 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
200
365
  });
201
366
  const seeAllCount = (0, vue.computed)(() => {
202
367
  if (innerState) return innerState.totalCount.value;
368
+ if (distinctPicker) return distinctPicker.count.value;
203
369
  if (enumRows) return enumRows.value.length;
204
370
  return 0;
205
371
  });
372
+ /** "100+" when a distinct picker has more values than its first page (its count is one past it). */
373
+ const seeAllLabel = (0, vue.computed)(() => !innerState && distinctPicker?.more.value ? `${distinctPicker.count.value - 1}+` : String(seeAllCount.value));
206
374
  function extractEqValues(conditions) {
207
375
  if (!conditions) return [];
208
376
  const values = [];
209
377
  for (const c of conditions) if ((0, _atscript_ui_table.isSimpleEq)(c)) values.push(c.value[0]);
210
378
  return values;
211
379
  }
212
- const selectedValues = (0, vue.ref)(hasDropdown ? extractEqValues(state.filters.value[props.column.path]) : []);
213
- if (hasDropdown) {
380
+ const dropdownCapable = !!info || hasOptions || !!distinct;
381
+ const selectedValues = (0, vue.ref)(dropdownCapable ? extractEqValues(state.filters.value[props.column.path]) : []);
382
+ if (dropdownCapable) {
214
383
  (0, vue.watch)(selectedValues, (values) => {
215
384
  if ((0, _atscript_ui_table.arraysEqual)(values, extractEqValues(state.filters.value[props.column.path]))) return;
216
385
  const nonEq = (state.filters.value[props.column.path] ?? []).filter((c) => c.type !== "eq");
@@ -229,7 +398,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
229
398
  const chips = (0, vue.computed)(() => {
230
399
  return (state.filters.value[props.column.path] ?? []).filter(_atscript_ui_table.isFilled).map((cond, i) => ({
231
400
  key: `${cond.type}:${i}:${String(cond.value[0] ?? "")}`,
232
- label: (0, _atscript_ui_table.formatFilterCondition)(cond),
401
+ label: formatCondition(props.column, cond),
233
402
  condition: cond
234
403
  }));
235
404
  });
@@ -243,8 +412,8 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
243
412
  if (len > prev) scrollChipsToEnd();
244
413
  });
245
414
  function rowValueFn(row) {
246
- if (hasValueHelp && info) return row[info.targetField];
247
- if (hasOptions) return row.__key;
415
+ if (info) return row[info.targetField];
416
+ if (hasOptions || distinct) return row.__value;
248
417
  }
249
418
  const inputId = (0, vue.useId)();
250
419
  const searchTerm = (0, vue.ref)("");
@@ -260,17 +429,27 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
260
429
  }
261
430
  innerState.query();
262
431
  }, { once: true });
263
- const debouncedSearch = hasValueHelp ? (0, _atscript_ui_table.debounce)(() => {
432
+ const serverSearch = !!info || !!distinct;
433
+ const debouncedSearch = serverSearch ? (0, _atscript_ui_table.debounce)(() => {
264
434
  doSearch(searchTerm.value);
265
435
  }, 500) : void 0;
436
+ if (distinctPicker) {
437
+ (0, vue.watch)(() => (0, _atscript_ui_table.stableValueKey)(state.forceFilters.value ?? null), () => {
438
+ distinctPicker.loaded.value = false;
439
+ });
440
+ (0, vue.watch)(dropdownOpen, (open) => {
441
+ if (open && !distinctPicker.loaded.value && !distinctPicker.querying.value) distinctPicker.load("");
442
+ });
443
+ }
266
444
  (0, vue.onBeforeUnmount)(() => {
267
445
  debouncedSearch?.cancel();
268
446
  });
269
447
  function onSearchInput(event) {
270
448
  searchTerm.value = event.target.value;
271
- if (hasValueHelp) debouncedSearch();
449
+ if (serverSearch) debouncedSearch();
272
450
  }
273
451
  async function doSearch(text) {
452
+ if (distinctPicker) return distinctPicker.load(text);
274
453
  if (!vhClient || !innerState) return;
275
454
  const r = await ensureResolved();
276
455
  if (!r) return;
@@ -279,7 +458,9 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
279
458
  const result = await vhClient.search(r, {
280
459
  text: text || void 0,
281
460
  mode: "filter",
282
- limit: 10
461
+ limit: 10,
462
+ filter: info?.filter,
463
+ valueField: info?.targetField
283
464
  });
284
465
  innerState.results.value = result.items;
285
466
  innerState.queryError.value = null;
@@ -302,7 +483,9 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
302
483
  });
303
484
  }
304
485
  const noEnumMatches = (0, vue.computed)(() => {
305
- if (!dropdownOpen.value || !enumRows) return false;
486
+ if (!dropdownOpen.value) return false;
487
+ if (distinctPicker) return !distinctPicker.querying.value && !distinctPicker.error.value && distinctPicker.rows.value.length === 0;
488
+ if (!enumRows) return false;
306
489
  return filterFunction(enumRows.value).length === 0;
307
490
  });
308
491
  function removeChip(chip) {
@@ -334,7 +517,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
334
517
  scrollChipsToEnd();
335
518
  }
336
519
  function onEnter() {
337
- if (hasDropdown || !searchTerm.value.trim()) return;
520
+ if (hasDropdown.value || !searchTerm.value.trim()) return;
338
521
  const parsed = (0, _atscript_ui_table.parseColumnFilterInput)(searchTerm.value, props.column);
339
522
  if (!parsed) return;
340
523
  const filled = (state.filters.value[props.column.path] ?? []).filter(_atscript_ui_table.isFilled);
@@ -356,7 +539,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
356
539
  dropdownLoadingMetadata.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4, [..._cache[5] || (_cache[5] = [(0, vue.createElementVNode)("span", {
357
540
  class: "as-filter-field-loading-icon",
358
541
  "aria-hidden": "true"
359
- }, null, -1)])])) : (0, vue.unref)(hasDropdown) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxRoot), {
542
+ }, null, -1)])])) : hasDropdown.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxRoot), {
360
543
  key: 1,
361
544
  modelValue: selectedValues.value,
362
545
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectedValues.value = $event),
@@ -364,7 +547,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
364
547
  "onUpdate:open": _cache[2] || (_cache[2] = ($event) => dropdownOpen.value = $event),
365
548
  multiple: true,
366
549
  "reset-search-term-on-blur": false,
367
- "ignore-filter": hasValueHelp,
550
+ "ignore-filter": (0, vue.unref)(serverSearch),
368
551
  "as-child": ""
369
552
  }, {
370
553
  default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxAnchor), { "as-child": "" }, {
@@ -452,11 +635,15 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
452
635
  key: 1,
453
636
  type: "button",
454
637
  onClick: openFilterDialog
455
- }, [(0, vue.createTextVNode)(" See All (" + (0, vue.toDisplayString)(seeAllCount.value) + ") ", 1), _cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-kbd" }, "F4", -1))])) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)]),
638
+ }, [(0, vue.createTextVNode)(" See All (" + (0, vue.toDisplayString)(seeAllLabel.value) + ") ", 1), _cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-kbd" }, "F4", -1))])) : (0, vue.createCommentVNode)("v-if", true)])) : (0, vue.createCommentVNode)("v-if", true)]),
456
639
  _: 1
457
640
  })]),
458
641
  _: 1
459
- }, 8, ["modelValue", "open"])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createCommentVNode)(" Plain input (no dropdown) "), (0, vue.createElementVNode)("div", _hoisted_14, [(0, vue.createElementVNode)("div", {
642
+ }, 8, [
643
+ "modelValue",
644
+ "open",
645
+ "ignore-filter"
646
+ ])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createCommentVNode)(" Plain input (no dropdown) "), (0, vue.createElementVNode)("div", _hoisted_14, [(0, vue.createElementVNode)("div", {
460
647
  ref_key: "chipsScrollEl",
461
648
  ref: chipsScrollEl,
462
649
  class: "as-filter-field-chips"
@@ -474,6 +661,7 @@ var as_filter_field_default = /* @__PURE__ */ (0, vue.defineComponent)({
474
661
  id: (0, vue.unref)(inputId),
475
662
  class: "as-filter-field-search",
476
663
  value: searchTerm.value,
664
+ placeholder: isTemporal.value ? "YYYY-MM-DD" : void 0,
477
665
  onInput: _cache[3] || (_cache[3] = ($event) => searchTerm.value = $event.target.value),
478
666
  onKeydown: [
479
667
  (0, vue.withKeys)(onBackspace, ["backspace"]),
@@ -505,3 +693,27 @@ Object.defineProperty(exports, "as_filter_field_default", {
505
693
  return as_filter_field_default;
506
694
  }
507
695
  });
696
+ Object.defineProperty(exports, "createDistinctPager", {
697
+ enumerable: true,
698
+ get: function() {
699
+ return createDistinctPager;
700
+ }
701
+ });
702
+ Object.defineProperty(exports, "declineIfRejected", {
703
+ enumerable: true,
704
+ get: function() {
705
+ return declineIfRejected;
706
+ }
707
+ });
708
+ Object.defineProperty(exports, "hasValuePicker", {
709
+ enumerable: true,
710
+ get: function() {
711
+ return hasValuePicker;
712
+ }
713
+ });
714
+ Object.defineProperty(exports, "valueColumn", {
715
+ enumerable: true,
716
+ get: function() {
717
+ return valueColumn;
718
+ }
719
+ });