@atscript/vue-table 0.1.133 → 0.1.135

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 (153) 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-DiS37BYK.cjs → as-action-menu-content-D8VzLK9e.cjs} +1 -1
  4. package/dist/{as-action-menu-content-4D7CJNgr.mjs → as-action-menu-content-qATZy3cu.mjs} +1 -1
  5. package/dist/{as-cell-array-2qmJ1lT2.mjs → as-cell-array-BWHkJX3I.mjs} +2 -2
  6. package/dist/{as-cell-array-iPeUnk2G.cjs → as-cell-array-D-8Pqlgo.cjs} +2 -2
  7. package/dist/as-cell-array.cjs +1 -1
  8. package/dist/as-cell-array.mjs +1 -1
  9. package/dist/{as-cell-date-DyixWKuS.cjs → as-cell-date-DviMJEqs.cjs} +2 -2
  10. package/dist/{as-cell-date-BwFgi6O0.mjs → as-cell-date-mGlnDeLP.mjs} +2 -2
  11. package/dist/as-cell-date.cjs +1 -1
  12. package/dist/as-cell-date.mjs +1 -1
  13. package/dist/{as-cell-json--95Xq6yq.mjs → as-cell-json-2I081xnO.mjs} +2 -2
  14. package/dist/{as-cell-json-Bvv2P7YV.cjs → as-cell-json-CaVB6e7V.cjs} +2 -2
  15. package/dist/as-cell-json.cjs +1 -1
  16. package/dist/as-cell-json.mjs +1 -1
  17. package/dist/{as-cell-number-DuPMOesI.cjs → as-cell-number-BnYbxOiG.cjs} +2 -2
  18. package/dist/{as-cell-number-DKRaS9pM.mjs → as-cell-number-CP2AZI9g.mjs} +2 -2
  19. package/dist/as-cell-number.cjs +1 -1
  20. package/dist/as-cell-number.mjs +1 -1
  21. package/dist/{as-cell-union-DJNsEKTi.cjs → as-cell-union-BjMP91PS.cjs} +3 -3
  22. package/dist/{as-cell-union-C9FukGqF.mjs → as-cell-union-NHpDCXty.mjs} +3 -3
  23. package/dist/as-cell-union.cjs +1 -1
  24. package/dist/as-cell-union.mjs +1 -1
  25. package/dist/as-column-menu.cjs +1 -1
  26. package/dist/as-column-menu.d.cts +1 -1
  27. package/dist/as-column-menu.d.mts +1 -1
  28. package/dist/as-column-menu.mjs +1 -1
  29. package/dist/{as-column-menu.vue-Cuelpv3p.d.mts → as-column-menu.vue-BaIGUOhP.d.mts} +1 -1
  30. package/dist/{as-column-menu.vue-CZ8XqHl0.d.cts → as-column-menu.vue-CDlI4-Cz.d.cts} +1 -1
  31. package/dist/{as-config-dialog-BKsm8OHR.mjs → as-config-dialog-BMQxSqzl.mjs} +31 -15
  32. package/dist/{as-config-dialog-Bt8oP8qg.cjs → as-config-dialog-CP362FP3.cjs} +31 -15
  33. package/dist/as-config-dialog.cjs +1 -1
  34. package/dist/as-config-dialog.mjs +1 -1
  35. package/dist/{as-confirm-dialog-Cw7KErhz.cjs → as-confirm-dialog-D41XaN_P.cjs} +1 -1
  36. package/dist/{as-confirm-dialog-BV01t7dn.mjs → as-confirm-dialog-Dp_njNXz.mjs} +1 -1
  37. package/dist/as-confirm-dialog.cjs +1 -1
  38. package/dist/as-confirm-dialog.mjs +1 -1
  39. package/dist/{as-filter-dialog-Bxii-mYH.cjs → as-filter-dialog-BCUqpKPd.cjs} +9 -9
  40. package/dist/{as-filter-dialog-Ckrl79kU.mjs → as-filter-dialog-kAXGDwsk.mjs} +9 -9
  41. package/dist/as-filter-dialog.cjs +1 -1
  42. package/dist/as-filter-dialog.mjs +1 -1
  43. package/dist/{as-filter-field-xBr6TtKo.cjs → as-filter-field-D3jSbSwB.cjs} +3 -3
  44. package/dist/{as-filter-field-C-IFnj8K.mjs → as-filter-field-WnV2axh8.mjs} +3 -3
  45. package/dist/as-filter-field.cjs +1 -1
  46. package/dist/as-filter-field.mjs +1 -1
  47. package/dist/as-filter-input.cjs +1 -1
  48. package/dist/as-filter-input.mjs +1 -1
  49. package/dist/{as-filters-DJEQj7_p.mjs → as-filters-Bc44srvA.mjs} +3 -3
  50. package/dist/{as-filters-DuCk8nkk.cjs → as-filters-Dp93OWRS.cjs} +3 -3
  51. package/dist/as-filters.cjs +1 -1
  52. package/dist/as-filters.mjs +1 -1
  53. package/dist/{as-preset-dialog-CCIacZ2C.mjs → as-preset-dialog-Bx4nRuyk.mjs} +3 -3
  54. package/dist/{as-preset-dialog-jZeyXJeJ.cjs → as-preset-dialog-pusPD935.cjs} +3 -3
  55. package/dist/as-preset-dialog.cjs +1 -1
  56. package/dist/as-preset-dialog.mjs +1 -1
  57. package/dist/{as-preset-picker-DGSqQl9A.mjs → as-preset-picker-BRQdflJz.mjs} +54 -50
  58. package/dist/{as-preset-picker-4xXU1KQz.cjs → as-preset-picker-nAx3MYl7.cjs} +54 -50
  59. package/dist/as-preset-picker.cjs +1 -1
  60. package/dist/as-preset-picker.mjs +1 -1
  61. package/dist/{as-row-actions-B_OHWIAt.cjs → as-row-actions-PD-sFmDs.cjs} +24 -11
  62. package/dist/{as-row-actions-pukI1JT7.mjs → as-row-actions-gxmuZkYI.mjs} +24 -11
  63. package/dist/as-row-actions.cjs +1 -1
  64. package/dist/as-row-actions.d.cts +1 -1
  65. package/dist/as-row-actions.d.mts +1 -1
  66. package/dist/as-row-actions.mjs +1 -1
  67. package/dist/{as-row-actions.vue-DUSDuoR2.d.mts → as-row-actions.vue-AXXt5kQS.d.mts} +8 -0
  68. package/dist/{as-row-actions.vue-Bvcc2tUN.d.cts → as-row-actions.vue-D0MXQoeg.d.cts} +8 -0
  69. package/dist/{as-table-D5_bQ0p5.mjs → as-table-BIV1W3O9.mjs} +6 -6
  70. package/dist/{as-table-actions-DKYK_mTO.mjs → as-table-actions-DQ5Nn8Jc.mjs} +14 -9
  71. package/dist/{as-table-actions-qb0gQz2D.cjs → as-table-actions-D_PUqMYy.cjs} +14 -9
  72. package/dist/as-table-actions.cjs +1 -1
  73. package/dist/as-table-actions.d.cts +1 -1
  74. package/dist/as-table-actions.d.mts +1 -1
  75. package/dist/as-table-actions.mjs +1 -1
  76. package/dist/{as-table-actions.vue-CckRRsL6.d.cts → as-table-actions.vue-iKw4tsJh.d.cts} +2 -2
  77. package/dist/{as-table-actions.vue-DsqauvXR.d.mts → as-table-actions.vue-kndyFTyi.d.mts} +2 -2
  78. package/dist/{as-table-base-Dfw012G5.cjs → as-table-base-M6_12pPq.cjs} +3 -3
  79. package/dist/{as-table-base-B0arhJI8.mjs → as-table-base-kHOKCI7T.mjs} +3 -3
  80. package/dist/{as-table-cell-value-D1JkTQt0.cjs → as-table-cell-value-BAi5yadc.cjs} +2 -2
  81. package/dist/{as-table-cell-value-CPcFxSOj.mjs → as-table-cell-value-BVcfhhCb.mjs} +2 -2
  82. package/dist/as-table-cell-value.cjs +1 -1
  83. package/dist/as-table-cell-value.mjs +1 -1
  84. package/dist/{as-table-header-cell-q-c_QklI.mjs → as-table-header-cell-CZyy4q1s.mjs} +2 -2
  85. package/dist/{as-table-header-cell-Bb4ddLmQ.cjs → as-table-header-cell-Ct_GPLVu.cjs} +2 -2
  86. package/dist/as-table-header-cell.cjs +1 -1
  87. package/dist/as-table-header-cell.d.cts +1 -1
  88. package/dist/as-table-header-cell.d.mts +1 -1
  89. package/dist/as-table-header-cell.mjs +1 -1
  90. package/dist/{as-table-header-cell.vue-BjVOEFqz.d.mts → as-table-header-cell.vue-BNsOEsof.d.mts} +1 -1
  91. package/dist/{as-table-header-cell.vue-qS1Xfc-U.d.cts → as-table-header-cell.vue-DqjorECQ.d.cts} +1 -1
  92. package/dist/{as-table-root-Bpsrp0Vz.mjs → as-table-root-DGYw0kPC.mjs} +111 -9
  93. package/dist/{as-table-root-CUDO9ybm.cjs → as-table-root-EyN1JHuS.cjs} +111 -9
  94. package/dist/as-table-root.cjs +1 -1
  95. package/dist/as-table-root.d.cts +1 -1
  96. package/dist/as-table-root.d.mts +1 -1
  97. package/dist/as-table-root.mjs +1 -1
  98. package/dist/{as-table-root.vue-szvjZsCn.d.cts → as-table-root.vue-D0XFmTEL.d.mts} +201 -28
  99. package/dist/{as-table-root.vue-BPU92_Ns.d.mts → as-table-root.vue-Do0j4ibu.d.cts} +202 -29
  100. package/dist/{as-table-status-B9jlzPPV.mjs → as-table-status-CYzRbU71.mjs} +5 -5
  101. package/dist/{as-table-status-BgDexT2x.cjs → as-table-status-DMFZuZfJ.cjs} +5 -5
  102. package/dist/{as-table-BejpMVid.cjs → as-table-ucLFACn0.cjs} +6 -6
  103. package/dist/as-table.cjs +1 -1
  104. package/dist/as-table.d.cts +1 -1
  105. package/dist/as-table.d.mts +1 -1
  106. package/dist/as-table.mjs +1 -1
  107. package/dist/{as-table.vue-4WhMA8AM.d.mts → as-table.vue-Dl0nGtMF.d.mts} +5 -5
  108. package/dist/{as-table.vue-_urybtQj.d.cts → as-table.vue-QQ1aXpJC.d.cts} +5 -5
  109. package/dist/{as-window-table-S1XWpDHQ.mjs → as-window-table-B9Y4Xgwm.mjs} +11 -7
  110. package/dist/{as-window-table-CXq6UuUx.cjs → as-window-table-Bxq7cYW5.cjs} +11 -7
  111. package/dist/as-window-table.cjs +1 -1
  112. package/dist/as-window-table.d.cts +1 -1
  113. package/dist/as-window-table.d.mts +1 -1
  114. package/dist/as-window-table.mjs +1 -1
  115. package/dist/{as-window-table.vue-h1bdyMv7.d.cts → as-window-table.vue-CdfbFgGs.d.mts} +4 -4
  116. package/dist/{as-window-table.vue-CWsJvOkL.d.mts → as-window-table.vue-avZGJlCe.d.cts} +4 -4
  117. package/dist/index.cjs +193 -29
  118. package/dist/index.d.cts +9 -9
  119. package/dist/index.d.mts +9 -9
  120. package/dist/index.mjs +186 -31
  121. package/dist/{types-BZ0HssRY.d.cts → types-CyAmAg10.d.cts} +147 -2
  122. package/dist/{types-CXz-4dPz.d.mts → types-yS6-QFfT.d.mts} +147 -2
  123. package/dist/{use-table-Bk-jSxOM.mjs → use-table-BVptAnaS.mjs} +23 -13
  124. package/dist/{use-table-CdFFqaEx.cjs → use-table-Bm2a0g9D.cjs} +28 -12
  125. package/dist/{use-table-component-DlLganVc.cjs → use-table-component-Bpy5mg_P.cjs} +1 -1
  126. package/dist/{use-table-component-KuzZxAP8.mjs → use-table-component-DYzKgCC4.mjs} +1 -1
  127. package/dist/{use-table-nav-bridge-B9SSEajW.mjs → use-table-nav-bridge-LCL6vq9F.mjs} +1 -1
  128. package/dist/{use-table-nav-bridge-CVUmTjDr.cjs → use-table-nav-bridge-qyvyRm6S.cjs} +1 -1
  129. package/dist/{use-table-state-DLJbW753.mjs → use-table-state-CwfgWmuk.mjs} +222 -52
  130. package/dist/{use-table-state-D6dHOFrA.cjs → use-table-state-jljSQQ8m.cjs} +226 -56
  131. package/package.json +4 -4
  132. /package/dist/{as-cell-json-popover-Dkdv5Y9E.mjs → as-cell-json-popover-CH5bAcLE.mjs} +0 -0
  133. /package/dist/{as-cell-json-popover-BM2QLgfk.cjs → as-cell-json-popover-vty5vMjW.cjs} +0 -0
  134. /package/dist/{as-column-menu-kTIQfLTi.mjs → as-column-menu-BMTS3DO2.mjs} +0 -0
  135. /package/dist/{as-column-menu-fZVbJ9lU.cjs → as-column-menu-D_8NxujZ.cjs} +0 -0
  136. /package/dist/{as-filter-input-BM23TNeh.mjs → as-filter-input-C8KmOus8.mjs} +0 -0
  137. /package/dist/{as-filter-input-DJu2k9gO.cjs → as-filter-input-DUqpkTkg.cjs} +0 -0
  138. /package/dist/{error-message-CglODWl4.cjs → error-message-CfKpn_5w.cjs} +0 -0
  139. /package/dist/{error-message-hPSAu8Ug.mjs → error-message-gNEXnnbb.mjs} +0 -0
  140. /package/dist/{format-cell-D1Ziv96Q.mjs → format-cell-Bx7wNc4X.mjs} +0 -0
  141. /package/dist/{format-cell-vCNTh4WZ.cjs → format-cell-DaxV6WIJ.cjs} +0 -0
  142. /package/dist/{get-cell-value-4rHKP-TG.cjs → get-cell-value-CJT4fk4y.cjs} +0 -0
  143. /package/dist/{get-cell-value-C8LLc_Rr.mjs → get-cell-value-Cb3X8nUn.mjs} +0 -0
  144. /package/dist/{use-cell-locale-MQXoONh5.mjs → use-cell-locale-CxQOQsns.mjs} +0 -0
  145. /package/dist/{use-cell-locale-BGBRQB7s.cjs → use-cell-locale-caG2Fzpc.cjs} +0 -0
  146. /package/dist/{use-has-emit-listener-hhOH8CBI.cjs → use-has-emit-listener-BaGFZDyM.cjs} +0 -0
  147. /package/dist/{use-has-emit-listener-BTMDIv2e.mjs → use-has-emit-listener-DrBbsLHQ.mjs} +0 -0
  148. /package/dist/{use-seed-on-open-Dg9I89fU.cjs → use-seed-on-open-9TSm1Vbv.cjs} +0 -0
  149. /package/dist/{use-seed-on-open-DO3A1kIb.mjs → use-seed-on-open-DSh4XFyp.mjs} +0 -0
  150. /package/dist/{use-table-column-handlers-ehreEzcx.cjs → use-table-column-handlers-BMrP0WY2.cjs} +0 -0
  151. /package/dist/{use-table-column-handlers-CpiiIniD.mjs → use-table-column-handlers-Bx3JERqs.mjs} +0 -0
  152. /package/dist/{use-table-selection-Cmiu1h4S.cjs → use-table-selection-DtCV3rhu.cjs} +0 -0
  153. /package/dist/{use-table-selection-C84z4OZy.mjs → use-table-selection-ULbKT2xW.mjs} +0 -0
