@atscript/vue-table 0.1.138 → 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 (147) 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-SRkxrvo_.d.mts → as-column-menu.vue-Cul3eIz_.d.cts} +2 -2
  32. package/dist/{as-column-menu.vue-CgvDp7JK.d.cts → as-column-menu.vue-Dw2m8ZqD.d.mts} +2 -2
  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-CW8-zoag.cjs → as-filter-dialog-B6_NvvlM.cjs} +14 -14
  42. package/dist/{as-filter-dialog-Dis7tkN_.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-BKoxTudl.mjs → as-filter-field-3DJh_ICs.mjs} +5 -6
  46. package/dist/{as-filter-field-bVIXoH3j.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-Dx8WkGiA.cjs → as-filters-CHLPYHNP.cjs} +3 -3
  52. package/dist/{as-filters-CxVy00LQ.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-C49h8PpE.d.cts → as-row-actions.vue-DxXodLGq.d.mts} +1 -1
  70. package/dist/{as-row-actions.vue-BCgHsU18.d.mts → as-row-actions.vue-WRrzvdbJ.d.cts} +1 -1
  71. package/dist/{as-table-QoXP-NZr.cjs → as-table-CVD1zLva.cjs} +3 -3
  72. package/dist/{as-table-BAoJ60tx.mjs → as-table-D5mMZKKg.mjs} +3 -3
  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-BTGQnFH_.d.mts → as-table-actions.vue-CPVhj2ZC.d.mts} +1 -1
  80. package/dist/{as-table-actions.vue-oxyikRAt.d.cts → as-table-actions.vue-DB3LW-eI.d.cts} +1 -1
  81. package/dist/{as-table-base-DA5T7x_K.mjs → as-table-base-CEpvNFBd.mjs} +2 -2
  82. package/dist/{as-table-base-wPJuru7P.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-BjgxfKhi.d.cts → as-table-header-cell.vue-BDhs3PNi.d.mts} +2 -2
  94. package/dist/{as-table-header-cell.vue-zGeuzm3w.d.mts → as-table-header-cell.vue-DFaRLZZA.d.cts} +2 -2
  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-DnOHVQtA.d.mts → as-table-root.vue-Bza3D5F1.d.mts} +20 -3
  102. package/dist/{as-table-root.vue-Dze91qga.d.cts → as-table-root.vue-D5Xyux8I.d.cts} +20 -3
  103. package/dist/{as-table-status-B2O3hLGg.cjs → as-table-status-B-MjDXNZ.cjs} +5 -5
  104. package/dist/{as-table-status-aebsG7bR.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-emq84QmP.d.mts → as-table.vue-BuZGgKuM.d.cts} +2 -2
  110. package/dist/{as-table.vue-BSKifGzD.d.cts → as-table.vue-CPfERNtx.d.mts} +2 -2
  111. package/dist/{as-window-table-DS30wumm.cjs → as-window-table-BfSud7yB.cjs} +3 -3
  112. package/dist/{as-window-table-ByTXS8yA.mjs → as-window-table-CjYMF0aX.mjs} +3 -3
  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-DJNJ-6dd.d.cts → as-window-table.vue-3egLvwAy.d.mts} +1 -1
  118. package/dist/{as-window-table.vue-DUJgZDXy.d.mts → as-window-table.vue-BIjQuSie.d.cts} +1 -1
  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-CsgAGRfG.d.mts → types-B6N5NDx_.d.cts} +21 -10
  124. package/dist/{types-DvWLY5zQ.d.cts → types-CgdpcJdd.d.mts} +21 -10
  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-r47WDxEh.cjs → use-table-column-handlers-Do0Z-R9D.cjs} +1 -1
  128. package/dist/{use-table-column-handlers-DGn4ZW9j.mjs → use-table-column-handlers-eKHCfUm_.mjs} +1 -1
  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/{as-cell-json-popover-vty5vMjW.cjs → as-cell-json-popover-BM2QLgfk.cjs} +0 -0
  137. /package/dist/{as-cell-json-popover-CH5bAcLE.mjs → as-cell-json-popover-Dkdv5Y9E.mjs} +0 -0
  138. /package/dist/{as-filter-input-C8KmOus8.mjs → as-filter-input-BM23TNeh.mjs} +0 -0
  139. /package/dist/{as-filter-input-DUqpkTkg.cjs → as-filter-input-DJu2k9gO.cjs} +0 -0
  140. /package/dist/{error-message-CfKpn_5w.cjs → error-message-CglODWl4.cjs} +0 -0
  141. /package/dist/{error-message-gNEXnnbb.mjs → error-message-hPSAu8Ug.mjs} +0 -0
  142. /package/dist/{format-cell-Bx7wNc4X.mjs → format-cell-D1Ziv96Q.mjs} +0 -0
  143. /package/dist/{format-cell-DaxV6WIJ.cjs → format-cell-vCNTh4WZ.cjs} +0 -0
  144. /package/dist/{use-cell-locale-caG2Fzpc.cjs → use-cell-locale-BGBRQB7s.cjs} +0 -0
  145. /package/dist/{use-cell-locale-CxQOQsns.mjs → use-cell-locale-MQXoONh5.mjs} +0 -0
  146. /package/dist/{use-seed-on-open-DSh4XFyp.mjs → use-seed-on-open-DO3A1kIb.mjs} +0 -0
  147. /package/dist/{use-seed-on-open-9TSm1Vbv.cjs → use-seed-on-open-Dg9I89fU.cjs} +0 -0
