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

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, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, 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 { IconsModule } from '@progress/kendo-angular-icons';
24
24
  import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineFlexIcon, slidersIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon } from '@progress/kendo-svg-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';
@@ -4442,8 +4442,8 @@ const packageMetadata = {
4442
4442
  name: '@progress/kendo-angular-grid',
4443
4443
  productName: 'Kendo UI for Angular',
4444
4444
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
4445
- publishDate: 1692370838,
4446
- version: '13.4.0-develop.3',
4445
+ publishDate: 1692620937,
4446
+ version: '13.4.0-develop.4',
4447
4447
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
4448
4448
  };
4449
4449
 
@@ -7059,23 +7059,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7059
7059
  type: Input
7060
7060
  }] } });
7061
7061
 
7062
+ // eslint-disable no-access-missing-member
7062
7063
  /**
7063
- * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7064
+ * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7064
7065
  */
7065
- class PagerPrevButtonsComponent extends PagerElementComponent {
7066
- constructor(ctx, pagerContext, cd, navigationService) {
7066
+ class PagerInfoComponent extends PagerElementComponent {
7067
+ constructor(ctx, cd, pagerContext) {
7067
7068
  super(ctx, pagerContext, cd);
7068
- this.navigationService = navigationService;
7069
+ this.pagerContext = pagerContext;
7070
+ }
7071
+ /**
7072
+ * @hidden
7073
+ *
7074
+ * @readonly
7075
+ * @type {number}
7076
+ * @memberOf PagerInfoComponent
7077
+ */
7078
+ get maxItems() {
7079
+ return Math.min(this.currentPage * this.pageSize, this.total);
7080
+ }
7081
+ /**
7082
+ * @hidden
7083
+ *
7084
+ * @readonly
7085
+ * @type {number}
7086
+ * @memberOf PagerInfoComponent
7087
+ */
7088
+ get currentPageText() {
7089
+ return this.total ?
7090
+ (this.currentPage - 1) * this.pageSize + 1 :
7091
+ 0;
7069
7092
  }
7070
7093
  /**
7071
7094
  * @hidden
7072
7095
  *
7073
7096
  * @readonly
7074
7097
  * @type {boolean}
7075
- * @memberOf PagerPrevButtonsComponent
7098
+ * @memberOf PagerInfoComponent
7076
7099
  */
7077
- get disabled() {
7078
- return this.currentPage === 1 || !this.total;
7100
+ get classes() {
7101
+ return true;
7079
7102
  }
7080
7103
  onChanges({ total, skip, pageSize }) {
7081
7104
  this.total = total;
@@ -7084,168 +7107,266 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
7084
7107
  this.cd.markForCheck();
7085
7108
  }
7086
7109
  }
7087
- 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 });
7088
- PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons", usesInheritance: true, ngImport: i0, template: `
7089
- <button
7090
- [kendoGridFocusable]="!disabled"
7091
- kendoButton
7092
- type="button"
7093
- [title]="textFor('pagerFirstPage')"
7094
- [attr.aria-label]="textFor('pagerFirstPage')"
7095
- (click)="currentPage !== 1 ? changePage(0) : false"
7096
- role="button"
7097
- [icon]="prevArrowIcons[0]"
7098
- [svgIcon]="prevArrowSVGIcons[0]"
7099
- class="k-pager-nav k-pager-first"
7100
- [disabled]="disabled"
7101
- fillMode="flat"
7102
- rounded="none"
7103
- [size]="size">
7104
- </button>
7105
- <button
7106
- kendoButton
7107
- [kendoGridFocusable]="!disabled"
7108
- type="button"
7109
- class="k-pager-nav"
7110
- [disabled]="disabled"
7111
- [icon]="prevArrowIcons[1]"
7112
- [svgIcon]="prevArrowSVGIcons[1]"
7113
- fillMode="flat"
7114
- rounded="none"
7115
- [size]="size"
7116
- [title]="textFor('pagerPreviousPage')"
7117
- [attr.aria-label]="textFor('pagerPreviousPage')"
7118
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7119
- </button>
7120
- `, 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 });
7121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
7110
+ 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 });
7111
+ 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 });
7112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
7122
7113
  type: Component,
7123
7114
  args: [{
7124
7115
  changeDetection: ChangeDetectionStrategy.OnPush,
7125
- selector: 'kendo-pager-prev-buttons',
7126
- template: `
7127
- <button
7128
- [kendoGridFocusable]="!disabled"
7129
- kendoButton
7130
- type="button"
7131
- [title]="textFor('pagerFirstPage')"
7132
- [attr.aria-label]="textFor('pagerFirstPage')"
7133
- (click)="currentPage !== 1 ? changePage(0) : false"
7134
- role="button"
7135
- [icon]="prevArrowIcons[0]"
7136
- [svgIcon]="prevArrowSVGIcons[0]"
7137
- class="k-pager-nav k-pager-first"
7138
- [disabled]="disabled"
7139
- fillMode="flat"
7140
- rounded="none"
7141
- [size]="size">
7142
- </button>
7143
- <button
7144
- kendoButton
7145
- [kendoGridFocusable]="!disabled"
7146
- type="button"
7147
- class="k-pager-nav"
7148
- [disabled]="disabled"
7149
- [icon]="prevArrowIcons[1]"
7150
- [svgIcon]="prevArrowSVGIcons[1]"
7151
- fillMode="flat"
7152
- rounded="none"
7153
- [size]="size"
7154
- [title]="textFor('pagerPreviousPage')"
7155
- [attr.aria-label]="textFor('pagerPreviousPage')"
7156
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7157
- </button>
7158
- `
7116
+ selector: 'kendo-pager-info',
7117
+ template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`
7159
7118
  }]
