handsontable 14.1.0 → 14.2.0-next-7ae341f-20240229
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/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
@@ -56,7 +56,7 @@ _pluginHooks.default.getSingleton().add('modifyAutoColumnSizeSeed', function (bu
|
|
56
56
|
* @param {number} col The visual column index.
|
57
57
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
58
58
|
* @param {*} value The rendered value.
|
59
|
-
* @param {object} cellProperties The cell meta object ({@
|
59
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
60
60
|
*/
|
61
61
|
function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
62
62
|
const {
|
@@ -174,6 +174,9 @@ function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties
|
|
174
174
|
function changeSelectedCheckboxesState() {
|
175
175
|
let uncheckCheckbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
176
176
|
const selRange = hotInstance.getSelectedRange();
|
177
|
+
const changesPerSubSelection = [];
|
178
|
+
let changes = [];
|
179
|
+
let changeCounter = 0;
|
177
180
|
if (!selRange) {
|
178
181
|
return;
|
179
182
|
}
|
@@ -186,10 +189,13 @@ function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties
|
|
186
189
|
row: endRow,
|
187
190
|
col: endColumn
|
188
191
|
} = selRange[key].getBottomEndCorner();
|
189
|
-
const changes = [];
|
190
192
|
for (let visualRow = startRow; visualRow <= endRow; visualRow += 1) {
|
191
193
|
for (let visualColumn = startColumn; visualColumn <= endColumn; visualColumn += 1) {
|
192
194
|
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
195
|
+
const templates = {
|
196
|
+
checkedTemplate: cachedCellProperties.checkedTemplate,
|
197
|
+
uncheckedTemplate: cachedCellProperties.uncheckedTemplate
|
198
|
+
};
|
193
199
|
if (cachedCellProperties.type !== 'checkbox') {
|
194
200
|
return;
|
195
201
|
}
|
@@ -208,19 +214,41 @@ function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties
|
|
208
214
|
if (uncheckCheckbox === false) {
|
209
215
|
if ([cachedCellProperties.checkedTemplate, cachedCellProperties.checkedTemplate.toString()].includes(dataAtCell)) {
|
210
216
|
// eslint-disable-line max-len
|
211
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
217
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate, templates]);
|
212
218
|
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null, undefined].includes(dataAtCell)) {
|
213
219
|
// eslint-disable-line max-len
|
214
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate]);
|
220
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate, templates]);
|
215
221
|
}
|
216
222
|
} else {
|
217
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
223
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate, templates]);
|
218
224
|
}
|
225
|
+
changeCounter += 1;
|
219
226
|
}
|
220
227
|
}
|
221
|
-
|
222
|
-
|
223
|
-
|
228
|
+
changesPerSubSelection.push(changeCounter);
|
229
|
+
changeCounter = 0;
|
230
|
+
}
|
231
|
+
if (!changes.every(_ref => {
|
232
|
+
let [,, cellValue] = _ref;
|
233
|
+
return cellValue === changes[0][2];
|
234
|
+
})) {
|
235
|
+
changes = changes.map(_ref2 => {
|
236
|
+
let [visualRow, visualColumn,, templates] = _ref2;
|
237
|
+
return [visualRow, visualColumn, templates.checkedTemplate];
|
238
|
+
});
|
239
|
+
} else {
|
240
|
+
changes = changes.map(_ref3 => {
|
241
|
+
let [visualRow, visualColumn, cellValue] = _ref3;
|
242
|
+
return [visualRow, visualColumn, cellValue];
|
243
|
+
});
|
244
|
+
}
|
245
|
+
if (changes.length > 0) {
|
246
|
+
// TODO: This is workaround for handsontable/dev-handsontable#1747 not being a breaking change.
|
247
|
+
// Technically, the changes don't need to be split into chunks when sent to `setDataAtCell`.
|
248
|
+
changesPerSubSelection.forEach(changesCount => {
|
249
|
+
const changesChunk = changes.splice(0, changesCount);
|
250
|
+
hotInstance.setDataAtCell(changesChunk);
|
251
|
+
});
|
224
252
|
}
|
225
253
|
}
|
226
254
|
|
@@ -51,7 +51,7 @@ Hooks.getSingleton().add('modifyAutoColumnSizeSeed', function (bundleSeed, cellM
|
|
51
51
|
* @param {number} col The visual column index.
|
52
52
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
53
53
|
* @param {*} value The rendered value.
|
54
|
-
* @param {object} cellProperties The cell meta object ({@
|
54
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
55
55
|
*/
|
56
56
|
export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
57
57
|
const {
|
@@ -169,6 +169,9 @@ export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellPro
|
|
169
169
|
function changeSelectedCheckboxesState() {
|
170
170
|
let uncheckCheckbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
171
171
|
const selRange = hotInstance.getSelectedRange();
|
172
|
+
const changesPerSubSelection = [];
|
173
|
+
let changes = [];
|
174
|
+
let changeCounter = 0;
|
172
175
|
if (!selRange) {
|
173
176
|
return;
|
174
177
|
}
|
@@ -181,10 +184,13 @@ export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellPro
|
|
181
184
|
row: endRow,
|
182
185
|
col: endColumn
|
183
186
|
} = selRange[key].getBottomEndCorner();
|
184
|
-
const changes = [];
|
185
187
|
for (let visualRow = startRow; visualRow <= endRow; visualRow += 1) {
|
186
188
|
for (let visualColumn = startColumn; visualColumn <= endColumn; visualColumn += 1) {
|
187
189
|
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
190
|
+
const templates = {
|
191
|
+
checkedTemplate: cachedCellProperties.checkedTemplate,
|
192
|
+
uncheckedTemplate: cachedCellProperties.uncheckedTemplate
|
193
|
+
};
|
188
194
|
if (cachedCellProperties.type !== 'checkbox') {
|
189
195
|
return;
|
190
196
|
}
|
@@ -203,19 +209,41 @@ export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellPro
|
|
203
209
|
if (uncheckCheckbox === false) {
|
204
210
|
if ([cachedCellProperties.checkedTemplate, cachedCellProperties.checkedTemplate.toString()].includes(dataAtCell)) {
|
205
211
|
// eslint-disable-line max-len
|
206
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
212
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate, templates]);
|
207
213
|
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null, undefined].includes(dataAtCell)) {
|
208
214
|
// eslint-disable-line max-len
|
209
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate]);
|
215
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate, templates]);
|
210
216
|
}
|
211
217
|
} else {
|
212
|
-
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
218
|
+
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate, templates]);
|
213
219
|
}
|
220
|
+
changeCounter += 1;
|
214
221
|
}
|
215
222
|
}
|
216
|
-
|
217
|
-
|
218
|
-
|
223
|
+
changesPerSubSelection.push(changeCounter);
|
224
|
+
changeCounter = 0;
|
225
|
+
}
|
226
|
+
if (!changes.every(_ref => {
|
227
|
+
let [,, cellValue] = _ref;
|
228
|
+
return cellValue === changes[0][2];
|
229
|
+
})) {
|
230
|
+
changes = changes.map(_ref2 => {
|
231
|
+
let [visualRow, visualColumn,, templates] = _ref2;
|
232
|
+
return [visualRow, visualColumn, templates.checkedTemplate];
|
233
|
+
});
|
234
|
+
} else {
|
235
|
+
changes = changes.map(_ref3 => {
|
236
|
+
let [visualRow, visualColumn, cellValue] = _ref3;
|
237
|
+
return [visualRow, visualColumn, cellValue];
|
238
|
+
});
|
239
|
+
}
|
240
|
+
if (changes.length > 0) {
|
241
|
+
// TODO: This is workaround for handsontable/dev-handsontable#1747 not being a breaking change.
|
242
|
+
// Technically, the changes don't need to be split into chunks when sent to `setDataAtCell`.
|
243
|
+
changesPerSubSelection.forEach(changesCount => {
|
244
|
+
const changesChunk = changes.splice(0, changesCount);
|
245
|
+
hotInstance.setDataAtCell(changesChunk);
|
246
|
+
});
|
219
247
|
}
|
220
248
|
}
|
221
249
|
|
@@ -15,7 +15,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'date';
|
|
15
15
|
* @param {number} col The visual column index.
|
16
16
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
17
17
|
* @param {*} value The rendered value.
|
18
|
-
* @param {object} cellProperties The cell meta object ({@
|
18
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
19
19
|
*/
|
20
20
|
function dateRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
21
|
_autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -11,7 +11,7 @@ export const RENDERER_TYPE = 'date';
|
|
11
11
|
* @param {number} col The visual column index.
|
12
12
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
13
13
|
* @param {*} value The rendered value.
|
14
|
-
* @param {object} cellProperties The cell meta object ({@
|
14
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
15
15
|
*/
|
16
16
|
export function dateRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
17
|
autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -15,7 +15,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'dropdown';
|
|
15
15
|
* @param {number} col The visual column index.
|
16
16
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
17
17
|
* @param {*} value The rendered value.
|
18
|
-
* @param {object} cellProperties The cell meta object ({@
|
18
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
19
19
|
*/
|
20
20
|
function dropdownRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
21
|
_autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -11,7 +11,7 @@ export const RENDERER_TYPE = 'dropdown';
|
|
11
11
|
* @param {number} col The visual column index.
|
12
12
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
13
13
|
* @param {*} value The rendered value.
|
14
|
-
* @param {object} cellProperties The cell meta object ({@
|
14
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
15
15
|
*/
|
16
16
|
export function dropdownRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
17
|
autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -15,7 +15,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'handsontable';
|
|
15
15
|
* @param {number} col The visual column index.
|
16
16
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
17
17
|
* @param {*} value The rendered value.
|
18
|
-
* @param {object} cellProperties The cell meta object ({@
|
18
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
19
19
|
*/
|
20
20
|
function handsontableRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
21
|
_autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -11,7 +11,7 @@ export const RENDERER_TYPE = 'handsontable';
|
|
11
11
|
* @param {number} col The visual column index.
|
12
12
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
13
13
|
* @param {*} value The rendered value.
|
14
|
-
* @param {object} cellProperties The cell meta object ({@
|
14
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
15
15
|
*/
|
16
16
|
export function handsontableRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
17
|
autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -14,7 +14,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'html';
|
|
14
14
|
* @param {number} col The visual column index.
|
15
15
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
16
16
|
* @param {*} value The rendered value.
|
17
|
-
* @param {object} cellProperties The cell meta object ({@
|
17
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
18
18
|
*/
|
19
19
|
function htmlRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
20
20
|
_baseRenderer.baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -10,7 +10,7 @@ export const RENDERER_TYPE = 'html';
|
|
10
10
|
* @param {number} col The visual column index.
|
11
11
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
12
12
|
* @param {*} value The rendered value.
|
13
|
-
* @param {object} cellProperties The cell meta object ({@
|
13
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
14
14
|
*/
|
15
15
|
export function htmlRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
16
16
|
baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -3,4 +3,5 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _numericRenderer = require("./numericRenderer");
|
5
5
|
exports.RENDERER_TYPE = _numericRenderer.RENDERER_TYPE;
|
6
|
-
exports.numericRenderer = _numericRenderer.numericRenderer;
|
6
|
+
exports.numericRenderer = _numericRenderer.numericRenderer;
|
7
|
+
exports.getRenderedValue = _numericRenderer.getRenderedValue;
|
@@ -1 +1 @@
|
|
1
|
-
export { RENDERER_TYPE, numericRenderer } from "./numericRenderer.mjs";
|
1
|
+
export { RENDERER_TYPE, numericRenderer, getRenderedValue } from "./numericRenderer.mjs";
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
+
exports.getRenderedValue = getRenderedValue;
|
4
5
|
exports.numericRenderer = numericRenderer;
|
5
6
|
require("core-js/modules/es.array.push.js");
|
6
7
|
var _numbro = _interopRequireDefault(require("numbro"));
|
@@ -9,6 +10,31 @@ var _number = require("../../helpers/number");
|
|
9
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
10
11
|
const RENDERER_TYPE = exports.RENDERER_TYPE = 'numeric';
|
11
12
|
|
13
|
+
/**
|
14
|
+
* Get the rendered value.
|
15
|
+
*
|
16
|
+
* @param {*} value Value to be rendered.
|
17
|
+
* @param {CellMeta} cellProperties Cell meta object.
|
18
|
+
* @returns {*} Returns the rendered value.
|
19
|
+
*/
|
20
|
+
function getRenderedValue(value, cellProperties) {
|
21
|
+
if ((0, _number.isNumeric)(value)) {
|
22
|
+
const numericFormat = cellProperties.numericFormat;
|
23
|
+
const cellCulture = numericFormat && numericFormat.culture || '-';
|
24
|
+
const cellFormatPattern = numericFormat && numericFormat.pattern;
|
25
|
+
if (typeof cellCulture !== 'undefined' && !_numbro.default.languages()[cellCulture]) {
|
26
|
+
const shortTag = cellCulture.replace('-', '');
|
27
|
+
const langData = _numbro.default.allLanguages ? _numbro.default.allLanguages[cellCulture] : _numbro.default[shortTag];
|
28
|
+
if (langData) {
|
29
|
+
_numbro.default.registerLanguage(langData);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
_numbro.default.setLanguage(cellCulture);
|
33
|
+
value = (0, _numbro.default)(value).format(cellFormatPattern || '0');
|
34
|
+
}
|
35
|
+
return value;
|
36
|
+
}
|
37
|
+
|
12
38
|
/**
|
13
39
|
* Numeric cell renderer.
|
14
40
|
*
|
@@ -19,25 +45,14 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'numeric';
|
|
19
45
|
* @param {number} col The visual column index.
|
20
46
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
21
47
|
* @param {*} value The rendered value.
|
22
|
-
* @param {object} cellProperties The cell meta object ({@
|
48
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
23
49
|
*/
|
24
50
|
function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
25
51
|
let newValue = value;
|
26
52
|
if ((0, _number.isNumeric)(newValue)) {
|
27
|
-
const numericFormat = cellProperties.numericFormat;
|
28
|
-
const cellCulture = numericFormat && numericFormat.culture || '-';
|
29
|
-
const cellFormatPattern = numericFormat && numericFormat.pattern;
|
30
53
|
const className = cellProperties.className || '';
|
31
54
|
const classArr = className.length ? className.split(' ') : [];
|
32
|
-
|
33
|
-
const shortTag = cellCulture.replace('-', '');
|
34
|
-
const langData = _numbro.default.allLanguages ? _numbro.default.allLanguages[cellCulture] : _numbro.default[shortTag];
|
35
|
-
if (langData) {
|
36
|
-
_numbro.default.registerLanguage(langData);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
_numbro.default.setLanguage(cellCulture);
|
40
|
-
newValue = (0, _numbro.default)(newValue).format(cellFormatPattern || '0');
|
55
|
+
newValue = getRenderedValue(newValue, cellProperties);
|
41
56
|
if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 && classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) {
|
42
57
|
classArr.push('htRight');
|
43
58
|
}
|
@@ -4,6 +4,31 @@ import { textRenderer } from "../textRenderer/index.mjs";
|
|
4
4
|
import { isNumeric } from "../../helpers/number.mjs";
|
5
5
|
export const RENDERER_TYPE = 'numeric';
|
6
6
|
|
7
|
+
/**
|
8
|
+
* Get the rendered value.
|
9
|
+
*
|
10
|
+
* @param {*} value Value to be rendered.
|
11
|
+
* @param {CellMeta} cellProperties Cell meta object.
|
12
|
+
* @returns {*} Returns the rendered value.
|
13
|
+
*/
|
14
|
+
export function getRenderedValue(value, cellProperties) {
|
15
|
+
if (isNumeric(value)) {
|
16
|
+
const numericFormat = cellProperties.numericFormat;
|
17
|
+
const cellCulture = numericFormat && numericFormat.culture || '-';
|
18
|
+
const cellFormatPattern = numericFormat && numericFormat.pattern;
|
19
|
+
if (typeof cellCulture !== 'undefined' && !numbro.languages()[cellCulture]) {
|
20
|
+
const shortTag = cellCulture.replace('-', '');
|
21
|
+
const langData = numbro.allLanguages ? numbro.allLanguages[cellCulture] : numbro[shortTag];
|
22
|
+
if (langData) {
|
23
|
+
numbro.registerLanguage(langData);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
numbro.setLanguage(cellCulture);
|
27
|
+
value = numbro(value).format(cellFormatPattern || '0');
|
28
|
+
}
|
29
|
+
return value;
|
30
|
+
}
|
31
|
+
|
7
32
|
/**
|
8
33
|
* Numeric cell renderer.
|
9
34
|
*
|
@@ -14,25 +39,14 @@ export const RENDERER_TYPE = 'numeric';
|
|
14
39
|
* @param {number} col The visual column index.
|
15
40
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
16
41
|
* @param {*} value The rendered value.
|
17
|
-
* @param {object} cellProperties The cell meta object ({@
|
42
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
18
43
|
*/
|
19
44
|
export function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
20
45
|
let newValue = value;
|
21
46
|
if (isNumeric(newValue)) {
|
22
|
-
const numericFormat = cellProperties.numericFormat;
|
23
|
-
const cellCulture = numericFormat && numericFormat.culture || '-';
|
24
|
-
const cellFormatPattern = numericFormat && numericFormat.pattern;
|
25
47
|
const className = cellProperties.className || '';
|
26
48
|
const classArr = className.length ? className.split(' ') : [];
|
27
|
-
|
28
|
-
const shortTag = cellCulture.replace('-', '');
|
29
|
-
const langData = numbro.allLanguages ? numbro.allLanguages[cellCulture] : numbro[shortTag];
|
30
|
-
if (langData) {
|
31
|
-
numbro.registerLanguage(langData);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
numbro.setLanguage(cellCulture);
|
35
|
-
newValue = numbro(newValue).format(cellFormatPattern || '0');
|
49
|
+
newValue = getRenderedValue(newValue, cellProperties);
|
36
50
|
if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 && classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) {
|
37
51
|
classArr.push('htRight');
|
38
52
|
}
|
@@ -15,7 +15,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'password';
|
|
15
15
|
* @param {number} col The visual column index.
|
16
16
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
17
17
|
* @param {*} value The rendered value.
|
18
|
-
* @param {object} cellProperties The cell meta object ({@
|
18
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
19
19
|
*/
|
20
20
|
function passwordRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
21
|
_textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -11,7 +11,7 @@ export const RENDERER_TYPE = 'password';
|
|
11
11
|
* @param {number} col The visual column index.
|
12
12
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
13
13
|
* @param {*} value The rendered value.
|
14
|
-
* @param {object} cellProperties The cell meta object ({@
|
14
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
15
15
|
*/
|
16
16
|
export function passwordRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
17
|
textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -13,7 +13,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'select';
|
|
13
13
|
* @param {number} col The visual column index.
|
14
14
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
15
15
|
* @param {*} value The rendered value.
|
16
|
-
* @param {object} cellProperties The cell meta object ({@
|
16
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
17
17
|
*/
|
18
18
|
function selectRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
19
19
|
_textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -9,7 +9,7 @@ export const RENDERER_TYPE = 'select';
|
|
9
9
|
* @param {number} col The visual column index.
|
10
10
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
11
11
|
* @param {*} value The rendered value.
|
12
|
-
* @param {object} cellProperties The cell meta object ({@
|
12
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
13
13
|
*/
|
14
14
|
export function selectRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
15
15
|
textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -17,7 +17,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'text';
|
|
17
17
|
* @param {number} col The visual column index.
|
18
18
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
19
19
|
* @param {*} value The rendered value.
|
20
|
-
* @param {object} cellProperties The cell meta object ({@
|
20
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
21
21
|
*/
|
22
22
|
function textRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
23
23
|
_baseRenderer.baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -13,7 +13,7 @@ export const RENDERER_TYPE = 'text';
|
|
13
13
|
* @param {number} col The visual column index.
|
14
14
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
15
15
|
* @param {*} value The rendered value.
|
16
|
-
* @param {object} cellProperties The cell meta object ({@
|
16
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
17
17
|
*/
|
18
18
|
export function textRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
19
19
|
baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -15,7 +15,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'time';
|
|
15
15
|
* @param {number} col The visual column index.
|
16
16
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
17
17
|
* @param {*} value The rendered value.
|
18
|
-
* @param {object} cellProperties The cell meta object ({@
|
18
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
19
19
|
*/
|
20
20
|
function timeRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
21
|
_textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -11,7 +11,7 @@ export const RENDERER_TYPE = 'time';
|
|
11
11
|
* @param {number} col The visual column index.
|
12
12
|
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
13
13
|
* @param {*} value The rendered value.
|
14
|
-
* @param {object} cellProperties The cell meta object ({@
|
14
|
+
* @param {object} cellProperties The cell meta object (see {@link Core#getCellMeta}).
|
15
15
|
*/
|
16
16
|
export function timeRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
17
|
textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
@@ -31,6 +31,7 @@ function mouseDown(_ref) {
|
|
31
31
|
const currentSelection = selection.isSelected() ? selection.getSelectedRange().current() : null;
|
32
32
|
const selectedCorner = selection.isSelectedByCorner();
|
33
33
|
const selectedRow = selection.isSelectedByRowHeader();
|
34
|
+
selection.markSource('mouse');
|
34
35
|
if (isShiftKey && currentSelection) {
|
35
36
|
if (coords.row >= 0 && coords.col >= 0 && !controller.cell) {
|
36
37
|
selection.setRangeEnd(coords);
|
@@ -74,6 +75,7 @@ function mouseDown(_ref) {
|
|
74
75
|
});
|
75
76
|
}
|
76
77
|
}
|
78
|
+
selection.markEndSource();
|
77
79
|
}
|
78
80
|
|
79
81
|
/**
|
@@ -102,6 +104,7 @@ function mouseOver(_ref2) {
|
|
102
104
|
const selectedColumn = selection.isSelectedByColumnHeader();
|
103
105
|
const countCols = selection.tableProps.countCols();
|
104
106
|
const countRows = selection.tableProps.countRows();
|
107
|
+
selection.markSource('mouse');
|
105
108
|
if (selectedColumn && !controller.column) {
|
106
109
|
selection.setRangeEnd(cellCoordsFactory(countRows - 1, coords.col));
|
107
110
|
} else if (selectedRow && !controller.row) {
|
@@ -109,6 +112,7 @@ function mouseOver(_ref2) {
|
|
109
112
|
} else if (!controller.cell) {
|
110
113
|
selection.setRangeEnd(coords);
|
111
114
|
}
|
115
|
+
selection.markEndSource();
|
112
116
|
}
|
113
117
|
const handlers = new Map([['mousedown', mouseDown], ['mouseover', mouseOver], ['touchstart', mouseDown]]);
|
114
118
|
|
@@ -25,6 +25,7 @@ export function mouseDown(_ref) {
|
|
25
25
|
const currentSelection = selection.isSelected() ? selection.getSelectedRange().current() : null;
|
26
26
|
const selectedCorner = selection.isSelectedByCorner();
|
27
27
|
const selectedRow = selection.isSelectedByRowHeader();
|
28
|
+
selection.markSource('mouse');
|
28
29
|
if (isShiftKey && currentSelection) {
|
29
30
|
if (coords.row >= 0 && coords.col >= 0 && !controller.cell) {
|
30
31
|
selection.setRangeEnd(coords);
|
@@ -68,6 +69,7 @@ export function mouseDown(_ref) {
|
|
68
69
|
});
|
69
70
|
}
|
70
71
|
}
|
72
|
+
selection.markEndSource();
|
71
73
|
}
|
72
74
|
|
73
75
|
/**
|
@@ -96,6 +98,7 @@ export function mouseOver(_ref2) {
|
|
96
98
|
const selectedColumn = selection.isSelectedByColumnHeader();
|
97
99
|
const countCols = selection.tableProps.countCols();
|
98
100
|
const countRows = selection.tableProps.countRows();
|
101
|
+
selection.markSource('mouse');
|
99
102
|
if (selectedColumn && !controller.column) {
|
100
103
|
selection.setRangeEnd(cellCoordsFactory(countRows - 1, coords.col));
|
101
104
|
} else if (selectedRow && !controller.row) {
|
@@ -103,6 +106,7 @@ export function mouseOver(_ref2) {
|
|
103
106
|
} else if (!controller.cell) {
|
104
107
|
selection.setRangeEnd(coords);
|
105
108
|
}
|
109
|
+
selection.markEndSource();
|
106
110
|
}
|
107
111
|
const handlers = new Map([['mousedown', mouseDown], ['mouseover', mouseOver], ['touchstart', mouseDown]]);
|
108
112
|
|