@@ -1,4 +1,4 @@
1
- import { C as TAsTableControls, E as TableNavBridge, S as TAsCellTypeComponents, T as TableActionsState, a as ConfirmOptions, d as PresetConfig, h as RowActionsConfig, p as ReactiveTableState, t as ActionResult, u as NavKeyOptions, w as TVueTableActionInfo } from "./types-DvWLY5zQ.cjs";
1
+ import { C as TAsTableControls, E as TableNavBridge, S as TAsCellTypeComponents, T as TableActionsState, a as ConfirmOptions, d as PresetConfig, h as RowActionsConfig, p as ReactiveTableState, t as ActionResult, u as NavKeyOptions, w as TVueTableActionInfo } from "./types-B6N5NDx_.cjs";
2
2
  import * as vue from "vue";
3
3
  import { AllowedComponentProps, AnchorHTMLAttributes, App, Component as Component$1, ComponentCustomProps, ComponentPublicInstance, ComputedRef, DefineComponent, InjectionKey, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef, UnwrapRef, VNode, VNodeProps, WritableComputedRef } from "vue";
4
4
  import { Client, PageResult } from "@atscript/db-client";
@@ -6,7 +6,7 @@ import { FilterExpr, Uniquery } from "@uniqu/core";
6
6
  import * as _atscript_ui0 from "@atscript/ui";
7
7
  import { ClientFactory, ClientFactory as ClientFactory$1, ColumnDef, SortControl, TableDef, getDefaultClientFactory, resetDefaultClientFactory, setDefaultClientFactory } from "@atscript/ui";
8
8
  import * as _atscript_ui_table0 from "@atscript/ui-table";
