@atscript/vue-table 0.1.58

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 (202) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/as-action-form-dialog.cjs +221 -0
  4. package/dist/as-action-form-dialog.d.cts +6 -0
  5. package/dist/as-action-form-dialog.d.mts +7 -0
  6. package/dist/as-action-form-dialog.mjs +221 -0
  7. package/dist/as-action-menu-content-CXsdPn42.mjs +104 -0
  8. package/dist/as-action-menu-content-CyUfBrWH.cjs +109 -0
  9. package/dist/as-cell-array-CXeZzZqt.cjs +69 -0
  10. package/dist/as-cell-array-DOQKR6t5.mjs +64 -0
  11. package/dist/as-cell-array.cjs +3 -0
  12. package/dist/as-cell-array.d.cts +2 -0
  13. package/dist/as-cell-array.d.mts +2 -0
  14. package/dist/as-cell-array.mjs +3 -0
  15. package/dist/as-cell-array.vue-DZGM2VHh.d.mts +12 -0
  16. package/dist/as-cell-array.vue-pFs5GcCR.d.cts +12 -0
  17. package/dist/as-cell-date-CTrvxS1h.cjs +78 -0
  18. package/dist/as-cell-date-Cq49RHmL.mjs +73 -0
  19. package/dist/as-cell-date.cjs +3 -0
  20. package/dist/as-cell-date.d.cts +2 -0
  21. package/dist/as-cell-date.d.mts +2 -0
  22. package/dist/as-cell-date.mjs +3 -0
  23. package/dist/as-cell-date.vue-BBSps2B2.d.cts +12 -0
  24. package/dist/as-cell-date.vue-Zlt4mHWb.d.mts +12 -0
  25. package/dist/as-cell-json-BynWIs1d.mjs +37 -0
  26. package/dist/as-cell-json-DvHvQ6IL.cjs +42 -0
  27. package/dist/as-cell-json-popover-BWdNs1YU.cjs +70 -0
  28. package/dist/as-cell-json-popover-DUq25I0L.mjs +65 -0
  29. package/dist/as-cell-json.cjs +3 -0
  30. package/dist/as-cell-json.d.cts +2 -0
  31. package/dist/as-cell-json.d.mts +2 -0
  32. package/dist/as-cell-json.mjs +3 -0
  33. package/dist/as-cell-json.vue-C6wg4ARZ.d.cts +12 -0
  34. package/dist/as-cell-json.vue-CESWuCer.d.mts +12 -0
  35. package/dist/as-cell-number-0_WrSCzu.cjs +76 -0
  36. package/dist/as-cell-number-Bc1C97Vg.mjs +71 -0
  37. package/dist/as-cell-number.cjs +3 -0
  38. package/dist/as-cell-number.d.cts +2 -0
  39. package/dist/as-cell-number.d.mts +2 -0
  40. package/dist/as-cell-number.mjs +3 -0
  41. package/dist/as-cell-number.vue-1Oq7nVI3.d.mts +12 -0
  42. package/dist/as-cell-number.vue-CJ2K5zeM.d.cts +12 -0
  43. package/dist/as-cell-union-C1w3B38J.mjs +88 -0
  44. package/dist/as-cell-union-CFAI0utz.cjs +93 -0
  45. package/dist/as-cell-union.cjs +4 -0
  46. package/dist/as-cell-union.d.cts +2 -0
  47. package/dist/as-cell-union.d.mts +2 -0
  48. package/dist/as-cell-union.mjs +4 -0
  49. package/dist/as-cell-union.vue-CslPM_c2.d.cts +12 -0
  50. package/dist/as-cell-union.vue-NnDmQZOA.d.mts +12 -0
  51. package/dist/as-column-menu-CH9Htz0Q.cjs +220 -0
  52. package/dist/as-column-menu-DCfhorMP.mjs +215 -0
  53. package/dist/as-column-menu.cjs +2 -0
  54. package/dist/as-column-menu.d.cts +2 -0
  55. package/dist/as-column-menu.d.mts +2 -0
  56. package/dist/as-column-menu.mjs +2 -0
  57. package/dist/as-column-menu.vue-C9e6wJ3z.d.mts +47 -0
  58. package/dist/as-column-menu.vue-o0qFdzoL.d.cts +47 -0
  59. package/dist/as-config-dialog-d2k7_l0U.cjs +699 -0
  60. package/dist/as-config-dialog-vRklaKbi.mjs +688 -0
  61. package/dist/as-config-dialog.cjs +3 -0
  62. package/dist/as-config-dialog.d.cts +2 -0
  63. package/dist/as-config-dialog.d.mts +2 -0
  64. package/dist/as-config-dialog.mjs +3 -0
  65. package/dist/as-config-dialog.vue-C6Q62xF5.d.mts +7 -0
  66. package/dist/as-config-dialog.vue-DvvJi3xx.d.cts +7 -0
  67. package/dist/as-confirm-dialog-BLh3Ju4-.mjs +52 -0
  68. package/dist/as-confirm-dialog-BgpIEE2z.cjs +57 -0
  69. package/dist/as-confirm-dialog.cjs +3 -0
  70. package/dist/as-confirm-dialog.d.cts +2 -0
  71. package/dist/as-confirm-dialog.d.mts +2 -0
  72. package/dist/as-confirm-dialog.mjs +3 -0
  73. package/dist/as-confirm-dialog.vue-CXxLpzbu.d.cts +7 -0
  74. package/dist/as-confirm-dialog.vue-pas8jGhv.d.mts +7 -0
  75. package/dist/as-filter-dialog-C0HMpUPT.mjs +610 -0
  76. package/dist/as-filter-dialog-DcGvIV3h.cjs +621 -0
  77. package/dist/as-filter-dialog.cjs +15 -0
  78. package/dist/as-filter-dialog.d.cts +2 -0
  79. package/dist/as-filter-dialog.d.mts +2 -0
  80. package/dist/as-filter-dialog.mjs +15 -0
  81. package/dist/as-filter-dialog.vue-BV2J8PgZ.d.cts +7 -0
  82. package/dist/as-filter-dialog.vue-RDZjp4gJ.d.mts +7 -0
  83. package/dist/as-filter-field-B_tYzvvl.cjs +984 -0
  84. package/dist/as-filter-field-Bqvu2ASN.mjs +943 -0
  85. package/dist/as-filter-field.cjs +9 -0
  86. package/dist/as-filter-field.d.cts +2 -0
  87. package/dist/as-filter-field.d.mts +2 -0
  88. package/dist/as-filter-field.mjs +9 -0
  89. package/dist/as-filter-field.vue-ByQ8xIGq.d.cts +11 -0
  90. package/dist/as-filter-field.vue-QY8wi5S5.d.mts +11 -0
  91. package/dist/as-filter-input--nr72iwX.cjs +106 -0
  92. package/dist/as-filter-input-P1i0CW2-.mjs +101 -0
  93. package/dist/as-filter-input.cjs +2 -0
  94. package/dist/as-filter-input.d.cts +2 -0
  95. package/dist/as-filter-input.d.mts +2 -0
  96. package/dist/as-filter-input.mjs +2 -0
  97. package/dist/as-filter-input.vue-CBQ71eNg.d.mts +18 -0
  98. package/dist/as-filter-input.vue-CS4nOk_Q.d.cts +18 -0
  99. package/dist/as-filters-Bxa9ZEMm.mjs +44 -0
  100. package/dist/as-filters-xRT2qv56.cjs +49 -0
  101. package/dist/as-filters.cjs +10 -0
  102. package/dist/as-filters.d.cts +2 -0
  103. package/dist/as-filters.d.mts +2 -0
  104. package/dist/as-filters.mjs +10 -0
  105. package/dist/as-filters.vue-BsMgYUcX.d.mts +10 -0
  106. package/dist/as-filters.vue-fv-tRL2H.d.cts +10 -0
  107. package/dist/as-preset-dialog-BaTfwMnh.cjs +569 -0
  108. package/dist/as-preset-dialog-BdDRgwf_.mjs +564 -0
  109. package/dist/as-preset-dialog.cjs +4 -0
  110. package/dist/as-preset-dialog.d.cts +2 -0
  111. package/dist/as-preset-dialog.d.mts +2 -0
  112. package/dist/as-preset-dialog.mjs +4 -0
  113. package/dist/as-preset-dialog.vue-Bzv-ON9W.d.mts +7 -0
  114. package/dist/as-preset-dialog.vue-DP9fy00Y.d.cts +7 -0
  115. package/dist/as-preset-picker-BQbNEiy9.mjs +427 -0
  116. package/dist/as-preset-picker-Ce3crTQy.cjs +432 -0
  117. package/dist/as-preset-picker.cjs +4 -0
  118. package/dist/as-preset-picker.d.cts +2 -0
  119. package/dist/as-preset-picker.d.mts +2 -0
  120. package/dist/as-preset-picker.mjs +4 -0
  121. package/dist/as-preset-picker.vue-CTBk6leV.d.mts +7 -0
  122. package/dist/as-preset-picker.vue-DfXS3pGl.d.cts +7 -0
  123. package/dist/as-row-actions-B6Kob6gt.cjs +120 -0
  124. package/dist/as-row-actions-CeWBBGqh.mjs +115 -0
  125. package/dist/as-row-actions.cjs +4 -0
  126. package/dist/as-row-actions.d.cts +2 -0
  127. package/dist/as-row-actions.d.mts +2 -0
  128. package/dist/as-row-actions.mjs +4 -0
  129. package/dist/as-row-actions.vue-BPaQfGev.d.mts +11 -0
  130. package/dist/as-row-actions.vue-Bvcc2tUN.d.cts +11 -0
  131. package/dist/as-table-Cnw2fOqZ.mjs +204 -0
  132. package/dist/as-table-DlDFxdXI.cjs +209 -0
  133. package/dist/as-table-actions-BK1Thy2G.cjs +142 -0
  134. package/dist/as-table-actions-BpMiNFni.mjs +137 -0
  135. package/dist/as-table-actions.cjs +4 -0
  136. package/dist/as-table-actions.d.cts +2 -0
  137. package/dist/as-table-actions.d.mts +2 -0
  138. package/dist/as-table-actions.mjs +4 -0
  139. package/dist/as-table-actions.vue-B7Q-JA3z.d.cts +47 -0
  140. package/dist/as-table-actions.vue-Bs1Jl1ep.d.mts +47 -0
  141. package/dist/as-table-base-D0k4k7k_.mjs +646 -0
  142. package/dist/as-table-base-VIz-B_6_.cjs +651 -0
  143. package/dist/as-table-cell-value-B1CiJYFn.mjs +26 -0
  144. package/dist/as-table-cell-value-CuxRtFn9.cjs +31 -0
  145. package/dist/as-table-cell-value.cjs +3 -0
  146. package/dist/as-table-cell-value.d.cts +2 -0
  147. package/dist/as-table-cell-value.d.mts +2 -0
  148. package/dist/as-table-cell-value.mjs +3 -0
  149. package/dist/as-table-cell-value.vue-BgFDv2JQ.d.cts +12 -0
  150. package/dist/as-table-cell-value.vue-BuPCQ8YA.d.mts +12 -0
  151. package/dist/as-table-header-cell-C3zeZUZo.cjs +117 -0
  152. package/dist/as-table-header-cell-CBn_ioCe.mjs +112 -0
  153. package/dist/as-table-header-cell.cjs +3 -0
  154. package/dist/as-table-header-cell.d.cts +2 -0
  155. package/dist/as-table-header-cell.d.mts +2 -0
  156. package/dist/as-table-header-cell.mjs +3 -0
  157. package/dist/as-table-header-cell.vue-Bc_DSsGY.d.cts +31 -0
  158. package/dist/as-table-header-cell.vue-DNMOHfek.d.mts +31 -0
  159. package/dist/as-table-root-Br6WcGRo.cjs +263 -0
  160. package/dist/as-table-root-gG7pTIdD.mjs +258 -0
  161. package/dist/as-table-root.cjs +28 -0
  162. package/dist/as-table-root.d.cts +2 -0
  163. package/dist/as-table-root.d.mts +2 -0
  164. package/dist/as-table-root.mjs +28 -0
  165. package/dist/as-table-root.vue-5_OhVwse.d.mts +2258 -0
  166. package/dist/as-table-root.vue-CSqEtIll.d.cts +2258 -0
  167. package/dist/as-table-status-BjRGGuhC.mjs +683 -0
  168. package/dist/as-table-status-DWYoJIMC.cjs +724 -0
  169. package/dist/as-table.cjs +10 -0
  170. package/dist/as-table.d.cts +2 -0
  171. package/dist/as-table.d.mts +2 -0
  172. package/dist/as-table.mjs +10 -0
  173. package/dist/as-table.vue-BTYg-e3Z.d.mts +81 -0
  174. package/dist/as-table.vue-wdRARLIe.d.cts +81 -0
  175. package/dist/as-window-table-CKIfo3M_.mjs +709 -0
  176. package/dist/as-window-table-DE7_NyEP.cjs +714 -0
  177. package/dist/as-window-table.cjs +9 -0
  178. package/dist/as-window-table.d.cts +2 -0
  179. package/dist/as-window-table.d.mts +2 -0
  180. package/dist/as-window-table.mjs +9 -0
  181. package/dist/as-window-table.vue-Bf8xGC9M.d.mts +86 -0
  182. package/dist/as-window-table.vue-CA8qsrz4.d.cts +86 -0
  183. package/dist/format-cell-B2xMDYO9.mjs +27 -0
  184. package/dist/format-cell-D4mqaN0E.cjs +32 -0
  185. package/dist/get-cell-value-CZSVfDLg.cjs +19 -0
  186. package/dist/get-cell-value-DiH84HKL.mjs +14 -0
  187. package/dist/index.cjs +598 -0
  188. package/dist/index.d.cts +21 -0
  189. package/dist/index.d.mts +21 -0
  190. package/dist/index.mjs +505 -0
  191. package/dist/preset-aspect-display-BYeiSgcc.mjs +43 -0
  192. package/dist/preset-aspect-display-y8aal_EF.cjs +72 -0
  193. package/dist/types-BvvXN72P.d.mts +531 -0
  194. package/dist/types-CNMmF6W2.d.cts +531 -0
  195. package/dist/use-cell-locale-1uQaFTLQ.mjs +23 -0
  196. package/dist/use-cell-locale-B480_QYK.cjs +34 -0
  197. package/dist/use-table-column-handlers-CGYAY2xH.cjs +65 -0
  198. package/dist/use-table-column-handlers-t6xi1yCE.mjs +54 -0
  199. package/dist/use-table-state-C4JbonEZ.mjs +1822 -0
  200. package/dist/use-table-state-MU-vuzui.cjs +1917 -0
  201. package/package.json +195 -0
  202. package/styles.d.ts +2 -0
