@progress/kendo-react-data-tools 4.10.0-dev.202110110856 → 4.10.0

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.
@@ -17,8 +17,8 @@ export function HeaderCell(props) {
17
17
  var clickProps = props.onClick ? {
18
18
  onClick: props.onClick
19
19
  } : {};
20
- var defaultRendering = (React.createElement("span", __assign({ className: "k-link" }, clickProps),
21
- props.title || props.field || '\u00A0',
20
+ var defaultRendering = (React.createElement("span", __assign({ className: 'k-link' }, clickProps),
21
+ React.createElement("span", { className: 'k-column-title' }, props.title || props.field || '\u00A0'),
22
22
  props.children));
23
23
  return props.render ?
24
24
  props.render.call(undefined, defaultRendering, props) :
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { SortDescriptor, CompositeFilterDescriptor } from '@progress/kendo-data-query';
3
3
  import { TreeColumnBaseProps, ExtendedColumnProps } from './ColumnProps';
4
4
  import { HeaderCellProps } from './HeaderCell';
5
- import { SortSettings, ColumnSortSettings } from './SortSettings';
5
+ import { SortSettings } from './SortSettings';
6
6
  import { ColumnResize } from '../drag/ColumnResize';
7
7
  import { ColumnDraggableProps } from '../drag/ColumnDraggable';
8
8
  /**
@@ -27,8 +27,7 @@ export interface HeaderRowProps extends ColumnDraggableProps {
27
27
  export declare class HeaderRow extends React.Component<HeaderRowProps, {}> {
28
28
  cellClick: (e: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLSpanElement, MouseEvent>, column: TreeColumnBaseProps) => void;
29
29
  cellKeyDown: (event: React.KeyboardEvent<HTMLElement>, column: TreeColumnBaseProps) => void;
30
- cellClass(field: string | undefined, headerClassName: string | undefined, locked?: boolean): string;
31
- sortIcon(sortIndex: number, sortable: ColumnSortSettings | undefined): JSX.Element | JSX.Element[];
30
+ sortIcon(sortIndex: number): JSX.Element[];
32
31
  render(): JSX.Element[];
33
32
  private cells;
34
33
  }
@@ -28,7 +28,7 @@ import { normalize } from './SortSettings';
28
28
  import { ColumnResizer } from '../drag/ColumnResizer';
29
29
  import { ColumnDraggable } from '../drag/ColumnDraggable';
30
30
  import { HeaderThElement } from './HeaderThElement';
31
- import { Keys } from '@progress/kendo-react-common';
31
+ import { classNames, Keys } from '@progress/kendo-react-common';
32
32
  import { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';
33
33
  import { messages, sortAriaLabel } from '../messages';
34
34
  /**
@@ -90,49 +90,49 @@ var HeaderRow = /** @class */ (function (_super) {
90
90
  title: column.title,
91
91
  selectionValue: column.headerSelectionValue,
92
92
  render: _this.props.cellRender,
93
- children: _this.sortIcon(sortIndex, sortable)
93
+ children: _this.sortIcon(sortIndex)
94
94
  };
95
- var className = (column.kFirst ? 'k-first ' : '')
96
- + _this.cellClass(column.field, column.headerClassName, column.locked);
95
+ var ColumnMenu = column.columnMenu || _this.props.columnMenu;
96
+ var className = classNames({
97
+ 'k-first': column.kFirst,
98
+ 'k-filterable': Boolean(ColumnMenu),
99
+ 'k-header': true,
100
+ 'k-grid-header-sticky': column.locked,
101
+ 'k-sorted': _this.props.sort && _this.props.sort.some(function (descriptor) { return descriptor.field === column.field; })
102
+ }, column.headerClassName);
97
103
  var style = (column.locked !== undefined) ? {
98
104
  left: column.left,
99
105
  right: column.right,
100
106
  borderRightWidth: column.rightBorder ? '1px' : ''
101
107
  } : {};
102
- var ColumnMenu = column.columnMenu || _this.props.columnMenu;
108
+ var sortLabel = intl(_this).toLanguageString(sortAriaLabel, messages[sortAriaLabel]);
103
109
  var ariaAttrs = column.isAccessible ? {
104
110
  ariaSort: sortable ? ariaSortMap[sortDir] : undefined,
105
111
  role: 'columnheader',
106
112
  ariaColumnIndex: column.ariaColumnIndex,
107
- ariaSelected: false
113
+ ariaSelected: false,
114
+ ariaDescription: sortable ? sortLabel : ''
108
115
  } : {
109
116
  role: 'presentation'
110
117
  };
111
118
  return (React.createElement(HeaderThElement, __assign({ key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style, columnId: column.id, navigatable: column.navigatable, onKeyDown: sortable && (function (e) { return _this.cellKeyDown(e, column); }) || undefined }, ariaAttrs),
112
- ColumnMenu && (React.createElement(ColumnMenu, { sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.columnMenuFilter, onFilterChange: _this.props.columnMenuFilterChange, field: column.field })),
113
- column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)) ||
119
+ column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)),
120
+ !column.headerCell && (React.createElement("span", { className: 'k-cell-inner' },
114
121
  React.createElement(HeaderCell, __assign({}, headerCellProps)),
115
- resizable && columnResize &&
122
+ ColumnMenu && (React.createElement(ColumnMenu, { sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.columnMenuFilter, onFilterChange: _this.props.columnMenuFilterChange, field: column.field })))),
123
+ columnResize && resizable &&
116
124
  React.createElement(ColumnResizer, { key: "ColumnResizer", resize: function (e, element, end) { return columnResize.dragHandler(e, column, element, end); } })));
