@progress/kendo-angular-grid 5.5.1 → 6.0.0-dev.202201191529
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/LICENSE.md +1 -1
- package/NOTICE.txt +119 -79
- package/README.md +1 -1
- package/dist/cdn/js/kendo-angular-grid.js +2 -2
- package/dist/cdn/main.js +1 -1
- package/dist/es/column-menu/column-chooser.component.js +1 -1
- package/dist/es/column-menu/column-list.component.js +1 -1
- package/dist/es/dragdrop/draggable-column.directive.js +3 -3
- package/dist/es/filtering/cell/filter-cell-operators.component.js +1 -1
- package/dist/es/filtering/cell/string-filter-cell.component.js +1 -1
- package/dist/es/filtering/filter-input.directive.js +2 -1
- package/dist/es/filtering/menu/boolean-filter-menu.component.js +1 -1
- package/dist/es/filtering/menu/filter-menu-container.component.js +1 -1
- package/dist/es/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
- package/dist/es/filtering/menu/string-filter-menu-input.component.js +1 -1
- package/dist/es/grid.component.js +4 -5
- package/dist/es/grouping/group-indicator.component.js +1 -1
- package/dist/es/navigation/focusable.directive.js +5 -5
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/pager/pager-numeric-buttons.component.js +1 -1
- package/dist/es/pager/pager.component.js +0 -5
- package/dist/es/pdf/export-element.js +1 -1
- package/dist/es/rendering/cell.component.js +1 -1
- package/dist/es/rendering/constants.js +1 -1
- package/dist/es/rendering/details-expand.directive.js +20 -6
- package/dist/es/rendering/header/header.component.js +1 -1
- package/dist/es/rendering/toolbar/toolbar-template.directive.js +4 -4
- package/dist/es/selection/pair-set.js +91 -0
- package/dist/es/selection/selection-default.js +48 -30
- package/dist/es/utils.js +1 -3
- package/dist/es2015/column-menu/column-chooser.component.js +2 -2
- package/dist/es2015/column-menu/column-list.component.js +3 -3
- package/dist/es2015/dragdrop/draggable-column.directive.js +3 -3
- package/dist/es2015/filtering/cell/filter-cell-operators.component.js +3 -3
- package/dist/es2015/filtering/cell/string-filter-cell.component.js +1 -1
- package/dist/es2015/filtering/filter-input.directive.js +2 -1
- package/dist/es2015/filtering/menu/boolean-filter-menu.component.js +1 -1
- package/dist/es2015/filtering/menu/filter-menu-container.component.js +2 -2
- package/dist/es2015/filtering/menu/filter-menu-input-wrapper.component.d.ts +2 -2
- package/dist/es2015/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
- package/dist/es2015/filtering/menu/string-filter-menu-input.component.js +1 -1
- package/dist/es2015/grid.component.d.ts +4 -4
- package/dist/es2015/grid.component.js +4 -5
- package/dist/es2015/grouping/group-indicator.component.js +2 -2
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/navigation/focusable.directive.d.ts +5 -5
- package/dist/es2015/navigation/focusable.directive.js +5 -5
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/pager/pager-numeric-buttons.component.js +1 -1
- package/dist/es2015/pager/pager.component.d.ts +0 -1
- package/dist/es2015/pager/pager.component.js +0 -5
- package/dist/es2015/pdf/export-element.js +1 -1
- package/dist/es2015/rendering/cell.component.js +3 -3
- package/dist/es2015/rendering/constants.d.ts +1 -1
- package/dist/es2015/rendering/constants.js +1 -1
- package/dist/es2015/rendering/details-expand.directive.d.ts +8 -2
- package/dist/es2015/rendering/details-expand.directive.js +20 -6
- package/dist/es2015/rendering/header/header.component.js +1 -1
- package/dist/es2015/rendering/toolbar/toolbar-template.directive.d.ts +4 -4
- package/dist/es2015/rendering/toolbar/toolbar-template.directive.js +4 -4
- package/dist/es2015/selection/pair-set.d.ts +50 -0
- package/dist/es2015/selection/pair-set.js +81 -0
- package/dist/es2015/selection/selection-default.d.ts +10 -2
- package/dist/es2015/selection/selection-default.js +42 -28
- package/dist/es2015/utils.d.ts +2 -2
- package/dist/fesm2015/index.js +179 -78
- package/dist/fesm5/index.js +186 -74
- package/dist/npm/column-menu/column-chooser.component.js +1 -1
- package/dist/npm/column-menu/column-list.component.js +1 -1
- package/dist/npm/dragdrop/draggable-column.directive.js +3 -3
- package/dist/npm/filtering/cell/filter-cell-operators.component.js +1 -1
- package/dist/npm/filtering/cell/string-filter-cell.component.js +1 -1
- package/dist/npm/filtering/filter-input.directive.js +2 -1
- package/dist/npm/filtering/menu/boolean-filter-menu.component.js +1 -1
- package/dist/npm/filtering/menu/filter-menu-container.component.js +1 -1
- package/dist/npm/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
- package/dist/npm/filtering/menu/string-filter-menu-input.component.js +1 -1
- package/dist/npm/grid.component.js +4 -5
- package/dist/npm/grouping/group-indicator.component.js +1 -1
- package/dist/npm/navigation/focusable.directive.js +5 -5
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/pager/pager-numeric-buttons.component.js +1 -1
- package/dist/npm/pager/pager.component.js +0 -5
- package/dist/npm/pdf/export-element.js +1 -1
- package/dist/npm/rendering/cell.component.js +1 -1
- package/dist/npm/rendering/constants.js +1 -1
- package/dist/npm/rendering/details-expand.directive.js +19 -5
- package/dist/npm/rendering/header/header.component.js +1 -1
- package/dist/npm/rendering/toolbar/toolbar-template.directive.js +4 -4
- package/dist/npm/selection/pair-set.js +93 -0
- package/dist/npm/selection/selection-default.js +48 -30
- package/dist/npm/utils.js +1 -3
- package/dist/systemjs/kendo-angular-grid.js +1 -1
- package/package.json +16 -16
|
@@ -134,7 +134,7 @@ var ColumnChooserComponent = /** @class */ (function () {
|
|
|
134
134
|
ColumnChooserComponent = tslib_1.__decorate([
|
|
135
135
|
core_1.Component({
|
|
136
136
|
selector: 'kendo-grid-column-chooser',
|
|
137
|
-
template: "\n <button #anchor\n type=\"button\"\n (click)=\"toggle(anchor, template)\"\n class=\"k-button k-
|
|
137
|
+
template: "\n <button #anchor\n type=\"button\"\n (click)=\"toggle(anchor, template)\"\n class=\"k-button k-button-flat-base k-button-flat k-icon-button k-button-md k-rounded-md k-button-rectangle k-icon-button\"\n [attr.title]=\"localization.get('columns')\">\n <span class=\"k-button-icon k-icon k-i-columns\"></span>\n </button>\n <ng-template #template>\n <span class='k-column-chooser-title'>{{ localization.get('columns') }}</span>\n <kendo-grid-columnlist\n [columns]=\"columns\"\n [applyText]=\"localization.get('columnsApply')\"\n [resetText]=\"localization.get('columnsReset')\"\n [autoSync]=\"autoSync\"\n [allowHideAll]=\"allowHideAll\"\n (apply)=\"onApply($event)\"\n (columnChange)=\"onChange($event)\">\n </kendo-grid-columnlist>\n </ng-template>\n "
|
|
138
138
|
}),
|
|
139
139
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService,
|
|
140
140
|
column_info_service_1.ColumnInfoService,
|
|
@@ -223,7 +223,7 @@ var ColumnListComponent = /** @class */ (function () {
|
|
|
223
223
|
ColumnListComponent = tslib_1.__decorate([
|
|
224
224
|
core_1.Component({
|
|
225
225
|
selector: 'kendo-grid-columnlist',
|
|
226
|
-
template: "\n <div class=\"k-column-list\">\n <label *ngFor=\"let column of columns; let index = index;\" class='k-column-list-item'>\n <input class=\"k-checkbox\" type=\"checkbox\" [attr.data-index]=\"index\" [checked]=\"!column.hidden\" [disabled]=\"isDisabled(column)\" /><span class=\"k-checkbox-label\">{{ column.displayTitle }}</span>\n </label>\n </div>\n <div [ngClass]=\"actionsClass\" *ngIf=\"!autoSync\">\n <button type=\"button\" class=\"k-button\" (click)=\"cancelChanges()\">{{ resetText }}</button>\n <button #applyButton type=\"button\" (keydown.tab)=\"onTab($event)\" class=\"k-button k-primary\" (click)=\"applyChanges()\">{{ applyText }}</button>\n </div>\n "
|
|
226
|
+
template: "\n <div class=\"k-column-list\">\n <label *ngFor=\"let column of columns; let index = index;\" class='k-column-list-item'>\n <input class=\"k-checkbox k-checkbox-md k-rounded-md\" type=\"checkbox\" [attr.data-index]=\"index\" [checked]=\"!column.hidden\" [disabled]=\"isDisabled(column)\" /><span class=\"k-checkbox-label\">{{ column.displayTitle }}</span>\n </label>\n </div>\n <div [ngClass]=\"actionsClass\" *ngIf=\"!autoSync\">\n <button type=\"button\" class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle\" (click)=\"cancelChanges()\">{{ resetText }}</button>\n <button #applyButton type=\"button\" (keydown.tab)=\"onTab($event)\" class=\"k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle\" (click)=\"applyChanges()\">{{ applyText }}</button>\n </div>\n "
|
|
227
227
|
}),
|
|
228
228
|
tslib_1.__metadata("design:paramtypes", [core_1.ElementRef,
|
|
229
229
|
core_1.NgZone,
|
|
@@ -28,9 +28,9 @@ exports.ɵ0 = ɵ0;
|
|
|
28
28
|
var hasClass = function (className) { return function (el) { return new RegExp("(^| )" + className + "( |$)").test(el.className); }; };
|
|
29
29
|
var ɵ1 = hasClass;
|
|
30
30
|
exports.ɵ1 = ɵ1;
|
|
31
|
-
var isDeleteButton = utils_1.or(hasClass(
|
|
32
|
-
var isSortIcon = utils_1.or(hasClass(
|
|
33
|
-
var skipButtons = utils_1.and(utils_1.not(isDeleteButton), utils_1.not(isSortIcon), utils_1.not(dom_queries_1.isFocusableWithTabKey), utils_1.not(dom_queries_1.matchesNodeName(
|
|
31
|
+
var isDeleteButton = utils_1.or(hasClass('k-i-group-delete'), hasClass('k-icon-button'));
|
|
32
|
+
var isSortIcon = utils_1.or(hasClass('k-i-sort-asc-sm'), hasClass('k-i-sort-desc-sm'));
|
|
33
|
+
var skipButtons = utils_1.and(utils_1.not(isDeleteButton), utils_1.not(isSortIcon), utils_1.not(dom_queries_1.isFocusableWithTabKey), utils_1.not(dom_queries_1.matchesNodeName('label')));
|
|
34
34
|
var elementUnderCursor = function (_a) {
|
|
35
35
|
var clientX = _a.clientX, clientY = _a.clientY;
|
|
36
36
|
return document.elementFromPoint(clientX, clientY);
|
|
@@ -119,7 +119,7 @@ var FilterCellOperatorsComponent = /** @class */ (function () {
|
|
|
119
119
|
FilterCellOperatorsComponent = tslib_1.__decorate([
|
|
120
120
|
core_1.Component({
|
|
121
121
|
selector: 'kendo-grid-filter-cell-operators',
|
|
122
|
-
template: "\n <kendo-dropdownlist\n #dropdown\n *ngIf=\"showOperators\"\n kendoGridFocusable\n [data]=\"operators\"\n class=\"k-dropdown-operator\"\n (valueChange)=\"onChange($event)\"\n [value]=\"value\"\n iconClass=\"k-i-filter\"\n [valuePrimitive]=\"true\"\n textField=\"text\"\n [popupSettings]=\"{ width: 'auto' }\"\n valueField=\"value\"\n (keydown)=\"dropdownKeydown($event)\">\n </kendo-dropdownlist>\n <button type=\"button\"\n kendoGridFocusable\n
|
|
122
|
+
template: "\n <kendo-dropdownlist\n #dropdown\n *ngIf=\"showOperators\"\n kendoGridFocusable\n [data]=\"operators\"\n class=\"k-dropdown-operator\"\n (valueChange)=\"onChange($event)\"\n [value]=\"value\"\n iconClass=\"k-i-filter\"\n [valuePrimitive]=\"true\"\n textField=\"text\"\n [popupSettings]=\"{ width: 'auto' }\"\n valueField=\"value\"\n (keydown)=\"dropdownKeydown($event)\">\n </kendo-dropdownlist>\n <button type=\"button\"\n kendoGridFocusable\n *ngIf=\"showButton\"\n class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle k-icon-button\"\n [title]=\"clearText\"\n (click)=\"clearClick()\"\n (keydown)=\"clearKeydown($event)\">\n <span class=\"k-icon k-button-icon k-i-filter-clear\"></span>\n </button>\n "
|
|
123
123
|
}),
|
|
124
124
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService])
|
|
125
125
|
], FilterCellOperatorsComponent);
|
|
@@ -69,7 +69,7 @@ var StringFilterCellComponent = /** @class */ (function (_super) {
|
|
|
69
69
|
StringFilterCellComponent = tslib_1.__decorate([
|
|
70
70
|
core_1.Component({
|
|
71
71
|
selector: 'kendo-grid-string-filter-cell',
|
|
72
|
-
template: "\n <kendo-grid-filter-wrapper-cell\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [showOperators]=\"showOperators\">\n <input\n
|
|
72
|
+
template: "\n <kendo-grid-filter-wrapper-cell\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [showOperators]=\"showOperators\">\n <input\n kendoTextBox\n kendoGridFocusable\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"filterDelay\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-wrapper-cell>\n "
|
|
73
73
|
}),
|
|
74
74
|
tslib_1.__metadata("design:paramtypes", [filter_service_1.FilterService,
|
|
75
75
|
kendo_angular_l10n_1.LocalizationService])
|
|
@@ -81,7 +81,8 @@ var FilterInputDirective = /** @class */ (function () {
|
|
|
81
81
|
FilterInputDirective.prototype.addAriaAttributes = function () {
|
|
82
82
|
var ariaValue = this.columnLabel;
|
|
83
83
|
if (this.kendoInput && this.kendoInput.focusableId && kendo_angular_common_1.isDocumentAvailable()) {
|
|
84
|
-
var focusableElement = this.element.nativeElement.querySelector("#" + this.kendoInput.focusableId)
|
|
84
|
+
var focusableElement = this.element.nativeElement.querySelector("#" + this.kendoInput.focusableId) ||
|
|
85
|
+
this.element.nativeElement;
|
|
85
86
|
this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);
|
|
86
87
|
}
|
|
87
88
|
else {
|
|
@@ -127,7 +127,7 @@ var BooleanFilterMenuComponent = /** @class */ (function (_super) {
|
|
|
127
127
|
BooleanFilterMenuComponent = tslib_1.__decorate([
|
|
128
128
|
core_1.Component({
|
|
129
129
|
selector: 'kendo-grid-boolean-filter-menu',
|
|
130
|
-
template: "\n <ul class=\"k-radio-list k-reset\">\n <li *ngFor=\"let item of items\">\n <input type=\"radio\"\n kendoFilterMenuRadioButton\n [columnLabel]=\"columnLabel\"\n #input\n [name]=\"idPrefix\"\n
|
|
130
|
+
template: "\n <ul class=\"k-radio-list k-reset\">\n <li *ngFor=\"let item of items\">\n <input type=\"radio\"\n kendoFilterMenuRadioButton\n [columnLabel]=\"columnLabel\"\n #input\n [name]=\"idPrefix\"\n kendoRadioButton\n [checked]=\"isSelected(item.value)\"\n [attr.id]=\"radioId(item.value)\"\n (change)=\"onChange(item.value, input)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n />\n <label class=\"k-radio-label\" [attr.for]=\"radioId(item.value)\">{{item.text}}</label>\n </li>\n </ul>\n "
|
|
131
131
|
}),
|
|
132
132
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService])
|
|
133
133
|
], BooleanFilterMenuComponent);
|
|
@@ -233,7 +233,7 @@ var FilterMenuContainerComponent = /** @class */ (function () {
|
|
|
233
233
|
menu_tabbing_service_1.MenuTabbingService
|
|
234
234
|
],
|
|
235
235
|
selector: 'kendo-grid-filter-menu-container',
|
|
236
|
-
template: "\n <form (submit)=\"submit()\" (reset)=\"reset()\"\n class=\"k-filter-menu k-group k-reset k-state-border-up\">\n <div class=\"k-filter-menu-container\">\n <ng-container [ngSwitch]=\"hasTemplate\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container\n kendoFilterMenuHost\n [filterService]=\"childService\"\n [column]=\"column\"\n [filter]=\"childFilter\"\n [menuTabbingService]=\"menuTabbingService\">\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.filterMenuTemplateRef\"\n [ngTemplateOutlet]=\"column.filterMenuTemplateRef\"\n [ngTemplateOutletContext]=\"templateContext\"\n >\n </ng-template>\n </ng-container>\n </ng-container>\n <div [ngClass]=\"actionsClass\">\n <button\n #resetButton\n type=\"reset\"\n class=\"k-button\"\n (keydown.tab)=\"onTab($event, 'reset')\">{{clearText}}</button>\n <button #filterButton\n type=\"submit\"\n class=\"k-button k-primary\"\n [disabled]=\"disabled\"\n (keydown.tab)=\"onTab($event, 'filter')\">{{filterText}}</button>\n </div>\n </div>\n </form>\n "
|
|
236
|
+
template: "\n <form (submit)=\"submit()\" (reset)=\"reset()\"\n class=\"k-filter-menu k-group k-reset k-state-border-up\">\n <div class=\"k-filter-menu-container\">\n <ng-container [ngSwitch]=\"hasTemplate\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container\n kendoFilterMenuHost\n [filterService]=\"childService\"\n [column]=\"column\"\n [filter]=\"childFilter\"\n [menuTabbingService]=\"menuTabbingService\">\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.filterMenuTemplateRef\"\n [ngTemplateOutlet]=\"column.filterMenuTemplateRef\"\n [ngTemplateOutletContext]=\"templateContext\"\n >\n </ng-template>\n </ng-container>\n </ng-container>\n <div [ngClass]=\"actionsClass\">\n <button\n #resetButton\n type=\"reset\"\n class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle\"\n (keydown.tab)=\"onTab($event, 'reset')\">{{clearText}}</button>\n <button #filterButton\n type=\"submit\"\n class=\"k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle\"\n [disabled]=\"disabled\"\n (keydown.tab)=\"onTab($event, 'filter')\">{{filterText}}</button>\n </div>\n </div>\n </form>\n "
|
|
237
237
|
}),
|
|
238
238
|
tslib_1.__param(0, core_1.SkipSelf()),
|
|
239
239
|
tslib_1.__metadata("design:paramtypes", [filter_service_1.FilterService,
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
var tslib_1 = require("tslib");
|
|
8
|
+
var core_1 = require("@angular/core");
|
|
8
9
|
var kendo_angular_l10n_1 = require("@progress/kendo-angular-l10n");
|
|
9
|
-
var menu_tabbing_service_1 = require("./menu-tabbing.service");
|
|
10
10
|
var kendo_angular_dropdowns_1 = require("@progress/kendo-angular-dropdowns");
|
|
11
|
-
var
|
|
11
|
+
var menu_tabbing_service_1 = require("./menu-tabbing.service");
|
|
12
12
|
var filter_service_1 = require("../filter.service");
|
|
13
13
|
var filter_input_wrapper_component_1 = require("../filter-input-wrapper.component");
|
|
14
14
|
var utils_1 = require("../../utils");
|
|
@@ -63,7 +63,7 @@ var StringFilterMenuInputComponent = /** @class */ (function () {
|
|
|
63
63
|
StringFilterMenuInputComponent = tslib_1.__decorate([
|
|
64
64
|
core_1.Component({
|
|
65
65
|
selector: 'kendo-grid-string-filter-menu-input',
|
|
66
|
-
template: "\n <kendo-grid-filter-menu-input-wrapper\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [currentFilter]=\"currentFilter\"\n [filterService]=\"filterService\"\n [isFirstDropDown]=\"isFirstDropDown\"\n [menuTabbingService]=\"menuTabbingService\"\n >\n <input\n
|
|
66
|
+
template: "\n <kendo-grid-filter-menu-input-wrapper\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [currentFilter]=\"currentFilter\"\n [filterService]=\"filterService\"\n [isFirstDropDown]=\"isFirstDropDown\"\n [menuTabbingService]=\"menuTabbingService\"\n >\n <input\n kendoTextBox\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"0\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-menu-input-wrapper>\n "
|
|
67
67
|
}),
|
|
68
68
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService])
|
|
69
69
|
], StringFilterMenuInputComponent);
|
|
@@ -1460,7 +1460,7 @@ var GridComponent = /** @class */ (function () {
|
|
|
1460
1460
|
* [resizable]="true"
|
|
1461
1461
|
* style="height: 300px">
|
|
1462
1462
|
* <ng-template kendoGridToolbarTemplate>
|
|
1463
|
-
* <button
|
|
1463
|
+
* <button kendoButton (click)="grid.autoFitColumn(groupColumn)">
|
|
1464
1464
|
* Auto-fit the group column
|
|
1465
1465
|
* </button>
|
|
1466
1466
|
* </ng-template>
|
|
@@ -1526,10 +1526,10 @@ var GridComponent = /** @class */ (function () {
|
|
|
1526
1526
|
* [resizable]="true"
|
|
1527
1527
|
* style="height: 300px">
|
|
1528
1528
|
* <ng-template kendoGridToolbarTemplate>
|
|
1529
|
-
* <button
|
|
1529
|
+
* <button kendoButton (click)="grid.autoFitColumns([firstColumn, lastColumn])">
|
|
1530
1530
|
* Auto-fit the first and last column
|
|
1531
1531
|
* </button>
|
|
1532
|
-
* <button
|
|
1532
|
+
* <button kendoButton (click)="grid.autoFitColumns()">
|
|
1533
1533
|
* Auto-fit all columns
|
|
1534
1534
|
* </button>
|
|
1535
1535
|
* </ng-template>
|
|
@@ -1708,7 +1708,7 @@ var GridComponent = /** @class */ (function () {
|
|
|
1708
1708
|
* [reorderable]="true"
|
|
1709
1709
|
* style="height: 300px">
|
|
1710
1710
|
* <ng-template kendoGridToolbarTemplate>
|
|
1711
|
-
* <button
|
|
1711
|
+
* <button kendoButton
|
|
1712
1712
|
* (click)="grid.reorderColumn(groupColumn, 2, { before: true })">
|
|
1713
1713
|
* Move the group column before the last one.
|
|
1714
1714
|
* </button>
|
|
@@ -2569,7 +2569,6 @@ var GridComponent = /** @class */ (function () {
|
|
|
2569
2569
|
tslib_1.__metadata("design:paramtypes", [])
|
|
2570
2570
|
], GridComponent.prototype, "dir", null);
|
|
2571
2571
|
tslib_1.__decorate([
|
|
2572
|
-
core_1.HostBinding('class.k-widget'),
|
|
2573
2572
|
core_1.HostBinding('class.k-grid'),
|
|
2574
2573
|
tslib_1.__metadata("design:type", Boolean),
|
|
2575
2574
|
tslib_1.__metadata("design:paramtypes", [])
|
|
@@ -67,7 +67,7 @@ var GroupIndicatorComponent = /** @class */ (function () {
|
|
|
67
67
|
core_1.Component({
|
|
68
68
|
changeDetection: core_1.ChangeDetectionStrategy.OnPush,
|
|
69
69
|
selector: '[kendoGroupIndicator]',
|
|
70
|
-
template: "\n <a href=\"#\" class=\"k-link\" tabindex=\"-1\" (click)=\"toggleDirection()\">\n <span class=\"k-icon\"\n [class.k-i-sort-asc-sm]=\"dir === 'asc'\"\n [class.k-i-sort-desc-sm]=\"dir === 'desc'\"></span>\n {{groupTitle}}</a>\n <a class=\"k-button k-button-icon k-
|
|
70
|
+
template: "\n <a href=\"#\" class=\"k-link\" tabindex=\"-1\" (click)=\"toggleDirection()\">\n <span class=\"k-icon\"\n [class.k-i-sort-asc-sm]=\"dir === 'asc'\"\n [class.k-i-sort-desc-sm]=\"dir === 'desc'\"></span>\n {{groupTitle}}</a>\n <a class=\"k-button k-button-flat-base k-button-flat k-icon-button k-button-md k-rounded-md k-button-rectangle k-icon-button\" tabindex=\"-1\" (click)=\"removeDescriptor()\">\n <span class=\"k-button-icon k-icon k-i-group-delete\"></span>\n </a>\n "
|
|
71
71
|
})
|
|
72
72
|
], GroupIndicatorComponent);
|
|
73
73
|
return GroupIndicatorComponent;
|
|
@@ -17,7 +17,7 @@ var cell_context_1 = require("../rendering/common/cell-context");
|
|
|
17
17
|
* _@Component({
|
|
18
18
|
* selector: 'my-app',
|
|
19
19
|
* template: `
|
|
20
|
-
* <input type="text"
|
|
20
|
+
* <input type="text" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
|
|
21
21
|
* <kendo-grid [data]="data" [navigable]="true">
|
|
22
22
|
* <kendo-grid-column field="ProductID" title="Product ID" width="100">
|
|
23
23
|
* </kendo-grid-column>
|
|
@@ -26,18 +26,18 @@ var cell_context_1 = require("../rendering/common/cell-context");
|
|
|
26
26
|
* <kendo-grid-column>
|
|
27
27
|
* <ng-template kendoGridCellTemplate let-dataItem>
|
|
28
28
|
* <!-- The first focusable element will be focused when pressing Enter on the cell -->
|
|
29
|
-
* <input type="text"
|
|
30
|
-
* <button
|
|
29
|
+
* <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
|
|
30
|
+
* <button kendoGridFocusable>Update</button>
|
|
31
31
|
* </ng-template>
|
|
32
32
|
* </kendo-grid-column>
|
|
33
33
|
* <kendo-grid-column width="100">
|
|
34
34
|
* <ng-template kendoGridCellTemplate>
|
|
35
35
|
* <!-- A single focusable element will be focused during navigation -->
|
|
36
|
-
* <button
|
|
36
|
+
* <button kendoGridFocusable>Delete</button>
|
|
37
37
|
* </ng-template>
|
|
38
38
|
* </kendo-grid-column>
|
|
39
39
|
* </kendo-grid>
|
|
40
|
-
* <input type="text"
|
|
40
|
+
* <input type="text" placeholder="Tab stop #2" style="margin-top: 8px;" />
|
|
41
41
|
* `
|
|
42
42
|
* })
|
|
43
43
|
*
|
|
@@ -11,7 +11,7 @@ exports.packageMetadata = {
|
|
|
11
11
|
name: '@progress/kendo-angular-grid',
|
|
12
12
|
productName: 'Kendo UI for Angular',
|
|
13
13
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
14
|
-
publishDate:
|
|
14
|
+
publishDate: 1642605543,
|
|
15
15
|
version: '',
|
|
16
16
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
17
17
|
};
|
|
@@ -111,7 +111,7 @@ var PagerNumericButtonsComponent = /** @class */ (function (_super) {
|
|
|
111
111
|
core_1.Component({
|
|
112
112
|
changeDetection: core_1.ChangeDetectionStrategy.OnPush,
|
|
113
113
|
selector: 'kendo-pager-numeric-buttons',
|
|
114
|
-
template: "\n <select\n class=\"k-
|
|
114
|
+
template: "\n <select\n class=\"k-dropdownlist k-pager-nav\"\n kendoGridFocusable\n tabindex=\"0\"\n [value]=\"(currentPage).toString()\"\n (change)=\"onSelectChange($event)\">\n <option *ngIf=\"start > 1\"\n class=\"k-link\"\n value=\"previousButtons\"\n [attr.aria-label]=\"pageLabel(start - 1)\">...\n </option>\n <option *ngFor=\"let num of buttons\"\n [value]=\"num.toString()\"\n [attr.aria-label]=\"pageLabel(num)\"\n [attr.aria-current]=\"currentPage == num ? 'page' : undefined\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num}\">\n {{num}}\n </option>\n <option *ngIf=\"end < totalPages\"\n value=\"nextButtons\"\n class=\"k-link\"\n [attr.aria-label]=\"pageLabel(end + 1)\">...\n </option>\n </select>\n <ul [ngClass]=\"{'k-pager-numbers': true, 'k-reset': true}\">\n <li *ngIf=\"start > 1\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(start - 1)\"\n (click)=\"changePage(start - 2)\"\n (keydown.enter)=\"changePage(start - 2)\">...</span>\n </li>\n <li *ngFor=\"let num of buttons\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n [attr.aria-label]=\"pageLabel(num)\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num, 'k-pager-nav': true}\"\n (click)=\"changePage(num - 1)\"\n (keydown.enter)=\"changePage(num - 1)\">\n {{num}}\n </span>\n </li>\n <li *ngIf=\"end < totalPages\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(end + 1)\"\n (click)=\"changePage(end)\"\n (keydown.enter)=\"changePage(end)\">...</span>\n </li>\n </ul>\n "
|
|
115
115
|
}),
|
|
116
116
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService,
|
|
117
117
|
core_1.ChangeDetectorRef,
|
|
@@ -39,7 +39,6 @@ var PagerComponent = /** @class */ (function () {
|
|
|
39
39
|
this.pageChange = new core_1.EventEmitter();
|
|
40
40
|
this.pagerWrapClass = true;
|
|
41
41
|
this.gridPagerClass = true;
|
|
42
|
-
this.widgetClass = true;
|
|
43
42
|
this.settings = pager_settings_1.normalize({});
|
|
44
43
|
this.subscriptions = new rxjs_1.Subscription();
|
|
45
44
|
this._templateContext = {};
|
|
@@ -286,10 +285,6 @@ var PagerComponent = /** @class */ (function () {
|
|
|
286
285
|
core_1.HostBinding('class.k-grid-pager'),
|
|
287
286
|
tslib_1.__metadata("design:type", Boolean)
|
|
288
287
|
], PagerComponent.prototype, "gridPagerClass", void 0);
|
|
289
|
-
tslib_1.__decorate([
|
|
290
|
-
core_1.HostBinding('class.k-widget'),
|
|
291
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
292
|
-
], PagerComponent.prototype, "widgetClass", void 0);
|
|
293
288
|
tslib_1.__decorate([
|
|
294
289
|
core_1.HostBinding('class.k-state-focused'),
|
|
295
290
|
tslib_1.__metadata("design:type", Boolean),
|
|
@@ -234,7 +234,7 @@ var CellComponent = /** @class */ (function () {
|
|
|
234
234
|
CellComponent = tslib_1.__decorate([
|
|
235
235
|
core_1.Component({
|
|
236
236
|
selector: '[kendoGridCell]',
|
|
237
|
-
template: "\n <ng-container [ngSwitch]=\"isEdited\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"!showLoading; else loading\">\n <ng-template [ngIf]=\"column.templateRef\"\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"templateContext\">\n </ng-template>\n <ng-template [ngIf]=\"isSpanColumn\">\n <ng-template ngFor let-childColumn [ngForOf]=\"childColumns\">\n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isBoundColumn\">{{ dataItem | valueOf: column.field: column.format}}</ng-template>\n <ng-template [ngIf]=\"isCheckboxColumn && !isNew\">\n <input\n class=\"k-checkbox\"\n [kendoGridSelectionCheckbox]=\"rowIndex\"\n [attr.id]=\"selectionCheckboxId\"\n [attr.aria-label]=\"selectionCheckboxLabel\" />\n </ng-template>\n </ng-container>\n <ng-template #loading>\n <ng-template\n *ngIf=\"loadingTemplate\"\n [ngTemplateOutlet]=\"loadingTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: column}\">\n </ng-template>\n <div *ngIf=\"!loadingTemplate\" class=\"k-skeleton-text k-skeleton\"></div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.editTemplateRef\"\n [ngTemplateOutlet]=\"column.editTemplateRef\"\n [ngTemplateOutletContext]=\"editTemplateContext\">\n </ng-template>\n <ng-container [ngSwitch]=\"column.editor\" *ngIf=\"!column.editTemplateRef\">\n <kendo-numerictextbox\n *ngSwitchCase=\"'numeric'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-numerictextbox>\n\n <kendo-datepicker\n *ngSwitchCase=\"'date'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-datepicker>\n\n <input\n *ngSwitchCase=\"'boolean'\"\n type=\"checkbox\"\n class=\"k-checkbox\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n\n <input\n *ngSwitchDefault\n type=\"text\"\n class=\"k-textbox\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n </ng-container>\n </ng-container>\n </ng-container>\n "
|
|
237
|
+
template: "\n <ng-container [ngSwitch]=\"isEdited\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"!showLoading; else loading\">\n <ng-template [ngIf]=\"column.templateRef\"\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"templateContext\">\n </ng-template>\n <ng-template [ngIf]=\"isSpanColumn\">\n <ng-template ngFor let-childColumn [ngForOf]=\"childColumns\">\n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isBoundColumn\">{{ dataItem | valueOf: column.field: column.format}}</ng-template>\n <ng-template [ngIf]=\"isCheckboxColumn && !isNew\">\n <input\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [kendoGridSelectionCheckbox]=\"rowIndex\"\n [attr.id]=\"selectionCheckboxId\"\n [attr.aria-label]=\"selectionCheckboxLabel\" />\n </ng-template>\n </ng-container>\n <ng-template #loading>\n <ng-template\n *ngIf=\"loadingTemplate\"\n [ngTemplateOutlet]=\"loadingTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: column}\">\n </ng-template>\n <div *ngIf=\"!loadingTemplate\" class=\"k-skeleton-text k-skeleton\"></div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.editTemplateRef\"\n [ngTemplateOutlet]=\"column.editTemplateRef\"\n [ngTemplateOutletContext]=\"editTemplateContext\">\n </ng-template>\n <ng-container [ngSwitch]=\"column.editor\" *ngIf=\"!column.editTemplateRef\">\n <kendo-numerictextbox\n *ngSwitchCase=\"'numeric'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-numerictextbox>\n\n <kendo-datepicker\n *ngSwitchCase=\"'date'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-datepicker>\n\n <input\n *ngSwitchCase=\"'boolean'\"\n type=\"checkbox\"\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n\n <input\n *ngSwitchDefault\n type=\"text\"\n class=\"k-textbox k-input k-rounded-md\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n </ng-container>\n </ng-container>\n </ng-container>\n "
|
|
238
238
|
}),
|
|
239
239
|
tslib_1.__param(3, core_1.Optional()), tslib_1.__param(3, core_1.Inject(cell_context_1.CELL_CONTEXT)),
|
|
240
240
|
tslib_1.__metadata("design:paramtypes", [edit_service_1.EditService,
|
|
@@ -27,9 +27,12 @@ var ExpandDetailsDirective = /** @class */ (function () {
|
|
|
27
27
|
this.expandedDetailKeys = [];
|
|
28
28
|
/**
|
|
29
29
|
* Specifies if the items should be initially expanded.
|
|
30
|
+
* When set to `true` items added to the `expandedDetailKeys` collection will be collapsed, and items that are not present in it will be expanded.
|
|
31
|
+
*
|
|
30
32
|
* @default false
|
|
31
33
|
*/
|
|
32
34
|
this.initiallyExpanded = false;
|
|
35
|
+
this.expandedState = new Set();
|
|
33
36
|
this.subscriptions = new rxjs_1.Subscription();
|
|
34
37
|
this.grid.isDetailExpanded = this.isExpanded.bind(this);
|
|
35
38
|
this.subscriptions.add(rxjs_1.merge(this.grid.detailExpand.pipe(operators_1.map(function (e) { return (tslib_1.__assign({ expand: true }, e)); })), this.grid.detailCollapse.pipe(operators_1.map(function (e) { return (tslib_1.__assign({ expand: false }, e)); }))).subscribe(this.toggleState.bind(this)));
|
|
@@ -67,6 +70,12 @@ var ExpandDetailsDirective = /** @class */ (function () {
|
|
|
67
70
|
enumerable: true,
|
|
68
71
|
configurable: true
|
|
69
72
|
});
|
|
73
|
+
ExpandDetailsDirective.prototype.ngOnChanges = function (changes) {
|
|
74
|
+
// skip reinitialization if the user data is the same as the last state change
|
|
75
|
+
if (utils_1.isPresent(changes.expandedDetailKeys) && this.lastExpandedState !== this.expandedDetailKeys) {
|
|
76
|
+
this.expandedState = new Set(this.expandedDetailKeys);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
70
79
|
ExpandDetailsDirective.prototype.ngOnDestroy = function () {
|
|
71
80
|
this.subscriptions.unsubscribe();
|
|
72
81
|
};
|
|
@@ -82,18 +91,23 @@ var ExpandDetailsDirective = /** @class */ (function () {
|
|
|
82
91
|
*/
|
|
83
92
|
ExpandDetailsDirective.prototype.isExpanded = function (args) {
|
|
84
93
|
var key = this.keyGetter(args.dataItem);
|
|
85
|
-
|
|
94
|
+
var hasKey = this.expandedState.has(key);
|
|
95
|
+
// when [initiallyExpanded]="true" a present key means the corresponding detail row is collapsed
|
|
96
|
+
return this.initiallyExpanded ? !hasKey : hasKey;
|
|
86
97
|
};
|
|
87
98
|
ExpandDetailsDirective.prototype.toggleState = function (args) {
|
|
88
99
|
var key = this.keyGetter(args.dataItem);
|
|
89
100
|
if (Boolean(this.initiallyExpanded) !== args.expand) {
|
|
90
|
-
this.
|
|
101
|
+
this.expandedState.add(key);
|
|
91
102
|
}
|
|
92
103
|
else {
|
|
93
|
-
|
|
94
|
-
this.expandedDetailKeys.splice(index, 1);
|
|
104
|
+
this.expandedState.delete(key);
|
|
95
105
|
}
|
|
96
|
-
this.
|
|
106
|
+
this.notifyChange();
|
|
107
|
+
};
|
|
108
|
+
ExpandDetailsDirective.prototype.notifyChange = function () {
|
|
109
|
+
this.lastExpandedState = Array.from(this.expandedState);
|
|
110
|
+
this.expandedDetailKeysChange.emit(this.lastExpandedState);
|
|
97
111
|
};
|
|
98
112
|
tslib_1.__decorate([
|
|
99
113
|
core_1.Output(),
|
|
@@ -565,7 +565,7 @@ var HeaderComponent = /** @class */ (function () {
|
|
|
565
565
|
core_1.Component({
|
|
566
566
|
selector: '[kendoGridHeader]',
|
|
567
567
|
styles: ["\n .k-column-resizer {\n cursor: col-resize;\n display: block;\n height: 1000%;\n position: absolute;\n top: 0;\n width: .5em;\n }\n "],
|
|
568
|
-
template: "\n <ng-template [ngIf]=\"true\">\n <tr *ngFor=\"let i of columnLevels; let levelIndex = index\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"levelIndex\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n <th\n class=\"k-group-cell k-header\"\n role=\"presentation\"\n *ngFor=\"let g of groups\">\n </th>\n <th class=\"k-hierarchy-cell k-header\"\n role=\"presentation\"\n *ngIf=\"detailTemplate?.templateRef\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"0\"\n aria-selected=\"false\"\n >\n </th>\n <ng-template ngFor let-column [ngForOf]=\"columnsForLevel(levelIndex)\" [ngForTrackBy]=\"trackByIndex\" let-columnIndex=\"index\" let-last=\"last\">\n <th *ngIf=\"!isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [headerLabelText]=\"column.title || column.field\"\n [colSpan]=\"column.colspan\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n role=\"columnheader\"\n aria-selected=\"false\"\n [attr.aria-sort]=\"sortState(column)\"\n (keydown)=\"onHeaderKeydown(column, $event)\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n field: column.field,\n type: 'column',\n column: column,\n hint: column.title || column.field,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-filterable]=\"(showFilterMenu && isFilterable(column)) || showColumnMenu(column)\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-grid-header-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.sticky ? addStickyStyles(column) : column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n\n <ng-template [ngIf]=\"!isSortable(column)\">\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"isSortable(column)\">\n <span class=\"k-cell-inner\">\n <span #link class=\"k-link\" (click)=\"onSortClick(column, $event, link)\">\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">\n <span class=\"k-column-title\">{{column.displayTitle}}</span>\n </ng-template>\n <span [attr.aria-label]=\"sortableLabel\" [ngClass]=\"sortIcon(column.field)\"></span>\n <span *ngIf=\"showSortNumbering(column)\" class=\"k-sort-order\">{{sortOrder(column.field)}}</span>\n </span>\n <span role=\"status\"\n class=\"k-sort-status\"\n style=\"position: absolute; left: -10000px;\"\n [innerHtml]=\"sortStatus(column)\">\n </span>\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n </span>\n </ng-template>\n\n <ng-template [ngIf]=\"isCheckboxColumn(column) && !column.headerTemplateRef && column.showSelectAll\">\n <input\n class=\"k-checkbox\"\n [attr.id]=\"selectAllCheckboxId()\"\n [attr.aria-label]=\"selectAllCheckboxLabel\"\n kendoGridSelectAllCheckbox\n kendoGridFocusable>\n </ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n <th *ngIf=\"isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n [colSpan]=\"column.colspan\"\n [headerLabelText]=\"column.title || column.field\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n type: 'columnGroup',\n column: column,\n hint: column.title,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-filterable]=\"showColumnMenu(column)\"\n [class.k-grid-content-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: lockedColumnsCount + columnIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n </ng-template>\n </tr>\n <tr *ngIf=\"showFilterRow\"\n kendoGridFilterRow\n [columns]=\"leafColumns\"\n [filter]=\"filter\"\n [groups]=\"groups\"\n [detailTemplate]=\"detailTemplate\"\n [lockedColumnsCount]=\"lockedColumnsCount\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"totalColumnLevels + 1\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n ></tr>\n </ng-template>\n "
|
|
568
|
+
template: "\n <ng-template [ngIf]=\"true\">\n <tr *ngFor=\"let i of columnLevels; let levelIndex = index\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"levelIndex\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n <th\n class=\"k-group-cell k-header\"\n role=\"presentation\"\n *ngFor=\"let g of groups\">\n </th>\n <th class=\"k-hierarchy-cell k-header\"\n role=\"presentation\"\n *ngIf=\"detailTemplate?.templateRef\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"0\"\n aria-selected=\"false\"\n >\n </th>\n <ng-template ngFor let-column [ngForOf]=\"columnsForLevel(levelIndex)\" [ngForTrackBy]=\"trackByIndex\" let-columnIndex=\"index\" let-last=\"last\">\n <th *ngIf=\"!isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [headerLabelText]=\"column.title || column.field\"\n [colSpan]=\"column.colspan\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n role=\"columnheader\"\n aria-selected=\"false\"\n [attr.aria-sort]=\"sortState(column)\"\n (keydown)=\"onHeaderKeydown(column, $event)\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n field: column.field,\n type: 'column',\n column: column,\n hint: column.title || column.field,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-filterable]=\"(showFilterMenu && isFilterable(column)) || showColumnMenu(column)\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-grid-header-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.sticky ? addStickyStyles(column) : column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n\n <ng-template [ngIf]=\"!isSortable(column)\">\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"isSortable(column)\">\n <span class=\"k-cell-inner\">\n <span #link class=\"k-link\" (click)=\"onSortClick(column, $event, link)\">\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">\n <span class=\"k-column-title\">{{column.displayTitle}}</span>\n </ng-template>\n <span [attr.aria-label]=\"sortableLabel\" [ngClass]=\"sortIcon(column.field)\"></span>\n <span *ngIf=\"showSortNumbering(column)\" class=\"k-sort-order\">{{sortOrder(column.field)}}</span>\n </span>\n <span role=\"status\"\n class=\"k-sort-status\"\n style=\"position: absolute; left: -10000px;\"\n [innerHtml]=\"sortStatus(column)\">\n </span>\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n </span>\n </ng-template>\n\n <ng-template [ngIf]=\"isCheckboxColumn(column) && !column.headerTemplateRef && column.showSelectAll\">\n <input\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [attr.id]=\"selectAllCheckboxId()\"\n [attr.aria-label]=\"selectAllCheckboxLabel\"\n kendoGridSelectAllCheckbox\n kendoGridFocusable>\n </ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n <th *ngIf=\"isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n [colSpan]=\"column.colspan\"\n [headerLabelText]=\"column.title || column.field\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n type: 'columnGroup',\n column: column,\n hint: column.title,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-filterable]=\"showColumnMenu(column)\"\n [class.k-grid-content-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: lockedColumnsCount + columnIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n </ng-template>\n </tr>\n <tr *ngIf=\"showFilterRow\"\n kendoGridFilterRow\n [columns]=\"leafColumns\"\n [filter]=\"filter\"\n [groups]=\"groups\"\n [detailTemplate]=\"detailTemplate\"\n [lockedColumnsCount]=\"lockedColumnsCount\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"totalColumnLevels + 1\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n ></tr>\n </ng-template>\n "
|
|
569
569
|
}),
|
|
570
570
|
tslib_1.__metadata("design:paramtypes", [single_popup_service_1.SinglePopupService,
|
|
571
571
|
drag_hint_service_1.DragHintService,
|
|
@@ -19,16 +19,16 @@ var core_1 = require("@angular/core");
|
|
|
19
19
|
* selector: 'my-app',
|
|
20
20
|
* template: `
|
|
21
21
|
* <div class="example-config">
|
|
22
|
-
* <input type="radio" id="top" name="position"
|
|
22
|
+
* <input type="radio" id="top" name="position" value="top" checked (click)="positionChange($event)"/>
|
|
23
23
|
* <label class="k-radio-label" for="top">Top</label><br/>
|
|
24
|
-
* <input type="radio" id="bottom" name="position"
|
|
24
|
+
* <input type="radio" id="bottom" name="position" value="bottom" (click)="positionChange($event)"/>
|
|
25
25
|
* <label class="k-radio-label" for="bottom">Bottom</label><br/>
|
|
26
|
-
* <input type="radio" id="both" name="position" value="both"
|
|
26
|
+
* <input type="radio" id="both" name="position" value="both" (click)="positionChange($event)"/>
|
|
27
27
|
* <label class="k-radio-label" for="both">Both</label><br/>
|
|
28
28
|
* </div>
|
|
29
29
|
* <kendo-grid [data]="gridData" style="height: 200px">
|
|
30
30
|
* <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
|
|
31
|
-
* <button (click)="onClick()"
|
|
31
|
+
* <button (click)="onClick()">Custom action</button>
|
|
32
32
|
* </ng-template>
|
|
33
33
|
* <kendo-grid-column field="ProductName">
|
|
34
34
|
* </kendo-grid-column>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
"use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*
|
|
10
|
+
* Quick look-up structure for combinations of keys.
|
|
11
|
+
* Similar to the native JS Set, however, working with a couple of keys instead of with a single key.
|
|
12
|
+
* Supports both primitive keys and object keys (compared by reference).
|
|
13
|
+
*/
|
|
14
|
+
var PairSet = /** @class */ (function () {
|
|
15
|
+
function PairSet(items, keyXField, keyYField) {
|
|
16
|
+
var _this = this;
|
|
17
|
+
/**
|
|
18
|
+
* Holds a set of Y keys for each defined X key.
|
|
19
|
+
* Each X key creates a map which holds a set of Y keys.
|
|
20
|
+
*
|
|
21
|
+
* Map { 1 => Set { 1, 2, 3 } } // pairs: [1, 1], [1, 2], [1, 3]
|
|
22
|
+
*/
|
|
23
|
+
this.keysX = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* Count the each added or deleted key manually to avoid iterating over all items when calling `this.size`.
|
|
26
|
+
*/
|
|
27
|
+
this.totalKeysCount = 0;
|
|
28
|
+
if (items && keyXField && keyYField) {
|
|
29
|
+
items.forEach(function (item) { return _this.add(item[keyXField], item[keyYField]); });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
Object.defineProperty(PairSet.prototype, "size", {
|
|
33
|
+
/**
|
|
34
|
+
* Gets the total number of X/Y key pairs.
|
|
35
|
+
*/
|
|
36
|
+
get: function () {
|
|
37
|
+
return this.totalKeysCount;
|
|
38
|
+
},
|
|
39
|
+
enumerable: true,
|
|
40
|
+
configurable: true
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Adds a couple of items identified as a combination.
|
|
44
|
+
*/
|
|
45
|
+
PairSet.prototype.add = function (keyX, keyY) {
|
|
46
|
+
if (!this.keysX.has(keyX)) {
|
|
47
|
+
this.keysX.set(keyX, new Set());
|
|
48
|
+
}
|
|
49
|
+
if (!this.has(keyX, keyY)) {
|
|
50
|
+
this.keysX.get(keyX).add(keyY);
|
|
51
|
+
this.totalKeysCount += 1;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Adds a combination of a couple of items identified together.
|
|
56
|
+
*/
|
|
57
|
+
PairSet.prototype.delete = function (keyX, keyY) {
|
|
58
|
+
if (this.has(keyX, keyY)) {
|
|
59
|
+
this.keysX.get(keyX).delete(keyY);
|
|
60
|
+
this.totalKeysCount -= 1;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Checks whether the defined combination is stored.
|
|
65
|
+
*/
|
|
66
|
+
PairSet.prototype.has = function (keyX, keyY) {
|
|
67
|
+
return this.keysX.has(keyX) && this.keysX.get(keyX).has(keyY);
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Clears all key combinations.
|
|
71
|
+
*/
|
|
72
|
+
PairSet.prototype.clear = function () {
|
|
73
|
+
this.keysX.clear();
|
|
74
|
+
this.totalKeysCount = 0;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Converts the persisted data structure to an array of objects,
|
|
78
|
+
* using the provided field names for the object props.
|
|
79
|
+
*/
|
|
80
|
+
PairSet.prototype.toArray = function (keyXField, keyYField) {
|
|
81
|
+
return Array.from(this.keysX).reduce(function (pairs, pair) {
|
|
82
|
+
// Array.from(mapInstance) returns an array of arrays [[itemKey1, columnKeysSet1], [itemKey2, columnKeysSet2]]
|
|
83
|
+
var keyX = pair[0], keysY = pair[1];
|
|
84
|
+
Array.from(keysY).forEach(function (keyY) {
|
|
85
|
+
var _a;
|
|
86
|
+
return pairs.push((_a = {}, _a[keyXField] = keyX, _a[keyYField] = keyY, _a));
|
|
87
|
+
});
|
|
88
|
+
return pairs;
|
|
89
|
+
}, []);
|
|
90
|
+
};
|
|
91
|
+
return PairSet;
|
|
92
|
+
}());
|
|
93
|
+
exports.PairSet = PairSet;
|