@progress/kendo-vue-grid 3.5.0 → 3.5.1-dev.202208150613
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/cdn/js/kendo-vue-grid.js +1 -1
- package/dist/es/Grid.js +20 -24
- package/dist/es/ScrollMode.js +1 -0
- package/dist/es/columnMenu/ColumnMenu.js +2 -2
- package/dist/es/columnMenu/GridColumnMenuCheckboxFilter.js +9 -13
- package/dist/es/columnMenu/GridColumnMenuFilter.js +423 -107
- package/dist/es/columnMenu/GridColumnMenuFilterCell.js +74 -97
- package/dist/es/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
- package/dist/es/columnMenu/GridColumnMenuFilterOperators.js +68 -0
- package/dist/es/columnMenu/GridColumnMenuItem.js +2 -2
- package/dist/es/filterCommon.d.ts +1 -1
- package/dist/es/footer/Footer.js +1 -1
- package/dist/es/footer/FooterRow.js +1 -1
- package/dist/es/header/FilterRow.js +1 -1
- package/dist/es/header/Header.js +1 -1
- package/dist/es/header/HeaderRow.js +1 -1
- package/dist/es/interfaces/ExtendedColumnProps.js +1 -0
- package/dist/es/interfaces/GridCellProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuColumnProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuExtendedFilterProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuFilterBaseProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuFilterProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuFilterUIProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuProps.js +1 -0
- package/dist/es/interfaces/GridColumnMenuSortBaseProps.js +1 -0
- package/dist/es/interfaces/GridColumnProps.js +1 -0
- package/dist/es/interfaces/GridDetailRowProps.js +1 -0
- package/dist/es/interfaces/GridFilterCellProps.js +1 -0
- package/dist/es/interfaces/GridFilterOperator.js +1 -0
- package/dist/es/interfaces/GridFilterOperators.js +1 -0
- package/dist/es/interfaces/GridFooterCellProps.js +1 -0
- package/dist/es/interfaces/GridGroupableSettings.js +1 -0
- package/dist/es/interfaces/GridHeaderCellProps.js +1 -0
- package/dist/es/interfaces/GridHeaderSelectionCellProps.js +1 -0
- package/dist/es/interfaces/GridNoRecordsProps.js +1 -0
- package/dist/es/interfaces/GridProps.js +1 -0
- package/dist/es/interfaces/GridRowProps.js +1 -0
- package/dist/es/interfaces/GridRowType.js +1 -0
- package/dist/es/interfaces/GridSortSettings.js +9 -7
- package/dist/es/interfaces/GridToolbarProps.js +1 -0
- package/dist/es/interfaces/events.js +1 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/rows/GridDetailRow.d.ts +2 -1
- package/dist/es/utils/index.js +4 -4
- package/dist/esm/Grid.d.ts +180 -0
- package/dist/esm/Grid.js +2086 -0
- package/dist/esm/GridNav.d.ts +46 -0
- package/dist/esm/GridNav.js +112 -0
- package/dist/esm/GridNoRecords.d.ts +51 -0
- package/dist/esm/GridNoRecords.js +83 -0
- package/dist/esm/GridToolbar.d.ts +58 -0
- package/dist/esm/GridToolbar.js +77 -0
- package/dist/esm/ScrollMode.d.ts +1 -0
- package/dist/esm/ScrollMode.js +1 -0
- package/dist/esm/VirtualScroll.d.ts +41 -0
- package/dist/esm/VirtualScroll.js +217 -0
- package/dist/esm/additionalTypes.ts +21 -0
- package/dist/esm/cells/GridCell.d.ts +30 -0
- package/dist/esm/cells/GridCell.js +161 -0
- package/dist/esm/cells/GridDetailCell.d.ts +29 -0
- package/dist/esm/cells/GridDetailCell.js +82 -0
- package/dist/esm/cells/GridDetailHierarchyCell.d.ts +24 -0
- package/dist/esm/cells/GridDetailHierarchyCell.js +53 -0
- package/dist/esm/cells/GridEditCell.d.ts +40 -0
- package/dist/esm/cells/GridEditCell.js +312 -0
- package/dist/esm/cells/GridFilterCell.d.ts +26 -0
- package/dist/esm/cells/GridFilterCell.js +259 -0
- package/dist/esm/cells/GridGroupCell.d.ts +23 -0
- package/dist/esm/cells/GridGroupCell.js +179 -0
- package/dist/esm/cells/GridHierarchyCell.d.ts +23 -0
- package/dist/esm/cells/GridHierarchyCell.js +162 -0
- package/dist/esm/cells/GridSelectionCell.d.ts +34 -0
- package/dist/esm/cells/GridSelectionCell.js +138 -0
- package/dist/esm/columnMenu/ColumnMenu.d.ts +56 -0
- package/dist/esm/columnMenu/ColumnMenu.js +252 -0
- package/dist/esm/columnMenu/ColumnMenuContent.d.ts +33 -0
- package/dist/esm/columnMenu/ColumnMenuContent.js +123 -0
- package/dist/esm/columnMenu/GridColumnMenuCheckboxFilter.d.ts +86 -0
- package/dist/esm/columnMenu/GridColumnMenuCheckboxFilter.js +709 -0
- package/dist/esm/columnMenu/GridColumnMenuFilter.d.ts +339 -0
- package/dist/esm/columnMenu/GridColumnMenuFilter.js +1079 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterCell.d.ts +45 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterCell.js +152 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterOperators.js +68 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterUI.d.ts +24 -0
- package/dist/esm/columnMenu/GridColumnMenuFilterUI.js +155 -0
- package/dist/esm/columnMenu/GridColumnMenuItem.d.ts +42 -0
- package/dist/esm/columnMenu/GridColumnMenuItem.js +63 -0
- package/dist/esm/columnMenu/GridColumnMenuItemContent.d.ts +34 -0
- package/dist/esm/columnMenu/GridColumnMenuItemContent.js +51 -0
- package/dist/esm/columnMenu/GridColumnMenuItemGroup.d.ts +19 -0
- package/dist/esm/columnMenu/GridColumnMenuItemGroup.js +33 -0
- package/dist/esm/columnMenu/GridColumnMenuSort.d.ts +283 -0
- package/dist/esm/columnMenu/GridColumnMenuSort.js +375 -0
- package/dist/esm/drag/ColumnDraggable.d.ts +43 -0
- package/dist/esm/drag/ColumnDraggable.js +73 -0
- package/dist/esm/drag/ColumnResize.d.ts +31 -0
- package/dist/esm/drag/ColumnResize.js +126 -0
- package/dist/esm/drag/ColumnResizer.d.ts +40 -0
- package/dist/esm/drag/ColumnResizer.js +89 -0
- package/dist/esm/drag/CommonDragLogic.d.ts +35 -0
- package/dist/esm/drag/CommonDragLogic.js +177 -0
- package/dist/esm/drag/DragClue.d.ts +25 -0
- package/dist/esm/drag/DragClue.js +52 -0
- package/dist/esm/drag/DropClue.d.ts +24 -0
- package/dist/esm/drag/DropClue.js +46 -0
- package/dist/esm/drag/GroupingIndicator.d.ts +51 -0
- package/dist/esm/drag/GroupingIndicator.js +153 -0
- package/dist/esm/filterCommon.d.ts +75 -0
- package/dist/esm/filterCommon.js +156 -0
- package/dist/esm/footer/Footer.d.ts +52 -0
- package/dist/esm/footer/Footer.js +103 -0
- package/dist/esm/footer/FooterRow.d.ts +30 -0
- package/dist/esm/footer/FooterRow.js +73 -0
- package/dist/esm/header/FilterRow.d.ts +36 -0
- package/dist/esm/header/FilterRow.js +203 -0
- package/dist/esm/header/GridHeaderCell.d.ts +21 -0
- package/dist/esm/header/GridHeaderCell.js +60 -0
- package/dist/esm/header/GridHeaderSelectionCell.d.ts +32 -0
- package/dist/esm/header/GridHeaderSelectionCell.js +81 -0
- package/dist/esm/header/GroupPanel.d.ts +38 -0
- package/dist/esm/header/GroupPanel.js +108 -0
- package/dist/esm/header/Header.d.ts +64 -0
- package/dist/esm/header/Header.js +123 -0
- package/dist/esm/header/HeaderRow.d.ts +86 -0
- package/dist/esm/header/HeaderRow.js +517 -0
- package/dist/esm/interfaces/ExtendedColumnProps.d.ts +20 -0
- package/dist/esm/interfaces/ExtendedColumnProps.js +1 -0
- package/dist/esm/interfaces/GridCellProps.d.ts +156 -0
- package/dist/esm/interfaces/GridCellProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuColumnProps.d.ts +13 -0
- package/dist/esm/interfaces/GridColumnMenuColumnProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuExtendedFilterProps.d.ts +42 -0
- package/dist/esm/interfaces/GridColumnMenuExtendedFilterProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuFilterBaseProps.d.ts +49 -0
- package/dist/esm/interfaces/GridColumnMenuFilterBaseProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuFilterProps.d.ts +27 -0
- package/dist/esm/interfaces/GridColumnMenuFilterProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuFilterUIProps.d.ts +55 -0
- package/dist/esm/interfaces/GridColumnMenuFilterUIProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuProps.d.ts +19 -0
- package/dist/esm/interfaces/GridColumnMenuProps.js +1 -0
- package/dist/esm/interfaces/GridColumnMenuSortBaseProps.d.ts +28 -0
- package/dist/esm/interfaces/GridColumnMenuSortBaseProps.js +1 -0
- package/dist/esm/interfaces/GridColumnProps.d.ts +147 -0
- package/dist/esm/interfaces/GridColumnProps.js +1 -0
- package/dist/esm/interfaces/GridDetailRowProps.d.ts +9 -0
- package/dist/esm/interfaces/GridDetailRowProps.js +1 -0
- package/dist/esm/interfaces/GridFilterCellProps.d.ts +64 -0
- package/dist/esm/interfaces/GridFilterCellProps.js +1 -0
- package/dist/esm/interfaces/GridFilterOperator.d.ts +7 -0
- package/dist/esm/interfaces/GridFilterOperator.js +1 -0
- package/dist/esm/interfaces/GridFilterOperators.d.ts +49 -0
- package/dist/esm/interfaces/GridFilterOperators.js +1 -0
- package/dist/esm/interfaces/GridFooterCellProps.d.ts +7 -0
- package/dist/esm/interfaces/GridFooterCellProps.js +1 -0
- package/dist/esm/interfaces/GridGroupableSettings.d.ts +15 -0
- package/dist/esm/interfaces/GridGroupableSettings.js +1 -0
- package/dist/esm/interfaces/GridHeaderCellProps.d.ts +37 -0
- package/dist/esm/interfaces/GridHeaderCellProps.js +1 -0
- package/dist/esm/interfaces/GridHeaderSelectionCellProps.d.ts +17 -0
- package/dist/esm/interfaces/GridHeaderSelectionCellProps.js +1 -0
- package/dist/esm/interfaces/GridNoRecordsProps.d.ts +9 -0
- package/dist/esm/interfaces/GridNoRecordsProps.js +1 -0
- package/dist/esm/interfaces/GridProps.d.ts +311 -0
- package/dist/esm/interfaces/GridProps.js +1 -0
- package/dist/esm/interfaces/GridRowProps.d.ts +55 -0
- package/dist/esm/interfaces/GridRowProps.js +1 -0
- package/dist/esm/interfaces/GridRowType.d.ts +9 -0
- package/dist/esm/interfaces/GridRowType.js +1 -0
- package/dist/esm/interfaces/GridSortSettings.d.ts +26 -0
- package/dist/esm/interfaces/GridSortSettings.js +20 -0
- package/dist/esm/interfaces/GridToolbarProps.d.ts +9 -0
- package/dist/esm/interfaces/GridToolbarProps.js +1 -0
- package/dist/esm/interfaces/events.d.ts +248 -0
- package/dist/esm/interfaces/events.js +1 -0
- package/dist/esm/main.d.ts +38 -0
- package/dist/esm/main.js +31 -0
- package/dist/esm/messages/index.d.ts +150 -0
- package/dist/esm/messages/index.js +151 -0
- package/dist/esm/package-metadata.d.ts +5 -0
- package/dist/esm/package-metadata.js +11 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/rows/GridDetailRow.d.ts +16 -0
- package/dist/esm/rows/GridDetailRow.js +29 -0
- package/dist/esm/rows/GridRow.d.ts +28 -0
- package/dist/esm/rows/GridRow.js +84 -0
- package/dist/esm/utils/browser-support.service.d.ts +7 -0
- package/dist/esm/utils/browser-support.service.js +26 -0
- package/dist/esm/utils/index.d.ts +91 -0
- package/dist/esm/utils/index.js +393 -0
- package/dist/npm/Grid.js +66 -70
- package/dist/npm/GridNav.js +1 -1
- package/dist/npm/GridNoRecords.js +2 -2
- package/dist/npm/GridToolbar.js +1 -1
- package/dist/npm/cells/GridCell.js +2 -2
- package/dist/npm/cells/GridEditCell.js +2 -2
- package/dist/npm/cells/GridFilterCell.js +4 -4
- package/dist/npm/cells/GridHierarchyCell.js +1 -1
- package/dist/npm/cells/GridSelectionCell.js +2 -2
- package/dist/npm/columnMenu/ColumnMenu.js +5 -5
- package/dist/npm/columnMenu/GridColumnMenuCheckboxFilter.js +14 -18
- package/dist/npm/columnMenu/GridColumnMenuFilter.js +445 -125
- package/dist/npm/columnMenu/GridColumnMenuFilterCell.js +79 -102
- package/dist/npm/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
- package/dist/npm/columnMenu/GridColumnMenuFilterOperators.js +79 -0
- package/dist/npm/columnMenu/GridColumnMenuItem.js +2 -2
- package/dist/npm/columnMenu/GridColumnMenuItemContent.js +1 -1
- package/dist/npm/columnMenu/GridColumnMenuItemGroup.js +1 -1
- package/dist/npm/columnMenu/GridColumnMenuSort.js +5 -4
- package/dist/npm/drag/ColumnDraggable.js +1 -1
- package/dist/npm/drag/CommonDragLogic.js +2 -2
- package/dist/npm/drag/GroupingIndicator.js +3 -3
- package/dist/npm/filterCommon.d.ts +1 -1
- package/dist/npm/filterCommon.js +19 -12
- package/dist/npm/footer/Footer.js +6 -6
- package/dist/npm/footer/FooterRow.js +2 -2
- package/dist/npm/header/FilterRow.js +7 -7
- package/dist/npm/header/GridHeaderCell.js +1 -1
- package/dist/npm/header/GridHeaderSelectionCell.js +1 -1
- package/dist/npm/header/GroupPanel.js +1 -1
- package/dist/npm/header/Header.js +8 -8
- package/dist/npm/header/HeaderRow.js +2 -2
- package/dist/npm/interfaces/GridSortSettings.js +11 -8
- package/dist/npm/main.js +6 -2
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/rows/GridDetailRow.d.ts +2 -1
- package/dist/npm/rows/GridRow.js +2 -2
- package/dist/npm/utils/index.js +6 -5
- package/package.json +20 -14
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from './additionalTypes';
|
|
2
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
3
|
+
declare type DefaultMethods<V> = {
|
|
4
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
interface GridNavState {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
interface GridNavData {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @hidden
|
|
18
|
+
*/
|
|
19
|
+
export interface GridNavMethods {
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
onKeyDown: (event: any) => any;
|
|
22
|
+
onFocus: (event: any) => any;
|
|
23
|
+
onNavMount: (event: any) => any;
|
|
24
|
+
onNavigationAction: (opitons: any) => any;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @hidden
|
|
28
|
+
*/
|
|
29
|
+
export interface GridNavComputed {
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
wrapperClass: object;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export interface GridNavAll extends GridNavMethods, GridNavState, GridNavData, GridNavComputed, Vue2type {
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
*/
|
|
41
|
+
declare const GridNavVue2: ComponentOptions<Vue2type, DefaultData<GridNavData>, DefaultMethods<GridNavAll>, GridNavComputed, RecordPropsDefinition<{}>>;
|
|
42
|
+
/**
|
|
43
|
+
* @hidden
|
|
44
|
+
*/
|
|
45
|
+
declare const GridNav: DefineComponent<{}, any, GridNavData, GridNavComputed, GridNavMethods, {}, {}, {}, string, {}, {}, {}>;
|
|
46
|
+
export { GridNav, GridNavVue2 };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
var isV3 = allVue.version && allVue.version[0] === '3';
|
|
6
|
+
import { getDefaultSlots, noop } from '@progress/kendo-vue-common';
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var GridNavVue2 = {
|
|
12
|
+
name: 'KendoGridNav',
|
|
13
|
+
props: {
|
|
14
|
+
currentData: Array
|
|
15
|
+
},
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
setup: !isV3 ? undefined : function () {
|
|
18
|
+
var v3 = !!isV3;
|
|
19
|
+
return {
|
|
20
|
+
v3: v3
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
inject: {
|
|
24
|
+
onNavKeyDown: {
|
|
25
|
+
default: noop
|
|
26
|
+
},
|
|
27
|
+
onNavFocus: {
|
|
28
|
+
default: noop
|
|
29
|
+
},
|
|
30
|
+
onNavMount: {
|
|
31
|
+
default: noop
|
|
32
|
+
},
|
|
33
|
+
handleDispatchFocus: {
|
|
34
|
+
default: noop
|
|
35
|
+
},
|
|
36
|
+
kbContext: {
|
|
37
|
+
default: null
|
|
38
|
+
},
|
|
39
|
+
navigation: {
|
|
40
|
+
default: null
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
mounted: function mounted() {
|
|
44
|
+
this.onNavMount({
|
|
45
|
+
scope: this.$el || undefined
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
updated: function updated() {
|
|
49
|
+
this.onNavMount({
|
|
50
|
+
scope: this.$el || undefined
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
methods: {
|
|
54
|
+
onKeyDown: function onKeyDown(event) {
|
|
55
|
+
this.onNavKeyDown(event, {
|
|
56
|
+
navigation: this.navigation,
|
|
57
|
+
kbContext: this.kbContext,
|
|
58
|
+
onNavigationAction: this.onNavigationAction
|
|
59
|
+
}); // const {mode, cell} = getSelectionOptions(this.$props.selectable);
|
|
60
|
+
|
|
61
|
+
this.$emit('keydown', {
|
|
62
|
+
dataItems: this.getLeafDataItems(),
|
|
63
|
+
// mode,
|
|
64
|
+
// cell,
|
|
65
|
+
componentId: this._gridId,
|
|
66
|
+
selectedField: this.$props.selectedField,
|
|
67
|
+
event: event
|
|
68
|
+
}); // as GridNavigationActionEvent
|
|
69
|
+
},
|
|
70
|
+
onFocus: function onFocus(event) {
|
|
71
|
+
this.onNavFocus(event, {
|
|
72
|
+
kbContext: this.kbContext
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
onNavigationAction: function onNavigationAction(options) {
|
|
76
|
+
this.$emit('navigationaction', {
|
|
77
|
+
focusElement: options.focusElement,
|
|
78
|
+
event: options.event
|
|
79
|
+
}); // as GridNavigationActionEvent
|
|
80
|
+
},
|
|
81
|
+
getLeafDataItems: function getLeafDataItems() {
|
|
82
|
+
return this.$props.currentData.filter(function (item) {
|
|
83
|
+
return item.rowType === 'data';
|
|
84
|
+
}).map(function (item) {
|
|
85
|
+
return item.dataItem;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
// @ts-ignore
|
|
90
|
+
render: function render(createElement) {
|
|
91
|
+
var h = gh || createElement;
|
|
92
|
+
var defaultSlots = getDefaultSlots(this);
|
|
93
|
+
return h("div", {
|
|
94
|
+
onKeydown: this.onKeyDown,
|
|
95
|
+
on: this.v3 ? undefined : {
|
|
96
|
+
"keydown": this.onKeyDown,
|
|
97
|
+
"focusin": this.onFocus
|
|
98
|
+
},
|
|
99
|
+
onFocusin: this.onFocus,
|
|
100
|
+
"data-keyboardnavscope": true,
|
|
101
|
+
attrs: this.v3 ? undefined : {
|
|
102
|
+
"data-keyboardnavscope": true
|
|
103
|
+
}
|
|
104
|
+
}, [defaultSlots]);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* @hidden
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
var GridNav = GridNavVue2;
|
|
112
|
+
export { GridNav, GridNavVue2 };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
2
|
+
declare type DefaultMethods<V> = {
|
|
3
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
4
|
+
};
|
|
5
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from './additionalTypes';
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
declare let GridNoRecordsVue2: ComponentOptions<Vue2type, DefaultData<{}>, DefaultMethods<{}>, {}, RecordPropsDefinition<{}>>;
|
|
10
|
+
/**
|
|
11
|
+
* Represents the GridNoRecords component which is rendered
|
|
12
|
+
* when the `data` property of the Grid is empty or `null`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx-no-run
|
|
16
|
+
* <div id="app">
|
|
17
|
+
* <Grid
|
|
18
|
+
* :data-items="products"
|
|
19
|
+
* :columns="columns">
|
|
20
|
+
* <grid-norecords>
|
|
21
|
+
* There is no data available custom
|
|
22
|
+
* </grid-norecords>
|
|
23
|
+
* </Grid>
|
|
24
|
+
* </div>
|
|
25
|
+
* <script>
|
|
26
|
+
* Vue.component('Grid', Grid);
|
|
27
|
+
* Vue.component('grid-norecords', GridNoRecords);
|
|
28
|
+
* new Vue({
|
|
29
|
+
* el: '#app',
|
|
30
|
+
* data: function () {
|
|
31
|
+
* return {
|
|
32
|
+
* products: [
|
|
33
|
+
* { 'foo': 'A1', 'bar': 'B1' },
|
|
34
|
+
* { 'foo': 'A2', 'bar': 'B2' },
|
|
35
|
+
* { 'foo': 'A3', 'bar': 'B2' }
|
|
36
|
+
* ],
|
|
37
|
+
* columns: [
|
|
38
|
+
* { field: 'foo'},
|
|
39
|
+
* { field: 'bar'}
|
|
40
|
+
* ]
|
|
41
|
+
* };
|
|
42
|
+
* }
|
|
43
|
+
* });
|
|
44
|
+
* </script>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* Represents the default `GridNoRecords` component.
|
|
49
|
+
*/
|
|
50
|
+
declare const GridNoRecords: DefineComponent<{}, any, {}, {}, {}, {}, {}, {}, string, {}, {}, {}>;
|
|
51
|
+
export { GridNoRecords, GridNoRecordsVue2 };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
var isV3 = allVue.version && allVue.version[0] === '3';
|
|
6
|
+
var inject = allVue.inject;
|
|
7
|
+
import { provideLocalizationService } from '@progress/kendo-vue-intl';
|
|
8
|
+
import { messages, noRecords } from './messages.js';
|
|
9
|
+
import { getDefaultSlots } from '@progress/kendo-vue-common';
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
var GridNoRecordsVue2 = {
|
|
15
|
+
name: 'GridNoRecords',
|
|
16
|
+
inject: {
|
|
17
|
+
kendoLocalizationService: {
|
|
18
|
+
default: null
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
setup: !isV3 ? undefined : function () {
|
|
23
|
+
var v3 = !!isV3;
|
|
24
|
+
var kendoLocalizationService = inject('kendoLocalizationService', {});
|
|
25
|
+
return {
|
|
26
|
+
v3: v3,
|
|
27
|
+
kendoLocalizationService: kendoLocalizationService
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
render: function render(createElement) {
|
|
32
|
+
var h = gh || createElement;
|
|
33
|
+
var defaultSlot = getDefaultSlots(this);
|
|
34
|
+
var localizationService = provideLocalizationService(this);
|
|
35
|
+
var noRecordsMessage = localizationService.toLanguageString(noRecords, messages[noRecords]);
|
|
36
|
+
return defaultSlot ? h("div", [defaultSlot]) // @ts-ignore
|
|
37
|
+
: this.v3 ? noRecordsMessage : this._v(noRecordsMessage);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Represents the GridNoRecords component which is rendered
|
|
42
|
+
* when the `data` property of the Grid is empty or `null`.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx-no-run
|
|
46
|
+
* <div id="app">
|
|
47
|
+
* <Grid
|
|
48
|
+
* :data-items="products"
|
|
49
|
+
* :columns="columns">
|
|
50
|
+
* <grid-norecords>
|
|
51
|
+
* There is no data available custom
|
|
52
|
+
* </grid-norecords>
|
|
53
|
+
* </Grid>
|
|
54
|
+
* </div>
|
|
55
|
+
* <script>
|
|
56
|
+
* Vue.component('Grid', Grid);
|
|
57
|
+
* Vue.component('grid-norecords', GridNoRecords);
|
|
58
|
+
* new Vue({
|
|
59
|
+
* el: '#app',
|
|
60
|
+
* data: function () {
|
|
61
|
+
* return {
|
|
62
|
+
* products: [
|
|
63
|
+
* { 'foo': 'A1', 'bar': 'B1' },
|
|
64
|
+
* { 'foo': 'A2', 'bar': 'B2' },
|
|
65
|
+
* { 'foo': 'A3', 'bar': 'B2' }
|
|
66
|
+
* ],
|
|
67
|
+
* columns: [
|
|
68
|
+
* { field: 'foo'},
|
|
69
|
+
* { field: 'bar'}
|
|
70
|
+
* ]
|
|
71
|
+
* };
|
|
72
|
+
* }
|
|
73
|
+
* });
|
|
74
|
+
* </script>
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Represents the default `GridNoRecords` component.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
var GridNoRecords = GridNoRecordsVue2;
|
|
83
|
+
export { GridNoRecords, GridNoRecordsVue2 };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { GridToolbarProps } from './interfaces/GridToolbarProps';
|
|
2
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
3
|
+
declare type DefaultMethods<V> = {
|
|
4
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
5
|
+
};
|
|
6
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from './additionalTypes';
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
declare let GridToolbarVue2: ComponentOptions<Vue2type, DefaultData<{}>, DefaultMethods<{}>, {}, RecordPropsDefinition<GridToolbarProps>>;
|
|
11
|
+
/**
|
|
12
|
+
* Represents the GridToolbar component.
|
|
13
|
+
*
|
|
14
|
+
* ```tsx-no-run
|
|
15
|
+
* <div id="app">
|
|
16
|
+
* <Grid
|
|
17
|
+
* :data-items="products"
|
|
18
|
+
* :columns="columns">
|
|
19
|
+
* <grid-toolbar >
|
|
20
|
+
* <button title="Add new" class="k-button k-primary" @click='insert' >
|
|
21
|
+
* Add new
|
|
22
|
+
* </button>
|
|
23
|
+
* <button v-if="hasItemsInEdit"
|
|
24
|
+
* title="Cancel current changes"
|
|
25
|
+
* class="k-button"
|
|
26
|
+
* @click="cancelChanges">
|
|
27
|
+
* Cancel current changes
|
|
28
|
+
* </button>
|
|
29
|
+
* </grid-toolbar>
|
|
30
|
+
* </Grid>
|
|
31
|
+
* </div>
|
|
32
|
+
* <script>
|
|
33
|
+
* Vue.component('Grid', Grid);
|
|
34
|
+
* Vue.component('grid-toolbar', GridToolbar);
|
|
35
|
+
* new Vue({
|
|
36
|
+
* el: '#app',
|
|
37
|
+
* data: function () {
|
|
38
|
+
* return {
|
|
39
|
+
* products: [
|
|
40
|
+
* { 'foo': 'A1', 'bar': 'B1' },
|
|
41
|
+
* { 'foo': 'A2', 'bar': 'B2' },
|
|
42
|
+
* { 'foo': 'A3', 'bar': 'B2' }
|
|
43
|
+
* ],
|
|
44
|
+
* columns: [
|
|
45
|
+
* { field: 'foo'},
|
|
46
|
+
* { field: 'bar'}
|
|
47
|
+
* ]
|
|
48
|
+
* };
|
|
49
|
+
* }
|
|
50
|
+
* });
|
|
51
|
+
* </script>
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
*
|
|
55
|
+
* ### props <span class='code'>[GridToolbarProps]({% slug api_grid_toolbarprops %})</span>
|
|
56
|
+
*/
|
|
57
|
+
declare const GridToolbar: DefineComponent<GridToolbarProps, any, {}, {}, {}, {}, {}, {}, string, GridToolbarProps, GridToolbarProps, {}>;
|
|
58
|
+
export { GridToolbar, GridToolbarVue2 };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
var isV3 = allVue.version && allVue.version[0] === '3';
|
|
6
|
+
import { getDefaultSlots } from '@progress/kendo-vue-common';
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var GridToolbarVue2 = {
|
|
12
|
+
name: 'GridToolbar',
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
setup: !isV3 ? undefined : function () {
|
|
15
|
+
var v3 = !!isV3;
|
|
16
|
+
return {
|
|
17
|
+
v3: v3
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
render: function render(createElement) {
|
|
22
|
+
var h = gh || createElement;
|
|
23
|
+
var defaultSlot = getDefaultSlots(this);
|
|
24
|
+
return h("div", {
|
|
25
|
+
"class": "k-toolbar k-grid-toolbar"
|
|
26
|
+
}, [defaultSlot]);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Represents the GridToolbar component.
|
|
31
|
+
*
|
|
32
|
+
* ```tsx-no-run
|
|
33
|
+
* <div id="app">
|
|
34
|
+
* <Grid
|
|
35
|
+
* :data-items="products"
|
|
36
|
+
* :columns="columns">
|
|
37
|
+
* <grid-toolbar >
|
|
38
|
+
* <button title="Add new" class="k-button k-primary" @click='insert' >
|
|
39
|
+
* Add new
|
|
40
|
+
* </button>
|
|
41
|
+
* <button v-if="hasItemsInEdit"
|
|
42
|
+
* title="Cancel current changes"
|
|
43
|
+
* class="k-button"
|
|
44
|
+
* @click="cancelChanges">
|
|
45
|
+
* Cancel current changes
|
|
46
|
+
* </button>
|
|
47
|
+
* </grid-toolbar>
|
|
48
|
+
* </Grid>
|
|
49
|
+
* </div>
|
|
50
|
+
* <script>
|
|
51
|
+
* Vue.component('Grid', Grid);
|
|
52
|
+
* Vue.component('grid-toolbar', GridToolbar);
|
|
53
|
+
* new Vue({
|
|
54
|
+
* el: '#app',
|
|
55
|
+
* data: function () {
|
|
56
|
+
* return {
|
|
57
|
+
* products: [
|
|
58
|
+
* { 'foo': 'A1', 'bar': 'B1' },
|
|
59
|
+
* { 'foo': 'A2', 'bar': 'B2' },
|
|
60
|
+
* { 'foo': 'A3', 'bar': 'B2' }
|
|
61
|
+
* ],
|
|
62
|
+
* columns: [
|
|
63
|
+
* { field: 'foo'},
|
|
64
|
+
* { field: 'bar'}
|
|
65
|
+
* ]
|
|
66
|
+
* };
|
|
67
|
+
* }
|
|
68
|
+
* });
|
|
69
|
+
* </script>
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
*
|
|
73
|
+
* ### props <span class='code'>[GridToolbarProps]({% slug api_grid_toolbarprops %})</span>
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
var GridToolbar = GridToolbarVue2;
|
|
77
|
+
export { GridToolbar, GridToolbarVue2 };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type ScrollMode = 'none' | 'scrollable' | 'virtual';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Page } from '@progress/kendo-vue-data-tools';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export declare class VirtualScroll {
|
|
6
|
+
container: any;
|
|
7
|
+
table: any;
|
|
8
|
+
containerHeight: number;
|
|
9
|
+
topCacheCount: number;
|
|
10
|
+
attendedSkip: number;
|
|
11
|
+
propsSkip: number;
|
|
12
|
+
total: number;
|
|
13
|
+
scrollableVirtual: boolean;
|
|
14
|
+
realSkip: number;
|
|
15
|
+
pageSize: number;
|
|
16
|
+
PageChange: (page: Page, event: any) => void;
|
|
17
|
+
tableBody: any;
|
|
18
|
+
heightContainer: any;
|
|
19
|
+
fixedScroll: boolean;
|
|
20
|
+
askedSkip: number | undefined;
|
|
21
|
+
private prevScrollPos;
|
|
22
|
+
private syncTimeout;
|
|
23
|
+
private tableTranslate;
|
|
24
|
+
private scrollSyncing;
|
|
25
|
+
constructor(cached: boolean, topCacheCount: number);
|
|
26
|
+
/**
|
|
27
|
+
* @return - The row heights in an array.
|
|
28
|
+
*/
|
|
29
|
+
get rowHeights(): Array<{
|
|
30
|
+
line: number;
|
|
31
|
+
acc: number;
|
|
32
|
+
}>;
|
|
33
|
+
changePage(skip: number, e: any): void;
|
|
34
|
+
translate(dY: number): void;
|
|
35
|
+
syncScroll(): void;
|
|
36
|
+
reset(): void;
|
|
37
|
+
localScrollUp(e: any): void;
|
|
38
|
+
localScrollDown(e: any): void;
|
|
39
|
+
scrollNonStrict(e: any): void;
|
|
40
|
+
scrollHandler(e: any): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
var VirtualScroll = /** @class */ (function () {
|
|
5
|
+
function VirtualScroll(cached, topCacheCount) {
|
|
6
|
+
this.containerHeight = 0;
|
|
7
|
+
this.topCacheCount = 0; // 4;
|
|
8
|
+
this.attendedSkip = 0; // -4;
|
|
9
|
+
this.propsSkip = 0;
|
|
10
|
+
this.total = 0;
|
|
11
|
+
this.scrollableVirtual = false;
|
|
12
|
+
this.realSkip = 0;
|
|
13
|
+
this.pageSize = 0;
|
|
14
|
+
this.heightContainer = null;
|
|
15
|
+
this.fixedScroll = false;
|
|
16
|
+
this.askedSkip = undefined;
|
|
17
|
+
this.prevScrollPos = 0;
|
|
18
|
+
this.tableTranslate = 0;
|
|
19
|
+
this.scrollSyncing = false;
|
|
20
|
+
if (cached) {
|
|
21
|
+
this.topCacheCount = topCacheCount;
|
|
22
|
+
this.attendedSkip = -this.topCacheCount;
|
|
23
|
+
}
|
|
24
|
+
this.scrollHandler = this.scrollHandler.bind(this);
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(VirtualScroll.prototype, "rowHeights", {
|
|
27
|
+
/**
|
|
28
|
+
* @return - The row heights in an array.
|
|
29
|
+
*/
|
|
30
|
+
get: function () {
|
|
31
|
+
var result = [];
|
|
32
|
+
var allRows = this.tableBody && this.tableBody.children || [];
|
|
33
|
+
var accumulate = 0;
|
|
34
|
+
for (var i = 0; i < allRows.length; i++) {
|
|
35
|
+
if (allRows[i].className.indexOf('k-grouping-row') > -1) {
|
|
36
|
+
accumulate += allRows[i].scrollHeight;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (allRows[i].className.indexOf('k-detail-row') > -1) {
|
|
40
|
+
result[result.length - 1].line += allRows[i].scrollHeight;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
result.push({
|
|
44
|
+
line: allRows[i].scrollHeight,
|
|
45
|
+
acc: accumulate
|
|
46
|
+
});
|
|
47
|
+
accumulate = 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (allRows.length && !result.length) {
|
|
51
|
+
result.push({
|
|
52
|
+
line: allRows[0].scrollHeight,
|
|
53
|
+
acc: accumulate
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
},
|
|
58
|
+
enumerable: false,
|
|
59
|
+
configurable: true
|
|
60
|
+
});
|
|
61
|
+
VirtualScroll.prototype.changePage = function (skip, e) {
|
|
62
|
+
this.attendedSkip = skip - this.topCacheCount;
|
|
63
|
+
this.PageChange({
|
|
64
|
+
skip: Math.max(0, skip - this.topCacheCount),
|
|
65
|
+
take: this.pageSize
|
|
66
|
+
}, e);
|
|
67
|
+
};
|
|
68
|
+
VirtualScroll.prototype.translate = function (dY) {
|
|
69
|
+
this.tableTranslate = dY;
|
|
70
|
+
if (this.scrollableVirtual && this.table) {
|
|
71
|
+
this.table.style.transform = 'translateY(' + dY + 'px)';
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
VirtualScroll.prototype.syncScroll = function () {
|
|
75
|
+
if (!this.scrollableVirtual || !this.container) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.syncTimeout = null;
|
|
79
|
+
var scrollTop = this.container.scrollTop;
|
|
80
|
+
var containerHeight = this.containerHeight; // = this.container.scrollHeight;
|
|
81
|
+
var rowHeights = this.rowHeights;
|
|
82
|
+
var percentage = (scrollTop - this.tableTranslate) / rowHeights[0].line;
|
|
83
|
+
var targetFloorScrollPosition = Math.floor((containerHeight) * (this.propsSkip + percentage) / this.total);
|
|
84
|
+
if (this.container.scrollTop !== (this.prevScrollPos = targetFloorScrollPosition)) {
|
|
85
|
+
this.scrollSyncing = true;
|
|
86
|
+
this.container.scrollTop = (this.prevScrollPos = targetFloorScrollPosition);
|
|
87
|
+
}
|
|
88
|
+
this.translate(this.tableTranslate + targetFloorScrollPosition - scrollTop);
|
|
89
|
+
};
|
|
90
|
+
VirtualScroll.prototype.reset = function () {
|
|
91
|
+
this.scrollSyncing = true;
|
|
92
|
+
if (this.fixedScroll) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (this.container) {
|
|
96
|
+
this.container.scrollTop = 0;
|
|
97
|
+
}
|
|
98
|
+
this.translate(0);
|
|
99
|
+
};
|
|
100
|
+
VirtualScroll.prototype.localScrollUp = function (e) {
|
|
101
|
+
if (!this.container) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
var heights = this.rowHeights;
|
|
105
|
+
var scrollTop = this.container.scrollTop;
|
|
106
|
+
var targetTranslate = this.tableTranslate;
|
|
107
|
+
var rowsCount = 0;
|
|
108
|
+
var additionalOnTop = scrollTop - targetTranslate;
|
|
109
|
+
if (additionalOnTop > 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip)
|
|
113
|
+
&& this.propsSkip - rowsCount > 0 &&
|
|
114
|
+
!(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {
|
|
115
|
+
targetTranslate -= heights[heights.length - 1 - rowsCount].line +
|
|
116
|
+
heights[heights.length - 1 - rowsCount].acc;
|
|
117
|
+
rowsCount++;
|
|
118
|
+
}
|
|
119
|
+
if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {
|
|
120
|
+
// allows local scrolling up, when top caching is disabled
|
|
121
|
+
// for variable heights 'topCacheCount' should be atleast 1 to avoid flickering
|
|
122
|
+
targetTranslate = Math.max(targetTranslate - heights[0].line, 0);
|
|
123
|
+
rowsCount = 1;
|
|
124
|
+
}
|
|
125
|
+
if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {
|
|
126
|
+
this.translate(0);
|
|
127
|
+
this.changePage(0, e);
|
|
128
|
+
this.container.scrollTop = 0;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (targetTranslate > scrollTop) {
|
|
132
|
+
targetTranslate = scrollTop;
|
|
133
|
+
// need to handle these cases
|
|
134
|
+
// if the item height is not available:
|
|
135
|
+
// floor the translate to beginning of the item in absolute value
|
|
136
|
+
}
|
|
137
|
+
if (targetTranslate !== this.tableTranslate) {
|
|
138
|
+
this.translate(targetTranslate);
|
|
139
|
+
this.changePage(this.propsSkip - rowsCount, e);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
VirtualScroll.prototype.localScrollDown = function (e) {
|
|
143
|
+
if (!this.container) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
var heights = this.rowHeights;
|
|
147
|
+
var scrollTop = this.container.scrollTop;
|
|
148
|
+
var targetTranslate = this.tableTranslate;
|
|
149
|
+
var rowsCount = 0;
|
|
150
|
+
while (rowsCount < heights.length - this.topCacheCount &&
|
|
151
|
+
!(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {
|
|
152
|
+
targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;
|
|
153
|
+
rowsCount++;
|
|
154
|
+
}
|
|
155
|
+
if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {
|
|
156
|
+
this.translate(targetTranslate);
|
|
157
|
+
this.changePage(this.total - 1, e);
|
|
158
|
+
}
|
|
159
|
+
else if (targetTranslate !== this.tableTranslate) {
|
|
160
|
+
this.translate(targetTranslate);
|
|
161
|
+
this.changePage(this.propsSkip + rowsCount, e);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
VirtualScroll.prototype.scrollNonStrict = function (e) {
|
|
165
|
+
var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);
|
|
166
|
+
var rowIndex = Math.floor(floatRowIndex);
|
|
167
|
+
if (rowIndex >= this.total) {
|
|
168
|
+
rowIndex = this.total - 1;
|
|
169
|
+
}
|
|
170
|
+
var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);
|
|
171
|
+
var microAdjust = 0;
|
|
172
|
+
var rowIndexOffset = rowIndex - this.propsSkip;
|
|
173
|
+
var heights = this.rowHeights;
|
|
174
|
+
if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {
|
|
175
|
+
microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);
|
|
176
|
+
}
|
|
177
|
+
else if (rowIndexOffset === -1) {
|
|
178
|
+
microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);
|
|
179
|
+
}
|
|
180
|
+
this.translate(microAdjust + this.containerHeight * floatRowIndex / this.total);
|
|
181
|
+
this.changePage(rowIndex, e);
|
|
182
|
+
};
|
|
183
|
+
VirtualScroll.prototype.scrollHandler = function (e) {
|
|
184
|
+
if (!this.scrollableVirtual) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (this.scrollSyncing || !this.container || !this.table) {
|
|
188
|
+
this.scrollSyncing = false;
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
var grid = this;
|
|
192
|
+
clearTimeout(this.syncTimeout);
|
|
193
|
+
this.syncTimeout = window.setTimeout(function () { grid.syncScroll(); }, 200);
|
|
194
|
+
var scrollTop = this.container.scrollTop;
|
|
195
|
+
var prev = this.prevScrollPos;
|
|
196
|
+
this.prevScrollPos = scrollTop;
|
|
197
|
+
if (this.askedSkip !== undefined) {
|
|
198
|
+
this.translate(this.containerHeight * this.askedSkip / this.total);
|
|
199
|
+
this.changePage(this.askedSkip, e);
|
|
200
|
+
this.prevScrollPos = scrollTop;
|
|
201
|
+
this.askedSkip = undefined;
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {
|
|
205
|
+
this.localScrollUp(e);
|
|
206
|
+
}
|
|
207
|
+
else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {
|
|
208
|
+
this.localScrollDown(e);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this.scrollNonStrict(e);
|
|
212
|
+
}
|
|
213
|
+
this.prevScrollPos = scrollTop;
|
|
214
|
+
};
|
|
215
|
+
return VirtualScroll;
|
|
216
|
+
}());
|
|
217
|
+
export { VirtualScroll };
|