@atscript/vue-table 0.1.137 → 0.1.139

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 (149) 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-CVlExEpl.mjs → as-action-menu-content-D7NIwc9X.mjs} +1 -1
  4. package/dist/{as-action-menu-content-D8f60mY-.cjs → as-action-menu-content-DXuyDZ_X.cjs} +1 -1
  5. package/dist/{as-cell-array-BWHkJX3I.mjs → as-cell-array-Bgc4GYZf.mjs} +1 -1
  6. package/dist/{as-cell-array-D-8Pqlgo.cjs → as-cell-array-CCZ0Ajj9.cjs} +1 -1
  7. package/dist/as-cell-array.cjs +1 -1
  8. package/dist/as-cell-array.mjs +1 -1
  9. package/dist/{as-cell-date-mGlnDeLP.mjs → as-cell-date-B9mu0OOD.mjs} +1 -1
  10. package/dist/{as-cell-date-DviMJEqs.cjs → as-cell-date-RU5JPJhI.cjs} +1 -1
  11. package/dist/as-cell-date.cjs +1 -1
  12. package/dist/as-cell-date.mjs +1 -1
  13. package/dist/{as-cell-json-2I081xnO.mjs → as-cell-json-ByEGYRST.mjs} +1 -1
  14. package/dist/{as-cell-json-CaVB6e7V.cjs → as-cell-json-w5YJxNuF.cjs} +1 -1
  15. package/dist/as-cell-json.cjs +1 -1
  16. package/dist/as-cell-json.mjs +1 -1
  17. package/dist/{as-cell-number-CP2AZI9g.mjs → as-cell-number-CNDT6gfw.mjs} +1 -1
  18. package/dist/{as-cell-number-BnYbxOiG.cjs → as-cell-number-DGJCTXDf.cjs} +1 -1
  19. package/dist/as-cell-number.cjs +1 -1
  20. package/dist/as-cell-number.mjs +1 -1
  21. package/dist/{as-cell-union-NHpDCXty.mjs → as-cell-union-DMnoa7RM.mjs} +2 -2
  22. package/dist/{as-cell-union-BjMP91PS.cjs → as-cell-union-LOGvhPeK.cjs} +2 -2
  23. package/dist/as-cell-union.cjs +1 -1
  24. package/dist/as-cell-union.mjs +1 -1
  25. package/dist/{as-column-menu-BMTS3DO2.mjs → as-column-menu-CBtUfYEE.mjs} +2 -2
  26. package/dist/{as-column-menu-D_8NxujZ.cjs → as-column-menu-ChB7hzmr.cjs} +1 -1
  27. package/dist/as-column-menu.cjs +1 -1
  28. package/dist/as-column-menu.d.cts +1 -1
  29. package/dist/as-column-menu.d.mts +1 -1
  30. package/dist/as-column-menu.mjs +1 -1
  31. package/dist/{as-column-menu.vue-olu6BNEU.d.cts → as-column-menu.vue-Cul3eIz_.d.cts} +1 -1
  32. package/dist/{as-column-menu.vue-DIuEvru6.d.mts → as-column-menu.vue-Dw2m8ZqD.d.mts} +1 -1
  33. package/dist/{as-config-dialog-DHdpmRo9.mjs → as-config-dialog-DrcYlrOh.mjs} +5 -5
  34. package/dist/{as-config-dialog-BrVhIV_e.cjs → as-config-dialog-j_-oUmN7.cjs} +4 -4
  35. package/dist/as-config-dialog.cjs +1 -1
  36. package/dist/as-config-dialog.mjs +1 -1
  37. package/dist/{as-confirm-dialog-iytk-urB.cjs → as-confirm-dialog-CStjIWN0.cjs} +1 -1
  38. package/dist/{as-confirm-dialog-BG5vlbvV.mjs → as-confirm-dialog-Pnt60ALy.mjs} +1 -1
  39. package/dist/as-confirm-dialog.cjs +1 -1
  40. package/dist/as-confirm-dialog.mjs +1 -1
  41. package/dist/{as-filter-dialog-DoynFox2.cjs → as-filter-dialog-B6_NvvlM.cjs} +14 -14
  42. package/dist/{as-filter-dialog-DAvtsH3d.mjs → as-filter-dialog-CUzahpd_.mjs} +15 -15
  43. package/dist/as-filter-dialog.cjs +1 -1
  44. package/dist/as-filter-dialog.mjs +1 -1
  45. package/dist/{as-filter-field-DB5WFT4l.mjs → as-filter-field-3DJh_ICs.mjs} +5 -6
  46. package/dist/{as-filter-field-CBMDjApB.cjs → as-filter-field-DCUMuu0M.cjs} +4 -5
  47. package/dist/as-filter-field.cjs +1 -1
  48. package/dist/as-filter-field.mjs +1 -1
  49. package/dist/as-filter-input.cjs +1 -1
  50. package/dist/as-filter-input.mjs +1 -1
  51. package/dist/{as-filters-CiPv-dKs.cjs → as-filters-CHLPYHNP.cjs} +3 -3
  52. package/dist/{as-filters-DfBH5YH9.mjs → as-filters-D0DWDyiv.mjs} +3 -3
  53. package/dist/as-filters.cjs +1 -1
  54. package/dist/as-filters.mjs +1 -1
  55. package/dist/{as-preset-dialog-C0f_6VxJ.mjs → as-preset-dialog-H98DeOMM.mjs} +3 -3
  56. package/dist/{as-preset-dialog-D8o2ChtM.cjs → as-preset-dialog-RLW0gZDj.cjs} +3 -3
  57. package/dist/as-preset-dialog.cjs +1 -1
  58. package/dist/as-preset-dialog.mjs +1 -1
  59. package/dist/{as-preset-picker-CDItDinB.mjs → as-preset-picker-Cw7LB7o1.mjs} +2 -2
  60. package/dist/{as-preset-picker-DonMQ8Ia.cjs → as-preset-picker-yWXEhWEq.cjs} +2 -2
  61. package/dist/as-preset-picker.cjs +1 -1
  62. package/dist/as-preset-picker.mjs +1 -1
  63. package/dist/{as-row-actions-B8YANdb4.mjs → as-row-actions-BvJWHf3j.mjs} +2 -2
  64. package/dist/{as-row-actions-CAiCfw8d.cjs → as-row-actions-D_TqnP3S.cjs} +2 -2
  65. package/dist/as-row-actions.cjs +1 -1
  66. package/dist/as-row-actions.d.cts +1 -1
  67. package/dist/as-row-actions.d.mts +1 -1
  68. package/dist/as-row-actions.mjs +1 -1
  69. package/dist/{as-row-actions.vue-DZrASzp7.d.mts → as-row-actions.vue-DxXodLGq.d.mts} +1 -1
  70. package/dist/{as-row-actions.vue-Cac2kfwO.d.cts → as-row-actions.vue-WRrzvdbJ.d.cts} +1 -1
  71. package/dist/{as-table-BNfZcSra.cjs → as-table-CVD1zLva.cjs} +8 -34
  72. package/dist/{as-table-DtfWLLlb.mjs → as-table-D5mMZKKg.mjs} +8 -34
  73. package/dist/{as-table-actions-z5xUWtvK.mjs → as-table-actions-C6moFlxt.mjs} +2 -2
  74. package/dist/{as-table-actions-8yf2QIER.cjs → as-table-actions-D91sNgel.cjs} +2 -2
  75. package/dist/as-table-actions.cjs +1 -1
  76. package/dist/as-table-actions.d.cts +1 -1
  77. package/dist/as-table-actions.d.mts +1 -1
  78. package/dist/as-table-actions.mjs +1 -1
  79. package/dist/{as-table-actions.vue-66cjnFZI.d.mts → as-table-actions.vue-CPVhj2ZC.d.mts} +2 -2
  80. package/dist/{as-table-actions.vue-B7ttOxKU.d.cts → as-table-actions.vue-DB3LW-eI.d.cts} +2 -2
  81. package/dist/{as-table-base-D7mO_Zmv.mjs → as-table-base-CEpvNFBd.mjs} +2 -2
  82. package/dist/{as-table-base-CdtyDOra.cjs → as-table-base-CyBOmUK9.cjs} +2 -2
  83. package/dist/{as-table-cell-value-BAi5yadc.cjs → as-table-cell-value-Ct0KnyKc.cjs} +1 -1
  84. package/dist/{as-table-cell-value-BVcfhhCb.mjs → as-table-cell-value-D1eLiQKJ.mjs} +1 -1
  85. package/dist/as-table-cell-value.cjs +1 -1
  86. package/dist/as-table-cell-value.mjs +1 -1
  87. package/dist/{as-table-header-cell-Cl8waY_g.mjs → as-table-header-cell-CUs-sSBm.mjs} +2 -2
  88. package/dist/{as-table-header-cell-CiRLNVJz.cjs → as-table-header-cell-D7pW2sV3.cjs} +2 -2
  89. package/dist/as-table-header-cell.cjs +1 -1
  90. package/dist/as-table-header-cell.d.cts +1 -1
  91. package/dist/as-table-header-cell.d.mts +1 -1
  92. package/dist/as-table-header-cell.mjs +1 -1
  93. package/dist/{as-table-header-cell.vue-DhCxDIn1.d.mts → as-table-header-cell.vue-BDhs3PNi.d.mts} +1 -1
  94. package/dist/{as-table-header-cell.vue-DmncmpeQ.d.cts → as-table-header-cell.vue-DFaRLZZA.d.cts} +1 -1
  95. package/dist/{as-table-root-Bza3ZGJZ.mjs → as-table-root-C61wrFd9.mjs} +15 -29
  96. package/dist/{as-table-root-C6a6iO6M.cjs → as-table-root-C7Tr_9W-.cjs} +16 -30
  97. package/dist/as-table-root.cjs +1 -1
  98. package/dist/as-table-root.d.cts +1 -1
  99. package/dist/as-table-root.d.mts +1 -1
  100. package/dist/as-table-root.mjs +1 -1
  101. package/dist/{as-table-root.vue-zWOmt_ug.d.mts → as-table-root.vue-Bza3D5F1.d.mts} +22 -5
  102. package/dist/{as-table-root.vue-BllmTRXj.d.cts → as-table-root.vue-D5Xyux8I.d.cts} +22 -5
  103. package/dist/{as-table-status-CbKmSKAy.cjs → as-table-status-B-MjDXNZ.cjs} +5 -5
  104. package/dist/{as-table-status-D9YuoBOm.mjs → as-table-status-D08b0cqn.mjs} +5 -5
  105. package/dist/as-table.cjs +1 -1
  106. package/dist/as-table.d.cts +1 -1
  107. package/dist/as-table.d.mts +1 -1
  108. package/dist/as-table.mjs +1 -1
  109. package/dist/{as-table.vue-Cd1Hc5v9.d.mts → as-table.vue-BuZGgKuM.d.cts} +5 -5
  110. package/dist/{as-table.vue-Bzp4UOqz.d.cts → as-table.vue-CPfERNtx.d.mts} +5 -5
  111. package/dist/{as-window-table-OB4B1knU.cjs → as-window-table-BfSud7yB.cjs} +30 -13
  112. package/dist/{as-window-table-D5grrLFG.mjs → as-window-table-CjYMF0aX.mjs} +30 -13
  113. package/dist/as-window-table.cjs +1 -1
  114. package/dist/as-window-table.d.cts +1 -1
  115. package/dist/as-window-table.d.mts +1 -1
  116. package/dist/as-window-table.mjs +1 -1
  117. package/dist/{as-window-table.vue-CcDoghqs.d.mts → as-window-table.vue-3egLvwAy.d.mts} +15 -2
  118. package/dist/{as-window-table.vue-Db--CSWD.d.cts → as-window-table.vue-BIjQuSie.d.cts} +15 -2
  119. package/dist/index.cjs +40 -41
  120. package/dist/index.d.cts +8 -8
  121. package/dist/index.d.mts +8 -8
  122. package/dist/index.mjs +41 -42
  123. package/dist/{types-CuOHiH-S.d.mts → types-B6N5NDx_.d.cts} +27 -11
  124. package/dist/{types-n40LWFm_.d.cts → types-CgdpcJdd.d.mts} +27 -11
  125. package/dist/{use-table-DRN4nlZs.mjs → use-table-DUwUfjSZ.mjs} +3 -2
  126. package/dist/{use-table-JU7BAX4e.cjs → use-table-c4ku22Mx.cjs} +3 -2
  127. package/dist/use-table-column-handlers-Do0Z-R9D.cjs +96 -0
  128. package/dist/use-table-column-handlers-eKHCfUm_.mjs +85 -0
  129. package/dist/{use-table-component-DIWiP_Vs.cjs → use-table-component-DbQDINoa.cjs} +1 -1
  130. package/dist/{use-table-component-VUFlxIk-.mjs → use-table-component-wfU13P3L.mjs} +1 -1
  131. package/dist/{use-table-nav-bridge-BBtXE70x.cjs → use-table-nav-bridge-BLLVGR1r.cjs} +1 -1
  132. package/dist/{use-table-nav-bridge-DT8oU-6r.mjs → use-table-nav-bridge-DRrvQxXq.mjs} +1 -1
  133. package/dist/{use-table-state-CqU1N4Q9.mjs → use-table-state-BEwXQayO.mjs} +53 -7
  134. package/dist/{use-table-state-CoVe_8NI.cjs → use-table-state-Cnxv0w_E.cjs} +57 -5
  135. package/package.json +7 -7
  136. package/dist/use-table-column-handlers-BMrP0WY2.cjs +0 -45
  137. package/dist/use-table-column-handlers-Bx3JERqs.mjs +0 -40
  138. /package/dist/{as-cell-json-popover-vty5vMjW.cjs → as-cell-json-popover-BM2QLgfk.cjs} +0 -0
  139. /package/dist/{as-cell-json-popover-CH5bAcLE.mjs → as-cell-json-popover-Dkdv5Y9E.mjs} +0 -0
  140. /package/dist/{as-filter-input-C8KmOus8.mjs → as-filter-input-BM23TNeh.mjs} +0 -0
  141. /package/dist/{as-filter-input-DUqpkTkg.cjs → as-filter-input-DJu2k9gO.cjs} +0 -0
  142. /package/dist/{error-message-CfKpn_5w.cjs → error-message-CglODWl4.cjs} +0 -0
  143. /package/dist/{error-message-gNEXnnbb.mjs → error-message-hPSAu8Ug.mjs} +0 -0
  144. /package/dist/{format-cell-Bx7wNc4X.mjs → format-cell-D1Ziv96Q.mjs} +0 -0
  145. /package/dist/{format-cell-DaxV6WIJ.cjs → format-cell-vCNTh4WZ.cjs} +0 -0
  146. /package/dist/{use-cell-locale-caG2Fzpc.cjs → use-cell-locale-BGBRQB7s.cjs} +0 -0
  147. /package/dist/{use-cell-locale-CxQOQsns.mjs → use-cell-locale-MQXoONh5.mjs} +0 -0
  148. /package/dist/{use-seed-on-open-DSh4XFyp.mjs → use-seed-on-open-DO3A1kIb.mjs} +0 -0
  149. /package/dist/{use-seed-on-open-9TSm1Vbv.cjs → use-seed-on-open-Dg9I89fU.cjs} +0 -0