7160
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7119
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
7120
+ type: HostBinding,
7121
+ args: ["class.k-pager-info"]
7122
+ }, {
7123
+ type: HostBinding,
7124
+ args: ["class.k-label"]
7125
+ }] } });
7161
7126
 
7162
7127
  /**
7163
- * Displays numeric buttons to enable navigation between the pages ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7128
+ * @hidden
7164
7129
  */
7165
- class PagerNumericButtonsComponent extends PagerElementComponent {
7166
- constructor(ctx, cd, pagerContext) {
7130
+ class PagerDropDownListDirective {
7131
+ constructor(host) {
7132
+ this.host = host;
7133
+ this.keydownHandler = (e) => {
7134
+ if (e.keyCode === Keys.Escape && this.host.isOpen) {
7135
+ e.stopPropagation();
7136
+ this.host.toggle(false);
7137
+ }
7138
+ };
7139
+ }
7140
+ ngAfterViewInit() {
7141
+ const wrapperElement = this.host.wrapper.nativeElement;
7142
+ wrapperElement.addEventListener('keydown', this.keydownHandler, true);
7143
+ }
7144
+ ngOnDestroy() {
7145
+ this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
7146
+ }
7147
+ }
7148
+ 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 });
7149
+ PagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]", ngImport: i0 });
7150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, decorators: [{
7151
+ type: Directive,
7152
+ args: [{ selector: '[kendoGridPagerDropDown]' }]
7153
+ }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });
7154
+
7155
+ /**
7156
+ * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7157
+ */
7158
+ class PagerPageSizesComponent extends PagerElementComponent {
7159
+ constructor(ctx, cd, pagerContext, navigationService) {
7167
7160
  super(ctx, pagerContext, cd);
7168
7161
  this.pagerContext = pagerContext;
7169
- this.numbersWrapClass = true;
7162
+ this.navigationService = navigationService;
7163
+ this._pageSizes = [];
7170
7164
  }
7171
7165
  /**
7172
- * @hidden
7173
- *
7174
- * @readonly
7175
- * @type {number[]}
7176
- * @memberOf PagerNumericButtonsComponent
7166
+ * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects
7167
+ * ([see example]({% slug paging_grid %}#toc-pager-templates))
7177
7168
  */
7178
- get buttons() {
7179
- const result = [];
7180
- for (let idx = this.start; idx <= this.end; idx++) {
7181
- result.push(idx);
7169
+ set pageSizes(pageSizes) {
7170
+ let normalizedItems = [];
7171
+ pageSizes.forEach(item => {
7172
+ if (typeof item === 'number') {
7173
+ normalizedItems.push({
7174
+ text: item.toString(),
7175
+ value: item
7176
+ });
7177
+ }
7178
+ else {
7179
+ normalizedItems.push(item);
7180
+ }
7181
+ });
7182
+ if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
7183
+ normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
7182
7184
  }
7183
- return result;
7185
+ this._pageSizes = normalizedItems;
7186
+ }
7187
+ get pageSizes() {
7188
+ return this._pageSizes;
7184
7189
  }
7185
7190
  /**
7186
7191
  * @hidden
7192
+ *
7193
+ * @readonly
7187
7194
  */
7188
- get end() {
7189
- return Math.min((this.start + this.buttonCount) - 1, this.totalPages);
7195
+ get classes() {
7196
+ return true;
7190
7197
  }
7191
7198
  /**
7192
7199
  * @hidden
7200
+ *
7201
+ * @readonly
7193
7202
  */
7194
- get start() {
7195
- const page = this.currentPage;
7196
- const buttonCount = this.buttonCount;
7197
- if (page > buttonCount) {
7198
- const reminder = (page % buttonCount);
7199
- return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;
7200
- }
7201
- return 1;
7203
+ get showInitialPageSize() {
7204
+ return this.pageSizes
7205
+ .filter(item => {
7206
+ if (typeof item.value === 'number') {
7207
+ return item.value === Number(this.pageSize);
7208
+ }
7209
+ return this.total === Number(this.pageSize);
7210
+ })
7211
+ .length === 0;
7202
7212
  }
7203
7213
  /**
7204
7214
  * @hidden
7205
7215
  */
7206
- pageLabel(num) {
7207
- const pageText = this.textFor('pagerPage');
7208
- if (pageText) {
7209
- return pageText + ' ' + num;
7210
- }
7211
- return num.toString();
7216
+ pageSizeChange(value) {
7217
+ this.pageSize = typeof value === 'number' ? value : this.total;
7218
+ this.pagerContext.changePageSize(this.pageSize);
7212
7219
  }
7213
7220
  /**
7214
7221
  * @hidden
7215
7222
  */
7216
- onSelectChange(e) {
7217
- const target = e.target;
7218
- const valueAsNumber = Number(target.value);
7219
- if (!Number.isNaN(valueAsNumber)) {
7220
- this.changePage(valueAsNumber - 1);
7221
- }
7222
- else {
7223
- if (target.value === 'previousButtons') {
7224
- this.changePage(this.start - 2);
7225
- }
7226
- else {
7227
- this.changePage(this.end);
7228
- }
7229
- }
7223
+ getValue(page) {
7224
+ return typeof page.value === 'number' ? page.value : this.total;
7230
7225
  }
7231
7226
  onChanges({ total, skip, pageSize }) {
7232
7227
  this.total = total;
7233
7228
  this.skip = skip;
7234
- this.pageSize = pageSize;
7229
+ this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
7235
7230
  this.cd.markForCheck();
7236
7231
  }
7237
7232
  }
7238
- 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 });
7239
- 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: `
7240
- <select
7241
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
7242
- kendoGridFocusable
7243
- [attr.title]="textFor('selectPage')"
7244
- [attr.aria-label]="textFor('selectPage')"
7245
- [ngClass]="{
7246
- 'k-picker-sm': size === 'small',
7247
- 'k-picker-md': size === 'medium' || !size
7248
- }"
7233
+ 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 });
7234
+ 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: `
7235
+ <kendo-dropdownlist
7236
+ class="k-dropdown"
7237
+ #dropdownlist
7238
+ [size]="size"
7239
+ kendoGridPagerDropDown
7240
+ [tabindex]="0"
7241
+ kendoGridFocusable
7242
+ [data]="pageSizes"
7243
+ textField="text"
7244
+ valueField="value"
7245
+ [valuePrimitive]="true"
7246
+ [value]="pageSize"
7247
+ (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7248
+ <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7249
+ `, 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 });
7250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
7251
+ type: Component,
7252
+ args: [{
7253
+ changeDetection: ChangeDetectionStrategy.OnPush,
7254
+ selector: 'kendo-pager-page-sizes',
7255
+ template: `
7256
+ <kendo-dropdownlist
7257
+ class="k-dropdown"
7258
+ #dropdownlist
7259
+ [size]="size"
7260
+ kendoGridPagerDropDown
7261
+ [tabindex]="0"
7262
+ kendoGridFocusable
7263
+ [data]="pageSizes"
7264
+ textField="text"
7265
+ valueField="value"
7266
+ [valuePrimitive]="true"
7267
+ [value]="pageSize"
7268
+ (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7269
+ <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7270
+ `
7271
+ }]
7272
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{
7273
+ type: Input
7274
+ }], classes: [{
7275
+ type: HostBinding,
7276
+ args: ['class.k-pager-sizes']
7277
+ }, {
7278
+ type: HostBinding,
7279
+ args: ['class.k-label']
7280
+ }] } });
7281
+
7282
+ /**
7283
+ * Displays numeric buttons to enable navigation between the pages ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7284
+ */
7285
+ class PagerNumericButtonsComponent extends PagerElementComponent {
7286
+ constructor(ctx, cd, pagerContext) {
7287
+ super(ctx, pagerContext, cd);
7288
+ this.pagerContext = pagerContext;
7289
+ }
7290
+ /**
7291
+ * @hidden
7292
+ *
7293
+ * @readonly
7294
+ * @type {number[]}
7295
+ * @memberOf PagerNumericButtonsComponent
7296
+ */
7297
+ get buttons() {
7298
+ const result = [];
7299
+ for (let idx = this.start; idx <= this.end; idx++) {
7300
+ result.push(idx);
7301
+ }
7302
+ return result;
7303
+ }
7304
+ /**
7305
+ * @hidden
7306
+ */
7307
+ get end() {
7308
+ return Math.min((this.start + this.buttonCount) - 1, this.totalPages);
7309
+ }
7310
+ /**
7311
+ * @hidden
7312
+ */
7313
+ get start() {
7314
+ const page = this.currentPage;
7315
+ const buttonCount = this.buttonCount;
7316
+ if (page > buttonCount) {
7317
+ const reminder = (page % buttonCount);
7318
+ return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;
7319
+ }
7320
+ return 1;
7321
+ }
7322
+ /**
7323
+ * @hidden
7324
+ */
7325
+ pageLabel(num) {
7326
+ const pageText = this.textFor('pagerPage');
7327
+ if (pageText) {
7328
+ return pageText + ' ' + num;
7329
+ }
7330
+ return num.toString();
7331
+ }
7332
+ /**
7333
+ * @hidden
7334
+ */
7335
+ onSelectChange(e) {
7336
+ const target = e.target;
7337
+ const valueAsNumber = Number(target.value);
7338
+ if (!Number.isNaN(valueAsNumber)) {
7339
+ this.changePage(valueAsNumber - 1);
7340
+ }
7341
+ else {
7342
+ if (target.value === 'previousButtons') {
7343
+ this.changePage(this.start - 2);
7344
+ }
7345
+ else {
7346
+ this.changePage(this.end);
7347
+ }
7348
+ }
7349
+ }
7350
+ onChanges({ total, skip, pageSize }) {
7351
+ this.total = total;
7352
+ this.skip = skip;
7353
+ this.pageSize = pageSize;
7354
+ this.cd.markForCheck();
7355
+ }
7356
+ }
7357
+ 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 });
7358
+ 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: `
7359
+ <select
7360
+ #select
7361
+ class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
7362
+ kendoGridFocusable
7363
+ [style.display]="'none'"
7364
+ [attr.title]="textFor('selectPage')"
7365
+ [attr.aria-label]="textFor('selectPage')"
7366
+ [ngClass]="{
7367
+ 'k-picker-sm': size === 'small',
7368
+ 'k-picker-md': size === 'medium' || !size
7369
+ }"
7249
7370
  (change)="onSelectChange($event)">
7250
7371
  <option *ngIf="start > 1"
7251
7372
  value="previousButtons"
@@ -7266,7 +7387,7 @@ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
7266
7387
  [attr.aria-label]="pageLabel(end + 1)">...
7267
7388
  </option>
7268
7389
  </select>
7269
- <div class="k-pager-numbers">
7390
+ <div class="k-pager-numbers" #numbers>
7270
7391
  <button *ngIf="start > 1"
7271
7392
  type="button"
7272
7393
  kendoGridFocusable
@@ -7316,8 +7437,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7316
7437
  selector: 'kendo-pager-numeric-buttons',
7317
7438
  template: `
7318
7439
  <select
7440
+ #select
7319
7441
  class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
7320
7442
  kendoGridFocusable
7443
+ [style.display]="'none'"
7321
7444
  [attr.title]="textFor('selectPage')"
7322
7445
  [attr.aria-label]="textFor('selectPage')"
7323
7446
  [ngClass]="{
@@ -7344,7 +7467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7344
7467
  [attr.aria-label]="pageLabel(end + 1)">...
7345
7468
  </option>
7346
7469
  </select>
7347
- <div class="k-pager-numbers">
7470
+ <div class="k-pager-numbers" #numbers>
7348
7471
  <button *ngIf="start > 1"
7349
7472
  type="button"
7350
7473
  kendoGridFocusable
@@ -7388,13 +7511,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7388
7511
  </div>
7389
7512
  `
7390
7513
  }]
7391
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { numbersWrapClass: [{
7392
- type: HostBinding,
7393
- args: ['class.k-pager-numbers-wrap']
7514
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { selectElement: [{
7515
+ type: ViewChild,
7516
+ args: ['select', { read: ElementRef }]
7517
+ }], numbersElement: [{
7518
+ type: ViewChild,
7519
+ args: ['numbers', { read: ElementRef }]
7394
7520
  }], buttonCount: [{
7395
7521
  type: Input
7396
7522
  }] } });
7397
7523
 
7524
+ /**
7525
+ * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7526
+ */
7527
+ class PagerPrevButtonsComponent extends PagerElementComponent {
7528
+ constructor(ctx, pagerContext, cd, navigationService) {
7529
+ super(ctx, pagerContext, cd);
7530
+ this.navigationService = navigationService;
7531
+ }
7532
+ /**
7533
+ * @hidden
7534
+ *
7535
+ * @readonly
7536
+ * @type {boolean}
7537
+ * @memberOf PagerPrevButtonsComponent
7538
+ */
7539
+ get disabled() {
7540
+ return this.currentPage === 1 || !this.total;
7541
+ }
7542
+ onChanges({ total, skip, pageSize }) {
7543
+ this.total = total;
7544
+ this.skip = skip;
7545
+ this.pageSize = pageSize;
7546
+ this.cd.markForCheck();
7547
+ }
7548
+ }
7549
+ 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 });
7550
+ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons", usesInheritance: true, ngImport: i0, template: `
7551
+ <button
7552
+ [kendoGridFocusable]="!disabled"
7553
+ kendoButton
7554
+ type="button"
7555
+ [title]="textFor('pagerFirstPage')"
7556
+ [attr.aria-label]="textFor('pagerFirstPage')"
7557
+ (click)="currentPage !== 1 ? changePage(0) : false"
7558
+ role="button"
7559
+ [icon]="prevArrowIcons[0]"
7560
+ [svgIcon]="prevArrowSVGIcons[0]"
7561
+ class="k-pager-nav k-pager-first"
7562
+ [disabled]="disabled"
7563
+ fillMode="flat"
7564
+ rounded="none"
7565
+ [size]="size">
7566
+ </button>
7567
+ <button
7568
+ kendoButton
7569
+ [kendoGridFocusable]="!disabled"
7570
+ type="button"
7571
+ class="k-pager-nav"
7572
+ [disabled]="disabled"
7573
+ [icon]="prevArrowIcons[1]"
7574
+ [svgIcon]="prevArrowSVGIcons[1]"
7575
+ fillMode="flat"
7576
+ rounded="none"
7577
+ [size]="size"
7578
+ [title]="textFor('pagerPreviousPage')"
7579
+ [attr.aria-label]="textFor('pagerPreviousPage')"
7580
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7581
+ </button>
7582
+ `, 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 });
7583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
7584
+ type: Component,
7585
+ args: [{
7586
+ changeDetection: ChangeDetectionStrategy.OnPush,
7587
+ selector: 'kendo-pager-prev-buttons',
7588
+ template: `
7589
+ <button
7590
+ [kendoGridFocusable]="!disabled"
7591
+ kendoButton
7592
+ type="button"
7593
+ [title]="textFor('pagerFirstPage')"
7594
+ [attr.aria-label]="textFor('pagerFirstPage')"
7595
+ (click)="currentPage !== 1 ? changePage(0) : false"
7596
+ role="button"
7597
+ [icon]="prevArrowIcons[0]"
7598
+ [svgIcon]="prevArrowSVGIcons[0]"
7599
+ class="k-pager-nav k-pager-first"
7600
+ [disabled]="disabled"
7601
+ fillMode="flat"
7602
+ rounded="none"
7603
+ [size]="size">
7604
+ </button>
7605
+ <button
7606
+ kendoButton
7607
+ [kendoGridFocusable]="!disabled"
7608
+ type="button"
7609
+ class="k-pager-nav"
7610
+ [disabled]="disabled"
7611
+ [icon]="prevArrowIcons[1]"
7612
+ [svgIcon]="prevArrowSVGIcons[1]"
7613
+ fillMode="flat"
7614
+ rounded="none"
7615
+ [size]="size"
7616
+ [title]="textFor('pagerPreviousPage')"
7617
+ [attr.aria-label]="textFor('pagerPreviousPage')"
7618
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
7619
+ </button>
7620
+ `
7621
+ }]
7622
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7623
+
7398
7624
  /**
7399
7625
  * @hidden
7400
7626
  */
@@ -7637,226 +7863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7637
7863
  }]
7638
7864
  }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
7639
7865
 
7640
- // eslint-disable no-access-missing-member
7641
- /**
7642
- * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7643
- */
7644
- class PagerInfoComponent extends PagerElementComponent {
7645
- constructor(ctx, cd, pagerContext) {
7646
- super(ctx, pagerContext, cd);
7647
- this.pagerContext = pagerContext;
7648
- }
7649
- /**
7650
- * @hidden
7651
- *
7652
- * @readonly
7653
- * @type {number}
7654
- * @memberOf PagerInfoComponent
7655
- */
7656
- get maxItems() {
7657
- return Math.min(this.currentPage * this.pageSize, this.total);
7658
- }
7659
- /**
7660
- * @hidden
7661
- *
7662
- * @readonly
7663
- * @type {number}
7664
- * @memberOf PagerInfoComponent
7665
- */
7666
- get currentPageText() {
7667
- return this.total ?
7668
- (this.currentPage - 1) * this.pageSize + 1 :
7669
- 0;
7670
- }
7671
- /**
7672
- * @hidden
7673
- *
7674
- * @readonly
7675
- * @type {boolean}
7676
- * @memberOf PagerInfoComponent
7677
- */
7678
- get classes() {
7679
- return true;
7680
- }
7681
- onChanges({ total, skip, pageSize }) {
7682
- this.total = total;
7683
- this.skip = skip;
7684
- this.pageSize = pageSize;
7685
- this.cd.markForCheck();
7686
- }
7687
- }
7688
- 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 });
7689
- 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 });
7690
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
7691
- type: Component,
7692
- args: [{
7693
- changeDetection: ChangeDetectionStrategy.OnPush,
7694
- selector: 'kendo-pager-info',
7695
- template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`
7696
- }]
7697
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
7698
- type: HostBinding,
7699
- args: ["class.k-pager-info"]
7700
- }, {
7701
- type: HostBinding,
7702
- args: ["class.k-label"]
7703
- }] } });
7704
-
7705
- /**
7706
- * @hidden
7707
- */
7708
- class PagerDropDownListDirective {
7709
- constructor(host) {
7710
- this.host = host;
7711
- this.keydownHandler = (e) => {
7712
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
7713
- e.stopPropagation();
7714
- this.host.toggle(false);
7715
- }
7716
- };
7717
- }
7718
- ngAfterViewInit() {
7719
- const wrapperElement = this.host.wrapper.nativeElement;
7720
- wrapperElement.addEventListener('keydown', this.keydownHandler, true);
7721
- }
7722
- ngOnDestroy() {
7723
- this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
7724
- }
7725
- }
7726
- 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 });
7727
- PagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]", ngImport: i0 });
7728
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerDropDownListDirective, decorators: [{
7729
- type: Directive,
7730
- args: [{ selector: '[kendoGridPagerDropDown]' }]
7731
- }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });
7732
-
7733
- /**
7734
- * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
7735
- */
7736
- class PagerPageSizesComponent extends PagerElementComponent {
7737
- constructor(ctx, cd, pagerContext, navigationService) {
7738
- super(ctx, pagerContext, cd);
7739
- this.pagerContext = pagerContext;
7740
- this.navigationService = navigationService;
7741
- this._pageSizes = [];
7742
- }
7743
- /**
7744
- * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects
7745
- * ([see example]({% slug paging_grid %}#toc-pager-templates))
7746
- */
7747
- set pageSizes(pageSizes) {
7748
- let normalizedItems = [];
7749
- pageSizes.forEach(item => {
7750
- if (typeof item === 'number') {
7751
- normalizedItems.push({
7752
- text: item.toString(),
7753
- value: item
7754
- });
7755
- }
7756
- else {
7757
- normalizedItems.push(item);
7758
- }
7759
- });
7760
- if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
7761
- normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
7762
- }
7763
- this._pageSizes = normalizedItems;
7764
- }
7765
- get pageSizes() {
7766
- return this._pageSizes;
7767
- }
7768
- /**
7769
- * @hidden
7770
- *
7771
- * @readonly
7772
- */
7773
- get classes() {
7774
- return true;
7775
- }
7776
- /**
7777
- * @hidden
7778
- *
7779
- * @readonly
7780
- */
7781
- get showInitialPageSize() {
7782
- return this.pageSizes
7783
- .filter(item => {
7784
- if (typeof item.value === 'number') {
7785
- return item.value === Number(this.pageSize);
7786
- }
7787
- return this.total === Number(this.pageSize);
7788
- })
7789
- .length === 0;
7790
- }
7791
- /**
7792
- * @hidden
7793
- */
7794
- pageSizeChange(value) {
7795
- this.pageSize = typeof value === 'number' ? value : this.total;
7796
- this.pagerContext.changePageSize(this.pageSize);
7797
- }
7798
- /**
7799
- * @hidden
7800
- */
7801
- getValue(page) {
7802
- return typeof page.value === 'number' ? page.value : this.total;
7803
- }
7804
- onChanges({ total, skip, pageSize }) {
7805
- this.total = total;
7806
- this.skip = skip;
7807
- this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
7808
- this.cd.markForCheck();
7809
- }
7810
- }
7811
- 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 });
7812
- 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: `
7813
- <kendo-dropdownlist
7814
- class="k-dropdown"
7815
- #dropdownlist
7816
- [size]="size"
7817
- kendoGridPagerDropDown
7818
- [tabindex]="0"
7819
- kendoGridFocusable
7820
- [data]="pageSizes"
7821
- textField="text"
7822
- valueField="value"
7823
- [valuePrimitive]="true"
7824
- [value]="pageSize"
7825
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7826
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7827
- `, 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 });
7828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
7829
- type: Component,
7830
- args: [{
7831
- changeDetection: ChangeDetectionStrategy.OnPush,
7832
- selector: 'kendo-pager-page-sizes',
7833
- template: `
7834
- <kendo-dropdownlist
7835
- class="k-dropdown"
7836
- #dropdownlist
7837
- [size]="size"
7838
- kendoGridPagerDropDown
7839
- [tabindex]="0"
7840
- kendoGridFocusable
7841
- [data]="pageSizes"
7842
- textField="text"
7843
- valueField="value"
7844
- [valuePrimitive]="true"
7845
- [value]="pageSize"
7846
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
7847
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
7848
- `
7849
- }]
7850
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{
7851
- type: Input
7852
- }], classes: [{
7853
- type: HostBinding,
7854
- args: ['class.k-pager-sizes']
7855
- }, {
7856
- type: HostBinding,
7857
- args: ['class.k-label']
7858
- }] } });
7859
-
7860
7866
  /**
7861
7867
  * @hidden
7862
7868
  */
