@progress/kendo-vue-grid 3.7.4-dev.202212300853 → 3.7.4-dev.202301091431

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.
Files changed (113) hide show
  1. package/dist/cdn/js/kendo-vue-grid.js +1 -1
  2. package/dist/es/Grid.js +234 -72
  3. package/dist/es/GridToolbar.js +5 -1
  4. package/dist/es/cells/GridCell.d.ts +8 -1
  5. package/dist/es/cells/GridCell.js +11 -2
  6. package/dist/es/cells/GridDetailCell.js +1 -1
  7. package/dist/es/cells/GridDetailHierarchyCell.js +1 -1
  8. package/dist/es/cells/GridEditCell.d.ts +8 -1
  9. package/dist/es/cells/GridEditCell.js +13 -4
  10. package/dist/es/cells/GridFilterCell.js +34 -22
  11. package/dist/es/cells/GridGroupCell.d.ts +14 -2
  12. package/dist/es/cells/GridGroupCell.js +26 -3
  13. package/dist/es/cells/GridHierarchyCell.js +15 -2
  14. package/dist/es/cells/GridSelectionCell.d.ts +8 -1
  15. package/dist/es/cells/GridSelectionCell.js +10 -1
  16. package/dist/es/columnMenu/ColumnMenu.js +10 -5
  17. package/dist/es/columnMenu/GridColumnMenuCheckboxFilter.js +4 -1
  18. package/dist/es/columnMenu/GridColumnMenuSort.js +8 -8
  19. package/dist/es/drag/ColumnDraggable.js +15 -2
  20. package/dist/es/drag/GroupingIndicator.js +25 -24
  21. package/dist/es/filterCommon.d.ts +4 -0
  22. package/dist/es/filterCommon.js +17 -1
  23. package/dist/es/footer/Footer.js +12 -2
  24. package/dist/es/footer/FooterRow.d.ts +1 -0
  25. package/dist/es/footer/FooterRow.js +12 -6
  26. package/dist/es/header/FilterRow.d.ts +1 -0
  27. package/dist/es/header/FilterRow.js +30 -30
  28. package/dist/es/header/GroupPanel.d.ts +1 -0
  29. package/dist/es/header/GroupPanel.js +18 -5
  30. package/dist/es/header/Header.js +4 -12
  31. package/dist/es/header/HeaderRow.d.ts +2 -0
  32. package/dist/es/header/HeaderRow.js +45 -15
  33. package/dist/es/interfaces/GridFilterCellProps.d.ts +12 -0
  34. package/dist/es/messages/main.d.ts +60 -0
  35. package/dist/es/messages/main.js +60 -0
  36. package/dist/es/package-metadata.js +1 -1
  37. package/dist/es/rows/GridRow.js +2 -2
  38. package/dist/es/utils/main.js +1 -1
  39. package/dist/esm/Grid.js +234 -72
  40. package/dist/esm/GridToolbar.js +5 -1
  41. package/dist/esm/cells/GridCell.d.ts +8 -1
  42. package/dist/esm/cells/GridCell.js +11 -2
  43. package/dist/esm/cells/GridDetailCell.js +1 -1
  44. package/dist/esm/cells/GridDetailHierarchyCell.js +1 -1
  45. package/dist/esm/cells/GridEditCell.d.ts +8 -1
  46. package/dist/esm/cells/GridEditCell.js +13 -4
  47. package/dist/esm/cells/GridFilterCell.js +34 -22
  48. package/dist/esm/cells/GridGroupCell.d.ts +14 -2
  49. package/dist/esm/cells/GridGroupCell.js +26 -3
  50. package/dist/esm/cells/GridHierarchyCell.js +15 -2
  51. package/dist/esm/cells/GridSelectionCell.d.ts +8 -1
  52. package/dist/esm/cells/GridSelectionCell.js +10 -1
  53. package/dist/esm/columnMenu/ColumnMenu.js +10 -5
  54. package/dist/esm/columnMenu/GridColumnMenuCheckboxFilter.js +4 -1
  55. package/dist/esm/columnMenu/GridColumnMenuSort.js +8 -8
  56. package/dist/esm/drag/ColumnDraggable.js +15 -2
  57. package/dist/esm/drag/GroupingIndicator.js +25 -24
  58. package/dist/esm/filterCommon.d.ts +4 -0
  59. package/dist/esm/filterCommon.js +17 -1
  60. package/dist/esm/footer/Footer.js +12 -2
  61. package/dist/esm/footer/FooterRow.d.ts +1 -0
  62. package/dist/esm/footer/FooterRow.js +12 -6
  63. package/dist/esm/header/FilterRow.d.ts +1 -0
  64. package/dist/esm/header/FilterRow.js +30 -30
  65. package/dist/esm/header/GroupPanel.d.ts +1 -0
  66. package/dist/esm/header/GroupPanel.js +18 -5
  67. package/dist/esm/header/Header.js +4 -12
  68. package/dist/esm/header/HeaderRow.d.ts +2 -0
  69. package/dist/esm/header/HeaderRow.js +45 -15
  70. package/dist/esm/interfaces/GridFilterCellProps.d.ts +12 -0
  71. package/dist/esm/messages/main.d.ts +60 -0
  72. package/dist/esm/messages/main.js +60 -0
  73. package/dist/esm/package-metadata.js +1 -1
  74. package/dist/esm/rows/GridRow.js +2 -2
  75. package/dist/esm/utils/main.js +1 -1
  76. package/dist/npm/Grid.js +234 -72
  77. package/dist/npm/GridToolbar.js +5 -1
  78. package/dist/npm/cells/GridCell.d.ts +8 -1
  79. package/dist/npm/cells/GridCell.js +11 -2
  80. package/dist/npm/cells/GridDetailCell.js +1 -1
  81. package/dist/npm/cells/GridDetailHierarchyCell.js +1 -1
  82. package/dist/npm/cells/GridEditCell.d.ts +8 -1
  83. package/dist/npm/cells/GridEditCell.js +13 -4
  84. package/dist/npm/cells/GridFilterCell.js +33 -21
  85. package/dist/npm/cells/GridGroupCell.d.ts +14 -2
  86. package/dist/npm/cells/GridGroupCell.js +26 -3
  87. package/dist/npm/cells/GridHierarchyCell.js +15 -2
  88. package/dist/npm/cells/GridSelectionCell.d.ts +8 -1
  89. package/dist/npm/cells/GridSelectionCell.js +10 -1
  90. package/dist/npm/columnMenu/ColumnMenu.js +10 -5
  91. package/dist/npm/columnMenu/GridColumnMenuCheckboxFilter.js +4 -1
  92. package/dist/npm/columnMenu/GridColumnMenuSort.js +8 -8
  93. package/dist/npm/drag/ColumnDraggable.js +15 -2
  94. package/dist/npm/drag/GroupingIndicator.js +25 -24
  95. package/dist/npm/filterCommon.d.ts +4 -0
  96. package/dist/npm/filterCommon.js +18 -1
  97. package/dist/npm/footer/Footer.js +12 -2
  98. package/dist/npm/footer/FooterRow.d.ts +1 -0
  99. package/dist/npm/footer/FooterRow.js +12 -6
  100. package/dist/npm/header/FilterRow.d.ts +1 -0
  101. package/dist/npm/header/FilterRow.js +28 -28
  102. package/dist/npm/header/GroupPanel.d.ts +1 -0
  103. package/dist/npm/header/GroupPanel.js +17 -4
  104. package/dist/npm/header/Header.js +4 -12
  105. package/dist/npm/header/HeaderRow.d.ts +2 -0
  106. package/dist/npm/header/HeaderRow.js +45 -15
  107. package/dist/npm/interfaces/GridFilterCellProps.d.ts +12 -0
  108. package/dist/npm/messages/main.d.ts +60 -0
  109. package/dist/npm/messages/main.js +61 -1
  110. package/dist/npm/package-metadata.js +1 -1
  111. package/dist/npm/rows/GridRow.js +2 -2
  112. package/dist/npm/utils/main.js +1 -1
  113. package/package.json +18 -16
