handsontable 14.1.0 → 14.2.0-next-7ae341f-20240229
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/core/_base.js +12 -0
- package/3rdparty/walkontable/src/core/_base.mjs +12 -0
- package/3rdparty/walkontable/src/scroll.js +131 -98
- package/3rdparty/walkontable/src/scroll.mjs +133 -100
- package/3rdparty/walkontable/src/selection/border/border.js +3 -3
- package/3rdparty/walkontable/src/selection/border/border.mjs +3 -3
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +26 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +26 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +26 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +26 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +20 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +20 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +20 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +20 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +20 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +20 -0
- package/3rdparty/walkontable/src/table.js +2 -0
- package/3rdparty/walkontable/src/table.mjs +2 -0
- package/3rdparty/walkontable/src/viewport.js +9 -0
- package/3rdparty/walkontable/src/viewport.mjs +10 -1
- package/CHANGELOG.md +36 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/index.js +6 -0
- package/core/index.mjs +2 -1
- package/core/viewportScroll/index.js +65 -0
- package/core/viewportScroll/index.mjs +61 -0
- package/core/viewportScroll/scrollStrategies/columnHeaderScroll.js +20 -0
- package/core/viewportScroll/scrollStrategies/columnHeaderScroll.mjs +16 -0
- package/core/viewportScroll/scrollStrategies/cornerHeaderScroll.js +14 -0
- package/core/viewportScroll/scrollStrategies/cornerHeaderScroll.mjs +10 -0
- package/core/viewportScroll/scrollStrategies/multipleScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/multipleScroll.mjs +11 -0
- package/core/viewportScroll/scrollStrategies/noncontiguousScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/noncontiguousScroll.mjs +11 -0
- package/core/viewportScroll/scrollStrategies/rowHeaderScroll.js +20 -0
- package/core/viewportScroll/scrollStrategies/rowHeaderScroll.mjs +16 -0
- package/core/viewportScroll/scrollStrategies/singleScroll.js +46 -0
- package/core/viewportScroll/scrollStrategies/singleScroll.mjs +42 -0
- package/core.d.ts +1 -1
- package/core.js +11 -52
- package/core.mjs +12 -53
- package/dataMap/metaManager/index.js +1 -1
- package/dataMap/metaManager/index.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +6 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +6 -1
- package/dataMap/metaManager/metaSchema.js +36 -12
- package/dataMap/metaManager/metaSchema.mjs +36 -12
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +2996 -1928
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +42 -42
- package/dist/handsontable.js +2998 -1930
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.js +130 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/hr-HR.js +167 -0
- package/dist/languages/hr-HR.min.js +1 -0
- package/editorManager.js +15 -4
- package/editorManager.mjs +15 -4
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +2 -2
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/checkboxEditor/checkboxEditor.js +5 -4
- package/editors/checkboxEditor/checkboxEditor.mjs +5 -4
- package/editors/dateEditor/dateEditor.js +1 -1
- package/editors/dateEditor/dateEditor.mjs +1 -1
- package/editors/dropdownEditor/dropdownEditor.js +1 -1
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/handsontableEditor/handsontableEditor.js +1 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +1 -1
- package/editors/selectEditor/selectEditor.js +1 -1
- package/editors/selectEditor/selectEditor.mjs +1 -1
- package/editors/textEditor/textEditor.js +1 -2
- package/editors/textEditor/textEditor.mjs +1 -2
- package/editors/timeEditor/timeEditor.js +1 -1
- package/editors/timeEditor/timeEditor.mjs +1 -1
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/moves.js +86 -0
- package/helpers/moves.mjs +82 -0
- package/i18n/languages/hr-HR.js +96 -0
- package/i18n/languages/hr-HR.mjs +90 -0
- package/i18n/languages/index.js +2 -0
- package/i18n/languages/index.mjs +2 -1
- package/languages/all.js +130 -25
- package/languages/hr-HR.js +167 -0
- package/languages/hr-HR.mjs +92 -0
- package/languages/index.js +130 -25
- package/languages/index.mjs +2 -1
- package/package.json +11 -1
- package/pluginHooks.d.ts +4 -2
- package/pluginHooks.js +33 -3
- package/pluginHooks.mjs +33 -3
- package/plugins/autoColumnSize/autoColumnSize.js +6 -1
- package/plugins/autoColumnSize/autoColumnSize.mjs +6 -1
- package/plugins/autoRowSize/autoRowSize.js +5 -0
- package/plugins/autoRowSize/autoRowSize.mjs +5 -0
- package/plugins/autofill/autofill.js +3 -2
- package/plugins/autofill/autofill.mjs +3 -2
- package/plugins/dropdownMenu/dropdownMenu.js +58 -4
- package/plugins/dropdownMenu/dropdownMenu.mjs +58 -4
- package/plugins/filters/component/value.js +51 -5
- package/plugins/filters/component/value.mjs +51 -5
- package/plugins/filters/utils.js +1 -1
- package/plugins/filters/utils.mjs +1 -1
- package/plugins/formulas/formulas.js +10 -1
- package/plugins/formulas/formulas.mjs +10 -1
- package/plugins/formulas/indexSyncer/axisSyncer.js +3 -75
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -75
- package/plugins/manualColumnResize/manualColumnResize.js +3 -0
- package/plugins/manualColumnResize/manualColumnResize.mjs +3 -0
- package/plugins/mergeCells/cellsCollection.js +1 -1
- package/plugins/mergeCells/cellsCollection.mjs +1 -1
- package/plugins/mergeCells/mergeCells.js +30 -0
- package/plugins/mergeCells/mergeCells.mjs +30 -0
- package/plugins/undoRedo/undoRedo.js +61 -14
- package/plugins/undoRedo/undoRedo.mjs +61 -14
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -1
- package/renderers/baseRenderer/baseRenderer.js +1 -1
- package/renderers/baseRenderer/baseRenderer.mjs +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +36 -8
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +36 -8
- package/renderers/dateRenderer/dateRenderer.js +1 -1
- package/renderers/dateRenderer/dateRenderer.mjs +1 -1
- package/renderers/dropdownRenderer/dropdownRenderer.js +1 -1
- package/renderers/dropdownRenderer/dropdownRenderer.mjs +1 -1
- package/renderers/handsontableRenderer/handsontableRenderer.js +1 -1
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +1 -1
- package/renderers/htmlRenderer/htmlRenderer.js +1 -1
- package/renderers/htmlRenderer/htmlRenderer.mjs +1 -1
- package/renderers/numericRenderer/index.js +2 -1
- package/renderers/numericRenderer/index.mjs +1 -1
- package/renderers/numericRenderer/numericRenderer.js +28 -13
- package/renderers/numericRenderer/numericRenderer.mjs +27 -13
- package/renderers/passwordRenderer/passwordRenderer.js +1 -1
- package/renderers/passwordRenderer/passwordRenderer.mjs +1 -1
- package/renderers/selectRenderer/selectRenderer.js +1 -1
- package/renderers/selectRenderer/selectRenderer.mjs +1 -1
- package/renderers/textRenderer/textRenderer.js +1 -1
- package/renderers/textRenderer/textRenderer.mjs +1 -1
- package/renderers/timeRenderer/timeRenderer.js +1 -1
- package/renderers/timeRenderer/timeRenderer.mjs +1 -1
- package/selection/mouseEventHandler.js +4 -0
- package/selection/mouseEventHandler.mjs +4 -0
- package/selection/selection.js +64 -5
- package/selection/selection.mjs +64 -5
- package/shortcuts/recorder.js +27 -8
- package/shortcuts/recorder.mjs +27 -8
- package/tableView.js +86 -5
- package/tableView.mjs +87 -6
- package/utils/autoResize.js +0 -1
- package/utils/autoResize.mjs +0 -1
- package/utils/ghostTable.js +6 -6
- package/utils/ghostTable.mjs +6 -6
- package/utils/parseTable.js +9 -1
- package/utils/parseTable.mjs +9 -1
@@ -1,39 +1,42 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
3
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
2
4
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
3
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
4
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
5
8
|
import { innerHeight, innerWidth, getScrollLeft, getScrollTop, offset } from "../../../helpers/dom/element.mjs";
|
6
9
|
/**
|
7
10
|
* @class Scroll
|
8
11
|
*/
|
12
|
+
var _getLastColumnIndex = /*#__PURE__*/new WeakSet();
|
13
|
+
var _getLastRowIndex = /*#__PURE__*/new WeakSet();
|
9
14
|
class Scroll {
|
10
15
|
/**
|
11
16
|
* @param {ScrollDao} dataAccessObject Tha data access object.
|
12
17
|
*/
|
13
18
|
constructor(dataAccessObject) {
|
14
19
|
/**
|
15
|
-
*
|
20
|
+
* Get last visible row based on virtual dom and how table is visible in browser window viewport.
|
16
21
|
*
|
17
|
-
* @
|
18
|
-
* @
|
22
|
+
* @param {number} lastRowIndex The last visible row index.
|
23
|
+
* @returns {number}
|
19
24
|
*/
|
20
|
-
|
25
|
+
_classPrivateMethodInitSpec(this, _getLastRowIndex);
|
21
26
|
/**
|
22
|
-
*
|
23
|
-
* (left or right) for a next horizontal scroll.
|
27
|
+
* Get last visible column based on virtual dom and how table is visible in browser window viewport.
|
24
28
|
*
|
25
|
-
* @
|
26
|
-
* @
|
29
|
+
* @param {number} lastColumnIndex The last visible column index.
|
30
|
+
* @returns {number}
|
27
31
|
*/
|
28
|
-
|
32
|
+
_classPrivateMethodInitSpec(this, _getLastColumnIndex);
|
29
33
|
/**
|
30
|
-
*
|
31
|
-
* (top or bottom) for a next vertical scroll.
|
34
|
+
* The data access object.
|
32
35
|
*
|
33
36
|
* @protected
|
34
|
-
* @type {
|
37
|
+
* @type {ScrollDao}
|
35
38
|
*/
|
36
|
-
_defineProperty(this, "
|
39
|
+
_defineProperty(this, "dataAccessObject", void 0);
|
37
40
|
this.dataAccessObject = dataAccessObject;
|
38
41
|
}
|
39
42
|
|
@@ -71,8 +74,6 @@ class Scroll {
|
|
71
74
|
if (!drawn || !Number.isInteger(column) || column < 0 || column > totalColumns) {
|
72
75
|
return false;
|
73
76
|
}
|
74
|
-
const firstVisibleColumn = this.getFirstVisibleColumn();
|
75
|
-
const lastVisibleColumn = this.getLastVisibleColumn();
|
76
77
|
const autoSnapping = snapToRight === undefined && snapToLeft === undefined;
|
77
78
|
const {
|
78
79
|
fixedColumnsStart,
|
@@ -84,20 +85,17 @@ class Scroll {
|
|
84
85
|
if (autoSnapping && column < fixedColumnsStart) {
|
85
86
|
return false;
|
86
87
|
}
|
87
|
-
let result = false;
|
88
88
|
column = this.dataAccessObject.wtSettings.getSetting('onBeforeViewportScrollHorizontally', column);
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
89
|
+
if (!Number.isInteger(column) || column < 0 || column > totalColumns) {
|
90
|
+
return false;
|
91
|
+
}
|
92
|
+
const firstColumn = this.getFirstVisibleColumn();
|
93
|
+
const lastColumn = this.getLastVisibleColumn();
|
94
|
+
let result = false;
|
95
|
+
if (autoSnapping && (column < firstColumn || column > lastColumn) || !autoSnapping) {
|
95
96
|
// if there is at least one fully visible column determine the snapping direction based on
|
96
97
|
// that columns or by snapToRight/snapToLeft flags, if provided.
|
97
|
-
result = inlineStartOverlay.scrollTo(column, autoSnapping ? column
|
98
|
-
}
|
99
|
-
if (result) {
|
100
|
-
this.lastScrolledColumnPos = column;
|
98
|
+
result = inlineStartOverlay.scrollTo(column, autoSnapping ? column >= this.getLastPartiallyVisibleColumn() : snapToRight);
|
101
99
|
}
|
102
100
|
return result;
|
103
101
|
}
|
@@ -120,8 +118,6 @@ class Scroll {
|
|
120
118
|
if (!drawn || !Number.isInteger(row) || row < 0 || row > totalRows) {
|
121
119
|
return false;
|
122
120
|
}
|
123
|
-
const firstVisibleRow = this.getFirstVisibleRow();
|
124
|
-
const lastVisibleRow = this.getLastVisibleRow();
|
125
121
|
const autoSnapping = snapToTop === undefined && snapToBottom === undefined;
|
126
122
|
const {
|
127
123
|
fixedRowsBottom,
|
@@ -134,20 +130,17 @@ class Scroll {
|
|
134
130
|
if (autoSnapping && (row < fixedRowsTop || row > totalRows - fixedRowsBottom - 1)) {
|
135
131
|
return false;
|
136
132
|
}
|
137
|
-
let result = false;
|
138
133
|
row = this.dataAccessObject.wtSettings.getSetting('onBeforeViewportScrollVertically', row);
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
134
|
+
if (!Number.isInteger(row) || row < 0 || row > totalRows) {
|
135
|
+
return false;
|
136
|
+
}
|
137
|
+
const firstRow = this.getFirstVisibleRow();
|
138
|
+
const lastRow = this.getLastVisibleRow();
|
139
|
+
let result = false;
|
140
|
+
if (autoSnapping && (row < firstRow || row > lastRow) || !autoSnapping) {
|
145
141
|
// if there is at least one fully visible row determine the snapping direction based on
|
146
142
|
// that rows or by snapToTop/snapToBottom flags, if provided.
|
147
|
-
result = topOverlay.scrollTo(row, autoSnapping ? row
|
148
|
-
}
|
149
|
-
if (result) {
|
150
|
-
this.lastScrolledRowPos = row;
|
143
|
+
result = topOverlay.scrollTo(row, autoSnapping ? row >= this.getLastPartiallyVisibleRow() : snapToBottom);
|
151
144
|
}
|
152
145
|
return result;
|
153
146
|
}
|
@@ -167,33 +160,25 @@ class Scroll {
|
|
167
160
|
* @returns {number}
|
168
161
|
*/
|
169
162
|
getLastVisibleRow() {
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
// Return physical row - 1 (-2 because rangeEach gives row index + 1 - sumCellSizes requirements)
|
190
|
-
lastVisibleRow = row - 2;
|
191
|
-
break;
|
192
|
-
}
|
193
|
-
}
|
194
|
-
}
|
195
|
-
}
|
196
|
-
return lastVisibleRow;
|
163
|
+
return _classPrivateMethodGet(this, _getLastRowIndex, _getLastRowIndex2).call(this, this.dataAccessObject.wtTable.getLastVisibleRow());
|
164
|
+
}
|
165
|
+
|
166
|
+
/**
|
167
|
+
* Get first partially visible row based on virtual dom and how table is visible in browser window viewport.
|
168
|
+
*
|
169
|
+
* @returns {number}
|
170
|
+
*/
|
171
|
+
getFirstPartiallyVisibleRow() {
|
172
|
+
return this.dataAccessObject.wtTable.getFirstPartiallyVisibleRow();
|
173
|
+
}
|
174
|
+
|
175
|
+
/**
|
176
|
+
* Get last visible row based on virtual dom and how table is visible in browser window viewport.
|
177
|
+
*
|
178
|
+
* @returns {number}
|
179
|
+
*/
|
180
|
+
getLastPartiallyVisibleRow() {
|
181
|
+
return _classPrivateMethodGet(this, _getLastRowIndex, _getLastRowIndex2).call(this, this.dataAccessObject.wtTable.getLastPartiallyVisibleRow());
|
197
182
|
}
|
198
183
|
|
199
184
|
/**
|
@@ -211,44 +196,92 @@ class Scroll {
|
|
211
196
|
* @returns {number}
|
212
197
|
*/
|
213
198
|
getLastVisibleColumn() {
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
199
|
+
return _classPrivateMethodGet(this, _getLastColumnIndex, _getLastColumnIndex2).call(this, this.dataAccessObject.wtTable.getLastVisibleColumn());
|
200
|
+
}
|
201
|
+
|
202
|
+
/**
|
203
|
+
* Get first partially visible column based on virtual dom and how table is visible in browser window viewport.
|
204
|
+
*
|
205
|
+
* @returns {number}
|
206
|
+
*/
|
207
|
+
getFirstPartiallyVisibleColumn() {
|
208
|
+
return this.dataAccessObject.wtTable.getFirstPartiallyVisibleColumn();
|
209
|
+
}
|
210
|
+
|
211
|
+
/**
|
212
|
+
* Get last partially visible column based on virtual dom and how table is visible in browser window viewport.
|
213
|
+
*
|
214
|
+
* @returns {number}
|
215
|
+
*/
|
216
|
+
getLastPartiallyVisibleColumn() {
|
217
|
+
return _classPrivateMethodGet(this, _getLastColumnIndex, _getLastColumnIndex2).call(this, this.dataAccessObject.wtTable.getLastPartiallyVisibleColumn());
|
218
|
+
}
|
219
|
+
}
|
220
|
+
function _getLastColumnIndex2(lastColumnIndex) {
|
221
|
+
const {
|
222
|
+
wtSettings,
|
223
|
+
inlineStartOverlay,
|
224
|
+
wtTable,
|
225
|
+
wtViewport,
|
226
|
+
totalColumns,
|
227
|
+
rootWindow
|
228
|
+
} = this.dataAccessObject;
|
229
|
+
if (inlineStartOverlay.mainTableScrollableElement === rootWindow) {
|
230
|
+
const isRtl = wtSettings.getSetting('rtlMode');
|
231
|
+
let inlineStartRootElementOffset = null;
|
232
|
+
if (isRtl) {
|
233
|
+
const tableRect = wtTable.TABLE.getBoundingClientRect();
|
234
|
+
const rootDocument = this.dataAccessObject.rootWindow.document;
|
235
|
+
const docOffsetWidth = rootDocument.documentElement.offsetWidth;
|
236
|
+
inlineStartRootElementOffset = Math.abs(tableRect.right - docOffsetWidth);
|
237
|
+
} else {
|
238
|
+
const rootElementOffset = offset(wtTable.wtRootElement);
|
239
|
+
inlineStartRootElementOffset = rootElementOffset.left;
|
240
|
+
}
|
241
|
+
const windowScrollLeft = Math.abs(getScrollLeft(rootWindow, rootWindow));
|
242
|
+
|
243
|
+
// Only calculate lastColumnIndex when table didn't filled (from right) whole viewport space
|
244
|
+
if (inlineStartRootElementOffset > windowScrollLeft) {
|
245
|
+
const windowWidth = innerWidth(rootWindow);
|
246
|
+
let columnsWidth = wtViewport.getRowHeaderWidth();
|
247
|
+
for (let column = 1; column <= totalColumns; column++) {
|
248
|
+
columnsWidth += inlineStartOverlay.sumCellSizes(column - 1, column);
|
249
|
+
if (inlineStartRootElementOffset + columnsWidth - windowScrollLeft >= windowWidth) {
|
250
|
+
// Return physical column - 1 (-2 because rangeEach gives column index + 1 - sumCellSizes requirements)
|
251
|
+
lastColumnIndex = column - 2;
|
252
|
+
break;
|
253
|
+
}
|
234
254
|
}
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
255
|
+
}
|
256
|
+
}
|
257
|
+
return lastColumnIndex;
|
258
|
+
}
|
259
|
+
function _getLastRowIndex2(lastRowIndex) {
|
260
|
+
const {
|
261
|
+
topOverlay,
|
262
|
+
wtTable,
|
263
|
+
wtViewport,
|
264
|
+
totalRows,
|
265
|
+
rootWindow
|
266
|
+
} = this.dataAccessObject;
|
267
|
+
if (topOverlay.mainTableScrollableElement === rootWindow) {
|
268
|
+
const rootElementOffset = offset(wtTable.wtRootElement);
|
269
|
+
const windowScrollTop = getScrollTop(rootWindow, rootWindow);
|
270
|
+
|
271
|
+
// Only calculate lastRowIndex when table didn't filled (from bottom) whole viewport space
|
272
|
+
if (rootElementOffset.top > windowScrollTop) {
|
273
|
+
const windowHeight = innerHeight(rootWindow);
|
274
|
+
let rowsHeight = wtViewport.getColumnHeaderHeight();
|
275
|
+
for (let row = 1; row <= totalRows; row++) {
|
276
|
+
rowsHeight += topOverlay.sumCellSizes(row - 1, row);
|
277
|
+
if (rootElementOffset.top + rowsHeight - windowScrollTop >= windowHeight) {
|
278
|
+
// Return physical row - 1 (-2 because rangeEach gives row index + 1 - sumCellSizes requirements)
|
279
|
+
lastRowIndex = row - 2;
|
280
|
+
break;
|
248
281
|
}
|
249
282
|
}
|
250
283
|
}
|
251
|
-
return lastVisibleColumn;
|
252
284
|
}
|
285
|
+
return lastRowIndex;
|
253
286
|
}
|
254
287
|
export default Scroll;
|
@@ -169,7 +169,7 @@ class Border {
|
|
169
169
|
this.cornerStyle.width = this.cornerDefaultStyle.width;
|
170
170
|
this.cornerStyle.height = this.cornerDefaultStyle.height;
|
171
171
|
this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' ');
|
172
|
-
if ((0, _browser.isMobileBrowser)()) {
|
172
|
+
if ((0, _browser.isMobileBrowser)() && this.instance.getSetting('isDataViewInstance')) {
|
173
173
|
this.createMultipleSelectorHandles();
|
174
174
|
}
|
175
175
|
this.disappear();
|
@@ -490,7 +490,7 @@ class Border {
|
|
490
490
|
}
|
491
491
|
this.cornerStyle.display = 'block';
|
492
492
|
}
|
493
|
-
if ((0, _browser.isMobileBrowser)()) {
|
493
|
+
if ((0, _browser.isMobileBrowser)() && this.instance.getSetting('isDataViewInstance')) {
|
494
494
|
this.updateMultipleSelectionHandlesPosition(toRow, toColumn, top, inlineStartPos, width, height);
|
495
495
|
}
|
496
496
|
}
|
@@ -652,7 +652,7 @@ class Border {
|
|
652
652
|
this.startStyle.display = 'none';
|
653
653
|
this.endStyle.display = 'none';
|
654
654
|
this.cornerStyle.display = 'none';
|
655
|
-
if ((0, _browser.isMobileBrowser)()) {
|
655
|
+
if ((0, _browser.isMobileBrowser)() && this.instance.getSetting('isDataViewInstance')) {
|
656
656
|
this.selectionHandles.styles.top.display = 'none';
|
657
657
|
this.selectionHandles.styles.topHitArea.display = 'none';
|
658
658
|
this.selectionHandles.styles.bottom.display = 'none';
|
@@ -166,7 +166,7 @@ class Border {
|
|
166
166
|
this.cornerStyle.width = this.cornerDefaultStyle.width;
|
167
167
|
this.cornerStyle.height = this.cornerDefaultStyle.height;
|
168
168
|
this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' ');
|
169
|
-
if (isMobileBrowser()) {
|
169
|
+
if (isMobileBrowser() && this.instance.getSetting('isDataViewInstance')) {
|
170
170
|
this.createMultipleSelectorHandles();
|
171
171
|
}
|
172
172
|
this.disappear();
|
@@ -487,7 +487,7 @@ class Border {
|
|
487
487
|
}
|
488
488
|
this.cornerStyle.display = 'block';
|
489
489
|
}
|
490
|
-
if (isMobileBrowser()) {
|
490
|
+
if (isMobileBrowser() && this.instance.getSetting('isDataViewInstance')) {
|
491
491
|
this.updateMultipleSelectionHandlesPosition(toRow, toColumn, top, inlineStartPos, width, height);
|
492
492
|
}
|
493
493
|
}
|
@@ -649,7 +649,7 @@ class Border {
|
|
649
649
|
this.startStyle.display = 'none';
|
650
650
|
this.endStyle.display = 'none';
|
651
651
|
this.cornerStyle.display = 'none';
|
652
|
-
if (isMobileBrowser()) {
|
652
|
+
if (isMobileBrowser() && this.instance.getSetting('isDataViewInstance')) {
|
653
653
|
this.selectionHandles.styles.top.display = 'none';
|
654
654
|
this.selectionHandles.styles.topHitArea.display = 'none';
|
655
655
|
this.selectionHandles.styles.bottom.display = 'none';
|
@@ -39,6 +39,19 @@ const calculatedColumns = {
|
|
39
39
|
}
|
40
40
|
return startColumn;
|
41
41
|
},
|
42
|
+
/**
|
43
|
+
* Get the source index of the first column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
44
|
+
*
|
45
|
+
* @returns {number}
|
46
|
+
* @this Table
|
47
|
+
*/
|
48
|
+
getFirstPartiallyVisibleColumn() {
|
49
|
+
const startColumn = this.dataAccessObject.startColumnPartiallyVisible;
|
50
|
+
if (startColumn === null) {
|
51
|
+
return -1;
|
52
|
+
}
|
53
|
+
return startColumn;
|
54
|
+
},
|
42
55
|
/**
|
43
56
|
* Get the source index of the last rendered column. If no columns are rendered, returns an error code: -1.
|
44
57
|
*
|
@@ -65,6 +78,19 @@ const calculatedColumns = {
|
|
65
78
|
}
|
66
79
|
return endColumn;
|
67
80
|
},
|
81
|
+
/**
|
82
|
+
* Get the source index of the last column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
83
|
+
*
|
84
|
+
* @returns {number}
|
85
|
+
* @this Table
|
86
|
+
*/
|
87
|
+
getLastPartiallyVisibleColumn() {
|
88
|
+
const endColumn = this.dataAccessObject.endColumnPartiallyVisible;
|
89
|
+
if (endColumn === null) {
|
90
|
+
return -1;
|
91
|
+
}
|
92
|
+
return endColumn;
|
93
|
+
},
|
68
94
|
/**
|
69
95
|
* Get the number of rendered columns.
|
70
96
|
*
|
@@ -36,6 +36,19 @@ const calculatedColumns = {
|
|
36
36
|
}
|
37
37
|
return startColumn;
|
38
38
|
},
|
39
|
+
/**
|
40
|
+
* Get the source index of the first column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
41
|
+
*
|
42
|
+
* @returns {number}
|
43
|
+
* @this Table
|
44
|
+
*/
|
45
|
+
getFirstPartiallyVisibleColumn() {
|
46
|
+
const startColumn = this.dataAccessObject.startColumnPartiallyVisible;
|
47
|
+
if (startColumn === null) {
|
48
|
+
return -1;
|
49
|
+
}
|
50
|
+
return startColumn;
|
51
|
+
},
|
39
52
|
/**
|
40
53
|
* Get the source index of the last rendered column. If no columns are rendered, returns an error code: -1.
|
41
54
|
*
|
@@ -62,6 +75,19 @@ const calculatedColumns = {
|
|
62
75
|
}
|
63
76
|
return endColumn;
|
64
77
|
},
|
78
|
+
/**
|
79
|
+
* Get the source index of the last column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
80
|
+
*
|
81
|
+
* @returns {number}
|
82
|
+
* @this Table
|
83
|
+
*/
|
84
|
+
getLastPartiallyVisibleColumn() {
|
85
|
+
const endColumn = this.dataAccessObject.endColumnPartiallyVisible;
|
86
|
+
if (endColumn === null) {
|
87
|
+
return -1;
|
88
|
+
}
|
89
|
+
return endColumn;
|
90
|
+
},
|
65
91
|
/**
|
66
92
|
* Get the number of rendered columns.
|
67
93
|
*
|
@@ -39,6 +39,19 @@ const calculatedRows = {
|
|
39
39
|
}
|
40
40
|
return startRow;
|
41
41
|
},
|
42
|
+
/**
|
43
|
+
* Get the source index of the first row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
44
|
+
*
|
45
|
+
* @returns {number}
|
46
|
+
* @this Table
|
47
|
+
*/
|
48
|
+
getFirstPartiallyVisibleRow() {
|
49
|
+
const startRow = this.dataAccessObject.startRowPartiallyVisible;
|
50
|
+
if (startRow === null) {
|
51
|
+
return -1;
|
52
|
+
}
|
53
|
+
return startRow;
|
54
|
+
},
|
42
55
|
/**
|
43
56
|
* Get the source index of the last rendered row. If no rows are rendered, returns an error code: -1.
|
44
57
|
*
|
@@ -65,6 +78,19 @@ const calculatedRows = {
|
|
65
78
|
}
|
66
79
|
return endRow;
|
67
80
|
},
|
81
|
+
/**
|
82
|
+
* Get the source index of the last row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
83
|
+
*
|
84
|
+
* @returns {number}
|
85
|
+
* @this Table
|
86
|
+
*/
|
87
|
+
getLastPartiallyVisibleRow() {
|
88
|
+
const endRow = this.dataAccessObject.endRowPartiallyVisible;
|
89
|
+
if (endRow === null) {
|
90
|
+
return -1;
|
91
|
+
}
|
92
|
+
return endRow;
|
93
|
+
},
|
68
94
|
/**
|
69
95
|
* Get the number of rendered rows.
|
70
96
|
*
|
@@ -36,6 +36,19 @@ const calculatedRows = {
|
|
36
36
|
}
|
37
37
|
return startRow;
|
38
38
|
},
|
39
|
+
/**
|
40
|
+
* Get the source index of the first row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
41
|
+
*
|
42
|
+
* @returns {number}
|
43
|
+
* @this Table
|
44
|
+
*/
|
45
|
+
getFirstPartiallyVisibleRow() {
|
46
|
+
const startRow = this.dataAccessObject.startRowPartiallyVisible;
|
47
|
+
if (startRow === null) {
|
48
|
+
return -1;
|
49
|
+
}
|
50
|
+
return startRow;
|
51
|
+
},
|
39
52
|
/**
|
40
53
|
* Get the source index of the last rendered row. If no rows are rendered, returns an error code: -1.
|
41
54
|
*
|
@@ -62,6 +75,19 @@ const calculatedRows = {
|
|
62
75
|
}
|
63
76
|
return endRow;
|
64
77
|
},
|
78
|
+
/**
|
79
|
+
* Get the source index of the last row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
80
|
+
*
|
81
|
+
* @returns {number}
|
82
|
+
* @this Table
|
83
|
+
*/
|
84
|
+
getLastPartiallyVisibleRow() {
|
85
|
+
const endRow = this.dataAccessObject.endRowPartiallyVisible;
|
86
|
+
if (endRow === null) {
|
87
|
+
return -1;
|
88
|
+
}
|
89
|
+
return endRow;
|
90
|
+
},
|
65
91
|
/**
|
66
92
|
* Get the number of rendered rows.
|
67
93
|
*
|
@@ -36,6 +36,16 @@ const stickyColumnsStart = {
|
|
36
36
|
getFirstVisibleColumn() {
|
37
37
|
return this.getFirstRenderedColumn();
|
38
38
|
},
|
39
|
+
/**
|
40
|
+
* Get the source index of the first column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
41
|
+
* Assumes that all rendered columns are fully visible.
|
42
|
+
*
|
43
|
+
* @returns {number}
|
44
|
+
* @this Table
|
45
|
+
*/
|
46
|
+
getFirstPartiallyVisibleColumn() {
|
47
|
+
return this.getFirstRenderedColumn();
|
48
|
+
},
|
39
49
|
/**
|
40
50
|
* Get the source index of the last rendered column. If no columns are rendered, returns an error code: -1.
|
41
51
|
*
|
@@ -55,6 +65,16 @@ const stickyColumnsStart = {
|
|
55
65
|
getLastVisibleColumn() {
|
56
66
|
return this.getLastRenderedColumn();
|
57
67
|
},
|
68
|
+
/**
|
69
|
+
* Get the source index of the last column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
70
|
+
* Assumes that all rendered columns are fully visible.
|
71
|
+
*
|
72
|
+
* @returns {number}
|
73
|
+
* @this Table
|
74
|
+
*/
|
75
|
+
getLastPartiallyVisibleColumn() {
|
76
|
+
return this.getLastRenderedColumn();
|
77
|
+
},
|
58
78
|
/**
|
59
79
|
* Get the number of rendered columns.
|
60
80
|
*
|
@@ -33,6 +33,16 @@ const stickyColumnsStart = {
|
|
33
33
|
getFirstVisibleColumn() {
|
34
34
|
return this.getFirstRenderedColumn();
|
35
35
|
},
|
36
|
+
/**
|
37
|
+
* Get the source index of the first column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
38
|
+
* Assumes that all rendered columns are fully visible.
|
39
|
+
*
|
40
|
+
* @returns {number}
|
41
|
+
* @this Table
|
42
|
+
*/
|
43
|
+
getFirstPartiallyVisibleColumn() {
|
44
|
+
return this.getFirstRenderedColumn();
|
45
|
+
},
|
36
46
|
/**
|
37
47
|
* Get the source index of the last rendered column. If no columns are rendered, returns an error code: -1.
|
38
48
|
*
|
@@ -52,6 +62,16 @@ const stickyColumnsStart = {
|
|
52
62
|
getLastVisibleColumn() {
|
53
63
|
return this.getLastRenderedColumn();
|
54
64
|
},
|
65
|
+
/**
|
66
|
+
* Get the source index of the last column partially visible in the viewport. If no columns are partially visible, returns an error code: -1.
|
67
|
+
* Assumes that all rendered columns are fully visible.
|
68
|
+
*
|
69
|
+
* @returns {number}
|
70
|
+
* @this Table
|
71
|
+
*/
|
72
|
+
getLastPartiallyVisibleColumn() {
|
73
|
+
return this.getLastRenderedColumn();
|
74
|
+
},
|
55
75
|
/**
|
56
76
|
* Get the number of rendered columns.
|
57
77
|
*
|
@@ -41,6 +41,16 @@ const stickyRowsBottom = {
|
|
41
41
|
getFirstVisibleRow() {
|
42
42
|
return this.getFirstRenderedRow();
|
43
43
|
},
|
44
|
+
/**
|
45
|
+
* Get the source index of the first row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
46
|
+
* Assumes that all rendered rows are fully visible.
|
47
|
+
*
|
48
|
+
* @returns {number}
|
49
|
+
* @this Table
|
50
|
+
*/
|
51
|
+
getFirstPartiallyVisibleRow() {
|
52
|
+
return this.getFirstRenderedRow();
|
53
|
+
},
|
44
54
|
/**
|
45
55
|
* Get the source index of the last rendered row. If no rows are rendered, returns an error code: -1.
|
46
56
|
*
|
@@ -60,6 +70,16 @@ const stickyRowsBottom = {
|
|
60
70
|
getLastVisibleRow() {
|
61
71
|
return this.getLastRenderedRow();
|
62
72
|
},
|
73
|
+
/**
|
74
|
+
* Get the source index of the last row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
75
|
+
* Assumes that all rendered rows are fully visible.
|
76
|
+
*
|
77
|
+
* @returns {number}
|
78
|
+
* @this Table
|
79
|
+
*/
|
80
|
+
getLastPartiallyVisibleRow() {
|
81
|
+
return this.getLastRenderedRow();
|
82
|
+
},
|
63
83
|
/**
|
64
84
|
* Get the number of rendered rows.
|
65
85
|
*
|
@@ -38,6 +38,16 @@ const stickyRowsBottom = {
|
|
38
38
|
getFirstVisibleRow() {
|
39
39
|
return this.getFirstRenderedRow();
|
40
40
|
},
|
41
|
+
/**
|
42
|
+
* Get the source index of the first row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
43
|
+
* Assumes that all rendered rows are fully visible.
|
44
|
+
*
|
45
|
+
* @returns {number}
|
46
|
+
* @this Table
|
47
|
+
*/
|
48
|
+
getFirstPartiallyVisibleRow() {
|
49
|
+
return this.getFirstRenderedRow();
|
50
|
+
},
|
41
51
|
/**
|
42
52
|
* Get the source index of the last rendered row. If no rows are rendered, returns an error code: -1.
|
43
53
|
*
|
@@ -57,6 +67,16 @@ const stickyRowsBottom = {
|
|
57
67
|
getLastVisibleRow() {
|
58
68
|
return this.getLastRenderedRow();
|
59
69
|
},
|
70
|
+
/**
|
71
|
+
* Get the source index of the last row partially visible in the viewport. If no rows are partially visible, returns an error code: -1.
|
72
|
+
* Assumes that all rendered rows are fully visible.
|
73
|
+
*
|
74
|
+
* @returns {number}
|
75
|
+
* @this Table
|
76
|
+
*/
|
77
|
+
getLastPartiallyVisibleRow() {
|
78
|
+
return this.getLastRenderedRow();
|
79
|
+
},
|
60
80
|
/**
|
61
81
|
* Get the number of rendered rows.
|
62
82
|
*
|