@@ -7886,18 +7892,33 @@ class PagerComponent {
7886
7892
  if (this.template || !element) {
7887
7893
  return;
7888
7894
  }
7889
- const width = element.offsetWidth;
7890
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7891
- this.renderer.removeClass(element, 'k-pager-mobile-md');
7892
- this.renderer.addClass(element, 'k-pager-mobile-sm');
7893
- }
7894
- else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {
7895
- this.renderer.addClass(element, 'k-pager-mobile-md');
7896
- this.renderer.removeClass(element, 'k-pager-mobile-sm');
7897
- }
7898
- else {
7899
- this.clearResponsiveClasses();
7900
- }
7895
+ this.zone.runOutsideAngular(() => {
7896
+ setTimeout(() => {
7897
+ const width = element.offsetWidth;
7898
+ if (this.numericButtons) {
7899
+ const selectElement = this.numericButtons.selectElement.nativeElement;
7900
+ const numbersElement = this.numericButtons.numbersElement.nativeElement;
7901
+ this.renderer.removeStyle(numbersElement, 'display');
7902
+ this.renderer.setStyle(selectElement, 'display', 'none');
7903
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7904
+ this.renderer.removeStyle(selectElement, 'display');
7905
+ this.renderer.setStyle(numbersElement, 'display', 'none');
7906
+ }
7907
+ }
7908
+ if (this.pagerInfo) {
7909
+ this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
7910
+ if (width < RESPONSIVE_BREAKPOINT_LARGE) {
7911
+ this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
7912
+ }
7913
+ }
7914
+ if (this.pagerPageSizes) {
7915
+ this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
7916
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
7917
+ this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
7918
+ }
7919
+ }
7920
+ });
7921
+ });
7901
7922
  };