@@ -11,6 +11,7 @@ var gh = allVue.h;
11
11
  var isV3 = allVue.version && allVue.version[0] === '3';
12
12
  var ref = allVue.ref;
13
13
  var kendo_vue_common_1 = require("@progress/kendo-vue-common");
14
+ var kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
14
15
  /**
15
16
  * @hidden
16
17
  */
@@ -79,16 +80,16 @@ var GroupingIndicatorVue2 = {
79
80
  ref: 'draggable'
80
81
  }, this.v3 ? function () {
81
82
  return [h("div", {
82
- "class": "k-indicator-container",
83
+ "class": "k-chip k-chip-md k-chip-solid k-chip-solid-base k-rounded-md",
83
84
  ref: (0, kendo_vue_common_1.setRef)(_this, 'indicatorContainer')
84
- }, [h("div", {
85
- "class": "k-chip k-chip-lg k-rounded-md k-chip-solid k-chip-solid-base"
86
85
  }, [h(kendo_vue_common_1.Icon, {
87
86
  name: 'sort-' + _this.$props.dir + '-small',
88
87
  attrs: _this.v3 ? undefined : {
89
- name: 'sort-' + _this.$props.dir + '-small'
88
+ name: 'sort-' + _this.$props.dir + '-small',
89
+ icon: _this.$props.dir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
90
90
  },
91
- "class": 'k-chip-icon'
91
+ "class": 'k-chip-icon',
92
+ icon: _this.$props.dir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
92
93
  }), h("span", {
93
94
  "class": "k-chip-content",
94
95
  tabindex: -1,
@@ -99,9 +100,7 @@ var GroupingIndicatorVue2 = {
99
100
  on: _this.v3 ? undefined : {
100
101
  "click": _this.sortChange
101
102
  }
102
- }, [h("span", {
103
- "class": "k-chip-text"
104
- }, [_this.$props.title])]), h("span", {
103
+ }, [_this.$props.title]), h("span", {
105
104
  "class": "k-chip-actions"
106
105
  }, [h("span", {
107
106
  "class": "k-chip-action k-chip-remove-action",
@@ -114,22 +113,24 @@ var GroupingIndicatorVue2 = {
114
113
  "click": _this.groupRemove
115
114
  }
116
115
  }, [h(kendo_vue_common_1.Icon, {
117
- name: "x",
116
+ name: "x-circle",
118
117
  attrs: _this.v3 ? undefined : {
119
- name: "x"
120
- }
121
- })])])])])];
118
+ name: "x-circle",
119
+ icon: kendo_svg_icons_1.xCircleIcon
120
+ },
121
+ icon: kendo_svg_icons_1.xCircleIcon
122
+ })])])])];
122
123
  } : [h("div", {
123
- "class": "k-indicator-container",
124
+ "class": "k-chip k-chip-md k-chip-solid k-chip-solid-base k-rounded-md",
124
125
  ref: (0, kendo_vue_common_1.setRef)(_this, 'indicatorContainer')
125
- }, [h("div", {
126
- "class": "k-chip k-chip-lg k-rounded-md k-chip-solid k-chip-solid-base"
127
126
  }, [h(kendo_vue_common_1.Icon, {
128
127
  name: 'sort-' + _this.$props.dir + '-small',
129
128
  attrs: _this.v3 ? undefined : {
130
- name: 'sort-' + _this.$props.dir + '-small'
129
+ name: 'sort-' + _this.$props.dir + '-small',
130
+ icon: _this.$props.dir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
131
131
  },
132
- "class": 'k-chip-icon'
132
+ "class": 'k-chip-icon',
133
+ icon: _this.$props.dir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
133
134
  }), h("span", {
134
135
  "class": "k-chip-content",
135
136
  tabindex: -1,
@@ -140,9 +141,7 @@ var GroupingIndicatorVue2 = {
140
141
  on: _this.v3 ? undefined : {
141
142
  "click": _this.sortChange
142
143
  }
143
- }, [h("span", {
144
- "class": "k-chip-text"
145
- }, [_this.$props.title])]), h("span", {
144
+ }, [_this.$props.title]), h("span", {
146
145
  "class": "k-chip-actions"
147
146
  }, [h("span", {
148
147
  "class": "k-chip-action k-chip-remove-action",
@@ -155,11 +154,13 @@ var GroupingIndicatorVue2 = {
155
154
  "click": _this.groupRemove
156
155
  }
157
156
  }, [h(kendo_vue_common_1.Icon, {
158
- name: "x",
157
+ name: "x-circle",
159
158
  attrs: _this.v3 ? undefined : {
160
- name: "x"
161
- }
162
- })])])])])])
159
+ name: "x-circle",
160
+ icon: kendo_svg_icons_1.xCircleIcon
161
+ },
162
+ icon: kendo_svg_icons_1.xCircleIcon
163
+ })])])])])
163
164
  );