9
- import { AppConfData, AppConfData as AppConfData$1, AsPresetEntryRow, AsPresetEntryRow as AsPresetEntryRow$1, ColumnWidthsMap, CsvOptions, CsvOptions as CsvOptions$1, DisplayColumnDef, DisplayColumnDef as DisplayColumnDef$1, ExportAbortError, ExportScalar, ExportScalar as ExportScalar$1, FilterCondition, PRESET_ASPECTS, PresetAspect, PresetAspect as PresetAspect$1, PresetCapabilities, PresetCapabilities as PresetCapabilities$1, PresetData, PresetDraft, PresetSnapshot, PresetSnapshot as PresetSnapshot$1, PresetSnapshotWire, QueryOptions, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionMode, SystemPreset, SystemPreset as SystemPreset$1, SystemPresetInput, SystemPresetInput as SystemPresetInput$1, UrlQuerySync, UrlQuerySync as UrlQuerySync$1, UserConfData, isSystemPresetId, resolveSystemPresets } from "@atscript/ui-table";
9
+ import { AppConfData, AppConfData as AppConfData$1, AsPresetEntryRow, AsPresetEntryRow as AsPresetEntryRow$1, ColumnWidthsMap, CsvOptions, CsvOptions as CsvOptions$1, DisplayColumnDef, DisplayColumnDef as DisplayColumnDef$1, ExportAbortError, ExportScalar, ExportScalar as ExportScalar$1, FilterCondition, PRESET_ASPECTS, PresetAspect, PresetAspect as PresetAspect$1, PresetCapabilities, PresetCapabilities as PresetCapabilities$1, PresetData, PresetDraft, PresetSnapshot, PresetSnapshot as PresetSnapshot$1, PresetSnapshotWire, QueryOptions, STANDARD_PRESET_ID, SYSTEM_PRESET_PREFIX, SelectionMode, SystemPreset, SystemPreset as SystemPreset$1, SystemPresetInput, SystemPresetInput as SystemPresetInput$1, UnsupportedFilter, UrlQuerySync, UrlQuerySync as UrlQuerySync$1, UserConfData, isSystemPresetId, resolveSystemPresets } from "@atscript/ui-table";
10
10
  import { TAsTypeComponents } from "@atscript/vue-form";
11
11
 
12
12
  //#region src/composables/state/create-selection.d.ts
@@ -278,6 +278,14 @@ interface TableQueryOptions {
278
278
  * behaviour). Static — captured at setup; to change sync, re-mount.
279
279
  */
280
280
  urlQuerySync?: UrlQuerySync;
281
+ /**
282
+ * Receives each piece of a restored URL's filter that field filters cannot
283
+ * express (a cross-field OR, an unknown operator, …) and that was left out
284
+ * of the restored state — the table then shows a broader result than the
285
+ * link described. When omitted, each one is reported with a dev-mode
286
+ * `console.warn`. Since 0.1.139.
287
+ */
288
+ onUnsupportedFilter?: (issue: UnsupportedFilter) => void;
281
289
  }