@@ -1,6 +1,6 @@
1
- import { a as useTableContext, c as ASPECT_ICONS, d as readPresetLabel, l as ASPECT_LABELS, u as ownerNameOf } from "./use-table-state-DLJbW753.mjs";
2
- import { t as useSeedOnOpen } from "./use-seed-on-open-DO3A1kIb.mjs";
3
- import { t as errorMessage } from "./error-message-hPSAu8Ug.mjs";
1
+ import { a as useTableContext, c as ASPECT_ICONS, d as readPresetLabel, l as ASPECT_LABELS, u as ownerNameOf } from "./use-table-state-CwfgWmuk.mjs";
2
+ import { t as useSeedOnOpen } from "./use-seed-on-open-DSh4XFyp.mjs";
3
+ import { t as errorMessage } from "./error-message-gNEXnnbb.mjs";
4
4
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, nextTick, normalizeClass, openBlock, ref, renderList, toDisplayString, unref, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
5
5
  import { isSystemPresetId, setsEqual } from "@atscript/ui-table";
6
6
  import { DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "reka-ui";
@@ -1,6 +1,6 @@
1
- const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
- const require_use_seed_on_open = require("./use-seed-on-open-Dg9I89fU.cjs");
3
- const require_error_message = require("./error-message-CglODWl4.cjs");
1
+ const require_use_table_state = require("./use-table-state-jljSQQ8m.cjs");
2
+ const require_use_seed_on_open = require("./use-seed-on-open-9TSm1Vbv.cjs");
3
+ const require_error_message = require("./error-message-CfKpn_5w.cjs");
4
4
  let vue = require("vue");
5
5
  let _atscript_ui_table = require("@atscript/ui-table");
6
6
  let reka_ui = require("reka-ui");
@@ -1,2 +1,2 @@
1
- const require_as_preset_dialog = require("./as-preset-dialog-jZeyXJeJ.cjs");
1
+ const require_as_preset_dialog = require("./as-preset-dialog-pusPD935.cjs");
2
2
  module.exports = require_as_preset_dialog.as_preset_dialog_default;
@@ -1,2 +1,2 @@
1
- import { t as as_preset_dialog_default } from "./as-preset-dialog-CCIacZ2C.mjs";
1
+ import { t as as_preset_dialog_default } from "./as-preset-dialog-Bx4nRuyk.mjs";
2
2
  export { as_preset_dialog_default as default };
@@ -1,5 +1,5 @@
1
- import { a as useTableContext, c as ASPECT_ICONS, d as readPresetLabel, l as ASPECT_LABELS, u as ownerNameOf } from "./use-table-state-DLJbW753.mjs";
2
- import { t as errorMessage } from "./error-message-hPSAu8Ug.mjs";
1
+ import { a as useTableContext, c as ASPECT_ICONS, d as readPresetLabel, l as ASPECT_LABELS, u as ownerNameOf } from "./use-table-state-CwfgWmuk.mjs";
2
+ import { t as errorMessage } from "./error-message-gNEXnnbb.mjs";
3
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, h, nextTick, normalizeClass, onScopeDispose, openBlock, ref, renderList, shallowRef, toDisplayString, unref, vModelCheckbox, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
4
4
  import { isSystemPresetId } from "@atscript/ui-table";
5
5
  import { DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuTrigger } from "reka-ui";
@@ -28,13 +28,14 @@ const _hoisted_7 = {
28
28
  };
29
29
  const _hoisted_8 = { class: "as-preset-picker-item-aspects" };
30
30
  const _hoisted_9 = ["data-on", "title"];
31
- const _hoisted_10 = { class: "as-preset-picker-popover-field" };
32
- const _hoisted_11 = ["onKeydown"];
33
- const _hoisted_12 = { class: "as-preset-picker-popover-aspects" };
34
- const _hoisted_13 = ["checked", "onChange"];
35
- const _hoisted_14 = { class: "as-preset-picker-popover-public" };
36
- const _hoisted_15 = { class: "as-preset-picker-popover-footer" };
37
- const _hoisted_16 = ["disabled"];
31
+ const _hoisted_10 = { class: "as-preset-picker-popover-body" };
32
+ const _hoisted_11 = { class: "as-preset-picker-popover-field" };
33
+ const _hoisted_12 = ["onKeydown"];
34
+ const _hoisted_13 = { class: "as-preset-picker-popover-aspects" };
35
+ const _hoisted_14 = ["checked", "onChange"];
36
+ const _hoisted_15 = { class: "as-preset-picker-popover-public" };
37
+ const _hoisted_16 = { class: "as-preset-picker-popover-footer" };
38
+ const _hoisted_17 = ["disabled"];
38
39
  //#endregion
39
40
  //#region src/components/as-preset-picker.vue
40
41
  var as_preset_picker_default = /* @__PURE__ */ defineComponent({
@@ -386,48 +387,51 @@ var as_preset_picker_default = /* @__PURE__ */ defineComponent({
386
387
  onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers(() => {}, ["stop"]), ["tab"]))
387
388
  }, [
388
389
  _cache[16] || (_cache[16] = createElementVNode("h3", { class: "as-preset-picker-popover-title" }, "Save as new preset", -1)),
389
- createElementVNode("div", _hoisted_10, [_cache[11] || (_cache[11] = createElementVNode("label", {
390
- class: "as-preset-picker-popover-label",
391
- for: "as-preset-picker-label"
392
- }, "Name", -1)), withDirectives(createElementVNode("input", {
393
- id: "as-preset-picker-label",
394
- ref_key: "saveAsInputRef",
395
- ref: saveAsInputRef,
396
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => saveAsLabel.value = $event),
397
- class: "as-preset-picker-popover-input",
398
- type: "text",
399
- onKeydown: withKeys(withModifiers(commitSaveAs, ["prevent"]), ["enter"])
400
- }, null, 40, _hoisted_11), [[vModelText, saveAsLabel.value]])]),
401
- createElementVNode("div", _hoisted_12, [_cache[12] || (_cache[12] = createElementVNode("span", { class: "as-preset-picker-popover-label" }, "Save:", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(aspects.value, (a) => {
402
- return openBlock(), createElementBlock("label", {
403
- key: a,
404
- class: "as-preset-picker-popover-aspect"
405
- }, [
406
- createElementVNode("input", {
407
- type: "checkbox",
408
- checked: saveAsAspectsMask.value[a] === true,
409
- onChange: (ev) => toggleAspect(a, ev)
410
- }, null, 40, _hoisted_13),
411
- createElementVNode("span", {
412
- class: normalizeClass([unref(ASPECT_ICONS)[a], "as-preset-picker-popover-aspect-icon"]),
390
+ createCommentVNode(" Only the form body scrolls. The title, the error note and the\n Cancel/Save footer stay pinned, so a short viewport (or a long\n aspect list) can never put the buttons — or the reason a save\n just failed — out of reach behind a scroll. "),
391
+ createElementVNode("div", _hoisted_10, [
392
+ createElementVNode("div", _hoisted_11, [_cache[11] || (_cache[11] = createElementVNode("label", {
393
+ class: "as-preset-picker-popover-label",
394
+ for: "as-preset-picker-label"
395
+ }, "Name", -1)), withDirectives(createElementVNode("input", {
396
+ id: "as-preset-picker-label",
397
+ ref_key: "saveAsInputRef",
398
+ ref: saveAsInputRef,
399
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => saveAsLabel.value = $event),
400
+ class: "as-preset-picker-popover-input",
401
+ type: "text",
402
+ onKeydown: withKeys(withModifiers(commitSaveAs, ["prevent"]), ["enter"])
403
+ }, null, 40, _hoisted_12), [[vModelText, saveAsLabel.value]])]),
404
+ createElementVNode("div", _hoisted_13, [_cache[12] || (_cache[12] = createElementVNode("span", { class: "as-preset-picker-popover-label" }, "Save:", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(aspects.value, (a) => {
405
+ return openBlock(), createElementBlock("label", {
406
+ key: a,
407
+ class: "as-preset-picker-popover-aspect"
408
+ }, [
409
+ createElementVNode("input", {
410
+ type: "checkbox",
411
+ checked: saveAsAspectsMask.value[a] === true,
412
+ onChange: (ev) => toggleAspect(a, ev)
413
+ }, null, 40, _hoisted_14),
414
+ createElementVNode("span", {
415
+ class: normalizeClass([unref(ASPECT_ICONS)[a], "as-preset-picker-popover-aspect-icon"]),
416
+ "aria-hidden": "true"
417
+ }, null, 2),
418
+ createTextVNode(" " + toDisplayString(unref(ASPECT_LABELS)[a]), 1)
419
+ ]);
420
+ }), 128))]),
421
+ unref(state).preset.capabilities.value === null || unref(state).preset.capabilities.value.canPublish ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_cache[15] || (_cache[15] = createElementVNode("div", { class: "as-preset-picker-popover-separator" }, null, -1)), createElementVNode("label", _hoisted_15, [
422
+ withDirectives(createElementVNode("input", {
423
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => saveAsPublic.value = $event),
424
+ type: "checkbox"
425
+ }, null, 512), [[vModelCheckbox, saveAsPublic.value]]),
426
+ _cache[13] || (_cache[13] = createElementVNode("span", {
427
+ class: "i-as-eye-off as-preset-picker-popover-aspect-icon",
413
428
  "aria-hidden": "true"
414
- }, null, 2),
415
- createTextVNode(" " + toDisplayString(unref(ASPECT_LABELS)[a]), 1)
416
- ]);
417
- }), 128))]),
418
- unref(state).preset.capabilities.value === null || unref(state).preset.capabilities.value.canPublish ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_cache[15] || (_cache[15] = createElementVNode("div", { class: "as-preset-picker-popover-separator" }, null, -1)), createElementVNode("label", _hoisted_14, [
419
- withDirectives(createElementVNode("input", {
420
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => saveAsPublic.value = $event),
421
- type: "checkbox"
422
- }, null, 512), [[vModelCheckbox, saveAsPublic.value]]),
423
- _cache[13] || (_cache[13] = createElementVNode("span", {
424
- class: "i-as-eye-off as-preset-picker-popover-aspect-icon",
425
- "aria-hidden": "true"
426
- }, null, -1)),
427
- _cache[14] || (_cache[14] = createTextVNode(" Make public ", -1))
428
- ])], 64)) : createCommentVNode("v-if", true),
429
+ }, null, -1)),
430
+ _cache[14] || (_cache[14] = createTextVNode(" Make public ", -1))
431
+ ])], 64)) : createCommentVNode("v-if", true)
432
+ ]),
429
433
  createVNode(ErrorNote),
