@antelopejs/dms 0.7.19 → 0.7.21
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/CHANGELOG.md +35 -0
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.js +27 -0
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js +11 -0
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js.map +1 -1
- package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +13 -3
- package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardsDisplay.vue +1 -1
- package/frontend-vue/layers/dms-ui/app/build/composables/actions/rowNavigation.ts +14 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/actions/useActionTargets.ts +70 -8
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRecordLink.ts +93 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableUrlTab.ts +42 -12
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewConfig.ts +3 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +3 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/recordLink.ts +18 -16
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/urlFilters.ts +18 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/views.ts +29 -0
- package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +43 -54
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +2 -0
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/display.ts +6 -0
- package/frontend-vue/tests/row-side-panel.test.ts +93 -2
- package/frontend-vue/tests/table-view-bulk-drawer.test.ts +117 -0
- package/frontend-vue/tests/table-view-cards-reread.test.ts +77 -0
- package/frontend-vue/tests/table-view-record-link.test.ts +207 -0
- package/frontend-vue/tests/table-view-url-tab.test.ts +84 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.7.21
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.20...v0.7.21)
|
|
6
|
+
|
|
7
|
+
### 🚀 Enhancements
|
|
8
|
+
|
|
9
|
+
- **table-view:** Let a row's panel, drawer or modal show another row in place ([#252](https://github.com/AntelopeJS/dms/pull/252))
|
|
10
|
+
- **table-view:** Let a table view drop the built-in table display ([#255](https://github.com/AntelopeJS/dms/pull/255))
|
|
11
|
+
|
|
12
|
+
### 🩹 Fixes
|
|
13
|
+
|
|
14
|
+
- **table-view:** Keep an empty list on screen while it is read again ([#250](https://github.com/AntelopeJS/dms/pull/250))
|
|
15
|
+
- **table-view:** Serve the row menu label to the browser ([#253](https://github.com/AntelopeJS/dms/pull/253))
|
|
16
|
+
- **table-view:** Keep the tab the user opens in the URL ([#254](https://github.com/AntelopeJS/dms/pull/254))
|
|
17
|
+
|
|
18
|
+
### 🏡 Chore
|
|
19
|
+
|
|
20
|
+
- **release:** @antelopejs/interface-dms v0.5.13 ([6b58111b](https://github.com/AntelopeJS/dms/commit/6b58111b))
|
|
21
|
+
|
|
22
|
+
### ❤️ Contributors
|
|
23
|
+
|
|
24
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
25
|
+
|
|
26
|
+
## v0.7.20
|
|
27
|
+
|
|
28
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.19...v0.7.20)
|
|
29
|
+
|
|
30
|
+
### 🩹 Fixes
|
|
31
|
+
|
|
32
|
+
- **table-view:** Reopen a record link to a closed row and keep chips from restoring it ([#249](https://github.com/AntelopeJS/dms/pull/249))
|
|
33
|
+
|
|
34
|
+
### ❤️ Contributors
|
|
35
|
+
|
|
36
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
37
|
+
|
|
3
38
|
## v0.7.19
|
|
4
39
|
|
|
5
40
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.18...v0.7.19)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const request_filter_1 = require("@antelopejs/interface-dms/base/table-view/internal/request-filter");
|
|
5
|
+
const ALL_GRANTED = {
|
|
6
|
+
add: true,
|
|
7
|
+
edit: true,
|
|
8
|
+
delete: true,
|
|
9
|
+
view: true,
|
|
10
|
+
archive: true,
|
|
11
|
+
restore: true,
|
|
12
|
+
viewArchived: true,
|
|
13
|
+
export: true,
|
|
14
|
+
};
|
|
15
|
+
describe("[unit] interfaces/dms-base/table-view row menu label", () => {
|
|
16
|
+
it("serves the table's menuLabel to the browser", () => {
|
|
17
|
+
const served = (0, request_filter_1.adaptRowActions)({
|
|
18
|
+
rowActions: { menuLabel: "$features.row_menu" },
|
|
19
|
+
archiveMode: false,
|
|
20
|
+
grants: ALL_GRANTED,
|
|
21
|
+
custom: undefined,
|
|
22
|
+
controllerRules: undefined,
|
|
23
|
+
});
|
|
24
|
+
(0, chai_1.expect)(served.menuLabel).to.equal("$features.row_menu");
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=table-view-row-menu-label.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-view-row-menu-label.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-row-menu-label.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,sGAG2E;AAE3E,MAAM,WAAW,GAAoB;IACnC,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,IAAA,gCAAe,EAAC;YAC7B,UAAU,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;YAC/C,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,SAAS;SAC3B,CAAC,CAAC;QAEH,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -171,6 +171,17 @@ describe("[unit] interfaces/dms-base — table view sources and reorder", () =>
|
|
|
171
171
|
(0, chai_1.expect)(() => sourceOf({ pageSize: 0 })).to.throw(/pageSize/);
|
|
172
172
|
(0, chai_1.expect)(() => sourceOf({ displays: [{ id: "plan-cards" }] })).to.throw(/named "<module>:<id>"/);
|
|
173
173
|
(0, chai_1.expect)(() => sourceOf({ defaultDisplay: "cards" })).to.throw(/not declared in displays/);
|
|
174
|
+
(0, chai_1.expect)(() => sourceOf({ tableDisplay: false, displays: [{ id: "cards" }] })).to.throw(/drops the table display without a defaultDisplay/);
|
|
175
|
+
(0, chai_1.expect)(() => sourceOf({
|
|
176
|
+
tableDisplay: false,
|
|
177
|
+
displays: [{ id: "cards" }],
|
|
178
|
+
defaultDisplay: "table",
|
|
179
|
+
})).to.throw(/not declared in displays/);
|
|
180
|
+
(0, chai_1.expect)(sourceOf({
|
|
181
|
+
tableDisplay: false,
|
|
182
|
+
displays: [{ id: "cards" }],
|
|
183
|
+
defaultDisplay: "cards",
|
|
184
|
+
}).tableDisplay).to.equal(false);
|
|
174
185
|
(0, chai_1.expect)(() => sourceOf({ card: { fields: ["status"] } })).to.throw(/unknown column "status"/);
|
|
175
186
|
const both = [
|
|
176
187
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -256,6 +256,12 @@ export interface TableProps<T> {
|
|
|
256
256
|
data?: T[] | null;
|
|
257
257
|
columns?: TableColumn<T>[];
|
|
258
258
|
loading?: boolean;
|
|
259
|
+
/**
|
|
260
|
+
* No answer has arrived yet. Without it, a load with no row listed counts
|
|
261
|
+
* as the first one, which also draws the skeleton over a re-read of an
|
|
262
|
+
* empty list.
|
|
263
|
+
*/
|
|
264
|
+
firstPageLoading?: boolean;
|
|
259
265
|
/**
|
|
260
266
|
* Message (i18n key) of a failed data fetch; switches the empty-table panel
|
|
261
267
|
* to its error state so a refused query never reads as "no data".
|
|
@@ -713,7 +719,11 @@ const DEFAULT_CAPABILITIES = resolveDisplayCapabilities({
|
|
|
713
719
|
columnManagement: true,
|
|
714
720
|
});
|
|
715
721
|
|
|
716
|
-
|
|
722
|
+
// Undefined, not the `false` an absent boolean prop casts to: the table then
|
|
723
|
+
// judges the first load by itself.
|
|
724
|
+
const props = withDefaults(defineProps<TableProps<T>>(), {
|
|
725
|
+
firstPageLoading: undefined,
|
|
726
|
+
});
|
|
717
727
|
const emits = defineEmits<TableEmits<T>>();
|
|
718
728
|
|
|
719
729
|
const appConfig = useDmsAppConfig() as DmsAppConfig & {
|
|
@@ -827,7 +837,7 @@ const paginationState = defineModel<PaginationState>("pagination", {
|
|
|
827
837
|
// The first page is on its way: skeleton rows (and placeholders for the
|
|
828
838
|
// counts) hold the list's place instead of its empty state.
|
|
829
839
|
const isFirstPageLoading = computed(
|
|
830
|
-
() => !!props.loading && !props.data?.length,
|
|
840
|
+
() => props.firstPageLoading ?? (!!props.loading && !props.data?.length),
|
|
831
841
|
);
|
|
832
842
|
const skeletonRowCount = computed(() =>
|
|
833
843
|
Math.min(
|
|
@@ -1654,7 +1664,7 @@ defineShortcuts({
|
|
|
1654
1664
|
</template>
|
|
1655
1665
|
<!-- First load: skeleton rows keep the column rhythm instead of
|
|
1656
1666
|
flashing the empty state. -->
|
|
1657
|
-
<template v-else-if="
|
|
1667
|
+
<template v-else-if="isFirstPageLoading">
|
|
1658
1668
|
<tr
|
|
1659
1669
|
v-for="rowIndex in skeletonRowCount"
|
|
1660
1670
|
:key="`skeleton-${rowIndex}`"
|
|
@@ -113,7 +113,7 @@ const cardReorder = (index: number): TableViewCardReorder | undefined =>
|
|
|
113
113
|
<!-- v2 cards display: an auto-fill grid inside the table card, sharing
|
|
114
114
|
its selection and its pagination footer. -->
|
|
115
115
|
<CardGridSkeleton
|
|
116
|
-
v-if="props.context.
|
|
116
|
+
v-if="props.context.firstPageLoading"
|
|
117
117
|
:count="props.context.pagination.pageSize"
|
|
118
118
|
:fields="fieldColumns.length"
|
|
119
119
|
/>
|
|
@@ -18,8 +18,22 @@ export interface RowNavigation {
|
|
|
18
18
|
export interface RowNavigationSource {
|
|
19
19
|
rows: () => Data[];
|
|
20
20
|
rowIdKey: string;
|
|
21
|
+
/**
|
|
22
|
+
* Reads one row by id (the table's `get` route or `fetchRowUrl`): what a
|
|
23
|
+
* container's `showRow` falls back to for a row the table does not list.
|
|
24
|
+
*/
|
|
25
|
+
getRow?: (id: string) => Promise<Data | undefined>;
|
|
21
26
|
}
|
|
22
27
|
|
|
28
|
+
/**
|
|
29
|
+
* What a drawer, modal or side panel opened on a row receives to show
|
|
30
|
+
* another row of the same table in its place (`showRow` prop): the row
|
|
31
|
+
* itself, or its id, read from the rows shown or else from the table's route.
|
|
32
|
+
* The table then treats it as the open row: its highlight, its position, its
|
|
33
|
+
* `?record=`. It rejects when the row could not be read.
|
|
34
|
+
*/
|
|
35
|
+
export type ShowRow = (row: Data | string) => Promise<void>;
|
|
36
|
+
|
|
23
37
|
const rowIdOf = (row: Data, rowIdKey: string): string =>
|
|
24
38
|
String(get(row, rowIdKey));
|
|
25
39
|
|
|
@@ -25,10 +25,12 @@ import {
|
|
|
25
25
|
type RowNavigation,
|
|
26
26
|
type RowNavigationSource,
|
|
27
27
|
rowNavigation,
|
|
28
|
+
type ShowRow,
|
|
28
29
|
} from "./rowNavigation";
|
|
29
30
|
import {
|
|
30
31
|
clearWrittenRecord,
|
|
31
32
|
isDeepLinkAction,
|
|
33
|
+
resolveDeepLinkedRow,
|
|
32
34
|
writeRecordId,
|
|
33
35
|
type WrittenRecord,
|
|
34
36
|
} from "../table-view/utils/recordLink";
|
|
@@ -37,6 +39,7 @@ import {
|
|
|
37
39
|
closeRowSidePanelOf,
|
|
38
40
|
openRowSidePanel,
|
|
39
41
|
rowSidePanelOwnerKey,
|
|
42
|
+
useRowSidePanelContent,
|
|
40
43
|
} from "#dms-layout/app/build/composables/layout/rowSidePanel";
|
|
41
44
|
import type { TableUrlScope } from "../table-view/utils/views";
|
|
42
45
|
import { useActionConfirm } from "../confirm/useActionConfirm";
|
|
@@ -110,6 +113,11 @@ export interface ActionTargetsConfig {
|
|
|
110
113
|
rowNavigation?: RowNavigationSource;
|
|
111
114
|
/** Where a `deepLink` action writes the row it has open in the URL. */
|
|
112
115
|
recordScope?: TableUrlScope;
|
|
116
|
+
/**
|
|
117
|
+
* Told the row a `deepLink` action shows each time it writes it in the URL,
|
|
118
|
+
* and `undefined` once its container closed and removed it.
|
|
119
|
+
*/
|
|
120
|
+
onRecordShown?: (id?: string) => void;
|
|
113
121
|
/**
|
|
114
122
|
* The field a row's id is read from (`_id` by default): it fills `{id}` in
|
|
115
123
|
* the `from` URL of a row action's confirmation, as on a built-in action.
|
|
@@ -140,6 +148,18 @@ interface SidePanelTargetRun extends TargetRunExtras {
|
|
|
140
148
|
missingId?: string;
|
|
141
149
|
}
|
|
142
150
|
|
|
151
|
+
/**
|
|
152
|
+
* `show`, run only while the row side panel still shows `session`: a row read
|
|
153
|
+
* after the panel closed, or moved to another run, leaves it alone.
|
|
154
|
+
*/
|
|
155
|
+
function whileShown<V>(session: symbol, show: (value: V) => void) {
|
|
156
|
+
return (value: V): void => {
|
|
157
|
+
if (useRowSidePanelContent().value?.session === session) show(value);
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const NO_ROW_ROUTE = async (): Promise<undefined> => undefined;
|
|
162
|
+
|
|
143
163
|
const NOT_FOUND_TITLE_KEY = "side_panel.not_found.title";
|
|
144
164
|
const NOT_FOUND_DESCRIPTION_KEY = "side_panel.not_found.description";
|
|
145
165
|
|
|
@@ -326,13 +346,39 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
326
346
|
return (id?: string): void => {
|
|
327
347
|
if (!deepLink || !config.recordScope || !config.rowNavigation) return;
|
|
328
348
|
if (!id) {
|
|
329
|
-
clearWrittenRecord(written);
|
|
349
|
+
if (clearWrittenRecord(written)) config.onRecordShown?.(undefined);
|
|
330
350
|
written = undefined;
|
|
331
351
|
return;
|
|
332
352
|
}
|
|
333
353
|
written = writeRecordId(config.recordScope, id);
|
|
354
|
+
config.onRecordShown?.(id);
|
|
334
355
|
};
|
|
335
356
|
};
|
|
357
|
+
// `showRow` given an id: the listed row, else the one the table's route
|
|
358
|
+
// reads. A row its route answered 404 for goes to `showMissing` when the
|
|
359
|
+
// container has a state for it; any other row not found rejects. Only the
|
|
360
|
+
// latest call applies: a read that resolves after a later call is dropped.
|
|
361
|
+
const rowShower = (
|
|
362
|
+
show: (row: Data) => void,
|
|
363
|
+
showMissing?: (id: string) => void,
|
|
364
|
+
): ShowRow => {
|
|
365
|
+
let latest = 0;
|
|
366
|
+
return async (rowOrId) => {
|
|
367
|
+
const call = ++latest;
|
|
368
|
+
if (typeof rowOrId !== "string") return show(rowOrId);
|
|
369
|
+
const source = config.rowNavigation;
|
|
370
|
+
const found = await resolveDeepLinkedRow(rowOrId, {
|
|
371
|
+
listed: source?.rows(),
|
|
372
|
+
idOf: rowIdOf,
|
|
373
|
+
getRow: source?.getRow ?? NO_ROW_ROUTE,
|
|
374
|
+
});
|
|
375
|
+
if (call !== latest) return;
|
|
376
|
+
if (found.row) return show(found.row);
|
|
377
|
+
if (found.isMissing && showMissing) return showMissing(rowOrId);
|
|
378
|
+
throw new Error(`The row "${rowOrId}" could not be read`);
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
|
|
336
382
|
const rowRecorder = (deepLink?: boolean) => {
|
|
337
383
|
const recordId = recordRecorder(deepLink);
|
|
338
384
|
return (row?: Data): void => recordId(rowIdOf(row));
|
|
@@ -376,6 +422,10 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
376
422
|
componentId: config.componentId,
|
|
377
423
|
containerId: run.containerId,
|
|
378
424
|
selection: run.selection,
|
|
425
|
+
showRow: rowShower(
|
|
426
|
+
whileShown(session, showRow),
|
|
427
|
+
whileShown(session, showMissing),
|
|
428
|
+
),
|
|
379
429
|
onSuccessCallback: () => {
|
|
380
430
|
closeRowSidePanel(session);
|
|
381
431
|
config.refreshCallback?.();
|
|
@@ -383,7 +433,7 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
383
433
|
},
|
|
384
434
|
onClose: () => recordId(undefined),
|
|
385
435
|
};
|
|
386
|
-
|
|
436
|
+
function showRow(row?: Data) {
|
|
387
437
|
openRowSidePanel({
|
|
388
438
|
...panel,
|
|
389
439
|
rowTitle: rowTitleOf(run.target, row),
|
|
@@ -393,10 +443,13 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
393
443
|
showRow,
|
|
394
444
|
});
|
|
395
445
|
recordId(rowIdOf(row));
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
446
|
+
}
|
|
447
|
+
function showMissing(id: string) {
|
|
448
|
+
openRowSidePanel({ ...panel, notFound: notFoundOf(run.target), showRow });
|
|
449
|
+
recordId(id);
|
|
450
|
+
}
|
|
451
|
+
if (run.missingId) return showMissing(run.missingId);
|
|
452
|
+
showRow(run.rowData);
|
|
400
453
|
};
|
|
401
454
|
|
|
402
455
|
// A container opened on a listed row steps through the rows shown (its
|
|
@@ -409,6 +462,12 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
409
462
|
const source = config.rowNavigation;
|
|
410
463
|
let instance: ContainerInstance | undefined;
|
|
411
464
|
let navigation: RowNavigation | undefined;
|
|
465
|
+
// Set once the container closes: a row read that resolves later neither
|
|
466
|
+
// writes `?record=` back nor patches the closed container.
|
|
467
|
+
let closed = false;
|
|
468
|
+
const showRowById = rowShower((row) => {
|
|
469
|
+
if (!closed) showRow(row);
|
|
470
|
+
});
|
|
412
471
|
const optionsFor = (row?: Data) => {
|
|
413
472
|
navigation =
|
|
414
473
|
row && source ? rowNavigation(source, row, showRow) : undefined;
|
|
@@ -419,6 +478,7 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
419
478
|
containerId: run.containerId,
|
|
420
479
|
rowData: row,
|
|
421
480
|
navigation,
|
|
481
|
+
showRow: showRowById,
|
|
422
482
|
selection: run.selection,
|
|
423
483
|
onSuccessCallback: () => {
|
|
424
484
|
instance?.close();
|
|
@@ -430,14 +490,16 @@ export function useActionTargets(config: ActionTargetsConfig) {
|
|
|
430
490
|
function showRow(row: Data) {
|
|
431
491
|
instance?.patch({
|
|
432
492
|
componentOptions: optionsFor(row),
|
|
433
|
-
componentKey:
|
|
493
|
+
componentKey: rowIdOf(row),
|
|
434
494
|
});
|
|
435
495
|
recordRow(row);
|
|
436
496
|
}
|
|
437
497
|
instance = openContainer(run, component, optionsFor(run.rowData));
|
|
438
498
|
recordRow(run.rowData);
|
|
439
|
-
|
|
499
|
+
// `showRow` may move an unlisted row's container onto a listed one.
|
|
500
|
+
const stopSteps = source ? listenRowSteps(() => navigation) : undefined;
|
|
440
501
|
const settle = () => {
|
|
502
|
+
closed = true;
|
|
441
503
|
stopSteps?.();
|
|
442
504
|
recordRow(undefined);
|
|
443
505
|
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { router as inertiaRouter } from "@inertiajs/vue3";
|
|
2
|
+
import { onBeforeUnmount, onMounted, watch } from "vue";
|
|
3
|
+
import type { CustomRowAction } from "../../../types/row-action";
|
|
4
|
+
import {
|
|
5
|
+
deepLinkOutcome,
|
|
6
|
+
type DeepLinkedRow,
|
|
7
|
+
readRecordId,
|
|
8
|
+
writeRecordId,
|
|
9
|
+
} from "./utils/recordLink";
|
|
10
|
+
import { queryOfUrl } from "./utils/urlFilters";
|
|
11
|
+
import type { TableUrlScope } from "./utils/views";
|
|
12
|
+
|
|
13
|
+
/** What `useTableRecordLink` follows the URL's `?record=` with. */
|
|
14
|
+
export interface TableRecordLinkOptions<T> {
|
|
15
|
+
route: { query: Record<string, unknown> };
|
|
16
|
+
urlScope: TableUrlScope;
|
|
17
|
+
/** The table's `deepLink` action: the container a link opens. */
|
|
18
|
+
action: CustomRowAction;
|
|
19
|
+
/** Finds the row a link names, once the list is loaded. */
|
|
20
|
+
resolve: (id: string) => Promise<DeepLinkedRow<T>>;
|
|
21
|
+
/** Opens the row found in the action's container. */
|
|
22
|
+
open: (row: T) => void;
|
|
23
|
+
/** Opens a side panel's own "no longer available" state on the id. */
|
|
24
|
+
showMissing: (id: string) => void;
|
|
25
|
+
/** Tells the user the link led nowhere, or could not be followed. */
|
|
26
|
+
notify: (outcome: "notify" | "notifyFailed") => void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** What the table tells the link about the row its container shows. */
|
|
30
|
+
export interface TableRecordLink {
|
|
31
|
+
/**
|
|
32
|
+
* The row the action's container shows, as written in the URL, or
|
|
33
|
+
* `undefined` once it closed: a link to the row shown opens nothing again,
|
|
34
|
+
* a link to a row closed reopens it.
|
|
35
|
+
*/
|
|
36
|
+
shown: (id?: string) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Opens the row the URL's `?record=` names: on arrival, and on each visit
|
|
41
|
+
* that keeps the page mounted (a link to the same page naming a row, back and
|
|
42
|
+
* forward), as a fresh load would. The visit is followed rather than the
|
|
43
|
+
* route's value: the table writes and removes the key in place, so a link to
|
|
44
|
+
* a row closed meanwhile leaves the route's value unchanged. A link naming no
|
|
45
|
+
* row removes the key and tells the user.
|
|
46
|
+
*/
|
|
47
|
+
export function useTableRecordLink<T>(
|
|
48
|
+
options: TableRecordLinkOptions<T>,
|
|
49
|
+
): TableRecordLink {
|
|
50
|
+
const { action, urlScope } = options;
|
|
51
|
+
// The row opened or being opened: arrival and the visit that mounted the
|
|
52
|
+
// table name it twice, a visit while it is open names it again.
|
|
53
|
+
let linkedId: string | undefined;
|
|
54
|
+
|
|
55
|
+
const settle = async (id: string) => {
|
|
56
|
+
const found = await options.resolve(id);
|
|
57
|
+
const outcome = deepLinkOutcome(found, action);
|
|
58
|
+
if (outcome === "open") return options.open(found.row as T);
|
|
59
|
+
if (outcome === "missingPanel") return options.showMissing(id);
|
|
60
|
+
writeRecordId(urlScope);
|
|
61
|
+
if (linkedId === id) linkedId = undefined;
|
|
62
|
+
options.notify(outcome);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const follow = (query: Record<string, unknown>) => {
|
|
66
|
+
const id = readRecordId(query, urlScope);
|
|
67
|
+
if (!id || id === linkedId) return;
|
|
68
|
+
linkedId = id;
|
|
69
|
+
void settle(id);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
let stopFollowingVisits: (() => void) | undefined;
|
|
73
|
+
onMounted(() => {
|
|
74
|
+
follow(options.route.query);
|
|
75
|
+
stopFollowingVisits = inertiaRouter.on("navigate", (event) =>
|
|
76
|
+
follow(queryOfUrl(event.detail.page.url)),
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
onBeforeUnmount(() => stopFollowingVisits?.());
|
|
80
|
+
|
|
81
|
+
// A visit Inertia does not announce (a `router.replace`) still moves the
|
|
82
|
+
// route: a new value there is followed as well.
|
|
83
|
+
watch(
|
|
84
|
+
() => readRecordId(options.route.query, urlScope),
|
|
85
|
+
() => follow(options.route.query),
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
shown: (id) => {
|
|
90
|
+
linkedId = id;
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { router as inertiaRouter } from "@inertiajs/vue3";
|
|
2
|
+
import { onBeforeUnmount, onMounted, watch, type Ref } from "vue";
|
|
3
|
+
import { queryOfUrl } from "./utils/urlFilters";
|
|
4
|
+
import {
|
|
5
|
+
readTableUrlKey,
|
|
6
|
+
type TableUrlScope,
|
|
7
|
+
writeTableUrlKey,
|
|
8
|
+
} from "./utils/views";
|
|
3
9
|
|
|
4
10
|
const TAB_URL_KEY = "tab";
|
|
5
11
|
|
|
@@ -30,18 +36,42 @@ export function readTableUrlTab(
|
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
39
|
+
* Keeps the open tab and the URL in step after arrival. A tab the user opens
|
|
40
|
+
* is written to the URL in place (no visit, no history entry), under the key
|
|
41
|
+
* it is read from, so a reload or a shared link opens it again. A link or a
|
|
42
|
+
* `router.replace` naming another tab of the same page switches to it without
|
|
43
|
+
* remounting the page. A URL dropping the key, or naming a tab the table
|
|
44
|
+
* cannot open in place (an unknown id, a link tab), leaves the open tab alone.
|
|
37
45
|
*/
|
|
38
46
|
export function useTableUrlTab(options: TableUrlTabOptions): void {
|
|
47
|
+
const { activeTabId, urlScope } = options;
|
|
48
|
+
|
|
49
|
+
const follow = (query: Record<string, unknown>) => {
|
|
50
|
+
const tabId = readTableUrlTab(query, urlScope);
|
|
51
|
+
if (!tabId || tabId === activeTabId.value) return;
|
|
52
|
+
if (!options.isOpenable(tabId)) return;
|
|
53
|
+
activeTabId.value = tabId;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// The tab is written in place, so the route keeps the value of the last
|
|
57
|
+
// visit: a link back to that tab leaves it unchanged, and only the visit
|
|
58
|
+
// tells it was followed. A `router.replace`, which Inertia does not
|
|
59
|
+
// announce, still moves the route.
|
|
39
60
|
watch(
|
|
40
|
-
() => readTableUrlTab(options.route.query,
|
|
41
|
-
(
|
|
42
|
-
if (!tabId || tabId === options.activeTabId.value) return;
|
|
43
|
-
if (!options.isOpenable(tabId)) return;
|
|
44
|
-
options.activeTabId.value = tabId;
|
|
45
|
-
},
|
|
61
|
+
() => readTableUrlTab(options.route.query, urlScope),
|
|
62
|
+
() => follow(options.route.query),
|
|
46
63
|
);
|
|
64
|
+
let stopFollowingVisits: (() => void) | undefined;
|
|
65
|
+
onMounted(() => {
|
|
66
|
+
stopFollowingVisits = inertiaRouter.on("navigate", (event) =>
|
|
67
|
+
follow(queryOfUrl(event.detail.page.url)),
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
onBeforeUnmount(() => stopFollowingVisits?.());
|
|
71
|
+
|
|
72
|
+
watch(activeTabId, (tabId) => {
|
|
73
|
+
if (options.isOpenable(tabId)) {
|
|
74
|
+
writeTableUrlKey(urlScope, TAB_URL_KEY, tabId);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
47
77
|
}
|
|
@@ -103,10 +103,11 @@ export const useTableViewConfig = <T extends Data>(
|
|
|
103
103
|
);
|
|
104
104
|
|
|
105
105
|
// Config-derived (SSR-safe; the registry is client-only): the implicit `table`
|
|
106
|
-
// display plus explicit `displays`. Built-in defaults
|
|
106
|
+
// display (unless `tableDisplay` is false) plus explicit `displays`. Built-in defaults
|
|
107
107
|
// (selfManagedData/capabilities) are merged per id.
|
|
108
108
|
const resolvedDisplays: TableViewDisplayConfig[] = (() => {
|
|
109
|
-
const list: TableViewDisplayConfig[] =
|
|
109
|
+
const list: TableViewDisplayConfig[] =
|
|
110
|
+
config.tableDisplay === false ? [] : [{ id: TABLE_DISPLAY_ID }];
|
|
110
111
|
for (const display of config.displays ?? []) {
|
|
111
112
|
if (display.id === TABLE_DISPLAY_ID) continue;
|
|
112
113
|
list.push(display);
|
package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts
CHANGED
|
@@ -76,6 +76,8 @@ interface TableRowActionsConfig {
|
|
|
76
76
|
rowNavigation?: RowNavigationSource;
|
|
77
77
|
/** Where a `deepLink` action writes its open row in the URL. */
|
|
78
78
|
recordScope?: TableUrlScope;
|
|
79
|
+
/** Told the row a `deepLink` action shows, `undefined` once closed. */
|
|
80
|
+
onRecordShown?: (id?: string) => void;
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
interface BulkActionConfig {
|
|
@@ -814,6 +816,7 @@ export const useTableRowActions = <T extends Data>(
|
|
|
814
816
|
handleApiError,
|
|
815
817
|
rowNavigation: config.rowNavigation,
|
|
816
818
|
recordScope: config.recordScope,
|
|
819
|
+
onRecordShown: config.onRecordShown,
|
|
817
820
|
rowIdKey: config.rowIdKey,
|
|
818
821
|
});
|
|
819
822
|
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { CustomRowAction } from "../../../../types/row-action";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
readTableUrlKey,
|
|
4
|
+
tableUrlKey,
|
|
5
|
+
type TableUrlScope,
|
|
6
|
+
writeTableUrlKey,
|
|
7
|
+
} from "./views";
|
|
3
8
|
import { readFetchNotFound } from "../../../utils/fetchNotFound";
|
|
4
9
|
|
|
5
10
|
/** Query key of the row a `deepLink` action has open. */
|
|
@@ -7,9 +12,7 @@ export const RECORD_URL_KEY = "record";
|
|
|
7
12
|
|
|
8
13
|
/** The key this table writes the open row under: short on a sole table. */
|
|
9
14
|
export function recordUrlKey(scope: TableUrlScope): string {
|
|
10
|
-
return scope
|
|
11
|
-
? RECORD_URL_KEY
|
|
12
|
-
: `${scope.tableId}.${RECORD_URL_KEY}`;
|
|
15
|
+
return tableUrlKey(scope, RECORD_URL_KEY);
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
/** The row the URL names for this table, if any. */
|
|
@@ -29,13 +32,9 @@ export function writeRecordId(
|
|
|
29
32
|
scope: TableUrlScope,
|
|
30
33
|
id?: string,
|
|
31
34
|
): WrittenRecord | undefined {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (id) url.searchParams.set(key, id);
|
|
36
|
-
else url.searchParams.delete(key);
|
|
37
|
-
window.history.replaceState(window.history.state, "", url);
|
|
38
|
-
return id ? { pathname: url.pathname, key, id } : undefined;
|
|
35
|
+
const url = writeTableUrlKey(scope, RECORD_URL_KEY, id);
|
|
36
|
+
if (!url || !id) return undefined;
|
|
37
|
+
return { pathname: url.pathname, key: recordUrlKey(scope), id };
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
/**
|
|
@@ -58,15 +57,18 @@ export interface WrittenRecord {
|
|
|
58
57
|
/**
|
|
59
58
|
* Removes the row a table wrote in the URL, only while the URL still holds
|
|
60
59
|
* it: a container closing as the user leaves the page must not erase the
|
|
61
|
-
* `?record=` of the page reached.
|
|
60
|
+
* `?record=` of the page reached. Returns whether it removed it.
|
|
62
61
|
*/
|
|
63
|
-
export function clearWrittenRecord(
|
|
64
|
-
|
|
62
|
+
export function clearWrittenRecord(
|
|
63
|
+
written: WrittenRecord | undefined,
|
|
64
|
+
): boolean {
|
|
65
|
+
if (typeof window === "undefined" || !written) return false;
|
|
65
66
|
const url = new URL(window.location.href);
|
|
66
|
-
if (url.pathname !== written.pathname) return;
|
|
67
|
-
if (url.searchParams.get(written.key) !== written.id) return;
|
|
67
|
+
if (url.pathname !== written.pathname) return false;
|
|
68
|
+
if (url.searchParams.get(written.key) !== written.id) return false;
|
|
68
69
|
url.searchParams.delete(written.key);
|
|
69
70
|
window.history.replaceState(window.history.state, "", url);
|
|
71
|
+
return true;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
/** Where a deep link finds its row: among the rows listed, or by id. */
|