handsontable 0.0.0-next-ff8465d-20231006 → 0.0.0-next-9379dd1-20231020

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.

Files changed (73) hide show
  1. package/base.js +2 -2
  2. package/base.mjs +2 -2
  3. package/cellTypes/dateType/dateType.d.ts +3 -3
  4. package/cellTypes/dateType/dateType.js +2 -2
  5. package/cellTypes/dateType/dateType.mjs +2 -2
  6. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  7. package/cellTypes/handsontableType/handsontableType.js +2 -2
  8. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  9. package/core.d.ts +1 -1
  10. package/core.js +10 -5
  11. package/core.mjs +10 -5
  12. package/dataMap/metaManager/metaSchema.js +1 -1
  13. package/dataMap/metaManager/metaSchema.mjs +1 -1
  14. package/dist/handsontable.css +2 -2
  15. package/dist/handsontable.full.css +2 -2
  16. package/dist/handsontable.full.js +828 -692
  17. package/dist/handsontable.full.min.css +2 -2
  18. package/dist/handsontable.full.min.js +70 -70
  19. package/dist/handsontable.js +828 -692
  20. package/dist/handsontable.min.css +2 -2
  21. package/dist/handsontable.min.js +16 -16
  22. package/dist/languages/all.js +6 -2
  23. package/dist/languages/all.min.js +1 -1
  24. package/dist/languages/en-US.js +3 -1
  25. package/dist/languages/en-US.min.js +1 -1
  26. package/dist/languages/pl-PL.js +3 -1
  27. package/dist/languages/pl-PL.min.js +1 -1
  28. package/editors/autocompleteEditor/autocompleteEditor.js +1 -1
  29. package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -1
  30. package/editors/dateEditor/dateEditor.js +26 -7
  31. package/editors/dateEditor/dateEditor.mjs +27 -8
  32. package/editors/handsontableEditor/handsontableEditor.js +7 -0
  33. package/editors/handsontableEditor/handsontableEditor.mjs +8 -1
  34. package/helpers/a11y.js +3 -1
  35. package/helpers/a11y.mjs +2 -1
  36. package/helpers/mixed.js +1 -1
  37. package/helpers/mixed.mjs +1 -1
  38. package/i18n/constants.js +7 -1
  39. package/i18n/constants.mjs +4 -1
  40. package/i18n/languages/en-US.js +3 -1
  41. package/i18n/languages/en-US.mjs +3 -1
  42. package/i18n/languages/pl-PL.js +3 -1
  43. package/i18n/languages/pl-PL.mjs +3 -1
  44. package/languages/all.js +6 -2
  45. package/languages/en-US.js +3 -1
  46. package/languages/en-US.mjs +3 -1
  47. package/languages/index.js +6 -2
  48. package/languages/pl-PL.js +3 -1
  49. package/languages/pl-PL.mjs +3 -1
  50. package/package.json +11 -1
  51. package/pluginHooks.js +1 -1
  52. package/pluginHooks.mjs +1 -1
  53. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  54. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -1
  55. package/renderers/checkboxRenderer/checkboxRenderer.js +3 -3
  56. package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -4
  57. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  58. package/renderers/dateRenderer/dateRenderer.js +29 -0
  59. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  60. package/renderers/dateRenderer/index.d.ts +1 -0
  61. package/renderers/dateRenderer/index.js +6 -0
  62. package/renderers/dateRenderer/index.mjs +1 -0
  63. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  64. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  65. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  66. package/renderers/handsontableRenderer/index.d.ts +1 -0
  67. package/renderers/handsontableRenderer/index.js +6 -0
  68. package/renderers/handsontableRenderer/index.mjs +1 -0
  69. package/renderers/index.d.ts +6 -0
  70. package/renderers/selectRenderer/selectRenderer.js +2 -1
  71. package/renderers/selectRenderer/selectRenderer.mjs +2 -1
  72. package/selection/selection.js +2 -2
  73. package/selection/selection.mjs +2 -2
@@ -7,6 +7,7 @@ var _pikaday = _interopRequireDefault(require("pikaday"));
7
7
  var _textEditor = require("../textEditor");
8
8
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
9
9
  var _element = require("../../helpers/dom/element");