164
165
  }
165
166
  };
@@ -73,3 +73,7 @@ export declare const cellOperatorChange: (operator: any, e: any, value: any) =>
73
73
  operator: any;
74
74
  event: any;
75
75
  };
76
+ /**
77
+ * @hidden
78
+ */
79
+ export declare const getAriaLabel: (filterType: 'text' | 'numeric' | 'boolean' | 'date', service: any) => any;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cellOperatorChange = exports.cellBoolDropdownChange = exports.getFilterType = exports.getDefaultOperator = exports.cellInputChange = exports.defaultHideSecondFilter = exports.booleanFilterValues = exports.defaultBooleanOperator = exports.operatorMap = exports.IsUnaryFilter = exports.operators = exports.filterLogicList = void 0;
3
+ exports.getAriaLabel = exports.cellOperatorChange = exports.cellBoolDropdownChange = exports.getFilterType = exports.getDefaultOperator = exports.cellInputChange = exports.defaultHideSecondFilter = exports.booleanFilterValues = exports.defaultBooleanOperator = exports.operatorMap = exports.IsUnaryFilter = exports.operators = exports.filterLogicList = void 0;
4
4
  var main_1 = require("./messages/main");
5
5
  /**
6
6
  * @hidden
@@ -164,3 +164,20 @@ var cellOperatorChange = function (operator, e, value) {
164
164
  return { value: value, operator: operator, event: e };
165
165
  };
166
166
  exports.cellOperatorChange = cellOperatorChange;
167
+ /**
168
+ * @hidden
169
+ */
170
+ var getAriaLabel = function (filterType, service) {
171
+ switch (filterType) {
172
+ case 'text':
173
+ return service.toLanguageString(main_1.textFilterAriaLabel, main_1.messages[main_1.textFilterAriaLabel]);
174
+ case 'numeric':
175
+ return service.toLanguageString(main_1.numericFilterAriaLabel, main_1.messages[main_1.numericFilterAriaLabel]);
176
+ case 'boolean':
177
+ return service.toLanguageString(main_1.booleanFilterAriaLabel, main_1.messages[main_1.booleanFilterAriaLabel]);
178
+ case 'date':
179
+ return service.toLanguageString(main_1.dateFilterAriaLabel, main_1.messages[main_1.dateFilterAriaLabel]);
180
+ default: return;
181
+ }
182
+ };
183
+ exports.getAriaLabel = getAriaLabel;
@@ -91,7 +91,11 @@ var FooterVue2 = {
91
91
  var h = gh || createElement;
92
92
  if (!this.$props.staticHeaders) {
93
93
  return h("tfoot", {
94
- "class": "k-grid-footer"
94
+ "class": "k-table-tfoot k-grid-footer",
95
+ role: "rowgroup",
96
+ attrs: this.v3 ? undefined : {
97
+ role: "rowgroup"
98
+ }
95
99
  }, [this.$props.row]);
96
100
  }
97
101
  return h("div", {
@@ -105,7 +109,13 @@ var FooterVue2 = {
105
109
  style: this.tableStyle
106
110
  }, [h("colgroup", {
107
111
  ref: (0, kendo_vue_common_1.setRef)(this, 'colGroupHeader')
108
- }, [this.$props.cols]), h("tfoot", [this.$props.row])])])]);
112
+ }, [this.$props.cols]), h("tfoot", {
113
+ "class": 'k-table-tfoot',
114
+ role: "rowgroup",
115
+ attrs: this.v3 ? undefined : {
116
+ role: "rowgroup"
117
+ }
118
+ }, [this.$props.row])])])]);
109
119
  }
