@progress/kendo-angular-grid 13.4.0-develop.3 → 13.4.0-develop.5

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.
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Directive, Optional, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, SkipSelf, Host, Inject, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Directive, Optional, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, SkipSelf, Host, Inject, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ElementRef, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i1$1 from '@progress/kendo-angular-common';
8
8
  import { isDocumentAvailable, Keys, isPresent as isPresent$1, closest as closest$1, isFocusable as isFocusable$1, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
9
9
  import { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';
@@ -24,14 +24,14 @@ import * as i3 from '@progress/kendo-angular-icons';
24
24
  import { IconsModule } from '@progress/kendo-angular-icons';
25
25
  import * as i41 from '@progress/kendo-angular-utils';
26
26
  import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
27
- import * as i4$1 from '@progress/kendo-angular-buttons';
28
- import { ButtonModule, ChipModule, Button } from '@progress/kendo-angular-buttons';
29
- import * as i3$1 from '@progress/kendo-angular-inputs';
30
- import { NumericTextBoxComponent, InputsModule, NumericTextBoxModule } from '@progress/kendo-angular-inputs';
31
27
  import * as i1$4 from '@progress/kendo-angular-dropdowns';
32
28
  import { DropDownListComponent, DropDownListModule, AutoCompleteModule, DropDownsModule } from '@progress/kendo-angular-dropdowns';
33
29
  import * as i5 from '@progress/kendo-angular-label';
34
30
  import { LabelModule } from '@progress/kendo-angular-label';
31
+ import * as i4$1 from '@progress/kendo-angular-buttons';
32
+ import { ButtonModule, ChipModule, Button } from '@progress/kendo-angular-buttons';
33
+ import * as i3$1 from '@progress/kendo-angular-inputs';
34
+ import { NumericTextBoxComponent, InputsModule, NumericTextBoxModule } from '@progress/kendo-angular-inputs';
35
35
  import * as i4$3 from '@progress/kendo-angular-dateinputs';
36
36
  import { DatePickerModule } from '@progress/kendo-angular-dateinputs';
37
37
  import * as i16 from '@progress/kendo-angular-layout';
@@ -4474,8 +4474,8 @@ const packageMetadata = {
4474
4474
  name: '@progress/kendo-angular-grid',
4475
4475
  productName: 'Kendo UI for Angular',
4476
4476
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
4477
- publishDate: 1692370838,
4478
- version: '13.4.0-develop.3',
4477
+ publishDate: 1692699707,
4478
+ version: '13.4.0-develop.5',
4479
4479
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
4480
4480
  };
4481
4481
 
@@ -7105,23 +7105,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7105
7105
  type: Input
7106
7106
  }] } });
7107
7107
 
7108
+ // eslint-disable no-access-missing-member
7108
7109
  /**
7109
- * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7110
+ * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7110
7111
  */
