@vueye-table/styled 3.0.0-alpha.9 → 3.0.0-beta.1
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/index.d.ts +133 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -13
- package/dist/index.js.map +1 -1
- package/dist/style.css +113 -0
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SortInfo, TableColumn, TableRow } from "@vueye-table/core";
|
|
2
|
-
import { DetailSlotProps, GridCellSlotProps } from "@vueye-table/headless";
|
|
2
|
+
import { CellEditorSlotProps, DetailSlotProps, GridCellSlotProps } from "@vueye-table/headless";
|
|
3
3
|
import { AnyDataTableBinding, DataTableBinding } from "@vueye-table/vue";
|
|
4
4
|
import { Component, PropType, SlotsType, VNode, VNodeChild } from "vue";
|
|
5
5
|
//#region src/components.d.ts
|
|
@@ -105,6 +105,10 @@ declare const VtTable: import("vue").DefineComponent<import("vue").ExtractPropTy
|
|
|
105
105
|
type: PropType<AnyDataTableBinding>;
|
|
106
106
|
required: true;
|
|
107
107
|
};
|
|
108
|
+
leadingColumns: {
|
|
109
|
+
type: NumberConstructor;
|
|
110
|
+
default: number;
|
|
111
|
+
};
|
|
108
112
|
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
109
113
|
[key: string]: any;
|
|
110
114
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -172,7 +176,12 @@ declare const VtTable: import("vue").DefineComponent<import("vue").ExtractPropTy
|
|
|
172
176
|
type: PropType<AnyDataTableBinding>;
|
|
173
177
|
required: true;
|
|
174
178
|
};
|
|
179
|
+
leadingColumns: {
|
|
180
|
+
type: NumberConstructor;
|
|
181
|
+
default: number;
|
|
182
|
+
};
|
|
175
183
|
}>> & Readonly<{}>, {
|
|
184
|
+
leadingColumns: number;
|
|
176
185
|
density: Density;
|
|
177
186
|
striped: boolean;
|
|
178
187
|
bordered: boolean;
|
|
@@ -547,11 +556,114 @@ declare const VtToolbar: import("vue").DefineComponent<{}, () => VNode<import("v
|
|
|
547
556
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, SlotsType<{
|
|
548
557
|
default?: () => VNode[];
|
|
549
558
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
559
|
+
declare const VtCellEditor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
560
|
+
readonly editor: {
|
|
561
|
+
readonly type: PropType<CellEditorSlotProps>;
|
|
562
|
+
readonly required: true;
|
|
563
|
+
};
|
|
564
|
+
readonly spec: {
|
|
565
|
+
readonly type: PropType<import("@vueye-table/core").EditorSpec>;
|
|
566
|
+
readonly default: () => {
|
|
567
|
+
kind: string;
|
|
568
|
+
};
|
|
569
|
+
};
|
|
570
|
+
readonly finish: {
|
|
571
|
+
readonly type: PropType<((direction?: "up" | "down" | "left" | "right") => void) | undefined>;
|
|
572
|
+
readonly default: undefined;
|
|
573
|
+
};
|
|
574
|
+
readonly autofocus: {
|
|
575
|
+
readonly type: BooleanConstructor;
|
|
576
|
+
readonly default: true;
|
|
577
|
+
};
|
|
578
|
+
readonly blurCommit: {
|
|
579
|
+
readonly type: BooleanConstructor;
|
|
580
|
+
readonly default: true;
|
|
581
|
+
};
|
|
582
|
+
readonly tabCommit: {
|
|
583
|
+
readonly type: BooleanConstructor;
|
|
584
|
+
readonly default: true;
|
|
585
|
+
};
|
|
586
|
+
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
587
|
+
[key: string]: any;
|
|
588
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
589
|
+
readonly editor: {
|
|
590
|
+
readonly type: PropType<CellEditorSlotProps>;
|
|
591
|
+
readonly required: true;
|
|
592
|
+
};
|
|
593
|
+
readonly spec: {
|
|
594
|
+
readonly type: PropType<import("@vueye-table/core").EditorSpec>;
|
|
595
|
+
readonly default: () => {
|
|
596
|
+
kind: string;
|
|
597
|
+
};
|
|
598
|
+
};
|
|
599
|
+
readonly finish: {
|
|
600
|
+
readonly type: PropType<((direction?: "up" | "down" | "left" | "right") => void) | undefined>;
|
|
601
|
+
readonly default: undefined;
|
|
602
|
+
};
|
|
603
|
+
readonly autofocus: {
|
|
604
|
+
readonly type: BooleanConstructor;
|
|
605
|
+
readonly default: true;
|
|
606
|
+
};
|
|
607
|
+
readonly blurCommit: {
|
|
608
|
+
readonly type: BooleanConstructor;
|
|
609
|
+
readonly default: true;
|
|
610
|
+
};
|
|
611
|
+
readonly tabCommit: {
|
|
612
|
+
readonly type: BooleanConstructor;
|
|
613
|
+
readonly default: true;
|
|
614
|
+
};
|
|
615
|
+
}>> & Readonly<{}>, {
|
|
616
|
+
readonly spec: import("@vueye-table/core").EditorSpec;
|
|
617
|
+
readonly finish: ((direction?: "up" | "down" | "left" | "right") => void) | undefined;
|
|
618
|
+
readonly autofocus: boolean;
|
|
619
|
+
readonly blurCommit: boolean;
|
|
620
|
+
readonly tabCommit: boolean;
|
|
621
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
622
|
+
declare const VtRowActions: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
623
|
+
row: {
|
|
624
|
+
readonly type: PropType<TableRow<unknown>>;
|
|
625
|
+
readonly required: true;
|
|
626
|
+
};
|
|
627
|
+
editable: {
|
|
628
|
+
type: BooleanConstructor;
|
|
629
|
+
default: boolean;
|
|
630
|
+
};
|
|
631
|
+
removable: {
|
|
632
|
+
type: BooleanConstructor;
|
|
633
|
+
default: boolean;
|
|
634
|
+
};
|
|
635
|
+
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
636
|
+
[key: string]: any;
|
|
637
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
638
|
+
row: {
|
|
639
|
+
readonly type: PropType<TableRow<unknown>>;
|
|
640
|
+
readonly required: true;
|
|
641
|
+
};
|
|
642
|
+
editable: {
|
|
643
|
+
type: BooleanConstructor;
|
|
644
|
+
default: boolean;
|
|
645
|
+
};
|
|
646
|
+
removable: {
|
|
647
|
+
type: BooleanConstructor;
|
|
648
|
+
default: boolean;
|
|
649
|
+
};
|
|
650
|
+
}>> & Readonly<{}>, {
|
|
651
|
+
editable: boolean;
|
|
652
|
+
removable: boolean;
|
|
653
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
550
654
|
/**
|
|
551
655
|
* The styled spreadsheet grid, with optional row numbers and A, B, C column letters. A
|
|
552
656
|
* `cell.<column id>` slot draws that column's cells while they are not being edited.
|
|
553
657
|
*/
|
|
554
658
|
declare const VtGrid: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
659
|
+
rowActions: {
|
|
660
|
+
type: BooleanConstructor;
|
|
661
|
+
default: boolean;
|
|
662
|
+
};
|
|
663
|
+
removable: {
|
|
664
|
+
type: BooleanConstructor;
|
|
665
|
+
default: boolean;
|
|
666
|
+
};
|
|
555
667
|
density: {
|
|
556
668
|
readonly type: PropType<Density>;
|
|
557
669
|
readonly default: "comfortable";
|
|
@@ -630,7 +742,18 @@ declare const VtGrid: import("vue").DefineComponent<import("vue").ExtractPropTyp
|
|
|
630
742
|
};
|
|
631
743
|
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
632
744
|
[key: string]: any;
|
|
633
|
-
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
745
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
746
|
+
save: (_result: unknown) => true;
|
|
747
|
+
cancel: (_key: unknown) => true;
|
|
748
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
749
|
+
rowActions: {
|
|
750
|
+
type: BooleanConstructor;
|
|
751
|
+
default: boolean;
|
|
752
|
+
};
|
|
753
|
+
removable: {
|
|
754
|
+
type: BooleanConstructor;
|
|
755
|
+
default: boolean;
|
|
756
|
+
};
|
|
634
757
|
density: {
|
|
635
758
|
readonly type: PropType<Density>;
|
|
636
759
|
readonly default: "comfortable";
|
|
@@ -707,7 +830,10 @@ declare const VtGrid: import("vue").DefineComponent<import("vue").ExtractPropTyp
|
|
|
707
830
|
type: BooleanConstructor;
|
|
708
831
|
default: boolean;
|
|
709
832
|
};
|
|
710
|
-
}>> & Readonly<{
|
|
833
|
+
}>> & Readonly<{
|
|
834
|
+
onCancel?: (_key: unknown) => any;
|
|
835
|
+
onSave?: (_result: unknown) => any;
|
|
836
|
+
}>, {
|
|
711
837
|
label: string | undefined;
|
|
712
838
|
density: Density;
|
|
713
839
|
striped: boolean;
|
|
@@ -724,10 +850,13 @@ declare const VtGrid: import("vue").DefineComponent<import("vue").ExtractPropTyp
|
|
|
724
850
|
overscan: number;
|
|
725
851
|
virtualColumns: boolean;
|
|
726
852
|
columnWidth: number;
|
|
853
|
+
removable: boolean;
|
|
727
854
|
rowNumbers: boolean;
|
|
728
855
|
columnLetters: boolean;
|
|
856
|
+
rowActions: boolean;
|
|
729
857
|
}, SlotsType<{
|
|
730
858
|
[key: `cell.${string}`]: GridCellSlotProps;
|
|
859
|
+
[key: `editor.${string}`]: CellEditorSlotProps;
|
|
731
860
|
} & {
|
|
732
861
|
default?: (props: Record<string, unknown>) => VNode[];
|
|
733
862
|
expanded?: (props: DetailSlotProps) => VNodeChild;
|
|
@@ -755,5 +884,5 @@ declare function icon(name: IconName, className?: string): VNode;
|
|
|
755
884
|
*/
|
|
756
885
|
declare function withClass<TComponent extends Component>(component: TComponent, className: string, name: string): TComponent;
|
|
757
886
|
//#endregion
|
|
758
|
-
export { type Density, type IconName, VtBody, VtColumnVisibility, VtDetailRow, VtEmpty, VtExpandToggle, VtGrid, VtHeader, VtLoadMore, VtPageSize, VtPagination, VtSearch, VtSortIndicator, VtStatus, VtTable, VtToolbar, VtTreeCell, icon, withClass };
|
|
887
|
+
export { type Density, type IconName, VtBody, VtCellEditor, VtColumnVisibility, VtDetailRow, VtEmpty, VtExpandToggle, VtGrid, VtHeader, VtLoadMore, VtPageSize, VtPagination, VtRowActions, VtSearch, VtSortIndicator, VtStatus, VtTable, VtToolbar, VtTreeCell, icon, withClass };
|
|
759
888
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/components.ts","../src/icons.ts","../src/with-class.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/components.ts","../src/icons.ts","../src/with-class.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { columnLabel } from "@vueye-table/core";
|
|
2
|
-
import { DataGridBody, DataGridRoot, DataTableBody, DataTableCell, DataTableColumnVisibility, DataTableDetailRow, DataTableExpandToggle, DataTableHeader, DataTableHeaderCell, DataTableHeaderRow, DataTableLoadMore, DataTablePageSize, DataTablePagination, DataTableRoot, DataTableRow, DataTableSearch, DataTableSortButton, DataTableStatus, DataTableTreeCell, DataTableViewport, DataTableVirtualColumns, expandToggleProps, hierarchyProps, injectVirtualRenderer, resolveTreeColumn, treeCellProps, virtualProps } from "@vueye-table/headless";
|
|
2
|
+
import { DataCellEditor, DataGridBody, DataGridRoot, DataTableBody, DataTableCell, DataTableColumnVisibility, DataTableDetailRow, DataTableExpandToggle, DataTableHeader, DataTableHeaderCell, DataTableHeaderRow, DataTableLoadMore, DataTablePageSize, DataTablePagination, DataTableRoot, DataTableRow, DataTableRowActions, DataTableSearch, DataTableSortButton, DataTableStatus, DataTableTreeCell, DataTableViewport, DataTableVirtualColumns, cellEditorProps, expandToggleProps, hierarchyProps, injectVirtualRenderer, resolveTreeColumn, treeCellProps, virtualProps } from "@vueye-table/headless";
|
|
3
3
|
import { injectDataTable } from "@vueye-table/vue";
|
|
4
4
|
import { defineComponent, h, mergeProps } from "vue";
|
|
5
5
|
|
|
@@ -152,6 +152,10 @@ const VtTable = defineComponent({
|
|
|
152
152
|
type: Object,
|
|
153
153
|
required: true
|
|
154
154
|
},
|
|
155
|
+
leadingColumns: {
|
|
156
|
+
type: Number,
|
|
157
|
+
default: 0
|
|
158
|
+
},
|
|
155
159
|
...surfaceProps
|
|
156
160
|
},
|
|
157
161
|
setup(props, { slots }) {
|
|
@@ -164,6 +168,7 @@ const VtTable = defineComponent({
|
|
|
164
168
|
}), scroller(props, [h(DataTableRoot, {
|
|
165
169
|
table: props.table,
|
|
166
170
|
class: "vt-table",
|
|
171
|
+
leadingColumns: props.leadingColumns,
|
|
167
172
|
virtual: props.virtual,
|
|
168
173
|
rowHeight: props.rowHeight,
|
|
169
174
|
overscan: props.overscan,
|
|
@@ -327,6 +332,17 @@ const VtToolbar = defineComponent({
|
|
|
327
332
|
}, slots.default?.());
|
|
328
333
|
}
|
|
329
334
|
});
|
|
335
|
+
const VtCellEditor = defineComponent({
|
|
336
|
+
name: "VtCellEditor",
|
|
337
|
+
props: cellEditorProps,
|
|
338
|
+
setup(props) {
|
|
339
|
+
return () => h(DataCellEditor, {
|
|
340
|
+
...props,
|
|
341
|
+
class: "vt-cell-editor"
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
const VtRowActions = withClass(DataTableRowActions, "vt-row-actions", "VtRowActions");
|
|
330
346
|
const GridBody = defineComponent({
|
|
331
347
|
name: "VtGridBody",
|
|
332
348
|
props: {
|
|
@@ -346,6 +362,18 @@ const GridBody = defineComponent({
|
|
|
346
362
|
cells: {
|
|
347
363
|
type: Object,
|
|
348
364
|
default: () => ({})
|
|
365
|
+
},
|
|
366
|
+
editors: {
|
|
367
|
+
type: Object,
|
|
368
|
+
default: () => ({})
|
|
369
|
+
},
|
|
370
|
+
rowActions: {
|
|
371
|
+
type: Boolean,
|
|
372
|
+
default: false
|
|
373
|
+
},
|
|
374
|
+
removable: {
|
|
375
|
+
type: Boolean,
|
|
376
|
+
default: false
|
|
349
377
|
}
|
|
350
378
|
},
|
|
351
379
|
setup(props) {
|
|
@@ -356,18 +384,32 @@ const GridBody = defineComponent({
|
|
|
356
384
|
return h(DataGridBody, {
|
|
357
385
|
class: "vt-body",
|
|
358
386
|
treeCell: false,
|
|
359
|
-
colspan: table.columns.length + (props.rowNumbers || details ? 1 : 0)
|
|
387
|
+
colspan: table.columns.length + (props.rowNumbers || details || props.rowActions ? 1 : 0)
|
|
360
388
|
}, {
|
|
361
389
|
detail: props.detail,
|
|
362
|
-
rowHeader: ({ index }) => props.rowNumbers || details ? h("th", {
|
|
390
|
+
rowHeader: ({ index }) => props.rowNumbers || details || props.rowActions ? h("th", {
|
|
363
391
|
class: "vt-row-number",
|
|
364
|
-
scope: "row"
|
|
365
|
-
|
|
392
|
+
scope: "row",
|
|
393
|
+
"aria-colindex": 1
|
|
394
|
+
}, [
|
|
395
|
+
details ? h(VtExpandToggle, { row: table.rows[index] }) : null,
|
|
396
|
+
props.rowNumbers ? String(table.pageStart + index) : null,
|
|
397
|
+
props.rowActions ? h(VtRowActions, {
|
|
398
|
+
row: table.rows[index],
|
|
399
|
+
editable: false,
|
|
400
|
+
removable: props.removable
|
|
401
|
+
}) : null
|
|
402
|
+
]) : null,
|
|
366
403
|
cell: (cellProps) => {
|
|
367
404
|
const slot = cellSlots[cellProps.column.id];
|
|
368
405
|
const content = () => slot ? slot(cellProps) : cellProps.display;
|
|
369
406
|
return table.tree && cellProps.column.id === resolveTreeColumn(table, props.treeColumn) ? h(VtTreeCell, { row: cellProps.row }, { default: content }) : content();
|
|
370
|
-
}
|
|
407
|
+
},
|
|
408
|
+
editor: (editor) => props.editors[editor.column.id]?.(editor) ?? h(VtCellEditor, {
|
|
409
|
+
editor,
|
|
410
|
+
spec: editor.spec,
|
|
411
|
+
finish: editor.finish
|
|
412
|
+
})
|
|
371
413
|
});
|
|
372
414
|
};
|
|
373
415
|
}
|
|
@@ -396,20 +438,40 @@ const VtGrid = defineComponent({
|
|
|
396
438
|
type: Boolean,
|
|
397
439
|
default: false
|
|
398
440
|
},
|
|
399
|
-
...surfaceProps
|
|
441
|
+
...surfaceProps,
|
|
442
|
+
rowActions: {
|
|
443
|
+
type: Boolean,
|
|
444
|
+
default: false
|
|
445
|
+
},
|
|
446
|
+
removable: {
|
|
447
|
+
type: Boolean,
|
|
448
|
+
default: false
|
|
449
|
+
}
|
|
400
450
|
},
|
|
401
|
-
|
|
451
|
+
emits: {
|
|
452
|
+
save: (_result) => true,
|
|
453
|
+
cancel: (_key) => true
|
|
454
|
+
},
|
|
455
|
+
setup(props, { slots, attrs, emit }) {
|
|
402
456
|
const details = () => !!slots.expanded && !props.table.tree;
|
|
403
457
|
const cellSlots = () => {
|
|
404
458
|
const found = {};
|
|
405
459
|
for (const [name, slot] of Object.entries(slots)) if (name.startsWith("cell.") && slot) found[name.slice(5)] = slot;
|
|
406
460
|
return found;
|
|
407
461
|
};
|
|
462
|
+
const editorSlots = () => {
|
|
463
|
+
const found = {};
|
|
464
|
+
for (const name of Object.keys(slots)) if (name.startsWith("editor.")) {
|
|
465
|
+
const slot = slots[name];
|
|
466
|
+
if (slot) found[name.slice(7)] = slot;
|
|
467
|
+
}
|
|
468
|
+
return found;
|
|
469
|
+
};
|
|
408
470
|
const header = () => h(VtHeader, null, {
|
|
409
|
-
before: () => props.rowNumbers || details() ? h("th", {
|
|
471
|
+
before: () => props.rowNumbers || details() || props.rowActions ? h("th", {
|
|
410
472
|
class: "vt-row-number",
|
|
411
|
-
"aria-
|
|
412
|
-
"aria-label": details() ? "Details" :
|
|
473
|
+
"aria-colindex": 1,
|
|
474
|
+
"aria-label": props.rowActions ? "Row actions" : details() ? "Details" : "Row number"
|
|
413
475
|
}) : null,
|
|
414
476
|
header: ({ column }) => props.columnLetters ? [h("span", { class: "vt-column-letter" }, columnLabel(props.table.columns.indexOf(column))), column.header] : column.header
|
|
415
477
|
});
|
|
@@ -422,6 +484,7 @@ const VtGrid = defineComponent({
|
|
|
422
484
|
}), scroller(props, [h(DataGridRoot, {
|
|
423
485
|
table: props.table,
|
|
424
486
|
label: props.label,
|
|
487
|
+
leadingColumns: props.rowNumbers || details() || props.rowActions ? 1 : 0,
|
|
425
488
|
"aria-describedby": attrs["aria-describedby"],
|
|
426
489
|
class: "vt-table vt-grid",
|
|
427
490
|
virtual: props.virtual,
|
|
@@ -429,12 +492,17 @@ const VtGrid = defineComponent({
|
|
|
429
492
|
rowHeight: props.rowHeight,
|
|
430
493
|
overscan: props.overscan,
|
|
431
494
|
columnWidth: props.columnWidth,
|
|
432
|
-
gutter: props.rowNumbers ? details() ? 80 : 48 : details() ? 48 : 0,
|
|
495
|
+
gutter: props.rowActions ? 120 : props.rowNumbers ? details() ? 80 : 48 : details() ? 48 : 0,
|
|
496
|
+
onSave: (result) => emit("save", result),
|
|
497
|
+
onCancel: (key) => emit("cancel", key),
|
|
433
498
|
treeColumn: props.treeColumn,
|
|
434
499
|
keepAliveDetail: props.keepAliveDetail
|
|
435
500
|
}, { default: (slotProps) => slots.default?.(slotProps) ?? [header(), h(GridBody, {
|
|
436
501
|
rowNumbers: props.rowNumbers,
|
|
437
502
|
cells: cellSlots(),
|
|
503
|
+
editors: editorSlots(),
|
|
504
|
+
rowActions: props.rowActions,
|
|
505
|
+
removable: props.removable,
|
|
438
506
|
treeColumn: props.treeColumn,
|
|
439
507
|
detail: slots.expanded
|
|
440
508
|
})] })])]);
|
|
@@ -442,5 +510,5 @@ const VtGrid = defineComponent({
|
|
|
442
510
|
});
|
|
443
511
|
|
|
444
512
|
//#endregion
|
|
445
|
-
export { VtBody, VtColumnVisibility, VtDetailRow, VtEmpty, VtExpandToggle, VtGrid, VtHeader, VtLoadMore, VtPageSize, VtPagination, VtSearch, VtSortIndicator, VtStatus, VtTable, VtToolbar, VtTreeCell, icon, withClass };
|
|
513
|
+
export { VtBody, VtCellEditor, VtColumnVisibility, VtDetailRow, VtEmpty, VtExpandToggle, VtGrid, VtHeader, VtLoadMore, VtPageSize, VtPagination, VtRowActions, VtSearch, VtSortIndicator, VtStatus, VtTable, VtToolbar, VtTreeCell, icon, withClass };
|
|
446
514
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/icons.ts","../src/with-class.ts","../src/components.ts"],"sourcesContent":["import { h, type VNode } from \"vue\";\n\nconst paths = {\n sortNone: \"M7 9l5-5 5 5M7 15l5 5 5-5\",\n sortAsc: \"M7 14l5-5 5 5\",\n sortDesc: \"M7 10l5 5 5-5\",\n search: \"M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16zm10 2-4.35-4.35\",\n columns: \"M4 4h6v16H4zM14 4h6v16h-6z\",\n empty: \"M3 7h18M3 12h18M3 17h10\",\n expand: \"M9 5l7 7-7 7\",\n collapse: \"M5 9l7 7 7-7\",\n} as const;\n\nexport type IconName = keyof typeof paths;\n\n/** A 24-pixel stroke icon that inherits the text color. */\nexport function icon(name: IconName, className = \"vt-icon\"): VNode {\n return h(\n \"svg\",\n {\n class: className,\n viewBox: \"0 0 24 24\",\n width: 16,\n height: 16,\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n },\n [h(\"path\", { d: paths[name] })],\n );\n}\n","import { h, mergeProps, type Component, type FunctionalComponent } from \"vue\";\n\n/**\n * Wrap a component so it always carries a class. Props, attributes, and slots pass through\n * untouched, so the wrapper keeps the wrapped component's full API.\n */\nexport function withClass<TComponent extends Component>(\n component: TComponent,\n className: string,\n name: string,\n): TComponent {\n const wrapper: FunctionalComponent = (_props, { attrs, slots }) =>\n h(component, mergeProps(attrs, { class: className }), slots);\n wrapper.displayName = name;\n wrapper.inheritAttrs = false;\n return wrapper as unknown as TComponent;\n}\n","import { columnLabel, type SortInfo, type TableColumn, type TableRow } from \"@vueye-table/core\";\nimport {\n DataGridBody,\n DataGridRoot,\n DataTableBody,\n DataTableColumnVisibility,\n DataTableHeader,\n DataTableHeaderCell,\n DataTableHeaderRow,\n DataTablePageSize,\n DataTablePagination,\n DataTableRoot,\n DataTableSearch,\n DataTableSortButton,\n DataTableStatus,\n DataTableLoadMore,\n DataTableViewport,\n DataTableVirtualColumns,\n injectVirtualRenderer,\n virtualProps,\n type GridCellSlotProps,\n DataTableExpandToggle,\n DataTableDetailRow,\n DataTableTreeCell,\n DataTableRow,\n DataTableCell,\n hierarchyProps,\n resolveTreeColumn,\n type DetailSlotProps,\n expandToggleProps,\n treeCellProps,\n} from \"@vueye-table/headless\";\nimport { injectDataTable, type AnyDataTableBinding, type DataTableBinding } from \"@vueye-table/vue\";\nimport {\n defineComponent,\n h,\n type PropType,\n type SlotsType,\n type VNode,\n type VNodeChild,\n} from \"vue\";\n\nimport { icon } from \"./icons\";\nimport { withClass } from \"./with-class\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\n/** Visual options shared by the styled table and grid. */\nconst surfaceProps = {\n ...virtualProps,\n ...hierarchyProps,\n density: { type: String as PropType<Density>, default: \"comfortable\" },\n striped: { type: Boolean, default: false },\n bordered: { type: Boolean, default: false },\n hover: { type: Boolean, default: true },\n stickyHeader: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n /** Force a theme; by default the table follows `prefers-color-scheme`. */\n theme: { type: String as PropType<\"light\" | \"dark\" | undefined>, default: undefined },\n} as const;\n\nfunction surfaceAttrs(props: {\n readonly density: Density;\n readonly striped: boolean;\n readonly bordered: boolean;\n readonly hover: boolean;\n readonly stickyHeader: boolean;\n readonly loading: boolean;\n readonly theme: \"light\" | \"dark\" | undefined;\n readonly virtual: boolean | object;\n}) {\n return {\n class: \"vt-surface\",\n \"data-density\": props.density,\n \"data-striped\": props.striped ? \"\" : undefined,\n \"data-bordered\": props.bordered ? \"\" : undefined,\n \"data-hover\": props.hover ? \"\" : undefined,\n \"data-sticky-header\": props.stickyHeader || props.virtual ? \"\" : undefined,\n \"data-virtual\": props.virtual ? \"\" : undefined,\n \"data-loading\": props.loading ? \"\" : undefined,\n \"data-vt-theme\": props.theme,\n \"aria-busy\": props.loading ? \"true\" : undefined,\n };\n}\n\nfunction scroller(\n props: {\n readonly virtual: boolean | object;\n readonly height: string | undefined;\n readonly rowHeight: number;\n },\n children: VNode[],\n): VNode {\n return props.virtual\n ? h(\n DataTableViewport,\n {\n class: \"vt-scroll\",\n height: props.height ?? \"24rem\",\n style: { \"--vt-row-height\": `${props.rowHeight}px` },\n },\n { default: () => children },\n )\n : h(\"div\", { class: \"vt-scroll\" }, children);\n}\n\n/** An arrow showing a column's sort direction and, in a multi-column sort, its priority. */\nexport const VtSortIndicator = defineComponent({\n name: \"VtSortIndicator\",\n props: { sort: { type: Object as PropType<SortInfo | undefined>, default: undefined } },\n setup(props) {\n const table = injectDataTable(\"<VtSortIndicator>\");\n return () =>\n h(\"span\", { class: \"vt-sort-indicator\", \"data-active\": props.sort ? \"\" : undefined }, [\n icon(!props.sort ? \"sortNone\" : props.sort.direction === \"asc\" ? \"sortAsc\" : \"sortDesc\"),\n props.sort && table.state.sorting.length > 1\n ? h(\"span\", { class: \"vt-sort-priority\" }, String(props.sort.priority + 1))\n : null,\n ]);\n },\n});\n\n/** A header row of styled header cells with sort indicators. */\nexport const VtHeader = defineComponent({\n name: \"VtHeader\",\n slots: Object as SlotsType<\n {\n [key: `header.${string}`]: (props: {\n column: TableColumn<unknown>;\n sort: SortInfo | undefined;\n toggleSort: (multi?: boolean) => void;\n }) => VNode[];\n } & {\n before?: () => VNode[];\n after?: () => VNode[];\n header?: (props: { column: TableColumn<unknown> }) => VNodeChild;\n }\n >,\n setup(_props, { slots }) {\n const table = injectDataTable(\"<VtHeader>\");\n const virtual = injectVirtualRenderer();\n const headerCell = (column: TableColumn<unknown>) =>\n h(\n DataTableHeaderCell,\n { key: column.id, column },\n {\n default:\n slots[`header.${column.id}`] ??\n (() =>\n column.sortable\n ? h(\n DataTableSortButton,\n { column, class: \"vt-sort-button\" },\n {\n default: () => [slots.header?.({ column }) ?? column.header],\n indicator: ({ sort }: { sort: SortInfo | undefined }) => [\n h(VtSortIndicator, { sort }),\n ],\n },\n )\n : [slots.header?.({ column }) ?? column.header]),\n },\n );\n return () =>\n h(DataTableHeader, { class: \"vt-head\" }, () =>\n h(DataTableHeaderRow, () => [\n slots.before?.(),\n ...(virtual?.columns\n ? [\n h(DataTableVirtualColumns, null, {\n default: ({ column }: { column: TableColumn<unknown> }) => [headerCell(column)],\n }),\n ]\n : table.columns.map(headerCell)),\n slots.after?.(),\n ]),\n );\n },\n});\n\n/**\n * The styled table surface: a scroll container, a loading bar, and the table. Without a default\n * slot it renders a styled header and body.\n */\nexport const VtTable = defineComponent({\n name: \"VtTable\",\n slots: Object as SlotsType<{\n default?: (props: { table: DataTableBinding<unknown> }) => VNode[];\n expanded?: (props: DetailSlotProps) => VNodeChild;\n }>,\n props: {\n table: { type: Object as PropType<AnyDataTableBinding>, required: true },\n ...surfaceProps,\n },\n setup(props, { slots }) {\n return () =>\n h(\n \"div\",\n surfaceAttrs({\n ...props,\n loading:\n props.loading ||\n props.table.loadState === \"loading\" ||\n props.table.loadState === \"streaming\",\n }),\n [\n h(\"div\", { class: \"vt-progress\", role: \"presentation\" }),\n scroller(props, [\n h(\n DataTableRoot,\n {\n table: props.table,\n class: \"vt-table\",\n virtual: props.virtual,\n rowHeight: props.rowHeight,\n overscan: props.overscan,\n treeColumn: props.treeColumn,\n keepAliveDetail: props.keepAliveDetail,\n },\n {\n default: () =>\n slots.default?.({ table: props.table }) ?? [\n h(VtHeader),\n h(VtBody, { treeColumn: props.treeColumn }, { detail: slots.expanded }),\n ],\n },\n ),\n ]),\n ],\n );\n },\n});\n\n/** The styled body, with the empty state in a full-width row. */\nexport const VtBody = defineComponent({\n name: \"VtBody\",\n slots: Object as SlotsType<{\n default?: (props: { rows: readonly TableRow<unknown>[] }) => VNode[];\n empty?: () => VNode[];\n detail?: (props: DetailSlotProps) => VNodeChild;\n row?: (props: DetailSlotProps) => VNodeChild;\n }>,\n props: {\n ...virtualProps,\n treeColumn: { type: String as PropType<string | undefined>, default: undefined },\n },\n setup(props, { slots }) {\n const table = injectDataTable(\"<VtBody>\");\n return () =>\n h(\n DataTableBody,\n { class: \"vt-body\", ...props },\n {\n ...slots,\n row:\n slots.row ??\n (({ row, rowIndex }: DetailSlotProps) =>\n h(\n DataTableRow,\n { key: row.key, row, rowIndex },\n {\n default: () =>\n table.columns.map((column) =>\n h(\n DataTableCell,\n { key: column.id, row, column, tree: false },\n {\n default: () =>\n table.tree && column.id === resolveTreeColumn(table, props.treeColumn)\n ? h(VtTreeCell, { row }, () => row.getDisplay(column.id))\n : row.getDisplay(column.id),\n $stable: true,\n },\n ),\n ),\n $stable: true,\n },\n )),\n empty:\n slots.empty ??\n (() =>\n h(VtEmpty, {\n text:\n table.loadingMode && table.loadState === \"loading\"\n ? \"Loading rows…\"\n : table.loadingMode && table.loadState === \"error\"\n ? \"Could not load rows.\"\n : \"No matching rows\",\n })),\n },\n );\n },\n});\n\n/** The default empty state. */\nexport const VtEmpty = defineComponent({\n name: \"VtEmpty\",\n slots: Object as SlotsType<{ default?: () => VNode[] }>,\n props: { text: { type: String, default: \"No matching rows\" } },\n setup(props, { slots }) {\n return () =>\n h(\"div\", { class: \"vt-empty\" }, [\n icon(\"empty\", \"vt-empty-icon\"),\n slots.default?.() ?? props.text,\n ]);\n },\n});\n\n/** A search field with an icon. */\nexport const VtSearch = defineComponent({\n name: \"VtSearch\",\n inheritAttrs: false,\n setup(_props, { attrs }) {\n return () => h(\"label\", { class: \"vt-search\" }, [icon(\"search\"), h(DataTableSearch, attrs)]);\n },\n});\n\n/** \"Rows per page\" with a picker. */\nexport const VtPageSize = defineComponent({\n name: \"VtPageSize\",\n props: {\n options: { type: Array as PropType<readonly number[]>, default: () => [5, 10, 20, 50] },\n label: { type: String, default: \"Rows per page\" },\n },\n setup(props) {\n return () =>\n h(\"label\", { class: \"vt-page-size\" }, [\n h(\"span\", props.label),\n h(DataTablePageSize, { options: props.options, label: props.label }),\n ]);\n },\n});\n\n/**\n * A menu of column checkboxes behind a \"Columns\" button. Escape closes it and returns focus to\n * the button, and so does moving focus out of it.\n */\nexport const VtColumnVisibility = defineComponent({\n name: \"VtColumnVisibility\",\n props: { label: { type: String, default: \"Columns\" } },\n setup(props) {\n const close = (menu: HTMLDetailsElement, refocus: boolean): void => {\n if (!menu.open) {\n return;\n }\n menu.open = false;\n if (refocus) {\n menu.querySelector(\"summary\")?.focus();\n }\n };\n return () =>\n h(\n \"details\",\n {\n class: \"vt-menu\",\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close(event.currentTarget as HTMLDetailsElement, true);\n }\n },\n onFocusout: (event: FocusEvent) => {\n const menu = event.currentTarget as HTMLDetailsElement;\n const next = event.relatedTarget as Node | null;\n // Some browsers move no focus when a checkbox label is clicked; only a known\n // destination outside the menu closes it.\n if (next !== null && !menu.contains(next)) {\n close(menu, false);\n }\n },\n },\n [\n h(\"summary\", { class: \"vt-button\" }, [icon(\"columns\"), props.label]),\n h(DataTableColumnVisibility, { as: \"div\", class: \"vt-menu-panel\" }),\n ],\n );\n },\n});\n\nexport const VtPagination = withClass(DataTablePagination, \"vt-pagination\", \"VtPagination\");\nexport const VtStatus = withClass(DataTableStatus, \"vt-status\", \"VtStatus\");\nexport const VtLoadMore = withClass(DataTableLoadMore, \"vt-button\", \"VtLoadMore\");\nexport const VtDetailRow = withClass(DataTableDetailRow, \"vt-detail-row\", \"VtDetailRow\");\nexport const VtExpandToggle = defineComponent({\n name: \"VtExpandToggle\",\n props: expandToggleProps,\n slots: Object as SlotsType<{\n default?: (props: { row: TableRow<unknown>; expanded: boolean }) => VNodeChild;\n }>,\n setup(props, { slots }) {\n return () =>\n h(\n DataTableExpandToggle,\n { ...props, class: \"vt-expand-toggle\" },\n {\n default:\n slots.default ??\n (({ expanded }: { expanded: boolean }) => icon(expanded ? \"collapse\" : \"expand\")),\n },\n );\n },\n});\nexport const VtTreeCell = defineComponent({\n name: \"VtTreeCell\",\n props: treeCellProps,\n slots: Object as SlotsType<{\n default?: () => VNodeChild;\n toggle?: (props: { row: TableRow<unknown> }) => VNodeChild;\n }>,\n setup(props, { slots }) {\n return () =>\n h(DataTableTreeCell, props, {\n ...slots,\n toggle: slots.toggle ?? (() => h(VtExpandToggle, { row: props.row })),\n });\n },\n});\n\n/** A horizontal bar for controls above or below a table. */\nexport const VtToolbar = defineComponent({\n name: \"VtToolbar\",\n slots: Object as SlotsType<{ default?: () => VNode[] }>,\n setup(_props, { slots }) {\n return () => h(\"div\", { class: \"vt-theme vt-toolbar\", role: \"toolbar\" }, slots.default?.());\n },\n});\n\ntype CellSlot = (props: GridCellSlotProps) => VNodeChild;\n\nconst GridBody = defineComponent({\n name: \"VtGridBody\",\n props: {\n rowNumbers: { type: Boolean, default: true },\n treeColumn: { type: String as PropType<string | undefined>, default: undefined },\n detail: {\n type: Function as PropType<((props: DetailSlotProps) => VNodeChild) | undefined>,\n default: undefined,\n },\n /** Content slots per column id, as `cell.<id>` on `<VtGrid>`. */\n cells: {\n type: Object as PropType<Readonly<Record<string, CellSlot | undefined>>>,\n default: () => ({}),\n },\n },\n setup(props) {\n const table = injectDataTable(\"<VtGrid>\");\n return () => {\n const cellSlots = props.cells;\n const details = !!props.detail && !table.tree;\n return h(\n DataGridBody,\n {\n class: \"vt-body\",\n treeCell: false,\n colspan: table.columns.length + (props.rowNumbers || details ? 1 : 0),\n },\n {\n detail: props.detail,\n rowHeader: ({ index }: { index: number }) =>\n props.rowNumbers || details\n ? h(\"th\", { class: \"vt-row-number\", scope: \"row\" }, [\n details ? h(VtExpandToggle, { row: table.rows[index]! }) : null,\n props.rowNumbers ? String(table.pageStart + index) : null,\n ])\n : null,\n cell: (cellProps: GridCellSlotProps) => {\n const slot = cellSlots[cellProps.column.id];\n const content = () => (slot ? slot(cellProps) : cellProps.display);\n return table.tree && cellProps.column.id === resolveTreeColumn(table, props.treeColumn)\n ? h(VtTreeCell, { row: cellProps.row }, { default: content })\n : content();\n },\n },\n );\n };\n },\n});\n\n/**\n * The styled spreadsheet grid, with optional row numbers and A, B, C column letters. A\n * `cell.<column id>` slot draws that column's cells while they are not being edited.\n */\nexport const VtGrid = defineComponent({\n name: \"VtGrid\",\n slots: Object as SlotsType<\n { [key: `cell.${string}`]: GridCellSlotProps } & {\n default?: (props: Record<string, unknown>) => VNode[];\n expanded?: (props: DetailSlotProps) => VNodeChild;\n }\n >,\n props: {\n table: { type: Object as PropType<AnyDataTableBinding>, required: true },\n label: { type: String as PropType<string | undefined>, default: undefined },\n rowNumbers: { type: Boolean, default: true },\n columnLetters: { type: Boolean, default: false },\n ...surfaceProps,\n },\n setup(props, { slots, attrs }) {\n const details = (): boolean => !!slots.expanded && !props.table.tree;\n const cellSlots = (): Record<string, CellSlot> => {\n const found: Record<string, CellSlot> = {};\n for (const [name, slot] of Object.entries(slots)) {\n if (name.startsWith(\"cell.\") && slot) {\n found[name.slice(\"cell.\".length)] = slot as CellSlot;\n }\n }\n return found;\n };\n const header = () =>\n h(VtHeader, null, {\n before: () =>\n props.rowNumbers || details()\n ? h(\"th\", {\n class: \"vt-row-number\",\n \"aria-hidden\": details() ? undefined : \"true\",\n \"aria-label\": details() ? \"Details\" : undefined,\n })\n : null,\n header: ({ column }: { column: TableColumn<unknown> }) =>\n props.columnLetters\n ? [\n h(\n \"span\",\n { class: \"vt-column-letter\" },\n columnLabel(props.table.columns.indexOf(column)),\n ),\n column.header,\n ]\n : column.header,\n });\n return () =>\n h(\n \"div\",\n surfaceAttrs({\n ...props,\n loading:\n props.loading ||\n props.table.loadState === \"loading\" ||\n props.table.loadState === \"streaming\",\n }),\n [\n h(\"div\", { class: \"vt-progress\", role: \"presentation\" }),\n scroller(props, [\n h(\n DataGridRoot,\n {\n table: props.table,\n label: props.label,\n \"aria-describedby\": attrs[\"aria-describedby\"],\n class: \"vt-table vt-grid\",\n virtual: props.virtual,\n virtualColumns: props.virtualColumns,\n rowHeight: props.rowHeight,\n overscan: props.overscan,\n columnWidth: props.columnWidth,\n gutter: props.rowNumbers ? (details() ? 80 : 48) : details() ? 48 : 0,\n treeColumn: props.treeColumn,\n keepAliveDetail: props.keepAliveDetail,\n },\n {\n default: (slotProps: Record<string, unknown>) =>\n slots.default?.(slotProps) ?? [\n header(),\n h(GridBody, {\n rowNumbers: props.rowNumbers,\n cells: cellSlots(),\n treeColumn: props.treeColumn,\n detail: slots.expanded,\n }),\n ],\n },\n ),\n ]),\n ],\n );\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/icons.ts","../src/with-class.ts","../src/components.ts"],"sourcesContent":["import { h, type VNode } from \"vue\";\n\nconst paths = {\n sortNone: \"M7 9l5-5 5 5M7 15l5 5 5-5\",\n sortAsc: \"M7 14l5-5 5 5\",\n sortDesc: \"M7 10l5 5 5-5\",\n search: \"M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16zm10 2-4.35-4.35\",\n columns: \"M4 4h6v16H4zM14 4h6v16h-6z\",\n empty: \"M3 7h18M3 12h18M3 17h10\",\n expand: \"M9 5l7 7-7 7\",\n collapse: \"M5 9l7 7 7-7\",\n} as const;\n\nexport type IconName = keyof typeof paths;\n\n/** A 24-pixel stroke icon that inherits the text color. */\nexport function icon(name: IconName, className = \"vt-icon\"): VNode {\n return h(\n \"svg\",\n {\n class: className,\n viewBox: \"0 0 24 24\",\n width: 16,\n height: 16,\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n },\n [h(\"path\", { d: paths[name] })],\n );\n}\n","import { h, mergeProps, type Component, type FunctionalComponent } from \"vue\";\n\n/**\n * Wrap a component so it always carries a class. Props, attributes, and slots pass through\n * untouched, so the wrapper keeps the wrapped component's full API.\n */\nexport function withClass<TComponent extends Component>(\n component: TComponent,\n className: string,\n name: string,\n): TComponent {\n const wrapper: FunctionalComponent = (_props, { attrs, slots }) =>\n h(component, mergeProps(attrs, { class: className }), slots);\n wrapper.displayName = name;\n wrapper.inheritAttrs = false;\n return wrapper as unknown as TComponent;\n}\n","import { columnLabel, type SortInfo, type TableColumn, type TableRow } from \"@vueye-table/core\";\nimport {\n DataGridBody,\n DataGridRoot,\n DataTableBody,\n DataTableColumnVisibility,\n DataTableHeader,\n DataTableHeaderCell,\n DataTableHeaderRow,\n DataTablePageSize,\n DataTablePagination,\n DataTableRoot,\n DataTableSearch,\n DataTableSortButton,\n DataTableStatus,\n DataTableLoadMore,\n DataTableViewport,\n DataTableVirtualColumns,\n injectVirtualRenderer,\n virtualProps,\n type GridCellSlotProps,\n DataTableExpandToggle,\n DataTableDetailRow,\n DataTableTreeCell,\n DataTableRow,\n DataTableCell,\n hierarchyProps,\n resolveTreeColumn,\n type DetailSlotProps,\n expandToggleProps,\n treeCellProps,\n DataCellEditor,\n cellEditorProps,\n DataTableRowActions,\n type CellEditorSlotProps,\n} from \"@vueye-table/headless\";\nimport { injectDataTable, type AnyDataTableBinding, type DataTableBinding } from \"@vueye-table/vue\";\nimport {\n defineComponent,\n h,\n type PropType,\n type SlotsType,\n type VNode,\n type VNodeChild,\n} from \"vue\";\n\nimport { icon } from \"./icons\";\nimport { withClass } from \"./with-class\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\n/** Visual options shared by the styled table and grid. */\nconst surfaceProps = {\n ...virtualProps,\n ...hierarchyProps,\n density: { type: String as PropType<Density>, default: \"comfortable\" },\n striped: { type: Boolean, default: false },\n bordered: { type: Boolean, default: false },\n hover: { type: Boolean, default: true },\n stickyHeader: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n /** Force a theme; by default the table follows `prefers-color-scheme`. */\n theme: { type: String as PropType<\"light\" | \"dark\" | undefined>, default: undefined },\n} as const;\n\nfunction surfaceAttrs(props: {\n readonly density: Density;\n readonly striped: boolean;\n readonly bordered: boolean;\n readonly hover: boolean;\n readonly stickyHeader: boolean;\n readonly loading: boolean;\n readonly theme: \"light\" | \"dark\" | undefined;\n readonly virtual: boolean | object;\n}) {\n return {\n class: \"vt-surface\",\n \"data-density\": props.density,\n \"data-striped\": props.striped ? \"\" : undefined,\n \"data-bordered\": props.bordered ? \"\" : undefined,\n \"data-hover\": props.hover ? \"\" : undefined,\n \"data-sticky-header\": props.stickyHeader || props.virtual ? \"\" : undefined,\n \"data-virtual\": props.virtual ? \"\" : undefined,\n \"data-loading\": props.loading ? \"\" : undefined,\n \"data-vt-theme\": props.theme,\n \"aria-busy\": props.loading ? \"true\" : undefined,\n };\n}\n\nfunction scroller(\n props: {\n readonly virtual: boolean | object;\n readonly height: string | undefined;\n readonly rowHeight: number;\n },\n children: VNode[],\n): VNode {\n return props.virtual\n ? h(\n DataTableViewport,\n {\n class: \"vt-scroll\",\n height: props.height ?? \"24rem\",\n style: { \"--vt-row-height\": `${props.rowHeight}px` },\n },\n { default: () => children },\n )\n : h(\"div\", { class: \"vt-scroll\" }, children);\n}\n\n/** An arrow showing a column's sort direction and, in a multi-column sort, its priority. */\nexport const VtSortIndicator = defineComponent({\n name: \"VtSortIndicator\",\n props: { sort: { type: Object as PropType<SortInfo | undefined>, default: undefined } },\n setup(props) {\n const table = injectDataTable(\"<VtSortIndicator>\");\n return () =>\n h(\"span\", { class: \"vt-sort-indicator\", \"data-active\": props.sort ? \"\" : undefined }, [\n icon(!props.sort ? \"sortNone\" : props.sort.direction === \"asc\" ? \"sortAsc\" : \"sortDesc\"),\n props.sort && table.state.sorting.length > 1\n ? h(\"span\", { class: \"vt-sort-priority\" }, String(props.sort.priority + 1))\n : null,\n ]);\n },\n});\n\n/** A header row of styled header cells with sort indicators. */\nexport const VtHeader = defineComponent({\n name: \"VtHeader\",\n slots: Object as SlotsType<\n {\n [key: `header.${string}`]: (props: {\n column: TableColumn<unknown>;\n sort: SortInfo | undefined;\n toggleSort: (multi?: boolean) => void;\n }) => VNode[];\n } & {\n before?: () => VNode[];\n after?: () => VNode[];\n header?: (props: { column: TableColumn<unknown> }) => VNodeChild;\n }\n >,\n setup(_props, { slots }) {\n const table = injectDataTable(\"<VtHeader>\");\n const virtual = injectVirtualRenderer();\n const headerCell = (column: TableColumn<unknown>) =>\n h(\n DataTableHeaderCell,\n { key: column.id, column },\n {\n default:\n slots[`header.${column.id}`] ??\n (() =>\n column.sortable\n ? h(\n DataTableSortButton,\n { column, class: \"vt-sort-button\" },\n {\n default: () => [slots.header?.({ column }) ?? column.header],\n indicator: ({ sort }: { sort: SortInfo | undefined }) => [\n h(VtSortIndicator, { sort }),\n ],\n },\n )\n : [slots.header?.({ column }) ?? column.header]),\n },\n );\n return () =>\n h(DataTableHeader, { class: \"vt-head\" }, () =>\n h(DataTableHeaderRow, () => [\n slots.before?.(),\n ...(virtual?.columns\n ? [\n h(DataTableVirtualColumns, null, {\n default: ({ column }: { column: TableColumn<unknown> }) => [headerCell(column)],\n }),\n ]\n : table.columns.map(headerCell)),\n slots.after?.(),\n ]),\n );\n },\n});\n\n/**\n * The styled table surface: a scroll container, a loading bar, and the table. Without a default\n * slot it renders a styled header and body.\n */\nexport const VtTable = defineComponent({\n name: \"VtTable\",\n slots: Object as SlotsType<{\n default?: (props: { table: DataTableBinding<unknown> }) => VNode[];\n expanded?: (props: DetailSlotProps) => VNodeChild;\n }>,\n props: {\n table: { type: Object as PropType<AnyDataTableBinding>, required: true },\n leadingColumns: { type: Number, default: 0 },\n ...surfaceProps,\n },\n setup(props, { slots }) {\n return () =>\n h(\n \"div\",\n surfaceAttrs({\n ...props,\n loading:\n props.loading ||\n props.table.loadState === \"loading\" ||\n props.table.loadState === \"streaming\",\n }),\n [\n h(\"div\", { class: \"vt-progress\", role: \"presentation\" }),\n scroller(props, [\n h(\n DataTableRoot,\n {\n table: props.table,\n class: \"vt-table\",\n leadingColumns: props.leadingColumns,\n virtual: props.virtual,\n rowHeight: props.rowHeight,\n overscan: props.overscan,\n treeColumn: props.treeColumn,\n keepAliveDetail: props.keepAliveDetail,\n },\n {\n default: () =>\n slots.default?.({ table: props.table }) ?? [\n h(VtHeader),\n h(VtBody, { treeColumn: props.treeColumn }, { detail: slots.expanded }),\n ],\n },\n ),\n ]),\n ],\n );\n },\n});\n\n/** The styled body, with the empty state in a full-width row. */\nexport const VtBody = defineComponent({\n name: \"VtBody\",\n slots: Object as SlotsType<{\n default?: (props: { rows: readonly TableRow<unknown>[] }) => VNode[];\n empty?: () => VNode[];\n detail?: (props: DetailSlotProps) => VNodeChild;\n row?: (props: DetailSlotProps) => VNodeChild;\n }>,\n props: {\n ...virtualProps,\n treeColumn: { type: String as PropType<string | undefined>, default: undefined },\n },\n setup(props, { slots }) {\n const table = injectDataTable(\"<VtBody>\");\n return () =>\n h(\n DataTableBody,\n { class: \"vt-body\", ...props },\n {\n ...slots,\n row:\n slots.row ??\n (({ row, rowIndex }: DetailSlotProps) =>\n h(\n DataTableRow,\n { key: row.key, row, rowIndex },\n {\n default: () =>\n table.columns.map((column) =>\n h(\n DataTableCell,\n { key: column.id, row, column, tree: false },\n {\n default: () =>\n table.tree && column.id === resolveTreeColumn(table, props.treeColumn)\n ? h(VtTreeCell, { row }, () => row.getDisplay(column.id))\n : row.getDisplay(column.id),\n $stable: true,\n },\n ),\n ),\n $stable: true,\n },\n )),\n empty:\n slots.empty ??\n (() =>\n h(VtEmpty, {\n text:\n table.loadingMode && table.loadState === \"loading\"\n ? \"Loading rows…\"\n : table.loadingMode && table.loadState === \"error\"\n ? \"Could not load rows.\"\n : \"No matching rows\",\n })),\n },\n );\n },\n});\n\n/** The default empty state. */\nexport const VtEmpty = defineComponent({\n name: \"VtEmpty\",\n slots: Object as SlotsType<{ default?: () => VNode[] }>,\n props: { text: { type: String, default: \"No matching rows\" } },\n setup(props, { slots }) {\n return () =>\n h(\"div\", { class: \"vt-empty\" }, [\n icon(\"empty\", \"vt-empty-icon\"),\n slots.default?.() ?? props.text,\n ]);\n },\n});\n\n/** A search field with an icon. */\nexport const VtSearch = defineComponent({\n name: \"VtSearch\",\n inheritAttrs: false,\n setup(_props, { attrs }) {\n return () => h(\"label\", { class: \"vt-search\" }, [icon(\"search\"), h(DataTableSearch, attrs)]);\n },\n});\n\n/** \"Rows per page\" with a picker. */\nexport const VtPageSize = defineComponent({\n name: \"VtPageSize\",\n props: {\n options: { type: Array as PropType<readonly number[]>, default: () => [5, 10, 20, 50] },\n label: { type: String, default: \"Rows per page\" },\n },\n setup(props) {\n return () =>\n h(\"label\", { class: \"vt-page-size\" }, [\n h(\"span\", props.label),\n h(DataTablePageSize, { options: props.options, label: props.label }),\n ]);\n },\n});\n\n/**\n * A menu of column checkboxes behind a \"Columns\" button. Escape closes it and returns focus to\n * the button, and so does moving focus out of it.\n */\nexport const VtColumnVisibility = defineComponent({\n name: \"VtColumnVisibility\",\n props: { label: { type: String, default: \"Columns\" } },\n setup(props) {\n const close = (menu: HTMLDetailsElement, refocus: boolean): void => {\n if (!menu.open) {\n return;\n }\n menu.open = false;\n if (refocus) {\n menu.querySelector(\"summary\")?.focus();\n }\n };\n return () =>\n h(\n \"details\",\n {\n class: \"vt-menu\",\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close(event.currentTarget as HTMLDetailsElement, true);\n }\n },\n onFocusout: (event: FocusEvent) => {\n const menu = event.currentTarget as HTMLDetailsElement;\n const next = event.relatedTarget as Node | null;\n // Some browsers move no focus when a checkbox label is clicked; only a known\n // destination outside the menu closes it.\n if (next !== null && !menu.contains(next)) {\n close(menu, false);\n }\n },\n },\n [\n h(\"summary\", { class: \"vt-button\" }, [icon(\"columns\"), props.label]),\n h(DataTableColumnVisibility, { as: \"div\", class: \"vt-menu-panel\" }),\n ],\n );\n },\n});\n\nexport const VtPagination = withClass(DataTablePagination, \"vt-pagination\", \"VtPagination\");\nexport const VtStatus = withClass(DataTableStatus, \"vt-status\", \"VtStatus\");\nexport const VtLoadMore = withClass(DataTableLoadMore, \"vt-button\", \"VtLoadMore\");\nexport const VtDetailRow = withClass(DataTableDetailRow, \"vt-detail-row\", \"VtDetailRow\");\nexport const VtExpandToggle = defineComponent({\n name: \"VtExpandToggle\",\n props: expandToggleProps,\n slots: Object as SlotsType<{\n default?: (props: { row: TableRow<unknown>; expanded: boolean }) => VNodeChild;\n }>,\n setup(props, { slots }) {\n return () =>\n h(\n DataTableExpandToggle,\n { ...props, class: \"vt-expand-toggle\" },\n {\n default:\n slots.default ??\n (({ expanded }: { expanded: boolean }) => icon(expanded ? \"collapse\" : \"expand\")),\n },\n );\n },\n});\nexport const VtTreeCell = defineComponent({\n name: \"VtTreeCell\",\n props: treeCellProps,\n slots: Object as SlotsType<{\n default?: () => VNodeChild;\n toggle?: (props: { row: TableRow<unknown> }) => VNodeChild;\n }>,\n setup(props, { slots }) {\n return () =>\n h(DataTableTreeCell, props, {\n ...slots,\n toggle: slots.toggle ?? (() => h(VtExpandToggle, { row: props.row })),\n });\n },\n});\n\n/** A horizontal bar for controls above or below a table. */\nexport const VtToolbar = defineComponent({\n name: \"VtToolbar\",\n slots: Object as SlotsType<{ default?: () => VNode[] }>,\n setup(_props, { slots }) {\n return () => h(\"div\", { class: \"vt-theme vt-toolbar\", role: \"toolbar\" }, slots.default?.());\n },\n});\n\ntype CellSlot = (props: GridCellSlotProps) => VNodeChild;\ntype EditorSlot = (props: CellEditorSlotProps) => VNodeChild;\n\nexport const VtCellEditor = defineComponent({\n name: \"VtCellEditor\",\n props: cellEditorProps,\n setup(props) {\n return () => h(DataCellEditor, { ...props, class: \"vt-cell-editor\" });\n },\n});\nexport const VtRowActions = withClass(DataTableRowActions, \"vt-row-actions\", \"VtRowActions\");\n\nconst GridBody = defineComponent({\n name: \"VtGridBody\",\n props: {\n rowNumbers: { type: Boolean, default: true },\n treeColumn: { type: String as PropType<string | undefined>, default: undefined },\n detail: {\n type: Function as PropType<((props: DetailSlotProps) => VNodeChild) | undefined>,\n default: undefined,\n },\n /** Content slots per column id, as `cell.<id>` on `<VtGrid>`. */\n cells: {\n type: Object as PropType<Readonly<Record<string, CellSlot | undefined>>>,\n default: () => ({}),\n },\n editors: {\n type: Object as PropType<Readonly<Record<string, EditorSlot | undefined>>>,\n default: () => ({}),\n },\n rowActions: { type: Boolean, default: false },\n removable: { type: Boolean, default: false },\n },\n setup(props) {\n const table = injectDataTable(\"<VtGrid>\");\n return () => {\n const cellSlots = props.cells;\n const details = !!props.detail && !table.tree;\n return h(\n DataGridBody,\n {\n class: \"vt-body\",\n treeCell: false,\n colspan: table.columns.length + (props.rowNumbers || details || props.rowActions ? 1 : 0),\n },\n {\n detail: props.detail,\n rowHeader: ({ index }: { index: number }) =>\n props.rowNumbers || details || props.rowActions\n ? h(\"th\", { class: \"vt-row-number\", scope: \"row\", \"aria-colindex\": 1 }, [\n details ? h(VtExpandToggle, { row: table.rows[index]! }) : null,\n props.rowNumbers ? String(table.pageStart + index) : null,\n props.rowActions\n ? h(VtRowActions, {\n row: table.rows[index]!,\n editable: false,\n removable: props.removable,\n })\n : null,\n ])\n : null,\n cell: (cellProps: GridCellSlotProps) => {\n const slot = cellSlots[cellProps.column.id];\n const content = () => (slot ? slot(cellProps) : cellProps.display);\n return table.tree && cellProps.column.id === resolveTreeColumn(table, props.treeColumn)\n ? h(VtTreeCell, { row: cellProps.row }, { default: content })\n : content();\n },\n editor: (editor: CellEditorSlotProps) =>\n props.editors[editor.column.id]?.(editor) ??\n h(VtCellEditor, { editor, spec: editor.spec, finish: editor.finish }),\n },\n );\n };\n },\n});\n\n/**\n * The styled spreadsheet grid, with optional row numbers and A, B, C column letters. A\n * `cell.<column id>` slot draws that column's cells while they are not being edited.\n */\nexport const VtGrid = defineComponent({\n name: \"VtGrid\",\n slots: Object as SlotsType<\n {\n [key: `cell.${string}`]: GridCellSlotProps;\n [key: `editor.${string}`]: CellEditorSlotProps;\n } & {\n default?: (props: Record<string, unknown>) => VNode[];\n expanded?: (props: DetailSlotProps) => VNodeChild;\n }\n >,\n props: {\n table: { type: Object as PropType<AnyDataTableBinding>, required: true },\n label: { type: String as PropType<string | undefined>, default: undefined },\n rowNumbers: { type: Boolean, default: true },\n columnLetters: { type: Boolean, default: false },\n ...surfaceProps,\n rowActions: { type: Boolean, default: false },\n removable: { type: Boolean, default: false },\n },\n emits: { save: (_result: unknown) => true, cancel: (_key: unknown) => true },\n setup(props, { slots, attrs, emit }) {\n const details = (): boolean => !!slots.expanded && !props.table.tree;\n const cellSlots = (): Record<string, CellSlot> => {\n const found: Record<string, CellSlot> = {};\n for (const [name, slot] of Object.entries(slots)) {\n if (name.startsWith(\"cell.\") && slot) {\n found[name.slice(\"cell.\".length)] = slot as CellSlot;\n }\n }\n return found;\n };\n const editorSlots = (): Record<string, EditorSlot> => {\n const found: Record<string, EditorSlot> = {};\n for (const name of Object.keys(slots)) {\n if (name.startsWith(\"editor.\")) {\n const slot = slots[name as `editor.${string}`];\n if (slot) found[name.slice(7)] = slot;\n }\n }\n return found;\n };\n const header = () =>\n h(VtHeader, null, {\n before: () =>\n props.rowNumbers || details() || props.rowActions\n ? h(\"th\", {\n class: \"vt-row-number\",\n \"aria-colindex\": 1,\n \"aria-label\": props.rowActions\n ? \"Row actions\"\n : details()\n ? \"Details\"\n : \"Row number\",\n })\n : null,\n header: ({ column }: { column: TableColumn<unknown> }) =>\n props.columnLetters\n ? [\n h(\n \"span\",\n { class: \"vt-column-letter\" },\n columnLabel(props.table.columns.indexOf(column)),\n ),\n column.header,\n ]\n : column.header,\n });\n return () =>\n h(\n \"div\",\n surfaceAttrs({\n ...props,\n loading:\n props.loading ||\n props.table.loadState === \"loading\" ||\n props.table.loadState === \"streaming\",\n }),\n [\n h(\"div\", { class: \"vt-progress\", role: \"presentation\" }),\n scroller(props, [\n h(\n DataGridRoot,\n {\n table: props.table,\n label: props.label,\n leadingColumns: props.rowNumbers || details() || props.rowActions ? 1 : 0,\n \"aria-describedby\": attrs[\"aria-describedby\"],\n class: \"vt-table vt-grid\",\n virtual: props.virtual,\n virtualColumns: props.virtualColumns,\n rowHeight: props.rowHeight,\n overscan: props.overscan,\n columnWidth: props.columnWidth,\n gutter: props.rowActions\n ? 120\n : props.rowNumbers\n ? details()\n ? 80\n : 48\n : details()\n ? 48\n : 0,\n onSave: (result: unknown) => emit(\"save\", result),\n onCancel: (key: unknown) => emit(\"cancel\", key),\n treeColumn: props.treeColumn,\n keepAliveDetail: props.keepAliveDetail,\n },\n {\n default: (slotProps: Record<string, unknown>) =>\n slots.default?.(slotProps) ?? [\n header(),\n h(GridBody, {\n rowNumbers: props.rowNumbers,\n cells: cellSlots(),\n editors: editorSlots(),\n rowActions: props.rowActions,\n removable: props.removable,\n treeColumn: props.treeColumn,\n detail: slots.expanded,\n }),\n ],\n },\n ),\n ]),\n ],\n );\n },\n});\n"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -536,6 +536,119 @@
|
|
|
536
536
|
outline: none;
|
|
537
537
|
}
|
|
538
538
|
|
|
539
|
+
.vt-table [data-edit-cell][data-editable] {
|
|
540
|
+
cursor: text;
|
|
541
|
+
}
|
|
542
|
+
.vt-table [data-edit-cell]:focus-visible {
|
|
543
|
+
outline: 2px solid var(--vt-focus);
|
|
544
|
+
outline-offset: -2px;
|
|
545
|
+
}
|
|
546
|
+
.vt-table [data-dirty] {
|
|
547
|
+
background-color: color-mix(in srgb, var(--vt-accent) 6%, var(--vt-bg));
|
|
548
|
+
}
|
|
549
|
+
.vt-table [data-editing] [data-editor],
|
|
550
|
+
.vt-cell-editor,
|
|
551
|
+
.vt-table [data-select-editor] input,
|
|
552
|
+
.vt-table [data-select-editor] select {
|
|
553
|
+
box-sizing: border-box;
|
|
554
|
+
min-width: 6rem;
|
|
555
|
+
max-width: 100%;
|
|
556
|
+
width: 100%;
|
|
557
|
+
padding: 0.5rem;
|
|
558
|
+
color: var(--vt-fg);
|
|
559
|
+
font: inherit;
|
|
560
|
+
background: var(--vt-bg);
|
|
561
|
+
border: 1px solid var(--vt-border);
|
|
562
|
+
border-radius: 4px;
|
|
563
|
+
accent-color: var(--vt-accent);
|
|
564
|
+
caret-color: var(--vt-accent);
|
|
565
|
+
}
|
|
566
|
+
.vt-table [data-editor][type="checkbox"] {
|
|
567
|
+
width: 1.1rem;
|
|
568
|
+
min-width: 1.1rem;
|
|
569
|
+
height: 1.1rem;
|
|
570
|
+
margin: 0.5rem;
|
|
571
|
+
}
|
|
572
|
+
.vt-table [data-editor]:focus-visible,
|
|
573
|
+
.vt-table [data-select-editor] input:focus-visible {
|
|
574
|
+
outline: 2px solid var(--vt-focus);
|
|
575
|
+
outline-offset: -2px;
|
|
576
|
+
}
|
|
577
|
+
.vt-table [aria-invalid="true"] [data-editor],
|
|
578
|
+
.vt-table [data-editor][aria-invalid="true"] {
|
|
579
|
+
border-color: var(--vt-danger);
|
|
580
|
+
}
|
|
581
|
+
.vt-table [data-edit-issues] {
|
|
582
|
+
display: block;
|
|
583
|
+
padding: 0.4rem 0.5rem;
|
|
584
|
+
color: var(--vt-danger);
|
|
585
|
+
font-size: 0.85em;
|
|
586
|
+
white-space: normal;
|
|
587
|
+
}
|
|
588
|
+
.vt-table [aria-busy="true"] [data-edit-issues] {
|
|
589
|
+
color: var(--vt-muted);
|
|
590
|
+
}
|
|
591
|
+
.vt-table [data-select-editor] {
|
|
592
|
+
min-width: 10rem;
|
|
593
|
+
padding: 0.4rem;
|
|
594
|
+
}
|
|
595
|
+
.vt-table [data-editor-hint] {
|
|
596
|
+
display: block;
|
|
597
|
+
padding-top: 0.35rem;
|
|
598
|
+
font-size: 0.8em;
|
|
599
|
+
color: var(--vt-muted);
|
|
600
|
+
}
|
|
601
|
+
.vt-row-controls {
|
|
602
|
+
width: 1%;
|
|
603
|
+
}
|
|
604
|
+
.vt-row-actions {
|
|
605
|
+
display: flex;
|
|
606
|
+
align-items: center;
|
|
607
|
+
flex-wrap: wrap;
|
|
608
|
+
gap: 0.35rem;
|
|
609
|
+
min-width: 5rem;
|
|
610
|
+
max-width: 100%;
|
|
611
|
+
}
|
|
612
|
+
.vt-row-actions details {
|
|
613
|
+
min-width: 0;
|
|
614
|
+
max-width: 100%;
|
|
615
|
+
}
|
|
616
|
+
.vt-row-actions button,
|
|
617
|
+
.vt-row-actions summary {
|
|
618
|
+
padding: 0.3rem 0.5rem;
|
|
619
|
+
border: 1px solid var(--vt-border);
|
|
620
|
+
border-radius: 4px;
|
|
621
|
+
color: var(--vt-fg);
|
|
622
|
+
background: var(--vt-bg);
|
|
623
|
+
font: inherit;
|
|
624
|
+
font-size: 0.85em;
|
|
625
|
+
cursor: pointer;
|
|
626
|
+
white-space: nowrap;
|
|
627
|
+
}
|
|
628
|
+
.vt-row-actions button:disabled {
|
|
629
|
+
color: var(--vt-muted);
|
|
630
|
+
cursor: default;
|
|
631
|
+
}
|
|
632
|
+
.vt-row-actions button:enabled:hover,
|
|
633
|
+
.vt-row-actions summary:hover {
|
|
634
|
+
background: var(--vt-header-bg);
|
|
635
|
+
}
|
|
636
|
+
.vt-row-actions button:focus-visible,
|
|
637
|
+
.vt-row-actions summary:focus-visible {
|
|
638
|
+
outline: 2px solid var(--vt-focus);
|
|
639
|
+
outline-offset: 2px;
|
|
640
|
+
}
|
|
641
|
+
.vt-row-actions [data-row-menu] {
|
|
642
|
+
display: flex;
|
|
643
|
+
flex-wrap: wrap;
|
|
644
|
+
gap: 0.35rem;
|
|
645
|
+
margin-top: 0.35rem;
|
|
646
|
+
}
|
|
647
|
+
.vt-row-actions [data-row-menu] button {
|
|
648
|
+
max-width: 100%;
|
|
649
|
+
white-space: normal;
|
|
650
|
+
}
|
|
651
|
+
|
|
539
652
|
.vt-grid .vt-row-number {
|
|
540
653
|
width: 1%;
|
|
541
654
|
padding-inline: 0.5rem;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vueye-table/styled",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-beta.1",
|
|
4
4
|
"description": "Styled, themeable Vue components for vueye-table, built on the headless layer.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-table",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"provenance": true
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@vueye-table/core": "3.0.0-
|
|
45
|
-
"@vueye-table/headless": "3.0.0-
|
|
46
|
-
"@vueye-table/vue": "3.0.0-
|
|
44
|
+
"@vueye-table/core": "3.0.0-beta.1",
|
|
45
|
+
"@vueye-table/headless": "3.0.0-beta.1",
|
|
46
|
+
"@vueye-table/vue": "3.0.0-beta.1"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"vue": "3.5.43",
|