110
120
  };
111
121
  exports.FooterVue2 = FooterVue2;
@@ -9,6 +9,7 @@ import { ExtendedColumnProps } from '../interfaces/ExtendedColumnProps';
9
9
  export interface FooterRowProps {
10
10
  columns: ExtendedColumnProps[];
11
11
  isRtl: boolean;
12
+ rowIndex: number;
12
13
  }
13
14
  export interface FooterRowMethods {
14
15
  [key: string]: any;
@@ -18,7 +18,8 @@ var FooterRowVue2 = {
18
18
  name: 'FooterRow',
19
19
  props: {
20
20
  isRtl: Boolean,
21
- columns: Array
21
+ columns: Array,
22
+ rowIndex: Number
22
23
  },
23
24
  methods: {
24
25
  columnStyles: function columnStyles(column) {
@@ -44,7 +45,7 @@ var FooterRowVue2 = {
44
45
  var renderCell = function renderCell(column, index) {
45
46
  var footerCellRendering = null;
46
47
  var stickyClassName = column.locked && column.left !== undefined ? 'k-grid-footer-sticky' : '';
47
- var tdClassName = column.footerClassName ? "".concat(column.footerClassName, " ").concat(stickyClassName) : stickyClassName;
48
+ var tdClassName = column.footerClassName ? "k-table-td ".concat(column.footerClassName, " ").concat(stickyClassName) : 'k-table-td' + stickyClassName;
48
49
  footerCellRendering = kendo_vue_common_1.getTemplate.call(this, {
49
50
  h: h,
50
51
  template: column.footerCell,
@@ -59,17 +60,22 @@ var FooterRowVue2 = {
59
60
  key: index,
60
61
  colspan: column.colSpan !== 1 ? column.colSpan : undefined,
61
62
  attrs: this.v3 ? undefined : {
62
- colspan: column.colSpan !== 1 ? column.colSpan : undefined
63
+ colspan: column.colSpan !== 1 ? column.colSpan : undefined,
64
+ role: 'gridcell'
63
65
  },
64
66
  style: this.columnStyles(column),
65
- "class": tdClassName
67
+ "class": tdClassName,
68
+ role: 'gridcell'
66
69
  }, [footerCellRendering]);
67
70
  };
68
71
  return h("tr", {
72
+ "class": 'k-table-row',
69
73
  role: 'row',
70
74
  attrs: this.v3 ? undefined : {
71
- role: 'row'
72
- }
75
+ role: 'row',
76
+ "aria-rowIndex": this.$props.rowIndex
77
+ },
78
+ "aria-rowIndex": this.$props.rowIndex
73
79
  }, [(0, main_1.footerColumns)(this.$props.columns).map(renderCell, this)]);
74
80
  }
75
81
  };
@@ -18,6 +18,7 @@ export interface FilterRowProps {
18
18
  cellRender?: any;
19
19
  isRtl?: boolean;
20
20
  ariaRowIndex?: number;
21
+ size?: null | 'small' | 'medium' | 'large' | string;
21
22
  }
22
23
  /**
23
24
  * @hidden
@@ -29,7 +29,8 @@ var FilterRowVue2 = {
29
29
  sort: [Object, Array],
30
30
  cellRender: [String, Function, Object],
31
31
  isRtl: Boolean,
32
- ariaRowIndex: Number
32
+ ariaRowIndex: Number,
33
+ size: String
33
34
  },
34
35
  inject: {
35
36
  kendoLocalizationService: {
@@ -37,15 +38,6 @@ var FilterRowVue2 = {
37
38
  }
38
39
  },
39
40
  methods: {
40
- headerCellClassName: function headerCellClassName(field, locked) {
41
- var result = "".concat(locked ? 'k-grid-header-sticky' : '');
42
- if (this.$props.sort && this.$props.sort.filter(function (descriptor) {
43
- return descriptor.field === field;
44
- }).length > 0) {
45
- result += ' k-sorted';
46
- }
47
- return result;
48
- },
49
41
  setFilter: function setFilter(value, operator, field, e) {
50
42
  var filters = [];
51
43
  if (value !== '' && value !== null || operator !== '') {
@@ -100,7 +92,6 @@ var FilterRowVue2 = {
100
92
  })[0];
101
93
  return found ? found.operator : null;
102
94
  };
103
- var filterCellProps;
104
95
  var serviceIndex = 0,
105
96
  index = -1;
106
97
  var filterCells = this.$props.columns.filter(function (c) {
@@ -111,6 +102,7 @@ var FilterRowVue2 = {
111
102
  _this.setFilter(e.value, e.operator, column.field, e);
112
103
  };
113
104
  var filterType = (0, filterCommon_1.getFilterType)(column.filter);
105
+ var ariaLabelFilter = column.field + ' ' + (0, filterCommon_1.getAriaLabel)(filterType, intl);
114
106
  // @ts-ignore
115
107
  var filterRender = h(GridFilterCell_1.GridFilterCell, {
116
108
  grid: this.$props.grid,
@@ -123,7 +115,9 @@ var FilterRowVue2 = {
123
115
  operators: (0, filterCommon_1.operatorMap)(this.$props.filterOperators[filterType] || [], intl),
124
116
  booleanValues: (0, filterCommon_1.operatorMap)(filterCommon_1.booleanFilterValues, intl),
125
117
  filterType: filterType,
126
- render: column.filterCell || this.$props.cellRender
118
+ render: column.filterCell || this.$props.cellRender,
119
+ ariaLabel: ariaLabelFilter,
120
+ size: this.$props.size
127
121
  },
128
122
  field: column.field,
129
123
  title: column.filterTitle,
@@ -136,7 +130,9 @@ var FilterRowVue2 = {
136
130
  on: this.v3 ? undefined : {
137
131
  "change": onChangeFn
138
132
  },
139
- render: column.filterCell || this.$props.cellRender
133
+ render: column.filterCell || this.$props.cellRender,
134
+ ariaLabel: ariaLabelFilter,
135
+ size: this.$props.size
140
136
  });
141
137
  var key = column.declarationIndex >= 0 ? ++index : --serviceIndex;
142
138
  var ariaAttrs = {
@@ -152,43 +148,47 @@ var FilterRowVue2 = {
152
148
  } : {};
153
149
  var filterCell =
154
150
  // @ts-ignore function children
155
- h(kendo_vue_data_tools_1.HeaderThElement, {
151
+ h(kendo_vue_data_tools_1.HeaderTdElement, {
156
152
  key: key,
157
- columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
153
+ role: 'gridcell',
158
154
  attrs: this.v3 ? undefined : {
155
+ role: 'gridcell',
159
156
  columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
160
157
  navigatable: column.navigatable,
161
- ariaLabel: ariaAttrs.ariaLabel,
162
- ariaColumnIndex: ariaAttrs.ariaColumnIndex
158
+ ariaColumnIndex: ariaAttrs.ariaColumnIndex,
159
+ ariaLabel: ariaLabelFilter
163
160
  },
161
+ columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
164
162
  navigatable: column.navigatable,
165
163
  style: style,
166
- "class": (0, kendo_vue_common_1.classNames)('k-header', this.headerCellClassName(column.field, column.locked) || undefined),
167
- ariaLabel: ariaAttrs.ariaLabel,
168
- ariaColumnIndex: ariaAttrs.ariaColumnIndex
164
+ "class": (0, kendo_vue_common_1.classNames)('k-table-th', this.headerCellClassName(column.field, column.locked) || undefined),
165
+ ariaColumnIndex: ariaAttrs.ariaColumnIndex,
166
+ ariaLabel: ariaLabelFilter
169
167
  }, this.v3 ? function () {
170
168
  return [filterRender];
171
169
  } : [filterRender]);
172
170
  return column.filterable && filterCell ||
173
171
  // @ts-ignore function children
174
- h(kendo_vue_data_tools_1.HeaderThElement, {
172
+ h(kendo_vue_data_tools_1.HeaderTdElement, {
175
173
  key: key,
176
- columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
174
+ role: 'gridcell',
177
175
  attrs: this.v3 ? undefined : {
176
+ role: 'gridcell',
178
177
  columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
179
178
  navigatable: column.navigatable,
180
- ariaLabel: ariaAttrs.ariaLabel,
181
- ariaColumnIndex: ariaAttrs.ariaColumnIndex
179
+ ariaColumnIndex: ariaAttrs.ariaColumnIndex,
180
+ ariaLabel: ariaLabelFilter
182
181
  },
182
+ columnId: kendo_vue_data_tools_1.tableKeyboardNavigationTools.getFilterColumnId(column.id),
183
183
  navigatable: column.navigatable,
184
184
  style: style,
185
- "class": (0, kendo_vue_common_1.classNames)('k-header', this.headerCellClassName(column.field, column.locked) || undefined),
186
- ariaLabel: ariaAttrs.ariaLabel,
187
- ariaColumnIndex: ariaAttrs.ariaColumnIndex
185
+ "class": (0, kendo_vue_common_1.classNames)('k-table-th', this.headerCellClassName(column.field, column.locked) || undefined),
186
+ ariaColumnIndex: ariaAttrs.ariaColumnIndex,
187
+ ariaLabel: ariaLabelFilter
188
188
  });
189
189
  }, this);
190
190
  return h("tr", {
191
- "class": "k-filter-row",
191
+ "class": "k-table-row k-filter-row",
192
192
  "aria-rowindex": this.ariaRowIndex,
193
193
  attrs: this.v3 ? undefined : {
194
194
  "aria-rowindex": this.ariaRowIndex,
@@ -11,6 +11,7 @@ declare type DefaultMethods<V> = {
11
11
  export interface GroupPanelProps extends ColumnDraggableProps {
12
12
  ref?: any;
13
13
  group: GroupDescriptor[];
14
+ ariaControls: String;
14
15
  onGroupChange?: (groups: GroupDescriptor[], event: any) => void;
15
16
  resolveTitle: (field: string) => string;
16
17
  onPressHandler?: (draggableEvent: any, element: HTMLElement) => void;
@@ -19,7 +19,8 @@ var kendo_vue_intl_1 = require("@progress/kendo-vue-intl");
19
19
  var GroupPanelVue2 = {
20
20
  props: {
21
21
  group: Array,
22
- resolveTitle: Function
22
+ resolveTitle: Function,
23
+ ariaControls: String
23
24
  },
24
25
  inject: {
25
26
  kendoLocalizationService: {
@@ -63,6 +64,7 @@ var GroupPanelVue2 = {
63
64
  render: function render(createElement) {
64
65
  var h = gh || createElement;
65
66
  var groupsProp = this.$props.group || [];
67
+ var ariaControls = this.$props.ariaControls;
66
68
  var groups = groupsProp.map(function (groupDesc, index) {
67
69
  var _this = this;
68
70
  return (
@@ -98,10 +100,21 @@ var GroupPanelVue2 = {
98
100
  })
99
101
  );
100
102
  }, this);
103
+ var groupHeaderAriaLabelValue = (0, kendo_vue_intl_1.provideLocalizationService)(this).toLanguageString(main_1.groupHeaderAriaLabel, main_1.messages[main_1.groupHeaderAriaLabel]);
101
104
  return h("div", {
102
- "class": "k-grouping-header k-grouping-header-flex"
103
- }, [groups, h("div", {
104
- "class": "k-indicator-container"
105
+ "class": "k-grouping-header",
106
+ role: 'toolbar',
107
+ attrs: this.v3 ? undefined : {
108
+ role: 'toolbar',
109
+ "aria-label": groupHeaderAriaLabelValue,
110
+ "aria-controls": ariaControls
111
+ },
112
+ "aria-label": groupHeaderAriaLabelValue,
113
+ "aria-controls": ariaControls
114
+ }, [!!groups.length && h("div", {
115
+ "class": "k-chip-list k-chip-list-md"
116
+ }, [groups]), h("div", {
117
+ "class": "k-grouping-drop-container"
105
118
  }, [!groups.length && (0, kendo_vue_intl_1.provideLocalizationService)(this).toLanguageString(main_1.groupPanelEmpty, main_1.messages[main_1.groupPanelEmpty])])]);
106
119
  }
107
120
  };
@@ -98,24 +98,16 @@ var HeaderVue2 = {
98
98
  }
99
99
  return h("div", {
100
100
  "class": this.wrapperClass,
101
- style: this.divStyle,
102
- role: "presentation",
103
- attrs: this.v3 ? undefined : {
104
- role: "presentation"
105
- }
101
+ style: this.divStyle
106
102
  }, [h("div", {
107
103
  ref: (0, kendo_vue_common_1.setRef)(this, 'headerWrap'),
108
- "class": "k-grid-header-wrap",
109
- role: "presentation",
110
- attrs: this.v3 ? undefined : {
111
- role: "presentation"
112
- }
104
+ "class": "k-grid-header-wrap"
113
105
  }, [h("table", {
114
106
  "class": this.tableClass,
115
107
  ref: (0, kendo_vue_common_1.setRef)(this, 'table'),
116
- role: "presentation",
108
+ role: "none",
117
109
  attrs: this.v3 ? undefined : {
118
- role: "presentation"
110
+ role: "none"
119
111
  }
120
112
  }, [h("colgroup", {
121
113
  ref: (0, kendo_vue_common_1.setRef)(this, 'colGroupHeader')
@@ -35,6 +35,8 @@ export interface HeaderRowProps extends ColumnDraggableProps {
35
35
  columnMenuAnimate?: boolean | PopupAnimation;
36
36
  onFilterChange?: Function;
37
37
  isRtl?: boolean;
38
+ isColCountDefined?: boolean;
39
+ columnsInitial?: ExtendedColumnProps[];
38
40
  }
39
41
  /**
40
42
  * @hidden
@@ -16,6 +16,9 @@ var GridHeaderCell_1 = require("./GridHeaderCell");
16
16
  var ColumnMenu_1 = require("../columnMenu/ColumnMenu");
17
17
  var kendo_vue_common_1 = require("@progress/kendo-vue-common");
18
18
  var kendo_vue_data_tools_1 = require("@progress/kendo-vue-data-tools"); // from '../../../datatools/src/main';
19
+ var main_1 = require("../messages/main");
20
+ var kendo_vue_intl_1 = require("@progress/kendo-vue-intl");
21
+ var kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
19
22
  /**
20
23
  * @hidden
21
24
  */
@@ -68,11 +71,18 @@ var HeaderRowVue2 = {
68
71
  return true;
69
72
  }
70
73
  },
71
- isRtl: Boolean
74
+ isRtl: Boolean,
75
+ isColCountDefined: Boolean,
76
+ // columnsInitial prop:
77
+ // Needed for hidden column scenarios. By this value we can define correct aria-colindex attribute
78
+ columnsInitial: Array
72
79
  },
73
80
  inject: {
74
81
  onNavFocus: {
75
82
  default: kendo_vue_common_1.noop
83
+ },
84
+ kendoLocalizationService: {
85
+ default: null
76
86
  }
77
87
  },
78
88
  data: function data() {
@@ -133,7 +143,7 @@ var HeaderRowVue2 = {
133
143
  },
134
144
  cellClass: function cellClass(field, headerClassName, locked) {
135
145
  var customClass = headerClassName ? ' ' + headerClassName : '';
136
- var result = "k-header ".concat(locked ? 'k-grid-header-sticky' : '') + customClass;
146
+ var result = "k-header" + (locked ? ' k-grid-header-sticky' : '') + customClass;
137
147
  if (this.$props.sort && this.$props.sort.filter(function (descriptor) {
138
148
  return descriptor.field === field;
139
149
  }).length > 0) {
@@ -173,6 +183,7 @@ var HeaderRowVue2 = {
173
183
  theadClasses: {
174
184
  get: function get() {
175
185
  return {
186
+ 'k-table-thead': true,
176
187
  'k-grid-header': true
177
188
  };
178
189
  }
@@ -188,6 +199,10 @@ var HeaderRowVue2 = {
188
199
  // @ts-ignore
189
200
  render: function render(createElement) {
190
201
  var h = gh || createElement;
202
+ var localizationService = (0, kendo_vue_intl_1.provideLocalizationService)(this);
203
+ var ariaLabelSortableColumn = localizationService.toLanguageString(main_1.sortableColumnAriaLabel, main_1.messages[main_1.sortableColumnAriaLabel]);
204
+ var ariaLabelAscendingSort = localizationService.toLanguageString(main_1.sortableColumnAscendingAriaLabel, main_1.messages[main_1.sortableColumnAscendingAriaLabel]);
205
+ var ariaLabelDescendingSort = localizationService.toLanguageString(main_1.sortableColumnDescendingAriaLabel, main_1.messages[main_1.sortableColumnDescendingAriaLabel]);
191
206
  this.serviceIndex = 0;
192
207
  this.index = -1;
193
208
  var cells = function cells(rowIndexes) {
@@ -204,14 +219,17 @@ var HeaderRowVue2 = {
204
219
  if (!this.$props.sort) {
205
220
  return null;
206
221
  }
222
+ var currentDir = iconSortIndex >= 0 ? this.$props.sort[iconSortIndex].dir : '';
207
223
  return iconSortIndex >= 0 && [h("span", {
208
224
  key: 1,
209
225
  "class": 'k-sort-icon'
210
226
  }, [h(kendo_vue_common_1.Icon, {
211
- name: 'sort-' + this.$props.sort[iconSortIndex].dir + '-small',
227
+ name: 'sort-' + currentDir + '-small',
212
228
  attrs: this.v3 ? undefined : {
213
- name: 'sort-' + this.$props.sort[iconSortIndex].dir + '-small'
214
- }
229
+ name: 'sort-' + currentDir + '-small',
230
+ icon: currentDir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
231
+ },
232
+ icon: currentDir === 'asc' ? kendo_svg_icons_1.sortAscSmallIcon : kendo_svg_icons_1.sortDescSmallIcon
215
233
  })]), this.$props.sort.length > 1 && h("span", {
216
234
  key: 2,
217
235
  "class": 'k-sort-icon'
@@ -220,8 +238,8 @@ var HeaderRowVue2 = {
220
238
  }, [iconSortIndex + 1])])];
221
239
  };
222
240
  var sortIcon = sortIconRenderer.call(this, sortIndex);
223
- var className = (column.kFirst ? 'k-first ' : '') + this.cellClass(column.field, column.headerClassName, column.locked);
224
241
  var columnMenu = column.columnMenu || column.columnMenu === false ? column.columnMenu : this.$props.columnMenu;
242
+ var className = (column.kFirst ? 'k-first ' : '') + this.cellClass(column.field, column.headerClassName, column.locked) + (columnMenu ? ' k-filterable' : '');
225
243
  var columnMenuRender = !columnMenu || typeof columnMenu === 'boolean' ? !!columnMenu : this.getTemplate(columnMenu);
226
244
  var style = column.left !== undefined ? !this.$props.isRtl ? {
227
245
  left: column.left + 'px',
@@ -230,32 +248,41 @@ var HeaderRowVue2 = {
230
248
  left: column.right + 'px',
231
249
  right: column.left + 'px'
232
250
  } : {};
251
+ var getAriaLabel = ariaSortMap[sortDir] === 'none' ? ariaLabelSortableColumn : ariaSortMap[sortDir] === 'ascending' ? ariaLabelAscendingSort : ariaLabelDescendingSort;
233
252
  var ariaAttrs = column.isAccessible ? {
234
253
  ariaSort: ariaSortMap[sortDir],
254
+ ariaLabel: getAriaLabel,
235
255
  role: 'columnheader',
236
- ariaColumnIndex: column.ariaColumnIndex,
237
- ariaSelected: false
256
+ ariaColumnIndex: this.$props.isColCountDefined ? this.$props.columnsInitial.findIndex(function (col) {
257
+ return col.field === column.field;
258
+ }) + 1 : undefined,
259
+ ariaSelected: false,
260
+ ariaHaspopup: columnMenu ? 'menu' : this.$props.filterable && column.filterable ? 'dialog' : undefined
238
261
  } : {
239
- 'role': 'presentation'
262
+ role: 'columnheader'
240
263
  };
241
264
  var key = column.declarationIndex >= 0 ? ++this.index : --this.serviceIndex;
242
265
  return (
243
266
  // @ts-ignore function children
244
267
  h(kendo_vue_data_tools_1.HeaderThElement, {
245
- ariaSort: ariaAttrs.ariaSort,
268
+ ariaSort: sortable ? ariaAttrs.ariaSort : undefined,
246
269
  attrs: this.v3 ? undefined : {
247
- ariaSort: ariaAttrs.ariaSort,
270
+ ariaSort: sortable ? ariaAttrs.ariaSort : undefined,
271
+ ariaLabel: sortable ? ariaAttrs.ariaLabel : undefined,
248
272
  role: ariaAttrs.role,
249
273
  ariaColumnIndex: ariaAttrs.ariaColumnIndex,
250
274
  ariaSelected: ariaAttrs.ariaSelected,
275
+ ariaHaspopup: ariaAttrs.ariaHaspopup,
251
276
  colSpan: column.colSpan,
252
277
  rowSpan: column.rowSpan,
253
278
  columnId: column.id,
254
279
  navigatable: column.navigatable
255
280
  },
281
+ ariaLabel: sortable ? ariaAttrs.ariaLabel : undefined,
256
282
  role: ariaAttrs.role,
257
283
  ariaColumnIndex: ariaAttrs.ariaColumnIndex,
258
284
  ariaSelected: ariaAttrs.ariaSelected,
285
+ ariaHaspopup: ariaAttrs.ariaHaspopup,
259
286
  key: key,
260
287
  colSpan: column.colSpan,
261
288
  rowSpan: column.rowSpan,
@@ -486,9 +513,9 @@ var HeaderRowVue2 = {
486
513
  }, this);
487
514
  };
488
515
  return h("thead", {
489
- role: "presentation",
516
+ role: "rowgroup",
490
517
  attrs: this.v3 ? undefined : {
491
- role: "presentation",
518
+ role: "rowgroup",
492
519
  "data-keyboardnavheader": true
493
520
  },
494
521
  "class": this.theadClasses,
@@ -510,10 +537,13 @@ var HeaderRowVue2 = {
510
537
  }, this.v3 ? function () {
511
538
  return [cells.call(_this3, rowIndexes)];
512
539
  } : [cells.call(_this3, rowIndexes)]) || h("tr", {
540
+ "class": 'k-table-row',
513
541
  role: 'row',
514
542
  attrs: this.v3 ? undefined : {
515
- role: 'row'
516
- }
543
+ role: 'row',
544
+ "aria-rowindex": this.columnsMap.length
545
+ },
546
+ "aria-rowindex": this.columnsMap.length
517
547
  }, [cells.call(this, rowIndexes)]);
518
548
  }, this), this.$props.filterRow]);
519
549
  }
@@ -65,4 +65,16 @@ export interface GridFilterCellProps {
65
65
  * The ariaLabel of the filter editor.
66
66
  */
67
67
  ariaLabel?: string;
68
+ /**
69
+ * Configures the `size` of the cell.
70
+ *
71
+ * The available options are:
72
+ * - small
73
+ * - medium
74
+ * - large
75
+ * - null&mdash;Does not set a size `class`.
76
+ *
77
+ * @default `medium`
78
+ */
79
+ size?: null | 'small' | 'medium' | 'large' | string;
68
80
  }