430
- createElementVNode("div", _hoisted_15, [createElementVNode("button", {
434
+ createElementVNode("div", _hoisted_16, [createElementVNode("button", {
431
435
  type: "button",
432
436
  class: "as-preset-picker-popover-cancel",
433
437
  onClick: cancelSaveAs
@@ -436,7 +440,7 @@ var as_preset_picker_default = /* @__PURE__ */ defineComponent({
436
440
  class: "as-preset-picker-popover-save",
437
441
  disabled: !saveAsLabel.value.trim(),
438
442
  onClick: commitSaveAs
439
- }, " Save ", 8, _hoisted_16)])
443
+ }, " Save ", 8, _hoisted_17)])
440
444
  ], 32)]),
441
445
  _: 1
442
446
  })], 2112))]),
@@ -1,5 +1,5 @@
1
- const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
- const require_error_message = require("./error-message-CglODWl4.cjs");
1
+ const require_use_table_state = require("./use-table-state-jljSQQ8m.cjs");
2
+ const require_error_message = require("./error-message-CfKpn_5w.cjs");
3
3
  let vue = require("vue");
4
4
  let _atscript_ui_table = require("@atscript/ui-table");
5
5
  let reka_ui = require("reka-ui");
@@ -28,13 +28,14 @@ const _hoisted_7 = {
28
28
  };