7111
- class PagerPrevButtonsComponent extends PagerElementComponent {
7112
- constructor(ctx, pagerContext, cd, navigationService) {
7112
+ class PagerInfoComponent extends PagerElementComponent {
7113
+ constructor(ctx, cd, pagerContext) {
7113
7114
  super(ctx, pagerContext, cd);
7114
- this.navigationService = navigationService;
7115
+ this.pagerContext = pagerContext;
7116
+ }
7117
+ /**
7118
+ * @hidden
7119
+ *
7120
+ * @readonly
7121
+ * @type {number}
7122
+ * @memberOf PagerInfoComponent
7123
+ */
7124
+ get maxItems() {
7125
+ return Math.min(this.currentPage * this.pageSize, this.total);
7126
+ }
7127
+ /**
7128
+ * @hidden
7129
+ *
7130
+ * @readonly
7131
+ * @type {number}
7132
+ * @memberOf PagerInfoComponent
7133
+ */
7134
+ get currentPageText() {
7135
+ return this.total ?
7136
+ (this.currentPage - 1) * this.pageSize + 1 :
7137
+ 0;
7115
7138
  }
7116
7139
  /**
7117
7140
  * @hidden
7118
7141
  *
7119
7142
  * @readonly
7120
7143
  * @type {boolean}
7121
- * @memberOf PagerPrevButtonsComponent
7144
+ * @memberOf PagerInfoComponent
7122
7145
  */
7123
- get disabled() {
7124
- return this.currentPage === 1 || !this.total;
7146
+ get classes() {
7147
+ return true;
7125
7148
  }
7126
7149
  onChanges({ total, skip, pageSize }) {
7127
7150
  this.total = total;
@@ -7130,80 +7153,177 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
7130
7153
  this.cd.markForCheck();
7131
7154
  }
7132
7155
  }
7133
- PagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
7134
- PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons", usesInheritance: true, ngImport: i0, template: `
7135
- <button
7136
- [kendoGridFocusable]="!disabled"
7137
- kendoButton
7138
- type="button"
7139
- [title]="textFor('pagerFirstPage')"
7140
- [attr.aria-label]="textFor('pagerFirstPage')"
7141
- (click)="currentPage !== 1 ? changePage(0) : false"
7142
- role="button"
7143
- [icon]="prevArrowIcons[0]"
7144
- [svgIcon]="prevArrowSVGIcons[0]"
7145
- class="k-pager-nav k-pager-first"
7146
- [disabled]="disabled"
7147
- fillMode="flat"
7148
- rounded="none"
7149
- [size]="size">
7150
- </button>
7151
- <button
7152
- kendoButton
7153
- [kendoGridFocusable]="!disabled"
7154
- type="button"
7155
- class="k-pager-nav"
7156
- [disabled]="disabled"
7157
- [icon]="prevArrowIcons[1]"
7158
- [svgIcon]="prevArrowSVGIcons[1]"
7159
- fillMode="flat"
7160
- rounded="none"
7156
+ PagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
7157
+ PagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerInfoComponent, selector: "kendo-pager-info", host: { properties: { "class.k-pager-info": "this.classes", "class.k-label": "this.classes" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
7159
+ type: Component,
7160
+ args: [{
7161
+ changeDetection: ChangeDetectionStrategy.OnPush,
7162
+ selector: 'kendo-pager-info',
7163
+ template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`
7164
+ }]
7165
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
7166
+ type: HostBinding,
7167
+ args: ["class.k-pager-info"]
7168
+ }, {
7169
+ type: HostBinding,
7170
+ args: ["class.k-label"]
7171
+ }] } });
7172
+
7173
+ /**
7174
+ * @hidden
7175
+ */
7176
+ class PagerDropDownListDirective {
7177
+ constructor(host) {
7178
+ this.host = host;
7179
+ this.keydownHandler = (e) => {
7180
+ if (e.keyCode === Keys.Escape && this.host.isOpen) {
7181
+ e.stopPropagation();
7182
+ this.host.toggle(false);
7183
+ }
7184
+ };
7185
+ }
7186
+ ngAfterViewInit() {
7187
+ const wrapperElement = this.host.wrapper.nativeElement;
7188
+ wrapperElement.addEventListener('keydown', this.keydownHandler, true);
7189
+ }
7190
+ ngOnDestroy() {
7191
+ this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
7192
+ }
7193
+ }
7194
+ PagerDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });
7195
+ PagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]", ngImport: i0 });
7196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, decorators: [{
7197
+ type: Directive,
7198
+ args: [{ selector: '[kendoGridPagerDropDown]' }]
7199
+ }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });
7200
+
7201
+ /**
7202
+ * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7203
+ */
7204
+ class PagerPageSizesComponent extends PagerElementComponent {
7205
+ constructor(ctx, cd, pagerContext, navigationService) {
7206
+ super(ctx, pagerContext, cd);
7207
+ this.pagerContext = pagerContext;
7208
+ this.navigationService = navigationService;
7209
+ this._pageSizes = [];
7210
+ }
7211
+ /**
7212
+ * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects
7213
+ * ([see example]({% slug paging_grid %}#toc-pager-templates))
7214
+ */
7215
+ set pageSizes(pageSizes) {
7216
+ let normalizedItems = [];
7217
+ pageSizes.forEach(item => {
7218
+ if (typeof item === 'number') {
7219
+ normalizedItems.push({
7220
+ text: item.toString(),
7221
+ value: item
7222
+ });
7223
+ }
7224
+ else {
7225
+ normalizedItems.push(item);
7226
+ }
7227
+ });
7228
+ if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
7229
+ normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
7230
+ }
7231
+ this._pageSizes = normalizedItems;
7232
+ }
7233
+ get pageSizes() {
7234
+ return this._pageSizes;
7235
+ }
7236
+ /**
7237
+ * @hidden
7238
+ *
7239
+ * @readonly
7240
+ */
7241
+ get classes() {
7242
+ return true;
7243
+ }
7244
+ /**
7245
+ * @hidden
7246
+ *
7247
+ * @readonly
7248
+ */
7249
+ get showInitialPageSize() {
7250
+ return this.pageSizes
7251
+ .filter(item => {
7252
+ if (typeof item.value === 'number') {
7253
+ return item.value === Number(this.pageSize);
7254
+ }
7255
+ return this.total === Number(this.pageSize);
7256
+ })
7257
+ .length === 0;
7258
+ }
7259
+ /**
7260
+ * @hidden
7261
+ */
7262
+ pageSizeChange(value) {
7263
+ this.pageSize = typeof value === 'number' ? value : this.total;
7264
+ this.pagerContext.changePageSize(this.pageSize);
7265
+ }
7266
+ /**
7267
+ * @hidden
7268
+ */
7269
+ getValue(page) {
7270
+ return typeof page.value === 'number' ? page.value : this.total;
7271
+ }
7272
+ onChanges({ total, skip, pageSize }) {
7273
+ this.total = total;
7274
+ this.skip = skip;
7275
+ this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
7276
+ this.cd.markForCheck();
7277
+ }
7278
+ }
7279
+ PagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
7280
+ PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPageSizesComponent, selector: "kendo-pager-page-sizes", inputs: { pageSizes: "pageSizes" }, host: { properties: { "class.k-pager-sizes": "this.classes", "class.k-label": "this.classes" } }, usesInheritance: true, ngImport: i0, template: `
7281
+ <kendo-dropdownlist
7282
+ class="k-dropdown"
7283
+ #dropdownlist
7161
7284
  [size]="size"
7162
- [title]="textFor('pagerPreviousPage')"
7163
- [attr.aria-label]="textFor('pagerPreviousPage')"
7164
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7165
- </button>
7166
- `, isInline: true, components: [{ type: i4$1.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
7285
+ kendoGridPagerDropDown
7286
+ [tabindex]="0"
7287
+ kendoGridFocusable
7288
+ [data]="pageSizes"
7289
+ textField="text"
7290
+ valueField="value"
7291
+ [valuePrimitive]="true"
7292
+ [value]="pageSize"
7293
+ (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7294
+ <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7295
+ `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i5.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }], directives: [{ type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]" }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
7168
7297
  type: Component,
7169
7298
  args: [{
7170
7299
  changeDetection: ChangeDetectionStrategy.OnPush,
7171
- selector: 'kendo-pager-prev-buttons',
7300
+ selector: 'kendo-pager-page-sizes',
7172
7301
  template: `
7173
- <button
7174
- [kendoGridFocusable]="!disabled"
7175
- kendoButton
7176
- type="button"
7177
- [title]="textFor('pagerFirstPage')"
7178
- [attr.aria-label]="textFor('pagerFirstPage')"
7179
- (click)="currentPage !== 1 ? changePage(0) : false"
7180
- role="button"
7181
- [icon]="prevArrowIcons[0]"
7182
- [svgIcon]="prevArrowSVGIcons[0]"
7183
- class="k-pager-nav k-pager-first"
7184
- [disabled]="disabled"
7185
- fillMode="flat"
7186
- rounded="none"
7187
- [size]="size">
7188
- </button>
7189
- <button
7190
- kendoButton
7191
- [kendoGridFocusable]="!disabled"
7192
- type="button"
7193
- class="k-pager-nav"
7194
- [disabled]="disabled"
7195
- [icon]="prevArrowIcons[1]"
7196
- [svgIcon]="prevArrowSVGIcons[1]"
7197
- fillMode="flat"
7198
- rounded="none"
7302
+ <kendo-dropdownlist
7303
+ class="k-dropdown"
7304
+ #dropdownlist
7199
7305
  [size]="size"
7200
- [title]="textFor('pagerPreviousPage')"
7201
- [attr.aria-label]="textFor('pagerPreviousPage')"
7202
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7203
- </button>
7306
+ kendoGridPagerDropDown
7307
+ [tabindex]="0"
7308
+ kendoGridFocusable
7309
+ [data]="pageSizes"
7310
+ textField="text"
7311
+ valueField="value"
7312
+ [valuePrimitive]="true"
7313
+ [value]="pageSize"
7314
+ (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7315
+ <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7204
7316
  `
7205
7317
  }]
7206
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7318
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{
7319
+ type: Input
7320
+ }], classes: [{
7321
+ type: HostBinding,
7322
+ args: ['class.k-pager-sizes']
7323
+ }, {
7324
+ type: HostBinding,
7325
+ args: ['class.k-label']
7326
+ }] } });
7207
7327
 
7208
7328
  /**
7209
7329
  * Displays numeric buttons to enable navigation between the pages ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
@@ -7212,7 +7332,6 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
7212
7332
  constructor(ctx, cd, pagerContext) {
7213
7333
  super(ctx, pagerContext, cd);
7214
7334
  this.pagerContext = pagerContext;
7215
- this.numbersWrapClass = true;
7216
7335
  }
7217
7336
  /**
7218
7337
  * @hidden
@@ -7282,10 +7401,12 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
7282
7401
  }
7283
7402
  }
7284
7403
  PagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
7285
- PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: { buttonCount: "buttonCount" }, host: { properties: { "class.k-pager-numbers-wrap": "this.numbersWrapClass" } }, usesInheritance: true, ngImport: i0, template: `
7404
+ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: { buttonCount: "buttonCount" }, viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["select"], descendants: true, read: ElementRef }, { propertyName: "numbersElement", first: true, predicate: ["numbers"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
7286
7405
  <select
7406
+ #select
7287
7407
  class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
7288
7408
  kendoGridFocusable
7409
+ [style.display]="'none'"
7289
7410
  [attr.title]="textFor('selectPage')"
7290
7411
  [attr.aria-label]="textFor('selectPage')"
7291
7412
  [ngClass]="{
@@ -7312,7 +7433,7 @@ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
7312
7433
  [attr.aria-label]="pageLabel(end + 1)">...
7313
7434
  </option>
7314
7435
  </select>
7315
- <div class="k-pager-numbers">
7436
+ <div class="k-pager-numbers" #numbers>
7316
7437
  <button *ngIf="start > 1"
7317
7438
  type="button"
7318
7439
  kendoGridFocusable
@@ -7362,8 +7483,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7362
7483
  selector: 'kendo-pager-numeric-buttons',
7363
7484
  template: `
7364
7485
  <select
7486
+ #select
7365
7487
  class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
7366
7488
  kendoGridFocusable
7489
+ [style.display]="'none'"
7367
7490
  [attr.title]="textFor('selectPage')"
7368
7491
  [attr.aria-label]="textFor('selectPage')"
7369
7492
  [ngClass]="{
@@ -7390,7 +7513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7390
7513
  [attr.aria-label]="pageLabel(end + 1)">...
7391
7514
  </option>
7392
7515
  </select>
7393
- <div class="k-pager-numbers">
7516
+ <div class="k-pager-numbers" #numbers>
7394
7517
  <button *ngIf="start > 1"
7395
7518
  type="button"
7396
7519
  kendoGridFocusable
@@ -7434,13 +7557,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7434
7557
  </div>
7435
7558
  `
7436
7559
  }]
7437
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { numbersWrapClass: [{
7438
- type: HostBinding,
7439
- args: ['class.k-pager-numbers-wrap']
7560
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { selectElement: [{
7561
+ type: ViewChild,
7562
+ args: ['select', { read: ElementRef }]
7563
+ }], numbersElement: [{
7564
+ type: ViewChild,
7565
+ args: ['numbers', { read: ElementRef }]
7440
7566
  }], buttonCount: [{
7441
7567
  type: Input
7442
7568
  }] } });
7443
7569
 
7570
+ /**
7571
+ * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7572
+ */
7573
+ class PagerPrevButtonsComponent extends PagerElementComponent {
7574
+ constructor(ctx, pagerContext, cd, navigationService) {
7575
+ super(ctx, pagerContext, cd);
7576
+ this.navigationService = navigationService;
7577
+ }
7578
+ /**
7579
+ * @hidden
7580
+ *
7581
+ * @readonly
7582
+ * @type {boolean}
7583
+ * @memberOf PagerPrevButtonsComponent
7584
+ */
7585
+ get disabled() {
7586
+ return this.currentPage === 1 || !this.total;
7587
+ }
7588
+ onChanges({ total, skip, pageSize }) {
7589
+ this.total = total;
7590
+ this.skip = skip;
7591
+ this.pageSize = pageSize;
7592
+ this.cd.markForCheck();
7593
+ }
7594
+ }
7595
+ PagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
7596
+ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons", usesInheritance: true, ngImport: i0, template: `
7597
+ <button
7598
+ [kendoGridFocusable]="!disabled"
7599
+ kendoButton
7600
+ type="button"
7601
+ [title]="textFor('pagerFirstPage')"
7602
+ [attr.aria-label]="textFor('pagerFirstPage')"
7603
+ (click)="currentPage !== 1 ? changePage(0) : false"
7604
+ role="button"
7605
+ [icon]="prevArrowIcons[0]"
7606
+ [svgIcon]="prevArrowSVGIcons[0]"
7607
+ class="k-pager-nav k-pager-first"
7608
+ [disabled]="disabled"
7609
+ fillMode="flat"
7610
+ rounded="none"
7611
+ [size]="size">
7612
+ </button>
7613
+ <button
7614
+ kendoButton
7615
+ [kendoGridFocusable]="!disabled"
7616
+ type="button"
7617
+ class="k-pager-nav"
7618
+ [disabled]="disabled"
7619
+ [icon]="prevArrowIcons[1]"
7620
+ [svgIcon]="prevArrowSVGIcons[1]"
7621
+ fillMode="flat"
7622
+ rounded="none"
7623
+ [size]="size"
7624
+ [title]="textFor('pagerPreviousPage')"
7625
+ [attr.aria-label]="textFor('pagerPreviousPage')"
7626
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7627
+ </button>
7628
+ `, isInline: true, components: [{ type: i4$1.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
7630
+ type: Component,
7631
+ args: [{
7632
+ changeDetection: ChangeDetectionStrategy.OnPush,
7633
+ selector: 'kendo-pager-prev-buttons',
7634
+ template: `
7635
+ <button
7636
+ [kendoGridFocusable]="!disabled"
7637
+ kendoButton
7638
+ type="button"
7639
+ [title]="textFor('pagerFirstPage')"
7640
+ [attr.aria-label]="textFor('pagerFirstPage')"
7641
+ (click)="currentPage !== 1 ? changePage(0) : false"
7642
+ role="button"
7643
+ [icon]="prevArrowIcons[0]"
7644
+ [svgIcon]="prevArrowSVGIcons[0]"
7645
+ class="k-pager-nav k-pager-first"
7646
+ [disabled]="disabled"
7647
+ fillMode="flat"
7648
+ rounded="none"
7649
+ [size]="size">
7650
+ </button>
7651
+ <button
7652
+ kendoButton
7653
+ [kendoGridFocusable]="!disabled"
7654
+ type="button"
7655
+ class="k-pager-nav"
7656
+ [disabled]="disabled"
7657
+ [icon]="prevArrowIcons[1]"
7658
+ [svgIcon]="prevArrowSVGIcons[1]"
7659
+ fillMode="flat"
7660
+ rounded="none"
7661
+ [size]="size"
7662
+ [title]="textFor('pagerPreviousPage')"
7663
+ [attr.aria-label]="textFor('pagerPreviousPage')"
7664
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7665
+ </button>
7666
+ `
7667
+ }]
7668
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7669
+
7444
7670
  /**
7445
7671
  * @hidden
7446
7672
  */
@@ -7683,226 +7909,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7683
7909
  }]
7684
7910
  }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7685
7911
 
7686
- // eslint-disable no-access-missing-member
7687
- /**
7688
- * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7689
- */
7690
- class PagerInfoComponent extends PagerElementComponent {
7691
- constructor(ctx, cd, pagerContext) {
7692
- super(ctx, pagerContext, cd);
7693
- this.pagerContext = pagerContext;
7694
- }
7695
- /**
7696
- * @hidden
7697
- *
7698
- * @readonly
7699
- * @type {number}
7700
- * @memberOf PagerInfoComponent
7701
- */
7702
- get maxItems() {
7703
- return Math.min(this.currentPage * this.pageSize, this.total);
7704
- }
7705
- /**
7706
- * @hidden
7707
- *
7708
- * @readonly
7709
- * @type {number}
7710
- * @memberOf PagerInfoComponent
7711
- */
7712
- get currentPageText() {
7713
- return this.total ?
7714
- (this.currentPage - 1) * this.pageSize + 1 :
7715
- 0;
7716
- }
7717
- /**
7718
- * @hidden
7719
- *
7720
- * @readonly
7721
- * @type {boolean}
7722
- * @memberOf PagerInfoComponent
7723
- */
7724
- get classes() {
7725
- return true;
7726
- }
7727
- onChanges({ total, skip, pageSize }) {
7728
- this.total = total;
7729
- this.skip = skip;
7730
- this.pageSize = pageSize;
7731
- this.cd.markForCheck();
7732
- }
7733
- }
7734
- PagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
7735
- PagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerInfoComponent, selector: "kendo-pager-info", host: { properties: { "class.k-pager-info": "this.classes", "class.k-label": "this.classes" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7736
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
7737
- type: Component,
7738
- args: [{
7739
- changeDetection: ChangeDetectionStrategy.OnPush,
7740
- selector: 'kendo-pager-info',
7741
- template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`
7742
- }]
7743
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
7744
- type: HostBinding,
7745
- args: ["class.k-pager-info"]
7746
- }, {
7747
- type: HostBinding,
7748
- args: ["class.k-label"]
7749
- }] } });
7750
-
7751
- /**
7752
- * @hidden
7753
- */
7754
- class PagerDropDownListDirective {
7755
- constructor(host) {
7756
- this.host = host;
7757
- this.keydownHandler = (e) => {
7758
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
7759
- e.stopPropagation();
7760
- this.host.toggle(false);
7761
- }
7762
- };
7763
- }
7764
- ngAfterViewInit() {
7765
- const wrapperElement = this.host.wrapper.nativeElement;
7766
- wrapperElement.addEventListener('keydown', this.keydownHandler, true);
7767
- }
7768
- ngOnDestroy() {
7769
- this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
7770
- }
7771
- }
7772
- PagerDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });
7773
- PagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]", ngImport: i0 });
7774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, decorators: [{
7775
- type: Directive,
7776
- args: [{ selector: '[kendoGridPagerDropDown]' }]
7777
- }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });
7778
-
7779
- /**
7780
- * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7781
- */
7782
- class PagerPageSizesComponent extends PagerElementComponent {
7783
- constructor(ctx, cd, pagerContext, navigationService) {
7784
- super(ctx, pagerContext, cd);
7785
- this.pagerContext = pagerContext;
7786
- this.navigationService = navigationService;
7787
- this._pageSizes = [];
7788
- }
7789
- /**
7790
- * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects
7791
- * ([see example]({% slug paging_grid %}#toc-pager-templates))
7792
- */
7793
- set pageSizes(pageSizes) {
7794
- let normalizedItems = [];
7795
- pageSizes.forEach(item => {
7796
- if (typeof item === 'number') {
7797
- normalizedItems.push({
7798
- text: item.toString(),
7799
- value: item
7800
- });
7801
- }
7802
- else {
7803
- normalizedItems.push(item);
7804
- }
7805
- });
7806
- if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
7807
- normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
7808
- }
7809
- this._pageSizes = normalizedItems;
7810
- }
7811
- get pageSizes() {
7812
- return this._pageSizes;
7813
- }
7814
- /**
7815
- * @hidden
7816
- *
7817
- * @readonly
7818
- */
7819
- get classes() {
7820
- return true;
7821
- }
7822
- /**
7823
- * @hidden
7824
- *
7825
- * @readonly
7826
- */
7827
- get showInitialPageSize() {
7828
- return this.pageSizes
7829
- .filter(item => {
7830
- if (typeof item.value === 'number') {
7831
- return item.value === Number(this.pageSize);
7832
- }
7833
- return this.total === Number(this.pageSize);
7834
- })
7835
- .length === 0;
7836
- }
7837
- /**
7838
- * @hidden
7839
- */
7840
- pageSizeChange(value) {
7841
- this.pageSize = typeof value === 'number' ? value : this.total;
7842
- this.pagerContext.changePageSize(this.pageSize);
7843
- }
7844
- /**
7845
- * @hidden
7846
- */
7847
- getValue(page) {
7848
- return typeof page.value === 'number' ? page.value : this.total;
7849
- }
7850
- onChanges({ total, skip, pageSize }) {
7851
- this.total = total;
7852
- this.skip = skip;
7853
- this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
7854
- this.cd.markForCheck();
7855
- }
7856
- }
7857
- PagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
7858
- PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPageSizesComponent, selector: "kendo-pager-page-sizes", inputs: { pageSizes: "pageSizes" }, host: { properties: { "class.k-pager-sizes": "this.classes", "class.k-label": "this.classes" } }, usesInheritance: true, ngImport: i0, template: `
7859
- <kendo-dropdownlist
7860
- class="k-dropdown"
7861
- #dropdownlist
7862
- [size]="size"
7863
- kendoGridPagerDropDown
7864
- [tabindex]="0"
7865
- kendoGridFocusable
7866
- [data]="pageSizes"
7867
- textField="text"
7868
- valueField="value"
7869
- [valuePrimitive]="true"
7870
- [value]="pageSize"
7871
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7872
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7873
- `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i5.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }], directives: [{ type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]" }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7874
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
7875
- type: Component,
7876
- args: [{
7877
- changeDetection: ChangeDetectionStrategy.OnPush,
7878
- selector: 'kendo-pager-page-sizes',
7879
- template: `
7880
- <kendo-dropdownlist
7881
- class="k-dropdown"
7882
- #dropdownlist
7883
- [size]="size"
7884
- kendoGridPagerDropDown
7885
- [tabindex]="0"
7886
- kendoGridFocusable
7887
- [data]="pageSizes"
7888
- textField="text"
7889
- valueField="value"
7890
- [valuePrimitive]="true"
7891
- [value]="pageSize"
7892
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7893
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7894
- `
7895
- }]
7896
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{
7897
- type: Input
7898
- }], classes: [{
7899
- type: HostBinding,
7900
- args: ['class.k-pager-sizes']
7901
- }, {
7902
- type: HostBinding,
7903
- args: ['class.k-label']
7904
- }] } });
7905
-
7906
7912
  /**
7907
7913
  * @hidden
7908
7914
  */