117
125
  }); };
118
126
  return _this;
119
127
  }
120
- HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {
121
- var result = "k-header" + (locked ? ' k-grid-header-sticky' : '') + (headerClassName ? ' ' + headerClassName : '');
122
- if (this.props.sort && this.props.sort.some(function (descriptor) { return descriptor.field === field; })) {
123
- result += ' k-sorted';
124
- }
125
- return result;
126
- };
127
- HeaderRow.prototype.sortIcon = function (sortIndex, sortable) {
128
+ HeaderRow.prototype.sortIcon = function (sortIndex) {
128
129
  if (!this.props.sort) {
129
130
  return null;
130
131
  }
131
- var sortLabel = intl(this).toLanguageString(sortAriaLabel, messages[sortAriaLabel]);
132
- return sortIndex >= 0 ? [
133
- React.createElement("span", { key: 1, "aria-label": sortLabel, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),
132
+ return sortIndex >= 0 && [
133
+ React.createElement("span", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),
134
134
  this.props.sort.length > 1 && React.createElement("span", { key: 2, className: "k-sort-order" }, sortIndex + 1)
135
- ] : (sortable && React.createElement("span", { "aria-label": sortLabel }));
135
+ ];
136
136
  };
137
137
  HeaderRow.prototype.render = function () {
138
138
  var _this = this;
@@ -8,6 +8,7 @@ export declare const HeaderThElement: {
8
8
  ariaLabel?: string;
9
9
  ariaColumnIndex?: number;
10
10
  ariaSelected?: boolean;
11
+ ariaDescription?: string;
11
12
  colSpan?: number;
12
13
  rowSpan?: number;
13
14
  role?: string;
@@ -17,6 +17,9 @@ import { useTableKeyboardNavigation } from '../navigation/hooks';
17
17
  export var HeaderThElement = function (props) {
18
18
  var ariaSort = props.ariaSort, colSpan = props.colSpan, rowSpan = props.rowSpan, className = props.className, style = props.style, columnId = props.columnId, onKeyDown = props.onKeyDown, navigatable = props.navigatable, ariaColumnIndex = props.ariaColumnIndex, ariaLabel = props.ariaLabel, role = props.role, ariaSelected = props.ariaSelected;
19
19
  var navigationAttributes = useTableKeyboardNavigation(columnId, navigatable);
20
- return (React.createElement("th", __assign({ "aria-sort": ariaSort, "aria-label": ariaLabel, "aria-colindex": ariaColumnIndex, "aria-selected": ariaSelected, colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));
20
+ return (React.createElement("th", __assign({ "aria-sort": ariaSort, "aria-label": ariaLabel, "aria-colindex": ariaColumnIndex, "aria-selected": ariaSelected,
21
+ // TODO: Enable this with React 18. Currently throws warnings
22
+ // aria-description={ariaDescription}
23
+ colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));
21
24
  };
22
25
  HeaderThElement.displayName = 'KendoReactHeaderThElement';
@@ -11,6 +11,13 @@ function nextColumn(columns, current) {
11
11
  }
12
12
  return next;
13
13
  }
14
+ var getColumnWidth = function (column) {
15
+ var width = column.width ? parseFloat(column.width.toString()) : 0;
16
+ if (!width && column.children && column.children.length) {
17
+ width = column.children.reduce(function (currentSum, child) { return getColumnWidth(child) + currentSum; }, 0);
18
+ }
19
+ return width;
20
+ };
14
21
  /**
15
22
  * @hidden
16
23
  */
@@ -56,7 +63,7 @@ export function mapColumns(columns) {
56
63
  columns.forEach(function (column) {
57
64
  if (column.locked) {
58
65
  column.left = stickyLeftWidth[column.depth];
59
- width = column.width ? parseFloat(column.width.toString()) : 0;
66
+ width = getColumnWidth(column);
60
67
  if (column.children.length === 0) {
61
68
  for (var i = column.depth; i < stickyLeftWidth.length; i++) {
62
69
  stickyLeftWidth[i] += width;
@@ -73,7 +80,7 @@ export function mapColumns(columns) {
73
80
  var column = columns[i];
74
81
  if (column.locked) {
75
82
  column.right = stickyRightWidth[column.depth];
76
- width = column.width ? parseFloat(column.width.toString()) : 0;
83
+ width = getColumnWidth(column);
77
84
  if (column.children.length === 0) {
78
85
  for (var j = column.depth; j < stickyRightWidth.length; j++) {
79
86
  stickyRightWidth[j] += width;
@@ -5,7 +5,7 @@ export var packageMetadata = {
5
5
  name: '@progress/kendo-react-data-tools',
6
6
  productName: 'KendoReact',
7
7
  productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
8
- publishDate: 1633941860,
8
+ publishDate: 1635344879,
9
9
  version: '',
10
10
  licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
11
11
  };
@@ -140,7 +140,7 @@ var Pager = /** @class */ (function (_super) {
140
140
  e.preventDefault();
141
141
  _this.changePage(page, e);
142
142
  }, href: "#", className: className, title: title },
143
- React.createElement("span", { className: icon, "aria-label": title })));
143
+ React.createElement("span", { className: icon })));
144
144
  };
145
145
  Object.defineProperty(Pager.prototype, "totalPages", {
146
146
  get: function () {
@@ -19,8 +19,8 @@ function HeaderCell(props) {
19
19
  var clickProps = props.onClick ? {
20
20
  onClick: props.onClick
21
21
  } : {};
22
- var defaultRendering = (React.createElement("span", __assign({ className: "k-link" }, clickProps),
23
- props.title || props.field || '\u00A0',
22
+ var defaultRendering = (React.createElement("span", __assign({ className: 'k-link' }, clickProps),
23
+ React.createElement("span", { className: 'k-column-title' }, props.title || props.field || '\u00A0'),
24
24
  props.children));
25
25
  return props.render ?
26
26
  props.render.call(undefined, defaultRendering, props) :
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { SortDescriptor, CompositeFilterDescriptor } from '@progress/kendo-data-query';
3
3
  import { TreeColumnBaseProps, ExtendedColumnProps } from './ColumnProps';
4
4
  import { HeaderCellProps } from './HeaderCell';
5
- import { SortSettings, ColumnSortSettings } from './SortSettings';
5
+ import { SortSettings } from './SortSettings';
6
6
  import { ColumnResize } from '../drag/ColumnResize';
7
7
  import { ColumnDraggableProps } from '../drag/ColumnDraggable';
8
8
  /**
@@ -27,8 +27,7 @@ export interface HeaderRowProps extends ColumnDraggableProps {
27
27
  export declare class HeaderRow extends React.Component<HeaderRowProps, {}> {
28
28
  cellClick: (e: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLSpanElement, MouseEvent>, column: TreeColumnBaseProps) => void;
29
29
  cellKeyDown: (event: React.KeyboardEvent<HTMLElement>, column: TreeColumnBaseProps) => void;
30
- cellClass(field: string | undefined, headerClassName: string | undefined, locked?: boolean): string;
31
- sortIcon(sortIndex: number, sortable: ColumnSortSettings | undefined): JSX.Element | JSX.Element[];
30
+ sortIcon(sortIndex: number): JSX.Element[];
32
31
  render(): JSX.Element[];
33
32
  private cells;
34
33
  }
@@ -92,49 +92,49 @@ var HeaderRow = /** @class */ (function (_super) {
92
92
  title: column.title,
93
93
  selectionValue: column.headerSelectionValue,
94
94
  render: _this.props.cellRender,
95
- children: _this.sortIcon(sortIndex, sortable)
95
+ children: _this.sortIcon(sortIndex)
96
96
  };
97
- var className = (column.kFirst ? 'k-first ' : '')
98
- + _this.cellClass(column.field, column.headerClassName, column.locked);
97
+ var ColumnMenu = column.columnMenu || _this.props.columnMenu;
98
+ var className = kendo_react_common_1.classNames({
99
+ 'k-first': column.kFirst,
100
+ 'k-filterable': Boolean(ColumnMenu),
101
+ 'k-header': true,
102
+ 'k-grid-header-sticky': column.locked,
103
+ 'k-sorted': _this.props.sort && _this.props.sort.some(function (descriptor) { return descriptor.field === column.field; })
104
+ }, column.headerClassName);
99
105
  var style = (column.locked !== undefined) ? {
100
106
  left: column.left,
101
107
  right: column.right,
102
108
  borderRightWidth: column.rightBorder ? '1px' : ''
103
109
  } : {};
104
- var ColumnMenu = column.columnMenu || _this.props.columnMenu;
110
+ var sortLabel = kendo_react_intl_1.provideLocalizationService(_this).toLanguageString(messages_1.sortAriaLabel, messages_1.messages[messages_1.sortAriaLabel]);
105
111
  var ariaAttrs = column.isAccessible ? {
106
112
  ariaSort: sortable ? ariaSortMap[sortDir] : undefined,
107
113
  role: 'columnheader',
108
114
  ariaColumnIndex: column.ariaColumnIndex,
109
- ariaSelected: false
115
+ ariaSelected: false,
116
+ ariaDescription: sortable ? sortLabel : ''
110
117
  } : {
111
118
  role: 'presentation'
112
119
  };
113
120
  return (React.createElement(HeaderThElement_1.HeaderThElement, __assign({ key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style, columnId: column.id, navigatable: column.navigatable, onKeyDown: sortable && (function (e) { return _this.cellKeyDown(e, column); }) || undefined }, ariaAttrs),
114
- ColumnMenu && (React.createElement(ColumnMenu, { sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.columnMenuFilter, onFilterChange: _this.props.columnMenuFilterChange, field: column.field })),
115
- column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)) ||
121
+ column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)),
122
+ !column.headerCell && (React.createElement("span", { className: 'k-cell-inner' },
116
123
  React.createElement(HeaderCell_1.HeaderCell, __assign({}, headerCellProps)),
117
- resizable && columnResize &&
124
+ ColumnMenu && (React.createElement(ColumnMenu, { sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.columnMenuFilter, onFilterChange: _this.props.columnMenuFilterChange, field: column.field })))),
125
+ columnResize && resizable &&
118
126
  React.createElement(ColumnResizer_1.ColumnResizer, { key: "ColumnResizer", resize: function (e, element, end) { return columnResize.dragHandler(e, column, element, end); } })));
119
127
  }); };
120
128
  return _this;
121
129
  }
122
- HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {
123
- var result = "k-header" + (locked ? ' k-grid-header-sticky' : '') + (headerClassName ? ' ' + headerClassName : '');
124
- if (this.props.sort && this.props.sort.some(function (descriptor) { return descriptor.field === field; })) {
125
- result += ' k-sorted';
126
- }
127
- return result;
128
- };
129
- HeaderRow.prototype.sortIcon = function (sortIndex, sortable) {
130
+ HeaderRow.prototype.sortIcon = function (sortIndex) {
130
131
  if (!this.props.sort) {
131
132
  return null;
132
133
  }
133
- var sortLabel = kendo_react_intl_1.provideLocalizationService(this).toLanguageString(messages_1.sortAriaLabel, messages_1.messages[messages_1.sortAriaLabel]);
134
- return sortIndex >= 0 ? [
135
- React.createElement("span", { key: 1, "aria-label": sortLabel, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),
134
+ return sortIndex >= 0 && [
135
+ React.createElement("span", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),
136
136
  this.props.sort.length > 1 && React.createElement("span", { key: 2, className: "k-sort-order" }, sortIndex + 1)
137
- ] : (sortable && React.createElement("span", { "aria-label": sortLabel }));
137
+ ];
138
138
  };
139
139
  HeaderRow.prototype.render = function () {
140
140
  var _this = this;
@@ -8,6 +8,7 @@ export declare const HeaderThElement: {
8
8
  ariaLabel?: string;
9
9
  ariaColumnIndex?: number;
10
10
  ariaSelected?: boolean;
11
+ ariaDescription?: string;
11
12
  colSpan?: number;
12
13
  rowSpan?: number;
13
14
  role?: string;
@@ -19,6 +19,9 @@ var hooks_1 = require("../navigation/hooks");
19
19
  exports.HeaderThElement = function (props) {
20
20
  var ariaSort = props.ariaSort, colSpan = props.colSpan, rowSpan = props.rowSpan, className = props.className, style = props.style, columnId = props.columnId, onKeyDown = props.onKeyDown, navigatable = props.navigatable, ariaColumnIndex = props.ariaColumnIndex, ariaLabel = props.ariaLabel, role = props.role, ariaSelected = props.ariaSelected;
21
21
  var navigationAttributes = hooks_1.useTableKeyboardNavigation(columnId, navigatable);
22
- return (React.createElement("th", __assign({ "aria-sort": ariaSort, "aria-label": ariaLabel, "aria-colindex": ariaColumnIndex, "aria-selected": ariaSelected, colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));
22
+ return (React.createElement("th", __assign({ "aria-sort": ariaSort, "aria-label": ariaLabel, "aria-colindex": ariaColumnIndex, "aria-selected": ariaSelected,
23
+ // TODO: Enable this with React 18. Currently throws warnings
24
+ // aria-description={ariaDescription}
25
+ colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));
23
26
  };
24
27
  exports.HeaderThElement.displayName = 'KendoReactHeaderThElement';
@@ -13,6 +13,13 @@ function nextColumn(columns, current) {
13
13
  }
14
14
  return next;
15
15
  }
16
+ var getColumnWidth = function (column) {
17
+ var width = column.width ? parseFloat(column.width.toString()) : 0;
18
+ if (!width && column.children && column.children.length) {
19
+ width = column.children.reduce(function (currentSum, child) { return getColumnWidth(child) + currentSum; }, 0);
20
+ }
21
+ return width;
22
+ };
16
23
  /**
17
24
  * @hidden
18
25
  */
@@ -58,7 +65,7 @@ function mapColumns(columns) {
58
65
  columns.forEach(function (column) {
59
66
  if (column.locked) {
60
67
  column.left = stickyLeftWidth[column.depth];
61
- width = column.width ? parseFloat(column.width.toString()) : 0;
68
+ width = getColumnWidth(column);
62
69
  if (column.children.length === 0) {
63
70
  for (var i = column.depth; i < stickyLeftWidth.length; i++) {
64
71
  stickyLeftWidth[i] += width;
@@ -75,7 +82,7 @@ function mapColumns(columns) {
75
82
  var column = columns[i];
76
83
  if (column.locked) {
77
84
  column.right = stickyRightWidth[column.depth];
78
- width = column.width ? parseFloat(column.width.toString()) : 0;
85
+ width = getColumnWidth(column);
79
86
  if (column.children.length === 0) {
80
87
  for (var j = column.depth; j < stickyRightWidth.length; j++) {
81
88
  stickyRightWidth[j] += width;
@@ -7,7 +7,7 @@ exports.packageMetadata = {
7
7
  name: '@progress/kendo-react-data-tools',
8
8
  productName: 'KendoReact',
9
9
  productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
10
- publishDate: 1633941860,
10
+ publishDate: 1635344879,
11
11
  version: '',
12
12
  licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
13
13
  };
@@ -142,7 +142,7 @@ var Pager = /** @class */ (function (_super) {
142
142
  e.preventDefault();
143
143
  _this.changePage(page, e);
144
144
  }, href: "#", className: className, title: title },
145
- React.createElement("span", { className: icon, "aria-label": title })));
145
+ React.createElement("span", { className: icon })));
146
146
  };
147
147
  Object.defineProperty(Pager.prototype, "totalPages", {
148
148
  get: function () {