handsontable 14.0.0-next-c080457-20231107 → 14.0.0-next-7ee54cb-20231108
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/SheetClip/SheetClip.js +2 -2
- package/3rdparty/SheetClip/SheetClip.mjs +2 -2
- package/3rdparty/autoResize/autoResize.js +2 -2
- package/3rdparty/autoResize/autoResize.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +108 -85
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +108 -85
- package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -52
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -52
- package/3rdparty/walkontable/src/cell/coords.js +7 -5
- package/3rdparty/walkontable/src/cell/coords.mjs +7 -5
- package/3rdparty/walkontable/src/core/clone.js +6 -0
- package/3rdparty/walkontable/src/core/clone.mjs +6 -0
- package/3rdparty/walkontable/src/event.js +125 -74
- package/3rdparty/walkontable/src/event.mjs +125 -74
- package/3rdparty/walkontable/src/filter/column.js +16 -0
- package/3rdparty/walkontable/src/filter/column.mjs +16 -0
- package/3rdparty/walkontable/src/filter/row.js +16 -0
- package/3rdparty/walkontable/src/filter/row.mjs +16 -0
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/top.js +1 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/_base.js +12 -5
- package/3rdparty/walkontable/src/renderer/_base.mjs +12 -5
- package/3rdparty/walkontable/src/renderer/cells.js +6 -2
- package/3rdparty/walkontable/src/renderer/cells.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rows.js +5 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/table.js +24 -17
- package/3rdparty/walkontable/src/renderer/table.mjs +24 -17
- package/3rdparty/walkontable/src/scroll.js +2 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -2
- package/3rdparty/walkontable/src/selection/border/border.js +1 -1
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -1
- package/3rdparty/walkontable/src/settings.js +10 -10
- package/3rdparty/walkontable/src/settings.mjs +10 -10
- package/3rdparty/walkontable/src/table.js +3 -3
- package/3rdparty/walkontable/src/table.mjs +3 -3
- package/3rdparty/walkontable/src/utils/column.js +19 -4
- package/3rdparty/walkontable/src/utils/column.mjs +19 -4
- package/3rdparty/walkontable/src/utils/nodesPool.js +5 -0
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +5 -0
- package/3rdparty/walkontable/src/utils/orderView/view.js +13 -6
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +13 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +7 -4
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +7 -4
- package/3rdparty/walkontable/src/utils/row.js +14 -2
- package/3rdparty/walkontable/src/utils/row.mjs +14 -2
- package/3rdparty/walkontable/src/viewport.js +9 -9
- package/3rdparty/walkontable/src/viewport.mjs +9 -9
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.js +25 -25
- package/core.mjs +25 -25
- package/dataMap/dataMap.js +99 -90
- package/dataMap/dataMap.mjs +99 -90
- package/dataMap/dataSource.js +14 -8
- package/dataMap/dataSource.mjs +14 -8
- package/dataMap/metaManager/lazyFactoryMap.js +19 -7
- package/dataMap/metaManager/lazyFactoryMap.mjs +19 -7
- package/dataMap/metaManager/metaLayers/cellMeta.js +8 -3
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +8 -3
- package/dataMap/metaManager/metaLayers/columnMeta.js +7 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +7 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +6 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +6 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +6 -2
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +6 -2
- package/dataMap/metaManager/metaSchema.js +55 -55
- package/dataMap/metaManager/metaSchema.mjs +55 -55
- package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -2
- package/dataMap/metaManager/mods/extendMetaProperties.js +8 -4
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +8 -4
- package/dataMap/metaManager/utils.js +2 -2
- package/dataMap/metaManager/utils.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +7330 -6389
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +154 -154
- package/dist/handsontable.js +7329 -6388
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +28 -28
- package/editorManager.js +105 -95
- package/editorManager.mjs +105 -95
- package/editors/autocompleteEditor/autocompleteEditor.js +47 -46
- package/editors/autocompleteEditor/autocompleteEditor.mjs +46 -45
- package/editors/baseEditor/baseEditor.js +23 -26
- package/editors/baseEditor/baseEditor.mjs +23 -26
- package/editors/dateEditor/dateEditor.js +24 -15
- package/editors/dateEditor/dateEditor.mjs +24 -15
- package/editors/dropdownEditor/dropdownEditor.js +1 -1
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/handsontableEditor/handsontableEditor.js +4 -4
- package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
- package/editors/textEditor/textEditor.js +23 -17
- package/editors/textEditor/textEditor.mjs +24 -18
- package/eventManager.js +8 -0
- package/eventManager.mjs +8 -0
- package/helpers/array.js +2 -2
- package/helpers/array.mjs +2 -2
- package/helpers/dom/element.js +7 -7
- package/helpers/dom/element.mjs +7 -7
- package/helpers/function.js +1 -1
- package/helpers/function.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +4 -4
- package/helpers/object.mjs +4 -4
- package/helpers/string.js +1 -1
- package/helpers/string.mjs +1 -1
- package/package.json +1 -1
- package/pluginHooks.d.ts +0 -2
- package/pluginHooks.js +12 -3
- package/pluginHooks.mjs +12 -3
- package/plugins/autoColumnSize/autoColumnSize.js +141 -130
- package/plugins/autoColumnSize/autoColumnSize.mjs +140 -129
- package/plugins/autoRowSize/autoRowSize.js +112 -125
- package/plugins/autoRowSize/autoRowSize.mjs +110 -123
- package/plugins/autofill/autofill.js +98 -102
- package/plugins/autofill/autofill.mjs +97 -101
- package/plugins/base/base.js +61 -28
- package/plugins/base/base.mjs +60 -28
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +29 -24
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +28 -23
- package/plugins/collapsibleColumns/collapsibleColumns.js +104 -107
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +102 -104
- package/plugins/columnSorting/columnSorting.js +107 -99
- package/plugins/columnSorting/columnSorting.mjs +106 -98
- package/plugins/columnSorting/columnStatesManager.js +12 -6
- package/plugins/columnSorting/columnStatesManager.mjs +12 -6
- package/plugins/columnSummary/columnSummary.js +71 -58
- package/plugins/columnSummary/columnSummary.mjs +70 -57
- package/plugins/columnSummary/endpoints.js +20 -14
- package/plugins/columnSummary/endpoints.mjs +20 -14
- package/plugins/comments/commentEditor.js +30 -2
- package/plugins/comments/commentEditor.mjs +30 -2
- package/plugins/comments/comments.js +158 -169
- package/plugins/comments/comments.mjs +157 -168
- package/plugins/comments/displaySwitch.js +7 -3
- package/plugins/comments/displaySwitch.mjs +7 -3
- package/plugins/contextMenu/commandExecutor.js +15 -2
- package/plugins/contextMenu/commandExecutor.mjs +15 -2
- package/plugins/contextMenu/contextMenu.js +96 -102
- package/plugins/contextMenu/contextMenu.mjs +95 -101
- package/plugins/contextMenu/itemsFactory.js +19 -4
- package/plugins/contextMenu/itemsFactory.mjs +19 -4
- package/plugins/contextMenu/menu/cursor.js +36 -0
- package/plugins/contextMenu/menu/cursor.mjs +36 -0
- package/plugins/contextMenu/menu/menu.js +57 -5
- package/plugins/contextMenu/menu/menu.mjs +57 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +74 -75
- package/plugins/copyPaste/copyPaste.mjs +74 -75
- package/plugins/customBorders/customBorders.js +57 -50
- package/plugins/customBorders/customBorders.mjs +56 -49
- package/plugins/dragToScroll/dragToScroll.js +50 -54
- package/plugins/dragToScroll/dragToScroll.mjs +49 -52
- package/plugins/dropdownMenu/dropdownMenu.js +136 -131
- package/plugins/dropdownMenu/dropdownMenu.mjs +136 -131
- package/plugins/exportFile/dataProvider.js +7 -2
- package/plugins/exportFile/dataProvider.mjs +7 -2
- package/plugins/exportFile/exportFile.js +1 -1
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +14 -6
- package/plugins/exportFile/types/_base.mjs +14 -6
- package/plugins/filters/component/actionBar.js +9 -0
- package/plugins/filters/component/actionBar.mjs +9 -0
- package/plugins/filters/component/condition.js +13 -0
- package/plugins/filters/component/condition.mjs +13 -0
- package/plugins/filters/component/operators.js +9 -0
- package/plugins/filters/component/operators.mjs +9 -0
- package/plugins/filters/component/value.js +9 -0
- package/plugins/filters/component/value.mjs +9 -0
- package/plugins/filters/conditionCollection.js +9 -4
- package/plugins/filters/conditionCollection.mjs +9 -4
- package/plugins/filters/conditionUpdateObserver.js +53 -42
- package/plugins/filters/conditionUpdateObserver.mjs +53 -42
- package/plugins/filters/dataFilter.js +9 -3
- package/plugins/filters/dataFilter.mjs +9 -3
- package/plugins/filters/filters.js +184 -189
- package/plugins/filters/filters.mjs +182 -187
- package/plugins/filters/ui/_base.js +1 -1
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/utils.js +1 -1
- package/plugins/filters/utils.mjs +1 -1
- package/plugins/formulas/engine/settings.js +1 -1
- package/plugins/formulas/engine/settings.mjs +1 -1
- package/plugins/formulas/formulas.js +684 -602
- package/plugins/formulas/formulas.mjs +682 -600
- package/plugins/hiddenColumns/hiddenColumns.js +174 -169
- package/plugins/hiddenColumns/hiddenColumns.mjs +173 -168
- package/plugins/hiddenRows/hiddenRows.js +170 -165
- package/plugins/hiddenRows/hiddenRows.mjs +169 -164
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +66 -53
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +64 -51
- package/plugins/manualColumnMove/manualColumnMove.js +287 -232
- package/plugins/manualColumnMove/manualColumnMove.mjs +286 -231
- package/plugins/manualColumnMove/ui/_base.js +9 -3
- package/plugins/manualColumnMove/ui/_base.mjs +9 -3
- package/plugins/manualColumnResize/manualColumnResize.js +291 -246
- package/plugins/manualColumnResize/manualColumnResize.mjs +290 -244
- package/plugins/manualRowMove/manualRowMove.js +223 -208
- package/plugins/manualRowMove/manualRowMove.mjs +222 -207
- package/plugins/manualRowMove/ui/_base.js +10 -5
- package/plugins/manualRowMove/ui/_base.mjs +10 -5
- package/plugins/manualRowResize/manualRowResize.js +254 -209
- package/plugins/manualRowResize/manualRowResize.mjs +253 -207
- package/plugins/mergeCells/calculations/autofill.js +9 -3
- package/plugins/mergeCells/calculations/autofill.mjs +9 -3
- package/plugins/mergeCells/calculations/selection.js +10 -4
- package/plugins/mergeCells/calculations/selection.mjs +10 -4
- package/plugins/mergeCells/cellCoords.js +16 -6
- package/plugins/mergeCells/cellCoords.mjs +16 -6
- package/plugins/mergeCells/cellsCollection.js +10 -4
- package/plugins/mergeCells/cellsCollection.mjs +10 -4
- package/plugins/mergeCells/mergeCells.js +582 -502
- package/plugins/mergeCells/mergeCells.mjs +580 -500
- package/plugins/multiColumnSorting/multiColumnSorting.js +15 -11
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +15 -11
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +16 -28
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +16 -27
- package/plugins/nestedHeaders/nestedHeaders.js +542 -499
- package/plugins/nestedHeaders/nestedHeaders.mjs +554 -511
- package/plugins/nestedHeaders/stateManager/index.js +1 -1
- package/plugins/nestedHeaders/stateManager/index.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +21 -15
- package/plugins/nestedRows/data/dataManager.mjs +21 -15
- package/plugins/nestedRows/nestedRows.js +328 -279
- package/plugins/nestedRows/nestedRows.mjs +327 -278
- package/plugins/nestedRows/ui/_base.js +7 -1
- package/plugins/nestedRows/ui/_base.mjs +7 -1
- package/plugins/nestedRows/ui/collapsing.js +2 -2
- package/plugins/nestedRows/ui/collapsing.mjs +2 -2
- package/plugins/nestedRows/ui/contextMenu.js +28 -18
- package/plugins/nestedRows/ui/contextMenu.mjs +28 -18
- package/plugins/nestedRows/utils/rowMoveController.js +12 -4
- package/plugins/nestedRows/utils/rowMoveController.mjs +12 -4
- package/plugins/persistentState/persistentState.js +14 -11
- package/plugins/persistentState/persistentState.mjs +14 -11
- package/plugins/persistentState/storage.js +11 -6
- package/plugins/persistentState/storage.mjs +11 -6
- package/plugins/registry.js +2 -2
- package/plugins/registry.mjs +2 -2
- package/plugins/search/search.js +57 -46
- package/plugins/search/search.mjs +56 -45
- package/plugins/touchScroll/touchScroll.js +102 -100
- package/plugins/touchScroll/touchScroll.mjs +100 -98
- package/plugins/trimRows/trimRows.js +33 -28
- package/plugins/trimRows/trimRows.mjs +32 -27
- package/plugins/undoRedo/undoRedo.js +2 -2
- package/plugins/undoRedo/undoRedo.mjs +2 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +11 -11
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +11 -11
- package/renderers/baseRenderer/baseRenderer.js +2 -2
- package/renderers/baseRenderer/baseRenderer.mjs +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +23 -23
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +23 -23
- package/renderers/dateRenderer/dateRenderer.js +4 -4
- package/renderers/dateRenderer/dateRenderer.mjs +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.js +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +4 -4
- package/renderers/htmlRenderer/htmlRenderer.js +4 -4
- package/renderers/htmlRenderer/htmlRenderer.mjs +4 -4
- package/renderers/numericRenderer/numericRenderer.js +3 -3
- package/renderers/numericRenderer/numericRenderer.mjs +3 -3
- package/renderers/passwordRenderer/passwordRenderer.js +3 -3
- package/renderers/passwordRenderer/passwordRenderer.mjs +3 -3
- package/renderers/selectRenderer/selectRenderer.js +4 -4
- package/renderers/selectRenderer/selectRenderer.mjs +4 -4
- package/renderers/textRenderer/textRenderer.js +5 -5
- package/renderers/textRenderer/textRenderer.mjs +5 -5
- package/renderers/timeRenderer/timeRenderer.js +3 -3
- package/renderers/timeRenderer/timeRenderer.mjs +3 -3
- package/selection/range.js +12 -2
- package/selection/range.mjs +12 -2
- package/selection/selection.js +28 -10
- package/selection/selection.mjs +28 -10
- package/selection/utils.js +24 -14
- package/selection/utils.mjs +25 -15
- package/shortcuts/manager.js +1 -1
- package/shortcuts/manager.mjs +1 -1
- package/tableView.js +208 -200
- package/tableView.mjs +208 -200
- package/translations/changesObservable/utils.js +2 -2
- package/translations/changesObservable/utils.mjs +2 -2
- package/translations/indexMapper.js +25 -22
- package/translations/indexMapper.mjs +25 -22
- package/translations/mapCollections/aggregatedCollection.js +8 -2
- package/translations/mapCollections/aggregatedCollection.mjs +8 -2
- package/translations/mapCollections/mapCollection.js +5 -2
- package/translations/mapCollections/mapCollection.mjs +5 -2
- package/translations/maps/indexMap.js +6 -1
- package/translations/maps/indexMap.mjs +6 -1
- package/translations/maps/utils/physicallyIndexed.js +2 -2
- package/translations/maps/utils/physicallyIndexed.mjs +2 -2
- package/utils/dataStructures/linkedList.js +10 -6
- package/utils/dataStructures/linkedList.mjs +10 -6
- package/utils/dataStructures/queue.js +1 -1
- package/utils/dataStructures/queue.mjs +1 -1
- package/utils/dataStructures/stack.js +1 -1
- package/utils/dataStructures/stack.mjs +1 -1
- package/utils/ghostTable.js +2 -2
- package/utils/ghostTable.mjs +2 -2
- package/utils/interval.js +73 -36
- package/utils/interval.mjs +73 -36
- package/utils/parseTable.js +1 -1
- package/utils/parseTable.mjs +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -1
- package/validators/dateValidator/dateValidator.js +1 -1
- package/validators/dateValidator/dateValidator.mjs +1 -1
- package/validators/numericValidator/numericValidator.js +1 -1
- package/validators/numericValidator/numericValidator.mjs +1 -1
@@ -50,7 +50,7 @@ _pluginHooks.default.getSingleton().add('modifyAutoColumnSizeSeed', function (bu
|
|
50
50
|
* Checkbox renderer.
|
51
51
|
*
|
52
52
|
* @private
|
53
|
-
* @param {Core}
|
53
|
+
* @param {Core} hotInstance The Handsontable instance.
|
54
54
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
55
55
|
* @param {number} row The visual row index.
|
56
56
|
* @param {number} col The visual column index.
|
@@ -58,13 +58,13 @@ _pluginHooks.default.getSingleton().add('modifyAutoColumnSizeSeed', function (bu
|
|
58
58
|
* @param {*} value The rendered value.
|
59
59
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
60
60
|
*/
|
61
|
-
function checkboxRenderer(
|
61
|
+
function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
62
62
|
const {
|
63
63
|
rootDocument
|
64
|
-
} =
|
65
|
-
const ariaEnabled =
|
66
|
-
_baseRenderer.baseRenderer.apply(this, [
|
67
|
-
registerEvents(
|
64
|
+
} = hotInstance;
|
65
|
+
const ariaEnabled = hotInstance.getSettings().ariaTags;
|
66
|
+
_baseRenderer.baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
67
|
+
registerEvents(hotInstance);
|
68
68
|
let input = createInput(rootDocument);
|
69
69
|
const labelOptions = cellProperties.label;
|
70
70
|
let badValue = false;
|
@@ -90,14 +90,14 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
90
90
|
}
|
91
91
|
(0, _element.setAttribute)(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
|
92
92
|
if (ariaEnabled) {
|
93
|
-
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)(input.checked ?
|
93
|
+
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)(input.checked ? hotInstance.getTranslatedPhrase(_constants.CHECKBOX_CHECKED) : hotInstance.getTranslatedPhrase(_constants.CHECKBOX_UNCHECKED)), (0, _a11y.A11Y_CHECKED)(input.checked), (0, _a11y.A11Y_CHECKBOX)()]);
|
94
94
|
}
|
95
95
|
if (!badValue && labelOptions) {
|
96
96
|
let labelText = '';
|
97
97
|
if (labelOptions.value) {
|
98
98
|
labelText = typeof labelOptions.value === 'function' ? labelOptions.value.call(this, row, col, prop, value) : labelOptions.value;
|
99
99
|
} else if (labelOptions.property) {
|
100
|
-
const labelValue =
|
100
|
+
const labelValue = hotInstance.getDataAtRowProp(row, labelOptions.property);
|
101
101
|
labelText = labelValue !== null ? labelValue : '';
|
102
102
|
}
|
103
103
|
const label = createLabel(rootDocument, labelText, labelOptions.separated !== true);
|
@@ -125,8 +125,8 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
125
125
|
if (badValue) {
|
126
126
|
TD.appendChild(rootDocument.createTextNode('#bad-value#'));
|
127
127
|
}
|
128
|
-
if (!isListeningKeyDownEvent.has(
|
129
|
-
isListeningKeyDownEvent.set(
|
128
|
+
if (!isListeningKeyDownEvent.has(hotInstance)) {
|
129
|
+
isListeningKeyDownEvent.set(hotInstance, true);
|
130
130
|
registerShortcuts();
|
131
131
|
}
|
132
132
|
|
@@ -136,7 +136,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
136
136
|
* @private
|
137
137
|
*/
|
138
138
|
function registerShortcuts() {
|
139
|
-
const shortcutManager =
|
139
|
+
const shortcutManager = hotInstance.getShortcutManager();
|
140
140
|
const gridContext = shortcutManager.getContext('grid');
|
141
141
|
const config = {
|
142
142
|
group: SHORTCUTS_GROUP
|
@@ -154,7 +154,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
154
154
|
return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
|
155
155
|
},
|
156
156
|
|
157
|
-
runOnlyIf: () =>
|
157
|
+
runOnlyIf: () => hotInstance.getSettings().enterBeginsEditing
|
158
158
|
}, {
|
159
159
|
keys: [['delete'], ['backspace']],
|
160
160
|
callback: () => {
|
@@ -175,7 +175,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
175
175
|
*/
|
176
176
|
function changeSelectedCheckboxesState() {
|
177
177
|
let uncheckCheckbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
178
|
-
const selRange =
|
178
|
+
const selRange = hotInstance.getSelectedRange();
|
179
179
|
if (!selRange) {
|
180
180
|
return;
|
181
181
|
}
|
@@ -191,7 +191,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
191
191
|
const changes = [];
|
192
192
|
for (let visualRow = startRow; visualRow <= endRow; visualRow += 1) {
|
193
193
|
for (let visualColumn = startColumn; visualColumn <= endColumn; visualColumn += 1) {
|
194
|
-
const cachedCellProperties =
|
194
|
+
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
195
195
|
if (cachedCellProperties.type !== 'checkbox') {
|
196
196
|
return;
|
197
197
|
}
|
@@ -206,12 +206,12 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
206
206
|
if (typeof cachedCellProperties.uncheckedTemplate === 'undefined') {
|
207
207
|
cachedCellProperties.uncheckedTemplate = false;
|
208
208
|
}
|
209
|
-
const dataAtCell =
|
209
|
+
const dataAtCell = hotInstance.getDataAtCell(visualRow, visualColumn);
|
210
210
|
if (uncheckCheckbox === false) {
|
211
211
|
if ([cachedCellProperties.checkedTemplate, cachedCellProperties.checkedTemplate.toString()].includes(dataAtCell)) {
|
212
212
|
// eslint-disable-line max-len
|
213
213
|
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
214
|
-
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null,
|
214
|
+
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null, undefined].includes(dataAtCell)) {
|
215
215
|
// eslint-disable-line max-len
|
216
216
|
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate]);
|
217
217
|
}
|
@@ -221,7 +221,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
221
221
|
}
|
222
222
|
}
|
223
223
|
if (changes.length > 0) {
|
224
|
-
|
224
|
+
hotInstance.setDataAtCell(changes);
|
225
225
|
}
|
226
226
|
}
|
227
227
|
}
|
@@ -233,7 +233,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
233
233
|
* @private
|
234
234
|
*/
|
235
235
|
function areSelectedCheckboxCells() {
|
236
|
-
const selRange =
|
236
|
+
const selRange = hotInstance.getSelectedRange();
|
237
237
|
if (!selRange) {
|
238
238
|
return;
|
239
239
|
}
|
@@ -242,12 +242,12 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
242
242
|
const bottomRight = selRange[key].getBottomEndCorner();
|
243
243
|
for (let visualRow = topLeft.row; visualRow <= bottomRight.row; visualRow++) {
|
244
244
|
for (let visualColumn = topLeft.col; visualColumn <= bottomRight.col; visualColumn++) {
|
245
|
-
const cachedCellProperties =
|
245
|
+
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
246
246
|
if (cachedCellProperties.type !== 'checkbox') {
|
247
247
|
return false;
|
248
248
|
}
|
249
|
-
const cell =
|
250
|
-
if (cell === null || cell ===
|
249
|
+
const cell = hotInstance.getCell(visualRow, visualColumn);
|
250
|
+
if (cell === null || cell === undefined) {
|
251
251
|
return true;
|
252
252
|
} else {
|
253
253
|
const checkboxes = cell.querySelectorAll('input[type=checkbox]');
|
@@ -381,9 +381,9 @@ function onChange(event, instance) {
|
|
381
381
|
if (!cellProperties.readOnly) {
|
382
382
|
let newCheckboxValue = null;
|
383
383
|
if (event.target.checked) {
|
384
|
-
newCheckboxValue = cellProperties.uncheckedTemplate ===
|
384
|
+
newCheckboxValue = cellProperties.uncheckedTemplate === undefined ? true : cellProperties.checkedTemplate;
|
385
385
|
} else {
|
386
|
-
newCheckboxValue = cellProperties.uncheckedTemplate ===
|
386
|
+
newCheckboxValue = cellProperties.uncheckedTemplate === undefined ? false : cellProperties.uncheckedTemplate;
|
387
387
|
}
|
388
388
|
instance.setDataAtCell(row, col, newCheckboxValue);
|
389
389
|
}
|
@@ -45,7 +45,7 @@ Hooks.getSingleton().add('modifyAutoColumnSizeSeed', function (bundleSeed, cellM
|
|
45
45
|
* Checkbox renderer.
|
46
46
|
*
|
47
47
|
* @private
|
48
|
-
* @param {Core}
|
48
|
+
* @param {Core} hotInstance The Handsontable instance.
|
49
49
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
50
50
|
* @param {number} row The visual row index.
|
51
51
|
* @param {number} col The visual column index.
|
@@ -53,13 +53,13 @@ Hooks.getSingleton().add('modifyAutoColumnSizeSeed', function (bundleSeed, cellM
|
|
53
53
|
* @param {*} value The rendered value.
|
54
54
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
55
55
|
*/
|
56
|
-
export function checkboxRenderer(
|
56
|
+
export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
57
57
|
const {
|
58
58
|
rootDocument
|
59
|
-
} =
|
60
|
-
const ariaEnabled =
|
61
|
-
baseRenderer.apply(this, [
|
62
|
-
registerEvents(
|
59
|
+
} = hotInstance;
|
60
|
+
const ariaEnabled = hotInstance.getSettings().ariaTags;
|
61
|
+
baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
62
|
+
registerEvents(hotInstance);
|
63
63
|
let input = createInput(rootDocument);
|
64
64
|
const labelOptions = cellProperties.label;
|
65
65
|
let badValue = false;
|
@@ -85,14 +85,14 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
85
85
|
}
|
86
86
|
setAttribute(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
|
87
87
|
if (ariaEnabled) {
|
88
|
-
setAttribute(input, [A11Y_LABEL(input.checked ?
|
88
|
+
setAttribute(input, [A11Y_LABEL(input.checked ? hotInstance.getTranslatedPhrase(CHECKBOX_CHECKED) : hotInstance.getTranslatedPhrase(CHECKBOX_UNCHECKED)), A11Y_CHECKED(input.checked), A11Y_CHECKBOX()]);
|
89
89
|
}
|
90
90
|
if (!badValue && labelOptions) {
|
91
91
|
let labelText = '';
|
92
92
|
if (labelOptions.value) {
|
93
93
|
labelText = typeof labelOptions.value === 'function' ? labelOptions.value.call(this, row, col, prop, value) : labelOptions.value;
|
94
94
|
} else if (labelOptions.property) {
|
95
|
-
const labelValue =
|
95
|
+
const labelValue = hotInstance.getDataAtRowProp(row, labelOptions.property);
|
96
96
|
labelText = labelValue !== null ? labelValue : '';
|
97
97
|
}
|
98
98
|
const label = createLabel(rootDocument, labelText, labelOptions.separated !== true);
|
@@ -120,8 +120,8 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
120
120
|
if (badValue) {
|
121
121
|
TD.appendChild(rootDocument.createTextNode('#bad-value#'));
|
122
122
|
}
|
123
|
-
if (!isListeningKeyDownEvent.has(
|
124
|
-
isListeningKeyDownEvent.set(
|
123
|
+
if (!isListeningKeyDownEvent.has(hotInstance)) {
|
124
|
+
isListeningKeyDownEvent.set(hotInstance, true);
|
125
125
|
registerShortcuts();
|
126
126
|
}
|
127
127
|
|
@@ -131,7 +131,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
131
131
|
* @private
|
132
132
|
*/
|
133
133
|
function registerShortcuts() {
|
134
|
-
const shortcutManager =
|
134
|
+
const shortcutManager = hotInstance.getShortcutManager();
|
135
135
|
const gridContext = shortcutManager.getContext('grid');
|
136
136
|
const config = {
|
137
137
|
group: SHORTCUTS_GROUP
|
@@ -149,7 +149,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
149
149
|
return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
|
150
150
|
},
|
151
151
|
|
152
|
-
runOnlyIf: () =>
|
152
|
+
runOnlyIf: () => hotInstance.getSettings().enterBeginsEditing
|
153
153
|
}, {
|
154
154
|
keys: [['delete'], ['backspace']],
|
155
155
|
callback: () => {
|
@@ -170,7 +170,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
170
170
|
*/
|
171
171
|
function changeSelectedCheckboxesState() {
|
172
172
|
let uncheckCheckbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
173
|
-
const selRange =
|
173
|
+
const selRange = hotInstance.getSelectedRange();
|
174
174
|
if (!selRange) {
|
175
175
|
return;
|
176
176
|
}
|
@@ -186,7 +186,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
186
186
|
const changes = [];
|
187
187
|
for (let visualRow = startRow; visualRow <= endRow; visualRow += 1) {
|
188
188
|
for (let visualColumn = startColumn; visualColumn <= endColumn; visualColumn += 1) {
|
189
|
-
const cachedCellProperties =
|
189
|
+
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
190
190
|
if (cachedCellProperties.type !== 'checkbox') {
|
191
191
|
return;
|
192
192
|
}
|
@@ -201,12 +201,12 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
201
201
|
if (typeof cachedCellProperties.uncheckedTemplate === 'undefined') {
|
202
202
|
cachedCellProperties.uncheckedTemplate = false;
|
203
203
|
}
|
204
|
-
const dataAtCell =
|
204
|
+
const dataAtCell = hotInstance.getDataAtCell(visualRow, visualColumn);
|
205
205
|
if (uncheckCheckbox === false) {
|
206
206
|
if ([cachedCellProperties.checkedTemplate, cachedCellProperties.checkedTemplate.toString()].includes(dataAtCell)) {
|
207
207
|
// eslint-disable-line max-len
|
208
208
|
changes.push([visualRow, visualColumn, cachedCellProperties.uncheckedTemplate]);
|
209
|
-
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null,
|
209
|
+
} else if ([cachedCellProperties.uncheckedTemplate, cachedCellProperties.uncheckedTemplate.toString(), null, undefined].includes(dataAtCell)) {
|
210
210
|
// eslint-disable-line max-len
|
211
211
|
changes.push([visualRow, visualColumn, cachedCellProperties.checkedTemplate]);
|
212
212
|
}
|
@@ -216,7 +216,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
216
216
|
}
|
217
217
|
}
|
218
218
|
if (changes.length > 0) {
|
219
|
-
|
219
|
+
hotInstance.setDataAtCell(changes);
|
220
220
|
}
|
221
221
|
}
|
222
222
|
}
|
@@ -228,7 +228,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
228
228
|
* @private
|
229
229
|
*/
|
230
230
|
function areSelectedCheckboxCells() {
|
231
|
-
const selRange =
|
231
|
+
const selRange = hotInstance.getSelectedRange();
|
232
232
|
if (!selRange) {
|
233
233
|
return;
|
234
234
|
}
|
@@ -237,12 +237,12 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
|
|
237
237
|
const bottomRight = selRange[key].getBottomEndCorner();
|
238
238
|
for (let visualRow = topLeft.row; visualRow <= bottomRight.row; visualRow++) {
|
239
239
|
for (let visualColumn = topLeft.col; visualColumn <= bottomRight.col; visualColumn++) {
|
240
|
-
const cachedCellProperties =
|
240
|
+
const cachedCellProperties = hotInstance.getCellMeta(visualRow, visualColumn);
|
241
241
|
if (cachedCellProperties.type !== 'checkbox') {
|
242
242
|
return false;
|
243
243
|
}
|
244
|
-
const cell =
|
245
|
-
if (cell === null || cell ===
|
244
|
+
const cell = hotInstance.getCell(visualRow, visualColumn);
|
245
|
+
if (cell === null || cell === undefined) {
|
246
246
|
return true;
|
247
247
|
} else {
|
248
248
|
const checkboxes = cell.querySelectorAll('input[type=checkbox]');
|
@@ -376,9 +376,9 @@ function onChange(event, instance) {
|
|
376
376
|
if (!cellProperties.readOnly) {
|
377
377
|
let newCheckboxValue = null;
|
378
378
|
if (event.target.checked) {
|
379
|
-
newCheckboxValue = cellProperties.uncheckedTemplate ===
|
379
|
+
newCheckboxValue = cellProperties.uncheckedTemplate === undefined ? true : cellProperties.checkedTemplate;
|
380
380
|
} else {
|
381
|
-
newCheckboxValue = cellProperties.uncheckedTemplate ===
|
381
|
+
newCheckboxValue = cellProperties.uncheckedTemplate === undefined ? false : cellProperties.uncheckedTemplate;
|
382
382
|
}
|
383
383
|
instance.setDataAtCell(row, col, newCheckboxValue);
|
384
384
|
}
|
@@ -11,7 +11,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'date';
|
|
11
11
|
* Handsontable renderer.
|
12
12
|
*
|
13
13
|
* @private
|
14
|
-
* @param {Core}
|
14
|
+
* @param {Core} hotInstance The Handsontable instance.
|
15
15
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
16
16
|
* @param {number} row The visual row index.
|
17
17
|
* @param {number} col The visual column index.
|
@@ -19,9 +19,9 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'date';
|
|
19
19
|
* @param {*} value The rendered value.
|
20
20
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
21
21
|
*/
|
22
|
-
function dateRenderer(
|
23
|
-
_autocompleteRenderer.autocompleteRenderer.apply(this, [
|
24
|
-
if (
|
22
|
+
function dateRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
23
|
+
_autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
24
|
+
if (hotInstance.getSettings().ariaTags) {
|
25
25
|
(0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('dialog'), (0, _a11y.A11Y_EXPANDED)('false')]);
|
26
26
|
}
|
27
27
|
}
|
@@ -7,7 +7,7 @@ export const RENDERER_TYPE = 'date';
|
|
7
7
|
* Handsontable renderer.
|
8
8
|
*
|
9
9
|
* @private
|
10
|
-
* @param {Core}
|
10
|
+
* @param {Core} hotInstance The Handsontable instance.
|
11
11
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
12
12
|
* @param {number} row The visual row index.
|
13
13
|
* @param {number} col The visual column index.
|
@@ -15,9 +15,9 @@ export const RENDERER_TYPE = 'date';
|
|
15
15
|
* @param {*} value The rendered value.
|
16
16
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
17
17
|
*/
|
18
|
-
export function dateRenderer(
|
19
|
-
autocompleteRenderer.apply(this, [
|
20
|
-
if (
|
18
|
+
export function dateRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
19
|
+
autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
20
|
+
if (hotInstance.getSettings().ariaTags) {
|
21
21
|
setAttribute(TD, [A11Y_HASPOPUP('dialog'), A11Y_EXPANDED('false')]);
|
22
22
|
}
|
23
23
|
}
|
@@ -11,7 +11,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'handsontable';
|
|
11
11
|
* Handsontable renderer.
|
12
12
|
*
|
13
13
|
* @private
|
14
|
-
* @param {Core}
|
14
|
+
* @param {Core} hotInstance The Handsontable instance.
|
15
15
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
16
16
|
* @param {number} row The visual row index.
|
17
17
|
* @param {number} col The visual column index.
|
@@ -19,9 +19,9 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'handsontable';
|
|
19
19
|
* @param {*} value The rendered value.
|
20
20
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
21
21
|
*/
|
22
|
-
function handsontableRenderer(
|
23
|
-
_autocompleteRenderer.autocompleteRenderer.apply(this, [
|
24
|
-
if (
|
22
|
+
function handsontableRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
23
|
+
_autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
24
|
+
if (hotInstance.getSettings().ariaTags) {
|
25
25
|
(0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('true'), (0, _a11y.A11Y_EXPANDED)('false')]);
|
26
26
|
}
|
27
27
|
}
|
@@ -7,7 +7,7 @@ export const RENDERER_TYPE = 'handsontable';
|
|
7
7
|
* Handsontable renderer.
|
8
8
|
*
|
9
9
|
* @private
|
10
|
-
* @param {Core}
|
10
|
+
* @param {Core} hotInstance The Handsontable instance.
|
11
11
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
12
12
|
* @param {number} row The visual row index.
|
13
13
|
* @param {number} col The visual column index.
|
@@ -15,9 +15,9 @@ export const RENDERER_TYPE = 'handsontable';
|
|
15
15
|
* @param {*} value The rendered value.
|
16
16
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
17
17
|
*/
|
18
|
-
export function handsontableRenderer(
|
19
|
-
autocompleteRenderer.apply(this, [
|
20
|
-
if (
|
18
|
+
export function handsontableRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
19
|
+
autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
20
|
+
if (hotInstance.getSettings().ariaTags) {
|
21
21
|
setAttribute(TD, [A11Y_HASPOPUP('true'), A11Y_EXPANDED('false')]);
|
22
22
|
}
|
23
23
|
}
|
@@ -8,7 +8,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'html';
|
|
8
8
|
|
9
9
|
/**
|
10
10
|
* @private
|
11
|
-
* @param {Core}
|
11
|
+
* @param {Core} hotInstance The Handsontable instance.
|
12
12
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
13
13
|
* @param {number} row The visual row index.
|
14
14
|
* @param {number} col The visual column index.
|
@@ -16,8 +16,8 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'html';
|
|
16
16
|
* @param {*} value The rendered value.
|
17
17
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
18
18
|
*/
|
19
|
-
function htmlRenderer(
|
20
|
-
_baseRenderer.baseRenderer.apply(this, [
|
21
|
-
(0, _element.fastInnerHTML)(TD, value === null || value ===
|
19
|
+
function htmlRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
20
|
+
_baseRenderer.baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
21
|
+
(0, _element.fastInnerHTML)(TD, value === null || value === undefined ? '' : value, false);
|
22
22
|
}
|
23
23
|
htmlRenderer.RENDERER_TYPE = RENDERER_TYPE;
|
@@ -4,7 +4,7 @@ export const RENDERER_TYPE = 'html';
|
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @private
|
7
|
-
* @param {Core}
|
7
|
+
* @param {Core} hotInstance The Handsontable instance.
|
8
8
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
9
9
|
* @param {number} row The visual row index.
|
10
10
|
* @param {number} col The visual column index.
|
@@ -12,8 +12,8 @@ export const RENDERER_TYPE = 'html';
|
|
12
12
|
* @param {*} value The rendered value.
|
13
13
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
14
14
|
*/
|
15
|
-
export function htmlRenderer(
|
16
|
-
baseRenderer.apply(this, [
|
17
|
-
fastInnerHTML(TD, value === null || value ===
|
15
|
+
export function htmlRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
16
|
+
baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
17
|
+
fastInnerHTML(TD, value === null || value === undefined ? '' : value, false);
|
18
18
|
}
|
19
19
|
htmlRenderer.RENDERER_TYPE = RENDERER_TYPE;
|
@@ -13,7 +13,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'numeric';
|
|
13
13
|
* Numeric cell renderer.
|
14
14
|
*
|
15
15
|
* @private
|
16
|
-
* @param {Core}
|
16
|
+
* @param {Core} hotInstance The Handsontable instance.
|
17
17
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
18
18
|
* @param {number} row The visual row index.
|
19
19
|
* @param {number} col The visual column index.
|
@@ -21,7 +21,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'numeric';
|
|
21
21
|
* @param {*} value The rendered value.
|
22
22
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
23
23
|
*/
|
24
|
-
function numericRenderer(
|
24
|
+
function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
25
25
|
let newValue = value;
|
26
26
|
if ((0, _number.isNumeric)(newValue)) {
|
27
27
|
const numericFormat = cellProperties.numericFormat;
|
@@ -47,6 +47,6 @@ function numericRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
47
47
|
cellProperties.className = classArr.join(' ');
|
48
48
|
TD.dir = 'ltr';
|
49
49
|
}
|
50
|
-
(0, _textRenderer.textRenderer)(
|
50
|
+
(0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, newValue, cellProperties);
|
51
51
|
}
|
52
52
|
numericRenderer.RENDERER_TYPE = RENDERER_TYPE;
|
@@ -8,7 +8,7 @@ export const RENDERER_TYPE = 'numeric';
|
|
8
8
|
* Numeric cell renderer.
|
9
9
|
*
|
10
10
|
* @private
|
11
|
-
* @param {Core}
|
11
|
+
* @param {Core} hotInstance The Handsontable instance.
|
12
12
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
13
13
|
* @param {number} row The visual row index.
|
14
14
|
* @param {number} col The visual column index.
|
@@ -16,7 +16,7 @@ export const RENDERER_TYPE = 'numeric';
|
|
16
16
|
* @param {*} value The rendered value.
|
17
17
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
18
18
|
*/
|
19
|
-
export function numericRenderer(
|
19
|
+
export function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
20
20
|
let newValue = value;
|
21
21
|
if (isNumeric(newValue)) {
|
22
22
|
const numericFormat = cellProperties.numericFormat;
|
@@ -42,6 +42,6 @@ export function numericRenderer(instance, TD, row, col, prop, value, cellPropert
|
|
42
42
|
cellProperties.className = classArr.join(' ');
|
43
43
|
TD.dir = 'ltr';
|
44
44
|
}
|
45
|
-
textRenderer(
|
45
|
+
textRenderer(hotInstance, TD, row, col, prop, newValue, cellProperties);
|
46
46
|
}
|
47
47
|
numericRenderer.RENDERER_TYPE = RENDERER_TYPE;
|
@@ -9,7 +9,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'password';
|
|
9
9
|
|
10
10
|
/**
|
11
11
|
* @private
|
12
|
-
* @param {Core}
|
12
|
+
* @param {Core} hotInstance The Handsontable instance.
|
13
13
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
14
14
|
* @param {number} row The visual row index.
|
15
15
|
* @param {number} col The visual column index.
|
@@ -17,8 +17,8 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'password';
|
|
17
17
|
* @param {*} value The rendered value.
|
18
18
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
19
19
|
*/
|
20
|
-
function passwordRenderer(
|
21
|
-
_textRenderer.textRenderer.apply(this, [
|
20
|
+
function passwordRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
|
+
_textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
22
22
|
const hashLength = cellProperties.hashLength || TD.innerHTML.length;
|
23
23
|
const hashSymbol = cellProperties.hashSymbol || '*';
|
24
24
|
let hash = '';
|
@@ -5,7 +5,7 @@ export const RENDERER_TYPE = 'password';
|
|
5
5
|
|
6
6
|
/**
|
7
7
|
* @private
|
8
|
-
* @param {Core}
|
8
|
+
* @param {Core} hotInstance The Handsontable instance.
|
9
9
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
10
10
|
* @param {number} row The visual row index.
|
11
11
|
* @param {number} col The visual column index.
|
@@ -13,8 +13,8 @@ export const RENDERER_TYPE = 'password';
|
|
13
13
|
* @param {*} value The rendered value.
|
14
14
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
15
15
|
*/
|
16
|
-
export function passwordRenderer(
|
17
|
-
textRenderer.apply(this, [
|
16
|
+
export function passwordRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
|
+
textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
18
18
|
const hashLength = cellProperties.hashLength || TD.innerHTML.length;
|
19
19
|
const hashSymbol = cellProperties.hashSymbol || '*';
|
20
20
|
let hash = '';
|
@@ -9,7 +9,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'select';
|
|
9
9
|
|
10
10
|
/**
|
11
11
|
* @private
|
12
|
-
* @param {Core}
|
12
|
+
* @param {Core} hotInstance The Handsontable instance.
|
13
13
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
14
14
|
* @param {number} row The visual row index.
|
15
15
|
* @param {number} col The visual column index.
|
@@ -17,9 +17,9 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'select';
|
|
17
17
|
* @param {*} value The rendered value.
|
18
18
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
19
19
|
*/
|
20
|
-
function selectRenderer(
|
21
|
-
_textRenderer.textRenderer.apply(this, [
|
22
|
-
if (
|
20
|
+
function selectRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
21
|
+
_textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
22
|
+
if (hotInstance.getSettings().ariaTags) {
|
23
23
|
(0, _element.setAttribute)(TD, ...(0, _a11y.A11Y_HASPOPUP)('listbox'));
|
24
24
|
}
|
25
25
|
}
|
@@ -5,7 +5,7 @@ export const RENDERER_TYPE = 'select';
|
|
5
5
|
|
6
6
|
/**
|
7
7
|
* @private
|
8
|
-
* @param {Core}
|
8
|
+
* @param {Core} hotInstance The Handsontable instance.
|
9
9
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
10
10
|
* @param {number} row The visual row index.
|
11
11
|
* @param {number} col The visual column index.
|
@@ -13,9 +13,9 @@ export const RENDERER_TYPE = 'select';
|
|
13
13
|
* @param {*} value The rendered value.
|
14
14
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
15
15
|
*/
|
16
|
-
export function selectRenderer(
|
17
|
-
textRenderer.apply(this, [
|
18
|
-
if (
|
16
|
+
export function selectRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
17
|
+
textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
18
|
+
if (hotInstance.getSettings().ariaTags) {
|
19
19
|
setAttribute(TD, ...A11Y_HASPOPUP('listbox'));
|
20
20
|
}
|
21
21
|
}
|
@@ -11,7 +11,7 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'text';
|
|
11
11
|
* Default text renderer.
|
12
12
|
*
|
13
13
|
* @private
|
14
|
-
* @param {Core}
|
14
|
+
* @param {Core} hotInstance The Handsontable instance.
|
15
15
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
16
16
|
* @param {number} row The visual row index.
|
17
17
|
* @param {number} col The visual column index.
|
@@ -19,8 +19,8 @@ const RENDERER_TYPE = exports.RENDERER_TYPE = 'text';
|
|
19
19
|
* @param {*} value The rendered value.
|
20
20
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
21
21
|
*/
|
22
|
-
function textRenderer(
|
23
|
-
_baseRenderer.baseRenderer.apply(this, [
|
22
|
+
function textRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
23
|
+
_baseRenderer.baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
24
24
|
let escaped = value;
|
25
25
|
if (!escaped && cellProperties.placeholder) {
|
26
26
|
escaped = cellProperties.placeholder;
|
@@ -31,11 +31,11 @@ function textRenderer(instance, TD, row, col, prop, value, cellProperties) {
|
|
31
31
|
}
|
32
32
|
if (cellProperties.rendererTemplate) {
|
33
33
|
(0, _element.empty)(TD);
|
34
|
-
const TEMPLATE =
|
34
|
+
const TEMPLATE = hotInstance.rootDocument.createElement('TEMPLATE');
|
35
35
|
TEMPLATE.setAttribute('bind', '{{}}');
|
36
36
|
TEMPLATE.innerHTML = cellProperties.rendererTemplate;
|
37
37
|
HTMLTemplateElement.decorate(TEMPLATE);
|
38
|
-
TEMPLATE.model =
|
38
|
+
TEMPLATE.model = hotInstance.getSourceDataAtRow(row);
|
39
39
|
TD.appendChild(TEMPLATE);
|
40
40
|
} else {
|
41
41
|
// this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips
|
@@ -7,7 +7,7 @@ export const RENDERER_TYPE = 'text';
|
|
7
7
|
* Default text renderer.
|
8
8
|
*
|
9
9
|
* @private
|
10
|
-
* @param {Core}
|
10
|
+
* @param {Core} hotInstance The Handsontable instance.
|
11
11
|
* @param {HTMLTableCellElement} TD The rendered cell element.
|
12
12
|
* @param {number} row The visual row index.
|
13
13
|
* @param {number} col The visual column index.
|
@@ -15,8 +15,8 @@ export const RENDERER_TYPE = 'text';
|
|
15
15
|
* @param {*} value The rendered value.
|
16
16
|
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
17
17
|
*/
|
18
|
-
export function textRenderer(
|
19
|
-
baseRenderer.apply(this, [
|
18
|
+
export function textRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
|
19
|
+
baseRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
|
20
20
|
let escaped = value;
|
21
21
|
if (!escaped && cellProperties.placeholder) {
|
22
22
|
escaped = cellProperties.placeholder;
|
@@ -27,11 +27,11 @@ export function textRenderer(instance, TD, row, col, prop, value, cellProperties
|
|
27
27
|
}
|
28
28
|
if (cellProperties.rendererTemplate) {
|
29
29
|
empty(TD);
|
30
|
-
const TEMPLATE =
|
30
|
+
const TEMPLATE = hotInstance.rootDocument.createElement('TEMPLATE');
|
31
31
|
TEMPLATE.setAttribute('bind', '{{}}');
|
32
32
|
TEMPLATE.innerHTML = cellProperties.rendererTemplate;
|
33
33
|
HTMLTemplateElement.decorate(TEMPLATE);
|
34
|
-
TEMPLATE.model =
|
34
|
+
TEMPLATE.model = hotInstance.getSourceDataAtRow(row);
|
35
35
|
TD.appendChild(TEMPLATE);
|
36
36
|
} else {
|
37
37
|
// this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips
|