10
+ var _a11y = require("../../helpers/a11y");
10
11
  var _object = require("../../helpers/object");
11
12
  var _unicode = require("../../helpers/unicode");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -44,7 +45,7 @@ class DateEditor extends _textEditor.TextEditor {
44
45
  throw new Error('You need to include Pikaday to your project.');
45
46
  }
46
47
  super.init();
47
- this.instance.addHook('afterDestroy', () => {
48
+ this.hot.addHook('afterDestroy', () => {
48
49
  this.parentDestroyed = true;
49
50
  this.destroyElements();
50
51
  });
@@ -69,7 +70,21 @@ class DateEditor extends _textEditor.TextEditor {
69
70
  /**
70
71
  * Prevent recognizing clicking on datepicker as clicking outside of table.
71
72
  */
72
- eventManager.addEventListener(this.datePicker, 'mousedown', event => event.stopPropagation());
73
+ eventManager.addEventListener(this.datePicker, 'mousedown', event => {
74
+ if ((0, _element.hasClass)(event.target, 'pika-day')) {
75
+ this.hideDatepicker();
76
+ }
77
+ event.stopPropagation();
78
+ });
79
+
80
+ /**
81
+ * Prevent caret movement in the TEXTAREA when navigating over the date picker.
82
+ */
83
+ eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
84
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
85
+ event.preventDefault();
86
+ }
87
+ });
73
88
  }
74
89
 
75
90
  /**
@@ -110,6 +125,9 @@ class DateEditor extends _textEditor.TextEditor {
110
125
  const editorContext = shortcutManager.getContext('editor');
111
126
  super.open();
112
127
  this.showDatepicker(event);
128
+ if (this.hot.getSettings().ariaTags) {
129
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
130
+ }
113
131
  editorContext.addShortcut({
114
132
  keys: [['Enter']],
115
133
  callback: keyboardEvent => {
@@ -132,9 +150,12 @@ class DateEditor extends _textEditor.TextEditor {
132
150
  if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
133
151
  this.$datePicker.destroy();
134
152
  }
135
- this.instance._registerTimeout(() => {
136
- this.instance._refreshBorders();
153
+ this.hot._registerTimeout(() => {
154
+ this.hot._refreshBorders();
137
155
  });
156
+ if (this.TD && this.hot.getSettings().ariaTags) {
157
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
158
+ }
138
159
  const shortcutManager = this.hot.getShortcutManager();
139
160
  const editorContext = shortcutManager.getContext('editor');
140
161
  editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
@@ -152,7 +173,6 @@ class DateEditor extends _textEditor.TextEditor {
152
173
  let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
153
174
  if (restoreOriginalValue) {
154
175
  // pressed ESC, restore original value
155
- // var value = this.instance.getDataAtCell(this.row, this.col);
156
176
  const value = this.originalValue;
157
177
  if (value !== void 0) {
158
178
  this.setValue(value);
@@ -169,7 +189,7 @@ class DateEditor extends _textEditor.TextEditor {
169
189
  showDatepicker(event) {
170
190
  const offset = this.TD.getBoundingClientRect();
171
191
  const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
172
- const isMouseDown = this.instance.view.isMouseDown();
192
+ const isMouseDown = this.hot.view.isMouseDown();
173
193
  const isMeta = event ? (0, _unicode.isFunctionKey)(event.keyCode) : false;
174
194
  let dateStr;
175
195
  this.datePicker.style.display = 'block';
@@ -248,7 +268,6 @@ class DateEditor extends _textEditor.TextEditor {
248
268
  dateStr = (0, _moment.default)(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
249
269
  }
250
270
  this.setValue(dateStr);
251
- this.hideDatepicker();
252
271
  if (origOnSelect) {
253
272
  origOnSelect();
254
273
  }
@@ -3,7 +3,8 @@ import moment from 'moment';
3
3
  import Pikaday from 'pikaday';
4
4
  import { TextEditor } from "../textEditor/index.mjs";
5
5
  import EventManager from "../../eventManager.mjs";
6
- import { addClass, outerHeight, outerWidth } from "../../helpers/dom/element.mjs";
6
+ import { addClass, hasClass, outerHeight, outerWidth, setAttribute } from "../../helpers/dom/element.mjs";
7
+ import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
7
8
  import { deepExtend } from "../../helpers/object.mjs";
8
9
  import { isFunctionKey } from "../../helpers/unicode.mjs";
9
10
  export const EDITOR_TYPE = 'date';
@@ -39,7 +40,7 @@ export class DateEditor extends TextEditor {
39
40
  throw new Error('You need to include Pikaday to your project.');
40
41
  }
41
42
  super.init();
42
- this.instance.addHook('afterDestroy', () => {
43
+ this.hot.addHook('afterDestroy', () => {
43
44
  this.parentDestroyed = true;
44
45
  this.destroyElements();
45
46
  });
@@ -64,7 +65,21 @@ export class DateEditor extends TextEditor {
64
65
  /**
65
66
  * Prevent recognizing clicking on datepicker as clicking outside of table.
66
67
  */