@@ -0,0 +1,432 @@
1
+ const require_use_table_state = require("./use-table-state-MU-vuzui.cjs");
2
+ const require_preset_aspect_display = require("./preset-aspect-display-y8aal_EF.cjs");
3
+ let vue = require("vue");
4
+ let _atscript_ui_table = require("@atscript/ui-table");
5
+ let reka_ui = require("reka-ui");
6
+ //#region src/components/as-preset-picker.vue?vue&type=script&setup=true&lang.ts
7
+ const _hoisted_1 = {
8
+ type: "button",
9
+ class: "as-preset-picker-trigger"
10
+ };
11
+ const _hoisted_2 = { class: "as-preset-picker-trigger-label" };
12
+ const _hoisted_3 = {
13
+ key: 0,
14
+ class: "as-preset-picker-trigger-dirty"
15
+ };
16
+ const _hoisted_4 = {
17
+ key: 1,
18
+ class: "as-preset-picker-section"
19
+ };
20
+ const _hoisted_5 = {
21
+ key: 0,
22
+ class: "as-preset-picker-section-header"
23
+ };
24
+ const _hoisted_6 = { class: "as-preset-picker-item-label" };
25
+ const _hoisted_7 = {
26
+ key: 0,
27
+ class: "as-preset-picker-item-meta"
28
+ };
29
+ const _hoisted_8 = { class: "as-preset-picker-item-aspects" };
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"];
38
+ //#endregion
39
+ //#region src/components/as-preset-picker.vue
40
+ var as_preset_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({
41
+ __name: "as-preset-picker",
42
+ setup(__props) {
43
+ const { state } = require_use_table_state.useTableContext();
44
+ const open = (0, vue.ref)(false);
45
+ const saveAsOpen = (0, vue.ref)(false);
46
+ const saveAsLabel = (0, vue.ref)("");
47
+ const saveAsPublic = (0, vue.ref)(false);
48
+ const saveAsAspectsMask = (0, vue.ref)({});
49
+ const saveAsInputRef = (0, vue.ref)(null);
50
+ const FORM_TAGS = new Set([
51
+ "INPUT",
52
+ "BUTTON",
53
+ "TEXTAREA",
54
+ "SELECT"
55
+ ]);
56
+ let focusStickListener = null;
57
+ function disposeFocusStick() {
58
+ if (focusStickListener !== null) {
59
+ document.removeEventListener("focusin", focusStickListener, true);
60
+ focusStickListener = null;
61
+ }
62
+ }
63
+ (0, vue.onScopeDispose)(disposeFocusStick);
64
+ (0, vue.watch)(saveAsOpen, (open) => {
65
+ disposeFocusStick();
66
+ if (!open) return;
67
+ let popover = null;
68
+ const stickFocus = (event) => {
69
+ const input = saveAsInputRef.value;
70
+ if (!input) return;
71
+ if (event && event.target === input) return;
72
+ if (popover === null) popover = input.closest(".as-preset-picker-popover");
73
+ const target = event?.target ?? document.activeElement;
74
+ if (target instanceof HTMLElement && popover?.contains(target) && FORM_TAGS.has(target.tagName)) return;
75
+ input.focus();
76
+ input.select();
77
+ };
78
+ focusStickListener = stickFocus;
79
+ (0, vue.nextTick)(() => stickFocus());
80
+ document.addEventListener("focusin", stickFocus, true);
81
+ });
82
+ const aspects = (0, vue.computed)(() => state.preset.availableAspects);
83
+ function resetSaveAsForm() {
84
+ const base = activePresetLabel.value;
85
+ saveAsLabel.value = base ? `Copy of ${base}` : "";
86
+ saveAsPublic.value = false;
87
+ const claimed = activePresetClaimedAspects.value;
88
+ const initial = {};
89
+ for (const a of aspects.value) initial[a] = claimed.has(a);
90
+ saveAsAspectsMask.value = initial;
91
+ }
92
+ const activePresetClaimedAspects = (0, vue.computed)(() => {
93
+ const id = state.preset.activeId.value;
94
+ if (!id || (0, _atscript_ui_table.isSystemPresetId)(id)) return new Set(aspects.value);
95
+ const row = state.preset.presetsById.value.get(id);
96
+ if (!row) return new Set(aspects.value);
97
+ return new Set(require_preset_aspect_display.aspectsOf(row, aspects.value));
98
+ });
99
+ function openSaveAs() {
100
+ resetSaveAsForm();
101
+ saveAsOpen.value = true;
102
+ }
103
+ function cancelSaveAs() {
104
+ saveAsOpen.value = false;
105
+ }
106
+ async function commitSaveAs() {
107
+ const label = saveAsLabel.value.trim();
108
+ if (!label) return;
109
+ try {
110
+ await state.preset.saveAs(label, {
111
+ aspects: saveAsAspectsMask.value,
112
+ public: saveAsPublic.value
113
+ });
114
+ saveAsOpen.value = false;
115
+ open.value = false;
116
+ } catch (_err) {}
117
+ }
118
+ function authorMeta(row) {
119
+ const name = require_preset_aspect_display.ownerNameOf(row);
120
+ return name ? `· ${name}` : "";
121
+ }
122
+ function systemItem(p, fav) {
123
+ return {
124
+ id: p.id,
125
+ label: p.label,
126
+ system: true,
127
+ fav,
128
+ aspects: [...state.preset.availableAspects]
129
+ };
130
+ }
131
+ function storedItem(row, fav, meta) {
132
+ return {
133
+ id: row.id,
134
+ label: require_preset_aspect_display.readPresetLabel(row),
135
+ fav,
136
+ meta,
137
+ aspects: require_preset_aspect_display.aspectsOf(row, state.preset.availableAspects)
138
+ };
139
+ }
140
+ const favIds = (0, vue.computed)(() => {
141
+ const arr = (state.preset.userConf.value?.data)?.favPresetIds;
142
+ return new Set(arr ?? []);
143
+ });
144
+ const sections = (0, vue.computed)(() => {
145
+ const ids = favIds.value;
146
+ const sys = state.preset.systemPresets.value;
147
+ const mine = [];
148
+ const fav = [];
149
+ for (const row of state.preset.presets.value) if (state.preset.isOwned(row.id)) mine.push(storedItem(row, ids.has(row.id), row.public === true ? "public" : void 0));
150
+ for (const id of ids) {
151
+ if ((0, _atscript_ui_table.isSystemPresetId)(id)) {
152
+ const sp = state.preset.systemPresetsById.value.get(id);
153
+ if (sp) fav.push(systemItem(sp, true));
154
+ continue;
155
+ }
156
+ if (state.preset.isOwned(id)) continue;
157
+ const row = state.preset.presetsById.value.get(id);
158
+ if (row) fav.push(storedItem(row, true, authorMeta(row)));
159
+ }
160
+ return [
161
+ {
162
+ kind: "system",
163
+ label: "System",
164
+ showHeader: sys.length > 1,
165
+ items: sys.map((p) => systemItem(p))
166
+ },
167
+ {
168
+ kind: "mine",
169
+ label: "My presets",
170
+ showHeader: true,
171
+ items: mine
172
+ },
173
+ {
174
+ kind: "fav",
175
+ label: "Favorites",
176
+ showHeader: true,
177
+ items: fav
178
+ }
179
+ ];
180
+ });
181
+ const activePresetLabel = (0, vue.computed)(() => {
182
+ const id = state.preset.activeId.value;
183
+ if (!id) return "Standard";
184
+ if ((0, _atscript_ui_table.isSystemPresetId)(id)) return state.preset.systemPresetsById.value.get(id)?.label ?? "Standard";
185
+ const row = state.preset.presetsById.value.get(id);
186
+ return row ? require_preset_aspect_display.readPresetLabel(row) : "—";
187
+ });
188
+ function applyId(id) {
189
+ state.preset.apply(id);
190
+ open.value = false;
191
+ }
192
+ async function saveActive() {
193
+ try {
194
+ await state.preset.saveActive();
195
+ open.value = false;
196
+ } catch (_err) {}
197
+ }
198
+ function resetActive() {
199
+ state.preset.resetActive();
200
+ open.value = false;
201
+ }
202
+ function openManageDialog() {
203
+ state.preset.dialogOpen.value = true;
204
+ open.value = false;
205
+ }
206
+ function toggleAspect(a, ev) {
207
+ const checked = ev.target.checked;
208
+ saveAsAspectsMask.value = {
209
+ ...saveAsAspectsMask.value,
210
+ [a]: checked
211
+ };
212
+ }
213
+ function onMenuKeydown(ev) {
214
+ if (saveAsOpen.value) return;
215
+ if (ev.metaKey || ev.ctrlKey || ev.altKey) return;
216
+ const k = ev.key.toLowerCase();
217
+ if (k === "s" && state.preset.isDirty.value && state.preset.canSaveActive.value) {
218
+ ev.preventDefault();
219
+ saveActive();
220
+ } else if (k === "a") {
221
+ ev.preventDefault();
222
+ openSaveAs();
223
+ } else if (k === "r" && state.preset.isDirty.value) {
224
+ ev.preventDefault();
225
+ resetActive();
226
+ }
227
+ }
228
+ (0, vue.watch)(open, (isOpen) => {
229
+ if (isOpen) window.addEventListener("keydown", onMenuKeydown);
230
+ else window.removeEventListener("keydown", onMenuKeydown);
231
+ });
232
+ (0, vue.onScopeDispose)(() => window.removeEventListener("keydown", onMenuKeydown));
233
+ return (_ctx, _cache) => {
234
+ return (0, vue.unref)(state).preset.available.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuRoot), {
235
+ key: 0,
236
+ open: open.value,
237
+ "onUpdate:open": _cache[4] || (_cache[4] = ($event) => open.value = $event),
238
+ modal: false
239
+ }, {
240
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuTrigger), { "as-child": "" }, {
241
+ default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("button", _hoisted_1, [
242
+ (0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)(activePresetLabel.value), 1),
243
+ (0, vue.unref)(state).preset.isDirty.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3, "*")) : (0, vue.createCommentVNode)("v-if", true),
244
+ _cache[5] || (_cache[5] = (0, vue.createElementVNode)("span", {
245
+ class: "as-preset-picker-trigger-chevron i-as-chevron-down",
246
+ "aria-hidden": "true"
247
+ }, null, -1))
248
+ ])]),
249
+ _: 1
250
+ }), (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuPortal), null, {
251
+ default: (0, vue.withCtx)(() => [!saveAsOpen.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuContent), {
252
+ key: 0,
253
+ class: "as-preset-picker-menu",
254
+ "side-offset": 4,
255
+ align: "start"
256
+ }, {
257
+ default: (0, vue.withCtx)(() => [
258
+ ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(sections.value, (section, sIdx) => {
259
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: section.kind }, [sIdx > 0 && section.items.length > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuSeparator), {
260
+ key: 0,
261
+ class: "as-preset-picker-separator"
262
+ })) : (0, vue.createCommentVNode)("v-if", true), section.items.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4, [section.showHeader ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5, (0, vue.toDisplayString)(section.label), 1)) : (0, vue.createCommentVNode)("v-if", true), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(section.items, (item) => {
263
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
264
+ key: `${section.kind}-${item.id}`,
265
+ class: "as-preset-picker-item",
266
+ "data-active": item.id === (0, vue.unref)(state).preset.activeId.value ? "" : void 0,
267
+ onSelect: ($event) => applyId(item.id)
268
+ }, {
269
+ default: (0, vue.withCtx)(() => [
270
+ _cache[6] || (_cache[6] = (0, vue.createElementVNode)("span", {
271
+ class: "as-preset-picker-item-active i-as-check",
272
+ "aria-hidden": "true"
273
+ }, null, -1)),
274
+ (0, vue.createElementVNode)("span", _hoisted_6, (0, vue.toDisplayString)(item.label), 1),
275
+ item.meta ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_7, (0, vue.toDisplayString)(item.meta), 1)) : (0, vue.createCommentVNode)("v-if", true),
276
+ (0, vue.createElementVNode)("span", _hoisted_8, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(state).preset.availableAspects, (a) => {
277
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
278
+ key: a,
279
+ class: "as-preset-picker-item-aspect-chip",
280
+ "data-on": item.aspects.includes(a) ? "" : void 0,
281
+ title: (0, vue.unref)(require_preset_aspect_display.ASPECT_LABELS)[a]
282
+ }, [(0, vue.createElementVNode)("span", {
283
+ class: (0, vue.normalizeClass)((0, vue.unref)(require_preset_aspect_display.ASPECT_ICONS)[a]),
284
+ "aria-hidden": "true"
285
+ }, null, 2)], 8, _hoisted_9);
286
+ }), 128))])
287
+ ]),
288
+ _: 2
289
+ }, 1032, ["data-active", "onSelect"]);
290
+ }), 128))])) : (0, vue.createCommentVNode)("v-if", true)], 64);
291
+ }), 128)),
292
+ (0, vue.createCommentVNode)(" Action row "),
293
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuSeparator), { class: "as-preset-picker-separator" }),
294
+ (0, vue.unref)(state).preset.isDirty.value && (0, vue.unref)(state).preset.canSaveActive.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
295
+ key: 0,
296
+ class: "as-preset-picker-action as-preset-picker-action-primary",
297
+ onSelect: saveActive
298
+ }, {
299
+ default: (0, vue.withCtx)(() => [..._cache[7] || (_cache[7] = [
300
+ (0, vue.createElementVNode)("span", {
301
+ class: "as-preset-picker-action-icon i-as-check",
302
+ "aria-hidden": "true"
303
+ }, null, -1),
304
+ (0, vue.createElementVNode)("span", { class: "as-preset-picker-action-label" }, "Save", -1),
305
+ (0, vue.createElementVNode)("kbd", { class: "as-kbd" }, "S", -1)
306
+ ])]),
307
+ _: 1
308
+ })) : (0, vue.createCommentVNode)("v-if", true),
309
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuItem), {
310
+ class: "as-preset-picker-action",
311
+ onSelect: _cache[0] || (_cache[0] = (ev) => {
312
+ ev.preventDefault();
313
+ openSaveAs();
314
+ })
315
+ }, {
316
+ default: (0, vue.withCtx)(() => [..._cache[8] || (_cache[8] = [
317
+ (0, vue.createElementVNode)("span", {
318
+ class: "as-preset-picker-action-icon i-as-plus",
319
+ "aria-hidden": "true"
320
+ }, null, -1),
321
+ (0, vue.createElementVNode)("span", { class: "as-preset-picker-action-label" }, "Save as…", -1),
322
+ (0, vue.createElementVNode)("kbd", { class: "as-kbd" }, "A", -1)
323
+ ])]),
324
+ _: 1
325
+ }),
326
+ (0, vue.unref)(state).preset.isDirty.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.DropdownMenuItem), {
327
+ key: 1,
328
+ class: "as-preset-picker-action",
329
+ onSelect: resetActive
330
+ }, {
331
+ default: (0, vue.withCtx)(() => [..._cache[9] || (_cache[9] = [
332
+ (0, vue.createElementVNode)("span", {
333
+ class: "as-preset-picker-action-icon i-as-refresh",
334
+ "aria-hidden": "true"
335
+ }, null, -1),
336
+ (0, vue.createElementVNode)("span", { class: "as-preset-picker-action-label" }, "Reset changes", -1),
337
+ (0, vue.createElementVNode)("kbd", { class: "as-kbd" }, "R", -1)
338
+ ])]),
339
+ _: 1
340
+ })) : (0, vue.createCommentVNode)("v-if", true),
341
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuSeparator), { class: "as-preset-picker-separator" }),
342
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuItem), {
343
+ class: "as-preset-picker-action",
344
+ onSelect: openManageDialog
345
+ }, {
346
+ default: (0, vue.withCtx)(() => [..._cache[10] || (_cache[10] = [(0, vue.createElementVNode)("span", {
347
+ class: "as-preset-picker-action-icon i-as-settings",
348
+ "aria-hidden": "true"
349
+ }, null, -1), (0, vue.createElementVNode)("span", { class: "as-preset-picker-action-label" }, "Manage presets…", -1)])]),
350
+ _: 1
351
+ })
352
+ ]),
353
+ _: 1
354
+ })) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createCommentVNode)(" Inline Save-as popover (replaces menu content while open). "), (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuContent), {
355
+ class: "as-preset-picker-popover",
356
+ "side-offset": 4,
357
+ align: "start",
358
+ onEscapeKeyDown: cancelSaveAs,
359
+ onPointerDownOutside: cancelSaveAs
360
+ }, {
361
+ default: (0, vue.withCtx)(() => [(0, vue.createCommentVNode)(" The popover's vertical-stack layout lives on this inner wrapper\n so the Tab keydown bubbles through a real DOM element before\n reaching Reka's RovingFocusGroup on MenuContent — without the\n intercept, RovingFocusGroup would pin focus on the first menu\n item. Escape/Enter still bubble so `@escape-key-down` fires. "), (0, vue.createElementVNode)("div", {
362
+ class: "as-preset-picker-popover-inner",
363
+ onKeydown: _cache[3] || (_cache[3] = (0, vue.withKeys)((0, vue.withModifiers)(() => {}, ["stop"]), ["tab"]))
364
+ }, [
365
+ _cache[16] || (_cache[16] = (0, vue.createElementVNode)("h3", { class: "as-preset-picker-popover-title" }, "Save as new preset", -1)),
366
+ (0, vue.createElementVNode)("div", _hoisted_10, [_cache[11] || (_cache[11] = (0, vue.createElementVNode)("label", {
367
+ class: "as-preset-picker-popover-label",
368
+ for: "as-preset-picker-label"
369
+ }, "Name", -1)), (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
370
+ id: "as-preset-picker-label",
371
+ ref_key: "saveAsInputRef",
372
+ ref: saveAsInputRef,
373
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => saveAsLabel.value = $event),
374
+ class: "as-preset-picker-popover-input",
375
+ type: "text",
376
+ onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(commitSaveAs, ["prevent"]), ["enter"])
377
+ }, null, 40, _hoisted_11), [[vue.vModelText, saveAsLabel.value]])]),
378
+ (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) => {
379
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
380
+ key: a,
381
+ class: "as-preset-picker-popover-aspect"
382
+ }, [
383
+ (0, vue.createElementVNode)("input", {
384
+ type: "checkbox",
385
+ checked: saveAsAspectsMask.value[a] === true,
386
+ onChange: (ev) => toggleAspect(a, ev)
387
+ }, null, 40, _hoisted_13),
388
+ (0, vue.createElementVNode)("span", {
389
+ class: (0, vue.normalizeClass)([(0, vue.unref)(require_preset_aspect_display.ASPECT_ICONS)[a], "as-preset-picker-popover-aspect-icon"]),
390
+ "aria-hidden": "true"
391
+ }, null, 2),
392
+ (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)((0, vue.unref)(require_preset_aspect_display.ASPECT_LABELS)[a]), 1)
393
+ ]);
394
+ }), 128))]),
395
+ (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, [
396
+ (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
397
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => saveAsPublic.value = $event),
398
+ type: "checkbox"
399
+ }, null, 512), [[vue.vModelCheckbox, saveAsPublic.value]]),
400
+ _cache[13] || (_cache[13] = (0, vue.createElementVNode)("span", {
401
+ class: "i-as-eye-off as-preset-picker-popover-aspect-icon",
402
+ "aria-hidden": "true"
403
+ }, null, -1)),
404
+ _cache[14] || (_cache[14] = (0, vue.createTextVNode)(" Make public ", -1))
405
+ ])], 64)) : (0, vue.createCommentVNode)("v-if", true),
406
+ (0, vue.createElementVNode)("div", _hoisted_15, [(0, vue.createElementVNode)("button", {
407
+ type: "button",
408
+ class: "as-preset-picker-popover-cancel",
409
+ onClick: cancelSaveAs
410
+ }, " Cancel "), (0, vue.createElementVNode)("button", {
411
+ type: "button",
412
+ class: "as-preset-picker-popover-save",
413
+ disabled: !saveAsLabel.value.trim(),
414
+ onClick: commitSaveAs
415
+ }, " Save ", 8, _hoisted_16)])
416
+ ], 32)]),
417
+ _: 1
418
+ })], 2112))]),
419
+ _: 1
420
+ })]),
421
+ _: 1
422
+ }, 8, ["open"])) : (0, vue.createCommentVNode)("v-if", true);
423
+ };
424
+ }
425
+ });
426
+ //#endregion
427
+ Object.defineProperty(exports, "as_preset_picker_default", {
428
+ enumerable: true,
429
+ get: function() {
430
+ return as_preset_picker_default;
431
+ }
432
+ });
@@ -0,0 +1,4 @@
1
+ require("./use-table-state-MU-vuzui.cjs");
2
+ require("./preset-aspect-display-y8aal_EF.cjs");
3
+ const require_as_preset_picker = require("./as-preset-picker-Ce3crTQy.cjs");
4
+ module.exports = require_as_preset_picker.as_preset_picker_default;
@@ -0,0 +1,2 @@
1
+ import { t as _default } from "./as-preset-picker.vue-DfXS3pGl.cjs";
2
+ export = _default;
@@ -0,0 +1,2 @@
1
+ import { t as _default } from "./as-preset-picker.vue-CTBk6leV.mjs";
2
+ export { _default as default };
@@ -0,0 +1,4 @@
1
+ import "./use-table-state-C4JbonEZ.mjs";
2
+ import "./preset-aspect-display-BYeiSgcc.mjs";
3
+ import { t as as_preset_picker_default } from "./as-preset-picker-BQbNEiy9.mjs";
4
+ export { as_preset_picker_default as default };
@@ -0,0 +1,7 @@
1
+ import * as vue from "vue";
2
+
3
+ //#region src/components/as-preset-picker.vue.d.ts
4
+ declare const __VLS_export: vue.DefineComponent<{}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ //#endregion
7
+ export { _default as t };
@@ -0,0 +1,7 @@
1
+ import * as vue from "vue";
2
+
3
+ //#region src/components/as-preset-picker.vue.d.ts
4
+ declare const __VLS_export: vue.DefineComponent<{}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ //#endregion
7
+ export { _default as t };
@@ -0,0 +1,120 @@
1
+ const require_use_table_state = require("./use-table-state-MU-vuzui.cjs");
2
+ const require_as_action_menu_content = require("./as-action-menu-content-CyUfBrWH.cjs");
3
+ let vue = require("vue");
4
+ let reka_ui = require("reka-ui");
5
+ //#region src/components/defaults/as-row-actions.vue?vue&type=script&setup=true&lang.ts
6
+ const _hoisted_1 = {
7
+ key: 0,
8
+ class: "as-row-actions"
9
+ };
10
+ const _hoisted_2 = {
11
+ key: 1,
12
+ class: "as-row-actions"
13
+ };
14
+ const _hoisted_3 = [
15
+ "data-default",
16
+ "aria-label",
17
+ "title"
18
+ ];
19
+ const _hoisted_4 = {
20
+ key: 1,
21
+ class: "as-row-actions-btn-label"
22
+ };
23
+ const _hoisted_5 = {
24
+ key: 2,
25
+ class: "as-row-actions"
26
+ };
27
+ //#endregion
28
+ //#region src/components/defaults/as-row-actions.vue
29
+ var as_row_actions_default = /* @__PURE__ */ (0, vue.defineComponent)({
30
+ __name: "as-row-actions",
31
+ props: {
32
+ row: {
33
+ type: Object,
34
+ required: false
35
+ },
36
+ pk: {
37
+ type: Object,
38
+ required: false
39
+ }
40
+ },
41
+ setup(__props) {
42
+ const props = __props;
43
+ const { state } = require_use_table_state.useTableContext();
44
+ const view = (0, vue.computed)(() => {
45
+ const sourceDefault = state.actions.default.row;
46
+ const filtered = require_use_table_state.applyRowGate({
47
+ default: sourceDefault,
48
+ others: state.actions.others.row,
49
+ rows: state.actions.rows
50
+ }, props.row);
51
+ const total = (filtered.default ? 1 : 0) + filtered.others.length + filtered.rows.length;
52
+ const single = total === 1 ? filtered.default ?? filtered.others[0] ?? filtered.rows[0] : void 0;
53
+ return {
54
+ total,
55
+ default: filtered.default,
56
+ single,
57
+ singleLabelOnly: !!single && !single.icon,
58
+ singleIntentClass: single ? require_use_table_state.intentClass("as-row-actions", single) : void 0,
59
+ singleIsDefault: !!single && single === sourceDefault,
60
+ menuGroups: [
61
+ filtered.default ? [filtered.default] : [],
62
+ filtered.others,
63
+ filtered.rows
64
+ ]
65
+ };
66
+ });
67
+ async function trigger(action, event) {
68
+ const preferredId = state.tableDef.value?.preferredId ?? [];
69
+ const id = props.pk !== void 0 ? props.pk : require_use_table_state.extractIdentifier(props.row, preferredId);
70
+ await require_use_table_state.triggerAction(state, action, {
71
+ identifiers: id === void 0 ? [] : [id],
72
+ preferredId
73
+ }, event);
74
+ }
75
+ return (_ctx, _cache) => {
76
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [(0, vue.createCommentVNode)(" table-layout: fixed needs a placeholder cell so column widths line up. "), view.value.total === 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("td", _hoisted_1)) : view.value.single ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("td", _hoisted_2, [(0, vue.createElementVNode)("button", {
77
+ type: "button",
78
+ class: (0, vue.normalizeClass)(["as-row-actions-btn", [view.value.singleLabelOnly ? "as-row-actions-btn-labelled" : void 0, view.value.singleIntentClass]]),
79
+ "data-default": view.value.singleIsDefault || void 0,
80
+ "aria-label": (0, vue.unref)(require_use_table_state.ariaLabelFor)(view.value.single),
81
+ title: (0, vue.unref)(require_use_table_state.ariaLabelFor)(view.value.single),
82
+ onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(($event) => trigger(view.value.single, $event), ["stop"]))
83
+ }, [view.value.single.icon ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
84
+ key: 0,
85
+ class: (0, vue.normalizeClass)(["as-row-actions-btn-icon", view.value.single.icon]),
86
+ "aria-hidden": "true"
87
+ }, null, 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4, (0, vue.toDisplayString)(view.value.single.label || view.value.single.name), 1))], 10, _hoisted_3)])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("td", _hoisted_5, [(0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuRoot), { modal: false }, {
88
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuTrigger), { "as-child": "" }, {
89
+ default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("button", {
90
+ type: "button",
91
+ class: "as-row-actions-btn as-row-actions-more",
92
+ "aria-label": "Row actions",
93
+ title: "Row actions",
94
+ onClick: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"]))
95
+ }, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("span", {
96
+ class: "as-row-actions-btn-icon i-as-menu",
97
+ "aria-hidden": "true"
98
+ }, null, -1)])])]),
99
+ _: 1
100
+ }), (0, vue.createVNode)((0, vue.unref)(reka_ui.DropdownMenuPortal), null, {
101
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)(require_as_action_menu_content.as_action_menu_content_default, {
102
+ groups: view.value.menuGroups,
103
+ "default-marker": view.value.default,
104
+ prefix: "as-row-actions",
105
+ onSelect: trigger
106
+ }, null, 8, ["groups", "default-marker"])]),
107
+ _: 1
108
+ })]),
109
+ _: 1
110
+ })]))], 2112);
111
+ };
112
+ }
113
+ });
114
+ //#endregion
115
+ Object.defineProperty(exports, "as_row_actions_default", {
116
+ enumerable: true,
117
+ get: function() {
118
+ return as_row_actions_default;
119
+ }
120
+ });