vueye-table 2.0.0-alpha.10 → 2.0.0-alpha.13
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/components/core/VueyeTable/VueyeTable.vue.d.ts +113 -16
- package/dist/components/core/VueyeTable/api.d.ts +24 -4
- package/dist/components/core/VueyeTable/components/VueyeBody/VueyeBody.vue.d.ts +44 -40
- package/dist/components/core/VueyeTable/components/VueyeBody/api.d.ts +6 -0
- package/dist/components/core/VueyeTable/components/VueyeDropdown/VueyeDropdown.vue.d.ts +36 -0
- package/dist/components/core/VueyeTable/components/VueyeDropdown/api.d.ts +3 -4
- package/dist/components/core/VueyeTable/components/VueyeHead/VueyeHead.vue.d.ts +39 -14
- package/dist/components/core/VueyeTable/components/VueyeHead/api.d.ts +16 -0
- package/dist/components/core/VueyeTable/components/VueyePagination/VueyePagination.vue.d.ts +20 -45
- package/dist/components/core/VueyeTable/components/VueyePagination/api.d.ts +1 -1
- package/dist/components/core/VueyeTable/components/VueyePagination/index.d.ts +1 -0
- package/dist/components/core/VueyeTable/components/icons/ArrowUpDownIcon.vue.d.ts +8 -0
- package/dist/components/core/VueyeTable/components/icons/ChevronDownIcon.vue.d.ts +2 -0
- package/dist/components/core/VueyeTable/components/icons/ChevronLeftIcon.vue.d.ts +2 -0
- package/dist/components/core/VueyeTable/components/icons/ChevronRightIcon.vue.d.ts +2 -0
- package/dist/components/core/VueyeTable/components/icons/DoubleChevronLeftIcon.vue.d.ts +2 -0
- package/dist/components/core/VueyeTable/components/icons/DoubleChevronRightIcon.vue.d.ts +2 -0
- package/dist/components/core/VueyeTable/components/utils/VueyeCheckbox.vue.d.ts +23 -0
- package/dist/components/core/VueyeTable/composables/index.d.ts +1 -0
- package/dist/components/core/VueyeTable/composables/useBodyRows.d.ts +17 -0
- package/dist/components/core/VueyeTable/composables/usePagination.d.ts +5 -4
- package/dist/components/core/VueyeTable/index.d.ts +1 -0
- package/dist/components/core/VueyeTable/types/Column.d.ts +15 -40
- package/dist/components/core/VueyeTable/types/Row.d.ts +25 -0
- package/dist/components/core/VueyeTable/types/Utils.d.ts +13 -4
- package/dist/components/core/VueyeTable/utils/body.d.ts +6 -4
- package/dist/components/core/VueyeTable/utils/header.d.ts +1 -1
- package/dist/default.css +1 -0
- package/dist/vueye-table.js +782 -320
- package/dist/vueye-table.umd.cjs +1 -1
- package/package.json +9 -5
- package/dist/style.css +0 -1
|
@@ -1,55 +1,30 @@
|
|
|
1
1
|
import { DeepKeys } from './Utils';
|
|
2
|
-
export type
|
|
3
|
-
export type FiltrableColumnHeaderBase = {
|
|
4
|
-
filterable?: boolean;
|
|
5
|
-
filter?: (value: any, filter: any) => boolean;
|
|
6
|
-
};
|
|
7
|
-
export type FiltrableColumnHeader = FiltrableColumnHeaderBase & {
|
|
8
|
-
filterOptions?: any[];
|
|
9
|
-
filterMultiple?: boolean;
|
|
10
|
-
filterMethod?: (value: any, filter: any) => boolean;
|
|
11
|
-
filterRemote?: boolean;
|
|
12
|
-
filterRemoteMethod?: (prop: string, filters: any[]) => Promise<any>;
|
|
13
|
-
};
|
|
14
|
-
export type SortableColumnHeaderBase = {
|
|
15
|
-
sortable?: boolean;
|
|
16
|
-
sortMethod?: (a: any, b: any) => number;
|
|
17
|
-
sortBy?: (row: any) => any;
|
|
18
|
-
};
|
|
19
|
-
export type SortableColumnHeader = SortableColumnHeaderBase & {
|
|
20
|
-
sortOrders?: SortOrder[];
|
|
21
|
-
sortRemote?: boolean;
|
|
22
|
-
sortRemoteMethod?: (prop: string, order: SortOrder) => Promise<any>;
|
|
23
|
-
defaultSortOrder?: SortOrder;
|
|
24
|
-
};
|
|
25
|
-
export type ColumnHeaderBase<TData extends Record<string, unknown>> = FiltrableColumnHeaderBase & SortableColumnHeaderBase & {
|
|
2
|
+
export type ColumnHeader<TData extends Record<string, unknown> = Record<string, unknown>> = {
|
|
26
3
|
key: string;
|
|
4
|
+
fullKey?: string;
|
|
27
5
|
label: string;
|
|
28
|
-
children?:
|
|
6
|
+
children?: ColumnHeader<TData>[];
|
|
29
7
|
align?: 'left' | 'center' | 'right';
|
|
30
8
|
fixed?: 'left' | 'right';
|
|
31
|
-
formatter?: (value: any, row: any, index: number) => string;
|
|
32
9
|
className?: string;
|
|
33
10
|
labelClassName?: string;
|
|
34
|
-
selectable?: (row: any, index: number) => boolean;
|
|
35
|
-
resizable?: boolean;
|
|
36
|
-
showOverflowTooltip?: boolean;
|
|
37
|
-
};
|
|
38
|
-
export type ColumnHeader = ColumnHeaderBase<Record<string, never>> & {
|
|
39
11
|
rowSpan?: number;
|
|
40
12
|
colSpan?: number;
|
|
41
|
-
width?: string;
|
|
42
|
-
minWidth?: string;
|
|
43
13
|
scope?: string;
|
|
14
|
+
sortable?: true;
|
|
44
15
|
};
|
|
45
|
-
export
|
|
46
|
-
|
|
47
|
-
|
|
16
|
+
export declare function defineTableColumnHeaders<TData extends Record<string, unknown>>(columnHeaders: ColumnHeader<TData>[]): ColumnHeader<TData>[];
|
|
17
|
+
type SlotGenerator<T, Prefix extends string> = {
|
|
18
|
+
[K in DeepKeys<T> as K extends string ? `${Prefix}.${K}` : never]: (props: {
|
|
19
|
+
headerItem: ColumnHeader;
|
|
48
20
|
}) => any;
|
|
49
21
|
};
|
|
50
|
-
export type
|
|
51
|
-
|
|
52
|
-
|
|
22
|
+
export type SlotHeaderCell<T> = SlotGenerator<T, 'headerCell'>;
|
|
23
|
+
export type SlotHeaderCellContent<T> = SlotGenerator<T, 'headerCellContent'>;
|
|
24
|
+
export type SlotHeader<T> = SlotHeaderCell<T> & SlotHeaderCellContent<T> & {
|
|
25
|
+
headers: (props: {
|
|
26
|
+
headers: ColumnHeader[][];
|
|
53
27
|
}) => any;
|
|
28
|
+
checkbox: () => any;
|
|
54
29
|
};
|
|
55
|
-
export
|
|
30
|
+
export {};
|
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
import { FlattenKeys } from './Utils';
|
|
1
2
|
export type Row = {
|
|
2
3
|
[key: string]: any;
|
|
3
4
|
};
|
|
5
|
+
export type SlotRowItem<T> = {
|
|
6
|
+
[K in `itemCell.${FlattenKeys<T>}`]: (props: {
|
|
7
|
+
itemCell: T;
|
|
8
|
+
}) => any;
|
|
9
|
+
};
|
|
10
|
+
export type SlotRowItemContent<T> = {
|
|
11
|
+
[K in `itemCellContent.${FlattenKeys<T>}`]: (props: {
|
|
12
|
+
itemCellContent: T;
|
|
13
|
+
}) => any;
|
|
14
|
+
};
|
|
15
|
+
export type SlotRow<T extends Record<string, any> = Record<string, string>> = SlotRowItem<T> & SlotRowItemContent<T> & {
|
|
16
|
+
body: (props: {
|
|
17
|
+
rows: T[];
|
|
18
|
+
}) => any;
|
|
19
|
+
rows: (props: {
|
|
20
|
+
rows: T[];
|
|
21
|
+
}) => any;
|
|
22
|
+
row: (props: {
|
|
23
|
+
row: T;
|
|
24
|
+
}) => any;
|
|
25
|
+
checkbox: (props: {
|
|
26
|
+
row: T;
|
|
27
|
+
}) => any;
|
|
28
|
+
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export type DeepKeys<T> = T extends object ? {
|
|
2
2
|
[K in keyof T]: K | DeepKeys<T[K]>;
|
|
3
3
|
}[keyof T] : never;
|
|
4
|
-
export type
|
|
5
|
-
[
|
|
4
|
+
export type FlattenKeys<T, Prefix extends string = ''> = T extends object ? {
|
|
5
|
+
[K in keyof T]: T[K] extends object ? FlattenKeys<T[K], `${Prefix}${K & string}.`> : `${Prefix}${K & string}`;
|
|
6
|
+
}[keyof T] : never;
|
|
7
|
+
export type FlattenObject<T> = {
|
|
8
|
+
[K in FlattenKeys<T>]: K extends `${infer Prefix}.${infer Suffix}` ? T[Prefix & keyof T] extends object ? FlattenObject<T[Prefix & keyof T]>[Suffix & keyof FlattenObject<T[Prefix & keyof T]>] : never : T[K & keyof T];
|
|
6
9
|
};
|
|
7
10
|
export type DeepKeyValues<T extends readonly object[]> = {
|
|
8
11
|
[K in keyof T]: T[K] extends {
|
|
@@ -11,9 +14,15 @@ export type DeepKeyValues<T extends readonly object[]> = {
|
|
|
11
14
|
children: infer C;
|
|
12
15
|
} ? C extends readonly object[] ? U | DeepKeyValues<C> : never : U : never : never;
|
|
13
16
|
}[number];
|
|
14
|
-
type
|
|
15
|
-
type
|
|
17
|
+
type NotUndefined<T> = T extends undefined ? never : T;
|
|
18
|
+
export type NativeType = null | number | string | boolean | symbol;
|
|
19
|
+
type InferDefault<P, T> = ((props: P) => T & {}) | (T extends NativeType ? T : never) | (T extends (...args: any[]) => any ? T : never);
|
|
16
20
|
export type InferDefaults<T> = {
|
|
17
21
|
[K in keyof T]?: InferDefault<T, T[K]>;
|
|
18
22
|
};
|
|
23
|
+
export type PropsWithDefaults<T, Defaults extends InferDefaults<T>, BKeys extends keyof T> = Omit<T, keyof Defaults> & {
|
|
24
|
+
[K in keyof Defaults]-?: K extends keyof T ? (Defaults[K] extends undefined ? T[K] : NotUndefined<T[K]>) : never;
|
|
25
|
+
} & {
|
|
26
|
+
readonly [K in BKeys]-?: boolean;
|
|
27
|
+
};
|
|
19
28
|
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getBodyRows(rows:
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { FlattenObject, NativeType } from '../types';
|
|
2
|
+
export declare function getBodyRows<TData>(rows: TData[], headerKeys: string[]): FlattenObject<TData>[];
|
|
3
|
+
export declare function paginateRows<TData>(rows: TData[], start?: number, end?: number): TData[];
|
|
4
|
+
export declare function nestedObjectTransformer(obj: object): Record<string, any>;
|
|
5
|
+
export declare function deepValues(obj: any): any[];
|
|
6
|
+
export declare function isPrimitive(value: NativeType): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ColumnHeader } from '../types';
|
|
2
2
|
export declare function depthCount(headers: ColumnHeader[]): number;
|
|
3
3
|
export declare function leafCount(headers: ColumnHeader[]): number;
|
|
4
|
-
export declare function flatHeadersToRows(headers: ColumnHeader[], depth: number, rows?: ColumnHeader[][], currentRow?: number, level?: number): ColumnHeader[][];
|
|
4
|
+
export declare function flatHeadersToRows(headers: ColumnHeader[], depth: number, rows?: ColumnHeader[][], currentRow?: number, level?: number, parentKey?: string): ColumnHeader[][];
|
|
5
5
|
export declare function getHeaderKeys<T extends ColumnHeader>(headers: T[], keysPath?: string, keys?: string[]): string[];
|
|
6
6
|
export declare function defineColumnHeaders(headers: any[]): ColumnHeader[];
|
|
7
7
|
export declare function generateColumns<T>(dataItem: T): ColumnHeader[];
|
package/dist/default.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.table__checkbox{position:relative}.table__checkbox input[type=checkbox]{position:absolute;width:1.5rem;height:1.5rem;inset-inline-start:0;top:0;cursor:pointer;z-index:10;opacity:0}.table__checkbox svg{position:absolute;z-index:0;top:0;start:0;width:1.5rem;height:1.5rem;transition:transform .2s ease-in-out}.table__checkbox .checkmark,.table__checkbox .indeterminate{transform:scale(0);transform-origin:50% 50%;animation:zoom-in-out .2s ease-in-out}.table__checkbox input[type=checkbox]:indeterminate~svg .indeterminate{transform:scale(1)}.table__checkbox input[type=checkbox]:checked~svg .checkmark{transform:scale(1)}@keyframes zoom-in-out{50%{transform:scale(.9)}}.table__sort-button{background:none;border:none;cursor:pointer;display:flex;align-items:center;position:relative}.table__sort-icon{margin-inline-start:5px;transition:all .2s ease;transform:scale(1.2);visibility:hidden}.table__sort-icon--show,.table__sort-button:hover .table__sort-icon{visibility:visible}:root{--table-bg-color: #ffffff;--table-text-color: #52657a;--table-head-bg-color: #d9e2ec;--table-head-text-color: #52657a;--table-border-color: #bcccdc;--table-row-hover-bg-color: #bcccdc;--table-row-hover-text-color: #52657a;--table-row-selected-bg-color: #9fb3ca;--table-row-selected-text-color: #fff;--button-bg-color: #d9e2ec;--button-text-color: #52657a;--button-bg-color-hover: #bcccdc;--button-bg-color-active: #9fb3ca;--button-text-color-active: #fff;--button-bg-color-disabled: #bcccdc;--dropdown-bg-color: #d9e2ec;--dropdown-border-color: #bcccdc;--dropdown-item-bg-color-hover: #bcccdc;--table-cell-padding: .5rem 1rem;--table-margin: 0;--table-font-family: "Arial", sans-serif;--table-font-size: 16px;--table-font-weight: normal;--table-line-height: 1.5}.dark{--table-bg-color: #031e30;--table-text-color: #ffffff;--table-head-bg-color: #082c49;--table-head-text-color: #ffffff;--table-border-color: #034f82;--table-row-hover-bg-color: #022e4b;--table-row-hover-text-color: #ffffff;--table-row-selected-bg-color: #01456f;--table-row-selected-text-color: #ffffff;--button-bg-color: #042440;--button-text-color: #ffffff;--button-bg-color-hover: #022e4b;--button-bg-color-active: #01456f;--button-text-color-active: #ffffff;--button-bg-color-disabled: #022e4b;--dropdown-bg-color: #042440;--dropdown-border-color: #022e4b;--dropdown-item-bg-color-hover: #022e4b}.table{width:100%;border-collapse:collapse;border-spacing:0;font-size:.9rem;background-color:var(--table-bg-color)}.table__body{background-color:var(--table-bg-color)}.table__wrapper{display:flex;flex-direction:column;gap:1rem;font-family:Arial,sans-serif}.table__caption{caption-side:top;font-weight:700;text-align:left}.table__summary{caption-side:bottom;font-weight:700;text-align:left}.table__btn{border:none;background-color:var(--button-bg-color);color:var(--button-text-color);padding:.5rem 1rem;font-size:.9rem;line-height:1.5;cursor:pointer;transition:background-color .3s ease;border-radius:.25rem;height:100%}.table__pagination{align-self:center}.table__head{background-color:var(--table-head-bg-color);color:var(--table-head-text-color)}.table__row{transition:background-color .3s ease}.table__cell{padding:var(--table-cell-padding);text-align:left;border:1px solid var(--table-border-color);color:var(--table-cell-color)}.table__cell--head{text-align:center}.table__cell--loading{text-align:center;width:100%;padding-inline:50%}.table__label{display:inline-block;vertical-align:middle}.table__label--head{font-weight:500}.table__checkbox{width:1.5rem;height:1.5rem}.table__pagination-wrapper{display:flex;justify-content:space-between;align-items:center;padding:1em}.table__pagination-btn-list{display:flex;list-style:none;padding:0;gap:.125rem}.table__pagination-btn{border:none;background-color:var(--button-bg-color);color:var(--button-text-color);padding:.5rem 1rem;cursor:pointer;transition:background-color .3s ease}.table__pagination-btn:hover{background-color:var(--button-bg-color-hover)}.table__pagination-btn--current{background-color:var(--button-bg-color-active);color:var(--button-text-color-active)}.table__pagination-btn:disabled{background-color:var(--button-bg-color-disabled);cursor:not-allowed;opacity:.5}.table__pagination-details{margin:0 1em}.table__dropdown-wrapper{position:relative;display:inline-block}.table__dropdown-trigger{background-color:var(--button-bg-color);border:none;padding:.5rem 1rem;cursor:pointer;border-radius:.25rem;display:flex;align-items:center;gap:.5rem}.table__dropdown-overlay{position:fixed;top:0;right:0;bottom:0;left:0}.table__dropdown-menu{position:absolute;left:0;background-color:var(--dropdown-bg-color);border:1px solid var(--dropdown-border-color);width:200px;box-shadow:0 8px 16px #0003;z-index:1}.table__dropdown-menu--top{bottom:100%}.table__dropdown-menu:not(.table__dropdown-menu--top){top:100%}.table__dropdown-menu-item{display:block;padding:10px;width:100%;box-sizing:border-box;text-align:left;border:none;background:none;cursor:pointer}.table__dropdown-menu-item--selected,.table__dropdown-menu-item:hover{background-color:var(--dropdown-item-bg-color-hover)}
|