67
- eventManager.addEventListener(this.datePicker, 'mousedown', event => event.stopPropagation());
68
+ eventManager.addEventListener(this.datePicker, 'mousedown', event => {
69
+ if (hasClass(event.target, 'pika-day')) {
70
+ this.hideDatepicker();
71
+ }
72
+ event.stopPropagation();
73
+ });
74
+
75
+ /**
76
+ * Prevent caret movement in the TEXTAREA when navigating over the date picker.
77
+ */
78
+ eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
79
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
80
+ event.preventDefault();
81
+ }
82
+ });
68
83
  }
69
84
 
70
85
  /**
@@ -105,6 +120,9 @@ export class DateEditor extends TextEditor {
105
120
  const editorContext = shortcutManager.getContext('editor');
106
121
  super.open();
107
122
  this.showDatepicker(event);
123
+ if (this.hot.getSettings().ariaTags) {
124
+ setAttribute(this.TD, [A11Y_EXPANDED('true')]);
125
+ }
108
126
  editorContext.addShortcut({
109
127
  keys: [['Enter']],
110
128
  callback: keyboardEvent => {
@@ -127,9 +145,12 @@ export class DateEditor extends TextEditor {
127
145
  if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
128
146
  this.$datePicker.destroy();
129
147
  }
130
- this.instance._registerTimeout(() => {
131
- this.instance._refreshBorders();
148
+ this.hot._registerTimeout(() => {
149
+ this.hot._refreshBorders();
132
150
  });
151
+ if (this.TD && this.hot.getSettings().ariaTags) {
152
+ setAttribute(this.TD, [A11Y_EXPANDED('false')]);
153
+ }
133
154
  const shortcutManager = this.hot.getShortcutManager();
134
155
  const editorContext = shortcutManager.getContext('editor');
135
156
  editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
@@ -147,7 +168,6 @@ export class DateEditor extends TextEditor {
147
168
  let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
148
169
  if (restoreOriginalValue) {
149
170
  // pressed ESC, restore original value
150
- // var value = this.instance.getDataAtCell(this.row, this.col);
151
171
  const value = this.originalValue;
152
172
  if (value !== void 0) {
153
173
  this.setValue(value);
@@ -164,7 +184,7 @@ export class DateEditor extends TextEditor {
164
184
  showDatepicker(event) {
165
185
  const offset = this.TD.getBoundingClientRect();
166
186
  const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
167
- const isMouseDown = this.instance.view.isMouseDown();
187
+ const isMouseDown = this.hot.view.isMouseDown();
168
188
  const isMeta = event ? isFunctionKey(event.keyCode) : false;
169
189
  let dateStr;
170
190
  this.datePicker.style.display = 'block';
@@ -243,7 +263,6 @@ export class DateEditor extends TextEditor {
243
263
  dateStr = moment(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
244
264
  }
245
265
  this.setValue(dateStr);
246
- this.hideDatepicker();
247
266
  if (origOnSelect) {
248
267
  origOnSelect();
249
268
  }
@@ -6,6 +6,7 @@ var _element = require("../../helpers/dom/element");
6
6
  var _event = require("../../helpers/dom/event");
7
7
  var _object = require("../../helpers/object");
8
8
  var _editorManager = require("../../editorManager");
9
+ var _a11y = require("../../helpers/a11y");
9
10
  const SHORTCUTS_GROUP = 'handsontableEditor';
10
11
  const EDITOR_TYPE = 'handsontable';
11
12
 
@@ -42,6 +43,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
42
43
  }
43
44
  (0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
44
45
  this.refreshDimensions();
46
+ if (this.hot.getSettings().ariaTags) {
47
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
48
+ }
45
49
  }
46
50
 
47
51
  /**
@@ -53,6 +57,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
53
57
  }
54
58
  this.removeHooksByKey('beforeKeyDown');
55
59
  super.close();
60
+ if (this.hot.getSettings().ariaTags) {
61
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
62
+ }
56
63
  }
57
64
 
58
65
  /**
@@ -1,8 +1,9 @@
1
1
  import { TextEditor } from "../textEditor/index.mjs";
2
- import { setCaretPosition } from "../../helpers/dom/element.mjs";
2
+ import { setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
3
3
  import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
4
4
  import { extend } from "../../helpers/object.mjs";
5
5
  import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
6
+ import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
6
7
  const SHORTCUTS_GROUP = 'handsontableEditor';
7
8
  export const EDITOR_TYPE = 'handsontable';
8
9
 
@@ -38,6 +39,9 @@ export class HandsontableEditor extends TextEditor {
38
39
  }
39
40
  setCaretPosition(this.TEXTAREA, 0, this.TEXTAREA.value.length);
40
41
  this.refreshDimensions();
42
+ if (this.hot.getSettings().ariaTags) {
43
+ setAttribute(this.TD, [A11Y_EXPANDED('true')]);
44
+ }
41
45
  }
42
46
 
43
47
  /**
@@ -49,6 +53,9 @@ export class HandsontableEditor extends TextEditor {
49
53
  }
50
54
  this.removeHooksByKey('beforeKeyDown');
51
55
  super.close();
56
+ if (this.hot.getSettings().ariaTags) {
57
+ setAttribute(this.TD, [A11Y_EXPANDED('false')]);
58
+ }
52
59
  }
53
60
 
54
61
  /**
package/helpers/a11y.js CHANGED
@@ -25,6 +25,8 @@ const A11Y_LISTBOX = () => ['role', 'listbox'];
25
25
  exports.A11Y_LISTBOX = A11Y_LISTBOX;
26
26
  const A11Y_OPTION = () => ['role', 'option'];
27
27
  exports.A11Y_OPTION = A11Y_OPTION;
28
+ const A11Y_CHECKBOX = () => ['role', 'checkbox'];
29
+ exports.A11Y_CHECKBOX = A11Y_CHECKBOX;
28
30
  const A11Y_SCOPE_COL = () => ['scope', 'col'];
29
31
  exports.A11Y_SCOPE_COL = A11Y_SCOPE_COL;
30
32
  const A11Y_SCOPE_ROW = () => ['scope', 'row'];
@@ -39,7 +41,7 @@ const A11Y_DISABLED = () => ['aria-disabled', 'true'];
39
41
  exports.A11Y_DISABLED = A11Y_DISABLED;
40
42
  const A11Y_MULTISELECTABLE = () => ['aria-multiselectable', 'true'];
41
43
  exports.A11Y_MULTISELECTABLE = A11Y_MULTISELECTABLE;
42
- const A11Y_HASPOPUP = () => ['aria-haspopup', 'listbox'];
44
+ const A11Y_HASPOPUP = val => ['aria-haspopup', val];
43
45
  exports.A11Y_HASPOPUP = A11Y_HASPOPUP;
44
46
  const A11Y_ROWCOUNT = val => ['aria-rowcount', val];
45
47
  exports.A11Y_ROWCOUNT = A11Y_ROWCOUNT;
package/helpers/a11y.mjs CHANGED
@@ -10,6 +10,7 @@ export const A11Y_MENU_ITEM = () => ['role', 'menuitem'];
10
10
  export const A11Y_COMBOBOX = () => ['role', 'combobox'];
11
11
  export const A11Y_LISTBOX = () => ['role', 'listbox'];
12
12
  export const A11Y_OPTION = () => ['role', 'option'];
13
+ export const A11Y_CHECKBOX = () => ['role', 'checkbox'];
13
14
  export const A11Y_SCOPE_COL = () => ['scope', 'col'];
14
15
  export const A11Y_SCOPE_ROW = () => ['scope', 'row'];
15
16
  export const A11Y_TEXT = () => ['type', 'text'];
@@ -17,7 +18,7 @@ export const A11Y_LABEL = val => ['aria-label', val];
17
18
  export const A11Y_HIDDEN = () => ['aria-hidden', 'true'];
18
19
  export const A11Y_DISABLED = () => ['aria-disabled', 'true'];
19
20
  export const A11Y_MULTISELECTABLE = () => ['aria-multiselectable', 'true'];
20
- export const A11Y_HASPOPUP = () => ['aria-haspopup', 'listbox'];
21
+ export const A11Y_HASPOPUP = val => ['aria-haspopup', val];
21
22
  export const A11Y_ROWCOUNT = val => ['aria-rowcount', val];
22
23
  export const A11Y_COLCOUNT = val => ['aria-colcount', val];
23
24
  export const A11Y_ROWINDEX = val => ['aria-rowindex', val];
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-ff8465d-20231006";
137
+ const hotVersion = "0.0.0-next-9379dd1-20231020";
138
138
  let keyValidityDate;
139
139
  let consoleMessageState = 'invalid';
140
140
  let domMessageState = 'invalid';
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-ff8465d-20231006";
127
+ const hotVersion = "0.0.0-next-9379dd1-20231020";
128
128
  let keyValidityDate;
129
129
  let consoleMessageState = 'invalid';
130
130
  let domMessageState = 'invalid';
package/i18n/constants.js CHANGED
@@ -165,4 +165,10 @@ exports.FILTERS_BUTTONS_PLACEHOLDER_SEARCH = FILTERS_BUTTONS_PLACEHOLDER_SEARCH;
165
165
  const FILTERS_BUTTONS_PLACEHOLDER_VALUE = `${FILTERS_NAMESPACE}buttons.placeholder.value`;
166
166
  exports.FILTERS_BUTTONS_PLACEHOLDER_VALUE = FILTERS_BUTTONS_PLACEHOLDER_VALUE;
167
167
  const FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = `${FILTERS_NAMESPACE}buttons.placeholder.secondValue`;
168
- exports.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE;
168
+ exports.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE;
169
+ const CHECKBOX_RENDERER_NAMESPACE = 'CheckboxRenderer:';
170
+ exports.CHECKBOX_RENDERER_NAMESPACE = CHECKBOX_RENDERER_NAMESPACE;
171
+ const CHECKBOX_CHECKED = `${CHECKBOX_RENDERER_NAMESPACE}checked`;
172
+ exports.CHECKBOX_CHECKED = CHECKBOX_CHECKED;
173
+ const CHECKBOX_UNCHECKED = `${CHECKBOX_RENDERER_NAMESPACE}unchecked`;
174
+ exports.CHECKBOX_UNCHECKED = CHECKBOX_UNCHECKED;
@@ -83,4 +83,7 @@ export const FILTERS_BUTTONS_OK = `${FILTERS_NAMESPACE}buttons.ok`;
83
83
  export const FILTERS_BUTTONS_CANCEL = `${FILTERS_NAMESPACE}buttons.cancel`;
84
84
  export const FILTERS_BUTTONS_PLACEHOLDER_SEARCH = `${FILTERS_NAMESPACE}buttons.placeholder.search`;
85
85
  export const FILTERS_BUTTONS_PLACEHOLDER_VALUE = `${FILTERS_NAMESPACE}buttons.placeholder.value`;
86
- export const FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = `${FILTERS_NAMESPACE}buttons.placeholder.secondValue`;
86
+ export const FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = `${FILTERS_NAMESPACE}buttons.placeholder.secondValue`;
87
+ export const CHECKBOX_RENDERER_NAMESPACE = 'CheckboxRenderer:';
88
+ export const CHECKBOX_CHECKED = `${CHECKBOX_RENDERER_NAMESPACE}checked`;
89
+ export const CHECKBOX_UNCHECKED = `${CHECKBOX_RENDERER_NAMESPACE}unchecked`;
@@ -89,7 +89,9 @@ const dictionary = {
89
89
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
90
90
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
91
91
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
92
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
92
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
93
+ [C.CHECKBOX_CHECKED]: 'Checked',
94
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
93
95
  };
94
96
  var _default = dictionary;
95
97
  exports.default = _default;
@@ -83,6 +83,8 @@ const dictionary = {
83
83
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
84
84
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
85
85
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
86
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
86
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
87
+ [C.CHECKBOX_CHECKED]: 'Checked',
88
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
87
89
  };
88
90
  export default dictionary;
@@ -89,7 +89,9 @@ const dictionary = {
89
89
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
90
90
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
91
91
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
92
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
92
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
93
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
94
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
93
95
  };
94
96
  var _default = dictionary;
95
97
  exports.default = _default;
@@ -83,6 +83,8 @@ const dictionary = {
83
83
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
84
84
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
85
85
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
86
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
86
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
87
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
88
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
87
89
  };
88
90
  export default dictionary;
package/languages/all.js CHANGED
@@ -518,7 +518,9 @@ const dictionary = {
518
518
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
519
519
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
520
520
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
521
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
521
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
522
+ [C.CHECKBOX_CHECKED]: 'Checked',
523
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
522
524
  };
523
525
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
524
526
  var _default = dictionary;
@@ -1418,7 +1420,9 @@ const dictionary = {
1418
1420
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
1419
1421
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
1420
1422
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
1421
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
1423
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
1424
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
1425
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
1422
1426
  };
1423
1427
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
1424
1428
  var _default = dictionary;
@@ -152,7 +152,9 @@ const dictionary = {
152
152
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
153
153
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
154
154
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
155
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
155
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
156
+ [C.CHECKBOX_CHECKED]: 'Checked',
157
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
156
158
  };
157
159
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
158
160
  var _default = dictionary;
@@ -84,7 +84,9 @@ const dictionary = {
84
84
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
85
85
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
86
86
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
87
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
87
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
88
+ [C.CHECKBOX_CHECKED]: 'Checked',
89
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
88
90
  };
89
91
  Handsontable.languages.registerLanguageDictionary(dictionary);
90
92
  export default dictionary;
@@ -518,7 +518,9 @@ const dictionary = {
518
518
  [C.FILTERS_BUTTONS_CANCEL]: 'Cancel',
519
519
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Search',
520
520
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
521
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value'
521
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
522
+ [C.CHECKBOX_CHECKED]: 'Checked',
523
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked'
522
524
  };
523
525
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
524
526
  var _default = dictionary;
@@ -1418,7 +1420,9 @@ const dictionary = {
1418
1420
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
1419
1421
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
1420
1422
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
1421
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
1423
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
1424
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
1425
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
1422
1426
  };
1423
1427
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
1424
1428
  var _default = dictionary;
@@ -152,7 +152,9 @@ const dictionary = {
152
152
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
153
153
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
154
154
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
155
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
155
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
156
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
157
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
156
158
  };
157
159
  _handsontable.default.languages.registerLanguageDictionary(dictionary);
158
160
  var _default = dictionary;
@@ -84,7 +84,9 @@ const dictionary = {
84
84
  [C.FILTERS_BUTTONS_CANCEL]: 'Anuluj',
85
85
  [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'Szukaj',
86
86
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Wartość',
87
- [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość'
87
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Druga wartość',
88
+ [C.CHECKBOX_CHECKED]: 'Zaznaczony',
89
+ [C.CHECKBOX_UNCHECKED]: 'Odznaczony'
88
90
  };
89
91
  Handsontable.languages.registerLanguageDictionary(dictionary);
90
92
  export default dictionary;
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-ff8465d-20231006",
13
+ "version": "0.0.0-next-9379dd1-20231020",
14
14
  "main": "index",
15
15
  "module": "index.mjs",
16
16
  "jsnext:main": "index.mjs",
@@ -511,6 +511,16 @@
511
511
  "require": "./renderers/checkboxRenderer/index.js",
512
512
  "import": "./renderers/checkboxRenderer/index.mjs"
513
513
  },
514
+ "./renderers/dateRenderer/index.d.ts": "./renderers/dateRenderer/index.d.ts",
515
+ "./renderers/dateRenderer": {
516
+ "require": "./renderers/dateRenderer/index.js",
517
+ "import": "./renderers/dateRenderer/index.mjs"
518
+ },
519
+ "./renderers/handsontableRenderer/index.d.ts": "./renderers/handsontableRenderer/index.d.ts",
520
+ "./renderers/handsontableRenderer": {
521
+ "require": "./renderers/handsontableRenderer/index.js",
522
+ "import": "./renderers/handsontableRenderer/index.mjs"
523
+ },
514
524
  "./renderers/htmlRenderer/index.d.ts": "./renderers/htmlRenderer/index.d.ts",
515
525
  "./renderers/htmlRenderer": {
516
526
  "require": "./renderers/htmlRenderer/index.js",
package/pluginHooks.js CHANGED
@@ -567,7 +567,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
567
567
  * method or table internals.
568
568
  *
569
569
  * @since 14.0.0
570
- * @event Hooks#afterScroll
570
+ * @event Hooks#beforeViewportScroll
571
571
  */