29
29
  const _hoisted_8 = { class: "as-preset-picker-item-aspects" };
30
30
  const _hoisted_9 = ["data-on", "title"];
31
- const _hoisted_10 = { class: "as-preset-picker-popover-field" };
32
- const _hoisted_11 = ["onKeydown"];
33
- const _hoisted_12 = { class: "as-preset-picker-popover-aspects" };
34
- const _hoisted_13 = ["checked", "onChange"];
35
- const _hoisted_14 = { class: "as-preset-picker-popover-public" };
36
- const _hoisted_15 = { class: "as-preset-picker-popover-footer" };
37
- const _hoisted_16 = ["disabled"];
31
+ const _hoisted_10 = { class: "as-preset-picker-popover-body" };
32
+ const _hoisted_11 = { class: "as-preset-picker-popover-field" };
33
+ const _hoisted_12 = ["onKeydown"];
34
+ const _hoisted_13 = { class: "as-preset-picker-popover-aspects" };
35
+ const _hoisted_14 = ["checked", "onChange"];
36
+ const _hoisted_15 = { class: "as-preset-picker-popover-public" };
37
+ const _hoisted_16 = { class: "as-preset-picker-popover-footer" };
38
+ const _hoisted_17 = ["disabled"];
38
39
  //#endregion
