handsontable 0.0.0-next-3e0b40d-20241017 → 0.0.0-next-662a118-20241017
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -5
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +2 -5
- package/3rdparty/walkontable/src/core/clone.js +0 -1
- package/3rdparty/walkontable/src/core/clone.mjs +0 -1
- package/3rdparty/walkontable/src/core/core.js +0 -2
- package/3rdparty/walkontable/src/core/core.mjs +0 -2
- package/3rdparty/walkontable/src/overlay/_base.js +1 -3
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -3
- package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
- package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/top.js +1 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
- package/3rdparty/walkontable/src/settings.js +2 -0
- package/3rdparty/walkontable/src/settings.mjs +2 -0
- package/3rdparty/walkontable/src/table.js +8 -11
- package/3rdparty/walkontable/src/table.mjs +8 -11
- package/3rdparty/walkontable/src/utils/column.js +1 -1
- package/3rdparty/walkontable/src/utils/column.mjs +1 -1
- package/3rdparty/walkontable/src/viewport.js +0 -1
- package/3rdparty/walkontable/src/viewport.mjs +0 -1
- package/CHANGELOG.md +5 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.js +0 -11
- package/core.mjs +0 -11
- package/dataMap/metaManager/metaSchema.js +0 -17
- package/dataMap/metaManager/metaSchema.mjs +0 -17
- package/dist/handsontable.css +5 -236
- package/dist/handsontable.full.css +3 -3
- package/dist/handsontable.full.js +3819 -3907
- package/dist/handsontable.full.min.css +3 -4
- package/dist/handsontable.full.min.js +26 -26
- package/dist/handsontable.js +3511 -3605
- package/dist/handsontable.min.css +4 -9
- package/dist/handsontable.min.js +24 -24
- package/editors/autocompleteEditor/autocompleteEditor.js +1 -1
- package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -1
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +0 -2
- package/editors/dateEditor/dateEditor.mjs +0 -2
- package/editors/handsontableEditor/handsontableEditor.js +1 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +1 -1
- package/editors/passwordEditor/passwordEditor.js +0 -4
- package/editors/passwordEditor/passwordEditor.mjs +1 -5
- package/editors/selectEditor/selectEditor.js +9 -20
- package/editors/selectEditor/selectEditor.mjs +9 -20
- package/editors/textEditor/textEditor.js +11 -7
- package/editors/textEditor/textEditor.mjs +12 -8
- package/helpers/mixed.js +3 -3
- package/helpers/mixed.mjs +3 -3
- package/package.json +3 -10
- package/plugins/comments/commentEditor.js +1 -8
- package/plugins/comments/commentEditor.mjs +1 -8
- package/plugins/comments/comments.js +1 -1
- package/plugins/comments/comments.mjs +1 -1
- package/plugins/contextMenu/menu/menu.js +4 -4
- package/plugins/contextMenu/menu/menu.mjs +4 -4
- package/plugins/manualRowMove/manualRowMove.js +1 -1
- package/plugins/manualRowMove/manualRowMove.mjs +1 -1
- package/plugins/mergeCells/mergeCells.js +1 -1
- package/plugins/mergeCells/mergeCells.mjs +1 -1
- package/plugins/nestedRows/ui/headers.js +1 -3
- package/plugins/nestedRows/ui/headers.mjs +1 -3
- package/tableView.js +0 -33
- package/tableView.mjs +0 -33
- package/utils/autoResize.js +1 -4
- package/utils/autoResize.mjs +1 -4
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/3rdparty/walkontable/src/utils/stylesHandler.js +0 -185
- package/3rdparty/walkontable/src/utils/stylesHandler.mjs +0 -181
- package/helpers/themes.js +0 -17
- package/helpers/themes.mjs +0 -13
- package/styles/handsontable.css +0 -1920
- package/styles/handsontable.min.css +0 -30
- package/styles/ht-theme-gemini.css +0 -690
- package/styles/ht-theme-gemini.min.css +0 -30
- package/styles/ht-theme-main.css +0 -712
- package/styles/ht-theme-main.min.css +0 -30
@@ -375,7 +375,7 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
|
|
375
375
|
let lastRowHeight = 0;
|
376
376
|
let height = null;
|
377
377
|
do {
|
378
|
-
lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view.
|
378
|
+
lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view._wt.getSetting('defaultRowHeight');
|
379
379
|
tempHeight += lastRowHeight;
|
380
380
|
i += 1;
|
381
381
|
} while (tempHeight < spaceAvailable);
|
@@ -372,7 +372,7 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
372
372
|
let lastRowHeight = 0;
|
373
373
|
let height = null;
|
374
374
|
do {
|
375
|
-
lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view.
|
375
|
+
lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view._wt.getSetting('defaultRowHeight');
|
376
376
|
tempHeight += lastRowHeight;
|
377
377
|
i += 1;
|
378
378
|
} while (tempHeight < spaceAvailable);
|
@@ -492,7 +492,7 @@ class BaseEditor {
|
|
492
492
|
const actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainerTop) ? scrollbarWidth : 0;
|
493
493
|
const actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainerLeft) ? scrollbarWidth : 0;
|
494
494
|
const maxWidth = this.hot.view.maximumVisibleElementWidth(cellStartOffset) - actualVerticalScrollbarWidth + inlineStartBorderCompensation;
|
495
|
-
const maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth + topBorderCompensation,
|
495
|
+
const maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth + topBorderCompensation, 23);
|
496
496
|
return {
|
497
497
|
top: topPos,
|
498
498
|
start: inlineStartPos,
|
@@ -488,7 +488,7 @@ export class BaseEditor {
|
|
488
488
|
const actualVerticalScrollbarWidth = hasVerticalScrollbar(scrollableContainerTop) ? scrollbarWidth : 0;
|
489
489
|
const actualHorizontalScrollbarWidth = hasHorizontalScrollbar(scrollableContainerLeft) ? scrollbarWidth : 0;
|
490
490
|
const maxWidth = this.hot.view.maximumVisibleElementWidth(cellStartOffset) - actualVerticalScrollbarWidth + inlineStartBorderCompensation;
|
491
|
-
const maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth + topBorderCompensation,
|
491
|
+
const maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth + topBorderCompensation, 23);
|
492
492
|
return {
|
493
493
|
top: topPos,
|
494
494
|
start: inlineStartPos,
|
@@ -66,9 +66,7 @@ class DateEditor extends _textEditor.TextEditor {
|
|
66
66
|
this.datePickerStyle.left = 0;
|
67
67
|
this.datePickerStyle.zIndex = 9999;
|
68
68
|
this.datePicker.setAttribute('dir', this.hot.isRtl() ? 'rtl' : 'ltr');
|
69
|
-
const themeClassName = this.hot.getSettings().themeName;
|
70
69
|
(0, _element.addClass)(this.datePicker, 'htDatepickerHolder');
|
71
|
-
(0, _element.addClass)(this.datePicker, themeClassName);
|
72
70
|
this.hot.rootDocument.body.appendChild(this.datePicker);
|
73
71
|
|
74
72
|
/**
|
@@ -62,9 +62,7 @@ export class DateEditor extends TextEditor {
|
|
62
62
|
this.datePickerStyle.left = 0;
|
63
63
|
this.datePickerStyle.zIndex = 9999;
|
64
64
|
this.datePicker.setAttribute('dir', this.hot.isRtl() ? 'rtl' : 'ltr');
|
65
|
-
const themeClassName = this.hot.getSettings().themeName;
|
66
65
|
addClass(this.datePicker, 'htDatepickerHolder');
|
67
|
-
addClass(this.datePicker, themeClassName);
|
68
66
|
this.hot.rootDocument.body.appendChild(this.datePicker);
|
69
67
|
|
70
68
|
/**
|
@@ -3,7 +3,6 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _textEditor = require("../textEditor");
|
5
5
|
var _element = require("../../helpers/dom/element");
|
6
|
-
var _a11y = require("../../helpers/a11y");
|
7
6
|
const EDITOR_TYPE = exports.EDITOR_TYPE = 'password';
|
8
7
|
|
9
8
|
/**
|
@@ -23,9 +22,6 @@ class PasswordEditor extends _textEditor.TextEditor {
|
|
23
22
|
this.textareaStyle = this.TEXTAREA.style;
|
24
23
|
this.textareaStyle.width = 0;
|
25
24
|
this.textareaStyle.height = 0;
|
26
|
-
if (this.hot.getSettings().ariaTags) {
|
27
|
-
(0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
|
28
|
-
}
|
29
25
|
(0, _element.empty)(this.TEXTAREA_PARENT);
|
30
26
|
this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);
|
31
27
|
}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { TextEditor } from "../textEditor/index.mjs";
|
2
|
-
import { empty
|
3
|
-
import { A11Y_HIDDEN } from "../../helpers/a11y.mjs";
|
2
|
+
import { empty } from "../../helpers/dom/element.mjs";
|
4
3
|
export const EDITOR_TYPE = 'password';
|
5
4
|
|
6
5
|
/**
|
@@ -20,9 +19,6 @@ export class PasswordEditor extends TextEditor {
|
|
20
19
|
this.textareaStyle = this.TEXTAREA.style;
|
21
20
|
this.textareaStyle.width = 0;
|
22
21
|
this.textareaStyle.height = 0;
|
23
|
-
if (this.hot.getSettings().ariaTags) {
|
24
|
-
setAttribute(this.TEXTAREA, [A11Y_HIDDEN()]);
|
25
|
-
}
|
26
22
|
empty(this.TEXTAREA_PARENT);
|
27
23
|
this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);
|
28
24
|
}
|
@@ -4,7 +4,6 @@ exports.__esModule = true;
|
|
4
4
|
var _baseEditor = require("../baseEditor");
|
5
5
|
var _element = require("../../helpers/dom/element");
|
6
6
|
var _object = require("../../helpers/object");
|
7
|
-
var _a11y = require("../../helpers/a11y");
|
8
7
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
9
8
|
const SHORTCUTS_GROUP = 'selectEditor';
|
10
9
|
const EDITOR_TYPE = exports.EDITOR_TYPE = 'select';
|
@@ -22,21 +21,11 @@ class SelectEditor extends _baseEditor.BaseEditor {
|
|
22
21
|
* Initializes editor instance, DOM Element and mount hooks.
|
23
22
|
*/
|
24
23
|
init() {
|
25
|
-
this.selectWrapper = this.hot.rootDocument.createElement('div');
|
26
24
|
this.select = this.hot.rootDocument.createElement('select');
|
27
25
|
this.select.setAttribute('data-hot-input', 'true');
|
28
|
-
this.
|
29
|
-
|
30
|
-
|
31
|
-
ARROW.className = 'htAutocompleteArrow';
|
32
|
-
if (isAriaEnabled) {
|
33
|
-
ARROW.setAttribute(...(0, _a11y.A11Y_HIDDEN)());
|
34
|
-
}
|
35
|
-
ARROW.appendChild(this.hot.rootDocument.createTextNode(String.fromCharCode(9660)));
|
36
|
-
(0, _element.addClass)(this.selectWrapper, 'htSelectEditor');
|
37
|
-
this.selectWrapper.appendChild(this.select);
|
38
|
-
this.selectWrapper.insertBefore(ARROW, this.selectWrapper.firstChild);
|
39
|
-
this.hot.rootElement.appendChild(this.selectWrapper);
|
26
|
+
this.select.style.display = 'none';
|
27
|
+
(0, _element.addClass)(this.select, 'htSelectEditor');
|
28
|
+
this.hot.rootElement.appendChild(this.select);
|
40
29
|
this.registerHooks();
|
41
30
|
}
|
42
31
|
|
@@ -64,7 +53,7 @@ class SelectEditor extends _baseEditor.BaseEditor {
|
|
64
53
|
open() {
|
65
54
|
this._opened = true;
|
66
55
|
this.refreshDimensions();
|
67
|
-
this.
|
56
|
+
this.select.style.display = '';
|
68
57
|
const shortcutManager = this.hot.getShortcutManager();
|
69
58
|
shortcutManager.setActiveContextName('editor');
|
70
59
|
this.registerShortcuts();
|
@@ -75,9 +64,9 @@ class SelectEditor extends _baseEditor.BaseEditor {
|
|
75
64
|
*/
|
76
65
|
close() {
|
77
66
|
this._opened = false;
|
78
|
-
this.
|
79
|
-
if ((0, _element.hasClass)(this.
|
80
|
-
(0, _element.removeClass)(this.
|
67
|
+
this.select.style.display = 'none';
|
68
|
+
if ((0, _element.hasClass)(this.select, EDITOR_VISIBLE_CLASS_NAME)) {
|
69
|
+
(0, _element.removeClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
|
81
70
|
}
|
82
71
|
this.unregisterShortcuts();
|
83
72
|
this.clearHooks();
|
@@ -183,13 +172,13 @@ class SelectEditor extends _baseEditor.BaseEditor {
|
|
183
172
|
width,
|
184
173
|
height
|
185
174
|
} = this.getEditedCellRect();
|
186
|
-
const selectStyle = this.
|
175
|
+
const selectStyle = this.select.style;
|
187
176
|
selectStyle.height = `${height}px`;
|
188
177
|
selectStyle.width = `${width}px`;
|
189
178
|
selectStyle.top = `${top}px`;
|
190
179
|
selectStyle[this.hot.isRtl() ? 'right' : 'left'] = `${start}px`;
|
191
180
|
selectStyle.margin = '0px';
|
192
|
-
(0, _element.addClass)(this.
|
181
|
+
(0, _element.addClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
|
193
182
|
}
|
194
183
|
|
195
184
|
/**
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
|
2
2
|
import { addClass, empty, fastInnerHTML, hasClass, removeClass } from "../../helpers/dom/element.mjs";
|
3
3
|
import { objectEach } from "../../helpers/object.mjs";
|
4
|
-
import { A11Y_HIDDEN } from "../../helpers/a11y.mjs";
|
5
4
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
6
5
|
const SHORTCUTS_GROUP = 'selectEditor';
|
7
6
|
export const EDITOR_TYPE = 'select';
|
@@ -19,21 +18,11 @@ export class SelectEditor extends BaseEditor {
|
|
19
18
|
* Initializes editor instance, DOM Element and mount hooks.
|
20
19
|
*/
|
21
20
|
init() {
|
22
|
-
this.selectWrapper = this.hot.rootDocument.createElement('div');
|
23
21
|
this.select = this.hot.rootDocument.createElement('select');
|
24
22
|
this.select.setAttribute('data-hot-input', 'true');
|
25
|
-
this.
|
26
|
-
|
27
|
-
|
28
|
-
ARROW.className = 'htAutocompleteArrow';
|
29
|
-
if (isAriaEnabled) {
|
30
|
-
ARROW.setAttribute(...A11Y_HIDDEN());
|
31
|
-
}
|
32
|
-
ARROW.appendChild(this.hot.rootDocument.createTextNode(String.fromCharCode(9660)));
|
33
|
-
addClass(this.selectWrapper, 'htSelectEditor');
|
34
|
-
this.selectWrapper.appendChild(this.select);
|
35
|
-
this.selectWrapper.insertBefore(ARROW, this.selectWrapper.firstChild);
|
36
|
-
this.hot.rootElement.appendChild(this.selectWrapper);
|
23
|
+
this.select.style.display = 'none';
|
24
|
+
addClass(this.select, 'htSelectEditor');
|
25
|
+
this.hot.rootElement.appendChild(this.select);
|
37
26
|
this.registerHooks();
|
38
27
|
}
|
39
28
|
|
@@ -61,7 +50,7 @@ export class SelectEditor extends BaseEditor {
|
|
61
50
|
open() {
|
62
51
|
this._opened = true;
|
63
52
|
this.refreshDimensions();
|
64
|
-
this.
|
53
|
+
this.select.style.display = '';
|
65
54
|
const shortcutManager = this.hot.getShortcutManager();
|
66
55
|
shortcutManager.setActiveContextName('editor');
|
67
56
|
this.registerShortcuts();
|
@@ -72,9 +61,9 @@ export class SelectEditor extends BaseEditor {
|
|
72
61
|
*/
|
73
62
|
close() {
|
74
63
|
this._opened = false;
|
75
|
-
this.
|
76
|
-
if (hasClass(this.
|
77
|
-
removeClass(this.
|
64
|
+
this.select.style.display = 'none';
|
65
|
+
if (hasClass(this.select, EDITOR_VISIBLE_CLASS_NAME)) {
|
66
|
+
removeClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
|
78
67
|
}
|
79
68
|
this.unregisterShortcuts();
|
80
69
|
this.clearHooks();
|
@@ -180,13 +169,13 @@ export class SelectEditor extends BaseEditor {
|
|
180
169
|
width,
|
181
170
|
height
|
182
171
|
} = this.getEditedCellRect();
|
183
|
-
const selectStyle = this.
|
172
|
+
const selectStyle = this.select.style;
|
184
173
|
selectStyle.height = `${height}px`;
|
185
174
|
selectStyle.width = `${width}px`;
|
186
175
|
selectStyle.top = `${top}px`;
|
187
176
|
selectStyle[this.hot.isRtl() ? 'right' : 'left'] = `${start}px`;
|
188
177
|
selectStyle.margin = '0px';
|
189
|
-
addClass(this.
|
178
|
+
addClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
|
190
179
|
}
|
191
180
|
|
192
181
|
/**
|
@@ -196,9 +196,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
196
196
|
// Makes the element recognizable by Hot as its own
|
197
197
|
// component's element.
|
198
198
|
(0, _element.setAttribute)(this.TEXTAREA, [['data-hot-input', ''], (0, _a11y.A11Y_TABINDEX)(-1)]);
|
199
|
-
if (this.hot.getSettings().ariaTags) {
|
200
|
-
(0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
|
201
|
-
}
|
202
199
|
(0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
|
203
200
|
this.textareaStyle = this.TEXTAREA.style;
|
204
201
|
this.textareaStyle.width = 0;
|
@@ -312,12 +309,19 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
312
309
|
this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
|
313
310
|
this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
|
314
311
|
this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
|
312
|
+
const textareaComputedStyle = this.hot.rootWindow.getComputedStyle(this.TEXTAREA);
|
313
|
+
const horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
|
314
|
+
const verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
|
315
|
+
const finalWidth = width - horizontalPadding;
|
316
|
+
const finalHeight = height - verticalPadding;
|
317
|
+
const finalMaxWidth = maxWidth - horizontalPadding;
|
318
|
+
const finalMaxHeight = maxHeight - verticalPadding;
|
315
319
|
this.autoResize.init(this.TEXTAREA, {
|
316
|
-
minWidth: Math.min(
|
317
|
-
minHeight: Math.min(
|
320
|
+
minWidth: Math.min(finalWidth, finalMaxWidth),
|
321
|
+
minHeight: Math.min(finalHeight, finalMaxHeight),
|
318
322
|
// TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
|
319
|
-
maxWidth,
|
320
|
-
maxHeight
|
323
|
+
maxWidth: finalMaxWidth,
|
324
|
+
maxHeight: finalMaxHeight
|
321
325
|
}, true);
|
322
326
|
}
|
323
327
|
|
@@ -10,7 +10,7 @@ import { rangeEach } from "../../helpers/number.mjs";
|
|
10
10
|
import { createInputElementResizer } from "../../utils/autoResize.mjs";
|
11
11
|
import { isDefined } from "../../helpers/mixed.mjs";
|
12
12
|
import { updateCaretPosition } from "./caretPositioner.mjs";
|
13
|
-
import {
|
13
|
+
import { A11Y_TABINDEX } from "../../helpers/a11y.mjs";
|
14
14
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
15
15
|
const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
|
16
16
|
const SHORTCUTS_GROUP = 'textEditor';
|
@@ -192,9 +192,6 @@ export class TextEditor extends BaseEditor {
|
|
192
192
|
// Makes the element recognizable by Hot as its own
|
193
193
|
// component's element.
|
194
194
|
setAttribute(this.TEXTAREA, [['data-hot-input', ''], A11Y_TABINDEX(-1)]);
|
195
|
-
if (this.hot.getSettings().ariaTags) {
|
196
|
-
setAttribute(this.TEXTAREA, [A11Y_HIDDEN()]);
|
197
|
-
}
|
198
195
|
addClass(this.TEXTAREA, 'handsontableInput');
|
199
196
|
this.textareaStyle = this.TEXTAREA.style;
|
200
197
|
this.textareaStyle.width = 0;
|
@@ -308,12 +305,19 @@ export class TextEditor extends BaseEditor {
|
|
308
305
|
this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
|
309
306
|
this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
|
310
307
|
this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
|
308
|
+
const textareaComputedStyle = this.hot.rootWindow.getComputedStyle(this.TEXTAREA);
|
309
|
+
const horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
|
310
|
+
const verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
|
311
|
+
const finalWidth = width - horizontalPadding;
|
312
|
+
const finalHeight = height - verticalPadding;
|
313
|
+
const finalMaxWidth = maxWidth - horizontalPadding;
|
314
|
+
const finalMaxHeight = maxHeight - verticalPadding;
|
311
315
|
this.autoResize.init(this.TEXTAREA, {
|
312
|
-
minWidth: Math.min(
|
313
|
-
minHeight: Math.min(
|
316
|
+
minWidth: Math.min(finalWidth, finalMaxWidth),
|
317
|
+
minHeight: Math.min(finalHeight, finalMaxHeight),
|
314
318
|
// TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
|
315
|
-
maxWidth,
|
316
|
-
maxHeight
|
319
|
+
maxWidth: finalMaxWidth,
|
320
|
+
maxHeight: finalMaxHeight
|
317
321
|
}, true);
|
318
322
|
}
|
319
323
|
|
package/helpers/mixed.js
CHANGED
@@ -134,7 +134,7 @@ const domMessages = {
|
|
134
134
|
function _injectProductInfo(key, element) {
|
135
135
|
const hasValidType = !isEmpty(key);
|
136
136
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
137
|
-
const hotVersion = "0.0.0-next-
|
137
|
+
const hotVersion = "0.0.0-next-662a118-20241017";
|
138
138
|
let keyValidityDate;
|
139
139
|
let consoleMessageState = 'invalid';
|
140
140
|
let domMessageState = 'invalid';
|
@@ -142,7 +142,7 @@ function _injectProductInfo(key, element) {
|
|
142
142
|
const schemaValidity = _checkKeySchema(key);
|
143
143
|
if (hasValidType || isNonCommercial || schemaValidity) {
|
144
144
|
if (schemaValidity) {
|
145
|
-
const releaseDate = (0, _moment.default)("
|
145
|
+
const releaseDate = (0, _moment.default)("17/10/2024", 'DD/MM/YYYY');
|
146
146
|
const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
|
147
147
|
const keyValidityDays = _extractTime(key);
|
148
148
|
keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
|
@@ -188,7 +188,7 @@ function _injectProductInfo(key, element) {
|
|
188
188
|
});
|
189
189
|
if (message) {
|
190
190
|
const messageNode = document.createElement('div');
|
191
|
-
messageNode.className = '
|
191
|
+
messageNode.className = 'hot-display-license-info';
|
192
192
|
messageNode.innerHTML = domMessages[domMessageState]({
|
193
193
|
keyValidityDate,
|
194
194
|
hotVersion
|
package/helpers/mixed.mjs
CHANGED
@@ -124,7 +124,7 @@ const domMessages = {
|
|
124
124
|
export function _injectProductInfo(key, element) {
|
125
125
|
const hasValidType = !isEmpty(key);
|
126
126
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
127
|
-
const hotVersion = "0.0.0-next-
|
127
|
+
const hotVersion = "0.0.0-next-662a118-20241017";
|
128
128
|
let keyValidityDate;
|
129
129
|
let consoleMessageState = 'invalid';
|
130
130
|
let domMessageState = 'invalid';
|
@@ -132,7 +132,7 @@ export function _injectProductInfo(key, element) {
|
|
132
132
|
const schemaValidity = _checkKeySchema(key);
|
133
133
|
if (hasValidType || isNonCommercial || schemaValidity) {
|
134
134
|
if (schemaValidity) {
|
135
|
-
const releaseDate = moment("
|
135
|
+
const releaseDate = moment("17/10/2024", 'DD/MM/YYYY');
|
136
136
|
const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
|
137
137
|
const keyValidityDays = _extractTime(key);
|
138
138
|
keyValidityDate = moment((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
|
@@ -178,7 +178,7 @@ export function _injectProductInfo(key, element) {
|
|
178
178
|
});
|
179
179
|
if (message) {
|
180
180
|
const messageNode = document.createElement('div');
|
181
|
-
messageNode.className = '
|
181
|
+
messageNode.className = 'hot-display-license-info';
|
182
182
|
messageNode.innerHTML = domMessages[domMessageState]({
|
183
183
|
keyValidityDate,
|
184
184
|
hotVersion
|
package/package.json
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
"url": "https://github.com/handsontable/handsontable/issues"
|
11
11
|
},
|
12
12
|
"author": "Handsoncode <hello@handsontable.com>",
|
13
|
-
"version": "0.0.0-next-
|
13
|
+
"version": "0.0.0-next-662a118-20241017",
|
14
14
|
"main": "index",
|
15
15
|
"module": "index.mjs",
|
16
16
|
"jsnext:main": "index.mjs",
|
@@ -50,6 +50,7 @@
|
|
50
50
|
"@babel/register": "^7.8.3",
|
51
51
|
"@babel/runtime": "^7.11.2",
|
52
52
|
"@babel/types": "^7.12.12",
|
53
|
+
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
53
54
|
"babel-jest": "^26.6.3",
|
54
55
|
"babel-loader": "^8.0.4",
|
55
56
|
"babel-plugin-forbidden-imports": "^0.1.2",
|
@@ -93,10 +94,8 @@
|
|
93
94
|
"string-replace-loader": "^3.1.0",
|
94
95
|
"stylelint": "^16.3.1",
|
95
96
|
"typescript": "3.8.2",
|
96
|
-
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
97
97
|
"webpack": "^5.88.1",
|
98
|
-
"webpack-cli": "^5.1.4"
|
99
|
-
"webpack-remove-empty-scripts": "^1.0.4"
|
98
|
+
"webpack-cli": "^5.1.4"
|
100
99
|
},
|
101
100
|
"optionalDependencies": {
|
102
101
|
"hyperformula": "^2.6.2"
|
@@ -768,12 +767,6 @@
|
|
768
767
|
"./dist/languages/zh-CN.min.js": "./dist/languages/zh-CN.min.js",
|
769
768
|
"./dist/languages/zh-TW.js": "./dist/languages/zh-TW.js",
|
770
769
|
"./dist/languages/zh-TW.min.js": "./dist/languages/zh-TW.min.js",
|
771
|
-
"./styles/handsontable.css": "./styles/handsontable.css",
|
772
|
-
"./styles/handsontable.min.css": "./styles/handsontable.min.css",
|
773
|
-
"./styles/ht-theme-gemini.css": "./styles/ht-theme-gemini.css",
|
774
|
-
"./styles/ht-theme-gemini.min.css": "./styles/ht-theme-gemini.min.css",
|
775
|
-
"./styles/ht-theme-main.css": "./styles/ht-theme-main.css",
|
776
|
-
"./styles/ht-theme-main.min.css": "./styles/ht-theme-main.min.css",
|
777
770
|
".": {
|
778
771
|
"types": "./index.d.ts",
|
779
772
|
"import": "./index.mjs",
|
@@ -25,7 +25,6 @@ var _editor = /*#__PURE__*/new WeakMap();
|
|
25
25
|
var _editorStyle = /*#__PURE__*/new WeakMap();
|
26
26
|
var _hidden = /*#__PURE__*/new WeakMap();
|
27
27
|
var _resizeObserver = /*#__PURE__*/new WeakMap();
|
28
|
-
var _themeClassName = /*#__PURE__*/new WeakMap();
|
29
28
|
class CommentEditor {
|
30
29
|
static get CLASS_EDITOR_CONTAINER() {
|
31
30
|
return 'htCommentsContainer';
|
@@ -44,7 +43,7 @@ class CommentEditor {
|
|
44
43
|
* @type {Document}
|
45
44
|
*/
|
46
45
|
|
47
|
-
constructor(rootDocument, isRtl
|
46
|
+
constructor(rootDocument, isRtl) {
|
48
47
|
var _this = this;
|
49
48
|
_classPrivateFieldInitSpec(this, _rootDocument, void 0);
|
50
49
|
/**
|
@@ -71,13 +70,8 @@ class CommentEditor {
|
|
71
70
|
* @type {EditorResizeObserver}
|
72
71
|
*/
|
73
72
|
_classPrivateFieldInitSpec(this, _resizeObserver, new _editorResizeObserver.EditorResizeObserver());
|
74
|
-
/**
|
75
|
-
* @type {string}
|
76
|
-
*/
|
77
|
-
_classPrivateFieldInitSpec(this, _themeClassName, void 0);
|
78
73
|
_classPrivateFieldSet(_rootDocument, this, rootDocument);
|
79
74
|
_classPrivateFieldSet(_isRtl, this, isRtl);
|
80
|
-
_classPrivateFieldSet(_themeClassName, this, themeClassName);
|
81
75
|
_classPrivateFieldSet(_editor, this, this.createEditor());
|
82
76
|
_classPrivateFieldSet(_editorStyle, this, _classPrivateFieldGet(_editor, this).style);
|
83
77
|
_classPrivateFieldGet(_resizeObserver, this).setObservedElement(this.getInputElement());
|
@@ -229,7 +223,6 @@ class CommentEditor {
|
|
229
223
|
_classPrivateFieldSet(_container, this, _classPrivateFieldGet(_rootDocument, this).createElement('div'));
|
230
224
|
_classPrivateFieldGet(_container, this).setAttribute('dir', _classPrivateFieldGet(_isRtl, this) ? 'rtl' : 'ltr');
|
231
225
|
(0, _element.addClass)(_classPrivateFieldGet(_container, this), CommentEditor.CLASS_EDITOR_CONTAINER);
|
232
|
-
(0, _element.addClass)(_classPrivateFieldGet(_container, this), _classPrivateFieldGet(_themeClassName, this));
|
233
226
|
_classPrivateFieldGet(_rootDocument, this).body.appendChild(_classPrivateFieldGet(_container, this));
|
234
227
|
(0, _element.addClass)(editor, CommentEditor.CLASS_EDITOR);
|
235
228
|
(0, _element.addClass)(textarea, CommentEditor.CLASS_INPUT);
|
@@ -21,7 +21,6 @@ var _editor = /*#__PURE__*/new WeakMap();
|
|
21
21
|
var _editorStyle = /*#__PURE__*/new WeakMap();
|
22
22
|
var _hidden = /*#__PURE__*/new WeakMap();
|
23
23
|
var _resizeObserver = /*#__PURE__*/new WeakMap();
|
24
|
-
var _themeClassName = /*#__PURE__*/new WeakMap();
|
25
24
|
class CommentEditor {
|
26
25
|
static get CLASS_EDITOR_CONTAINER() {
|
27
26
|
return 'htCommentsContainer';
|
@@ -40,7 +39,7 @@ class CommentEditor {
|
|
40
39
|
* @type {Document}
|
41
40
|
*/
|
42
41
|
|
43
|
-
constructor(rootDocument, isRtl
|
42
|
+
constructor(rootDocument, isRtl) {
|
44
43
|
var _this = this;
|
45
44
|
_classPrivateFieldInitSpec(this, _rootDocument, void 0);
|
46
45
|
/**
|
@@ -67,13 +66,8 @@ class CommentEditor {
|
|
67
66
|
* @type {EditorResizeObserver}
|
68
67
|
*/
|
69
68
|
_classPrivateFieldInitSpec(this, _resizeObserver, new EditorResizeObserver());
|
70
|
-
/**
|
71
|
-
* @type {string}
|
72
|
-
*/
|
73
|
-
_classPrivateFieldInitSpec(this, _themeClassName, void 0);
|
74
69
|
_classPrivateFieldSet(_rootDocument, this, rootDocument);
|
75
70
|
_classPrivateFieldSet(_isRtl, this, isRtl);
|
76
|
-
_classPrivateFieldSet(_themeClassName, this, themeClassName);
|
77
71
|
_classPrivateFieldSet(_editor, this, this.createEditor());
|
78
72
|
_classPrivateFieldSet(_editorStyle, this, _classPrivateFieldGet(_editor, this).style);
|
79
73
|
_classPrivateFieldGet(_resizeObserver, this).setObservedElement(this.getInputElement());
|
@@ -225,7 +219,6 @@ class CommentEditor {
|
|
225
219
|
_classPrivateFieldSet(_container, this, _classPrivateFieldGet(_rootDocument, this).createElement('div'));
|
226
220
|
_classPrivateFieldGet(_container, this).setAttribute('dir', _classPrivateFieldGet(_isRtl, this) ? 'rtl' : 'ltr');
|
227
221
|
addClass(_classPrivateFieldGet(_container, this), CommentEditor.CLASS_EDITOR_CONTAINER);
|
228
|
-
addClass(_classPrivateFieldGet(_container, this), _classPrivateFieldGet(_themeClassName, this));
|
229
222
|
_classPrivateFieldGet(_rootDocument, this).body.appendChild(_classPrivateFieldGet(_container, this));
|
230
223
|
addClass(editor, CommentEditor.CLASS_EDITOR);
|
231
224
|
addClass(textarea, CommentEditor.CLASS_INPUT);
|
@@ -218,7 +218,7 @@ class Comments extends _base.BasePlugin {
|
|
218
218
|
return;
|
219
219
|
}
|
220
220
|
if (!_classPrivateFieldGet(_editor, this)) {
|
221
|
-
_classPrivateFieldSet(_editor, this, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()
|
221
|
+
_classPrivateFieldSet(_editor, this, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
|
222
222
|
_classPrivateFieldGet(_editor, this).addLocalHook('resize', function () {
|
223
223
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
224
224
|
args[_key] = arguments[_key];
|
@@ -214,7 +214,7 @@ export class Comments extends BasePlugin {
|
|
214
214
|
return;
|
215
215
|
}
|
216
216
|
if (!_classPrivateFieldGet(_editor, this)) {
|
217
|
-
_classPrivateFieldSet(_editor, this, new CommentEditor(this.hot.rootDocument, this.hot.isRtl()
|
217
|
+
_classPrivateFieldSet(_editor, this, new CommentEditor(this.hot.rootDocument, this.hot.isRtl()));
|
218
218
|
_classPrivateFieldGet(_editor, this).addLocalHook('resize', function () {
|
219
219
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
220
220
|
args[_key] = arguments[_key];
|
@@ -579,8 +579,10 @@ class Menu {
|
|
579
579
|
const currentRowHeight = itemCell ? (0, _element.outerHeight)(this.hotMenu.getCell(index, 0)) : 0;
|
580
580
|
return accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : currentRowHeight);
|
581
581
|
}, 0);
|
582
|
-
|
583
|
-
|
582
|
+
|
583
|
+
// Additional 3px to menu's size because of additional border around its `table.htCore`.
|
584
|
+
holderStyle.width = `${currentHiderWidth + 3}px`;
|
585
|
+
holderStyle.height = `${realHeight + 3}px`;
|
584
586
|
hiderStyle.height = holderStyle.height;
|
585
587
|
}
|
586
588
|
|
@@ -610,10 +612,8 @@ class Menu {
|
|
610
612
|
container = doc.querySelector(`.${this.options.className}.${className}`);
|
611
613
|
}
|
612
614
|
if (!container) {
|
613
|
-
const themeClassName = this.hot.getSettings().themeName;
|
614
615
|
container = doc.createElement('div');
|
615
616
|
(0, _element.addClass)(container, `htMenu ${this.options.className}`);
|
616
|
-
(0, _element.addClass)(container, themeClassName);
|
617
617
|
if (className) {
|
618
618
|
(0, _element.addClass)(container, className);
|
619
619
|
}
|
@@ -575,8 +575,10 @@ export class Menu {
|
|
575
575
|
const currentRowHeight = itemCell ? outerHeight(this.hotMenu.getCell(index, 0)) : 0;
|
576
576
|
return accumulator + (value.name === SEPARATOR ? 1 : currentRowHeight);
|
577
577
|
}, 0);
|
578
|
-
|
579
|
-
|
578
|
+
|
579
|
+
// Additional 3px to menu's size because of additional border around its `table.htCore`.
|
580
|
+
holderStyle.width = `${currentHiderWidth + 3}px`;
|
581
|
+
holderStyle.height = `${realHeight + 3}px`;
|
580
582
|
hiderStyle.height = holderStyle.height;
|
581
583
|
}
|
582
584
|
|
@@ -606,10 +608,8 @@ export class Menu {
|
|
606
608
|
container = doc.querySelector(`.${this.options.className}.${className}`);
|
607
609
|
}
|
608
610
|
if (!container) {
|
609
|
-
const themeClassName = this.hot.getSettings().themeName;
|
610
611
|
container = doc.createElement('div');
|
611
612
|
addClass(container, `htMenu ${this.options.className}`);
|
612
|
-
addClass(container, themeClassName);
|
613
613
|
if (className) {
|
614
614
|
addClass(container, className);
|
615
615
|
}
|
@@ -317,7 +317,7 @@ class ManualRowMove extends _base.BasePlugin {
|
|
317
317
|
for (let visualRowIndex = fromRow; visualRowIndex <= toRow; visualRowIndex++) {
|
318
318
|
const renderableIndex = rowMapper.getRenderableFromVisualIndex(visualRowIndex);
|
319
319
|
if (renderableIndex !== null) {
|
320
|
-
rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) ||
|
320
|
+
rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) || 23;
|
321
321
|
}
|
322
322
|
}
|
323
323
|
return rowsHeight;
|
@@ -313,7 +313,7 @@ export class ManualRowMove extends BasePlugin {
|
|
313
313
|
for (let visualRowIndex = fromRow; visualRowIndex <= toRow; visualRowIndex++) {
|
314
314
|
const renderableIndex = rowMapper.getRenderableFromVisualIndex(visualRowIndex);
|
315
315
|
if (renderableIndex !== null) {
|
316
|
-
rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) ||
|
316
|
+
rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) || 23;
|
317
317
|
}
|
318
318
|
}
|
319
319
|
return rowsHeight;
|
@@ -1491,7 +1491,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1491
1491
|
* @returns {number}
|
1492
1492
|
*/
|
1493
1493
|
function _sumCellsHeights(row, rowspan) {
|
1494
|
-
const defaultHeight = this.hot.view.
|
1494
|
+
const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
|
1495
1495
|
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
1496
1496
|
let height = 0;
|
1497
1497
|
for (let i = row; i < row + rowspan; i++) {
|
@@ -1486,7 +1486,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1486
1486
|
* @returns {number}
|
1487
1487
|
*/
|
1488
1488
|
function _sumCellsHeights(row, rowspan) {
|
1489
|
-
const defaultHeight = this.hot.view.
|
1489
|
+
const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
|
1490
1490
|
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
1491
1491
|
let height = 0;
|
1492
1492
|
for (let i = row; i < row + rowspan; i++) {
|
@@ -125,9 +125,7 @@ class HeadersUI extends _base.default {
|
|
125
125
|
if (!deepestLevelIndex) {
|
126
126
|
deepestLevelIndex = this.dataManager.cache.levelCount;
|
127
127
|
}
|
128
|
-
|
129
|
-
const completeVerticalPadding = this.hot.view.isUsingClassicTheme() ? 11 : verticalPadding * 2;
|
130
|
-
this.rowHeaderWidthCache = Math.max(50, completeVerticalPadding + 10 * deepestLevelIndex + 25);
|
128
|
+
this.rowHeaderWidthCache = Math.max(50, 11 + 10 * deepestLevelIndex + 25);
|
131
129
|
this.hot.render();
|
132
130
|
}
|
133
131
|
}
|