572
572
  'beforeViewportScroll',
573
573
  /**
package/pluginHooks.mjs CHANGED
@@ -565,7 +565,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
565
565
  * method or table internals.
566
566
  *
567
567
  * @since 14.0.0
568
- * @event Hooks#afterScroll
568
+ * @event Hooks#beforeViewportScroll
569
569
  */
570
570
  'beforeViewportScroll',
571
571
  /**
@@ -46,7 +46,7 @@ function autocompleteRenderer(instance, TD, row, col, prop, value, cellPropertie
46
46
  TD.insertBefore(ARROW, TD.firstChild);
47
47
  (0, _element.addClass)(TD, 'htAutocomplete');
48
48
  if (isAriaEnabled) {
49
- TD.setAttribute(...(0, _a11y.A11Y_HASPOPUP)());
49
+ TD.setAttribute(...(0, _a11y.A11Y_HASPOPUP)('listbox'));
50
50
  }
51
51
  if (!instance.acArrowListener) {
52
52
  const eventManager = new _eventManager.default(instance);
@@ -40,7 +40,7 @@ export function autocompleteRenderer(instance, TD, row, col, prop, value, cellPr
40
40
  TD.insertBefore(ARROW, TD.firstChild);
41
41
  addClass(TD, 'htAutocomplete');
42
42
  if (isAriaEnabled) {
43
- TD.setAttribute(...A11Y_HASPOPUP());
43
+ TD.setAttribute(...A11Y_HASPOPUP('listbox'));
44
44
  }
45
45
  if (!instance.acArrowListener) {
46
46
  const eventManager = new EventManager(instance);
@@ -10,6 +10,7 @@ var _mixed = require("../../helpers/mixed");
10
10
  var _shortcutContexts = require("../../shortcutContexts");
11
11
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
12
12
  var _a11y = require("../../helpers/a11y");
13
+ var _constants = require("../../i18n/constants");
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15
  const isListeningKeyDownEvent = new WeakMap();
15
16
  const isCheckboxListenerAdded = new WeakMap();
@@ -88,10 +89,9 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
88
89
  (0, _element.addClass)(input, BAD_VALUE_CLASS);
89
90
  badValue = true;
90
91
  }
91
- input.setAttribute(ATTR_ROW, row);
92
- input.setAttribute(ATTR_COLUMN, col);
92
+ (0, _element.setAttribute)(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
93
93
  if (ariaEnabled) {
94
- (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_CHECKED)(input.checked)]);
94
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)(input.checked ? instance.getTranslatedPhrase(_constants.CHECKBOX_CHECKED) : instance.getTranslatedPhrase(_constants.CHECKBOX_UNCHECKED)), (0, _a11y.A11Y_CHECKED)(input.checked), (0, _a11y.A11Y_CHECKBOX)()]);
95
95
  }
96
96
  if (!badValue && labelOptions) {
97
97
  let labelText = '';
@@ -5,7 +5,8 @@ import { empty, addClass, setAttribute } from "../../helpers/dom/element.mjs";
5
5
  import { isEmpty, stringify } from "../../helpers/mixed.mjs";
6
6
  import { EDITOR_EDIT_GROUP as SHORTCUTS_GROUP_EDITOR } from "../../shortcutContexts/index.mjs";
7
7
  import Hooks from "../../pluginHooks.mjs";
8
- import { A11Y_CHECKED } from "../../helpers/a11y.mjs";
8
+ import { A11Y_CHECKBOX, A11Y_CHECKED, A11Y_LABEL } from "../../helpers/a11y.mjs";
9
+ import { CHECKBOX_CHECKED, CHECKBOX_UNCHECKED } from "../../i18n/constants.mjs";
9
10
  const isListeningKeyDownEvent = new WeakMap();
10
11
  const isCheckboxListenerAdded = new WeakMap();
11
12
  const BAD_VALUE_CLASS = 'htBadValue';
@@ -82,10 +83,9 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
82
83
  addClass(input, BAD_VALUE_CLASS);
83
84
  badValue = true;
84
85
  }
85
- input.setAttribute(ATTR_ROW, row);
86
- input.setAttribute(ATTR_COLUMN, col);
86
+ setAttribute(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
87
87
  if (ariaEnabled) {
88
- setAttribute(TD, [A11Y_CHECKED(input.checked)]);
88
+ setAttribute(input, [A11Y_LABEL(input.checked ? instance.getTranslatedPhrase(CHECKBOX_CHECKED) : instance.getTranslatedPhrase(CHECKBOX_UNCHECKED)), A11Y_CHECKED(input.checked), A11Y_CHECKBOX()]);
89
89
  }
90
90
  if (!badValue && labelOptions) {
91
91
  let labelText = '';
@@ -0,0 +1,5 @@
1
+ import Core from '../../core';
2
+ import { CellProperties } from '../../settings';
3
+
4
+ export const RENDERER_TYPE: 'date';
5
+ export function dateRenderer(instance: Core, TD: HTMLTableCellElement, row: number, col: number, prop: string | number, value: any, cellProperties: CellProperties): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.dateRenderer = dateRenderer;
5
+ var _autocompleteRenderer = require("../autocompleteRenderer");
6
+ var _a11y = require("../../helpers/a11y");
7
+ var _element = require("../../helpers/dom/element");
8
+ const RENDERER_TYPE = 'date';
9
+
10
+ /**
11
+ * Handsontable renderer.
12
+ *
13
+ * @private
14
+ * @param {Core} instance The Handsontable instance.
15
+ * @param {HTMLTableCellElement} TD The rendered cell element.
16
+ * @param {number} row The visual row index.
17
+ * @param {number} col The visual column index.
18
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
19
+ * @param {*} value The rendered value.
20
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
21
+ */
22
+ exports.RENDERER_TYPE = RENDERER_TYPE;
23
+ function dateRenderer(instance, TD, row, col, prop, value, cellProperties) {
24
+ _autocompleteRenderer.autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
25
+ if (instance.getSettings().ariaTags) {
26
+ (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('dialog'), (0, _a11y.A11Y_EXPANDED)('false')]);
27
+ }
28
+ }
29
+ dateRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1,24 @@
1
+ import { autocompleteRenderer } from "../autocompleteRenderer/index.mjs";
2
+ import { A11Y_EXPANDED, A11Y_HASPOPUP } from "../../helpers/a11y.mjs";
3
+ import { setAttribute } from "../../helpers/dom/element.mjs";
4
+ export const RENDERER_TYPE = 'date';
5
+
6
+ /**
7
+ * Handsontable renderer.
8
+ *
9
+ * @private
10
+ * @param {Core} instance The Handsontable instance.
11
+ * @param {HTMLTableCellElement} TD The rendered cell element.
12
+ * @param {number} row The visual row index.
13
+ * @param {number} col The visual column index.
14
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
15
+ * @param {*} value The rendered value.
16
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
17
+ */
18
+ export function dateRenderer(instance, TD, row, col, prop, value, cellProperties) {
19
+ autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
20
+ if (instance.getSettings().ariaTags) {
21
+ setAttribute(TD, [A11Y_HASPOPUP('dialog'), A11Y_EXPANDED('false')]);
22
+ }
23
+ }
24
+ dateRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, dateRenderer } from './dateRenderer';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _dateRenderer = require("./dateRenderer");
5
+ exports.RENDERER_TYPE = _dateRenderer.RENDERER_TYPE;
6
+ exports.dateRenderer = _dateRenderer.dateRenderer;