@stonecrop/atable 0.13.12 → 0.14.0
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/README.md +12 -11
- package/dist/assets/index.css +1 -1
- package/dist/atable.d.ts +741 -32
- package/dist/atable.js +1494 -1470
- package/dist/atable.js.map +1 -1
- package/dist/probe.tsbuildinfo +1 -0
- package/dist/src/icons/index.d.ts +2 -1
- package/dist/src/icons/index.d.ts.map +1 -1
- package/dist/src/icons/index.js +8 -1
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -4
- package/dist/src/schemaToColumns.d.ts +2 -2
- package/dist/src/schemaToColumns.d.ts.map +1 -1
- package/dist/src/schemaToColumns.js +7 -10
- package/dist/src/stores/table.d.ts +691 -12
- package/dist/src/stores/table.d.ts.map +1 -1
- package/dist/src/stores/table.js +17 -12
- package/dist/src/types/index.d.ts +50 -15
- package/dist/src/types/index.d.ts.map +1 -1
- package/package.json +6 -4
- package/src/components/ACell.vue +12 -10
- package/src/components/AGanttCell.vue +9 -11
- package/src/components/ARow.vue +86 -13
- package/src/components/ARowActions.vue +53 -24
- package/src/components/ATable.vue +37 -4
- package/src/components/ATableColumnFilter.vue +19 -18
- package/src/components/ATableHeader.vue +0 -2
- package/src/components/ATableModal.vue +0 -2
- package/src/icons/index.ts +11 -1
- package/src/icons/stonecrop-ui-icon-open.svg +5 -0
- package/src/index.ts +10 -4
- package/src/schemaToColumns.ts +7 -9
- package/src/stores/table.ts +14 -12
- package/src/types/index.ts +54 -15
- package/src/components/AExpansionRow.vue +0 -105
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/stores/table.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/stores/table.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stores/table.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineStore } from 'pinia';
|
|
2
|
+
import { componentCategory } from '@stonecrop/schema';
|
|
2
3
|
import { computed, ref } from 'vue';
|
|
3
4
|
import { generateHash } from '../utils';
|
|
4
5
|
function isNodeOpen(rowIndex, treeDisplay) {
|
|
@@ -84,7 +85,12 @@ function applyFilter(cellValue, filter, column) {
|
|
|
84
85
|
return true;
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Compute the CSS indentation for a tree-table cell. Pure helper (captures no store state);
|
|
90
|
+
* imported directly by cell components rather than exposed on the store's public return.
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
export function getIndent(colIndex, indentLevel) {
|
|
88
94
|
if (indentLevel && colIndex === 0 && indentLevel > 0) {
|
|
89
95
|
return `${indentLevel}ch`;
|
|
90
96
|
}
|
|
@@ -404,16 +410,16 @@ export const createTableStore = (initData) => {
|
|
|
404
410
|
const row = rows.value[rowIndex];
|
|
405
411
|
const format = column.format;
|
|
406
412
|
if (!format) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
413
|
+
// Default cell formatting comes from the component's category; anything without an
|
|
414
|
+
// opinion (including an unknown component) renders the raw value.
|
|
415
|
+
const category = componentCategory(column.component);
|
|
416
|
+
if (category === 'boolean')
|
|
417
|
+
return value ? '✓' : '✗';
|
|
418
|
+
if (category === 'date')
|
|
419
|
+
return value != null ? new Date(String(value)).toLocaleDateString() : value;
|
|
420
|
+
if (category === 'datetime')
|
|
421
|
+
return value != null ? new Date(String(value)).toLocaleString() : value;
|
|
422
|
+
return value;
|
|
417
423
|
}
|
|
418
424
|
if (typeof format === 'function') {
|
|
419
425
|
return format(value, { table: table.value, row, column });
|
|
@@ -775,7 +781,6 @@ export const createTableStore = (initData) => {
|
|
|
775
781
|
getFormattedValue,
|
|
776
782
|
getHandlesForBar,
|
|
777
783
|
getHeaderCellStyle,
|
|
778
|
-
getIndent,
|
|
779
784
|
getRowExpandSymbol,
|
|
780
785
|
insertRowAbove,
|
|
781
786
|
insertRowBelow,
|
|
@@ -5,7 +5,7 @@ import { createTableStore } from '../stores/table';
|
|
|
5
5
|
/**
|
|
6
6
|
* Runtime column definition for ATable.
|
|
7
7
|
*
|
|
8
|
-
* Extends `ColumnSchema` from `@stonecrop/schema` — all authoring properties (`label`, `
|
|
8
|
+
* Extends `ColumnSchema` from `@stonecrop/schema` — all authoring properties (`label`, `component`, `width`,
|
|
9
9
|
* `pinned`, filter config, cell/modal component names, etc.) are inherited. The overrides
|
|
10
10
|
* below widen three properties for runtime use (live functions, broader alignment values)
|
|
11
11
|
* and add two runtime-only additions (`mask`, `originalIndex`).
|
|
@@ -38,7 +38,7 @@ export interface TableColumn extends Omit<ColumnSchema, 'fieldname' | 'hidden' |
|
|
|
38
38
|
*/
|
|
39
39
|
mask?: (value: any) => any;
|
|
40
40
|
/**
|
|
41
|
-
* For
|
|
41
|
+
* For link columns (those carrying `doctype`): the target doctype slug used by the `linkResolver`
|
|
42
42
|
* to look up display text for bare ID values. Set automatically by `schemaToColumns`
|
|
43
43
|
* from the field's `doctype` property.
|
|
44
44
|
*/
|
|
@@ -73,7 +73,7 @@ export interface CellContext {
|
|
|
73
73
|
* Row action type identifiers.
|
|
74
74
|
* @public
|
|
75
75
|
*/
|
|
76
|
-
export type RowActionType = 'add' | 'delete' | 'duplicate' | 'insertAbove' | 'insertBelow' | 'move';
|
|
76
|
+
export type RowActionType = 'open' | 'add' | 'delete' | 'duplicate' | 'insertAbove' | 'insertBelow' | 'move' | 'moveUp' | 'moveDown';
|
|
77
77
|
/**
|
|
78
78
|
* Options for configuring individual row actions.
|
|
79
79
|
* @public
|
|
@@ -101,6 +101,15 @@ export interface RowActionOptions {
|
|
|
101
101
|
* @returns void or false to prevent default behavior
|
|
102
102
|
*/
|
|
103
103
|
handler?: (rowIndex: number, store: ReturnType<typeof createTableStore>) => void | boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Per-row predicate to disable this action for specific rows (e.g. a lock-aware delete, or
|
|
106
|
+
* move-up on the first row). Returns true to render the action disabled. Evaluated reactively
|
|
107
|
+
* against the store, so it updates as rows change.
|
|
108
|
+
*
|
|
109
|
+
* @param rowIndex - The index of the row
|
|
110
|
+
* @param store - The table store instance
|
|
111
|
+
*/
|
|
112
|
+
disabled?: (rowIndex: number, store: ReturnType<typeof createTableStore>) => boolean;
|
|
104
113
|
}
|
|
105
114
|
/**
|
|
106
115
|
* Configuration for row-level actions (add, delete, duplicate, etc.).
|
|
@@ -137,12 +146,15 @@ export interface RowActionsConfig {
|
|
|
137
146
|
* false to disable, or provide RowActionOptions for custom configuration.
|
|
138
147
|
*/
|
|
139
148
|
actions?: {
|
|
149
|
+
open?: boolean | RowActionOptions;
|
|
140
150
|
add?: boolean | RowActionOptions;
|
|
141
151
|
delete?: boolean | RowActionOptions;
|
|
142
152
|
duplicate?: boolean | RowActionOptions;
|
|
143
153
|
insertAbove?: boolean | RowActionOptions;
|
|
144
154
|
insertBelow?: boolean | RowActionOptions;
|
|
145
155
|
move?: boolean | RowActionOptions;
|
|
156
|
+
moveUp?: boolean | RowActionOptions;
|
|
157
|
+
moveDown?: boolean | RowActionOptions;
|
|
146
158
|
};
|
|
147
159
|
}
|
|
148
160
|
/**
|
|
@@ -156,6 +168,13 @@ export interface BaseTableConfig {
|
|
|
156
168
|
* @defaultValue false
|
|
157
169
|
*/
|
|
158
170
|
fullWidth?: boolean;
|
|
171
|
+
/**
|
|
172
|
+
* When true, rows show a pointer cursor and a hover highlight, signalling they are
|
|
173
|
+
* clickable. Emits `row:click` on every row click.
|
|
174
|
+
*
|
|
175
|
+
* @defaultValue false
|
|
176
|
+
*/
|
|
177
|
+
clickable?: boolean;
|
|
159
178
|
/**
|
|
160
179
|
* Configuration for row-level actions (add, delete, duplicate, etc.).
|
|
161
180
|
*/
|
|
@@ -604,9 +623,9 @@ export type ConnectionEvent = {
|
|
|
604
623
|
* @public
|
|
605
624
|
*/
|
|
606
625
|
export interface RowAddEvent {
|
|
607
|
-
/** The index
|
|
626
|
+
/** The index of the newly added row. */
|
|
608
627
|
rowIndex: number;
|
|
609
|
-
/** The
|
|
628
|
+
/** The data for the newly added row. */
|
|
610
629
|
row: TableRow;
|
|
611
630
|
}
|
|
612
631
|
/**
|
|
@@ -614,9 +633,9 @@ export interface RowAddEvent {
|
|
|
614
633
|
* @public
|
|
615
634
|
*/
|
|
616
635
|
export interface RowDeleteEvent {
|
|
617
|
-
/** The index of the row
|
|
636
|
+
/** The index of the deleted row (before deletion). */
|
|
618
637
|
rowIndex: number;
|
|
619
|
-
/** The
|
|
638
|
+
/** The data of the deleted row. */
|
|
620
639
|
row: TableRow;
|
|
621
640
|
}
|
|
622
641
|
/**
|
|
@@ -624,11 +643,11 @@ export interface RowDeleteEvent {
|
|
|
624
643
|
* @public
|
|
625
644
|
*/
|
|
626
645
|
export interface RowDuplicateEvent {
|
|
627
|
-
/** The index of the original row that was duplicated */
|
|
646
|
+
/** The index of the original row that was duplicated. */
|
|
628
647
|
sourceIndex: number;
|
|
629
|
-
/** The index of the newly created duplicate row */
|
|
648
|
+
/** The index of the newly created duplicate row. */
|
|
630
649
|
newIndex: number;
|
|
631
|
-
/** The
|
|
650
|
+
/** The data of the newly created duplicate row. */
|
|
632
651
|
row: TableRow;
|
|
633
652
|
}
|
|
634
653
|
/**
|
|
@@ -636,11 +655,11 @@ export interface RowDuplicateEvent {
|
|
|
636
655
|
* @public
|
|
637
656
|
*/
|
|
638
657
|
export interface RowInsertEvent {
|
|
639
|
-
/** The index of the row relative to which the
|
|
658
|
+
/** The index of the reference row relative to which the new row was inserted. */
|
|
640
659
|
targetIndex: number;
|
|
641
|
-
/** The index
|
|
660
|
+
/** The index at which the new row was inserted. */
|
|
642
661
|
newIndex: number;
|
|
643
|
-
/** The newly inserted row
|
|
662
|
+
/** The data of the newly inserted row. */
|
|
644
663
|
row: TableRow;
|
|
645
664
|
}
|
|
646
665
|
/**
|
|
@@ -648,9 +667,25 @@ export interface RowInsertEvent {
|
|
|
648
667
|
* @public
|
|
649
668
|
*/
|
|
650
669
|
export interface RowMoveEvent {
|
|
651
|
-
/** The
|
|
670
|
+
/** The index the row was moved from. */
|
|
652
671
|
fromIndex: number;
|
|
653
|
-
/** The
|
|
672
|
+
/** The index the row was moved to. */
|
|
654
673
|
toIndex: number;
|
|
655
674
|
}
|
|
675
|
+
/**
|
|
676
|
+
* Event payload for row:click and row:open events.
|
|
677
|
+
* @public
|
|
678
|
+
*/
|
|
679
|
+
export interface RowClickEvent {
|
|
680
|
+
/** The data of the clicked row. */
|
|
681
|
+
row: TableRow;
|
|
682
|
+
/** The index of the clicked row. */
|
|
683
|
+
rowIndex: number;
|
|
684
|
+
/**
|
|
685
|
+
* The originating DOM MouseEvent. Present for all real user interactions.
|
|
686
|
+
* Inspect `event.ctrlKey` / `event.metaKey` for new-tab navigation,
|
|
687
|
+
* `event.button === 1` for middle-click, etc.
|
|
688
|
+
*/
|
|
689
|
+
event?: MouseEvent;
|
|
690
|
+
}
|
|
656
691
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IAC5G,wGAAwG;IACxG,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,CAAA;IAEhE;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,CAAA;IAE5D;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,GAAG,EAAE,QAAQ,CAAA;IAEb;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;IAEnB;;OAEG;IACH,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stonecrop/atable",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": {
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@vueuse/components": "^14.2.1",
|
|
37
37
|
"@vueuse/core": "^14.2.1",
|
|
38
|
-
"@stonecrop/schema": "0.
|
|
39
|
-
"@stonecrop/
|
|
40
|
-
"@stonecrop/
|
|
38
|
+
"@stonecrop/schema": "0.14.0",
|
|
39
|
+
"@stonecrop/utilities": "0.14.0",
|
|
40
|
+
"@stonecrop/themes": "0.14.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"pinia": "^3.0.4",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"vitest": "^4.1.5",
|
|
62
62
|
"vue": "^3.5.33",
|
|
63
63
|
"vue-router": "^5.0.6",
|
|
64
|
+
"vue-tsc": "^3.3.6",
|
|
64
65
|
"stonecrop-rig": "0.7.0"
|
|
65
66
|
},
|
|
66
67
|
"publishConfig": {
|
|
@@ -78,6 +79,7 @@
|
|
|
78
79
|
"lint:fix": "oxlint --fix",
|
|
79
80
|
"preview": "vite preview",
|
|
80
81
|
"test": "vitest run --coverage.enabled false",
|
|
82
|
+
"test:types": "vue-tsc --noEmit",
|
|
81
83
|
"test:watch": "vitest watch",
|
|
82
84
|
"test:coverage": "vitest run --coverage",
|
|
83
85
|
"test:ui": "vitest --ui"
|
package/src/components/ACell.vue
CHANGED
|
@@ -29,7 +29,7 @@ import { KeypressHandlers, defaultKeypressHandlers, useKeyboardNav } from '@ston
|
|
|
29
29
|
import { useDebounceFn, useElementBounding } from '@vueuse/core'
|
|
30
30
|
import { computed, type CSSProperties, onMounted, ref, useTemplateRef, nextTick } from 'vue'
|
|
31
31
|
|
|
32
|
-
import { createTableStore } from '../stores/table'
|
|
32
|
+
import { createTableStore, getIndent } from '../stores/table'
|
|
33
33
|
import { isHtmlString } from '../utils'
|
|
34
34
|
|
|
35
35
|
const {
|
|
@@ -104,7 +104,7 @@ const cellStyle = computed((): CSSProperties => {
|
|
|
104
104
|
textAlign,
|
|
105
105
|
width: cellWidth,
|
|
106
106
|
fontWeight: !cellModified.value ? 'inherit' : 'bold',
|
|
107
|
-
paddingLeft:
|
|
107
|
+
paddingLeft: getIndent(colIndex, store.display[rowIndex]?.indent),
|
|
108
108
|
}
|
|
109
109
|
})
|
|
110
110
|
|
|
@@ -136,15 +136,19 @@ const showModal = () => {
|
|
|
136
136
|
state.modal.visible = true
|
|
137
137
|
state.modal.colIndex = colIndex
|
|
138
138
|
state.modal.rowIndex = rowIndex
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
state.modal.
|
|
143
|
-
state.modal.
|
|
139
|
+
// Snapshot the cell's box as it was when the modal opened. These are refs, and assigning
|
|
140
|
+
// them raw happened to work only because reactive reads unwrap refs — which also left the
|
|
141
|
+
// stored values live, tracking the cell for as long as the modal stayed open.
|
|
142
|
+
state.modal.left = left.value
|
|
143
|
+
state.modal.bottom = bottom.value
|
|
144
|
+
state.modal.width = width.value
|
|
145
|
+
state.modal.height = height.value
|
|
144
146
|
state.modal.cell = cellRef.value
|
|
145
147
|
|
|
146
148
|
if (typeof column.modalComponent === 'function') {
|
|
147
|
-
|
|
149
|
+
// `table` is a computed, so Pinia exposes it as a getter — it is not on `$state`, which
|
|
150
|
+
// is what $patch hands back. Reading it off the store is what passes a real table.
|
|
151
|
+
state.modal.component = column.modalComponent({ table: store.table, row, column })
|
|
148
152
|
} else {
|
|
149
153
|
state.modal.component = column.modalComponent
|
|
150
154
|
}
|
|
@@ -314,8 +318,6 @@ defineExpose({
|
|
|
314
318
|
</script>
|
|
315
319
|
|
|
316
320
|
<style>
|
|
317
|
-
@import url('@stonecrop/themes/default.css');
|
|
318
|
-
|
|
319
321
|
.atable-cell {
|
|
320
322
|
border-radius: 0px;
|
|
321
323
|
box-sizing: border-box;
|
|
@@ -138,17 +138,15 @@ const barStyle = computed((): StyleValue => {
|
|
|
138
138
|
}
|
|
139
139
|
})
|
|
140
140
|
|
|
141
|
-
const connectionDragStyle = computed(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
})
|
|
151
|
-
)
|
|
141
|
+
const connectionDragStyle = computed((): StyleValue => ({
|
|
142
|
+
position: 'fixed',
|
|
143
|
+
top: 0,
|
|
144
|
+
left: 0,
|
|
145
|
+
width: '100vw',
|
|
146
|
+
height: '100vh',
|
|
147
|
+
pointerEvents: 'none',
|
|
148
|
+
zIndex: 1000,
|
|
149
|
+
}))
|
|
152
150
|
|
|
153
151
|
// Drag setup data
|
|
154
152
|
const dragStartData = ref({ startX: 0, startPos: 0 })
|
package/src/components/ARow.vue
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<tr
|
|
2
|
+
<tr
|
|
3
|
+
v-show="isRowVisible"
|
|
4
|
+
v-bind="$attrs"
|
|
5
|
+
ref="rowEl"
|
|
6
|
+
:tabindex="tabIndex"
|
|
7
|
+
class="atable-row"
|
|
8
|
+
:class="{ 'atable-row-clickable': isClickable }"
|
|
9
|
+
@click="onRowClick">
|
|
3
10
|
<!-- Row actions before index (default position) -->
|
|
4
11
|
<ARowActions
|
|
5
12
|
v-if="showRowActions && actionsPosition === 'before-index'"
|
|
@@ -26,6 +33,14 @@
|
|
|
26
33
|
@click="store.toggleRowExpand(rowIndex)">
|
|
27
34
|
{{ rowExpandSymbol }}
|
|
28
35
|
</td>
|
|
36
|
+
<td
|
|
37
|
+
v-else-if="store.config.view === 'list-expansion'"
|
|
38
|
+
:tabIndex="-1"
|
|
39
|
+
class="expansion-index"
|
|
40
|
+
:class="store.hasPinnedColumns ? 'sticky-index' : ''"
|
|
41
|
+
@click="store.toggleRowExpand(rowIndex)">
|
|
42
|
+
{{ rowExpandSymbol }}
|
|
43
|
+
</td>
|
|
29
44
|
</slot>
|
|
30
45
|
|
|
31
46
|
<!-- Row actions after index -->
|
|
@@ -49,6 +64,13 @@
|
|
|
49
64
|
:position="actionsPosition"
|
|
50
65
|
@action="onRowAction" />
|
|
51
66
|
</tr>
|
|
67
|
+
|
|
68
|
+
<!-- list-expansion content panel: a second row spanning the whole width -->
|
|
69
|
+
<tr v-if="isExpanded" :tabindex="tabIndex" class="atable-expanded-row">
|
|
70
|
+
<td :tabIndex="-1" :colspan="expandedColspan" class="atable-expanded-content">
|
|
71
|
+
<slot name="content" :row="store.rows[rowIndex]" :row-index="rowIndex" :store="store" />
|
|
72
|
+
</td>
|
|
73
|
+
</tr>
|
|
52
74
|
</template>
|
|
53
75
|
|
|
54
76
|
<script setup lang="ts">
|
|
@@ -72,13 +94,15 @@ const {
|
|
|
72
94
|
}>()
|
|
73
95
|
|
|
74
96
|
const emit = defineEmits<{
|
|
75
|
-
'row:action': [type: RowActionType, rowIndex: number]
|
|
97
|
+
'row:action': [type: RowActionType, rowIndex: number, event?: MouseEvent]
|
|
98
|
+
'row:click': [rowIndex: number, event: MouseEvent]
|
|
76
99
|
}>()
|
|
77
100
|
|
|
78
101
|
const rowRef = useTemplateRef<HTMLTableRowElement>('rowEl')
|
|
79
102
|
|
|
80
103
|
const isRowVisible = computed(() => store.isRowVisible(rowIndex))
|
|
81
104
|
const rowExpandSymbol = computed(() => store.getRowExpandSymbol(rowIndex))
|
|
105
|
+
const isClickable = computed(() => store.config.clickable ?? false)
|
|
82
106
|
|
|
83
107
|
// Row actions configuration
|
|
84
108
|
const rowActionsConfig = computed((): RowActionsConfig => {
|
|
@@ -93,17 +117,49 @@ const actionsPosition = computed(() => {
|
|
|
93
117
|
return rowActionsConfig.value.position || 'before-index'
|
|
94
118
|
})
|
|
95
119
|
|
|
96
|
-
|
|
97
|
-
|
|
120
|
+
// list-expansion: this row owns an expandable content panel (a second <tr>).
|
|
121
|
+
const isExpanded = computed(() => store.config.view === 'list-expansion' && Boolean(store.display[rowIndex]?.expanded))
|
|
122
|
+
|
|
123
|
+
// The content panel spans every column the main row occupies: data columns + the
|
|
124
|
+
// index/chevron column (absent only in uncounted) + the row-actions column when enabled.
|
|
125
|
+
const expandedColspan = computed(() => {
|
|
126
|
+
const indexCol = store.config.view === 'uncounted' ? 0 : 1
|
|
127
|
+
const actionsCol = showRowActions.value ? 1 : 0
|
|
128
|
+
return store.columns.length + indexCol + actionsCol
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
const onRowAction = (actionType: RowActionType, index: number, event?: MouseEvent) => {
|
|
132
|
+
emit('row:action', actionType, index, event)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const onRowClick = (event: MouseEvent) => {
|
|
136
|
+
// Ignore clicks on the row actions cell or an expand/collapse chevron (tree or list-expansion),
|
|
137
|
+
// so toggling a chevron never doubles as a row-click navigation.
|
|
138
|
+
const target = event.target as HTMLElement
|
|
139
|
+
if (target.closest('.atable-row-actions') || target.closest('.tree-index') || target.closest('.expansion-index'))
|
|
140
|
+
return
|
|
141
|
+
emit('row:click', rowIndex, event)
|
|
98
142
|
}
|
|
99
143
|
|
|
100
|
-
|
|
101
|
-
|
|
144
|
+
// A list-expansion row always binds Ctrl+G to toggle its own panel while opt-in
|
|
145
|
+
// cell navigation stays gated on `addNavigation` (default off), so other view
|
|
146
|
+
// types are unchanged.
|
|
147
|
+
const isListExpansion = store.config.view === 'list-expansion'
|
|
102
148
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
149
|
+
if (addNavigation || isListExpansion) {
|
|
150
|
+
let handlers: KeypressHandlers = {}
|
|
151
|
+
|
|
152
|
+
if (addNavigation === true) {
|
|
153
|
+
handlers = { ...defaultKeypressHandlers }
|
|
154
|
+
} else if (typeof addNavigation === 'object') {
|
|
155
|
+
handlers = { ...defaultKeypressHandlers, ...addNavigation }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (isListExpansion && !handlers['keydown.control.g']) {
|
|
159
|
+
handlers['keydown.control.g'] = (event: KeyboardEvent) => {
|
|
160
|
+
event.stopPropagation()
|
|
161
|
+
event.preventDefault()
|
|
162
|
+
store.toggleRowExpand(rowIndex)
|
|
107
163
|
}
|
|
108
164
|
}
|
|
109
165
|
|
|
@@ -117,12 +173,18 @@ if (addNavigation) {
|
|
|
117
173
|
</script>
|
|
118
174
|
|
|
119
175
|
<style>
|
|
120
|
-
@import url('@stonecrop/themes/default.css');
|
|
121
|
-
|
|
122
176
|
.atable-row {
|
|
123
177
|
background-color: white;
|
|
124
178
|
}
|
|
125
179
|
|
|
180
|
+
.atable-row-clickable {
|
|
181
|
+
cursor: pointer;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.atable-row-clickable:hover > td {
|
|
185
|
+
background-color: var(--sc-row-hover-color, #f0f4f8);
|
|
186
|
+
}
|
|
187
|
+
|
|
126
188
|
.atable-row:last-child > td {
|
|
127
189
|
border-bottom: 1px solid var(--sc-row-border-color);
|
|
128
190
|
}
|
|
@@ -151,16 +213,27 @@ if (addNavigation) {
|
|
|
151
213
|
padding-bottom: var(--sc-atable-row-padding);
|
|
152
214
|
}
|
|
153
215
|
|
|
154
|
-
.tree-index
|
|
216
|
+
.tree-index,
|
|
217
|
+
.expansion-index {
|
|
155
218
|
color: var(--sc-header-text-color);
|
|
156
219
|
font-weight: bold;
|
|
157
220
|
text-align: center;
|
|
158
221
|
user-select: none;
|
|
159
222
|
width: 2ch;
|
|
160
223
|
box-sizing: border-box;
|
|
224
|
+
cursor: pointer;
|
|
161
225
|
padding-top: var(--sc-atable-row-padding);
|
|
162
226
|
padding-bottom: var(--sc-atable-row-padding);
|
|
163
227
|
}
|
|
228
|
+
|
|
229
|
+
.atable-expanded-row {
|
|
230
|
+
border-left: 2px solid var(--sc-row-border-color);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.atable-expanded-content {
|
|
234
|
+
border-top: 1px solid var(--sc-row-border-color);
|
|
235
|
+
padding: 1.5rem;
|
|
236
|
+
}
|
|
164
237
|
/* sticky cells in modified rows should be a solid color to properly hide non-sticky cells */
|
|
165
238
|
.atable-row:has(td.cell-modified) > td.sticky-column,
|
|
166
239
|
.atable-row:has(td.cell-modified) > th.sticky-column,
|