7902
7923
  }
7903
7924
  set options(value) {
@@ -8016,12 +8037,10 @@ class PagerComponent {
8016
8037
  }
8017
8038
  const changesInTemplate = changes['template'];
8018
8039
  if (changesInTemplate) {
8019
- // eslint-disable-next-line no-unused-expressions
8020
- changesInTemplate.currentValue ? this.clearResponsiveClasses() : this.resizeHandler();
8040
+ changesInTemplate.currentValue ? this.clearResponsiveStyling() : this.resizeHandler();
8021
8041
  }
8022
8042
  if (changes['options']) {
8023
- // eslint-disable-next-line no-unused-expressions
8024
- this.settings.responsive ? this.resizeHandler() : this.clearResponsiveClasses();
8043
+ this.settings.responsive ? this.resizeHandler() : this.clearResponsiveStyling();
8025
8044
  }
8026
8045
  }
8027
8046
  ngOnDestroy() {
@@ -8047,11 +8066,6 @@ class PagerComponent {
8047
8066
  }
8048
8067
  });
8049
8068
  }
8050
- clearResponsiveClasses() {
8051
- const element = this.element.nativeElement;
8052
- this.renderer.removeClass(element, 'k-pager-mobile-sm');
8053
- this.renderer.removeClass(element, 'k-pager-mobile-md');
8054
- }
8055
8069
  shouldTriggerPageChange(target, condition) {
8056
8070
  return this.navigationService.pagerEnabled &&
8057
8071
  target === this.element.nativeElement &&
@@ -8074,6 +8088,18 @@ class PagerComponent {
8074
8088
  this.cellContext.focusGroup = this.focusGroup;
8075
8089
  }
8076
8090
  }
