@atscript/vue-table 0.1.131 → 0.1.133
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.
- package/dist/as-action-form-dialog.cjs +42 -30
- package/dist/as-action-form-dialog.mjs +42 -30
- package/dist/{as-action-menu-content-4UfcabUe.mjs → as-action-menu-content-4D7CJNgr.mjs} +1 -1
- package/dist/{as-action-menu-content-C5qx9MPE.cjs → as-action-menu-content-DiS37BYK.cjs} +1 -1
- package/dist/as-column-menu.d.cts +1 -1
- package/dist/as-column-menu.d.mts +1 -1
- package/dist/{as-column-menu.vue-DL5N9mKR.d.mts → as-column-menu.vue-CZ8XqHl0.d.cts} +2 -2
- package/dist/{as-column-menu.vue-u_DNy3f-.d.cts → as-column-menu.vue-Cuelpv3p.d.mts} +2 -2
- package/dist/{as-config-dialog-BehfqIGd.mjs → as-config-dialog-BKsm8OHR.mjs} +30 -22
- package/dist/{as-config-dialog-BOYWPYYH.cjs → as-config-dialog-Bt8oP8qg.cjs} +29 -21
- package/dist/as-config-dialog.cjs +1 -1
- package/dist/as-config-dialog.mjs +1 -1
- package/dist/{as-confirm-dialog-bpN4A-KN.mjs → as-confirm-dialog-BV01t7dn.mjs} +12 -9
- package/dist/{as-confirm-dialog-UwhDHysk.cjs → as-confirm-dialog-Cw7KErhz.cjs} +12 -9
- package/dist/as-confirm-dialog.cjs +1 -1
- package/dist/as-confirm-dialog.mjs +1 -1
- package/dist/{as-filter-dialog-Dh2Ylthb.cjs → as-filter-dialog-Bxii-mYH.cjs} +31 -23
- package/dist/{as-filter-dialog-D1qzq-8b.mjs → as-filter-dialog-Ckrl79kU.mjs} +32 -24
- package/dist/as-filter-dialog.cjs +1 -1
- package/dist/as-filter-dialog.mjs +1 -1
- package/dist/{as-filter-field-DirBmnbb.mjs → as-filter-field-C-IFnj8K.mjs} +4 -4
- package/dist/{as-filter-field-DRsDJdpx.cjs → as-filter-field-xBr6TtKo.cjs} +4 -4
- package/dist/as-filter-field.cjs +1 -1
- package/dist/as-filter-field.mjs +1 -1
- package/dist/as-filters-DJEQj7_p.mjs +125 -0
- package/dist/as-filters-DuCk8nkk.cjs +130 -0
- package/dist/as-filters.cjs +1 -1
- package/dist/as-filters.d.cts +1 -1
- package/dist/as-filters.d.mts +1 -1
- package/dist/as-filters.mjs +1 -1
- package/dist/as-filters.vue-BG_ysCkC.d.mts +65 -0
- package/dist/as-filters.vue-DcxDnWAU.d.cts +65 -0
- package/dist/{as-preset-dialog-CDqCAR7N.mjs → as-preset-dialog-CCIacZ2C.mjs} +70 -20
- package/dist/{as-preset-dialog-DpM06jqR.cjs → as-preset-dialog-jZeyXJeJ.cjs} +74 -24
- package/dist/as-preset-dialog.cjs +1 -1
- package/dist/as-preset-dialog.mjs +1 -1
- package/dist/{as-preset-picker-jUS_YDX8.cjs → as-preset-picker-4xXU1KQz.cjs} +45 -21
- package/dist/{as-preset-picker-CISaxEZ0.mjs → as-preset-picker-DGSqQl9A.mjs} +39 -15
- package/dist/as-preset-picker.cjs +1 -1
- package/dist/as-preset-picker.mjs +1 -1
- package/dist/{as-row-actions-Bm6Bzyno.cjs → as-row-actions-B_OHWIAt.cjs} +2 -2
- package/dist/{as-row-actions-xqJeAdQl.mjs → as-row-actions-pukI1JT7.mjs} +2 -2
- package/dist/as-row-actions.cjs +1 -1
- package/dist/as-row-actions.mjs +1 -1
- package/dist/{as-table-BWUPzjRn.cjs → as-table-BejpMVid.cjs} +22 -4
- package/dist/{as-table-CDSG2yED.mjs → as-table-D5_bQ0p5.mjs} +22 -4
- package/dist/{as-table-actions-DMxeaczm.mjs → as-table-actions-DKYK_mTO.mjs} +57 -11
- package/dist/{as-table-actions-gV4lqqxc.cjs → as-table-actions-qb0gQz2D.cjs} +56 -10
- package/dist/as-table-actions.cjs +1 -1
- package/dist/as-table-actions.d.cts +1 -1
- package/dist/as-table-actions.d.mts +1 -1
- package/dist/as-table-actions.mjs +1 -1
- package/dist/{as-table-actions.vue-DTGYOsZh.d.mts → as-table-actions.vue-CckRRsL6.d.cts} +1 -1
- package/dist/{as-table-actions.vue-WXkllHVw.d.cts → as-table-actions.vue-DsqauvXR.d.mts} +1 -1
- package/dist/{as-table-base-BaTE3VSN.mjs → as-table-base-B0arhJI8.mjs} +141 -46
- package/dist/{as-table-base-RG2TEIgV.cjs → as-table-base-Dfw012G5.cjs} +141 -46
- package/dist/{as-table-header-cell-CIqlO6Lw.cjs → as-table-header-cell-Bb4ddLmQ.cjs} +1 -1
- package/dist/{as-table-header-cell-Bdhl5Lox.mjs → as-table-header-cell-q-c_QklI.mjs} +1 -1
- package/dist/as-table-header-cell.cjs +1 -1
- package/dist/as-table-header-cell.d.cts +1 -1
- package/dist/as-table-header-cell.d.mts +1 -1
- package/dist/as-table-header-cell.mjs +1 -1
- package/dist/{as-table-header-cell.vue-BCszzxtU.d.mts → as-table-header-cell.vue-BjVOEFqz.d.mts} +1 -1
- package/dist/{as-table-header-cell.vue-BzTzfGRo.d.cts → as-table-header-cell.vue-qS1Xfc-U.d.cts} +1 -1
- package/dist/{as-table-root-BLReUbRH.mjs → as-table-root-Bpsrp0Vz.mjs} +5 -5
- package/dist/{as-table-root-DLJ_3Jf4.cjs → as-table-root-CUDO9ybm.cjs} +5 -5
- package/dist/as-table-root.cjs +1 -1
- package/dist/as-table-root.d.cts +1 -1
- package/dist/as-table-root.d.mts +1 -1
- package/dist/as-table-root.mjs +1 -1
- package/dist/{as-table-root.vue-BqZl6JQ0.d.mts → as-table-root.vue-BPU92_Ns.d.mts} +59 -16
- package/dist/{as-table-root.vue-umgSvVUB.d.cts → as-table-root.vue-szvjZsCn.d.cts} +59 -16
- package/dist/{as-table-status-DGTZlpyq.mjs → as-table-status-B9jlzPPV.mjs} +53 -37
- package/dist/{as-table-status-Du4WLF4k.cjs → as-table-status-BgDexT2x.cjs} +53 -37
- package/dist/as-table.cjs +1 -1
- package/dist/as-table.d.cts +1 -1
- package/dist/as-table.d.mts +1 -1
- package/dist/as-table.mjs +1 -1
- package/dist/{as-table.vue-DxtfL26P.d.mts → as-table.vue-4WhMA8AM.d.mts} +27 -3
- package/dist/{as-table.vue-D9cCjbtr.d.cts → as-table.vue-_urybtQj.d.cts} +27 -3
- package/dist/{as-window-table-jD_y9yet.cjs → as-window-table-CXq6UuUx.cjs} +98 -19
- package/dist/{as-window-table-DWujiUQy.mjs → as-window-table-S1XWpDHQ.mjs} +98 -19
- package/dist/as-window-table.cjs +1 -1
- package/dist/as-window-table.d.cts +1 -1
- package/dist/as-window-table.d.mts +1 -1
- package/dist/as-window-table.mjs +1 -1
- package/dist/{as-window-table.vue-BpvgmsC1.d.mts → as-window-table.vue-CWsJvOkL.d.mts} +26 -3
- package/dist/{as-window-table.vue-BavmqDeH.d.cts → as-window-table.vue-h1bdyMv7.d.cts} +26 -3
- package/dist/error-message-CglODWl4.cjs +18 -0
- package/dist/error-message-hPSAu8Ug.mjs +13 -0
- package/dist/index.cjs +61 -29
- package/dist/index.d.cts +9 -9
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +62 -30
- package/dist/{types-CTMxE_zA.d.cts → types-BZ0HssRY.d.cts} +126 -4
- package/dist/{types-ByU4O0Yf.d.mts → types-CXz-4dPz.d.mts} +126 -4
- package/dist/{use-table-CyFcVtUN.mjs → use-table-Bk-jSxOM.mjs} +26 -11
- package/dist/{use-table-nvBq1dZ4.cjs → use-table-CdFFqaEx.cjs} +24 -9
- package/dist/{use-table-component-DO_kvKSf.cjs → use-table-component-DlLganVc.cjs} +1 -1
- package/dist/{use-table-component-K6xj1obF.mjs → use-table-component-KuzZxAP8.mjs} +1 -1
- package/dist/{use-table-nav-bridge-DeGeaQX-.mjs → use-table-nav-bridge-B9SSEajW.mjs} +1 -1
- package/dist/{use-table-nav-bridge-uOQUDooh.cjs → use-table-nav-bridge-CVUmTjDr.cjs} +1 -1
- package/dist/{use-table-state-Oi2ds4_a.cjs → use-table-state-D6dHOFrA.cjs} +329 -53
- package/dist/{use-table-state-BxX3SpeW.mjs → use-table-state-DLJbW753.mjs} +295 -55
- package/package.json +9 -9
- package/dist/as-filters-DCZTHjf5.cjs +0 -51
- package/dist/as-filters-beIud9sF.mjs +0 -46
- package/dist/as-filters.vue-DmECMd1v.d.mts +0 -10
- package/dist/as-filters.vue-fv-tRL2H.d.cts +0 -10
- package/dist/preset-aspect-display-IICxAlVo.mjs +0 -43
- package/dist/preset-aspect-display-TWwf6j1B.cjs +0 -72
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as vue from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/components/as-filters.vue.d.ts
|
|
4
|
+
declare const _default: typeof __VLS_export;
|
|
5
|
+
declare const __VLS_export: vue.DefineComponent<{
|
|
6
|
+
filterFields?: string[];
|
|
7
|
+
/**
|
|
8
|
+
* Hard cap on how many filter fields render inline. Deterministic and
|
|
9
|
+
* count-based — this component never measures the toolbar. Width-driven
|
|
10
|
+
* responsiveness stays with the host, which already knows its own
|
|
11
|
+
* breakpoints and can feed a shorter `filterFields` list (or a smaller
|
|
12
|
+
* `maxVisible`).
|
|
13
|
+
*
|
|
14
|
+
* Omitted (the default) → every field renders inline, exactly as before.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.133
|
|
17
|
+
*/
|
|
18
|
+
maxVisible?: number;
|
|
19
|
+
/**
|
|
20
|
+
* What happens to the fields past `maxVisible`:
|
|
21
|
+
* - `'popover'` (the default whenever `maxVisible` is set) — they move into
|
|
22
|
+
* a popover behind a "More filters" trigger, which badges the number of
|
|
23
|
+
* ACTIVE hidden filters so nothing silently narrows the table from
|
|
24
|
+
* off-screen.
|
|
25
|
+
* - `'none'` — they are not rendered at all. Pick this only when the host
|
|
26
|
+
* surfaces them elsewhere (e.g. its own filter dialog); an active filter
|
|
27
|
+
* on a dropped field still applies to the query.
|
|
28
|
+
*
|
|
29
|
+
* Ignored when `maxVisible` is omitted.
|
|
30
|
+
*
|
|
31
|
+
* @since 0.1.133
|
|
32
|
+
*/
|
|
33
|
+
overflow?: "popover" | "none";
|
|
34
|
+
}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{
|
|
35
|
+
filterFields?: string[];
|
|
36
|
+
/**
|
|
37
|
+
* Hard cap on how many filter fields render inline. Deterministic and
|
|
38
|
+
* count-based — this component never measures the toolbar. Width-driven
|
|
39
|
+
* responsiveness stays with the host, which already knows its own
|
|
40
|
+
* breakpoints and can feed a shorter `filterFields` list (or a smaller
|
|
41
|
+
* `maxVisible`).
|
|
42
|
+
*
|
|
43
|
+
* Omitted (the default) → every field renders inline, exactly as before.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.133
|
|
46
|
+
*/
|
|
47
|
+
maxVisible?: number;
|
|
48
|
+
/**
|
|
49
|
+
* What happens to the fields past `maxVisible`:
|
|
50
|
+
* - `'popover'` (the default whenever `maxVisible` is set) — they move into
|
|
51
|
+
* a popover behind a "More filters" trigger, which badges the number of
|
|
52
|
+
* ACTIVE hidden filters so nothing silently narrows the table from
|
|
53
|
+
* off-screen.
|
|
54
|
+
* - `'none'` — they are not rendered at all. Pick this only when the host
|
|
55
|
+
* surfaces them elsewhere (e.g. its own filter dialog); an active filter
|
|
56
|
+
* on a dropped field still applies to the query.
|
|
57
|
+
*
|
|
58
|
+
* Ignored when `maxVisible` is omitted.
|
|
59
|
+
*
|
|
60
|
+
* @since 0.1.133
|
|
61
|
+
*/
|
|
62
|
+
overflow?: "popover" | "none";
|
|
63
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
64
|
+
//#endregion
|
|
65
|
+
export { _default as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as useTableContext } from "./use-table-state-
|
|
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
2
|
import { t as useSeedOnOpen } from "./use-seed-on-open-DO3A1kIb.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { t as errorMessage } from "./error-message-hPSAu8Ug.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
|
-
import { DialogClose, DialogContent, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "reka-ui";
|
|
6
|
+
import { DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "reka-ui";
|
|
7
7
|
//#region src/components/defaults/as-preset-dialog.vue?vue&type=script&setup=true&lang.ts
|
|
8
8
|
const _hoisted_1 = { class: "as-preset-dialog-header" };
|
|
9
9
|
const _hoisted_2 = { class: "as-preset-dialog-counter" };
|
|
@@ -81,10 +81,15 @@ const _hoisted_26 = { class: "as-preset-dialog-footer" };
|
|
|
81
81
|
const _hoisted_27 = { class: "as-preset-dialog-footer-status" };
|
|
82
82
|
const _hoisted_28 = {
|
|
83
83
|
key: 0,
|
|
84
|
+
class: "as-preset-dialog-footer-error",
|
|
85
|
+
role: "alert"
|
|
86
|
+
};
|
|
87
|
+
const _hoisted_29 = {
|
|
88
|
+
key: 1,
|
|
84
89
|
class: "as-preset-dialog-footer-unsaved"
|
|
85
90
|
};
|
|
86
|
-
const
|
|
87
|
-
const
|
|
91
|
+
const _hoisted_30 = { class: "as-preset-dialog-footer-actions" };
|
|
92
|
+
const _hoisted_31 = ["disabled"];
|
|
88
93
|
//#endregion
|
|
89
94
|
//#region src/components/defaults/as-preset-dialog.vue
|
|
90
95
|
var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
@@ -162,7 +167,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
162
167
|
kind: "system",
|
|
163
168
|
isPublic: false,
|
|
164
169
|
ownerLabel: "—",
|
|
165
|
-
aspects:
|
|
170
|
+
aspects: state.preset.ownedAspects(sp.id),
|
|
166
171
|
pendingLabel: false
|
|
167
172
|
});
|
|
168
173
|
const stored = [];
|
|
@@ -177,7 +182,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
177
182
|
kind: isOwned ? "owned" : "public",
|
|
178
183
|
isPublic: pendingPublicIds.value.has(row.id),
|
|
179
184
|
ownerLabel: isOwned ? "you" : ownerNameOf(row, "—"),
|
|
180
|
-
aspects:
|
|
185
|
+
aspects: state.preset.ownedAspects(row.id),
|
|
181
186
|
pendingLabel: pending !== void 0 && pending !== original
|
|
182
187
|
});
|
|
183
188
|
}
|
|
@@ -289,9 +294,15 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
289
294
|
cancelRename();
|
|
290
295
|
}
|
|
291
296
|
const saving = ref(false);
|
|
297
|
+
const errorText = ref("");
|
|
292
298
|
async function save() {
|
|
293
299
|
if (!isDirty.value || saving.value) return;
|
|
294
300
|
saving.value = true;
|
|
301
|
+
errorText.value = "";
|
|
302
|
+
const failedLabels = /* @__PURE__ */ new Map();
|
|
303
|
+
const failedPublicIds = /* @__PURE__ */ new Set();
|
|
304
|
+
const failedDeleteIds = /* @__PURE__ */ new Set();
|
|
305
|
+
const failures = [];
|
|
295
306
|
try {
|
|
296
307
|
await state.preset.batch(async () => {
|
|
297
308
|
const deleted = pendingDeleteIds.value;
|
|
@@ -304,17 +315,28 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
304
315
|
if (state.preset.isOwned(id)) continue;
|
|
305
316
|
cleaned.push(id);
|
|
306
317
|
}
|
|
307
|
-
|
|
318
|
+
try {
|
|
319
|
+
await state.preset.setFavorites(cleaned);
|
|
320
|
+
} catch (err) {
|
|
321
|
+
failures.push(errorMessage(err, "The change could not be saved."));
|
|
322
|
+
}
|
|
308
323
|
}
|
|
309
324
|
if (pendingDefaultId.value !== serverDefaultId.value) {
|
|
310
325
|
const next = pendingDefaultId.value && deleted.has(pendingDefaultId.value) ? null : pendingDefaultId.value;
|
|
311
|
-
if (next !== serverDefaultId.value)
|
|
326
|
+
if (next !== serverDefaultId.value) try {
|
|
327
|
+
await state.preset.setDefault(next);
|
|
328
|
+
} catch (err) {
|
|
329
|
+
failures.push(errorMessage(err, "The change could not be saved."));
|
|
330
|
+
}
|
|
312
331
|
}
|
|
313
332
|
if (pendingLabels.value.size > 0) for (const [id, label] of pendingLabels.value) {
|
|
314
333
|
if (deleted.has(id)) continue;
|
|
315
334
|
try {
|
|
316
335
|
await state.preset.rename(id, label);
|
|
317
|
-
} catch (
|
|
336
|
+
} catch (err) {
|
|
337
|
+
failedLabels.set(id, label);
|
|
338
|
+
failures.push(errorMessage(err, "The change could not be saved."));
|
|
339
|
+
}
|
|
318
340
|
}
|
|
319
341
|
if (!setsEqual(pendingPublicIds.value, serverPublicIds.value)) {
|
|
320
342
|
const flips = [];
|
|
@@ -328,12 +350,35 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
328
350
|
}
|
|
329
351
|
for (const id of flips) try {
|
|
330
352
|
await state.preset.togglePublic(id);
|
|
331
|
-
} catch (
|
|
353
|
+
} catch (err) {
|
|
354
|
+
failedPublicIds.add(id);
|
|
355
|
+
failures.push(errorMessage(err, "The change could not be saved."));
|
|
356
|
+
}
|
|
332
357
|
}
|
|
333
358
|
if (deleted.size > 0) for (const id of deleted) try {
|
|
334
359
|
await state.preset.remove(id);
|
|
335
|
-
} catch (
|
|
360
|
+
} catch (err) {
|
|
361
|
+
failedDeleteIds.add(id);
|
|
362
|
+
failures.push(errorMessage(err, "The change could not be saved."));
|
|
363
|
+
}
|
|
336
364
|
});
|
|
365
|
+
if (failures.length > 0) {
|
|
366
|
+
syncPendingFromServer();
|
|
367
|
+
if (failedLabels.size > 0) {
|
|
368
|
+
const labels = new Map(pendingLabels.value);
|
|
369
|
+
for (const [id, label] of failedLabels) labels.set(id, label);
|
|
370
|
+
pendingLabels.value = labels;
|
|
371
|
+
}
|
|
372
|
+
if (failedPublicIds.size > 0) {
|
|
373
|
+
const publics = new Set(pendingPublicIds.value);
|
|
374
|
+
for (const id of failedPublicIds) if (publics.has(id)) publics.delete(id);
|
|
375
|
+
else publics.add(id);
|
|
376
|
+
pendingPublicIds.value = publics;
|
|
377
|
+
}
|
|
378
|
+
if (failedDeleteIds.size > 0) pendingDeleteIds.value = new Set([...pendingDeleteIds.value, ...failedDeleteIds]);
|
|
379
|
+
errorText.value = failures.length === 1 ? failures[0] : `${failures.length} changes could not be saved.`;
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
337
382
|
if (pendingActiveId.value !== null && pendingActiveId.value !== state.preset.activeId.value && !pendingDeleteIds.value.has(pendingActiveId.value)) state.preset.apply(pendingActiveId.value);
|
|
338
383
|
state.preset.dialogOpen.value = false;
|
|
339
384
|
} finally {
|
|
@@ -342,6 +387,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
342
387
|
}
|
|
343
388
|
function discardOrClose() {
|
|
344
389
|
syncPendingFromServer();
|
|
390
|
+
errorText.value = "";
|
|
345
391
|
state.preset.dialogOpen.value = false;
|
|
346
392
|
}
|
|
347
393
|
function rowFavTitle(row) {
|
|
@@ -385,20 +431,24 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
385
431
|
default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Presets", -1)])]),
|
|
386
432
|
_: 1
|
|
387
433
|
}),
|
|
434
|
+
createVNode(unref(DialogDescription), { class: "sr-only" }, {
|
|
435
|
+
default: withCtx(() => [..._cache[6] || (_cache[6] = [createTextVNode(" Rename, share, favorite, pin as default or delete your saved table views. ", -1)])]),
|
|
436
|
+
_: 1
|
|
437
|
+
}),
|
|
388
438
|
createElementVNode("span", _hoisted_2, toDisplayString(counterText.value), 1),
|
|
389
439
|
createVNode(unref(DialogClose), {
|
|
390
440
|
class: "as-preset-dialog-close",
|
|
391
441
|
"aria-label": "Close",
|
|
392
442
|
onClick: withModifiers(discardOrClose, ["prevent"])
|
|
393
443
|
}, {
|
|
394
|
-
default: withCtx(() => [..._cache[
|
|
444
|
+
default: withCtx(() => [..._cache[7] || (_cache[7] = [createElementVNode("span", {
|
|
395
445
|
class: "i-as-close",
|
|
396
446
|
"aria-hidden": "true"
|
|
397
447
|
}, null, -1)])]),
|
|
398
448
|
_: 1
|
|
399
449
|
})
|
|
400
450
|
]),
|
|
401
|
-
createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [_cache[
|
|
451
|
+
createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [_cache[8] || (_cache[8] = createElementVNode("span", {
|
|
402
452
|
class: "i-as-search as-preset-dialog-search-icon",
|
|
403
453
|
"aria-hidden": "true"
|
|
404
454
|
}, null, -1)), withDirectives(createElementVNode("input", {
|
|
@@ -408,7 +458,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
408
458
|
type: "search",
|
|
409
459
|
class: "as-preset-dialog-search-input",
|
|
410
460
|
placeholder: "Search by name or owner…"
|
|
411
|
-
}, null, 512), [[vModelText, searchQuery.value]])]), _cache[
|
|
461
|
+
}, null, 512), [[vModelText, searchQuery.value]])]), _cache[9] || (_cache[9] = createElementVNode("div", { class: "as-preset-dialog-legend" }, [
|
|
412
462
|
createElementVNode("span", { class: "as-preset-dialog-legend-item" }, [createElementVNode("span", {
|
|
413
463
|
class: "i-as-pin as-preset-dialog-legend-icon",
|
|
414
464
|
"aria-hidden": "true"
|
|
@@ -517,7 +567,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
517
567
|
key: 3,
|
|
518
568
|
class: "as-preset-dialog-row-public-indicator",
|
|
519
569
|
title: rowPublicTitle(row)
|
|
520
|
-
}, [..._cache[
|
|
570
|
+
}, [..._cache[10] || (_cache[10] = [createElementVNode("span", {
|
|
521
571
|
class: "i-as-eye",
|
|
522
572
|
"aria-hidden": "true"
|
|
523
573
|
}, null, -1)])], 8, _hoisted_22)) : (openBlock(), createElementBlock("span", _hoisted_23)),
|
|
@@ -529,17 +579,17 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
529
579
|
"aria-pressed": pendingDeleteIds.value.has(row.id),
|
|
530
580
|
title: pendingDeleteIds.value.has(row.id) ? "Marked for deletion — click to undo" : "Mark for deletion (applied on Save)",
|
|
531
581
|
onClick: ($event) => toggleDeletePending(row.id)
|
|
532
|
-
}, [..._cache[
|
|
582
|
+
}, [..._cache[11] || (_cache[11] = [createElementVNode("span", {
|
|
533
583
|
class: "i-as-trash",
|
|
534
584
|
"aria-hidden": "true"
|
|
535
585
|
}, null, -1)])], 8, _hoisted_24)) : (openBlock(), createElementBlock("span", _hoisted_25))
|
|
536
586
|
], 8, _hoisted_8);
|
|
537
587
|
}), 128))], 64);
|
|
538
588
|
}), 128))]),
|
|
539
|
-
createElementVNode("footer", _hoisted_26, [createElementVNode("div", _hoisted_27, [
|
|
589
|
+
createElementVNode("footer", _hoisted_26, [createElementVNode("div", _hoisted_27, [errorText.value ? (openBlock(), createElementBlock("span", _hoisted_28, toDisplayString(errorText.value), 1)) : isDirty.value ? (openBlock(), createElementBlock("span", _hoisted_29, [..._cache[12] || (_cache[12] = [createElementVNode("span", {
|
|
540
590
|
class: "as-preset-dialog-footer-unsaved-dot",
|
|
541
591
|
"aria-hidden": "true"
|
|
542
|
-
}, null, -1), createTextVNode(" unsaved changes ", -1)])])) : createCommentVNode("v-if", true)]), createElementVNode("div",
|
|
592
|
+
}, null, -1), createTextVNode(" unsaved changes ", -1)])])) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_30, [createElementVNode("button", {
|
|
543
593
|
type: "button",
|
|
544
594
|
class: "as-preset-dialog-footer-close",
|
|
545
595
|
onClick: discardOrClose
|
|
@@ -548,7 +598,7 @@ var as_preset_dialog_default = /* @__PURE__ */ defineComponent({
|
|
|
548
598
|
class: "as-preset-dialog-footer-save",
|
|
549
599
|
disabled: !isDirty.value || saving.value,
|
|
550
600
|
onClick: save
|
|
551
|
-
}, toDisplayString(saving.value ? "Saving…" : "Save"), 9,
|
|
601
|
+
}, toDisplayString(saving.value ? "Saving…" : "Save"), 9, _hoisted_31)])])
|
|
552
602
|
]),
|
|
553
603
|
_: 1
|
|
554
604
|
})]),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_use_table_state = require("./use-table-state-
|
|
1
|
+
const require_use_table_state = require("./use-table-state-D6dHOFrA.cjs");
|
|
2
2
|
const require_use_seed_on_open = require("./use-seed-on-open-Dg9I89fU.cjs");
|
|
3
|
-
const
|
|
3
|
+
const require_error_message = require("./error-message-CglODWl4.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");
|
|
@@ -81,10 +81,15 @@ const _hoisted_26 = { class: "as-preset-dialog-footer" };
|
|
|
81
81
|
const _hoisted_27 = { class: "as-preset-dialog-footer-status" };
|
|
82
82
|
const _hoisted_28 = {
|
|
83
83
|
key: 0,
|
|
84
|
+
class: "as-preset-dialog-footer-error",
|
|
85
|
+
role: "alert"
|
|
86
|
+
};
|
|
87
|
+
const _hoisted_29 = {
|
|
88
|
+
key: 1,
|
|
84
89
|
class: "as-preset-dialog-footer-unsaved"
|
|
85
90
|
};
|
|
86
|
-
const
|
|
87
|
-
const
|
|
91
|
+
const _hoisted_30 = { class: "as-preset-dialog-footer-actions" };
|
|
92
|
+
const _hoisted_31 = ["disabled"];
|
|
88
93
|
//#endregion
|
|
89
94
|
//#region src/components/defaults/as-preset-dialog.vue
|
|
90
95
|
var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
@@ -162,13 +167,13 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
162
167
|
kind: "system",
|
|
163
168
|
isPublic: false,
|
|
164
169
|
ownerLabel: "—",
|
|
165
|
-
aspects:
|
|
170
|
+
aspects: state.preset.ownedAspects(sp.id),
|
|
166
171
|
pendingLabel: false
|
|
167
172
|
});
|
|
168
173
|
const stored = [];
|
|
169
174
|
for (const row of state.preset.presets.value) {
|
|
170
175
|
const isOwned = state.preset.isOwned(row.id);
|
|
171
|
-
const original =
|
|
176
|
+
const original = require_use_table_state.readPresetLabel(row);
|
|
172
177
|
const pending = pendingLabels.value.get(row.id);
|
|
173
178
|
const liveLabel = pending ?? original;
|
|
174
179
|
stored.push({
|
|
@@ -176,8 +181,8 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
176
181
|
label: liveLabel,
|
|
177
182
|
kind: isOwned ? "owned" : "public",
|
|
178
183
|
isPublic: pendingPublicIds.value.has(row.id),
|
|
179
|
-
ownerLabel: isOwned ? "you" :
|
|
180
|
-
aspects:
|
|
184
|
+
ownerLabel: isOwned ? "you" : require_use_table_state.ownerNameOf(row, "—"),
|
|
185
|
+
aspects: state.preset.ownedAspects(row.id),
|
|
181
186
|
pendingLabel: pending !== void 0 && pending !== original
|
|
182
187
|
});
|
|
183
188
|
}
|
|
@@ -279,7 +284,7 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
279
284
|
const id = editingId.value;
|
|
280
285
|
const next = editingValue.value.trim();
|
|
281
286
|
const row = state.preset.presetsById.value.get(id);
|
|
282
|
-
const original = row ?
|
|
287
|
+
const original = row ? require_use_table_state.readPresetLabel(row) : "";
|
|
283
288
|
const map = new Map(pendingLabels.value);
|
|
284
289
|
if (!next || next === original) map.delete(id);
|
|
285
290
|
else map.set(id, next);
|
|
@@ -289,9 +294,15 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
289
294
|
cancelRename();
|
|
290
295
|
}
|
|
291
296
|
const saving = (0, vue.ref)(false);
|
|
297
|
+
const errorText = (0, vue.ref)("");
|
|
292
298
|
async function save() {
|
|
293
299
|
if (!isDirty.value || saving.value) return;
|
|
294
300
|
saving.value = true;
|
|
301
|
+
errorText.value = "";
|
|
302
|
+
const failedLabels = /* @__PURE__ */ new Map();
|
|
303
|
+
const failedPublicIds = /* @__PURE__ */ new Set();
|
|
304
|
+
const failedDeleteIds = /* @__PURE__ */ new Set();
|
|
305
|
+
const failures = [];
|
|
295
306
|
try {
|
|
296
307
|
await state.preset.batch(async () => {
|
|
297
308
|
const deleted = pendingDeleteIds.value;
|
|
@@ -304,17 +315,28 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
304
315
|
if (state.preset.isOwned(id)) continue;
|
|
305
316
|
cleaned.push(id);
|
|
306
317
|
}
|
|
307
|
-
|
|
318
|
+
try {
|
|
319
|
+
await state.preset.setFavorites(cleaned);
|
|
320
|
+
} catch (err) {
|
|
321
|
+
failures.push(require_error_message.errorMessage(err, "The change could not be saved."));
|
|
322
|
+
}
|
|
308
323
|
}
|
|
309
324
|
if (pendingDefaultId.value !== serverDefaultId.value) {
|
|
310
325
|
const next = pendingDefaultId.value && deleted.has(pendingDefaultId.value) ? null : pendingDefaultId.value;
|
|
311
|
-
if (next !== serverDefaultId.value)
|
|
326
|
+
if (next !== serverDefaultId.value) try {
|
|
327
|
+
await state.preset.setDefault(next);
|
|
328
|
+
} catch (err) {
|
|
329
|
+
failures.push(require_error_message.errorMessage(err, "The change could not be saved."));
|
|
330
|
+
}
|
|
312
331
|
}
|
|
313
332
|
if (pendingLabels.value.size > 0) for (const [id, label] of pendingLabels.value) {
|
|
314
333
|
if (deleted.has(id)) continue;
|
|
315
334
|
try {
|
|
316
335
|
await state.preset.rename(id, label);
|
|
317
|
-
} catch (
|
|
336
|
+
} catch (err) {
|
|
337
|
+
failedLabels.set(id, label);
|
|
338
|
+
failures.push(require_error_message.errorMessage(err, "The change could not be saved."));
|
|
339
|
+
}
|
|
318
340
|
}
|
|
319
341
|
if (!(0, _atscript_ui_table.setsEqual)(pendingPublicIds.value, serverPublicIds.value)) {
|
|
320
342
|
const flips = [];
|
|
@@ -328,12 +350,35 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
328
350
|
}
|
|
329
351
|
for (const id of flips) try {
|
|
330
352
|
await state.preset.togglePublic(id);
|
|
331
|
-
} catch (
|
|
353
|
+
} catch (err) {
|
|
354
|
+
failedPublicIds.add(id);
|
|
355
|
+
failures.push(require_error_message.errorMessage(err, "The change could not be saved."));
|
|
356
|
+
}
|
|
332
357
|
}
|
|
333
358
|
if (deleted.size > 0) for (const id of deleted) try {
|
|
334
359
|
await state.preset.remove(id);
|
|
335
|
-
} catch (
|
|
360
|
+
} catch (err) {
|
|
361
|
+
failedDeleteIds.add(id);
|
|
362
|
+
failures.push(require_error_message.errorMessage(err, "The change could not be saved."));
|
|
363
|
+
}
|
|
336
364
|
});
|
|
365
|
+
if (failures.length > 0) {
|
|
366
|
+
syncPendingFromServer();
|
|
367
|
+
if (failedLabels.size > 0) {
|
|
368
|
+
const labels = new Map(pendingLabels.value);
|
|
369
|
+
for (const [id, label] of failedLabels) labels.set(id, label);
|
|
370
|
+
pendingLabels.value = labels;
|
|
371
|
+
}
|
|
372
|
+
if (failedPublicIds.size > 0) {
|
|
373
|
+
const publics = new Set(pendingPublicIds.value);
|
|
374
|
+
for (const id of failedPublicIds) if (publics.has(id)) publics.delete(id);
|
|
375
|
+
else publics.add(id);
|
|
376
|
+
pendingPublicIds.value = publics;
|
|
377
|
+
}
|
|
378
|
+
if (failedDeleteIds.size > 0) pendingDeleteIds.value = new Set([...pendingDeleteIds.value, ...failedDeleteIds]);
|
|
379
|
+
errorText.value = failures.length === 1 ? failures[0] : `${failures.length} changes could not be saved.`;
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
337
382
|
if (pendingActiveId.value !== null && pendingActiveId.value !== state.preset.activeId.value && !pendingDeleteIds.value.has(pendingActiveId.value)) state.preset.apply(pendingActiveId.value);
|
|
338
383
|
state.preset.dialogOpen.value = false;
|
|
339
384
|
} finally {
|
|
@@ -342,6 +387,7 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
342
387
|
}
|
|
343
388
|
function discardOrClose() {
|
|
344
389
|
syncPendingFromServer();
|
|
390
|
+
errorText.value = "";
|
|
345
391
|
state.preset.dialogOpen.value = false;
|
|
346
392
|
}
|
|
347
393
|
function rowFavTitle(row) {
|
|
@@ -385,20 +431,24 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
385
431
|
default: (0, vue.withCtx)(() => [..._cache[5] || (_cache[5] = [(0, vue.createTextVNode)("Presets", -1)])]),
|
|
386
432
|
_: 1
|
|
387
433
|
}),
|
|
434
|
+
(0, vue.createVNode)((0, vue.unref)(reka_ui.DialogDescription), { class: "sr-only" }, {
|
|
435
|
+
default: (0, vue.withCtx)(() => [..._cache[6] || (_cache[6] = [(0, vue.createTextVNode)(" Rename, share, favorite, pin as default or delete your saved table views. ", -1)])]),
|
|
436
|
+
_: 1
|
|
437
|
+
}),
|
|
388
438
|
(0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)(counterText.value), 1),
|
|
389
439
|
(0, vue.createVNode)((0, vue.unref)(reka_ui.DialogClose), {
|
|
390
440
|
class: "as-preset-dialog-close",
|
|
391
441
|
"aria-label": "Close",
|
|
392
442
|
onClick: (0, vue.withModifiers)(discardOrClose, ["prevent"])
|
|
393
443
|
}, {
|
|
394
|
-
default: (0, vue.withCtx)(() => [..._cache[
|
|
444
|
+
default: (0, vue.withCtx)(() => [..._cache[7] || (_cache[7] = [(0, vue.createElementVNode)("span", {
|
|
395
445
|
class: "i-as-close",
|
|
396
446
|
"aria-hidden": "true"
|
|
397
447
|
}, null, -1)])]),
|
|
398
448
|
_: 1
|
|
399
449
|
})
|
|
400
450
|
]),
|
|
401
|
-
(0, vue.createElementVNode)("div", _hoisted_3, [(0, vue.createElementVNode)("div", _hoisted_4, [_cache[
|
|
451
|
+
(0, vue.createElementVNode)("div", _hoisted_3, [(0, vue.createElementVNode)("div", _hoisted_4, [_cache[8] || (_cache[8] = (0, vue.createElementVNode)("span", {
|
|
402
452
|
class: "i-as-search as-preset-dialog-search-icon",
|
|
403
453
|
"aria-hidden": "true"
|
|
404
454
|
}, null, -1)), (0, vue.withDirectives)((0, vue.createElementVNode)("input", {
|
|
@@ -408,7 +458,7 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
408
458
|
type: "search",
|
|
409
459
|
class: "as-preset-dialog-search-input",
|
|
410
460
|
placeholder: "Search by name or owner…"
|
|
411
|
-
}, null, 512), [[vue.vModelText, searchQuery.value]])]), _cache[
|
|
461
|
+
}, null, 512), [[vue.vModelText, searchQuery.value]])]), _cache[9] || (_cache[9] = (0, vue.createElementVNode)("div", { class: "as-preset-dialog-legend" }, [
|
|
412
462
|
(0, vue.createElementVNode)("span", { class: "as-preset-dialog-legend-item" }, [(0, vue.createElementVNode)("span", {
|
|
413
463
|
class: "i-as-pin as-preset-dialog-legend-icon",
|
|
414
464
|
"aria-hidden": "true"
|
|
@@ -496,9 +546,9 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
496
546
|
key: a,
|
|
497
547
|
class: "as-preset-dialog-aspect-chip",
|
|
498
548
|
"data-on": row.aspects.includes(a) ? "" : void 0,
|
|
499
|
-
title: (0, vue.unref)(
|
|
549
|
+
title: (0, vue.unref)(require_use_table_state.ASPECT_LABELS)[a]
|
|
500
550
|
}, [(0, vue.createElementVNode)("span", {
|
|
501
|
-
class: (0, vue.normalizeClass)((0, vue.unref)(
|
|
551
|
+
class: (0, vue.normalizeClass)((0, vue.unref)(require_use_table_state.ASPECT_ICONS)[a]),
|
|
502
552
|
"aria-hidden": "true"
|
|
503
553
|
}, null, 2)], 8, _hoisted_20);
|
|
504
554
|
}), 128))]),
|
|
@@ -517,7 +567,7 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
517
567
|
key: 3,
|
|
518
568
|
class: "as-preset-dialog-row-public-indicator",
|
|
519
569
|
title: rowPublicTitle(row)
|
|
520
|
-
}, [..._cache[
|
|
570
|
+
}, [..._cache[10] || (_cache[10] = [(0, vue.createElementVNode)("span", {
|
|
521
571
|
class: "i-as-eye",
|
|
522
572
|
"aria-hidden": "true"
|
|
523
573
|
}, null, -1)])], 8, _hoisted_22)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_23)),
|
|
@@ -529,17 +579,17 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
529
579
|
"aria-pressed": pendingDeleteIds.value.has(row.id),
|
|
530
580
|
title: pendingDeleteIds.value.has(row.id) ? "Marked for deletion — click to undo" : "Mark for deletion (applied on Save)",
|
|
531
581
|
onClick: ($event) => toggleDeletePending(row.id)
|
|
532
|
-
}, [..._cache[
|
|
582
|
+
}, [..._cache[11] || (_cache[11] = [(0, vue.createElementVNode)("span", {
|
|
533
583
|
class: "i-as-trash",
|
|
534
584
|
"aria-hidden": "true"
|
|
535
585
|
}, null, -1)])], 8, _hoisted_24)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_25))
|
|
536
586
|
], 8, _hoisted_8);
|
|
537
587
|
}), 128))], 64);
|
|
538
588
|
}), 128))]),
|
|
539
|
-
(0, vue.createElementVNode)("footer", _hoisted_26, [(0, vue.createElementVNode)("div", _hoisted_27, [
|
|
589
|
+
(0, vue.createElementVNode)("footer", _hoisted_26, [(0, vue.createElementVNode)("div", _hoisted_27, [errorText.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_28, (0, vue.toDisplayString)(errorText.value), 1)) : isDirty.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_29, [..._cache[12] || (_cache[12] = [(0, vue.createElementVNode)("span", {
|
|
540
590
|
class: "as-preset-dialog-footer-unsaved-dot",
|
|
541
591
|
"aria-hidden": "true"
|
|
542
|
-
}, null, -1), (0, vue.createTextVNode)(" unsaved changes ", -1)])])) : (0, vue.createCommentVNode)("v-if", true)]), (0, vue.createElementVNode)("div",
|
|
592
|
+
}, null, -1), (0, vue.createTextVNode)(" unsaved changes ", -1)])])) : (0, vue.createCommentVNode)("v-if", true)]), (0, vue.createElementVNode)("div", _hoisted_30, [(0, vue.createElementVNode)("button", {
|
|
543
593
|
type: "button",
|
|
544
594
|
class: "as-preset-dialog-footer-close",
|
|
545
595
|
onClick: discardOrClose
|
|
@@ -548,7 +598,7 @@ var as_preset_dialog_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
548
598
|
class: "as-preset-dialog-footer-save",
|
|
549
599
|
disabled: !isDirty.value || saving.value,
|
|
550
600
|
onClick: save
|
|
551
|
-
}, (0, vue.toDisplayString)(saving.value ? "Saving…" : "Save"), 9,
|
|
601
|
+
}, (0, vue.toDisplayString)(saving.value ? "Saving…" : "Save"), 9, _hoisted_31)])])
|
|
552
602
|
]),
|
|
553
603
|
_: 1
|
|
554
604
|
})]),
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const require_as_preset_dialog = require("./as-preset-dialog-
|
|
1
|
+
const require_as_preset_dialog = require("./as-preset-dialog-jZeyXJeJ.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-
|
|
1
|
+
import { t as as_preset_dialog_default } from "./as-preset-dialog-CCIacZ2C.mjs";
|
|
2
2
|
export { as_preset_dialog_default as default };
|