@uzum-tech/ui 1.13.2 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1559 -1409
- package/dist/index.prod.js +3 -3
- package/es/_mixins/use-css-vars-class.js +5 -3
- package/es/_mixins/use-rtl.js +5 -2
- package/es/_mixins/use-style.js +4 -2
- package/es/_mixins/use-theme.js +4 -2
- package/es/config-provider/src/ConfigProvider.d.ts +3 -0
- package/es/config-provider/src/ConfigProvider.js +4 -1
- package/es/config-provider/src/internal-interface.d.ts +1 -0
- package/es/data-table/src/DataTable.d.ts +2 -0
- package/es/data-table/src/DataTable.js +71 -4
- package/es/data-table/src/TableParts/Body.js +6 -2
- package/es/data-table/src/TableParts/Header.js +17 -5
- package/es/data-table/src/interface.d.ts +13 -0
- package/es/data-table/src/interface.js +1 -1
- package/es/data-table/src/use-resizable.d.ts +1 -0
- package/es/data-table/src/use-resizable.js +2 -1
- package/es/data-table/src/use-sorter.d.ts +1 -0
- package/es/data-table/src/use-sorter.js +2 -1
- package/es/data-table/src/use-table-data.d.ts +3 -2
- package/es/data-table/src/use-table-data.js +5 -1
- package/es/data-table/src/use-table-storage.d.ts +4 -0
- package/es/data-table/src/use-table-storage.js +43 -0
- package/es/data-table/src/utils.js +39 -5
- package/es/locales/date/enUS.js +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.js +1 -1
- package/lib/_mixins/use-css-vars-class.js +5 -3
- package/lib/_mixins/use-rtl.js +4 -1
- package/lib/_mixins/use-style.js +4 -2
- package/lib/_mixins/use-theme.js +4 -2
- package/lib/config-provider/src/ConfigProvider.d.ts +3 -0
- package/lib/config-provider/src/ConfigProvider.js +4 -1
- package/lib/config-provider/src/internal-interface.d.ts +1 -0
- package/lib/data-table/src/DataTable.d.ts +2 -0
- package/lib/data-table/src/DataTable.js +70 -3
- package/lib/data-table/src/TableParts/Body.js +6 -2
- package/lib/data-table/src/TableParts/Header.js +16 -4
- package/lib/data-table/src/interface.d.ts +13 -0
- package/lib/data-table/src/interface.js +1 -1
- package/lib/data-table/src/use-resizable.d.ts +1 -0
- package/lib/data-table/src/use-resizable.js +2 -1
- package/lib/data-table/src/use-sorter.d.ts +1 -0
- package/lib/data-table/src/use-sorter.js +2 -1
- package/lib/data-table/src/use-table-data.d.ts +3 -2
- package/lib/data-table/src/use-table-data.js +5 -1
- package/lib/data-table/src/use-table-storage.d.ts +4 -0
- package/lib/data-table/src/use-table-storage.js +48 -0
- package/lib/data-table/src/utils.js +39 -5
- package/lib/locales/date/enUS.js +2 -2
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/web-types.json +18 -1
package/lib/_mixins/use-rtl.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.useRtl = useRtl;
|
|
|
4
4
|
const vue_1 = require("vue");
|
|
5
5
|
const css_render_1 = require("css-render");
|
|
6
6
|
const vue3_ssr_1 = require("@css-render/vue3-ssr");
|
|
7
|
+
const context_1 = require("../config-provider/src/context");
|
|
7
8
|
const common_1 = require("./common");
|
|
8
9
|
function useRtl(mountId, rtlStateRef, clsPrefixRef) {
|
|
9
10
|
if (!rtlStateRef)
|
|
@@ -20,6 +21,7 @@ function useRtl(mountId, rtlStateRef, clsPrefixRef) {
|
|
|
20
21
|
}
|
|
21
22
|
return componentRtlState;
|
|
22
23
|
});
|
|
24
|
+
const UConfigProvider = (0, vue_1.inject)(context_1.configProviderInjectionKey, null);
|
|
23
25
|
const mountStyle = () => {
|
|
24
26
|
(0, vue_1.watchEffect)(() => {
|
|
25
27
|
const { value: clsPrefix } = clsPrefixRef;
|
|
@@ -39,7 +41,8 @@ function useRtl(mountId, rtlStateRef, clsPrefixRef) {
|
|
|
39
41
|
props: {
|
|
40
42
|
bPrefix: clsPrefix ? `.${clsPrefix}-` : undefined
|
|
41
43
|
},
|
|
42
|
-
ssr: ssrAdapter
|
|
44
|
+
ssr: ssrAdapter,
|
|
45
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
43
46
|
});
|
|
44
47
|
});
|
|
45
48
|
};
|
package/lib/_mixins/use-style.js
CHANGED
|
@@ -27,14 +27,16 @@ function useStyle(mountId, style, clsPrefixRef) {
|
|
|
27
27
|
props: {
|
|
28
28
|
bPrefix: clsPrefix ? `.${clsPrefix}-` : undefined
|
|
29
29
|
},
|
|
30
|
-
ssr: ssrAdapter
|
|
30
|
+
ssr: ssrAdapter,
|
|
31
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
31
32
|
});
|
|
32
33
|
if (!(UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.preflightStyleDisabled)) {
|
|
33
34
|
index_cssr_1.default.mount({
|
|
34
35
|
id: 'u-global',
|
|
35
36
|
head: true,
|
|
36
37
|
anchorMetaName: common_1.cssrAnchorMetaName,
|
|
37
|
-
ssr: ssrAdapter
|
|
38
|
+
ssr: ssrAdapter,
|
|
39
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
};
|
package/lib/_mixins/use-theme.js
CHANGED
|
@@ -27,14 +27,16 @@ function useTheme(resolveId, mountId, style, defaultTheme, props, clsPrefixRef)
|
|
|
27
27
|
bPrefix: clsPrefix ? `.${clsPrefix}-` : undefined
|
|
28
28
|
},
|
|
29
29
|
anchorMetaName: common_1.cssrAnchorMetaName,
|
|
30
|
-
ssr: ssrAdapter
|
|
30
|
+
ssr: ssrAdapter,
|
|
31
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
31
32
|
});
|
|
32
33
|
if (!(UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.preflightStyleDisabled)) {
|
|
33
34
|
index_cssr_1.default.mount({
|
|
34
35
|
id: 'u-global',
|
|
35
36
|
head: true,
|
|
36
37
|
anchorMetaName: common_1.cssrAnchorMetaName,
|
|
37
|
-
ssr: ssrAdapter
|
|
38
|
+
ssr: ssrAdapter,
|
|
39
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
};
|
|
@@ -36,6 +36,7 @@ export declare const configProviderProps: {
|
|
|
36
36
|
readonly default: "desktop-first";
|
|
37
37
|
};
|
|
38
38
|
readonly preflightStyleDisabled: BooleanConstructor;
|
|
39
|
+
readonly styleMountTarget: PropType<ParentNode | null>;
|
|
39
40
|
readonly inlineThemeDisabled: {
|
|
40
41
|
readonly type: BooleanConstructor;
|
|
41
42
|
readonly default: undefined;
|
|
@@ -79,6 +80,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
79
80
|
readonly default: "desktop-first";
|
|
80
81
|
};
|
|
81
82
|
readonly preflightStyleDisabled: BooleanConstructor;
|
|
83
|
+
readonly styleMountTarget: PropType<ParentNode | null>;
|
|
82
84
|
readonly inlineThemeDisabled: {
|
|
83
85
|
readonly type: BooleanConstructor;
|
|
84
86
|
readonly default: undefined;
|
|
@@ -126,6 +128,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
126
128
|
readonly default: "desktop-first";
|
|
127
129
|
};
|
|
128
130
|
readonly preflightStyleDisabled: BooleanConstructor;
|
|
131
|
+
readonly styleMountTarget: PropType<ParentNode | null>;
|
|
129
132
|
readonly inlineThemeDisabled: {
|
|
130
133
|
readonly type: BooleanConstructor;
|
|
131
134
|
readonly default: undefined;
|
|
@@ -37,6 +37,7 @@ exports.configProviderProps = {
|
|
|
37
37
|
default: 'desktop-first'
|
|
38
38
|
},
|
|
39
39
|
preflightStyleDisabled: Boolean,
|
|
40
|
+
styleMountTarget: Object,
|
|
40
41
|
inlineThemeDisabled: {
|
|
41
42
|
type: Boolean,
|
|
42
43
|
default: undefined
|
|
@@ -246,6 +247,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
246
247
|
});
|
|
247
248
|
const inlineThemeDisabled = props.inlineThemeDisabled || (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.inlineThemeDisabled);
|
|
248
249
|
const preflightStyleDisabled = props.preflightStyleDisabled || (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.preflightStyleDisabled);
|
|
250
|
+
const styleMountTarget = props.styleMountTarget || (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget);
|
|
249
251
|
const mergedThemeHashRef = (0, vue_1.computed)(() => {
|
|
250
252
|
const { value: theme } = mergedThemeRef;
|
|
251
253
|
const { value: mergedThemeOverrides } = mergedThemeOverridesRef;
|
|
@@ -307,7 +309,8 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
307
309
|
mergedThemeRef,
|
|
308
310
|
mergedThemeOverridesRef,
|
|
309
311
|
inlineThemeDisabled: inlineThemeDisabled || false,
|
|
310
|
-
preflightStyleDisabled: preflightStyleDisabled || false
|
|
312
|
+
preflightStyleDisabled: preflightStyleDisabled || false,
|
|
313
|
+
styleMountTarget
|
|
311
314
|
});
|
|
312
315
|
return {
|
|
313
316
|
mergedClsPrefix: mergedClsPrefixRef,
|
|
@@ -85,6 +85,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
85
85
|
readonly default: "current";
|
|
86
86
|
};
|
|
87
87
|
readonly scrollbarProps: import("vue").PropType<import("../..").ScrollbarProps>;
|
|
88
|
+
readonly localStorageKey: StringConstructor;
|
|
88
89
|
readonly renderCell: import("vue").PropType<(value: any, rowData: object, column: TableBaseColumn) => import("vue").VNodeChild>;
|
|
89
90
|
readonly defaultEmptyValue: import("vue").PropType<string | (() => import("vue").VNodeChild) | undefined>;
|
|
90
91
|
readonly renderExpandIcon: import("vue").PropType<import("./interface").RenderExpandIcon>;
|
|
@@ -4498,6 +4499,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
4498
4499
|
readonly default: "current";
|
|
4499
4500
|
};
|
|
4500
4501
|
readonly scrollbarProps: import("vue").PropType<import("../..").ScrollbarProps>;
|
|
4502
|
+
readonly localStorageKey: StringConstructor;
|
|
4501
4503
|
readonly renderCell: import("vue").PropType<(value: any, rowData: object, column: TableBaseColumn) => import("vue").VNodeChild>;
|
|
4502
4504
|
readonly defaultEmptyValue: import("vue").PropType<string | (() => import("vue").VNodeChild) | undefined>;
|
|
4503
4505
|
readonly renderExpandIcon: import("vue").PropType<import("./interface").RenderExpandIcon>;
|
|
@@ -18,6 +18,7 @@ const use_resizable_1 = require("./use-resizable");
|
|
|
18
18
|
const interface_1 = require("./interface");
|
|
19
19
|
const use_group_header_1 = require("./use-group-header");
|
|
20
20
|
const use_expand_1 = require("./use-expand");
|
|
21
|
+
const use_table_storage_1 = require("./use-table-storage");
|
|
21
22
|
const index_cssr_1 = __importDefault(require("./styles/index.cssr"));
|
|
22
23
|
exports.default = (0, vue_1.defineComponent)({
|
|
23
24
|
name: 'DataTable',
|
|
@@ -58,10 +59,10 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
58
59
|
const themeRef = (0, _mixins_1.useTheme)('DataTable', '-data-table', index_cssr_1.default, styles_1.dataTableLight, props, mergedClsPrefixRef);
|
|
59
60
|
const bodyWidthRef = (0, vue_1.ref)(null);
|
|
60
61
|
const mainTableInstRef = (0, vue_1.ref)(null);
|
|
61
|
-
const { getResizableWidth, clearResizableWidth, doUpdateResizableWidth } = (0, use_resizable_1.useResizable)();
|
|
62
|
+
const { getResizableWidth, clearResizableWidth, doUpdateResizableWidth, resizableWidthsRef } = (0, use_resizable_1.useResizable)();
|
|
62
63
|
const { rowsRef, colsRef, dataRelatedColsRef, hasEllipsisRef } = (0, use_group_header_1.useGroupHeader)(props, getResizableWidth);
|
|
63
|
-
const { treeMateRef, mergedCurrentPageRef, paginatedDataRef, rawPaginatedDataRef, selectionColumnRef, hoverKeyRef, mergedPaginationRef, mergedFilterStateRef, mergedSortStateRef, childTriggerColIndexRef, doUpdatePage, doUpdateFilters, onUnstableColumnResize, deriveNextSorter, filter, filters, clearFilter, clearFilters, clearSorter, page, sort } = (0, use_table_data_1.useTableData)(props, { dataRelatedColsRef });
|
|
64
|
-
const { doCheckAll, doUncheckAll, doCheck, doUncheck, headerCheckboxDisabledRef, someRowsCheckedRef, allRowsCheckedRef, mergedCheckedRowKeySetRef, mergedInderminateRowKeySetRef } = (0, use_check_1.useCheck)(props, {
|
|
64
|
+
const { treeMateRef, mergedCurrentPageRef, paginatedDataRef, rawPaginatedDataRef, selectionColumnRef, hoverKeyRef, mergedPaginationRef, mergedFilterStateRef, mergedSortStateRef, childTriggerColIndexRef, doUpdatePage, doUpdatePageSize, doUpdateFilters, onUnstableColumnResize, deriveNextSorter, restoreSortState, filter, filters, clearFilter, clearFilters, clearSorter, page, sort } = (0, use_table_data_1.useTableData)(props, { dataRelatedColsRef });
|
|
65
|
+
const { doCheckAll, doUncheckAll, doCheck, doUncheck, doUpdateCheckedRowKeys, mergedCheckedRowKeysRef, headerCheckboxDisabledRef, someRowsCheckedRef, allRowsCheckedRef, mergedCheckedRowKeySetRef, mergedInderminateRowKeySetRef } = (0, use_check_1.useCheck)(props, {
|
|
65
66
|
selectionColumnRef,
|
|
66
67
|
treeMateRef,
|
|
67
68
|
paginatedDataRef
|
|
@@ -72,6 +73,72 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
72
73
|
mainTableInstRef,
|
|
73
74
|
mergedCurrentPageRef
|
|
74
75
|
});
|
|
76
|
+
(0, vue_1.onMounted)(() => {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
const key = props.localStorageKey;
|
|
79
|
+
if (!key)
|
|
80
|
+
return;
|
|
81
|
+
const stored = (0, use_table_storage_1.loadTableState)(key);
|
|
82
|
+
if (!stored)
|
|
83
|
+
return;
|
|
84
|
+
if (stored.columnWidths && Object.keys(stored.columnWidths).length > 0) {
|
|
85
|
+
resizableWidthsRef.value = Object.assign(Object.assign({}, resizableWidthsRef.value), stored.columnWidths);
|
|
86
|
+
}
|
|
87
|
+
if (props.pagination && stored.page != null) {
|
|
88
|
+
doUpdatePage(stored.page);
|
|
89
|
+
}
|
|
90
|
+
if (props.pagination && stored.pageSize != null) {
|
|
91
|
+
doUpdatePageSize(stored.pageSize);
|
|
92
|
+
}
|
|
93
|
+
if (stored.filters) {
|
|
94
|
+
filter(stored.filters);
|
|
95
|
+
}
|
|
96
|
+
const sortToRestore = (0, use_table_storage_1.restoreSortStateFromStored)(stored.sortState, dataRelatedColsRef.value);
|
|
97
|
+
if (sortToRestore === null || sortToRestore === void 0 ? void 0 : sortToRestore.length) {
|
|
98
|
+
restoreSortState(sortToRestore);
|
|
99
|
+
}
|
|
100
|
+
if ((_a = stored.checkedRowKeys) === null || _a === void 0 ? void 0 : _a.length) {
|
|
101
|
+
doUpdateCheckedRowKeys(stored.checkedRowKeys, undefined, 'check');
|
|
102
|
+
}
|
|
103
|
+
if ((_b = stored.expandedRowKeys) === null || _b === void 0 ? void 0 : _b.length) {
|
|
104
|
+
doUpdateExpandedRowKeys(stored.expandedRowKeys);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
(0, vue_1.watch)(() => {
|
|
108
|
+
var _a, _b;
|
|
109
|
+
return props.localStorageKey
|
|
110
|
+
? {
|
|
111
|
+
key: props.localStorageKey,
|
|
112
|
+
columnWidths: resizableWidthsRef.value,
|
|
113
|
+
page: (_a = mergedPaginationRef.value) === null || _a === void 0 ? void 0 : _a.page,
|
|
114
|
+
pageSize: (_b = mergedPaginationRef.value) === null || _b === void 0 ? void 0 : _b.pageSize,
|
|
115
|
+
filters: mergedFilterStateRef.value,
|
|
116
|
+
sortState: mergedSortStateRef.value.map((s) => ({
|
|
117
|
+
columnKey: s.columnKey,
|
|
118
|
+
order: s.order
|
|
119
|
+
})),
|
|
120
|
+
checkedRowKeys: mergedCheckedRowKeysRef.value,
|
|
121
|
+
expandedRowKeys: mergedExpandedRowKeysRef.value
|
|
122
|
+
}
|
|
123
|
+
: null;
|
|
124
|
+
}, (state) => {
|
|
125
|
+
var _a, _b;
|
|
126
|
+
if (!(state === null || state === void 0 ? void 0 : state.key))
|
|
127
|
+
return;
|
|
128
|
+
(0, use_table_storage_1.saveTableState)(state.key, {
|
|
129
|
+
columnWidths: state.columnWidths,
|
|
130
|
+
page: state.page,
|
|
131
|
+
pageSize: state.pageSize,
|
|
132
|
+
filters: state.filters,
|
|
133
|
+
sortState: state.sortState.length ? state.sortState : undefined,
|
|
134
|
+
checkedRowKeys: ((_a = state.checkedRowKeys) === null || _a === void 0 ? void 0 : _a.length)
|
|
135
|
+
? state.checkedRowKeys
|
|
136
|
+
: undefined,
|
|
137
|
+
expandedRowKeys: ((_b = state.expandedRowKeys) === null || _b === void 0 ? void 0 : _b.length)
|
|
138
|
+
? state.expandedRowKeys
|
|
139
|
+
: undefined
|
|
140
|
+
});
|
|
141
|
+
}, { deep: true });
|
|
75
142
|
const { localeRef } = (0, _mixins_1.useLocale)('DataTable');
|
|
76
143
|
const mergedTableLayoutRef = (0, vue_1.computed)(() => {
|
|
77
144
|
// Layout
|
|
@@ -20,6 +20,7 @@ const seemly_1 = require("seemly");
|
|
|
20
20
|
const vueuc_1 = require("vueuc");
|
|
21
21
|
const vooks_1 = require("vooks");
|
|
22
22
|
const common_1 = require("../../../_mixins/common");
|
|
23
|
+
const context_1 = require("../../../config-provider/src/context");
|
|
23
24
|
const cssr_1 = require("../../../_utils/cssr");
|
|
24
25
|
const _internal_1 = require("../../../_internal");
|
|
25
26
|
const _utils_1 = require("../../../_utils");
|
|
@@ -102,6 +103,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
102
103
|
const { slots: dataTableSlots, bodyWidthRef, mergedExpandedRowKeysRef, mergedClsPrefixRef, mergedThemeRef, scrollXRef, colsRef, paginatedDataRef, rawPaginatedDataRef, fixedColumnLeftMapRef, fixedColumnRightMapRef, mergedCurrentPageRef, rowClassNameRef, leftActiveFixedColKeyRef, leftActiveFixedChildrenColKeysRef, rightActiveFixedColKeyRef, rightActiveFixedChildrenColKeysRef, renderExpandRef, hoverKeyRef, summaryRef, mergedSortStateRef, virtualScrollRef, componentId, mergedTableLayoutRef, childTriggerColIndexRef, indentRef, rowPropsRef, maxHeightRef, stripedRef, loadingRef, loadingSkeletonRef, onLoadRef, loadingKeySetRef, expandableRef, stickyExpandedRowsRef, renderExpandIconRef, summaryPlacementRef, treeMateRef, scrollbarPropsRef, setHeaderScrollLeft, doUpdateExpandedRowKeys, handleTableBodyScroll, doCheck, doUncheck, renderCell, defaultEmptyValueRef, emptyPropsRef
|
|
103
104
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
104
105
|
} = (0, vue_1.inject)(interface_1.dataTableInjectionKey);
|
|
106
|
+
const UConfigProvider = (0, vue_1.inject)(context_1.configProviderInjectionKey, null);
|
|
105
107
|
const scrollbarInstRef = (0, vue_1.ref)(null);
|
|
106
108
|
const virtualListRef = (0, vue_1.ref)(null);
|
|
107
109
|
const emptyElRef = (0, vue_1.ref)(null);
|
|
@@ -296,13 +298,15 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
296
298
|
id: `u-${componentId}`,
|
|
297
299
|
force: true,
|
|
298
300
|
props: cProps,
|
|
299
|
-
anchorMetaName: common_1.cssrAnchorMetaName
|
|
301
|
+
anchorMetaName: common_1.cssrAnchorMetaName,
|
|
302
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
300
303
|
});
|
|
301
304
|
fixedStyleMounted = true;
|
|
302
305
|
});
|
|
303
306
|
(0, vue_1.onUnmounted)(() => {
|
|
304
307
|
style.unmount({
|
|
305
|
-
id: `u-${componentId}
|
|
308
|
+
id: `u-${componentId}`,
|
|
309
|
+
parent: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.styleMountTarget
|
|
306
310
|
});
|
|
307
311
|
});
|
|
308
312
|
return Object.assign({ bodyWidth: bodyWidthRef, summaryPlacement: summaryPlacementRef, dataTableSlots,
|
|
@@ -28,7 +28,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
setup() {
|
|
31
|
-
const { mergedClsPrefixRef, scrollXRef, fixedColumnLeftMapRef, fixedColumnRightMapRef, mergedCurrentPageRef, allRowsCheckedRef, someRowsCheckedRef, rowsRef, colsRef, mergedThemeRef, checkOptionsRef, mergedSortStateRef, componentId, mergedTableLayoutRef, headerCheckboxDisabledRef, sizeRef, onUnstableColumnResize, doUpdateResizableWidth, handleTableHeaderScroll, deriveNextSorter, doUncheckAll, doCheckAll
|
|
31
|
+
const { mergedClsPrefixRef, scrollXRef, fixedColumnLeftMapRef, fixedColumnRightMapRef, mergedCurrentPageRef, allRowsCheckedRef, someRowsCheckedRef, rowsRef, colsRef, mergedThemeRef, checkOptionsRef, mergedSortStateRef, componentId, mergedTableLayoutRef, headerCheckboxDisabledRef, sizeRef, onUnstableColumnResize, getResizableWidth, doUpdateResizableWidth, handleTableHeaderScroll, deriveNextSorter, doUncheckAll, doCheckAll
|
|
32
32
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
33
33
|
} = (0, vue_1.inject)(interface_1.dataTableInjectionKey);
|
|
34
34
|
const cellElsRef = (0, vue_1.ref)({});
|
|
@@ -56,13 +56,25 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
56
56
|
deriveNextSorter(nextSorter);
|
|
57
57
|
}
|
|
58
58
|
const resizeStartWidthMap = new Map();
|
|
59
|
+
function getColumnStartWidth(column) {
|
|
60
|
+
const actual = getCellActualWidth(column.key);
|
|
61
|
+
if (actual !== undefined && actual > 0)
|
|
62
|
+
return actual;
|
|
63
|
+
const resized = getResizableWidth(column.key);
|
|
64
|
+
if (resized !== undefined && resized > 0)
|
|
65
|
+
return resized;
|
|
66
|
+
return (0, utils_1.getNumberColWidth)(column);
|
|
67
|
+
}
|
|
59
68
|
function handleColumnResizeStart(column) {
|
|
60
|
-
resizeStartWidthMap.set(column.key,
|
|
69
|
+
resizeStartWidthMap.set(column.key, getColumnStartWidth(column));
|
|
61
70
|
}
|
|
62
71
|
function handleColumnResize(column, displacementX) {
|
|
63
|
-
|
|
72
|
+
let startWidth = resizeStartWidthMap.get(column.key);
|
|
64
73
|
if (startWidth === undefined) {
|
|
65
|
-
|
|
74
|
+
startWidth = getColumnStartWidth(column);
|
|
75
|
+
if (startWidth === undefined)
|
|
76
|
+
return;
|
|
77
|
+
resizeStartWidthMap.set(column.key, startWidth);
|
|
66
78
|
}
|
|
67
79
|
const widthAfterResize = startWidth + displacementX;
|
|
68
80
|
const limitWidth = (0, utils_1.clampValueFollowCSSRules)(widthAfterResize, column.minWidth, column.maxWidth);
|
|
@@ -96,6 +96,7 @@ export declare const dataTableProps: {
|
|
|
96
96
|
readonly default: "current";
|
|
97
97
|
};
|
|
98
98
|
readonly scrollbarProps: PropType<ScrollbarProps>;
|
|
99
|
+
readonly localStorageKey: StringConstructor;
|
|
99
100
|
readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn) => VNodeChild>;
|
|
100
101
|
readonly defaultEmptyValue: PropType<string | (() => VNodeChild) | undefined>;
|
|
101
102
|
readonly renderExpandIcon: PropType<RenderExpandIcon>;
|
|
@@ -3185,6 +3186,18 @@ export interface MainTableInjection {
|
|
|
3185
3186
|
leftActiveFixedColKey: ColumnKey | null;
|
|
3186
3187
|
rightActiveFixedColKey: ColumnKey | null;
|
|
3187
3188
|
}
|
|
3189
|
+
export interface DataTableStorageState {
|
|
3190
|
+
columnWidths?: Record<string, number>;
|
|
3191
|
+
page?: number;
|
|
3192
|
+
pageSize?: number;
|
|
3193
|
+
filters?: FilterState;
|
|
3194
|
+
sortState?: Array<{
|
|
3195
|
+
columnKey: ColumnKey;
|
|
3196
|
+
order: SortState['order'];
|
|
3197
|
+
}>;
|
|
3198
|
+
checkedRowKeys?: RowKey[];
|
|
3199
|
+
expandedRowKeys?: RowKey[];
|
|
3200
|
+
}
|
|
3188
3201
|
export type RenderFilter = (props: {
|
|
3189
3202
|
active: boolean;
|
|
3190
3203
|
show: boolean;
|
|
@@ -53,7 +53,7 @@ exports.dataTableProps = Object.assign(Object.assign({}, _mixins_1.useTheme.prop
|
|
|
53
53
|
}, paginationBehaviorOnFilter: {
|
|
54
54
|
type: String,
|
|
55
55
|
default: 'current'
|
|
56
|
-
}, scrollbarProps: Object, renderCell: Function, defaultEmptyValue: [String, Function], renderExpandIcon: Function, spinProps: { type: Object, default: {} }, emptyProps: Object, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
|
|
56
|
+
}, scrollbarProps: Object, localStorageKey: String, renderCell: Function, defaultEmptyValue: [String, Function], renderExpandIcon: Function, spinProps: { type: Object, default: {} }, emptyProps: Object, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
|
|
57
57
|
// deprecated
|
|
58
58
|
onPageChange: [Function, Array], onPageSizeChange: [Function, Array], onSorterChange: [Function, Array], onFiltersChange: [Function, Array], onCheckedRowKeysChange: [Function, Array] });
|
|
59
59
|
exports.dataTableInjectionKey = (0, _utils_1.createInjectionKey)('u-data-table');
|
|
@@ -3,4 +3,5 @@ export declare function useResizable(): {
|
|
|
3
3
|
getResizableWidth: (key: ColumnKey) => number | undefined;
|
|
4
4
|
doUpdateResizableWidth: (column: TableColumn, width: number) => void;
|
|
5
5
|
clearResizableWidth: () => void;
|
|
6
|
+
resizableWidthsRef: import("vue").Ref<Record<ColumnKey, number>>;
|
|
6
7
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ComputedRef } from 'vue';
|
|
2
2
|
import type { PaginationProps } from '../../pagination/src/Pagination';
|
|
3
|
-
import type { ColumnKey, FilterState, TableBaseColumn, TableSelectionColumn, InternalRowData, TmNode, TableExpandColumn, RowKey, DataTableSetupProps } from './interface';
|
|
3
|
+
import type { ColumnKey, FilterState, SortState, TableBaseColumn, TableSelectionColumn, InternalRowData, TmNode, TableExpandColumn, RowKey, DataTableSetupProps } from './interface';
|
|
4
4
|
export declare function useTableData(props: DataTableSetupProps, { dataRelatedColsRef }: {
|
|
5
5
|
dataRelatedColsRef: ComputedRef<Array<TableSelectionColumn | TableBaseColumn | TableExpandColumn>>;
|
|
6
6
|
}): {
|
|
@@ -22,10 +22,11 @@ export declare function useTableData(props: DataTableSetupProps, { dataRelatedCo
|
|
|
22
22
|
selectionColumnRef: ComputedRef<TableSelectionColumn | null>;
|
|
23
23
|
childTriggerColIndexRef: ComputedRef<number>;
|
|
24
24
|
doUpdateFilters: (filters: FilterState, sourceColumn: TableBaseColumn) => void;
|
|
25
|
-
deriveNextSorter: (sortState:
|
|
25
|
+
deriveNextSorter: (sortState: SortState | null) => void;
|
|
26
26
|
doUpdatePageSize: (pageSize: number) => void;
|
|
27
27
|
doUpdatePage: (page: number) => void;
|
|
28
28
|
onUnstableColumnResize: (resizedWidth: number, limitedWidth: number, column: TableBaseColumn, getColumnWidth: (key: ColumnKey) => number | undefined) => void;
|
|
29
|
+
restoreSortState: (sortState: SortState | SortState[] | null) => void;
|
|
29
30
|
filter: (filters: FilterState | null) => void;
|
|
30
31
|
filters: (filters: FilterState | null) => void;
|
|
31
32
|
clearFilter: () => void;
|
|
@@ -131,7 +131,7 @@ function useTableData(props, { dataRelatedColsRef }) {
|
|
|
131
131
|
})
|
|
132
132
|
: [];
|
|
133
133
|
});
|
|
134
|
-
const { sortedDataRef, deriveNextSorter, mergedSortStateRef, sort, clearSorter } = (0, use_sorter_1.useSorter)(props, {
|
|
134
|
+
const { sortedDataRef, deriveNextSorter, mergedSortStateRef, sort, clearSorter, doUpdateSorter } = (0, use_sorter_1.useSorter)(props, {
|
|
135
135
|
dataRelatedColsRef,
|
|
136
136
|
filteredDataRef
|
|
137
137
|
});
|
|
@@ -302,6 +302,9 @@ function useTableData(props, { dataRelatedColsRef }) {
|
|
|
302
302
|
(0, _utils_1.warn)('data-table', '`filters` is not an object');
|
|
303
303
|
}
|
|
304
304
|
}
|
|
305
|
+
function restoreSortState(sortState) {
|
|
306
|
+
doUpdateSorter(sortState);
|
|
307
|
+
}
|
|
305
308
|
return {
|
|
306
309
|
treeMateRef,
|
|
307
310
|
mergedCurrentPageRef: boundedMergedCurrentPageRef,
|
|
@@ -318,6 +321,7 @@ function useTableData(props, { dataRelatedColsRef }) {
|
|
|
318
321
|
doUpdatePageSize,
|
|
319
322
|
doUpdatePage,
|
|
320
323
|
onUnstableColumnResize,
|
|
324
|
+
restoreSortState,
|
|
321
325
|
// exported methods
|
|
322
326
|
filter,
|
|
323
327
|
filters,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DataTableStorageState, SortState, TableBaseColumn, TableExpandColumn, TableSelectionColumn } from './interface';
|
|
2
|
+
export declare function loadTableState(localStorageKey: string): DataTableStorageState | null;
|
|
3
|
+
export declare function saveTableState(localStorageKey: string, state: DataTableStorageState): void;
|
|
4
|
+
export declare function restoreSortStateFromStored(stored: DataTableStorageState['sortState'], dataRelatedCols: Array<TableSelectionColumn | TableBaseColumn | TableExpandColumn>): SortState[] | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadTableState = loadTableState;
|
|
4
|
+
exports.saveTableState = saveTableState;
|
|
5
|
+
exports.restoreSortStateFromStored = restoreSortStateFromStored;
|
|
6
|
+
const STORAGE_KEY_PREFIX = 'u-data-table:';
|
|
7
|
+
function getStorageKey(key) {
|
|
8
|
+
return `${STORAGE_KEY_PREFIX}${key}`;
|
|
9
|
+
}
|
|
10
|
+
function loadTableState(localStorageKey) {
|
|
11
|
+
try {
|
|
12
|
+
const raw = localStorage.getItem(getStorageKey(localStorageKey));
|
|
13
|
+
if (!raw)
|
|
14
|
+
return null;
|
|
15
|
+
return JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch (_a) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function saveTableState(localStorageKey, state) {
|
|
22
|
+
try {
|
|
23
|
+
localStorage.setItem(getStorageKey(localStorageKey), JSON.stringify(state));
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
console.warn(`Could not set localStorage value for ${localStorageKey}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function restoreSortStateFromStored(stored, dataRelatedCols) {
|
|
30
|
+
if (!(stored === null || stored === void 0 ? void 0 : stored.length))
|
|
31
|
+
return null;
|
|
32
|
+
const result = [];
|
|
33
|
+
for (const item of stored) {
|
|
34
|
+
const column = dataRelatedCols.find((col) => col.type !== 'selection' &&
|
|
35
|
+
col.type !== 'expand' &&
|
|
36
|
+
'key' in col &&
|
|
37
|
+
col.key === item.columnKey &&
|
|
38
|
+
col.sorter !== undefined);
|
|
39
|
+
if (column === null || column === void 0 ? void 0 : column.sorter) {
|
|
40
|
+
result.push({
|
|
41
|
+
columnKey: item.columnKey,
|
|
42
|
+
order: item.order,
|
|
43
|
+
sorter: column.sorter
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result.length ? result : null;
|
|
48
|
+
}
|
|
@@ -96,15 +96,49 @@ function clampValueFollowCSSRules(value, min, max) {
|
|
|
96
96
|
return value;
|
|
97
97
|
}
|
|
98
98
|
function createCustomWidthStyle(column, resizedWidth) {
|
|
99
|
+
var _a;
|
|
99
100
|
if (resizedWidth !== undefined) {
|
|
101
|
+
const numWidth = (0, seemly_1.depx)(resizedWidth);
|
|
102
|
+
const minMaxColumn = column && 'minWidth' in column && 'maxWidth' in column
|
|
103
|
+
? column
|
|
104
|
+
: null;
|
|
105
|
+
const clampedNum = minMaxColumn
|
|
106
|
+
? clampValueFollowCSSRules(numWidth, minMaxColumn.minWidth, minMaxColumn.maxWidth)
|
|
107
|
+
: numWidth;
|
|
108
|
+
const clamped = (0, _utils_1.formatLength)(clampedNum);
|
|
100
109
|
return {
|
|
101
|
-
width:
|
|
102
|
-
minWidth:
|
|
103
|
-
maxWidth:
|
|
110
|
+
width: clamped,
|
|
111
|
+
minWidth: clamped,
|
|
112
|
+
maxWidth: clamped
|
|
104
113
|
};
|
|
105
114
|
}
|
|
106
|
-
const
|
|
107
|
-
const
|
|
115
|
+
const explicitNum = (_a = getNumberColWidth(column)) !== null && _a !== void 0 ? _a : undefined;
|
|
116
|
+
const minWidth = column && 'minWidth' in column
|
|
117
|
+
? column.minWidth
|
|
118
|
+
: undefined;
|
|
119
|
+
const maxWidth = column && 'maxWidth' in column
|
|
120
|
+
? column.maxWidth
|
|
121
|
+
: undefined;
|
|
122
|
+
let widthNum = explicitNum;
|
|
123
|
+
if (widthNum === undefined &&
|
|
124
|
+
(minWidth !== undefined || maxWidth !== undefined)) {
|
|
125
|
+
widthNum = clampValueFollowCSSRules(maxWidth !== undefined
|
|
126
|
+
? typeof maxWidth === 'number'
|
|
127
|
+
? maxWidth
|
|
128
|
+
: parseFloat(maxWidth)
|
|
129
|
+
: minWidth !== undefined
|
|
130
|
+
? typeof minWidth === 'number'
|
|
131
|
+
? minWidth
|
|
132
|
+
: parseFloat(minWidth)
|
|
133
|
+
: 0, minWidth, maxWidth);
|
|
134
|
+
}
|
|
135
|
+
else if (widthNum !== undefined &&
|
|
136
|
+
(minWidth !== undefined || maxWidth !== undefined)) {
|
|
137
|
+
widthNum = clampValueFollowCSSRules(widthNum, minWidth, maxWidth);
|
|
138
|
+
}
|
|
139
|
+
const width = widthNum !== undefined
|
|
140
|
+
? (0, _utils_1.formatLength)(widthNum)
|
|
141
|
+
: getStringColWidth(column);
|
|
108
142
|
return {
|
|
109
143
|
width,
|
|
110
144
|
minWidth: (0, _utils_1.formatLength)(minWidth) || width,
|
package/lib/locales/date/enUS.js
CHANGED
|
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const index_js_1 = __importDefault(require("date-fns/locale/en-US/index.js"));
|
|
7
7
|
const dateEnUs = {
|
|
8
8
|
name: 'en-US',
|
|
9
|
-
locale:
|
|
9
|
+
locale: index_js_1.default
|
|
10
10
|
};
|
|
11
11
|
exports.default = dateEnUs;
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "1.
|
|
1
|
+
declare const _default: "1.14.0";
|
|
2
2
|
export default _default;
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
package/web-types.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "@uzum-tech/ui",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.14.0",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"contributions": {
|
|
8
8
|
"html": {
|
|
@@ -3725,6 +3725,11 @@
|
|
|
3725
3725
|
"since": "2.29.0"
|
|
3726
3726
|
}
|
|
3727
3727
|
},
|
|
3728
|
+
{
|
|
3729
|
+
"name": "style-mount-target",
|
|
3730
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
3731
|
+
"type": "object"
|
|
3732
|
+
},
|
|
3728
3733
|
{
|
|
3729
3734
|
"name": "inline-theme-disabled",
|
|
3730
3735
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
@@ -4229,6 +4234,11 @@
|
|
|
4229
4234
|
"description": "See [Scrollbar props](scrollbar#Scrollbar-Props)",
|
|
4230
4235
|
"default": "undefined"
|
|
4231
4236
|
},
|
|
4237
|
+
{
|
|
4238
|
+
"name": "local-storage-key",
|
|
4239
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/data-table",
|
|
4240
|
+
"type": "string"
|
|
4241
|
+
},
|
|
4232
4242
|
{
|
|
4233
4243
|
"name": "render-cell",
|
|
4234
4244
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/data-table",
|
|
@@ -4272,6 +4282,13 @@
|
|
|
4272
4282
|
"type": "Partial<EmptyProps>",
|
|
4273
4283
|
"description": "Props passed to the Empty component when data is empty.",
|
|
4274
4284
|
"default": "undefined"
|
|
4285
|
+
},
|
|
4286
|
+
{
|
|
4287
|
+
"name": "localStorage-key",
|
|
4288
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/data-table",
|
|
4289
|
+
"type": "string",
|
|
4290
|
+
"description": "Key for localStorage to persist table state (column widths, page, pageSize, filters, sort, checkedRowKeys, expandedRowKeys). When set, state is restored on mount and saved on change.",
|
|
4291
|
+
"default": "undefined"
|
|
4275
4292
|
}
|
|
4276
4293
|
],
|
|
4277
4294
|
"js": {
|