@@ -7932,18 +7938,33 @@ class PagerComponent {
7932
7938
  if (this.template || !element) {
7933
7939
  return;
7934
7940
  }
7935
- const width = element.offsetWidth;
7936
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7937
- this.renderer.removeClass(element, 'k-pager-mobile-md');
7938
- this.renderer.addClass(element, 'k-pager-mobile-sm');
7939
- }
7940
- else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {
7941
- this.renderer.addClass(element, 'k-pager-mobile-md');
7942
- this.renderer.removeClass(element, 'k-pager-mobile-sm');
7943
- }
7944
- else {
7945
- this.clearResponsiveClasses();
7946
- }
7941
+ this.zone.runOutsideAngular(() => {
7942
+ setTimeout(() => {
7943
+ const width = element.offsetWidth;
7944
+ if (this.numericButtons) {
7945
+ const selectElement = this.numericButtons.selectElement.nativeElement;
7946
+ const numbersElement = this.numericButtons.numbersElement.nativeElement;
7947
+ this.renderer.removeStyle(numbersElement, 'display');
7948
+ this.renderer.setStyle(selectElement, 'display', 'none');
7949
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7950
+ this.renderer.removeStyle(selectElement, 'display');
7951
+ this.renderer.setStyle(numbersElement, 'display', 'none');
7952
+ }
7953
+ }
7954
+ if (this.pagerInfo) {
7955
+ this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
7956
+ if (width < RESPONSIVE_BREAKPOINT_LARGE) {
7957
+ this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
7958
+ }
7959
+ }
7960
+ if (this.pagerPageSizes) {
7961
+ this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
7962
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7963
+ this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
7964
+ }
7965
+ }
7966
+ });
7967
+ });
7947
7968
  };