39
40
  //#region src/components/as-preset-picker.vue
40
41
  var as_preset_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -386,48 +387,51 @@ var as_preset_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({
386
387
  onKeydown: _cache[3] || (_cache[3] = (0, vue.withKeys)((0, vue.withModifiers)(() => {}, ["stop"]), ["tab"]))
387
388
  }, [
388
389
  _cache[16] || (_cache[16] = (0, vue.createElementVNode)("h3", { class: "as-preset-picker-popover-title" }, "Save as new preset", -1)),
389
- (0, vue.createElementVNode)("div", _hoisted_10, [_cache[11] || (_cache[11] = (0, vue.createElementVNode)("label", {
390
- class: "as-preset-picker-popover-label",
391
- for: "as-preset-picker-label"
392
- }, "Name", -1)), (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
393
- id: "as-preset-picker-label",
394
- ref_key: "saveAsInputRef",
395
- ref: saveAsInputRef,
396
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => saveAsLabel.value = $event),
397
- class: "as-preset-picker-popover-input",
398
- type: "text",
399
- onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(commitSaveAs, ["prevent"]), ["enter"])
400
- }, null, 40, _hoisted_11), [[vue.vModelText, saveAsLabel.value]])]),
401
- (0, vue.createElementVNode)("div", _hoisted_12, [_cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-preset-picker-popover-label" }, "Save:", -1)), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(aspects.value, (a) => {
402
- return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
403
- key: a,
404
- class: "as-preset-picker-popover-aspect"
405
- }, [
406
- (0, vue.createElementVNode)("input", {
407
- type: "checkbox",
408
- checked: saveAsAspectsMask.value[a] === true,
409
- onChange: (ev) => toggleAspect(a, ev)
410
- }, null, 40, _hoisted_13),
411
- (0, vue.createElementVNode)("span", {
412
- class: (0, vue.normalizeClass)([(0, vue.unref)(require_use_table_state.ASPECT_ICONS)[a], "as-preset-picker-popover-aspect-icon"]),
390
+ (0, vue.createCommentVNode)(" Only the form body scrolls. The title, the error note and the\n Cancel/Save footer stay pinned, so a short viewport (or a long\n aspect list) can never put the buttons — or the reason a save\n just failed — out of reach behind a scroll. "),
391
+ (0, vue.createElementVNode)("div", _hoisted_10, [
392
+ (0, vue.createElementVNode)("div", _hoisted_11, [_cache[11] || (_cache[11] = (0, vue.createElementVNode)("label", {
393
+ class: "as-preset-picker-popover-label",
394
+ for: "as-preset-picker-label"
395
+ }, "Name", -1)), (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
396
+ id: "as-preset-picker-label",
397
+ ref_key: "saveAsInputRef",
398
+ ref: saveAsInputRef,
399
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => saveAsLabel.value = $event),
400
+ class: "as-preset-picker-popover-input",
401
+ type: "text",
402
+ onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(commitSaveAs, ["prevent"]), ["enter"])
403
+ }, null, 40, _hoisted_12), [[vue.vModelText, saveAsLabel.value]])]),
404
+ (0, vue.createElementVNode)("div", _hoisted_13, [_cache[12] || (_cache[12] = (0, vue.createElementVNode)("span", { class: "as-preset-picker-popover-label" }, "Save:", -1)), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(aspects.value, (a) => {
405
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
406
+ key: a,
407
+ class: "as-preset-picker-popover-aspect"
408
+ }, [
409
+ (0, vue.createElementVNode)("input", {
410
+ type: "checkbox",
411
+ checked: saveAsAspectsMask.value[a] === true,
412
+ onChange: (ev) => toggleAspect(a, ev)
413
+ }, null, 40, _hoisted_14),
414
+ (0, vue.createElementVNode)("span", {
415
+ class: (0, vue.normalizeClass)([(0, vue.unref)(require_use_table_state.ASPECT_ICONS)[a], "as-preset-picker-popover-aspect-icon"]),
416
+ "aria-hidden": "true"
417
+ }, null, 2),
418
+ (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)((0, vue.unref)(require_use_table_state.ASPECT_LABELS)[a]), 1)
419
+ ]);
420
+ }), 128))]),
421
+ (0, vue.unref)(state).preset.capabilities.value === null || (0, vue.unref)(state).preset.capabilities.value.canPublish ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [_cache[15] || (_cache[15] = (0, vue.createElementVNode)("div", { class: "as-preset-picker-popover-separator" }, null, -1)), (0, vue.createElementVNode)("label", _hoisted_15, [
422
+ (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
423
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => saveAsPublic.value = $event),
424
+ type: "checkbox"
425
+ }, null, 512), [[vue.vModelCheckbox, saveAsPublic.value]]),
426
+ _cache[13] || (_cache[13] = (0, vue.createElementVNode)("span", {
427
+ class: "i-as-eye-off as-preset-picker-popover-aspect-icon",
413
428
  "aria-hidden": "true"
414
- }, null, 2),
415
- (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)((0, vue.unref)(require_use_table_state.ASPECT_LABELS)[a]), 1)
416
- ]);
417
- }), 128))]),
418
- (0, vue.unref)(state).preset.capabilities.value === null || (0, vue.unref)(state).preset.capabilities.value.canPublish ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [_cache[15] || (_cache[15] = (0, vue.createElementVNode)("div", { class: "as-preset-picker-popover-separator" }, null, -1)), (0, vue.createElementVNode)("label", _hoisted_14, [
419
- (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
420
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => saveAsPublic.value = $event),
421
- type: "checkbox"
422
- }, null, 512), [[vue.vModelCheckbox, saveAsPublic.value]]),
423
- _cache[13] || (_cache[13] = (0, vue.createElementVNode)("span", {
424
- class: "i-as-eye-off as-preset-picker-popover-aspect-icon",
425
- "aria-hidden": "true"
426
- }, null, -1)),
427
- _cache[14] || (_cache[14] = (0, vue.createTextVNode)(" Make public ", -1))
428
- ])], 64)) : (0, vue.createCommentVNode)("v-if", true),
429
+ }, null, -1)),
430
+ _cache[14] || (_cache[14] = (0, vue.createTextVNode)(" Make public ", -1))
431
+ ])], 64)) : (0, vue.createCommentVNode)("v-if", true)
432
+ ]),
429
433
  (0, vue.createVNode)(ErrorNote),