8091
+ clearResponsiveStyling() {
8092
+ this.zone.runOutsideAngular(() => {
8093
+ setTimeout(() => {
8094
+ if (this.numericButtons) {
8095
+ this.renderer.removeStyle(this.numericButtons.numbersElement.nativeElement, 'display');
8096
+ this.renderer.setStyle(this.numericButtons.selectElement.nativeElement, 'display', 'none');
8097
+ }
8098
+ this.pagerInfo && this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
8099
+ this.pagerPageSizes && this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
8100
+ });
8101
+ });
8102
+ }
8077
8103
  }
8078
8104
  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 });
8079
8105
  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: [{
@@ -8087,7 +8113,7 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
8087
8113
  provide: FocusGroup,
8088
8114
  deps: [FocusRoot],
8089
8115
  useClass: FocusGroup
8090
- }], usesOnChanges: true, ngImport: i0, template: `
8116
+ }], 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: `
8091
8117
  <div
8092
8118
  *ngIf="navigationService.pagerEnabled"
8093
8119
  class="k-sr-only"
@@ -8101,20 +8127,21 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
8101
8127
  [ngTemplateOutletContext]="templateContext">
8102
8128
  </ng-container>
8103
8129
  <ng-container *ngIf="!template?.templateRef">
8104
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8105
- <kendo-pager-numeric-buttons
8106
- [size]="size"
8107
- *ngIf="settings.type === 'numeric'"
8108
- [buttonCount]="settings.buttonCount">
8109
- </kendo-pager-numeric-buttons>
8110
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8111
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8130
+ <div class="k-pager-numbers-wrap">
8131
+ <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8132
+ <kendo-pager-numeric-buttons
8133
+ [size]="size"
8134
+ *ngIf="settings.type === 'numeric'"
8135
+ [buttonCount]="settings.buttonCount">
8136
+ </kendo-pager-numeric-buttons>
8137
+ <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8138
+ <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8139
+ </div>
8112
8140
  <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