7948
7969
  }
7949
7970
  set options(value) {
@@ -8062,12 +8083,10 @@ class PagerComponent {
8062
8083
  }
8063
8084
  const changesInTemplate = changes['template'];
8064
8085
  if (changesInTemplate) {
8065
- // eslint-disable-next-line no-unused-expressions
8066
- changesInTemplate.currentValue ? this.clearResponsiveClasses() : this.resizeHandler();
8086
+ changesInTemplate.currentValue ? this.clearResponsiveStyling() : this.resizeHandler();
8067
8087
  }
8068
8088
  if (changes['options']) {
8069
- // eslint-disable-next-line no-unused-expressions
8070
- this.settings.responsive ? this.resizeHandler() : this.clearResponsiveClasses();
8089
+ this.settings.responsive ? this.resizeHandler() : this.clearResponsiveStyling();
8071
8090
  }
8072
8091
  }
8073
8092
  ngOnDestroy() {
@@ -8093,11 +8112,6 @@ class PagerComponent {
8093
8112
  }
8094
8113
  });
8095
8114
  }
8096
- clearResponsiveClasses() {
8097
- const element = this.element.nativeElement;
8098
- this.renderer.removeClass(element, 'k-pager-mobile-sm');
8099
- this.renderer.removeClass(element, 'k-pager-mobile-md');
8100
- }
8101
8115
  shouldTriggerPageChange(target, condition) {
8102
8116
  return this.navigationService.pagerEnabled &&
8103
8117
  target === this.element.nativeElement &&
@@ -8120,6 +8134,18 @@ class PagerComponent {
8120
8134
  this.cellContext.focusGroup = this.focusGroup;
8121
8135
  }
8122
8136
  }