430
- (0, vue.createElementVNode)("div", _hoisted_15, [(0, vue.createElementVNode)("button", {
434
+ (0, vue.createElementVNode)("div", _hoisted_16, [(0, vue.createElementVNode)("button", {
431
435
  type: "button",
432
436
  class: "as-preset-picker-popover-cancel",
433
437
  onClick: cancelSaveAs
@@ -436,7 +440,7 @@ var as_preset_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({
436
440
  class: "as-preset-picker-popover-save",
437
441
  disabled: !saveAsLabel.value.trim(),
438
442
  onClick: commitSaveAs
439
- }, " Save ", 8, _hoisted_16)])
443
+ }, " Save ", 8, _hoisted_17)])
440
444
  ], 32)]),
441
445
  _: 1
442
446
  })], 2112))]),
@@ -1,2 +1,2 @@
1
- const require_as_preset_picker = require("./as-preset-picker-4xXU1KQz.cjs");
1
+ const require_as_preset_picker = require("./as-preset-picker-nAx3MYl7.cjs");
2
2
  module.exports = require_as_preset_picker.as_preset_picker_default;
@@ -1,2 +1,2 @@
1
- import { t as as_preset_picker_default } from "./as-preset-picker-DGSqQl9A.mjs";
1
+ import { t as as_preset_picker_default } from "./as-preset-picker-BRQdflJz.mjs";
2
2
  export { as_preset_picker_default as default };
@@ -1,5 +1,5 @@
1
- const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
2
- const require_as_action_menu_content = require("./as-action-menu-content-DiS37BYK.cjs");
1
+ const require_use_table_state = require("./use-table-state-jljSQQ8m.cjs");
2
+ const require_as_action_menu_content = require("./as-action-menu-content-D8VzLK9e.cjs");
3
3
  let vue = require("vue");
4
4
  let reka_ui = require("reka-ui");
5
5
  //#region src/components/defaults/as-row-actions.vue?vue&type=script&setup=true&lang.ts