8113
8141
  <kendo-pager-page-sizes
8114
8142
  [size]="size"
8115
8143
  *ngIf="settings.pageSizes"
8116
8144
  [pageSizes]="$any(settings.pageSizes)"
8117
- #pageSizes
8118
8145
  ></kendo-pager-page-sizes>
8119
8146
  </ng-container>
8120
8147
  <div
@@ -8156,20 +8183,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8156
8183
  [ngTemplateOutletContext]="templateContext">
8157
8184
  </ng-container>
8158
8185
  <ng-container *ngIf="!template?.templateRef">
8159
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8160
- <kendo-pager-numeric-buttons
8161
- [size]="size"
8162
- *ngIf="settings.type === 'numeric'"
8163
- [buttonCount]="settings.buttonCount">
8164
- </kendo-pager-numeric-buttons>
8165
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8166
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8186
+ <div class="k-pager-numbers-wrap">
8187
+ <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
8188
+ <kendo-pager-numeric-buttons
8189
+ [size]="size"
8190
+ *ngIf="settings.type === 'numeric'"
8191
+ [buttonCount]="settings.buttonCount">
8192
+ </kendo-pager-numeric-buttons>
8193
+ <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
8194
+ <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
8195
+ </div>
8167
8196
  <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
8168
8197
  <kendo-pager-page-sizes
8169
8198
  [size]="size"
8170
8199
  *ngIf="settings.pageSizes"
8171
8200
  [pageSizes]="$any(settings.pageSizes)"
8172
- #pageSizes
8173
8201
  ></kendo-pager-page-sizes>
8174
8202
  </ng-container>
8175
8203
  <div
@@ -8187,7 +8215,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8187
8215
  }, {
8188
8216
  type: Inject,
8189
8217
  args: [CELL_CONTEXT]
8190
- }] }, { type: FocusRoot }, { type: FocusGroup }]; }, propDecorators: { total: [{
8218
+ }] }, { type: FocusRoot }, { type: FocusGroup }]; }, propDecorators: { pagerInfo: [{
8219
+ type: ViewChild,
8220
+ args: [PagerInfoComponent, { read: ElementRef }]
8221
+ }], pagerPageSizes: [{
8222
+ type: ViewChild,
8223
+ args: [PagerPageSizesComponent, { read: ElementRef }]
8224
+ }], numericButtons: [{
8225
+ type: ViewChild,
8226
+ args: [PagerNumericButtonsComponent]
8227
+ }], total: [{
8191
8228
  type: Input
8192
8229
  }], skip: [{
8193
8230
  type: Input