@stonecrop/atable 0.8.1 → 0.8.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/assets/index.css +1 -1
- package/dist/atable.d.ts +1233 -1
- package/dist/atable.js +1602 -1269
- package/dist/atable.js.map +1 -1
- package/dist/atable.umd.cjs +46 -2
- package/dist/atable.umd.cjs.map +1 -1
- package/dist/icons/index.js +31 -0
- package/dist/icons/stonecrop-ui-icon-add.svg +5 -0
- package/dist/icons/stonecrop-ui-icon-insert-above.svg +11 -11
- package/dist/icons/stonecrop-ui-icon-insert-below.svg +11 -11
- package/dist/index.js +5 -1
- package/dist/src/icons/index.d.ts +19 -0
- package/dist/src/icons/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/stores/table.d.ts +1075 -1
- package/dist/src/stores/table.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +122 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/stores/table.js +178 -0
- package/package.json +3 -3
- package/src/components/ARow.vue +53 -1
- package/src/components/ARowActions.vue +376 -0
- package/src/components/ATable.vue +83 -2
- package/src/components/ATableHeader.vue +49 -19
- package/src/icons/index.ts +34 -0
- package/src/icons/stonecrop-ui-icon-add.svg +5 -0
- package/src/icons/stonecrop-ui-icon-insert-above.svg +11 -11
- package/src/icons/stonecrop-ui-icon-insert-below.svg +11 -11
- package/src/index.ts +6 -0
- package/src/stores/table.ts +203 -0
- package/src/types/index.ts +138 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/stores/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,KAAK,CAAA;AAEvD,OAAO,KAAK,EACX,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,MAAM,UAAU,CAAA;AAGjB;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,4BAA4B;IAC5B,KAAK,EAAE,GAAG,CAAA;IACV,yCAAyC;IACzC,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,GAAG,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,UAAU,CAAA;CAClB
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/stores/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -182,6 +182,82 @@ export interface CellContext {
|
|
|
182
182
|
[key: string]: any;
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Row action type identifiers.
|
|
187
|
+
* @public
|
|
188
|
+
*/
|
|
189
|
+
export type RowActionType = 'add' | 'delete' | 'duplicate' | 'insertAbove' | 'insertBelow' | 'move';
|
|
190
|
+
/**
|
|
191
|
+
* Options for configuring individual row actions.
|
|
192
|
+
* @public
|
|
193
|
+
*/
|
|
194
|
+
export interface RowActionOptions {
|
|
195
|
+
/**
|
|
196
|
+
* Whether the action is enabled.
|
|
197
|
+
*
|
|
198
|
+
* @defaultValue true
|
|
199
|
+
*/
|
|
200
|
+
enabled?: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Custom label for the action (used in dropdown mode).
|
|
203
|
+
*/
|
|
204
|
+
label?: string;
|
|
205
|
+
/**
|
|
206
|
+
* Custom icon override (raw SVG string).
|
|
207
|
+
*/
|
|
208
|
+
icon?: string;
|
|
209
|
+
/**
|
|
210
|
+
* Custom handler for the action. Return false to prevent the default behavior.
|
|
211
|
+
*
|
|
212
|
+
* @param rowIndex - The index of the row the action is being performed on
|
|
213
|
+
* @param store - The table store instance
|
|
214
|
+
* @returns void or false to prevent default behavior
|
|
215
|
+
*/
|
|
216
|
+
handler?: (rowIndex: number, store: ReturnType<typeof createTableStore>) => void | boolean;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Configuration for row-level actions (add, delete, duplicate, etc.).
|
|
220
|
+
* @public
|
|
221
|
+
*/
|
|
222
|
+
export interface RowActionsConfig {
|
|
223
|
+
/**
|
|
224
|
+
* Whether row actions are enabled.
|
|
225
|
+
*
|
|
226
|
+
* @defaultValue false
|
|
227
|
+
*/
|
|
228
|
+
enabled: boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Position of the row actions column relative to the index column.
|
|
231
|
+
*
|
|
232
|
+
* @defaultValue 'before-index'
|
|
233
|
+
*/
|
|
234
|
+
position?: 'before-index' | 'after-index' | 'end';
|
|
235
|
+
/**
|
|
236
|
+
* Pixel width threshold at which to switch from icons to dropdown mode.
|
|
237
|
+
* Set to 0 to always use icons, or a large number to always use dropdown.
|
|
238
|
+
*
|
|
239
|
+
* @defaultValue 150
|
|
240
|
+
*/
|
|
241
|
+
dropdownThreshold?: number;
|
|
242
|
+
/**
|
|
243
|
+
* Force dropdown mode regardless of available width.
|
|
244
|
+
*
|
|
245
|
+
* @defaultValue false
|
|
246
|
+
*/
|
|
247
|
+
forceDropdown?: boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Configuration for individual actions. Set to true to enable with defaults,
|
|
250
|
+
* false to disable, or provide RowActionOptions for custom configuration.
|
|
251
|
+
*/
|
|
252
|
+
actions?: {
|
|
253
|
+
add?: boolean | RowActionOptions;
|
|
254
|
+
delete?: boolean | RowActionOptions;
|
|
255
|
+
duplicate?: boolean | RowActionOptions;
|
|
256
|
+
insertAbove?: boolean | RowActionOptions;
|
|
257
|
+
insertBelow?: boolean | RowActionOptions;
|
|
258
|
+
move?: boolean | RowActionOptions;
|
|
259
|
+
};
|
|
260
|
+
}
|
|
185
261
|
/**
|
|
186
262
|
* Base table configuration properties shared across all view types.
|
|
187
263
|
* @public
|
|
@@ -193,6 +269,10 @@ export interface BaseTableConfig {
|
|
|
193
269
|
* @defaultValue false
|
|
194
270
|
*/
|
|
195
271
|
fullWidth?: boolean;
|
|
272
|
+
/**
|
|
273
|
+
* Configuration for row-level actions (add, delete, duplicate, etc.).
|
|
274
|
+
*/
|
|
275
|
+
rowActions?: RowActionsConfig;
|
|
196
276
|
}
|
|
197
277
|
/**
|
|
198
278
|
* Table configuration for basic view types (uncounted, list, list-expansion).
|
|
@@ -632,4 +712,46 @@ export type ConnectionEvent = {
|
|
|
632
712
|
type: 'create' | 'delete';
|
|
633
713
|
connection: ConnectionPath;
|
|
634
714
|
};
|
|
715
|
+
/**
|
|
716
|
+
* Event payload for row:add event.
|
|
717
|
+
* @public
|
|
718
|
+
*/
|
|
719
|
+
export interface RowAddEvent {
|
|
720
|
+
rowIndex: number;
|
|
721
|
+
row: TableRow;
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* Event payload for row:delete event.
|
|
725
|
+
* @public
|
|
726
|
+
*/
|
|
727
|
+
export interface RowDeleteEvent {
|
|
728
|
+
rowIndex: number;
|
|
729
|
+
row: TableRow;
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Event payload for row:duplicate event.
|
|
733
|
+
* @public
|
|
734
|
+
*/
|
|
735
|
+
export interface RowDuplicateEvent {
|
|
736
|
+
sourceIndex: number;
|
|
737
|
+
newIndex: number;
|
|
738
|
+
row: TableRow;
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* Event payload for row:insert-above and row:insert-below events.
|
|
742
|
+
* @public
|
|
743
|
+
*/
|
|
744
|
+
export interface RowInsertEvent {
|
|
745
|
+
targetIndex: number;
|
|
746
|
+
newIndex: number;
|
|
747
|
+
row: TableRow;
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* Event payload for row:move event.
|
|
751
|
+
* @public
|
|
752
|
+
*/
|
|
753
|
+
export interface RowMoveEvent {
|
|
754
|
+
fromIndex: number;
|
|
755
|
+
toIndex: number;
|
|
756
|
+
}
|
|
635
757
|
//# 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,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,eAAe,CAAA;IAEvB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;IAE3F;;OAEG;IACH,aAAa,CAAC,EAAE,GAAG,EAAE,CAAA;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAExC;;;;;;;;;;;;;OAaG;IAEH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,CAAA;IAE5D;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE9C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,CAAA;IAEhE;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAE1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;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,WAAW,eAAe;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/table.js
CHANGED
|
@@ -562,6 +562,178 @@ export const createTableStore = (initData) => {
|
|
|
562
562
|
const clearFilter = (colIndex) => {
|
|
563
563
|
delete filterState.value[colIndex];
|
|
564
564
|
};
|
|
565
|
+
// Row action methods
|
|
566
|
+
/**
|
|
567
|
+
* Add a new row to the table.
|
|
568
|
+
* @param rowData - Optional partial row data to initialize the new row with
|
|
569
|
+
* @param position - Where to insert the row: 'start', 'end', or a specific index
|
|
570
|
+
* @returns The index of the newly added row
|
|
571
|
+
*/
|
|
572
|
+
const addRow = (rowData, position = 'end') => {
|
|
573
|
+
// Create a new row with default empty values for each column
|
|
574
|
+
const newRow = {};
|
|
575
|
+
for (const column of columns.value) {
|
|
576
|
+
newRow[column.name] = '';
|
|
577
|
+
}
|
|
578
|
+
// Merge in any provided row data
|
|
579
|
+
if (rowData) {
|
|
580
|
+
Object.assign(newRow, rowData);
|
|
581
|
+
}
|
|
582
|
+
let insertIndex;
|
|
583
|
+
if (position === 'start') {
|
|
584
|
+
insertIndex = 0;
|
|
585
|
+
rows.value.unshift(newRow);
|
|
586
|
+
}
|
|
587
|
+
else if (position === 'end') {
|
|
588
|
+
insertIndex = rows.value.length;
|
|
589
|
+
rows.value.push(newRow);
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
insertIndex = Math.max(0, Math.min(position, rows.value.length));
|
|
593
|
+
rows.value.splice(insertIndex, 0, newRow);
|
|
594
|
+
}
|
|
595
|
+
return insertIndex;
|
|
596
|
+
};
|
|
597
|
+
/**
|
|
598
|
+
* Delete a row from the table.
|
|
599
|
+
* @param rowIndex - The index of the row to delete
|
|
600
|
+
* @returns The deleted row, or null if the index was invalid
|
|
601
|
+
*/
|
|
602
|
+
const deleteRow = (rowIndex) => {
|
|
603
|
+
if (rowIndex < 0 || rowIndex >= rows.value.length) {
|
|
604
|
+
return null;
|
|
605
|
+
}
|
|
606
|
+
const [deletedRow] = rows.value.splice(rowIndex, 1);
|
|
607
|
+
// Clean up row modifications tracking for the deleted row
|
|
608
|
+
delete rowModifications.value[rowIndex];
|
|
609
|
+
delete rowExpandStates.value[rowIndex];
|
|
610
|
+
// Shift modification/expand state indices for rows after the deleted one
|
|
611
|
+
const newModifications = {};
|
|
612
|
+
const newExpandStates = {};
|
|
613
|
+
for (const [key, value] of Object.entries(rowModifications.value)) {
|
|
614
|
+
const idx = parseInt(key);
|
|
615
|
+
if (idx > rowIndex) {
|
|
616
|
+
newModifications[idx - 1] = value;
|
|
617
|
+
}
|
|
618
|
+
else {
|
|
619
|
+
newModifications[idx] = value;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
for (const [key, value] of Object.entries(rowExpandStates.value)) {
|
|
623
|
+
const idx = parseInt(key);
|
|
624
|
+
if (idx > rowIndex) {
|
|
625
|
+
newExpandStates[idx - 1] = value;
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
newExpandStates[idx] = value;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
rowModifications.value = newModifications;
|
|
632
|
+
rowExpandStates.value = newExpandStates;
|
|
633
|
+
return deletedRow;
|
|
634
|
+
};
|
|
635
|
+
/**
|
|
636
|
+
* Duplicate a row in the table.
|
|
637
|
+
* @param rowIndex - The index of the row to duplicate
|
|
638
|
+
* @returns The index of the new duplicated row, or -1 if the index was invalid
|
|
639
|
+
*/
|
|
640
|
+
const duplicateRow = (rowIndex) => {
|
|
641
|
+
if (rowIndex < 0 || rowIndex >= rows.value.length) {
|
|
642
|
+
return -1;
|
|
643
|
+
}
|
|
644
|
+
// Deep clone the row data
|
|
645
|
+
const originalRow = rows.value[rowIndex];
|
|
646
|
+
const duplicatedRow = JSON.parse(JSON.stringify(originalRow));
|
|
647
|
+
// Insert the duplicated row after the original
|
|
648
|
+
const newIndex = rowIndex + 1;
|
|
649
|
+
rows.value.splice(newIndex, 0, duplicatedRow);
|
|
650
|
+
return newIndex;
|
|
651
|
+
};
|
|
652
|
+
/**
|
|
653
|
+
* Insert a new row above the specified row.
|
|
654
|
+
* @param rowIndex - The index of the row to insert above
|
|
655
|
+
* @param rowData - Optional partial row data to initialize the new row with
|
|
656
|
+
* @returns The index of the newly inserted row
|
|
657
|
+
*/
|
|
658
|
+
const insertRowAbove = (rowIndex, rowData) => {
|
|
659
|
+
const insertIndex = Math.max(0, rowIndex);
|
|
660
|
+
return addRow(rowData, insertIndex);
|
|
661
|
+
};
|
|
662
|
+
/**
|
|
663
|
+
* Insert a new row below the specified row.
|
|
664
|
+
* @param rowIndex - The index of the row to insert below
|
|
665
|
+
* @param rowData - Optional partial row data to initialize the new row with
|
|
666
|
+
* @returns The index of the newly inserted row
|
|
667
|
+
*/
|
|
668
|
+
const insertRowBelow = (rowIndex, rowData) => {
|
|
669
|
+
const insertIndex = Math.min(rowIndex + 1, rows.value.length);
|
|
670
|
+
return addRow(rowData, insertIndex);
|
|
671
|
+
};
|
|
672
|
+
/**
|
|
673
|
+
* Move a row from one position to another.
|
|
674
|
+
* @param fromIndex - The current index of the row to move
|
|
675
|
+
* @param toIndex - The target index to move the row to
|
|
676
|
+
* @returns true if the move was successful, false otherwise
|
|
677
|
+
*/
|
|
678
|
+
const moveRow = (fromIndex, toIndex) => {
|
|
679
|
+
// Validate indices
|
|
680
|
+
if (fromIndex < 0 ||
|
|
681
|
+
fromIndex >= rows.value.length ||
|
|
682
|
+
toIndex < 0 ||
|
|
683
|
+
toIndex >= rows.value.length ||
|
|
684
|
+
fromIndex === toIndex) {
|
|
685
|
+
return false;
|
|
686
|
+
}
|
|
687
|
+
// Remove the row from its current position
|
|
688
|
+
const [movedRow] = rows.value.splice(fromIndex, 1);
|
|
689
|
+
// Insert at the new position
|
|
690
|
+
rows.value.splice(toIndex, 0, movedRow);
|
|
691
|
+
// Update row modification and expand state indices
|
|
692
|
+
const newModifications = {};
|
|
693
|
+
const newExpandStates = {};
|
|
694
|
+
for (const [key, value] of Object.entries(rowModifications.value)) {
|
|
695
|
+
const idx = parseInt(key);
|
|
696
|
+
let newIdx = idx;
|
|
697
|
+
if (idx === fromIndex) {
|
|
698
|
+
// The moved row
|
|
699
|
+
newIdx = toIndex;
|
|
700
|
+
}
|
|
701
|
+
else if (fromIndex < toIndex) {
|
|
702
|
+
// Moving down: rows between fromIndex and toIndex shift up
|
|
703
|
+
if (idx > fromIndex && idx <= toIndex) {
|
|
704
|
+
newIdx = idx - 1;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
// Moving up: rows between toIndex and fromIndex shift down
|
|
709
|
+
if (idx >= toIndex && idx < fromIndex) {
|
|
710
|
+
newIdx = idx + 1;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
newModifications[newIdx] = value;
|
|
714
|
+
}
|
|
715
|
+
for (const [key, value] of Object.entries(rowExpandStates.value)) {
|
|
716
|
+
const idx = parseInt(key);
|
|
717
|
+
let newIdx = idx;
|
|
718
|
+
if (idx === fromIndex) {
|
|
719
|
+
newIdx = toIndex;
|
|
720
|
+
}
|
|
721
|
+
else if (fromIndex < toIndex) {
|
|
722
|
+
if (idx > fromIndex && idx <= toIndex) {
|
|
723
|
+
newIdx = idx - 1;
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
if (idx >= toIndex && idx < fromIndex) {
|
|
728
|
+
newIdx = idx + 1;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
newExpandStates[newIdx] = value;
|
|
732
|
+
}
|
|
733
|
+
rowModifications.value = newModifications;
|
|
734
|
+
rowExpandStates.value = newExpandStates;
|
|
735
|
+
return true;
|
|
736
|
+
};
|
|
565
737
|
return {
|
|
566
738
|
// state
|
|
567
739
|
columns,
|
|
@@ -585,10 +757,13 @@ export const createTableStore = (initData) => {
|
|
|
585
757
|
numberedRowWidth,
|
|
586
758
|
zeroColumn,
|
|
587
759
|
// actions
|
|
760
|
+
addRow,
|
|
588
761
|
clearFilter,
|
|
589
762
|
closeModal,
|
|
590
763
|
createConnection,
|
|
591
764
|
deleteConnection,
|
|
765
|
+
deleteRow,
|
|
766
|
+
duplicateRow,
|
|
592
767
|
getCellData,
|
|
593
768
|
getCellDisplayValue,
|
|
594
769
|
getConnectionsForBar,
|
|
@@ -597,8 +772,11 @@ export const createTableStore = (initData) => {
|
|
|
597
772
|
getHeaderCellStyle,
|
|
598
773
|
getIndent,
|
|
599
774
|
getRowExpandSymbol,
|
|
775
|
+
insertRowAbove,
|
|
776
|
+
insertRowBelow,
|
|
600
777
|
isRowGantt,
|
|
601
778
|
isRowVisible,
|
|
779
|
+
moveRow,
|
|
602
780
|
registerConnectionHandle,
|
|
603
781
|
registerGanttBar,
|
|
604
782
|
resizeColumn,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stonecrop/atable",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"@vueuse/core": "^14.1.0",
|
|
43
43
|
"pinia": "^3.0.4",
|
|
44
44
|
"vue": "^3.5.26",
|
|
45
|
-
"@stonecrop/themes": "0.8.
|
|
46
|
-
"@stonecrop/utilities": "0.8.
|
|
45
|
+
"@stonecrop/themes": "0.8.2",
|
|
46
|
+
"@stonecrop/utilities": "0.8.2"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@eslint/js": "^9.39.2",
|
package/src/components/ARow.vue
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<tr v-show="isRowVisible" ref="rowEl" :tabindex="tabIndex" class="atable-row">
|
|
3
|
+
<!-- Row actions before index (default position) -->
|
|
4
|
+
<ARowActions
|
|
5
|
+
v-if="showRowActions && actionsPosition === 'before-index'"
|
|
6
|
+
:row-index="rowIndex"
|
|
7
|
+
:store="store"
|
|
8
|
+
:config="rowActionsConfig"
|
|
9
|
+
:position="actionsPosition"
|
|
10
|
+
@action="onRowAction"
|
|
11
|
+
/>
|
|
12
|
+
|
|
3
13
|
<!-- render numbered/tree view index; skip render for uncounted lists -->
|
|
4
14
|
<slot v-if="store.config.view !== 'uncounted'" name="index">
|
|
5
15
|
<td
|
|
@@ -19,8 +29,26 @@
|
|
|
19
29
|
</td>
|
|
20
30
|
</slot>
|
|
21
31
|
|
|
32
|
+
<!-- Row actions after index -->
|
|
33
|
+
<ARowActions
|
|
34
|
+
v-if="showRowActions && actionsPosition === 'after-index'"
|
|
35
|
+
:row-index="rowIndex"
|
|
36
|
+
:store="store"
|
|
37
|
+
:config="rowActionsConfig"
|
|
38
|
+
:position="actionsPosition"
|
|
39
|
+
@action="onRowAction" />
|
|
40
|
+
|
|
22
41
|
<!-- render cell content -->
|
|
23
42
|
<slot></slot>
|
|
43
|
+
|
|
44
|
+
<!-- Row actions at end -->
|
|
45
|
+
<ARowActions
|
|
46
|
+
v-if="showRowActions && actionsPosition === 'end'"
|
|
47
|
+
:row-index="rowIndex"
|
|
48
|
+
:store="store"
|
|
49
|
+
:config="rowActionsConfig"
|
|
50
|
+
:position="actionsPosition"
|
|
51
|
+
@action="onRowAction" />
|
|
24
52
|
</tr>
|
|
25
53
|
</template>
|
|
26
54
|
|
|
@@ -28,7 +56,9 @@
|
|
|
28
56
|
import { type KeypressHandlers, useKeyboardNav, defaultKeypressHandlers } from '@stonecrop/utilities'
|
|
29
57
|
import { computed, useTemplateRef } from 'vue'
|
|
30
58
|
|
|
59
|
+
import ARowActions from './ARowActions.vue'
|
|
31
60
|
import { createTableStore } from '../stores/table'
|
|
61
|
+
import type { RowActionsConfig, RowActionType } from '../types'
|
|
32
62
|
|
|
33
63
|
const {
|
|
34
64
|
rowIndex,
|
|
@@ -42,11 +72,32 @@ const {
|
|
|
42
72
|
addNavigation?: boolean | KeypressHandlers
|
|
43
73
|
}>()
|
|
44
74
|
|
|
75
|
+
const emit = defineEmits<{
|
|
76
|
+
'row:action': [type: RowActionType, rowIndex: number]
|
|
77
|
+
}>()
|
|
78
|
+
|
|
45
79
|
const rowRef = useTemplateRef<HTMLTableRowElement>('rowEl')
|
|
46
80
|
|
|
47
81
|
const isRowVisible = computed(() => store.isRowVisible(rowIndex))
|
|
48
82
|
const rowExpandSymbol = computed(() => store.getRowExpandSymbol(rowIndex))
|
|
49
83
|
|
|
84
|
+
// Row actions configuration
|
|
85
|
+
const rowActionsConfig = computed<RowActionsConfig>(() => {
|
|
86
|
+
return store.config.rowActions || { enabled: false }
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
const showRowActions = computed(() => {
|
|
90
|
+
return rowActionsConfig.value.enabled
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
const actionsPosition = computed(() => {
|
|
94
|
+
return rowActionsConfig.value.position || 'before-index'
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
const onRowAction = (actionType: RowActionType, index: number) => {
|
|
98
|
+
emit('row:action', actionType, index)
|
|
99
|
+
}
|
|
100
|
+
|
|
50
101
|
if (addNavigation) {
|
|
51
102
|
let handlers = defaultKeypressHandlers
|
|
52
103
|
|
|
@@ -84,7 +135,8 @@ if (addNavigation) {
|
|
|
84
135
|
padding-right: 0.5em;
|
|
85
136
|
text-align: left;
|
|
86
137
|
user-select: none;
|
|
87
|
-
width: 7ch;
|
|
138
|
+
/* width: 7ch; */
|
|
139
|
+
border-top: 1px solid var(--sc-row-border-color);
|
|
88
140
|
text-overflow: ellipsis;
|
|
89
141
|
overflow: hidden;
|
|
90
142
|
box-sizing: border-box;
|