282
290
  interface TableWindowOptions {
283
291
  /** Page-alignment unit for `loadRange` and the `queryNext` extension. */
@@ -543,6 +551,12 @@ interface UseTableOptions {
543
551
  * Default (omitted): full sync.
544
552
  */
545
553
  urlQuerySync?: UrlQuerySync;
554
+ /**
555
+ * Receives each piece of a restored URL's filter that was left out because
556
+ * field filters cannot express it — see `TableQueryOptions.onUnsupportedFilter`.
557
+ * Since 0.1.139.
558
+ */
559
+ onUnsupportedFilter?: (issue: UnsupportedFilter) => void;
546
560
  /**
547
561
  * Preset feature config — opt-in. Omit to disable presets entirely
548
562
  * (`<AsPresetPicker>` / `<AsPresetDialog>` render nothing). When set,
@@ -2176,7 +2190,8 @@ interface UseTableUrlQueryOptions {
2176
2190
  * write therefore agree in both directions: a key the parser ignores (a host
2177
2191
  * flag, an unrecognised `$control`) is never removed, and a key the parser
2178
2192
  * reads is the bridge's to remove. Every write merges into the current
2179
- * `route.query`, in place.
2193
+ * `route.query`: foreign keys stay where they are, the table's own keys are
2194
+ * written as one block in the table's order.
2180
2195
  *
2181
2196
  * Without a `prefix` the bridge cannot tell a plain `field=value` filter from
2182
2197
  * a page-owned flag of the same shape, so a plain key that was already in the
@@ -2527,9 +2542,11 @@ declare const __VLS_base: vue.DefineComponent<__VLS_PublicProps, {
2527
2542
  } & {
2528
2543
  action: (action: TVueTableActionInfo, ids: unknown[], result: ActionResult, event?: MouseEvent | KeyboardEvent | undefined) => any;
2529
2544
  "main-action": (row: Record<string, unknown>, absIndex: number, event: MouseEvent | KeyboardEvent) => any;
2545
+ "unsupported-filter": (issue: UnsupportedFilter) => any;
2530
2546
  }, string, vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
2531
2547
  onAction?: ((action: TVueTableActionInfo, ids: unknown[], result: ActionResult, event?: MouseEvent | KeyboardEvent | undefined) => any) | undefined;
2532
2548
  "onMain-action"?: ((row: Record<string, unknown>, absIndex: number, event: MouseEvent | KeyboardEvent) => any) | undefined;
2549
+ "onUnsupported-filter"?: ((issue: UnsupportedFilter) => any) | undefined;
2533
2550
  "onUpdate:filterFields"?: ((value: string[]) => any) | undefined;
2534
2551
  "onUpdate:columnNames"?: ((value: string[]) => any) | undefined;
2535
2552
  "onUpdate:columnWidths"?: ((value: ColumnWidthsMap) => any) | undefined;
@@ -1,8 +1,8 @@
1
- const require_use_table_state = require("./use-table-state-CoVe_8NI.cjs");
2
- const require_use_table_component = require("./use-table-component-DIWiP_Vs.cjs");
3
- const require_as_table_header_cell = require("./as-table-header-cell-CiRLNVJz.cjs");
4
- const require_as_row_actions = require("./as-row-actions-CAiCfw8d.cjs");
5
- const require_as_table_cell_value = require("./as-table-cell-value-BAi5yadc.cjs");
1
+ const require_use_table_state = require("./use-table-state-Cnxv0w_E.cjs");
2
+ const require_use_table_component = require("./use-table-component-DbQDINoa.cjs");
3
+ const require_as_table_header_cell = require("./as-table-header-cell-D7pW2sV3.cjs");
4
+ const require_as_row_actions = require("./as-row-actions-D_TqnP3S.cjs");
5
+ const require_as_table_cell_value = require("./as-table-cell-value-Ct0KnyKc.cjs");
6
6
  let _atscript_ui = require("@atscript/ui");
7
7
  let vue = require("vue");
8
8
  //#region src/composables/use-cell-resolver.ts
@@ -1,8 +1,8 @@
1
- import { o as useTableContextOptional } from "./use-table-state-CqU1N4Q9.mjs";
2
- import { t as useTableComponent } from "./use-table-component-VUFlxIk-.mjs";
3
- import { t as as_table_header_cell_default } from "./as-table-header-cell-Cl8waY_g.mjs";
4
- import { t as as_row_actions_default } from "./as-row-actions-B8YANdb4.mjs";
5
- import { t as as_table_cell_value_default } from "./as-table-cell-value-BVcfhhCb.mjs";
1
+ import { o as useTableContextOptional } from "./use-table-state-BEwXQayO.mjs";
2
+ import { t as useTableComponent } from "./use-table-component-wfU13P3L.mjs";
3
+ import { t as as_table_header_cell_default } from "./as-table-header-cell-CUs-sSBm.mjs";
4
+ import { t as as_row_actions_default } from "./as-row-actions-BvJWHf3j.mjs";
5
+ import { t as as_table_cell_value_default } from "./as-table-cell-value-D1eLiQKJ.mjs";
6
6
  import { UI_TABLE_ATTR, UI_TABLE_CLASSES, UI_TABLE_FN_ATTR, UI_TABLE_FN_CLASSES, UI_TABLE_FN_STYLES, UI_TABLE_STYLES, getFieldMeta, parseStaticAttrs, resolveAttrs, resolveFieldProp } from "@atscript/ui";
7
7
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, withModifiers } from "vue";
8
8
  //#region src/composables/use-cell-resolver.ts
package/dist/as-table.cjs CHANGED
@@ -1,2 +1,2 @@
1
- const require_as_table = require("./as-table-QoXP-NZr.cjs");
1
+ const require_as_table = require("./as-table-CVD1zLva.cjs");
2
2
  module.exports = require_as_table.as_table_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-table.vue-BSKifGzD.cjs";
1
+ import { t as _default } from "./as-table.vue-BuZGgKuM.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-table.vue-emq84QmP.mjs";
1
+ import { t as _default } from "./as-table.vue-CPfERNtx.mjs";
2
2
  export { _default as default };
package/dist/as-table.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as as_table_default } from "./as-table-BAoJ60tx.mjs";
1
+ import { t as as_table_default } from "./as-table-D5mMZKKg.mjs";
2
2
  export { as_table_default as default };
@@ -1,6 +1,6 @@
1
- import { _ as RowClassHook, b as RowSelectableHook, g as RowAttrsHook, m as RowActionsColumnPlacement, r as ColumnMenuConfig, v as RowDeleteOpt } from "./types-CsgAGRfG.mjs";
2
- import { ColumnDef } from "@atscript/ui";
1
+ import { _ as RowClassHook, b as RowSelectableHook, g as RowAttrsHook, m as RowActionsColumnPlacement, r as ColumnMenuConfig, v as RowDeleteOpt } from "./types-B6N5NDx_.cjs";
3
2
  import * as vue from "vue";
3
+ import { ColumnDef } from "@atscript/ui";
4
4
  import { SelectionMode } from "@atscript/ui-table";
5
5
 
6
6
  //#region src/components/as-table.vue.d.ts
@@ -1,6 +1,6 @@
1
- import { _ as RowClassHook, b as RowSelectableHook, g as RowAttrsHook, m as RowActionsColumnPlacement, r as ColumnMenuConfig, v as RowDeleteOpt } from "./types-DvWLY5zQ.cjs";
2
- import * as vue from "vue";
1
+ import { _ as RowClassHook, b as RowSelectableHook, g as RowAttrsHook, m as RowActionsColumnPlacement, r as ColumnMenuConfig, v as RowDeleteOpt } from "./types-CgdpcJdd.mjs";
3
2
  import { ColumnDef } from "@atscript/ui";
3
+ import * as vue from "vue";
4
4
  import { SelectionMode } from "@atscript/ui-table";
5
5
 
6
6
  //#region src/components/as-table.vue.d.ts
@@ -1,9 +1,9 @@
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_get_cell_value = require("./get-cell-value-CJT4fk4y.cjs");
3
3
  const require_use_table_selection = require("./use-table-selection-DtCV3rhu.cjs");
4
4
  const require_use_has_emit_listener = require("./use-has-emit-listener-BaGFZDyM.cjs");
5
- const require_use_table_column_handlers = require("./use-table-column-handlers-r47WDxEh.cjs");
6
- const require_as_table_status = require("./as-table-status-B2O3hLGg.cjs");
5
+ const require_use_table_column_handlers = require("./use-table-column-handlers-Do0Z-R9D.cjs");
6
+ const require_as_table_status = require("./as-table-status-B-MjDXNZ.cjs");
7
7
  let vue = require("vue");
8
8
  let _atscript_ui_table = require("@atscript/ui-table");
9
9
  let _vueuse_core = require("@vueuse/core");
@@ -1,9 +1,9 @@
1
- import { a as useTableContext, i as useRegisterMainActionListener, p as onSelectControlKeydown } from "./use-table-state-CqU1N4Q9.mjs";
1
+ import { a as useTableContext, i as useRegisterMainActionListener, m as onSelectControlKeydown } from "./use-table-state-BEwXQayO.mjs";
2
2
  import { t as getCellValue } from "./get-cell-value-Cb3X8nUn.mjs";
3
3
  import { t as useSelectModeReset } from "./use-table-selection-ULbKT2xW.mjs";
4
4
  import { t as useHasEmitListener } from "./use-has-emit-listener-DrBbsLHQ.mjs";
5
- import { n as useRowActionsColumn, t as useTableColumnHandlers } from "./use-table-column-handlers-DGn4ZW9j.mjs";
6
- import { a as useCellComponents, i as useRafBatch, n as as_table_header_default, o as useCellResolver, r as as_table_colgroup_default, t as as_table_status_default } from "./as-table-status-aebsG7bR.mjs";
5
+ import { n as useRowActionsColumn, t as useTableColumnHandlers } from "./use-table-column-handlers-eKHCfUm_.mjs";
6
+ import { a as useCellComponents, i as useRafBatch, n as as_table_header_default, o as useCellResolver, r as as_table_colgroup_default, t as as_table_status_default } from "./as-table-status-D08b0cqn.mjs";
7
7
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, unref, useSlots, watch, withCtx, withModifiers } from "vue";
8
8
  import { DEFAULT_ROW_HEIGHT_PX, clampTopIndex, filledFilterCount } from "@atscript/ui-table";
9
9
  import { useElementSize, useResizeObserver } from "@vueuse/core";
@@ -1,2 +1,2 @@
1
- const require_as_window_table = require("./as-window-table-DS30wumm.cjs");
1
+ const require_as_window_table = require("./as-window-table-BfSud7yB.cjs");
2
2
  module.exports = require_as_window_table.as_window_table_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-window-table.vue-DJNJ-6dd.cjs";
1
+ import { t as _default } from "./as-window-table.vue-BIjQuSie.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-window-table.vue-DUJgZDXy.mjs";
1
+ import { t as _default } from "./as-window-table.vue-3egLvwAy.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_window_table_default } from "./as-window-table-ByTXS8yA.mjs";
1
+ import { t as as_window_table_default } from "./as-window-table-CjYMF0aX.mjs";
2
2
  export { as_window_table_default as default };
@@ -1,4 +1,4 @@
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-DvWLY5zQ.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-CgdpcJdd.mjs";
2
2
  import * as vue from "vue";
3
3
  import { SelectionMode } from "@atscript/ui-table";
4
4
 
@@ -1,4 +1,4 @@
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-CsgAGRfG.mjs";
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
 
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-CW8-zoag.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-DS30wumm.cjs");
23
- const require_as_filter_field = require("./as-filter-field-bVIXoH3j.cjs");
24
- const require_as_filters = require("./as-filters-Dx8WkGiA.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-QoXP-NZr.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 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-DvWLY5zQ.cjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-oxyikRAt.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-Dze91qga.cjs";
6
- import { t as _default$15 } from "./as-table.vue-BSKifGzD.cjs";
7
- import { t as _default$20 } from "./as-window-table.vue-DJNJ-6dd.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-CgvDp7JK.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-C49h8PpE.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-BjgxfKhi.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 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-CsgAGRfG.mjs";
4
- import { t as _default$16 } from "./as-table-actions.vue-BTGQnFH_.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-DnOHVQtA.mjs";
6
- import { t as _default$15 } from "./as-table.vue-emq84QmP.mjs";
7
- import { t as _default$20 } from "./as-window-table.vue-DUJgZDXy.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-SRkxrvo_.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-BCgHsU18.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-zGeuzm3w.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-Dis7tkN_.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-ByTXS8yA.mjs";
22
- import { t as as_filter_field_default } from "./as-filter-field-BKoxTudl.mjs";
23
- import { t as as_filters_default } from "./as-filters-CxVy00LQ.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-BAoJ60tx.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 {
@@ -413,7 +413,10 @@ type TAsCellTypeComponents = {
413
413
  * @since 0.1.137
414
414
  */
415
415
  interface ApplyUrlQueryOptions {
416
- /** `"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
+ */
417
420
  mode?: "merge" | "replace";
418
421
  }
419
422
  /**
@@ -668,13 +671,21 @@ interface ReactiveTableState extends TableStateMethods {
668
671
  * bridge's own emissions. Does NOT call `query()` — root watchers refetch in
669
672
  * reaction to the writes.
670
673
  *
671
- * `mode` decides what happens to filters and sorters the URL does NOT
672
- * mention (search and pagination always take the URL's value):
673
- * - `"merge"` (default) — they survive. This is mount-time deep-link
674
- * hydration, where the URL overlays a preset baseline it must not wipe.
675
- * - `"replace"` (since 0.1.137) — they are cleared, within whatever the
676
- * `urlQuerySync` gates actually serialize. This is history navigation,
677
- * 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.
678
689
  */
679
690
  applyUrlQuery: (urlString: string, opts?: ApplyUrlQueryOptions) => void;
680
691
  /**