8137
+ clearResponsiveStyling() {
8138
+ this.zone.runOutsideAngular(() => {
8139
+ setTimeout(() => {
8140
+ if (this.numericButtons) {
8141
+ this.renderer.removeStyle(this.numericButtons.numbersElement.nativeElement, 'display');
8142
+ this.renderer.setStyle(this.numericButtons.selectElement.nativeElement, 'display', 'none');
8143
+ }
8144
+ this.pagerInfo && this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
8145
+ this.pagerPageSizes && this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
8146
+ });
8147
+ });
8148
+ }
8123
8149
  }
8124
8150
  PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: ContextService }, { token: CELL_CONTEXT, optional: true }, { token: FocusRoot }, { token: FocusGroup }], target: i0.ɵɵFactoryTarget.Component });
8125
8151
  PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerComponent, selector: "kendo-pager", inputs: { total: "total", skip: "skip", pageSize: "pageSize", options: "options", size: "size", template: "template" }, outputs: { pageChange: "pageChange" }, host: { listeners: { "focusin": "onFocusIn($event)", "focusout": "onFocusOut()", "keydown.escape": "onEscape()", "keydown.enter": "onEnter($event)", "keydown.arrowleft": "navigateToPreviousPage($event)", "keydown.pageup": "navigateToPreviousPage($event)", "keydown.arrowright": "navigateToNextPage($event)", "keydown.pagedown": "navigateToNextPage($event)", "keydown.home": "navigateToFirstPage($event)", "keydown.end": "navigateToLastPage($event)" }, properties: { "class.k-pager-wrap": "this.pagerWrapClass", "class.k-grid-pager": "this.gridPagerClass", "class.k-pager-sm": "this.sizeSmallClass", "class.k-pager-md": "this.sizeMediumClass", "class.k-focus": "this.isFocused", "attr.aria-label": "this.pagerAriaLabel" } }, providers: [{
@@ -8133,7 +8159,7 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
8133
8159
  provide: FocusGroup,
8134
8160
  deps: [FocusRoot],
8135
8161
  useClass: FocusGroup
8136
- }], usesOnChanges: true, ngImport: i0, template: `
8162
+ }], viewQueries: [{ propertyName: "pagerInfo", first: true, predicate: PagerInfoComponent, descendants: true, read: ElementRef }, { propertyName: "pagerPageSizes", first: true, predicate: PagerPageSizesComponent, descendants: true, read: ElementRef }, { propertyName: "numericButtons", first: true, predicate: PagerNumericButtonsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
8137
8163
  <div
8138
8164
  *ngIf="navigationService.pagerEnabled"
8139
8165
  class="k-sr-only"
@@ -8147,20 +8173,21 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
8147
8173
  [ngTemplateOutletContext]="templateContext">
8148
8174
  </ng-container>
8149
8175
  <ng-container *ngIf="!template?.templateRef">
8150
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8151
- <kendo-pager-numeric-buttons
8152
- [size]="size"
8153
- *ngIf="settings.type === 'numeric'"
8154
- [buttonCount]="settings.buttonCount">
8155
- </kendo-pager-numeric-buttons>
8156
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8157
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8176
+ <div class="k-pager-numbers-wrap">
8177
+ <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8178
+ <kendo-pager-numeric-buttons
8179
+ [size]="size"
8180
+ *ngIf="settings.type === 'numeric'"
8181
+ [buttonCount]="settings.buttonCount">
8182
+ </kendo-pager-numeric-buttons>
8183
+ <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8184
+ <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8185
+ </div>
8158
8186
  <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
8159
8187
  <kendo-pager-page-sizes
8160
8188
  [size]="size"
8161
8189
  *ngIf="settings.pageSizes"
8162
8190
  [pageSizes]="$any(settings.pageSizes)"
8163
- #pageSizes
8164
8191
  ></kendo-pager-page-sizes>
8165
8192
  </ng-container>
8166
8193
  <div
@@ -8202,20 +8229,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8202
8229
  [ngTemplateOutletContext]="templateContext">
8203
8230
  </ng-container>
8204
8231
  <ng-container *ngIf="!template?.templateRef">
8205
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8206
- <kendo-pager-numeric-buttons
8207
- [size]="size"
8208
- *ngIf="settings.type === 'numeric'"
8209
- [buttonCount]="settings.buttonCount">
8210
- </kendo-pager-numeric-buttons>
8211
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8212
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8232
+ <div class="k-pager-numbers-wrap">
8233
+ <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8234
+ <kendo-pager-numeric-buttons
8235
+ [size]="size"
8236
+ *ngIf="settings.type === 'numeric'"
8237
+ [buttonCount]="settings.buttonCount">
8238
+ </kendo-pager-numeric-buttons>
8239
+ <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8240
+ <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8241
+ </div>
8213
8242
  <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
8214
8243
  <kendo-pager-page-sizes
8215
8244
  [size]="size"
8216
8245
  *ngIf="settings.pageSizes"
8217
8246
  [pageSizes]="$any(settings.pageSizes)"
8218
- #pageSizes
8219
8247
  ></kendo-pager-page-sizes>
8220
8248
  </ng-container>
8221
8249
  <div
@@ -8235,7 +8263,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8235
8263
  type: Inject,
8236
8264
  args: [CELL_CONTEXT]
8237
8265
  }] }, { type: FocusRoot }, { type: FocusGroup }];
8238
- }, propDecorators: { total: [{
8266
+ }, propDecorators: { pagerInfo: [{
8267
+ type: ViewChild,
8268
+ args: [PagerInfoComponent, { read: ElementRef }]
8269
+ }], pagerPageSizes: [{
8270
+ type: ViewChild,
8271
+ args: [PagerPageSizesComponent, { read: ElementRef }]
8272
+ }], numericButtons: [{
8273
+ type: ViewChild,
8274
+ args: [PagerNumericButtonsComponent]
8275
+ }], total: [{
8239
8276
  type: Input
8240
8277
  }], skip: [{
8241
8278
  type: Input
@@ -22927,7 +22964,16 @@ class ExpandGroupDirective {
22927
22964
  this.expandedGroupKeys.push(key);
22928
22965
  }
22929
22966
  else {
22930
- const index = this.expandedGroupKeys.indexOf(key);
22967
+ const index = this.expandedGroupKeys.findIndex(group => {
22968
+ var _a;
22969
+ if (this.expandGroupBy) {
22970
+ return group === key;
22971
+ }
22972
+ else if (((_a = key.parentGroupKeys) === null || _a === void 0 ? void 0 : _a.length) === 0) {
22973
+ return group.value === key.value;
22974
+ }
22975
+ return JSON.stringify(group) === JSON.stringify(key);
22976
+ });
22931
22977
  this.expandedGroupKeys.splice(index, 1);
22932
22978
  }
22933
22979
  this.expandedGroupKeysChange.emit(this.expandedGroupKeys.slice());