@@ -31,6 +31,10 @@ var as_row_actions_default = /* @__PURE__ */ (0, vue.defineComponent)({
31
31
  pk: {
32
32
  type: Object,
33
33
  required: false
34
+ },
35
+ actions: {
36
+ type: Array,
37
+ required: false
34
38
  }
35
39
  },
36
40
  setup(__props) {
@@ -45,19 +49,27 @@ var as_row_actions_default = /* @__PURE__ */ (0, vue.defineComponent)({
45
49
  const id = identifierOf();
46
50
  return {
47
51
  identifiers: id === void 0 ? [] : [id],
48
- preferredId: state.tableDef.value?.preferredId ?? []
52
+ preferredId: state.tableDef.value?.preferredId ?? [],
53
+ row: props.row
49
54
  };
50
55
  }
51
56
  const view = (0, vue.computed)(() => {
52
- const sourceDefault = state.actions.default.row;
53
- const filtered = require_use_table_state.applyRowGate({
57
+ const explicit = props.actions;
58
+ const sourceDefault = explicit ? void 0 : state.actions.default.row;
59
+ const policy = state.rowActionsPolicy.value;
60
+ const filtered = explicit ? {
61
+ default: void 0,
62
+ others: explicit,
63
+ rows: []
64
+ } : policy.apply(require_use_table_state.applyRowGate({
54
65
  default: sourceDefault,
55
66
  others: state.actions.others.row,
56
67
  rows: state.actions.rows
57
- }, props.row);
58
- const total = (filtered.default ? 1 : 0) + filtered.others.length + filtered.rows.length;
59
- const single = total === 1 ? filtered.default ?? filtered.others[0] ?? filtered.rows[0] : void 0;
60
- const singleHref = single ? require_use_table_state.actionHref(state, single, identifierOf()) : void 0;
68
+ }, props.row));
69
+ const extra = explicit ? [] : policy.extra(props.row);
70
+ const total = (filtered.default ? 1 : 0) + filtered.others.length + filtered.rows.length + extra.length;
71
+ const single = total === 1 ? filtered.default ?? filtered.others[0] ?? filtered.rows[0] ?? extra[0] : void 0;
72
+ const singleHref = single ? hrefFor(single) : void 0;
61
73
  return {
62
74
  total,
63
75
  default: filtered.default,
@@ -70,7 +82,8 @@ var as_row_actions_default = /* @__PURE__ */ (0, vue.defineComponent)({
70
82
  menuGroups: [
71
83
  filtered.default ? [filtered.default] : [],
72
84
  filtered.others,
73
- filtered.rows
85
+ filtered.rows,
86
+ extra
74
87
  ]
75
88
  };
76
89
  });
@@ -78,7 +91,7 @@ var as_row_actions_default = /* @__PURE__ */ (0, vue.defineComponent)({
78
91
  await require_use_table_state.triggerAction(state, action, promptCtx(), event);
79
92
  }
80
93
  function hrefFor(action) {
81
- return require_use_table_state.actionHref(state, action, identifierOf());
94
+ return require_use_table_state.rowActionHref(state, action, identifierOf(), props.row);
82
95
  }
83
96
  const { onTriggerClick, onTriggerAuxClick, openNewTab } = require_use_table_state.createNavigateGestures(state, promptCtx, hrefFor);
84
97
  return (_ctx, _cache) => {
@@ -1,5 +1,5 @@
1
- import { T as triggerAction, _ as ariaLabelFor, a as useTableContext, b as extractIdentifier, h as applyRowGate, m as actionHref, x as intentClass, y as createNavigateGestures } from "./use-table-state-DLJbW753.mjs";
2
- import { t as as_action_menu_content_default } from "./as-action-menu-content-4D7CJNgr.mjs";
1
+ import { T as triggerAction, _ as ariaLabelFor, a as useTableContext, b as extractIdentifier, h as applyRowGate, m as rowActionHref, x as intentClass, y as createNavigateGestures } from "./use-table-state-CwfgWmuk.mjs";
2
+ import { t as as_action_menu_content_default } from "./as-action-menu-content-qATZy3cu.mjs";
3
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, resolveDynamicComponent, toDisplayString, unref, withCtx, withModifiers } from "vue";
4
4
  import { DropdownMenuPortal, DropdownMenuRoot, DropdownMenuTrigger } from "reka-ui";
5
5
  //#region src/components/defaults/as-row-actions.vue?vue&type=script&setup=true&lang.ts
@@ -31,6 +31,10 @@ var as_row_actions_default = /* @__PURE__ */ defineComponent({
31
31
  pk: {
32
32
  type: Object,
33
33
  required: false
34
+ },
35
+ actions: {
36
+ type: Array,
37
+ required: false
34
38
  }
35
39
  },
36
40
  setup(__props) {
@@ -45,19 +49,27 @@ var as_row_actions_default = /* @__PURE__ */ defineComponent({
45
49
  const id = identifierOf();
46
50
  return {
47
51
  identifiers: id === void 0 ? [] : [id],
48
- preferredId: state.tableDef.value?.preferredId ?? []
52
+ preferredId: state.tableDef.value?.preferredId ?? [],
53
+ row: props.row
49
54
  };
50
55
  }
51
56
  const view = computed(() => {
52
- const sourceDefault = state.actions.default.row;
53
- const filtered = applyRowGate({
57
+ const explicit = props.actions;
58
+ const sourceDefault = explicit ? void 0 : state.actions.default.row;
59
+ const policy = state.rowActionsPolicy.value;
60
+ const filtered = explicit ? {
61
+ default: void 0,
62
+ others: explicit,
63
+ rows: []
64
+ } : policy.apply(applyRowGate({
54
65
  default: sourceDefault,
55
66
  others: state.actions.others.row,
56
67
  rows: state.actions.rows
57
- }, props.row);
58
- const total = (filtered.default ? 1 : 0) + filtered.others.length + filtered.rows.length;
59
- const single = total === 1 ? filtered.default ?? filtered.others[0] ?? filtered.rows[0] : void 0;
60
- const singleHref = single ? actionHref(state, single, identifierOf()) : void 0;
68
+ }, props.row));
69
+ const extra = explicit ? [] : policy.extra(props.row);
70
+ const total = (filtered.default ? 1 : 0) + filtered.others.length + filtered.rows.length + extra.length;
71
+ const single = total === 1 ? filtered.default ?? filtered.others[0] ?? filtered.rows[0] ?? extra[0] : void 0;
72
+ const singleHref = single ? hrefFor(single) : void 0;
61
73
  return {
62
74
  total,
63
75
  default: filtered.default,
@@ -70,7 +82,8 @@ var as_row_actions_default = /* @__PURE__ */ defineComponent({
70
82
  menuGroups: [
71
83
  filtered.default ? [filtered.default] : [],
72
84
  filtered.others,
73
- filtered.rows
85
+ filtered.rows,
86
+ extra
74
87
  ]
75
88
  };
76
89
  });
@@ -78,7 +91,7 @@ var as_row_actions_default = /* @__PURE__ */ defineComponent({
78
91
  await triggerAction(state, action, promptCtx(), event);
79
92
  }
80
93
  function hrefFor(action) {
81
- return actionHref(state, action, identifierOf());
94
+ return rowActionHref(state, action, identifierOf(), props.row);
82
95
  }
83
96
  const { onTriggerClick, onTriggerAuxClick, openNewTab } = createNavigateGestures(state, promptCtx, hrefFor);
84
97
  return (_ctx, _cache) => {
@@ -1,2 +1,2 @@
1
- const require_as_row_actions = require("./as-row-actions-B_OHWIAt.cjs");
1
+ const require_as_row_actions = require("./as-row-actions-PD-sFmDs.cjs");
2
2
  module.exports = require_as_row_actions.as_row_actions_default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-row-actions.vue-Bvcc2tUN.cjs";
1
+ import { t as _default } from "./as-row-actions.vue-D0MXQoeg.cjs";
2
2
  export = _default;
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./as-row-actions.vue-DUSDuoR2.mjs";
1
+ import { t as _default } from "./as-row-actions.vue-AXXt5kQS.mjs";
2
2
  export { _default as default };
@@ -1,2 +1,2 @@
1
- import { t as as_row_actions_default } from "./as-row-actions-pukI1JT7.mjs";
1
+ import { t as as_row_actions_default } from "./as-row-actions-gxmuZkYI.mjs";
2
2
  export { as_row_actions_default as default };
@@ -1,9 +1,17 @@
1
+ import { S as TVueTableActionInfo } from "./types-yS6-QFfT.mjs";
1
2
  import * as vue from "vue";
2
3
 
3
4
  //#region src/components/defaults/as-row-actions.vue.d.ts
4
5
  type __VLS_Props = {
5
6
  row?: Record<string, unknown>;
6
7
  pk?: Record<string, unknown>;
8
+ /**
9
+ * Render exactly these actions, bypassing the server's action set AND the
10
+ * root's `:row-actions` policy. For a standalone `<AsRowActions>` that must
11
+ * show a hand-picked list; omit it inside the table so the shared policy
12
+ * applies. Since 0.1.134.
13
+ */
14
+ actions?: TVueTableActionInfo[];
7
15
  };
8
16
  declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
9
17
  declare const _default: typeof __VLS_export;
@@ -1,9 +1,17 @@
1
+ import { S as TVueTableActionInfo } from "./types-CyAmAg10.cjs";
1
2
  import * as vue from "vue";
2
3
 
3
4
  //#region src/components/defaults/as-row-actions.vue.d.ts
4
5
  type __VLS_Props = {
5
6
  row?: Record<string, unknown>;
6
7
  pk?: Record<string, unknown>;
8
+ /**
9
+ * Render exactly these actions, bypassing the server's action set AND the
10
+ * root's `:row-actions` policy. For a standalone `<AsRowActions>` that must
11
+ * show a hand-picked list; omit it inside the table so the shared policy
12
+ * applies. Since 0.1.134.
13
+ */
14
+ actions?: TVueTableActionInfo[];
7
15
  };
8
16
  declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
9
17
  declare const _default: typeof __VLS_export;
@@ -1,8 +1,8 @@
1
- import { D as ROW_ACTIONS_TYPE, E as ROW_ACTIONS_PATH, a as useTableContext, i as useRegisterMainActionListener } from "./use-table-state-DLJbW753.mjs";
2
- import { t as useSelectModeReset } from "./use-table-selection-C84z4OZy.mjs";
3
- import { t as useHasEmitListener } from "./use-has-emit-listener-BTMDIv2e.mjs";
4
- import { t as useTableColumnHandlers } from "./use-table-column-handlers-CpiiIniD.mjs";
5
- import { t as as_table_base_default } from "./as-table-base-B0arhJI8.mjs";
1
+ import { D as ROW_ACTIONS_TYPE, E as ROW_ACTIONS_PATH, a as useTableContext, i as useRegisterMainActionListener } from "./use-table-state-CwfgWmuk.mjs";
2
+ import { t as useSelectModeReset } from "./use-table-selection-ULbKT2xW.mjs";
3
+ import { t as useHasEmitListener } from "./use-has-emit-listener-DrBbsLHQ.mjs";
4
+ import { t as useTableColumnHandlers } from "./use-table-column-handlers-Bx3JERqs.mjs";
5
+ import { t as as_table_base_default } from "./as-table-base-kHOKCI7T.mjs";
6
6
  import { computed, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderList, renderSlot, unref, watch, withCtx } from "vue";
7
7
  //#region src/components/as-table.vue?vue&type=script&setup=true&lang.ts
8
8
  const _hoisted_1 = { class: "as-table-outer-wrap" };
@@ -113,7 +113,7 @@ var as_table_default = /* @__PURE__ */ defineComponent({
113
113
  }, (on) => {
114
114
  state.includeActions.value = on;
115
115
  }, { immediate: true });
116
- const effectiveRows = computed(() => props.rows ?? state.results.value);
116
+ const effectiveRows = computed(() => state.applyLocalSort(props.rows ?? state.results.value));
117
117
  const actionsCol = computed(() => {
118
118
  const acts = state.actions.row;
119
119
  return {
@@ -1,5 +1,5 @@
1
- import { T as triggerAction, _ as ariaLabelFor, a as useTableContext, g as applyRowsGate, h as applyRowGate, m as actionHref, v as collectIdentifiers, x as intentClass, y as createNavigateGestures } from "./use-table-state-DLJbW753.mjs";
2
- import { t as as_action_menu_content_default } from "./as-action-menu-content-4D7CJNgr.mjs";
1
+ import { T as triggerAction, _ as ariaLabelFor, a as useTableContext, g as applyRowsGate, h as applyRowGate, m as rowActionHref, v as collectIdentifiers, x as intentClass, y as createNavigateGestures } from "./use-table-state-CwfgWmuk.mjs";
2
+ import { t as as_action_menu_content_default } from "./as-action-menu-content-qATZy3cu.mjs";
3
3
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, resolveDynamicComponent, toDisplayString, unref, watch, withCtx } from "vue";
4
4
  import { DropdownMenuPortal, DropdownMenuRoot, DropdownMenuTrigger } from "reka-ui";
5
5
  //#region src/components/as-table-actions.vue?vue&type=script&setup=true&lang.ts
@@ -46,7 +46,7 @@ var as_table_actions_default = /* @__PURE__ */ defineComponent({
46
46
  const preferredId = computed(() => state.tableDef.value?.preferredId ?? []);
47
47
  const resolved = computed(() => {
48
48
  const r = resolveBuckets();
49
- const defaultHref = r.defaultAction ? actionHref(state, r.defaultAction, r.ids[0]) : void 0;
49
+ const defaultHref = r.defaultAction ? rowActionHref(state, r.defaultAction, r.ids[0], r.row) : void 0;
50
50
  return {
51
51
  ...r,
52
52
  defaultHref,
@@ -67,17 +67,21 @@ var as_table_actions_default = /* @__PURE__ */ defineComponent({
67
67
  });
68
68
  if (effectiveLevel === "row") {
69
69
  const source = explicit === "auto" && selectedCount === 1 ? state.selectedRows.value[0] : state.getActiveRow();
70
- const filtered = applyRowGate({
70
+ const policy = state.rowActionsPolicy.value;
71
+ const filtered = policy.apply(applyRowGate({
71
72
  default: state.actions.default.row,
72
73
  others: state.actions.others.row,
73
74
  rows: explicit === "auto" && selectedCount === 1 ? state.actions.rows : []
74
- }, source);
75
+ }, source));
76
+ const row = source;
77
+ const extra = policy.extra(row);
75
78
  return collapseSingle({
76
79
  defaultAction: filtered.default,
77
- otherActions: filtered.others,
80
+ otherActions: extra.length > 0 ? [...filtered.others, ...extra] : filtered.others,
78
81
  trailingRowActions: filtered.rows,
79
82
  level: "row",
80
- ids: collectIdentifiers(state, [source], pid)
83
+ ids: collectIdentifiers(state, [source], pid),
84
+ row
81
85
  });
82
86
  }
83
87
  const filtered = applyRowsGate({
@@ -97,7 +101,8 @@ var as_table_actions_default = /* @__PURE__ */ defineComponent({
97
101
  function promptCtx() {
98
102
  return {
99
103
  identifiers: resolved.value.ids,
100
- preferredId: preferredId.value
104
+ preferredId: preferredId.value,
105
+ row: resolved.value.row
101
106
  };
102
107
  }
103
108
  async function invokeWith(action, event) {
@@ -105,7 +110,7 @@ var as_table_actions_default = /* @__PURE__ */ defineComponent({
105
110
  }
106
111
  /** Resolved navigate href for `action` against the toolbar's current ids. */
107
112
  function hrefFor(action) {
108
- return actionHref(state, action, resolved.value.ids[0]);
113
+ return rowActionHref(state, action, resolved.value.ids[0], resolved.value.row);
109
114
  }
110
115
  const { onTriggerClick, onTriggerAuxClick, openNewTab } = createNavigateGestures(state, promptCtx, hrefFor);
111
116
  const running = computed(() => state.actions.invoking.value);