@@ -1,4 +1,4 @@
1
- import { _ as RowDeleteOpt, f as QueryErrorKind, g as RowClassHook, h as RowAttrsHook, o as EnterAction, r as ColumnMenuConfig, y as RowSelectableHook } from "./types-n40LWFm_.cjs";
1
+ import { _ as RowClassHook, b as RowSelectableHook, f as QueryErrorKind, g as RowAttrsHook, m as RowActionsColumnPlacement, o as EnterAction, r as ColumnMenuConfig, v as RowDeleteOpt } from "./types-B6N5NDx_.cjs";
2
2
  import * as vue from "vue";
3
3
  import { SelectionMode } from "@atscript/ui-table";
4
4
 
@@ -51,6 +51,18 @@ type __VLS_Props = {
51
51
  * a watcher — the action set live-updates as the prop flips.
52
52
  */
53
53
  rowDelete?: boolean | RowDeleteOpt;
54
+ /**
55
+ * Synthesised row-actions pseudo-column, as on `<AsTable>`. `'first'` /
56
+ * `'last'` prepend or append a fixed `__actions` column rendering
57
+ * `controls.rowActions` (the `@DbAction` row actions, per-row gated by
58
+ * `$actions`). `'merge-select'` only renders it when `select === "none"`,
59
+ * sharing the leading gutter with the checkbox column.
60
+ *
61
+ * The column is locked: no header dropdown, no resize, no drag-reorder,
62
+ * NOT in the `columnNames` v-model. Hidden entirely when
63
+ * `state.actions.row` is empty. Since 0.1.138.
64
+ */
65
+ rowActionsColumn?: RowActionsColumnPlacement | false;
54
66
  /**
55
67
  * Render without a header row. Omits `<thead>` entirely (not
56
68
  * `display:none`); column widths are carried by the `<colgroup>`, so data
@@ -97,11 +109,12 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.C
97
109
  "onMain-action"?: ((row: Row, absIndex: number, event: MouseEvent | KeyboardEvent) => any) | undefined;
98
110
  onError?: ((error: Error, kind: QueryErrorKind) => any) | undefined;
99
111
  }>, {
112
+ select: SelectionMode;
100
113
  reorderable: boolean;
101
114
  resizable: boolean;
102
115
  columnMinWidth: number;
103
- select: SelectionMode;
104
116
  rowDelete: boolean | RowDeleteOpt;
117
+ rowActionsColumn: RowActionsColumnPlacement | false;
105
118
  headless: boolean;
106
119
  rowHeight: number;
107
120
  wheelRowsPerTick: number;
package/dist/index.cjs CHANGED
@@ -1,33 +1,33 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_use_table_state = require("./use-table-state-CoVe_8NI.cjs");
2
+ const require_use_table_state = require("./use-table-state-Cnxv0w_E.cjs");
3
3
  const require_get_cell_value = require("./get-cell-value-CJT4fk4y.cjs");
4
4
  const require_use_table_selection = require("./use-table-selection-DtCV3rhu.cjs");
5
- const require_use_table = require("./use-table-JU7BAX4e.cjs");
6
- const require_use_table_nav_bridge = require("./use-table-nav-bridge-BBtXE70x.cjs");
7
- const require_use_table_component = require("./use-table-component-DIWiP_Vs.cjs");
8
- const require_as_table_root = require("./as-table-root-C6a6iO6M.cjs");
9
- const require_as_cell_array = require("./as-cell-array-D-8Pqlgo.cjs");
10
- const require_as_cell_date = require("./as-cell-date-DviMJEqs.cjs");
11
- const require_use_cell_locale = require("./use-cell-locale-caG2Fzpc.cjs");
12
- const require_as_cell_json = require("./as-cell-json-CaVB6e7V.cjs");
13
- const require_as_cell_number = require("./as-cell-number-BnYbxOiG.cjs");
14
- const require_format_cell = require("./format-cell-DaxV6WIJ.cjs");
15
- const require_as_cell_union = require("./as-cell-union-BjMP91PS.cjs");
16
- const require_as_column_menu = require("./as-column-menu-D_8NxujZ.cjs");
17
- const require_as_config_dialog = require("./as-config-dialog-BrVhIV_e.cjs");
18
- const require_as_confirm_dialog = require("./as-confirm-dialog-iytk-urB.cjs");
19
- const require_as_filter_input = require("./as-filter-input-DUqpkTkg.cjs");
20
- const require_as_filter_dialog = require("./as-filter-dialog-DoynFox2.cjs");
21
- const require_as_table_header_cell = require("./as-table-header-cell-CiRLNVJz.cjs");
22
- const require_as_window_table = require("./as-window-table-OB4B1knU.cjs");
23
- const require_as_filter_field = require("./as-filter-field-CBMDjApB.cjs");
24
- const require_as_filters = require("./as-filters-CiPv-dKs.cjs");
25
- const require_as_preset_dialog = require("./as-preset-dialog-D8o2ChtM.cjs");
26
- const require_as_row_actions = require("./as-row-actions-CAiCfw8d.cjs");
27
- const require_as_table_cell_value = require("./as-table-cell-value-BAi5yadc.cjs");
28
- const require_as_table = require("./as-table-BNfZcSra.cjs");
29
- const require_as_table_actions = require("./as-table-actions-8yf2QIER.cjs");
30
- const require_as_preset_picker = require("./as-preset-picker-DonMQ8Ia.cjs");
5
+ const require_use_table = require("./use-table-c4ku22Mx.cjs");
6
+ const require_use_table_nav_bridge = require("./use-table-nav-bridge-BLLVGR1r.cjs");
7
+ const require_use_table_component = require("./use-table-component-DbQDINoa.cjs");
8
+ const require_as_cell_array = require("./as-cell-array-CCZ0Ajj9.cjs");
9
+ const require_as_cell_date = require("./as-cell-date-RU5JPJhI.cjs");
10
+ const require_use_cell_locale = require("./use-cell-locale-BGBRQB7s.cjs");
11
+ const require_as_cell_json = require("./as-cell-json-w5YJxNuF.cjs");
12
+ const require_as_cell_number = require("./as-cell-number-DGJCTXDf.cjs");
13
+ const require_format_cell = require("./format-cell-vCNTh4WZ.cjs");
14
+ const require_as_cell_union = require("./as-cell-union-LOGvhPeK.cjs");
15
+ const require_as_column_menu = require("./as-column-menu-ChB7hzmr.cjs");
16
+ const require_as_config_dialog = require("./as-config-dialog-j_-oUmN7.cjs");
17
+ const require_as_confirm_dialog = require("./as-confirm-dialog-CStjIWN0.cjs");
18
+ const require_as_filter_input = require("./as-filter-input-DJu2k9gO.cjs");
19
+ const require_as_filter_dialog = require("./as-filter-dialog-B6_NvvlM.cjs");
20
+ const require_as_table_header_cell = require("./as-table-header-cell-D7pW2sV3.cjs");
21
+ const require_as_window_table = require("./as-window-table-BfSud7yB.cjs");
22
+ const require_as_filter_field = require("./as-filter-field-DCUMuu0M.cjs");
23
+ const require_as_filters = require("./as-filters-CHLPYHNP.cjs");
24
+ const require_as_preset_dialog = require("./as-preset-dialog-RLW0gZDj.cjs");
25
+ const require_as_row_actions = require("./as-row-actions-D_TqnP3S.cjs");
26
+ const require_as_table_cell_value = require("./as-table-cell-value-Ct0KnyKc.cjs");
27
+ const require_as_table_root = require("./as-table-root-C7Tr_9W-.cjs");
28
+ const require_as_table = require("./as-table-CVD1zLva.cjs");
29
+ const require_as_table_actions = require("./as-table-actions-D91sNgel.cjs");
30
+ const require_as_preset_picker = require("./as-preset-picker-yWXEhWEq.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");
@@ -198,8 +198,8 @@ function rawColumn(path) {
198
198
  */
199
199
  function useTableFilter(column, state) {
200
200
  const filterType = (0, _atscript_ui_table.columnFilterType)(column.type);
201
- const availableConditions = (0, _atscript_ui_table.conditionsForType)(filterType, column.nullable);
202
- const defCondition = (0, _atscript_ui_table.defaultCondition)(filterType);
201
+ const availableConditions = (0, _atscript_ui_table.columnFilterConditions)(column);
202
+ const defCondition = (0, _atscript_ui_table.columnDefaultCondition)(column);
203
203
  function cloneConditions() {
204
204
  const existing = state.filters.value[column.path];
205
205
  if (existing && existing.length > 0) return existing.map((c) => ({
@@ -349,7 +349,8 @@ function findCleanEq(segment) {
349
349
  * write therefore agree in both directions: a key the parser ignores (a host
350
350
  * flag, an unrecognised `$control`) is never removed, and a key the parser
351
351
  * reads is the bridge's to remove. Every write merges into the current
352
- * `route.query`, in place.
352
+ * `route.query`: foreign keys stay where they are, the table's own keys are
353
+ * written as one block in the table's order.
353
354
  *
354
355
  * Without a `prefix` the bridge cannot tell a plain `field=value` filter from
355
356
  * a page-owned flag of the same shape, so a plain key that was already in the
@@ -403,17 +404,15 @@ function useTableUrlQuery(route, router, opts = {}) {
403
404
  written.add(key);
404
405
  }
405
406
  const query = {};
406
- for (const key in route.query) {
407
- if (!isOwn(key)) {
408
- query[key] = route.query[key];
409
- continue;
410
- }
411
- if (serialized.has(key)) {
412
- query[key] = serialized.get(key);
413
- serialized.delete(key);
414
- }
415
- }
416
- for (const [key, value] of serialized) query[key] = value;
407
+ let placed = false;
408
+ const place = () => {
409
+ if (placed) return;
410
+ placed = true;
411
+ for (const [key, value] of serialized) query[key] = value;
412
+ };
413
+ for (const key in route.query) if (isOwn(key)) place();
414
+ else query[key] = route.query[key];
415
+ place();
417
416
  navigate({ query });
418
417
  }
419
418
  });
package/dist/index.d.cts CHANGED
@@ -1,23 +1,23 @@
1
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 { C as TVueTableActionInfo, E as extractIdentifier, S as TAsTableControls, T as TableNavBridge, _ as RowDeleteOpt, b as RowSelectableVerdict, c as LocalRowAction, f as QueryErrorKind, g as RowClassHook, h as RowAttrsHook, i as ConfigTab, l as MainActionRequest, m as RowActionsConfig, n as ApplyUrlQueryOptions, p as ReactiveTableState, r as ColumnMenuConfig, s as InvokeOpts, t as ActionResult, u as NavKeyOptions, v as RowHookContext, w as TableActionsState, x as TAsCellTypeComponents, y as RowSelectableHook } from "./types-n40LWFm_.cjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-B7ttOxKU.cjs";
5
- import { $ as useTableExport, A as CellLocale, B as injectPresetsApp, C as isSystemPresetId, Ct as UseLocalDraftReturn, D as formatCellValue, E as setDefaultClientFactory, F as useTableComponent, G as useTableFilter, H as useTableUrlQuery, I as UseAppPrefsOptions, J as ExportProgress, K as useTableNavBridge, L as UseAppPrefsReturn, M as useCellLocale, N as createDefaultCellTypes, O as getCellValue, P as createDefaultControls, Q as downloadExport, R as useAppPrefs, S as getDefaultClientFactory, St as UseLocalDraftOptions, T as resolveSystemPresets, U as useTableActions, V as UseTableUrlQueryOptions, W as useTableSearch, X as ExportRowsOptions, Y as ExportResult, Z as UseTableExportReturn, _ as SYSTEM_PRESET_PREFIX, _t as ActivePresetView, a as CsvOptions, at as BuildQueryOptions, b as UrlQuerySync, bt as usePresets, c as ExportScalar, ct as QueryFn, d as PresetCapabilities, dt as TableStateInternals, et as UseTableOptions, f as PresetData, ft as createStaticTableState, g as STANDARD_PRESET_ID, gt as useTableContextOptional, h as QueryOptions, ht as useTableContext, i as ClientFactory, it as useTableSelection, j as provideCellLocale, k as getColumnWidth, l as PRESET_ASPECTS, lt as TableContext, m as PresetSnapshotWire, mt as provideTableContext, n as AppConfData, nt as useTable, o as DisplayColumnDef, ot as CreateStaticTableStateOptions, p as PresetSnapshot, pt as createTableState, q as ExportCellFormatter, r as AsPresetEntryRow, rt as SelectionPersistence, s as ExportAbortError, st as CreateTableStateOptions, t as _default$19, tt as clearTableCache, u as PresetAspect, ut as TableModelRefs, v as SystemPreset, vt as UsePresetsOptions, w as resetDefaultClientFactory, wt as useLocalDraft, x as UserConfData, xt as StorageLike, y as SystemPresetInput, yt as UsePresetsReturn, z as AS_PRESETS_APP } from "./as-table-root.vue-BllmTRXj.cjs";
6
- import { t as _default$15 } from "./as-table.vue-Bzp4UOqz.cjs";
7
- import { t as _default$20 } from "./as-window-table.vue-Db--CSWD.cjs";
3
+ import { C as TAsTableControls, D as extractIdentifier, E as TableNavBridge, S as TAsCellTypeComponents, T as TableActionsState, _ as RowClassHook, b as RowSelectableHook, c as LocalRowAction, f as QueryErrorKind, g as RowAttrsHook, h as RowActionsConfig, i as ConfigTab, l as MainActionRequest, n as ApplyUrlQueryOptions, p as ReactiveTableState, r as ColumnMenuConfig, s as InvokeOpts, t as ActionResult, u as NavKeyOptions, v as RowDeleteOpt, w as TVueTableActionInfo, x as RowSelectableVerdict, y as RowHookContext } from "./types-B6N5NDx_.cjs";
4
+ import { t as _default$16 } from "./as-table-actions.vue-DB3LW-eI.cjs";
5
+ import { $ as useTableExport, A as CellLocale, B as injectPresetsApp, C as isSystemPresetId, Ct as UseLocalDraftReturn, D as formatCellValue, E as setDefaultClientFactory, F as useTableComponent, G as useTableFilter, H as useTableUrlQuery, I as UseAppPrefsOptions, J as ExportProgress, K as useTableNavBridge, L as UseAppPrefsReturn, M as useCellLocale, N as createDefaultCellTypes, O as getCellValue, P as createDefaultControls, Q as downloadExport, R as useAppPrefs, S as getDefaultClientFactory, St as UseLocalDraftOptions, T as resolveSystemPresets, U as useTableActions, V as UseTableUrlQueryOptions, W as useTableSearch, X as ExportRowsOptions, Y as ExportResult, Z as UseTableExportReturn, _ as SYSTEM_PRESET_PREFIX, _t as ActivePresetView, a as CsvOptions, at as BuildQueryOptions, b as UrlQuerySync, bt as usePresets, c as ExportScalar, ct as QueryFn, d as PresetCapabilities, dt as TableStateInternals, et as UseTableOptions, f as PresetData, ft as createStaticTableState, g as STANDARD_PRESET_ID, gt as useTableContextOptional, h as QueryOptions, ht as useTableContext, i as ClientFactory, it as useTableSelection, j as provideCellLocale, k as getColumnWidth, l as PRESET_ASPECTS, lt as TableContext, m as PresetSnapshotWire, mt as provideTableContext, n as AppConfData, nt as useTable, o as DisplayColumnDef, ot as CreateStaticTableStateOptions, p as PresetSnapshot, pt as createTableState, q as ExportCellFormatter, r as AsPresetEntryRow, rt as SelectionPersistence, s as ExportAbortError, st as CreateTableStateOptions, t as _default$19, tt as clearTableCache, u as PresetAspect, ut as TableModelRefs, v as SystemPreset, vt as UsePresetsOptions, w as resetDefaultClientFactory, wt as useLocalDraft, x as UserConfData, xt as StorageLike, y as SystemPresetInput, yt as UsePresetsReturn, z as AS_PRESETS_APP } from "./as-table-root.vue-D5Xyux8I.cjs";
6
+ import { t as _default$15 } from "./as-table.vue-BuZGgKuM.cjs";
7
+ import { t as _default$20 } from "./as-window-table.vue-BIjQuSie.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-olu6BNEU.cjs";
13
+ import { t as _default$5 } from "./as-column-menu.vue-Cul3eIz_.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";
17
17
  import { t as _default$9 } from "./as-filter-field.vue-ByQ8xIGq.cjs";
18
18
  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
- import { t as _default$14 } from "./as-row-actions.vue-Cac2kfwO.cjs";
20
+ import { t as _default$14 } from "./as-row-actions.vue-WRrzvdbJ.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-DmncmpeQ.cjs";
22
+ import { t as _default$18 } from "./as-table-header-cell.vue-DFaRLZZA.cjs";
23
23
  export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, ApplyUrlQueryOptions, _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, BuildQueryOptions, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, CsvOptions, DisplayColumnDef, ExportAbortError, ExportCellFormatter, ExportProgress, ExportResult, ExportRowsOptions, ExportScalar, InvokeOpts, LocalRowAction, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryFn, QueryOptions, ReactiveTableState, RowActionsConfig, RowAttrsHook, RowClassHook, RowDeleteOpt, RowHookContext, RowSelectableHook, RowSelectableVerdict, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableModelRefs, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableExportReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, downloadExport, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, provideTableContext, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableExport, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };
package/dist/index.d.mts CHANGED
@@ -1,23 +1,23 @@
1
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 { C as TVueTableActionInfo, E as extractIdentifier, S as TAsTableControls, T as TableNavBridge, _ as RowDeleteOpt, b as RowSelectableVerdict, c as LocalRowAction, f as QueryErrorKind, g as RowClassHook, h as RowAttrsHook, i as ConfigTab, l as MainActionRequest, m as RowActionsConfig, n as ApplyUrlQueryOptions, p as ReactiveTableState, r as ColumnMenuConfig, s as InvokeOpts, t as ActionResult, u as NavKeyOptions, v as RowHookContext, w as TableActionsState, x as TAsCellTypeComponents, y as RowSelectableHook } from "./types-CuOHiH-S.mjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-66cjnFZI.mjs";
5
- import { $ as useTableExport, A as CellLocale, B as injectPresetsApp, C as isSystemPresetId, Ct as UseLocalDraftReturn, D as formatCellValue, E as setDefaultClientFactory, F as useTableComponent, G as useTableFilter, H as useTableUrlQuery, I as UseAppPrefsOptions, J as ExportProgress, K as useTableNavBridge, L as UseAppPrefsReturn, M as useCellLocale, N as createDefaultCellTypes, O as getCellValue, P as createDefaultControls, Q as downloadExport, R as useAppPrefs, S as getDefaultClientFactory, St as UseLocalDraftOptions, T as resolveSystemPresets, U as useTableActions, V as UseTableUrlQueryOptions, W as useTableSearch, X as ExportRowsOptions, Y as ExportResult, Z as UseTableExportReturn, _ as SYSTEM_PRESET_PREFIX, _t as ActivePresetView, a as CsvOptions, at as BuildQueryOptions, b as UrlQuerySync, bt as usePresets, c as ExportScalar, ct as QueryFn, d as PresetCapabilities, dt as TableStateInternals, et as UseTableOptions, f as PresetData, ft as createStaticTableState, g as STANDARD_PRESET_ID, gt as useTableContextOptional, h as QueryOptions, ht as useTableContext, i as ClientFactory, it as useTableSelection, j as provideCellLocale, k as getColumnWidth, l as PRESET_ASPECTS, lt as TableContext, m as PresetSnapshotWire, mt as provideTableContext, n as AppConfData, nt as useTable, o as DisplayColumnDef, ot as CreateStaticTableStateOptions, p as PresetSnapshot, pt as createTableState, q as ExportCellFormatter, r as AsPresetEntryRow, rt as SelectionPersistence, s as ExportAbortError, st as CreateTableStateOptions, t as _default$19, tt as clearTableCache, u as PresetAspect, ut as TableModelRefs, v as SystemPreset, vt as UsePresetsOptions, w as resetDefaultClientFactory, wt as useLocalDraft, x as UserConfData, xt as StorageLike, y as SystemPresetInput, yt as UsePresetsReturn, z as AS_PRESETS_APP } from "./as-table-root.vue-zWOmt_ug.mjs";
6
- import { t as _default$15 } from "./as-table.vue-Cd1Hc5v9.mjs";
7
- import { t as _default$20 } from "./as-window-table.vue-CcDoghqs.mjs";
3
+ import { C as TAsTableControls, D as extractIdentifier, E as TableNavBridge, S as TAsCellTypeComponents, T as TableActionsState, _ as RowClassHook, b as RowSelectableHook, c as LocalRowAction, f as QueryErrorKind, g as RowAttrsHook, h as RowActionsConfig, i as ConfigTab, l as MainActionRequest, n as ApplyUrlQueryOptions, p as ReactiveTableState, r as ColumnMenuConfig, s as InvokeOpts, t as ActionResult, u as NavKeyOptions, v as RowDeleteOpt, w as TVueTableActionInfo, x as RowSelectableVerdict, y as RowHookContext } from "./types-CgdpcJdd.mjs";
4
+ import { t as _default$16 } from "./as-table-actions.vue-CPVhj2ZC.mjs";
5
+ import { $ as useTableExport, A as CellLocale, B as injectPresetsApp, C as isSystemPresetId, Ct as UseLocalDraftReturn, D as formatCellValue, E as setDefaultClientFactory, F as useTableComponent, G as useTableFilter, H as useTableUrlQuery, I as UseAppPrefsOptions, J as ExportProgress, K as useTableNavBridge, L as UseAppPrefsReturn, M as useCellLocale, N as createDefaultCellTypes, O as getCellValue, P as createDefaultControls, Q as downloadExport, R as useAppPrefs, S as getDefaultClientFactory, St as UseLocalDraftOptions, T as resolveSystemPresets, U as useTableActions, V as UseTableUrlQueryOptions, W as useTableSearch, X as ExportRowsOptions, Y as ExportResult, Z as UseTableExportReturn, _ as SYSTEM_PRESET_PREFIX, _t as ActivePresetView, a as CsvOptions, at as BuildQueryOptions, b as UrlQuerySync, bt as usePresets, c as ExportScalar, ct as QueryFn, d as PresetCapabilities, dt as TableStateInternals, et as UseTableOptions, f as PresetData, ft as createStaticTableState, g as STANDARD_PRESET_ID, gt as useTableContextOptional, h as QueryOptions, ht as useTableContext, i as ClientFactory, it as useTableSelection, j as provideCellLocale, k as getColumnWidth, l as PRESET_ASPECTS, lt as TableContext, m as PresetSnapshotWire, mt as provideTableContext, n as AppConfData, nt as useTable, o as DisplayColumnDef, ot as CreateStaticTableStateOptions, p as PresetSnapshot, pt as createTableState, q as ExportCellFormatter, r as AsPresetEntryRow, rt as SelectionPersistence, s as ExportAbortError, st as CreateTableStateOptions, t as _default$19, tt as clearTableCache, u as PresetAspect, ut as TableModelRefs, v as SystemPreset, vt as UsePresetsOptions, w as resetDefaultClientFactory, wt as useLocalDraft, x as UserConfData, xt as StorageLike, y as SystemPresetInput, yt as UsePresetsReturn, z as AS_PRESETS_APP } from "./as-table-root.vue-Bza3D5F1.mjs";
6
+ import { t as _default$15 } from "./as-table.vue-CPfERNtx.mjs";
7
+ import { t as _default$20 } from "./as-window-table.vue-3egLvwAy.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-DIuEvru6.mjs";
13
+ import { t as _default$5 } from "./as-column-menu.vue-Dw2m8ZqD.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";
17
17
  import { t as _default$9 } from "./as-filter-field.vue-BbXLhd6O.mjs";
18
18
  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
- import { t as _default$14 } from "./as-row-actions.vue-DZrASzp7.mjs";
20
+ import { t as _default$14 } from "./as-row-actions.vue-DxXodLGq.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-DhCxDIn1.mjs";
22
+ import { t as _default$18 } from "./as-table-header-cell.vue-BDhs3PNi.mjs";
23
23
  export { AS_PRESETS_APP, ActionResult, ActivePresetView, AppConfData, ApplyUrlQueryOptions, _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, BuildQueryOptions, CellLocale, ClientFactory, ColumnMenuConfig, ConfigTab, CreateStaticTableStateOptions, CreateTableStateOptions, CsvOptions, DisplayColumnDef, ExportAbortError, ExportCellFormatter, ExportProgress, ExportResult, ExportRowsOptions, ExportScalar, InvokeOpts, LocalRowAction, MainActionRequest, NavKeyOptions, PRESET_ASPECTS, PresetAspect, PresetCapabilities, PresetData, PresetSnapshot, PresetSnapshotWire, QueryErrorKind, QueryFn, QueryOptions, ReactiveTableState, RowActionsConfig, RowAttrsHook, RowClassHook, RowDeleteOpt, RowHookContext, RowSelectableHook, RowSelectableVerdict, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionPersistence, StorageLike, SystemPreset, SystemPresetInput, TAsCellTypeComponents, TAsTableControls, TVueTableActionInfo, TableActionsState, TableContext, TableModelRefs, TableNavBridge, TableStateInternals, UrlQuerySync, UseAppPrefsOptions, UseAppPrefsReturn, UseLocalDraftOptions, UseLocalDraftReturn, UsePresetsOptions, UsePresetsReturn, UseTableExportReturn, UseTableOptions, UseTableUrlQueryOptions, UserConfData, clearTableCache, createDefaultCellTypes, createDefaultControls, createStaticTableState, createTableState, downloadExport, extractIdentifier, formatCellValue, getCellValue, getColumnWidth, getDefaultClientFactory, injectPresetsApp, isSystemPresetId, provideCellLocale, provideTableContext, resetDefaultClientFactory, resolveSystemPresets, setDefaultClientFactory, useAppPrefs, useCellLocale, useLocalDraft, usePresets, useTable, useTableActions, useTableComponent, useTableContext, useTableContextOptional, useTableExport, useTableFilter, useTableNavBridge, useTableSearch, useTableSelection, useTableUrlQuery };
package/dist/index.mjs CHANGED
@@ -1,35 +1,35 @@
1
- import { D as ROW_ACTIONS_TYPE, a as useTableContext, b as extractIdentifier, n as createTableState, o as useTableContextOptional, r as provideTableContext, t as createStaticTableState } from "./use-table-state-CqU1N4Q9.mjs";
1
+ import { O as ROW_ACTIONS_TYPE, a as useTableContext, n as createTableState, o as useTableContextOptional, r as provideTableContext, t as createStaticTableState, x as extractIdentifier } from "./use-table-state-BEwXQayO.mjs";
2
2
  import { t as getCellValue } from "./get-cell-value-Cb3X8nUn.mjs";
3
3
  import { n as useTableSelection } from "./use-table-selection-ULbKT2xW.mjs";
4
- import { a as useLocalDraft, i as usePresets, o as AS_PRESETS_APP, r as useTable, s as injectPresetsApp, t as clearTableCache } from "./use-table-DRN4nlZs.mjs";
5
- import { t as useTableNavBridge } from "./use-table-nav-bridge-DT8oU-6r.mjs";
6
- import { t as useTableComponent } from "./use-table-component-VUFlxIk-.mjs";
7
- import { t as as_table_root_default } from "./as-table-root-Bza3ZGJZ.mjs";
8
- import { t as as_cell_array_default } from "./as-cell-array-BWHkJX3I.mjs";
9
- import { t as as_cell_date_default } from "./as-cell-date-mGlnDeLP.mjs";
10
- import { n as useCellLocale, t as provideCellLocale } from "./use-cell-locale-CxQOQsns.mjs";
11
- import { t as as_cell_json_default } from "./as-cell-json-2I081xnO.mjs";
12
- import { t as as_cell_number_default } from "./as-cell-number-CP2AZI9g.mjs";
13
- import { t as formatCellValue } from "./format-cell-Bx7wNc4X.mjs";
14
- import { t as as_cell_union_default } from "./as-cell-union-NHpDCXty.mjs";
15
- import { t as as_column_menu_default } from "./as-column-menu-BMTS3DO2.mjs";
16
- import { t as as_config_dialog_default } from "./as-config-dialog-DHdpmRo9.mjs";
17
- import { t as as_confirm_dialog_default } from "./as-confirm-dialog-BG5vlbvV.mjs";
18
- import { t as as_filter_input_default } from "./as-filter-input-C8KmOus8.mjs";
19
- import { t as as_filter_dialog_default } from "./as-filter-dialog-DAvtsH3d.mjs";
20
- import { t as as_table_header_cell_default } from "./as-table-header-cell-Cl8waY_g.mjs";
21
- import { t as as_window_table_default } from "./as-window-table-D5grrLFG.mjs";
22
- import { t as as_filter_field_default } from "./as-filter-field-DB5WFT4l.mjs";
23
- import { t as as_filters_default } from "./as-filters-DfBH5YH9.mjs";
24
- import { t as as_preset_dialog_default } from "./as-preset-dialog-C0f_6VxJ.mjs";
25
- import { t as as_row_actions_default } from "./as-row-actions-B8YANdb4.mjs";
26
- import { t as as_table_cell_value_default } from "./as-table-cell-value-BVcfhhCb.mjs";
27
- import { t as as_table_default } from "./as-table-DtfWLLlb.mjs";
28
- import { t as as_table_actions_default } from "./as-table-actions-z5xUWtvK.mjs";
29
- import { t as as_preset_picker_default } from "./as-preset-picker-CDItDinB.mjs";
4
+ import { a as useLocalDraft, i as usePresets, o as AS_PRESETS_APP, r as useTable, s as injectPresetsApp, t as clearTableCache } from "./use-table-DUwUfjSZ.mjs";
5
+ import { t as useTableNavBridge } from "./use-table-nav-bridge-DRrvQxXq.mjs";
6
+ import { t as useTableComponent } from "./use-table-component-wfU13P3L.mjs";
7
+ import { t as as_cell_array_default } from "./as-cell-array-Bgc4GYZf.mjs";
8
+ import { t as as_cell_date_default } from "./as-cell-date-B9mu0OOD.mjs";
9
+ import { n as useCellLocale, t as provideCellLocale } from "./use-cell-locale-MQXoONh5.mjs";
10
+ import { t as as_cell_json_default } from "./as-cell-json-ByEGYRST.mjs";
11
+ import { t as as_cell_number_default } from "./as-cell-number-CNDT6gfw.mjs";
12
+ import { t as formatCellValue } from "./format-cell-D1Ziv96Q.mjs";
13
+ import { t as as_cell_union_default } from "./as-cell-union-DMnoa7RM.mjs";
14
+ import { t as as_column_menu_default } from "./as-column-menu-CBtUfYEE.mjs";
15
+ import { t as as_config_dialog_default } from "./as-config-dialog-DrcYlrOh.mjs";
16
+ import { t as as_confirm_dialog_default } from "./as-confirm-dialog-Pnt60ALy.mjs";
17
+ import { t as as_filter_input_default } from "./as-filter-input-BM23TNeh.mjs";
18
+ import { t as as_filter_dialog_default } from "./as-filter-dialog-CUzahpd_.mjs";
19
+ import { t as as_table_header_cell_default } from "./as-table-header-cell-CUs-sSBm.mjs";
20
+ import { t as as_window_table_default } from "./as-window-table-CjYMF0aX.mjs";
21
+ import { t as as_filter_field_default } from "./as-filter-field-3DJh_ICs.mjs";
22
+ import { t as as_filters_default } from "./as-filters-D0DWDyiv.mjs";
23
+ import { t as as_preset_dialog_default } from "./as-preset-dialog-H98DeOMM.mjs";
24
+ import { t as as_row_actions_default } from "./as-row-actions-BvJWHf3j.mjs";
25
+ import { t as as_table_cell_value_default } from "./as-table-cell-value-D1eLiQKJ.mjs";
26
+ import { t as as_table_root_default } from "./as-table-root-C61wrFd9.mjs";
27
+ import { t as as_table_default } from "./as-table-D5mMZKKg.mjs";
28
+ import { t as as_table_actions_default } from "./as-table-actions-C6moFlxt.mjs";
29
+ import { t as as_preset_picker_default } from "./as-preset-picker-Cw7LB7o1.mjs";
30
30
  import { getDefaultClientFactory, resetDefaultClientFactory, setDefaultClientFactory } from "@atscript/ui";
31
31
  import { computed, effectScope, ref, shallowRef } from "vue";
32
- import { AppPrefsClient, ExportAbortError, PRESET_ASPECTS, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, collectExportRows, columnFilterType, conditionsForType, defaultCondition, isFilled, isSystemPresetId, isUnavailableError, resolveExportValue, resolveSystemPresets, toCsv, urlQueryConsumesKey, withStableOrder } from "@atscript/ui-table";
32
+ import { AppPrefsClient, ExportAbortError, PRESET_ASPECTS, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, collectExportRows, columnDefaultCondition, columnFilterConditions, columnFilterType, isFilled, isSystemPresetId, isUnavailableError, resolveExportValue, resolveSystemPresets, toCsv, urlQueryConsumesKey, withStableOrder } from "@atscript/ui-table";
33
33
  import { StorageSerializers, useEventBus, useStorage } from "@vueuse/core";
34
34
  //#region src/composables/use-table-export.ts
35
35
  /**
@@ -197,8 +197,8 @@ function rawColumn(path) {
197
197
  */
198
198
  function useTableFilter(column, state) {
199
199
  const filterType = columnFilterType(column.type);
200
- const availableConditions = conditionsForType(filterType, column.nullable);
201
- const defCondition = defaultCondition(filterType);
200
+ const availableConditions = columnFilterConditions(column);
201
+ const defCondition = columnDefaultCondition(column);
202
202
  function cloneConditions() {
203
203
  const existing = state.filters.value[column.path];
204
204
  if (existing && existing.length > 0) return existing.map((c) => ({
@@ -348,7 +348,8 @@ function findCleanEq(segment) {
348
348
  * write therefore agree in both directions: a key the parser ignores (a host
349
349
  * flag, an unrecognised `$control`) is never removed, and a key the parser
350
350
  * reads is the bridge's to remove. Every write merges into the current
351
- * `route.query`, in place.
351
+ * `route.query`: foreign keys stay where they are, the table's own keys are
352
+ * written as one block in the table's order.
352
353
  *
353
354
  * Without a `prefix` the bridge cannot tell a plain `field=value` filter from
354
355
  * a page-owned flag of the same shape, so a plain key that was already in the
@@ -402,17 +403,15 @@ function useTableUrlQuery(route, router, opts = {}) {
402
403
  written.add(key);
403
404
  }
404
405
  const query = {};
405
- for (const key in route.query) {
406
- if (!isOwn(key)) {
407
- query[key] = route.query[key];
408
- continue;
409
- }
410
- if (serialized.has(key)) {
411
- query[key] = serialized.get(key);
412
- serialized.delete(key);
413
- }
414
- }
415
- for (const [key, value] of serialized) query[key] = value;
406
+ let placed = false;
407
+ const place = () => {
408
+ if (placed) return;
409
+ placed = true;
410
+ for (const [key, value] of serialized) query[key] = value;
411
+ };
412
+ for (const key in route.query) if (isOwn(key)) place();
413
+ else query[key] = route.query[key];
414
+ place();
416
415
  navigate({ query });
417
416
  }
418
417
  });
@@ -1,8 +1,8 @@
1
- import { ColumnDef, PaginationControl, SortControl, TableDef } from "@atscript/ui";
2
1
  import { Component, ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
3
- import { AsPresetEntryRow, AspectMask, ColumnWidthsMap, ConfigTab, FieldFilters, PresetAspect, PresetCapabilities, PresetSnapshot, SelectionMode, SystemPreset, SystemPresetInput, TableStateMethods } from "@atscript/ui-table";
4
2
  import { ClientError, PageResult, TDbActionInfo, TDbActionProcessor, TDbDeleteResult } from "@atscript/db-client";
5
3
  import { Uniquery } from "@uniqu/core";
4
+ import { ColumnDef, PaginationControl, SortControl, TableDef } from "@atscript/ui";
5
+ import { AsPresetEntryRow, AspectMask, ColumnWidthsMap, ConfigTab, FieldFilters, PresetAspect, PresetCapabilities, PresetSnapshot, SelectionMode, SystemPreset, SystemPresetInput, TableStateMethods } from "@atscript/ui-table";
6
6
 
7
7
  //#region src/composables/state/intent-scope.d.ts
8
8
  interface ActionBuckets {
@@ -52,6 +52,11 @@ interface RowActionsPolicy {
52
52
  //#region src/types.d.ts
53
53
  /** UI-side sentinel for the synthesised row-delete processor. */
54
54
  declare const REMOVE_PROCESSOR = "__remove";
55
+ /**
56
+ * Where a renderer places the synthesised row-actions column
57
+ * (`:row-actions-column` on `<AsTable>` / `<AsWindowTable>`).
58
+ */
59
+ type RowActionsColumnPlacement = "first" | "last" | "merge-select";
55
60
  /**
56
61
  * Action descriptor used everywhere in vue-table. Widens `processor` to admit
57
62
  * the UI-side `__remove` sentinel without leaking into db-client.
@@ -408,7 +413,10 @@ type TAsCellTypeComponents = {
408
413
  * @since 0.1.137
409
414
  */
410
415
  interface ApplyUrlQueryOptions {
411
- /** `"merge"` (default) keeps them, `"replace"` clears them. */
416
+ /**
417
+ * Overrides what the URL itself decides (see `applyUrlQuery`): `"merge"`
418
+ * falls back to the table's starting values, `"replace"` clears them.
419
+ */
412
420
  mode?: "merge" | "replace";
413
421
  }
414
422
  /**
@@ -663,13 +671,21 @@ interface ReactiveTableState extends TableStateMethods {
663
671
  * bridge's own emissions. Does NOT call `query()` — root watchers refetch in
664
672
  * reaction to the writes.
665
673
  *
666
- * `mode` decides what happens to filters and sorters the URL does NOT
667
- * mention (search and pagination always take the URL's value):
668
- * - `"merge"` (default) — they survive. This is mount-time deep-link
669
- * hydration, where the URL overlays a preset baseline it must not wipe.
670
- * - `"replace"` (since 0.1.137) — they are cleared, within whatever the
671
- * `urlQuerySync` gates actually serialize. This is history navigation,
672
- * where the URL is a complete snapshot of the synced aspects.
674
+ * The URL decides what happens to filters and sorters it does NOT mention,
675
+ * within whatever the `urlQuerySync` gates serialize (search and pagination
676
+ * always take the URL's value; columns and other presentation state are
677
+ * never touched):
678
+ * - A URL carrying the `$snapshot` marker (`URL_SNAPSHOT_KEY` — every URL
679
+ * the table writes) replaces: they are cleared, an empty `$sort`
680
+ * included, so a reload or a shared link reproduces the table exactly.
681
+ * - Any other URL (an app deep link) merges: they fall back to the table's
682
+ * boot baseline — the owned filters and sorters it had before the first
683
+ * URL was applied (preset, persisted drafts, props). Every merge starts
684
+ * from that baseline, not from the current state, so Back to a deep link
685
+ * restores it as first opened. A preset switched to later does not move
686
+ * the baseline.
687
+ *
688
+ * `opts.mode` overrides the marker either way. Since 0.1.139.
673
689
  */
674
690
  applyUrlQuery: (urlString: string, opts?: ApplyUrlQueryOptions) => void;
675
691
  /**
@@ -833,4 +849,4 @@ interface PresetSurface {
833
849
  lastError: Ref<Error | null>;
834
850
  }
835
851
  //#endregion
836
- export { TVueTableActionInfo as C, extractIdentifier as E, TAsTableControls as S, TableNavBridge as T, RowDeleteOpt as _, ConfirmOptions as a, RowSelectableVerdict as b, LocalRowAction as c, PresetConfig as d, QueryErrorKind as f, RowClassHook as g, RowAttrsHook as h, ConfigTab as i, MainActionRequest as l, RowActionsConfig as m, ApplyUrlQueryOptions as n, EnterAction as o, ReactiveTableState as p, ColumnMenuConfig as r, InvokeOpts as s, ActionResult as t, NavKeyOptions as u, RowHookContext as v, TableActionsState as w, TAsCellTypeComponents as x, RowSelectableHook as y };
852
+ export { TAsTableControls as C, extractIdentifier as D, TableNavBridge as E, TAsCellTypeComponents as S, TableActionsState as T, RowClassHook as _, ConfirmOptions as a, RowSelectableHook as b, LocalRowAction as c, PresetConfig as d, QueryErrorKind as f, RowAttrsHook as g, RowActionsConfig as h, ConfigTab as i, MainActionRequest as l, RowActionsColumnPlacement as m, ApplyUrlQueryOptions as n, EnterAction as o, ReactiveTableState as p, ColumnMenuConfig as r, InvokeOpts as s, ActionResult as t, NavKeyOptions as u, RowDeleteOpt as v, TVueTableActionInfo as w, RowSelectableVerdict as x, RowHookContext as y };
@@ -1,8 +1,8 @@
1
+ import { ColumnDef, PaginationControl, SortControl, TableDef } from "@atscript/ui";
1
2
  import { Component, ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
3
+ import { AsPresetEntryRow, AspectMask, ColumnWidthsMap, ConfigTab, FieldFilters, PresetAspect, PresetCapabilities, PresetSnapshot, SelectionMode, SystemPreset, SystemPresetInput, TableStateMethods } from "@atscript/ui-table";
2
4
  import { ClientError, PageResult, TDbActionInfo, TDbActionProcessor, TDbDeleteResult } from "@atscript/db-client";
3
5
  import { Uniquery } from "@uniqu/core";
4
- import { ColumnDef, PaginationControl, SortControl, TableDef } from "@atscript/ui";
5
- import { AsPresetEntryRow, AspectMask, ColumnWidthsMap, ConfigTab, FieldFilters, PresetAspect, PresetCapabilities, PresetSnapshot, SelectionMode, SystemPreset, SystemPresetInput, TableStateMethods } from "@atscript/ui-table";
6
6
 
7
7
  //#region src/composables/state/intent-scope.d.ts
8
8
  interface ActionBuckets {
@@ -52,6 +52,11 @@ interface RowActionsPolicy {
52
52
  //#region src/types.d.ts
53
53
  /** UI-side sentinel for the synthesised row-delete processor. */
54
54
  declare const REMOVE_PROCESSOR = "__remove";
55
+ /**
56
+ * Where a renderer places the synthesised row-actions column
57
+ * (`:row-actions-column` on `<AsTable>` / `<AsWindowTable>`).
58
+ */
59
+ type RowActionsColumnPlacement = "first" | "last" | "merge-select";
55
60
  /**
56
61
  * Action descriptor used everywhere in vue-table. Widens `processor` to admit
57
62
  * the UI-side `__remove` sentinel without leaking into db-client.
@@ -408,7 +413,10 @@ type TAsCellTypeComponents = {
408
413
  * @since 0.1.137
409
414
  */
410
415
  interface ApplyUrlQueryOptions {
411
- /** `"merge"` (default) keeps them, `"replace"` clears them. */
416
+ /**
417
+ * Overrides what the URL itself decides (see `applyUrlQuery`): `"merge"`
418
+ * falls back to the table's starting values, `"replace"` clears them.
419
+ */
412
420
  mode?: "merge" | "replace";
413
421
  }
414
422
  /**
@@ -663,13 +671,21 @@ interface ReactiveTableState extends TableStateMethods {
663
671
  * bridge's own emissions. Does NOT call `query()` — root watchers refetch in
664
672
  * reaction to the writes.
665
673
  *
666
- * `mode` decides what happens to filters and sorters the URL does NOT
667
- * mention (search and pagination always take the URL's value):
668
- * - `"merge"` (default) — they survive. This is mount-time deep-link
669
- * hydration, where the URL overlays a preset baseline it must not wipe.
670
- * - `"replace"` (since 0.1.137) — they are cleared, within whatever the
671
- * `urlQuerySync` gates actually serialize. This is history navigation,
672
- * where the URL is a complete snapshot of the synced aspects.
674
+ * The URL decides what happens to filters and sorters it does NOT mention,
675
+ * within whatever the `urlQuerySync` gates serialize (search and pagination
676
+ * always take the URL's value; columns and other presentation state are
677
+ * never touched):
678
+ * - A URL carrying the `$snapshot` marker (`URL_SNAPSHOT_KEY` — every URL
679
+ * the table writes) replaces: they are cleared, an empty `$sort`
680
+ * included, so a reload or a shared link reproduces the table exactly.
681
+ * - Any other URL (an app deep link) merges: they fall back to the table's
682
+ * boot baseline — the owned filters and sorters it had before the first
683
+ * URL was applied (preset, persisted drafts, props). Every merge starts
684
+ * from that baseline, not from the current state, so Back to a deep link
685
+ * restores it as first opened. A preset switched to later does not move
686
+ * the baseline.
687
+ *
688
+ * `opts.mode` overrides the marker either way. Since 0.1.139.
673
689
  */
674
690
  applyUrlQuery: (urlString: string, opts?: ApplyUrlQueryOptions) => void;
675
691
  /**
@@ -833,4 +849,4 @@ interface PresetSurface {
833
849
  lastError: Ref<Error | null>;
834
850
  }
835
851
  //#endregion
836
- export { TVueTableActionInfo as C, extractIdentifier as E, TAsTableControls as S, TableNavBridge as T, RowDeleteOpt as _, ConfirmOptions as a, RowSelectableVerdict as b, LocalRowAction as c, PresetConfig as d, QueryErrorKind as f, RowClassHook as g, RowAttrsHook as h, ConfigTab as i, MainActionRequest as l, RowActionsConfig as m, ApplyUrlQueryOptions as n, EnterAction as o, ReactiveTableState as p, ColumnMenuConfig as r, InvokeOpts as s, ActionResult as t, NavKeyOptions as u, RowHookContext as v, TableActionsState as w, TAsCellTypeComponents as x, RowSelectableHook as y };
852
+ export { TAsTableControls as C, extractIdentifier as D, TableNavBridge as E, TAsCellTypeComponents as S, TableActionsState as T, RowClassHook as _, ConfirmOptions as a, RowSelectableHook as b, LocalRowAction as c, PresetConfig as d, QueryErrorKind as f, RowAttrsHook as g, RowActionsConfig as h, ConfigTab as i, MainActionRequest as l, RowActionsColumnPlacement as m, ApplyUrlQueryOptions as n, EnterAction as o, ReactiveTableState as p, ColumnMenuConfig as r, InvokeOpts as s, ActionResult as t, NavKeyOptions as u, RowDeleteOpt as v, TVueTableActionInfo as w, RowSelectableVerdict as x, RowHookContext as y };
@@ -1,4 +1,4 @@
1
- import { n as createTableState, r as provideTableContext, s as DEFAULT_AVAILABLE_ASPECTS } from "./use-table-state-CqU1N4Q9.mjs";
1
+ import { c as DEFAULT_AVAILABLE_ASPECTS, n as createTableState, r as provideTableContext } from "./use-table-state-BEwXQayO.mjs";
2
2
  import { n as useTableSelection } from "./use-table-selection-ULbKT2xW.mjs";
3
3
  import { createTableDef, getMetaEntry, resetMetaCache } from "@atscript/ui";
4
4
  import { computed, inject, isRef, ref, shallowRef, toValue, watch } from "vue";
@@ -434,7 +434,8 @@ function useTable(url, opts) {
434
434
  ignoreSortersWhenSearched: typeof opts?.ignoreSortersWhenSearched === "boolean" ? opts.ignoreSortersWhenSearched : void 0,
435
435
  urlQueryReady: opts?.urlQueryReady,
436
436
  onUrlQueryChange: opts?.onUrlQueryChange,
437
- urlQuerySync: opts?.urlQuerySync
437
+ urlQuerySync: opts?.urlQuerySync,
438
+ onUnsupportedFilter: opts?.onUnsupportedFilter
438
439
  },
439
440
  window: {
440
441
  blockSize: opts?.blockSize,
@@ -1,4 +1,4 @@
1
- const require_use_table_state = require("./use-table-state-CoVe_8NI.cjs");
1
+ const require_use_table_state = require("./use-table-state-Cnxv0w_E.cjs");
2
2
  const require_use_table_selection = require("./use-table-selection-DtCV3rhu.cjs");
3
3
  let _atscript_ui = require("@atscript/ui");
4
4
  let vue = require("vue");
@@ -434,7 +434,8 @@ function useTable(url, opts) {
434
434
  ignoreSortersWhenSearched: typeof opts?.ignoreSortersWhenSearched === "boolean" ? opts.ignoreSortersWhenSearched : void 0,
435
435
  urlQueryReady: opts?.urlQueryReady,
436
436
  onUrlQueryChange: opts?.onUrlQueryChange,
437
- urlQuerySync: opts?.urlQuerySync
437
+ urlQuerySync: opts?.urlQuerySync,
438
+ onUnsupportedFilter: opts?.onUnsupportedFilter
438
439
  },
439
440
  window: {
440
441
  blockSize: opts?.blockSize,