@stonecrop/atable 0.13.14 → 0.15.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 +533 -20
- package/dist/atable.js +1557 -1552
- package/dist/atable.js.map +1 -1
- package/dist/icons/stonecrop-ui-icon-add.svg +5 -0
- package/dist/icons/stonecrop-ui-icon-delete.svg +5 -0
- package/dist/icons/stonecrop-ui-icon-duplicate.svg +5 -0
- package/dist/icons/stonecrop-ui-icon-insert-above.svg +15 -0
- package/dist/icons/stonecrop-ui-icon-insert-below.svg +15 -0
- package/dist/icons/stonecrop-ui-icon-move.svg +4 -0
- package/dist/icons/stonecrop-ui-icon-open.svg +5 -0
- package/dist/src/icons/index.d.ts.map +1 -1
- package/dist/src/icons/index.js +5 -0
- package/dist/src/index.d.ts +1 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -3
- 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 +523 -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 +14 -3
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/themes/default.css +1 -0
- package/package.json +26 -24
- package/src/components/ACell.vue +12 -10
- package/src/components/ARow.vue +61 -11
- package/src/components/ARowActions.vue +43 -15
- package/src/components/ATable.vue +18 -2
- 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 +8 -0
- package/src/index.ts +0 -3
- package/src/schemaToColumns.ts +7 -9
- package/src/stores/table.ts +14 -12
- package/src/types/index.ts +16 -3
- package/dist/atable.umd.cjs +0 -51
- package/dist/atable.umd.cjs.map +0 -1
- package/dist/icons/index.js +0 -31
- package/dist/index.js +0 -31
- package/dist/src/tsdoc-metadata.json +0 -11
- package/dist/stores/table.js +0 -795
- package/dist/types/index.js +0 -0
- package/dist/utils.js +0 -7
- 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 = 'open' | '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.).
|
|
@@ -144,6 +153,8 @@ export interface RowActionsConfig {
|
|
|
144
153
|
insertAbove?: boolean | RowActionOptions;
|
|
145
154
|
insertBelow?: boolean | RowActionOptions;
|
|
146
155
|
move?: boolean | RowActionOptions;
|
|
156
|
+
moveUp?: boolean | RowActionOptions;
|
|
157
|
+
moveDown?: boolean | RowActionOptions;
|
|
147
158
|
};
|
|
148
159
|
}
|
|
149
160
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* old table styles */
|
package/package.json
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stonecrop/atable",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"name": "Tyler Matteson",
|
|
8
|
-
"email": "tyler@agritheory.com"
|
|
3
|
+
"version": "0.15.0",
|
|
4
|
+
"description": "Advanced data table component for Stonecrop",
|
|
5
|
+
"bugs": {
|
|
6
|
+
"url": "https://github.com/agritheory/stonecrop/issues"
|
|
9
7
|
},
|
|
10
8
|
"repository": {
|
|
11
9
|
"type": "git",
|
|
12
10
|
"url": "https://github.com/agritheory/stonecrop",
|
|
13
11
|
"directory": "atable"
|
|
14
12
|
},
|
|
15
|
-
"
|
|
16
|
-
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "Tyler Matteson",
|
|
16
|
+
"email": "tyler@agritheory.com"
|
|
17
17
|
},
|
|
18
|
-
"
|
|
19
|
-
|
|
18
|
+
"sideEffects": [
|
|
19
|
+
"**/*.css"
|
|
20
|
+
],
|
|
21
|
+
"type": "module",
|
|
20
22
|
"exports": {
|
|
21
23
|
".": {
|
|
22
24
|
"types": "./dist/atable.d.ts",
|
|
@@ -25,23 +27,17 @@
|
|
|
25
27
|
"./styles": "./dist/assets/index.css",
|
|
26
28
|
"./types": "./dist/src/types/index.d.ts"
|
|
27
29
|
},
|
|
30
|
+
"types": "./dist/atable.d.ts",
|
|
28
31
|
"files": [
|
|
29
32
|
"dist/*",
|
|
30
33
|
"src/*"
|
|
31
34
|
],
|
|
32
|
-
"sideEffects": [
|
|
33
|
-
"**/*.css"
|
|
34
|
-
],
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@vueuse/components": "^14.2.1",
|
|
37
37
|
"@vueuse/core": "^14.2.1",
|
|
38
|
-
"@stonecrop/schema": "0.
|
|
39
|
-
"@stonecrop/themes": "0.
|
|
40
|
-
"@stonecrop/utilities": "0.
|
|
41
|
-
},
|
|
42
|
-
"peerDependencies": {
|
|
43
|
-
"pinia": "^3.0.4",
|
|
44
|
-
"vue": "^3.5.33"
|
|
38
|
+
"@stonecrop/schema": "0.15.0",
|
|
39
|
+
"@stonecrop/themes": "0.15.0",
|
|
40
|
+
"@stonecrop/utilities": "0.15.0"
|
|
45
41
|
},
|
|
46
42
|
"devDependencies": {
|
|
47
43
|
"@microsoft/api-documenter": "^7.30.5",
|
|
@@ -61,14 +57,19 @@
|
|
|
61
57
|
"vitest": "^4.1.5",
|
|
62
58
|
"vue": "^3.5.33",
|
|
63
59
|
"vue-router": "^5.0.6",
|
|
60
|
+
"vue-tsc": "^3.3.6",
|
|
64
61
|
"stonecrop-rig": "0.7.0"
|
|
65
62
|
},
|
|
66
|
-
"
|
|
67
|
-
"
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"pinia": "^3.0.4",
|
|
65
|
+
"vue": "^3.5.33"
|
|
68
66
|
},
|
|
69
67
|
"engines": {
|
|
70
68
|
"node": ">=24.0.0"
|
|
71
69
|
},
|
|
70
|
+
"publishConfig": {
|
|
71
|
+
"access": "public"
|
|
72
|
+
},
|
|
72
73
|
"scripts": {
|
|
73
74
|
"_phase:build": "heft build && vite build && rushx docs",
|
|
74
75
|
"build": "heft build && vite build && rushx docs",
|
|
@@ -78,8 +79,9 @@
|
|
|
78
79
|
"lint:fix": "oxlint --fix",
|
|
79
80
|
"preview": "vite preview",
|
|
80
81
|
"test": "vitest run --coverage.enabled false",
|
|
81
|
-
"test:watch": "vitest watch",
|
|
82
82
|
"test:coverage": "vitest run --coverage",
|
|
83
|
-
"test:
|
|
83
|
+
"test:types": "vue-tsc --noEmit",
|
|
84
|
+
"test:ui": "vitest --ui",
|
|
85
|
+
"test:watch": "vitest watch"
|
|
84
86
|
}
|
|
85
87
|
}
|
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;
|
package/src/components/ARow.vue
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<tr
|
|
3
3
|
v-show="isRowVisible"
|
|
4
|
+
v-bind="$attrs"
|
|
4
5
|
ref="rowEl"
|
|
5
6
|
:tabindex="tabIndex"
|
|
6
7
|
class="atable-row"
|
|
@@ -32,6 +33,14 @@
|
|
|
32
33
|
@click="store.toggleRowExpand(rowIndex)">
|
|
33
34
|
{{ rowExpandSymbol }}
|
|
34
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>
|
|
35
44
|
</slot>
|
|
36
45
|
|
|
37
46
|
<!-- Row actions after index -->
|
|
@@ -55,6 +64,13 @@
|
|
|
55
64
|
:position="actionsPosition"
|
|
56
65
|
@action="onRowAction" />
|
|
57
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>
|
|
58
74
|
</template>
|
|
59
75
|
|
|
60
76
|
<script setup lang="ts">
|
|
@@ -101,24 +117,49 @@ const actionsPosition = computed(() => {
|
|
|
101
117
|
return rowActionsConfig.value.position || 'before-index'
|
|
102
118
|
})
|
|
103
119
|
|
|
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
|
+
|
|
104
131
|
const onRowAction = (actionType: RowActionType, index: number, event?: MouseEvent) => {
|
|
105
132
|
emit('row:action', actionType, index, event)
|
|
106
133
|
}
|
|
107
134
|
|
|
108
135
|
const onRowClick = (event: MouseEvent) => {
|
|
109
|
-
// Ignore clicks on the row actions cell or
|
|
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.
|
|
110
138
|
const target = event.target as HTMLElement
|
|
111
|
-
if (target.closest('.atable-row-actions') || target.closest('.tree-index'))
|
|
139
|
+
if (target.closest('.atable-row-actions') || target.closest('.tree-index') || target.closest('.expansion-index'))
|
|
140
|
+
return
|
|
112
141
|
emit('row:click', rowIndex, event)
|
|
113
142
|
}
|
|
114
143
|
|
|
115
|
-
|
|
116
|
-
|
|
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'
|
|
117
148
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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)
|
|
122
163
|
}
|
|
123
164
|
}
|
|
124
165
|
|
|
@@ -132,8 +173,6 @@ if (addNavigation) {
|
|
|
132
173
|
</script>
|
|
133
174
|
|
|
134
175
|
<style>
|
|
135
|
-
@import url('@stonecrop/themes/default.css');
|
|
136
|
-
|
|
137
176
|
.atable-row {
|
|
138
177
|
background-color: white;
|
|
139
178
|
}
|
|
@@ -174,16 +213,27 @@ if (addNavigation) {
|
|
|
174
213
|
padding-bottom: var(--sc-atable-row-padding);
|
|
175
214
|
}
|
|
176
215
|
|
|
177
|
-
.tree-index
|
|
216
|
+
.tree-index,
|
|
217
|
+
.expansion-index {
|
|
178
218
|
color: var(--sc-header-text-color);
|
|
179
219
|
font-weight: bold;
|
|
180
220
|
text-align: center;
|
|
181
221
|
user-select: none;
|
|
182
222
|
width: 2ch;
|
|
183
223
|
box-sizing: border-box;
|
|
224
|
+
cursor: pointer;
|
|
184
225
|
padding-top: var(--sc-atable-row-padding);
|
|
185
226
|
padding-bottom: var(--sc-atable-row-padding);
|
|
186
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
|
+
}
|
|
187
237
|
/* sticky cells in modified rows should be a solid color to properly hide non-sticky cells */
|
|
188
238
|
.atable-row:has(td.cell-modified) > td.sticky-column,
|
|
189
239
|
.atable-row:has(td.cell-modified) > th.sticky-column,
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
type="button"
|
|
27
27
|
class="row-action-menu-item"
|
|
28
28
|
role="menuitem"
|
|
29
|
+
:disabled="action.disabled"
|
|
29
30
|
@click.stop="executeAction(action.type, $event)">
|
|
30
31
|
<span class="action-icon" v-html="action.icon" />
|
|
31
32
|
<span class="action-label">{{ action.label }}</span>
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
class="row-action-btn"
|
|
43
44
|
:title="action.label"
|
|
44
45
|
:aria-label="action.label"
|
|
46
|
+
:disabled="action.disabled"
|
|
45
47
|
@click.stop="executeAction(action.type, $event)">
|
|
46
48
|
<span class="action-icon" v-html="action.icon" />
|
|
47
49
|
</button>
|
|
@@ -83,15 +85,27 @@ const defaultLabels: Record<RowActionType, string> = {
|
|
|
83
85
|
insertAbove: 'Insert Above',
|
|
84
86
|
insertBelow: 'Insert Below',
|
|
85
87
|
move: 'Move Record',
|
|
88
|
+
moveUp: 'Move Up',
|
|
89
|
+
moveDown: 'Move Down',
|
|
86
90
|
open: 'Open Record',
|
|
87
91
|
}
|
|
88
92
|
|
|
89
93
|
// Determine which actions are enabled
|
|
90
94
|
const enabledActions = computed(() => {
|
|
91
|
-
const actions: Array<{ type: RowActionType; label: string; icon: string }> = []
|
|
95
|
+
const actions: Array<{ type: RowActionType; label: string; icon: string; disabled: boolean }> = []
|
|
92
96
|
const configActions = props.config.actions || {}
|
|
93
97
|
|
|
94
|
-
const actionTypes: RowActionType[] = [
|
|
98
|
+
const actionTypes: RowActionType[] = [
|
|
99
|
+
'open',
|
|
100
|
+
'moveUp',
|
|
101
|
+
'moveDown',
|
|
102
|
+
'duplicate',
|
|
103
|
+
'insertAbove',
|
|
104
|
+
'insertBelow',
|
|
105
|
+
'add',
|
|
106
|
+
'delete',
|
|
107
|
+
'move',
|
|
108
|
+
]
|
|
95
109
|
|
|
96
110
|
for (const type of actionTypes) {
|
|
97
111
|
const actionConfig = configActions[type]
|
|
@@ -105,15 +119,18 @@ const enabledActions = computed(() => {
|
|
|
105
119
|
let enabled = true
|
|
106
120
|
let label = defaultLabels[type]
|
|
107
121
|
let icon = actionIcons[type]
|
|
122
|
+
let disabled = false
|
|
108
123
|
|
|
109
124
|
if (typeof actionConfig === 'object') {
|
|
110
125
|
enabled = actionConfig.enabled !== false
|
|
111
126
|
label = actionConfig.label || label
|
|
112
127
|
icon = actionConfig.icon || icon
|
|
128
|
+
// Per-row predicate; reading store state here keeps this computed reactive to row changes.
|
|
129
|
+
if (actionConfig.disabled) disabled = actionConfig.disabled(props.rowIndex, props.store)
|
|
113
130
|
}
|
|
114
131
|
|
|
115
132
|
if (enabled) {
|
|
116
|
-
actions.push({ type, label, icon })
|
|
133
|
+
actions.push({ type, label, icon, disabled })
|
|
117
134
|
}
|
|
118
135
|
}
|
|
119
136
|
|
|
@@ -172,7 +189,9 @@ const checkDropdownPosition = () => {
|
|
|
172
189
|
|
|
173
190
|
const buttonRect = toggleButtonRef.value.getBoundingClientRect()
|
|
174
191
|
const viewportHeight = window.innerHeight
|
|
192
|
+
const viewportWidth = window.innerWidth
|
|
175
193
|
const estimatedMenuHeight = enabledActions.value.length * 40 + 16 // ~40px per item + padding
|
|
194
|
+
const estimatedMenuWidth = 160 // matches min-width: 10rem
|
|
176
195
|
|
|
177
196
|
// Check if menu would extend beyond viewport bottom
|
|
178
197
|
const spaceBelow = viewportHeight - buttonRect.bottom
|
|
@@ -181,17 +200,17 @@ const checkDropdownPosition = () => {
|
|
|
181
200
|
// Flip if not enough space below but enough space above
|
|
182
201
|
dropdownFlipped.value = spaceBelow < estimatedMenuHeight && spaceAbove > estimatedMenuHeight
|
|
183
202
|
|
|
203
|
+
// Horizontal: anchor the menu's left edge to the button, but right-align it to the button when
|
|
204
|
+
// it would overflow the viewport's right edge (e.g. an end-positioned actions column).
|
|
205
|
+
let left = buttonRect.left
|
|
206
|
+
if (left + estimatedMenuWidth > viewportWidth) {
|
|
207
|
+
left = Math.max(0, buttonRect.right - estimatedMenuWidth)
|
|
208
|
+
}
|
|
209
|
+
|
|
184
210
|
// Calculate fixed position
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
left: buttonRect.left,
|
|
189
|
-
}
|
|
190
|
-
} else {
|
|
191
|
-
menuPosition.value = {
|
|
192
|
-
top: buttonRect.bottom,
|
|
193
|
-
left: buttonRect.left,
|
|
194
|
-
}
|
|
211
|
+
menuPosition.value = {
|
|
212
|
+
top: dropdownFlipped.value ? buttonRect.top : buttonRect.bottom,
|
|
213
|
+
left,
|
|
195
214
|
}
|
|
196
215
|
}
|
|
197
216
|
|
|
@@ -219,8 +238,6 @@ const executeAction = (actionType: RowActionType, event?: MouseEvent) => {
|
|
|
219
238
|
</script>
|
|
220
239
|
|
|
221
240
|
<style>
|
|
222
|
-
@import url('@stonecrop/themes/default.css');
|
|
223
|
-
|
|
224
241
|
.atable-row-actions {
|
|
225
242
|
width: 2rem;
|
|
226
243
|
min-width: 2rem;
|
|
@@ -359,6 +376,17 @@ const executeAction = (actionType: RowActionType, event?: MouseEvent) => {
|
|
|
359
376
|
background-color: var(--sc-gray-10, #f5f5f5);
|
|
360
377
|
}
|
|
361
378
|
|
|
379
|
+
.row-action-menu-item:disabled,
|
|
380
|
+
.row-action-btn:disabled {
|
|
381
|
+
opacity: 0.4;
|
|
382
|
+
cursor: not-allowed;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.row-action-menu-item:disabled:hover,
|
|
386
|
+
.row-action-btn:disabled:hover {
|
|
387
|
+
background-color: transparent;
|
|
388
|
+
}
|
|
389
|
+
|
|
362
390
|
.row-action-menu-item .action-icon {
|
|
363
391
|
display: flex;
|
|
364
392
|
align-items: center;
|
|
@@ -204,10 +204,13 @@ watch(
|
|
|
204
204
|
watch(
|
|
205
205
|
columns,
|
|
206
206
|
newColumns => {
|
|
207
|
+
// The model is optional, so it can be absent — there is nothing to sync from, and the store
|
|
208
|
+
// keeps the columns it resolved from the schema.
|
|
209
|
+
if (!newColumns) return
|
|
207
210
|
// Only update if the columns have actually changed (avoid infinite loops)
|
|
208
211
|
if (JSON.stringify(newColumns) !== JSON.stringify(store.columns)) {
|
|
209
212
|
store.columns = [...newColumns]
|
|
210
|
-
emit('columns:update', [...newColumns]
|
|
213
|
+
emit('columns:update', [...newColumns])
|
|
211
214
|
}
|
|
212
215
|
},
|
|
213
216
|
{ deep: true }
|
|
@@ -371,6 +374,20 @@ const handleRowAction = (actionType: RowActionType, rowIndex: number, event?: Mo
|
|
|
371
374
|
emit('row:move', { fromIndex: rowIndex, toIndex: -1 })
|
|
372
375
|
break
|
|
373
376
|
}
|
|
377
|
+
case 'moveUp': {
|
|
378
|
+
if (rowIndex > 0 && store.moveRow(rowIndex, rowIndex - 1)) {
|
|
379
|
+
rows.value = [...store.rows]
|
|
380
|
+
emit('row:move', { fromIndex: rowIndex, toIndex: rowIndex - 1 })
|
|
381
|
+
}
|
|
382
|
+
break
|
|
383
|
+
}
|
|
384
|
+
case 'moveDown': {
|
|
385
|
+
if (rowIndex < store.rows.length - 1 && store.moveRow(rowIndex, rowIndex + 1)) {
|
|
386
|
+
rows.value = [...store.rows]
|
|
387
|
+
emit('row:move', { fromIndex: rowIndex, toIndex: rowIndex + 1 })
|
|
388
|
+
}
|
|
389
|
+
break
|
|
390
|
+
}
|
|
374
391
|
case 'open': {
|
|
375
392
|
const row = store.rows[rowIndex]
|
|
376
393
|
emit('row:open', { row, rowIndex, event })
|
|
@@ -425,7 +442,6 @@ td.sticky-index {
|
|
|
425
442
|
</style>
|
|
426
443
|
|
|
427
444
|
<style scoped>
|
|
428
|
-
@import url('@stonecrop/themes/default.css');
|
|
429
445
|
.atable {
|
|
430
446
|
position: relative;
|
|
431
447
|
font-family: var(--sc-atable-font-family);
|