nuxt-ui-tools 1.6.1 → 1.6.2
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/module.json +1 -1
- package/dist/runtime/table/builders/index.d.ts +2 -2
- package/dist/runtime/table/components/table/table-renderer.d.vue.ts +6 -6
- package/dist/runtime/table/components/table/table-renderer.vue +83 -8
- package/dist/runtime/table/components/table/table-renderer.vue.d.ts +6 -6
- package/dist/runtime/table/composables/use-table-data.d.ts +3 -0
- package/dist/runtime/table/composables/use-table-data.js +12 -0
- package/dist/runtime/table/composables/use-table-summaries.js +6 -2
- package/dist/runtime/table/types/columns.d.ts +32 -18
- package/dist/runtime/table/types/layout.d.ts +2 -2
- package/dist/runtime/table/types/schema.d.ts +3 -2
- package/dist/runtime/table/utils/builders/table-source.d.ts +11 -2
- package/dist/runtime/table/utils/columns/types.d.ts +2 -2
- package/package.json +1 -1
package/dist/module.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { GenericObject, TableColumnBuilder, TableColumnCollection, TableFilterBuilder, TableSortKey, TableUiFilterCollection, TableUiFilterDefinition } from '../types/index.js';
|
|
2
2
|
export { type TableSortKey } from '../types/index.js';
|
|
3
|
-
export declare function createTableColumnBuilder<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject, TSortKey extends string = TableSortKey<TRow
|
|
3
|
+
export declare function createTableColumnBuilder<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject, TSortKey extends string = TableSortKey<TRow>, TData = unknown>(): TableColumnBuilder<TRow, TContext, TPageContext, TSortKey, TData>;
|
|
4
4
|
export declare function createTableFilterBuilder<TRow extends GenericObject, TContext extends GenericObject = GenericObject>(): TableFilterBuilder<TRow, TContext>;
|
|
5
5
|
export declare function resolveCollection<TBuilder, TResult>(collection: TResult | ((builder: TBuilder) => TResult) | undefined, builder: TBuilder): TResult | undefined;
|
|
6
|
-
export declare function resolveColumns<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject, TSortKey extends string = TableSortKey<TRow>, TColumns extends TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey> | undefined = TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey> | undefined>(columns: TColumns): TColumns extends (...args: never[]) => infer TResult ? TResult : TColumns;
|
|
6
|
+
export declare function resolveColumns<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject, TSortKey extends string = TableSortKey<TRow>, TData = unknown, TColumns extends TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey, TData> | undefined = TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey, TData> | undefined>(columns: TColumns): TColumns extends (...args: never[]) => infer TResult ? TResult : TColumns;
|
|
7
7
|
export declare function resolveUiFilters<TRow extends GenericObject, TContext extends GenericObject, TKey extends string>(filters: TableUiFilterCollection<TRow, TContext, TKey> | undefined): TableUiFilterDefinition<TRow, TContext, TKey>[] | undefined;
|
|
@@ -8,7 +8,7 @@ type __VLS_Props = {
|
|
|
8
8
|
ui?: DataListTableUi;
|
|
9
9
|
};
|
|
10
10
|
declare function refresh(): void;
|
|
11
|
-
declare var
|
|
11
|
+
declare var __VLS_33: {
|
|
12
12
|
columnSlots: TableColumnSlot[];
|
|
13
13
|
leafColumns: import("@tanstack/table-core").Column<{
|
|
14
14
|
columnPinningFeature: import("@tanstack/table-core").TableFeature;
|
|
@@ -18,16 +18,16 @@ declare var __VLS_28: {
|
|
|
18
18
|
coreRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
|
|
19
19
|
columnMeta: import("../../utils/index.js").DataListColumnMeta;
|
|
20
20
|
}, object, unknown>[];
|
|
21
|
-
},
|
|
21
|
+
}, __VLS_35: {
|
|
22
22
|
error: {};
|
|
23
23
|
retry: typeof refresh;
|
|
24
|
-
},
|
|
24
|
+
}, __VLS_44: {};
|
|
25
25
|
type __VLS_Slots = {} & {
|
|
26
|
-
footer?: (props: typeof
|
|
26
|
+
footer?: (props: typeof __VLS_33) => any;
|
|
27
27
|
} & {
|
|
28
|
-
error?: (props: typeof
|
|
28
|
+
error?: (props: typeof __VLS_35) => any;
|
|
29
29
|
} & {
|
|
30
|
-
empty?: (props: typeof
|
|
30
|
+
empty?: (props: typeof __VLS_44) => any;
|
|
31
31
|
};
|
|
32
32
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
33
33
|
resetColumnSizing: () => void;
|
|
@@ -191,7 +191,9 @@ const tableCols = computed(() => {
|
|
|
191
191
|
width: `${leaf.getSize()}px`
|
|
192
192
|
}));
|
|
193
193
|
if (filled.value) {
|
|
194
|
-
cols.splice(cols.length - table.getEndVisibleLeafColumns().length, 0, {
|
|
194
|
+
cols.splice(cols.length - table.getEndVisibleLeafColumns().length, 0, {
|
|
195
|
+
key: "fill"
|
|
196
|
+
});
|
|
195
197
|
}
|
|
196
198
|
return cols;
|
|
197
199
|
});
|
|
@@ -250,7 +252,9 @@ const headerCellProps = computed(
|
|
|
250
252
|
resizable: column.getCanResize(),
|
|
251
253
|
resize: header.getResizeHandler(),
|
|
252
254
|
resizing: column.getIsResizing(),
|
|
253
|
-
sortState: internals.tableColumns.getSortState({
|
|
255
|
+
sortState: internals.tableColumns.getSortState({
|
|
256
|
+
columnId: column.id
|
|
257
|
+
}),
|
|
254
258
|
sortable: meta?.sortable
|
|
255
259
|
}
|
|
256
260
|
];
|
|
@@ -267,7 +271,10 @@ const virtualPaddingBottom = computed(() => {
|
|
|
267
271
|
});
|
|
268
272
|
const renderedRows = computed(() => {
|
|
269
273
|
if (!virtualized.value) {
|
|
270
|
-
return tableRows.value.map((row, index) => ({
|
|
274
|
+
return tableRows.value.map((row, index) => ({
|
|
275
|
+
row,
|
|
276
|
+
virtual: { index, key: String(row.id) }
|
|
277
|
+
}));
|
|
271
278
|
}
|
|
272
279
|
return virtualRows.value.flatMap((item) => {
|
|
273
280
|
const row = tableRows.value[item.index];
|
|
@@ -358,6 +365,58 @@ function isFirstEnd(column) {
|
|
|
358
365
|
return table.getEndVisibleLeafColumns()[0]?.id === column.id;
|
|
359
366
|
}
|
|
360
367
|
const { summaries } = internals;
|
|
368
|
+
function isDeclarativeSummary(summary) {
|
|
369
|
+
return Array.isArray(summary);
|
|
370
|
+
}
|
|
371
|
+
const declarativeSummaryColumns = computed(
|
|
372
|
+
() => new Map(
|
|
373
|
+
internals.tableColumns.runtimeColumns.value.flatMap(
|
|
374
|
+
(column) => isDeclarativeSummary(column.summary) ? [[column.id, column.summary]] : []
|
|
375
|
+
)
|
|
376
|
+
)
|
|
377
|
+
);
|
|
378
|
+
const hasDeclarativeSummaries = computed(() => declarativeSummaryColumns.value.size > 0);
|
|
379
|
+
const summaryCellContext = computed(() => ({
|
|
380
|
+
data: internals.queryContent.sourceData.value,
|
|
381
|
+
rows: internals.queryContent.data.value.rows,
|
|
382
|
+
allRows: internals.queryContent.allRows.value,
|
|
383
|
+
filteredRows: internals.queryContent.filteredRows.value,
|
|
384
|
+
selectedRows: internals.selection.selectedRows.value,
|
|
385
|
+
request: {
|
|
386
|
+
...internals.queryContent.requestContext.value,
|
|
387
|
+
context: internals.queryContent.contextData.value
|
|
388
|
+
},
|
|
389
|
+
context: internals.queryContent.contextData.value,
|
|
390
|
+
pageContext: internals.queryContent.pageContextData.value
|
|
391
|
+
}));
|
|
392
|
+
function declarativeSummaryCell(columnId, rowIndex) {
|
|
393
|
+
const summary = declarativeSummaryColumns.value.get(columnId);
|
|
394
|
+
const cell = summary?.[rowIndex];
|
|
395
|
+
return cell && (!cell.condition || cell.condition(summaryCellContext.value)) ? cell : void 0;
|
|
396
|
+
}
|
|
397
|
+
const declarativeSummaryRows = computed(() => {
|
|
398
|
+
const columns = leafColumns.value.filter((column) => !column.columnDef.meta?.internal);
|
|
399
|
+
const length = Math.max(
|
|
400
|
+
0,
|
|
401
|
+
...columns.map((column) => {
|
|
402
|
+
const summary = declarativeSummaryColumns.value.get(column.id);
|
|
403
|
+
return summary?.length ?? 0;
|
|
404
|
+
})
|
|
405
|
+
);
|
|
406
|
+
return Array.from({ length }, (_, index) => index).filter(
|
|
407
|
+
(index) => columns.some((column) => declarativeSummaryCell(column.id, index))
|
|
408
|
+
);
|
|
409
|
+
});
|
|
410
|
+
const footerRows = computed(() => {
|
|
411
|
+
if (!hasDeclarativeSummaries.value) return summaries.enabled.value ? [0] : [];
|
|
412
|
+
return [
|
|
413
|
+
.../* @__PURE__ */ new Set([...declarativeSummaryRows.value, ...summaries.enabled.value ? [0] : []])
|
|
414
|
+
].sort((left, right) => left - right);
|
|
415
|
+
});
|
|
416
|
+
function renderDeclarativeSummary(columnId, rowIndex) {
|
|
417
|
+
const cell = declarativeSummaryCell(columnId, rowIndex);
|
|
418
|
+
return cell ? () => cell.render(summaryCellContext.value) : () => null;
|
|
419
|
+
}
|
|
361
420
|
const summaryColumnIds = computed(() => new Set(summaries.columns.value.map((column) => column.id)));
|
|
362
421
|
const summaryLabelColumnId = computed(
|
|
363
422
|
() => leafColumns.value.find(
|
|
@@ -386,7 +445,11 @@ function renderSummary(columnId) {
|
|
|
386
445
|
const summary = column?.summary;
|
|
387
446
|
const render = isSummaryConfig(summary) ? summary.render : void 0;
|
|
388
447
|
if (render) {
|
|
389
|
-
return () => render({
|
|
448
|
+
return () => render({
|
|
449
|
+
loading: cell.loading,
|
|
450
|
+
scope: summaries.scope.value,
|
|
451
|
+
value: cell.value
|
|
452
|
+
});
|
|
390
453
|
}
|
|
391
454
|
const value = summaries.format(columnId);
|
|
392
455
|
return () => h("span", formatNumber(value));
|
|
@@ -656,10 +719,10 @@ defineExpose({ resetColumnSizing });
|
|
|
656
719
|
</tbody>
|
|
657
720
|
|
|
658
721
|
<tfoot
|
|
659
|
-
v-if="
|
|
722
|
+
v-if="footerRows.length > 0 && !isFirstLoad && (hasDeclarativeSummaries || !empty)"
|
|
660
723
|
:class="mergeDataListUiClass('nut-dl-table__foot', void 0, ui?.tfoot)"
|
|
661
724
|
>
|
|
662
|
-
<tr class="nut-dl-table__foot-row">
|
|
725
|
+
<tr v-for="summaryRow in footerRows" :key="summaryRow" class="nut-dl-table__foot-row">
|
|
663
726
|
<template v-for="slot in columnSlots" :key="`foot-${slot.key}`">
|
|
664
727
|
<td
|
|
665
728
|
v-if="slot.kind === 'fill'"
|
|
@@ -686,8 +749,16 @@ defineExpose({ resetColumnSizing });
|
|
|
686
749
|
:data-col="slot.columnId"
|
|
687
750
|
:style="pinnedOffset(headerByColumnId.get(slot.columnId).column)"
|
|
688
751
|
>
|
|
752
|
+
<span
|
|
753
|
+
v-if="declarativeSummaryCell(slot.columnId, summaryRow)"
|
|
754
|
+
class="nut-dl-tf__value"
|
|
755
|
+
>
|
|
756
|
+
<component :is="renderDeclarativeSummary(slot.columnId, summaryRow)" />
|
|
757
|
+
</span>
|
|
689
758
|
<div
|
|
690
|
-
v-if="
|
|
759
|
+
v-else-if="
|
|
760
|
+
summaryRow === 0 && !empty && summaries.enabled.value && slot.columnId === summaryLabelColumnId
|
|
761
|
+
"
|
|
691
762
|
class="nut-dl-tf__label flex items-center gap-2 whitespace-nowrap"
|
|
692
763
|
>
|
|
693
764
|
<span
|
|
@@ -702,7 +773,11 @@ defineExpose({ resetColumnSizing });
|
|
|
702
773
|
summaryUnit
|
|
703
774
|
}}</span>
|
|
704
775
|
</div>
|
|
705
|
-
<template
|
|
776
|
+
<template
|
|
777
|
+
v-else-if="
|
|
778
|
+
summaryRow === 0 && !empty && summaries.enabled.value && summaryColumnIds.has(slot.columnId)
|
|
779
|
+
"
|
|
780
|
+
>
|
|
706
781
|
<span
|
|
707
782
|
v-if="summaries.cell(slot.columnId).loading"
|
|
708
783
|
class="nut-dl-skeleton nut-dl-tf__skeleton inline-block h-3 w-12 rounded-full align-middle"
|
|
@@ -8,7 +8,7 @@ type __VLS_Props = {
|
|
|
8
8
|
ui?: DataListTableUi;
|
|
9
9
|
};
|
|
10
10
|
declare function refresh(): void;
|
|
11
|
-
declare var
|
|
11
|
+
declare var __VLS_33: {
|
|
12
12
|
columnSlots: TableColumnSlot[];
|
|
13
13
|
leafColumns: import("@tanstack/table-core").Column<{
|
|
14
14
|
columnPinningFeature: import("@tanstack/table-core").TableFeature;
|
|
@@ -18,16 +18,16 @@ declare var __VLS_28: {
|
|
|
18
18
|
coreRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
|
|
19
19
|
columnMeta: import("../../utils/index.js").DataListColumnMeta;
|
|
20
20
|
}, object, unknown>[];
|
|
21
|
-
},
|
|
21
|
+
}, __VLS_35: {
|
|
22
22
|
error: {};
|
|
23
23
|
retry: typeof refresh;
|
|
24
|
-
},
|
|
24
|
+
}, __VLS_44: {};
|
|
25
25
|
type __VLS_Slots = {} & {
|
|
26
|
-
footer?: (props: typeof
|
|
26
|
+
footer?: (props: typeof __VLS_33) => any;
|
|
27
27
|
} & {
|
|
28
|
-
error?: (props: typeof
|
|
28
|
+
error?: (props: typeof __VLS_35) => any;
|
|
29
29
|
} & {
|
|
30
|
-
empty?: (props: typeof
|
|
30
|
+
empty?: (props: typeof __VLS_44) => any;
|
|
31
31
|
};
|
|
32
32
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
33
33
|
resetColumnSizing: () => void;
|
|
@@ -25,6 +25,9 @@ export interface UseTableDataReturn {
|
|
|
25
25
|
infiniteQuery: ReturnType<typeof useInfiniteQuery>;
|
|
26
26
|
rawData: ComputedRef<TableExternalState>;
|
|
27
27
|
data: ComputedRef<TableExternalState>;
|
|
28
|
+
sourceData: ComputedRef<unknown>;
|
|
29
|
+
allRows: ComputedRef<GenericObject[] | undefined>;
|
|
30
|
+
filteredRows: ComputedRef<GenericObject[] | undefined>;
|
|
28
31
|
selectableRows: ComputedRef<GenericObject[]>;
|
|
29
32
|
facets: ComputedRef<TableFacetExecutionResult<string>>;
|
|
30
33
|
error: ComputedRef<unknown>;
|
|
@@ -184,6 +184,9 @@ export function useTableData(params) {
|
|
|
184
184
|
const rawData = computed(
|
|
185
185
|
() => isCursorPagination.value ? cursorRawData.value : rawDataState.value
|
|
186
186
|
);
|
|
187
|
+
const sourceData = computed(
|
|
188
|
+
() => isCursorPagination.value ? infiniteQuery.data.value?.pages.at(-1) : query.data.value
|
|
189
|
+
);
|
|
187
190
|
const clientFilteredRows = computed(() => {
|
|
188
191
|
if (!params.startup.isActive.value) {
|
|
189
192
|
return [];
|
|
@@ -227,6 +230,12 @@ export function useTableData(params) {
|
|
|
227
230
|
const selectableRows = computed(
|
|
228
231
|
() => params.startup.isActive.value ? params.schema.value.source.mode === "client" ? clientSortedRows.value : data.value.rows : []
|
|
229
232
|
);
|
|
233
|
+
const allRows = computed(
|
|
234
|
+
() => params.schema.value.source.mode === "client" ? rawData.value.rows : void 0
|
|
235
|
+
);
|
|
236
|
+
const filteredRows = computed(
|
|
237
|
+
() => params.schema.value.source.mode === "client" ? clientSortedRows.value : void 0
|
|
238
|
+
);
|
|
230
239
|
const clientFacetDescriptors = computed(
|
|
231
240
|
() => globalFacetDescriptors.value.map((facet) => ({
|
|
232
241
|
key: facet.key,
|
|
@@ -460,6 +469,9 @@ export function useTableData(params) {
|
|
|
460
469
|
context,
|
|
461
470
|
contextData,
|
|
462
471
|
data,
|
|
472
|
+
sourceData,
|
|
473
|
+
allRows,
|
|
474
|
+
filteredRows,
|
|
463
475
|
error,
|
|
464
476
|
facets,
|
|
465
477
|
facetsBaseContext,
|
|
@@ -2,7 +2,11 @@ import { computed, ref, shallowRef, watch } from "vue";
|
|
|
2
2
|
import { isDate, isFunction, isObject } from "../../shared/utils/predicate.js";
|
|
3
3
|
export function useTableSummaries(params) {
|
|
4
4
|
const config = computed(() => params.schema.value.table?.summaries);
|
|
5
|
-
const columns = computed(
|
|
5
|
+
const columns = computed(
|
|
6
|
+
() => params.runtimeColumns.value.filter(
|
|
7
|
+
(column) => column.summary && !Array.isArray(column.summary)
|
|
8
|
+
)
|
|
9
|
+
);
|
|
6
10
|
const enabled = computed(() => columns.value.length > 0 || Boolean(config.value?.resolve));
|
|
7
11
|
const scopes = computed(
|
|
8
12
|
() => config.value?.scopes ?? (params.selection.selectionEnabled.value ? ["filtered", "page", "selection"] : ["filtered", "page"])
|
|
@@ -69,7 +73,7 @@ export function useTableSummaries(params) {
|
|
|
69
73
|
const remoteFiltered = scope.value === "filtered" && params.schema.value.source.mode !== "client";
|
|
70
74
|
for (const column of columns.value) {
|
|
71
75
|
const { summary } = column;
|
|
72
|
-
if (!summary) {
|
|
76
|
+
if (!summary || Array.isArray(summary)) {
|
|
73
77
|
continue;
|
|
74
78
|
}
|
|
75
79
|
const context = createContext(column.id);
|
|
@@ -39,12 +39,26 @@ export interface TableColumnSummaryConfig<TRow extends GenericObject = GenericOb
|
|
|
39
39
|
scope: TableSummaryScope;
|
|
40
40
|
}) => RenderableType;
|
|
41
41
|
}
|
|
42
|
-
export type TableColumnSummary<TRow extends GenericObject = GenericObject> = TableSummaryKind | TableColumnSummaryConfig<TRow> | ((context: TableSummaryContext<TRow>) => TableSummaryValue | Promise<TableSummaryValue>);
|
|
42
|
+
export type TableColumnSummary<TRow extends GenericObject = GenericObject, TContext extends GenericObject = TableRuntimeRecord, TPageContext extends GenericObject = TableRuntimeRecord, TData = unknown> = TableSummaryKind | TableColumnSummaryConfig<TRow> | ((context: TableSummaryContext<TRow>) => TableSummaryValue | Promise<TableSummaryValue>) | TableSummaryCellDefinition<TRow, TContext, TPageContext, TData>[];
|
|
43
|
+
export interface TableSummaryCellContext<TRow extends GenericObject = GenericObject, TContext extends GenericObject = TableRuntimeRecord, TPageContext extends GenericObject = TableRuntimeRecord, TData = unknown> {
|
|
44
|
+
data: TData | undefined;
|
|
45
|
+
rows: TRow[];
|
|
46
|
+
allRows: TRow[] | undefined;
|
|
47
|
+
filteredRows: TRow[] | undefined;
|
|
48
|
+
selectedRows: TRow[];
|
|
49
|
+
request: TableSourceRequestContext<TRow, TContext>;
|
|
50
|
+
context: TContext;
|
|
51
|
+
pageContext: TPageContext;
|
|
52
|
+
}
|
|
53
|
+
export interface TableSummaryCellDefinition<TRow extends GenericObject = GenericObject, TContext extends GenericObject = TableRuntimeRecord, TPageContext extends GenericObject = TableRuntimeRecord, TData = unknown> {
|
|
54
|
+
condition?: (context: TableSummaryCellContext<TRow, TContext, TPageContext, TData>) => boolean;
|
|
55
|
+
render: (context: TableSummaryCellContext<TRow, TContext, TPageContext, TData>) => RenderableType;
|
|
56
|
+
}
|
|
43
57
|
export interface TableColumnCellDataAttributes {
|
|
44
58
|
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
45
59
|
}
|
|
46
60
|
export type TableColumnCellProps = TableRuntimeRecord & TableColumnCellDataAttributes;
|
|
47
|
-
interface TableColumnBase<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TParams extends TableRowRenderParams<TRow, TContext, TPageContext> = TableRowRenderParams<TRow, TContext, TPageContext
|
|
61
|
+
interface TableColumnBase<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TParams extends TableRowRenderParams<TRow, TContext, TPageContext> = TableRowRenderParams<TRow, TContext, TPageContext>, TData = unknown> {
|
|
48
62
|
key: TKey;
|
|
49
63
|
label?: TableTextValue | (() => RenderableType);
|
|
50
64
|
icon?: string;
|
|
@@ -61,7 +75,7 @@ interface TableColumnBase<TRow extends GenericObject = GenericObject, TContext e
|
|
|
61
75
|
enabled?: boolean;
|
|
62
76
|
required?: boolean;
|
|
63
77
|
/** Footer aggregate for this column. */
|
|
64
|
-
summary?: TableColumnSummary<TRow>;
|
|
78
|
+
summary?: TableColumnSummary<TRow, TContext, TPageContext, TData>;
|
|
65
79
|
/** Placeholder shape rendered while the first page loads. */
|
|
66
80
|
skeleton?: TableColumnSkeleton;
|
|
67
81
|
/** Maximum wrapped lines before clamping; defaults to 3, `ellipsis: true` forces one line. */
|
|
@@ -78,32 +92,32 @@ interface TableColumnBase<TRow extends GenericObject = GenericObject, TContext e
|
|
|
78
92
|
export type TableFieldRenderParams<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow>> = TableRowRenderParams<TRow, TContext, TPageContext> & {
|
|
79
93
|
value: TableFieldValue<TRow, TField>;
|
|
80
94
|
};
|
|
81
|
-
interface TableFieldColumnBase<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow
|
|
95
|
+
interface TableFieldColumnBase<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow>, TData = unknown> extends TableColumnBase<TRow, TContext, TPageContext, TField, TableFieldRenderParams<TRow, TContext, TPageContext, TField>, TData> {
|
|
82
96
|
kind: 'field';
|
|
83
97
|
field: TField;
|
|
84
98
|
render?: (params: TableFieldRenderParams<TRow, TContext, TPageContext, TField>) => RenderableType;
|
|
85
99
|
}
|
|
86
|
-
export type TableFieldColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow
|
|
87
|
-
type TableAnyFieldColumn<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject> = {
|
|
88
|
-
[TField in TableKnownFieldPath<TRow>]: TableFieldColumn<TRow, TContext, TPageContext, TField>;
|
|
100
|
+
export type TableFieldColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow>, TData = unknown> = TableFieldColumnBase<TRow, TContext, TPageContext, TField, TData>;
|
|
101
|
+
type TableAnyFieldColumn<TRow extends GenericObject, TContext extends GenericObject, TPageContext extends GenericObject, TData> = {
|
|
102
|
+
[TField in TableKnownFieldPath<TRow>]: TableFieldColumn<TRow, TContext, TPageContext, TField, TData>;
|
|
89
103
|
}[TableKnownFieldPath<TRow>];
|
|
90
|
-
export interface TableCompositeColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow
|
|
104
|
+
export interface TableCompositeColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow>, TData = unknown> extends TableColumnBase<TRow, TContext, TPageContext, TKey, TableRowRenderParams<TRow, TContext, TPageContext>, TData> {
|
|
91
105
|
kind: 'composite';
|
|
92
106
|
sortableKey?: TSortKey;
|
|
93
107
|
render: (params: TableRowRenderParams<TRow, TContext, TPageContext>) => RenderableType;
|
|
94
108
|
}
|
|
95
|
-
export interface TableDisplayColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string> extends TableColumnBase<TRow, TContext, TPageContext, TKey> {
|
|
109
|
+
export interface TableDisplayColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TData = unknown> extends TableColumnBase<TRow, TContext, TPageContext, TKey, TableRowRenderParams<TRow, TContext, TPageContext>, TData> {
|
|
96
110
|
kind: 'display';
|
|
97
111
|
render: (params: TableRowRenderParams<TRow, TContext, TPageContext>) => RenderableType;
|
|
98
112
|
}
|
|
99
|
-
export type TableColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow
|
|
100
|
-
export type TableFieldColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow
|
|
101
|
-
export type TableCompositeColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow
|
|
102
|
-
export type TableDisplayColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string> = Omit<TableDisplayColumn<TRow, TContext, TPageContext, TKey>, 'key' | 'kind'>;
|
|
103
|
-
export interface TableColumnBuilder<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TSortKey extends string = TableSortKey<TRow
|
|
104
|
-
field<TField extends TableKnownFieldPath<TRow> & string>(field: TField, options?: TableFieldColumnOptions<TRow, TContext, TPageContext, TField>): TableFieldColumn<TRow, TContext, TPageContext, TField>;
|
|
105
|
-
composite<TKey extends string>(key: TKey, options: TableCompositeColumnOptions<TRow, TContext, TPageContext, TKey, TSortKey>): TableCompositeColumn<TRow, TContext, TPageContext, TKey, TSortKey>;
|
|
106
|
-
display<TKey extends string>(key: TKey, options: TableDisplayColumnOptions<TRow, TContext, TPageContext, TKey>): TableDisplayColumn<TRow, TContext, TPageContext, TKey>;
|
|
113
|
+
export type TableColumn<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow>, TData = unknown> = TableAnyFieldColumn<TRow, TContext, TPageContext, TData> | TableCompositeColumn<TRow, TContext, TPageContext, TKey, TSortKey, TData> | TableDisplayColumn<TRow, TContext, TPageContext, TKey, TData>;
|
|
114
|
+
export type TableFieldColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TField extends TableKnownFieldPath<TRow> = TableKnownFieldPath<TRow>, TData = unknown> = Omit<TableFieldColumn<TRow, TContext, TPageContext, TField, TData>, 'field' | 'key' | 'kind'>;
|
|
115
|
+
export type TableCompositeColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow>, TData = unknown> = Omit<TableCompositeColumn<TRow, TContext, TPageContext, TKey, TSortKey, TData>, 'key' | 'kind'>;
|
|
116
|
+
export type TableDisplayColumnOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TData = unknown> = Omit<TableDisplayColumn<TRow, TContext, TPageContext, TKey, TData>, 'key' | 'kind'>;
|
|
117
|
+
export interface TableColumnBuilder<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TSortKey extends string = TableSortKey<TRow>, TData = unknown> {
|
|
118
|
+
field<TField extends TableKnownFieldPath<TRow> & string>(field: TField, options?: TableFieldColumnOptions<TRow, TContext, TPageContext, TField, TData>): TableFieldColumn<TRow, TContext, TPageContext, TField, TData>;
|
|
119
|
+
composite<TKey extends string>(key: TKey, options: TableCompositeColumnOptions<TRow, TContext, TPageContext, TKey, TSortKey, TData>): TableCompositeColumn<TRow, TContext, TPageContext, TKey, TSortKey, TData>;
|
|
120
|
+
display<TKey extends string>(key: TKey, options: TableDisplayColumnOptions<TRow, TContext, TPageContext, TKey, TData>): TableDisplayColumn<TRow, TContext, TPageContext, TKey, TData>;
|
|
107
121
|
}
|
|
108
|
-
export type TableColumnCollection<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow
|
|
122
|
+
export type TableColumnCollection<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TKey extends string = string, TSortKey extends string = TableSortKey<TRow>, TData = unknown> = TableColumn<TRow, TContext, TPageContext, TKey, TSortKey, TData>[] | ((column: TableColumnBuilder<TRow, TContext, TPageContext, TSortKey, TData>) => TableColumn<TRow, TContext, TPageContext, TKey, TSortKey, TData>[]);
|
|
109
123
|
export {};
|
|
@@ -50,9 +50,9 @@ export interface TableGridSchema<TRow extends GenericObject = GenericObject, TCo
|
|
|
50
50
|
sortOptions?: TableGridSortOption<TSortKey>[];
|
|
51
51
|
defaultSorting?: TableDefaultSort<TSortKey>;
|
|
52
52
|
}
|
|
53
|
-
export interface TableTableSchema<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TSortKey extends string = TableSortKey<TRow
|
|
53
|
+
export interface TableTableSchema<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TPageContext extends GenericObject = GenericObject, TSortKey extends string = TableSortKey<TRow>, TData = unknown> {
|
|
54
54
|
enabled?: boolean | string | (() => boolean | string);
|
|
55
|
-
columns?: TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey>;
|
|
55
|
+
columns?: TableColumnCollection<TRow, TContext, TPageContext, string, TSortKey, TData>;
|
|
56
56
|
treeMode?: boolean;
|
|
57
57
|
childrenKey?: TableSortKey<TRow>;
|
|
58
58
|
defaultSorting?: TableDefaultSort<TSortKey>;
|
|
@@ -2,7 +2,7 @@ import type { TableBulkAction, TableRowAction, TableToolbarAction } from './acti
|
|
|
2
2
|
import type { TableContextDataFromItems, TableContextItem, TablePageContextItem } from './context.js';
|
|
3
3
|
import type { TableFiltersSchema } from './filters.js';
|
|
4
4
|
import type { TableControlsSchema, TableGridSchema, TablePaginationSchema, TablePersistenceOptions, TableSelectionSchema, TableTableSchema } from './layout.js';
|
|
5
|
-
import type { InferTableSourceRow, NormalizeTableSource, TableCursorPageResult, TableSource, TableSourceExecutionResult } from './source.js';
|
|
5
|
+
import type { InferTableSourceRow, ExtractTableSourceResult, NormalizeTableSource, TableCursorPageResult, TableSource, TableSourceExecutionResult } from './source.js';
|
|
6
6
|
import type { TableKnownFieldPath, TableLayout, TableRowKey, TableSortKey, GenericObject } from './utils.js';
|
|
7
7
|
export interface TableSchema<TRow extends GenericObject = GenericObject, TContextItems extends TableContextItem[] = TableContextItem[], TPageContextItems extends TablePageContextItem<TRow, TableContextDataFromItems<TContextItems>>[] = TablePageContextItem<TRow, TableContextDataFromItems<TContextItems>>[], TFilterKey extends string = TableKnownFieldPath<TRow>, TSortKey extends string = TableSortKey<TRow>> {
|
|
8
8
|
tableKey: string;
|
|
@@ -28,8 +28,9 @@ export interface TableSchema<TRow extends GenericObject = GenericObject, TContex
|
|
|
28
28
|
controls?: TableControlsSchema;
|
|
29
29
|
persistence?: TablePersistenceOptions;
|
|
30
30
|
}
|
|
31
|
-
export type BuildTableSchema<TSource extends TableSource<any, any, any> = TableSource<any, any, any>, TContextItems extends TableContextItem[] = TableContextItem[], TPageContextItems extends TablePageContextItem<InferTableSourceRow<TSource>, TableContextDataFromItems<TContextItems>>[] = TablePageContextItem<InferTableSourceRow<TSource>, TableContextDataFromItems<TContextItems>>[], TFilterKey extends string = TableKnownFieldPath<InferTableSourceRow<TSource>>, TSortKey extends string = TableKnownFieldPath<InferTableSourceRow<TSource>>> = Omit<TableSchema<InferTableSourceRow<TSource>, TContextItems, TPageContextItems, TFilterKey, TSortKey>, 'source'> & {
|
|
31
|
+
export type BuildTableSchema<TSource extends TableSource<any, any, any> = TableSource<any, any, any>, TContextItems extends TableContextItem[] = TableContextItem[], TPageContextItems extends TablePageContextItem<InferTableSourceRow<TSource>, TableContextDataFromItems<TContextItems>>[] = TablePageContextItem<InferTableSourceRow<TSource>, TableContextDataFromItems<TContextItems>>[], TFilterKey extends string = TableKnownFieldPath<InferTableSourceRow<TSource>>, TSortKey extends string = TableKnownFieldPath<InferTableSourceRow<TSource>>> = Omit<TableSchema<InferTableSourceRow<TSource>, TContextItems, TPageContextItems, TFilterKey, TSortKey>, 'source' | 'table'> & {
|
|
32
32
|
source: ValidateTableSource<TSource, TableContextDataFromItems<TContextItems>>;
|
|
33
|
+
table?: TableTableSchema<InferTableSourceRow<TSource>, TableContextDataFromItems<TContextItems>, TableContextDataFromItems<TPageContextItems>, TSortKey, ExtractTableSourceResult<TSource>>;
|
|
33
34
|
};
|
|
34
35
|
type ValidateTableSource<TSource, TContext extends GenericObject> = TSource extends NormalizeTableSource<TSource, TContext> ? TSource : NormalizeTableSource<TSource, TContext>;
|
|
35
36
|
type ResolveCollection<TCollection> = TCollection extends (...args: never[]) => infer TResult ? TResult : TCollection;
|
|
@@ -5,11 +5,20 @@ type RemoteTableSourceResult<TResult> = TResult extends {
|
|
|
5
5
|
pageInfo: {
|
|
6
6
|
nextCursor: string | null;
|
|
7
7
|
};
|
|
8
|
-
} ? TableCursorPageResult<TableSourceRow<TResult>> : TResult extends {
|
|
8
|
+
} ? TableCursorPageResult<TableSourceRow<TResult>> & SummaryFromResult<TResult> : TResult extends {
|
|
9
9
|
pageInfo: {
|
|
10
10
|
pageIndex: number;
|
|
11
11
|
};
|
|
12
|
-
} ? TableOffsetPageResult<TableSourceRow<TResult>> : TableSourceExecutionResult<TableSourceRow<TResult
|
|
12
|
+
} ? TableOffsetPageResult<TableSourceRow<TResult>> & SummaryFromResult<TResult> : TableSourceExecutionResult<TableSourceRow<TResult>> & SummaryFromResult<TResult>;
|
|
13
|
+
type SummaryFromResult<TResult> = TResult extends {
|
|
14
|
+
summary: infer TSummary;
|
|
15
|
+
} ? {
|
|
16
|
+
summary: TSummary;
|
|
17
|
+
} : TResult extends {
|
|
18
|
+
summary?: infer TSummary;
|
|
19
|
+
} ? {
|
|
20
|
+
summary?: TSummary;
|
|
21
|
+
} : object;
|
|
13
22
|
interface TableSourceInferenceContext {
|
|
14
23
|
pagination: TablePaginationState;
|
|
15
24
|
sorting: TableSortingRule<never>[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComputedRef, ShallowRef } from 'vue';
|
|
2
2
|
import type { UseTableDataReturn } from '../../composables/use-table-data.js';
|
|
3
3
|
import type { useTableState } from '../../composables/use-table-state.js';
|
|
4
|
-
import type { TableApi, TableColumnAlign, TableColumnPinned, GenericObject, TableLayout, TableSchemaView, TableRuntimeRecord, TableColumnSkeleton
|
|
4
|
+
import type { TableApi, TableColumnAlign, TableColumnPinned, GenericObject, TableLayout, TableSchemaView, TableRuntimeRecord, TableColumnSkeleton } from '../../types/index.js';
|
|
5
5
|
export declare const SELECT_COLUMN_ID = "__select";
|
|
6
6
|
export declare const SELECT_COLUMN_WIDTH = 44;
|
|
7
7
|
export declare const ROW_ACTIONS_COLUMN_ID = "__row-actions";
|
|
@@ -20,7 +20,7 @@ export interface TableRuntimeColumn {
|
|
|
20
20
|
defaultVisible: boolean;
|
|
21
21
|
configurable?: boolean;
|
|
22
22
|
pinned?: TableColumnPinned;
|
|
23
|
-
summary?:
|
|
23
|
+
summary?: SchemaTableColumn['summary'];
|
|
24
24
|
ellipsis?: boolean;
|
|
25
25
|
skeleton?: TableColumnSkeleton;
|
|
26
26
|
lines?: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-ui-tools",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "Nuxt module and runtime toolkit for UI-heavy Nuxt applications",
|
|
5
5
|
"homepage": "https://github.com/ChronicStone/nuxt-ui-tools#readme",
|
|
6
6
|
"bugs": "https://github.com/ChronicStone/nuxt-ui-tools/issues",
|