@progress/kendo-angular-grid 17.0.0-develop.33 → 17.0.0-develop.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/{pager → common}/pager-settings.d.ts +13 -0
  2. package/directives.d.ts +2 -18
  3. package/esm2022/directives.mjs +2 -28
  4. package/esm2022/grid.component.mjs +172 -37
  5. package/esm2022/grid.module.mjs +91 -97
  6. package/esm2022/index.mjs +0 -13
  7. package/esm2022/localization/messages.mjs +13 -7
  8. package/esm2022/navigation/navigation.service.mjs +2 -2
  9. package/esm2022/package-metadata.mjs +2 -2
  10. package/esm2022/rendering/common/spacer.component.mjs +2 -2
  11. package/fesm2022/progress-kendo-angular-grid.mjs +353 -1716
  12. package/grid.component.d.ts +4 -5
  13. package/grid.module.d.ts +85 -94
  14. package/index.d.ts +1 -16
  15. package/localization/messages.d.ts +10 -6
  16. package/navigation/navigation.service.d.ts +1 -1
  17. package/package.json +18 -17
  18. package/rendering/common/spacer.component.d.ts +1 -1
  19. package/schematics/ngAdd/index.js +4 -4
  20. package/esm2022/pager/pager-context.service.mjs +0 -42
  21. package/esm2022/pager/pager-dropdown.directive.mjs +0 -40
  22. package/esm2022/pager/pager-element.component.mjs +0 -116
  23. package/esm2022/pager/pager-info.component.mjs +0 -77
  24. package/esm2022/pager/pager-input.component.mjs +0 -146
  25. package/esm2022/pager/pager-input.directive.mjs +0 -32
  26. package/esm2022/pager/pager-next-buttons.component.mjs +0 -115
  27. package/esm2022/pager/pager-numeric-buttons.component.mjs +0 -267
  28. package/esm2022/pager/pager-page-sizes.component.mjs +0 -147
  29. package/esm2022/pager/pager-prev-buttons.component.mjs +0 -117
  30. package/esm2022/pager/pager-template.directive.mjs +0 -49
  31. package/esm2022/pager/pager.component.mjs +0 -471
  32. package/esm2022/pager/pager.module.mjs +0 -51
  33. package/esm2022/pager/pagesize-item.interface.mjs +0 -5
  34. package/pager/pager-context.service.d.ts +0 -30
  35. package/pager/pager-dropdown.directive.d.ts +0 -18
  36. package/pager/pager-element.component.d.ts +0 -79
  37. package/pager/pager-info.component.d.ts +0 -43
  38. package/pager/pager-input.component.d.ts +0 -45
  39. package/pager/pager-input.directive.d.ts +0 -18
  40. package/pager/pager-next-buttons.component.d.ts +0 -28
  41. package/pager/pager-numeric-buttons.component.d.ts +0 -52
  42. package/pager/pager-page-sizes.component.d.ts +0 -49
  43. package/pager/pager-prev-buttons.component.d.ts +0 -28
  44. package/pager/pager-template.directive.d.ts +0 -38
  45. package/pager/pager.component.d.ts +0 -80
  46. package/pager/pager.module.d.ts +0 -37
  47. package/pager/pagesize-item.interface.d.ts +0 -14
  48. /package/esm2022/{pager → common}/pager-settings.mjs +0 -0
@@ -3,17 +3,19 @@
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 { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, Host, Output, HostBinding, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ElementRef, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, Host, Output, HostBinding, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import { merge, of, Subject, from, Subscription, interval, fromEvent, Observable, zip as zip$1, BehaviorSubject } from 'rxjs';
8
8
  import * as i9 from '@progress/kendo-angular-common';
9
9
  import { isDocumentAvailable, Keys, isPresent as isPresent$1, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, closest as closest$1, isFocusable as isFocusable$1, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService, DraggableModule } from '@progress/kendo-angular-common';
10
10
  import * as i1 from '@angular/platform-browser';
11
11
  import * as i1$1 from '@progress/kendo-angular-icons';
12
12
  import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
13
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, columnsIcon, chevronUpIcon, chevronDownIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, caretAltToLeftIcon, caretAltToRightIcon, insertMiddleIcon, filePdfIcon, fileExcelIcon } from '@progress/kendo-svg-icons';
13
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, columnsIcon, chevronUpIcon, chevronDownIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, filePdfIcon, fileExcelIcon } from '@progress/kendo-svg-icons';
14
14
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, skip, auditTime, bufferCount } from 'rxjs/operators';
15
15
  import * as i1$2 from '@progress/kendo-angular-l10n';
16
16
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
17
+ import * as i42 from '@progress/kendo-angular-pager';
18
+ import { PagerContextService, PagerNavigationService, PagerTemplateDirective, KENDO_PAGER } from '@progress/kendo-angular-pager';
17
19
  import { orderBy, isCompositeFilterDescriptor, groupBy, process, filterBy } from '@progress/kendo-data-query';
18
20
  import { NgFor, NgIf, NgTemplateOutlet, NgSwitch, NgSwitchCase, NgClass, NgStyle, NgSwitchDefault } from '@angular/common';
19
21
  import { getter } from '@progress/kendo-common';
@@ -26,7 +28,6 @@ import * as i1$4 from '@progress/kendo-angular-dropdowns';
26
28
  import { DropDownListComponent, AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
27
29
  import * as i4 from '@angular/forms';
28
30
  import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';
29
- import * as i1$5 from '@progress/kendo-angular-inputs';
30
31
  import { TextBoxDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonDirective, TextBoxComponent } from '@progress/kendo-angular-inputs';
31
32
  import { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';
32
33
  import { trigger, state, style, transition, animate } from '@angular/animations';
@@ -34,11 +35,10 @@ import { TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentD
34
35
  import { saveAs } from '@progress/kendo-file-saver';
35
36
  import { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ExcelExportModule } from '@progress/kendo-angular-excel-export';
36
37
  import { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';
37
- import { LabelComponent } from '@progress/kendo-angular-label';
38
38
  import { validatePackage } from '@progress/kendo-licensing';
39
39
  import { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
40
- import * as i2 from '@progress/kendo-angular-toolbar';
41
- import { ToolBarModule } from '@progress/kendo-angular-toolbar';
40
+ import * as i43 from '@progress/kendo-angular-toolbar';
41
+ import { KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
42
42
  import { DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';
43
43
 
44
44
  /* eslint-disable no-bitwise */
@@ -1671,44 +1671,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1671
1671
  type: Injectable
1672
1672
  }] });
1673
1673
 
1674
- /**
1675
- * @hidden
1676
- */
1677
- class PagerContextService {
1678
- total;
1679
- skip;
1680
- pageSize;
1681
- changes = new Subject();
1682
- pageChange = new Subject();
1683
- get currentPage() {
1684
- return this.skip / this.pageSize;
1685
- }
1686
- notifyChanges(changes) {
1687
- this.total = changes.total;
1688
- this.pageSize = changes.pageSize;
1689
- this.skip = changes.skip;
1690
- this.changes.next(changes);
1691
- }
1692
- changePage(page) {
1693
- this.pageChange.next({ skip: page * this.pageSize, take: this.pageSize });
1694
- }
1695
- changePageSize(value) {
1696
- this.pageChange.next({ skip: 0, take: value });
1697
- }
1698
- nextPage() {
1699
- const nextPage = this.currentPage + 1;
1700
- if (nextPage * this.pageSize < this.total) {
1701
- this.changePage(nextPage);
1702
- }
1703
- }
1704
- prevPage() {
1705
- const prevPage = this.currentPage - 1;
1706
- if (prevPage * this.pageSize >= 0) {
1707
- this.changePage(prevPage);
1708
- }
1709
- }
1710
- }
1711
-
1712
1674
  /**
1713
1675
  * Arguments for the `detailCollapse` event.
1714
1676
  */
@@ -2501,12 +2463,12 @@ class NavigationService {
2501
2463
  const ev = rowSelectionService.selectRange(startRowIndex, endRowIndex);
2502
2464
  rowSelectionService.changes.emit(ev);
2503
2465
  }
2504
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2466
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i42.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2505
2467
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService });
2506
2468
  }
2507
2469
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, decorators: [{
2508
2470
  type: Injectable
2509
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: DomEventsService }, { type: PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: FocusableDirective, decorators: [{
2471
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: DomEventsService }, { type: i42.PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: FocusableDirective, decorators: [{
2510
2472
  type: Optional
2511
2473
  }] }]; } });
2512
2474
 
@@ -19224,6 +19186,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19224
19186
  type: Input
19225
19187
  }] } });
19226
19188
 
19189
+ /**
19190
+ * @hidden
19191
+ */
19192
+ class ZoneAwareEventEmitter extends EventEmitter {
19193
+ ngZone;
19194
+ constructor(ngZone, isAsync = false) {
19195
+ super(isAsync);
19196
+ this.ngZone = ngZone;
19197
+ }
19198
+ subscribe(generatorOrNext, error, complete) {
19199
+ let schedulerFn;
19200
+ let errorFn = (_) => null;
19201
+ let completeFn = () => null;
19202
+ if (generatorOrNext && typeof generatorOrNext === 'object') {
19203
+ schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext.next(value)); };
19204
+ if (generatorOrNext.error) {
19205
+ errorFn = (err) => { this.ngZone.run(() => generatorOrNext.error(err)); };
19206
+ }
19207
+ if (generatorOrNext.complete) {
19208
+ completeFn = () => { this.ngZone.run(() => generatorOrNext.complete()); };
19209
+ }
19210
+ }
19211
+ else {
19212
+ schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext(value)); };
19213
+ if (error) {
19214
+ errorFn = (err) => { this.ngZone.run(() => error(err)); };
19215
+ }
19216
+ if (complete) {
19217
+ completeFn = () => { this.ngZone.run(() => complete()); };
19218
+ }
19219
+ }
19220
+ return super.subscribe(schedulerFn, errorFn, completeFn);
19221
+ }
19222
+ }
19223
+
19224
+ /**
19225
+ * @hidden
19226
+ */
19227
+ const packageMetadata = {
19228
+ name: '@progress/kendo-angular-grid',
19229
+ productName: 'Kendo UI for Angular',
19230
+ productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
19231
+ publishDate: 1730714659,
19232
+ version: '17.0.0-develop.35',
19233
+ licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
19234
+ };
19235
+
19227
19236
  /**
19228
19237
  * @hidden
19229
19238
  */
@@ -19241,1606 +19250,113 @@ const normalizeSettings = ({ buttonCount = 10, info = true, type = 'numeric', pa
19241
19250
  */
19242
19251
  const normalize = (settings) => normalizeSettings(settings === true ? {} : settings);
19243
19252
 
19244
- /**
19245
- * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager
19246
- * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>` tag
19247
- * [see example](slug:pager_template_grid).
19248
- *
19249
- * The template context provides the following fields:
19250
- * * `currentPage`&mdash;The index of the displayed page.
19251
- * * `pageSize`&mdash;The value of the current `pageSize`.
19252
- * * `skip`&mdash;The current skip value.
19253
- * * `total`&mdash;The total number of records.
19254
- * * `totalPages`&mdash;The total number of available pages.
19255
- *
19256
- * @example
19257
- * ```html
19258
- * <kendo-grid ... [pageable]="true">
19259
- * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
19260
- * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
19261
- * <kendo-pager-next-buttons></kendo-pager-next-buttons>
19262
- * <kendo-pager-info></kendo-pager-info>
19263
- * Current page: {{currentPage}}
19264
- * </ng-template>
19265
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
19266
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
19267
- * </kendo-grid>
19268
- * ```
19269
- */
19270
- class PagerTemplateDirective {
19271
- templateRef;
19272
- constructor(templateRef) {
19273
- this.templateRef = templateRef;
19253
+ const canCreateElement = () => isDocumentAvailable() && document.createElement;
19254
+ let cachedScrollbarWidth = null;
19255
+ let cachedPixelRatio;
19256
+ let cachedRtlScrollLeft = null;
19257
+ function scrollbarWidth() {
19258
+ if (cachedScrollbarWidth === null && canCreateElement()) {
19259
+ cachedPixelRatio = window.devicePixelRatio || 1;
19260
+ const div = document.createElement("div");
19261
+ div.style.cssText = "overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block";
19262
+ div.innerHTML = "&nbsp;";
19263
+ document.body.appendChild(div);
19264
+ cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;
19265
+ document.body.removeChild(div);
19274
19266
  }
19275
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
19276
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerTemplateDirective, isStandalone: true, selector: "[kendoPagerTemplate]", ngImport: i0 });
19267
+ return cachedScrollbarWidth;
19268
+ }
19269
+ function rtlScrollLeft() {
19270
+ if (cachedRtlScrollLeft === null && canCreateElement()) {
19271
+ const outer = document.createElement('div');
19272
+ outer.style.direction = 'rtl';
19273
+ outer.style.display = 'block';
19274
+ outer.style.clear = 'both';
19275
+ outer.style.width = '100px';
19276
+ outer.style.visibility = 'hidden';
19277
+ outer.style.position = 'absolute';
19278
+ outer.style.left = '-10000px';
19279
+ outer.style.overflow = 'scroll';
19280
+ outer.style.zoom = '1';
19281
+ const inner = document.createElement('div');
19282
+ inner.style.width = '200px';
19283
+ inner.style.height = '1px';
19284
+ outer.append(inner);
19285
+ document.body.appendChild(outer);
19286
+ const initial = outer.scrollLeft;
19287
+ outer.scrollLeft = -1;
19288
+ cachedRtlScrollLeft = outer.scrollLeft < 0 ? outer.scrollLeft : initial;
19289
+ document.body.removeChild(outer);
19290
+ }
19291
+ return cachedRtlScrollLeft;
19277
19292
  }
19278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerTemplateDirective, decorators: [{
19279
- type: Directive,
19280
- args: [{
19281
- selector: '[kendoPagerTemplate]',
19282
- standalone: true
19283
- }]
19284
- }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
19285
- type: Optional
19286
- }] }]; } });
19287
-
19288
- /**
19289
- * @hidden
19290
- */
19291
- const GROUP_CELL_WIDTH = 32; // this should be the value of group-cell inside the theme!
19292
- /**
19293
- * @hidden
19294
- */
19295
- const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
19296
- /**
19297
- * @hidden
19298
- */
19299
- const RESPONSIVE_BREAKPOINT_LARGE = 768;
19300
-
19301
19293
  /**
19302
19294
  * @hidden
19295
+ * move to kendo-common
19303
19296
  */
19304
- class PagerElementComponent {
19305
- ctx;
19306
- pagerContext;
19307
- cd;
19308
- total;
19309
- skip;
19310
- pageSize;
19311
- caretAltLeftIcon = caretAltLeftIcon;
19312
- caretAltToLeftIcon = caretAltToLeftIcon;
19313
- caretAltRightIcon = caretAltRightIcon;
19314
- caretAltToRightIcon = caretAltToRightIcon;
19315
- /**
19316
- * Sets the pager element sizing option.
19317
- * @default `medium`
19318
- */
19319
- size = 'medium';
19320
- /**
19321
- * @hidden
19322
- *
19323
- * @readonly
19324
- * @type {number}
19325
- * @memberOf PagerElementComponent
19326
- */
19327
- get currentPage() {
19328
- return Math.floor((this.skip || 0) / this.pageSize) + 1;
19329
- }
19330
- /**
19331
- * @hidden
19332
- *
19333
- * @readonly
19334
- * @type {number}
19335
- * @memberOf PagerElementComponent
19336
- */
19337
- get totalPages() {
19338
- return Math.ceil((this.total || 0) / this.pageSize);
19339
- }
19297
+ class BrowserSupportService {
19298
+ zone;
19299
+ changeDetector;
19300
+ changes = new EventEmitter();
19340
19301
  subscriptions;
19341
- constructor(ctx, pagerContext, cd) {
19342
- this.ctx = ctx;
19343
- this.pagerContext = pagerContext;
19344
- this.cd = cd;
19345
- this.total = pagerContext.total;
19346
- this.skip = pagerContext.skip;
19347
- this.pageSize = pagerContext.pageSize;
19348
- }
19349
- /**
19350
- * @hidden
19351
- *
19352
- * @param {string} key
19353
- * @returns {string}
19354
- *
19355
- * @memberOf PagerElementComponent
19356
- */
19357
- textFor(key) {
19358
- return this.ctx.localization.get(key);
19359
- }
19360
- /**
19361
- * @hidden
19362
- *
19363
- * @param {number} page
19364
- *
19365
- * @memberOf PagerElementComponent
19366
- */
19367
- changePage(page) {
19368
- this.pagerContext.changePage(page);
19369
- return false;
19370
- }
19371
- /**
19372
- * @hidden
19373
- *
19374
- * @memberOf PagerElementComponent
19375
- */
19376
- ngOnInit() {
19377
- this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));
19378
- this.subscriptions.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));
19302
+ constructor(zone, changeDetector) {
19303
+ this.zone = zone;
19304
+ this.changeDetector = changeDetector;
19305
+ if (typeof window === 'undefined') {
19306
+ return;
19307
+ }
19308
+ this.zone.runOutsideAngular(() => {
19309
+ this.subscriptions = fromEvent(window, 'resize').pipe(auditTime(100)).subscribe(() => {
19310
+ if (cachedPixelRatio !== window.devicePixelRatio) {
19311
+ zone.run(() => {
19312
+ cachedScrollbarWidth = null;
19313
+ this.changes.emit();
19314
+ this.changeDetector.markForCheck();
19315
+ });
19316
+ }
19317
+ });
19318
+ });
19379
19319
  }
19380
19320
  ngOnDestroy() {
19381
19321
  if (this.subscriptions) {
19382
19322
  this.subscriptions.unsubscribe();
19323
+ this.subscriptions = null;
19383
19324
  }
19384
19325
  }
19385
- get prevArrowIcons() {
19386
- return !this.ctx.localization.rtl ? ['caret-alt-to-left', 'caret-alt-left'] : ['caret-alt-to-right', 'caret-alt-right'];
19387
- }
19388
- get prevArrowSVGIcons() {
19389
- return !this.ctx.localization.rtl ? [this.caretAltToLeftIcon, this.caretAltLeftIcon] : [this.caretAltToRightIcon, this.caretAltRightIcon];
19390
- }
19391
- get nextArrowIcons() {
19392
- return !this.ctx.localization.rtl ? ['caret-alt-right', 'caret-alt-to-right'] : ['caret-alt-left', 'caret-alt-to-left'];
19326
+ get scrollbarWidth() {
19327
+ return scrollbarWidth();
19393
19328
  }
19394
- get nextArrowSVGIcons() {
19395
- return !this.ctx.localization.rtl ? [this.caretAltRightIcon, this.caretAltToRightIcon] : [this.caretAltLeftIcon, this.caretAltToLeftIcon];
19329
+ get rtlScrollLeft() {
19330
+ return rtlScrollLeft();
19396
19331
  }
19397
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerElementComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
19398
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerElementComponent, inputs: { size: "size" }, ngImport: i0 });
19332
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
19333
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService });
19399
19334
  }
19400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerElementComponent, decorators: [{
19401
- type: Directive,
19402
- args: [{}]
19403
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
19404
- type: Input
19405
- }] } });
19335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService, decorators: [{
19336
+ type: Injectable
19337
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });
19406
19338
 
19407
- // eslint-disable no-access-missing-member
19339
+ const isGroupItem = (source) => {
19340
+ return source.items !== undefined &&
19341
+ source.field !== undefined;
19342
+ };
19343
+ const isVirtualGroupItem = (source) => {
19344
+ return source.offset !== undefined &&
19345
+ source.skipHeader !== undefined;
19346
+ };
19347
+ const flattenGroups = (groups) => (groups.reduce((acc, curr) => {
19348
+ if (isGroupItem(curr)) {
19349
+ return acc.concat(flattenGroups(curr.items));
19350
+ }
19351
+ return acc.concat([curr]);
19352
+ }, []));
19408
19353
  /**
19409
- * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
19354
+ * @hidden
19410
19355
  */
19411
- class PagerInfoComponent extends PagerElementComponent {
19412
- pagerContext;
19413
- /**
19414
- * @hidden
19415
- *
19416
- * @readonly
19417
- * @type {number}
19418
- * @memberOf PagerInfoComponent
19419
- */
19420
- get maxItems() {
19421
- return Math.min(this.currentPage * this.pageSize, this.total);
19422
- }
19423
- /**
19424
- * @hidden
19425
- *
19426
- * @readonly
19427
- * @type {number}
19428
- * @memberOf PagerInfoComponent
19429
- */
19430
- get currentPageText() {
19431
- return this.total ?
19432
- (this.currentPage - 1) * this.pageSize + 1 :
19433
- 0;
19434
- }
19435
- /**
19436
- * @hidden
19437
- *
19438
- * @readonly
19439
- * @type {boolean}
19440
- * @memberOf PagerInfoComponent
19441
- */
19442
- get classes() {
19443
- return true;
19444
- }
19445
- constructor(ctx, cd, pagerContext) {
19446
- super(ctx, pagerContext, cd);
19447
- this.pagerContext = pagerContext;
19448
- }
19449
- onChanges({ total, skip, pageSize }) {
19450
- this.total = total;
19451
- this.skip = skip;
19452
- this.pageSize = pageSize;
19453
- this.cd.markForCheck();
19454
- }
19455
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInfoComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
19456
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInfoComponent, isStandalone: true, 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 });
19457
- }
19458
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
19459
- type: Component,
19460
- args: [{
19461
- changeDetection: ChangeDetectionStrategy.OnPush,
19462
- selector: 'kendo-pager-info',
19463
- template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`,
19464
- standalone: true
19465
- }]
19466
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
19467
- type: HostBinding,
19468
- args: ["class.k-pager-info"]
19469
- }, {
19470
- type: HostBinding,
19471
- args: ["class.k-label"]
19472
- }] } });
19473
-
19474
- /**
19475
- * @hidden
19476
- */
19477
- class PagerDropDownListDirective {
19478
- host;
19479
- constructor(host) {
19480
- this.host = host;
19481
- }
19482
- ngAfterViewInit() {
19483
- const wrapperElement = this.host.wrapper.nativeElement;
19484
- wrapperElement.addEventListener('keydown', this.keydownHandler, true);
19485
- }
19486
- ngOnDestroy() {
19487
- this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
19488
- }
19489
- keydownHandler = (e) => {
19490
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
19491
- e.stopPropagation();
19492
- this.host.toggle(false);
19493
- }
19494
- };
19495
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });
19496
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerDropDownListDirective, isStandalone: true, selector: "[kendoGridPagerDropDown]", ngImport: i0 });
19497
- }
19498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerDropDownListDirective, decorators: [{
19499
- type: Directive,
19500
- args: [{
19501
- selector: '[kendoGridPagerDropDown]',
19502
- standalone: true
19503
- }]
19504
- }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });
19505
-
19506
- /**
19507
- * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
19508
- */
19509
- class PagerPageSizesComponent extends PagerElementComponent {
19510
- pagerContext;
19511
- navigationService;
19512
- /**
19513
- * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects
19514
- * ([see example](slug:pager_template_grid))
19515
- */
19516
- set pageSizes(pageSizes) {
19517
- let normalizedItems = [];
19518
- pageSizes.forEach(item => {
19519
- if (typeof item === 'number') {
19520
- normalizedItems.push({
19521
- text: item.toString(),
19522
- value: item
19523
- });
19524
- }
19525
- else {
19526
- normalizedItems.push(item);
19527
- }
19528
- });
19529
- if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
19530
- normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
19531
- }
19532
- this._pageSizes = normalizedItems;
19533
- }
19534
- get pageSizes() {
19535
- return this._pageSizes;
19536
- }
19537
- /**
19538
- * @hidden
19539
- *
19540
- * @readonly
19541
- */
19542
- get classes() {
19543
- return true;
19544
- }
19545
- /**
19546
- * @hidden
19547
- *
19548
- * @readonly
19549
- */
19550
- get showInitialPageSize() {
19551
- return this.pageSizes
19552
- .filter(item => {
19553
- if (typeof item.value === 'number') {
19554
- return item.value === Number(this.pageSize);
19555
- }
19556
- return this.total === Number(this.pageSize);
19557
- })
19558
- .length === 0;
19559
- }
19560
- _pageSizes = [];
19561
- constructor(ctx, cd, pagerContext, navigationService) {
19562
- super(ctx, pagerContext, cd);
19563
- this.pagerContext = pagerContext;
19564
- this.navigationService = navigationService;
19565
- }
19566
- /**
19567
- * @hidden
19568
- */
19569
- pageSizeChange(value) {
19570
- this.pageSize = typeof value === 'number' ? value : this.total;
19571
- this.pagerContext.changePageSize(this.pageSize);
19572
- }
19573
- /**
19574
- * @hidden
19575
- */
19576
- getValue(page) {
19577
- return typeof page.value === 'number' ? page.value : this.total;
19578
- }
19579
- onChanges({ total, skip, pageSize }) {
19580
- this.total = total;
19581
- this.skip = skip;
19582
- this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
19583
- this.cd.markForCheck();
19584
- }
19585
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
19586
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPageSizesComponent, isStandalone: true, 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: `
19587
- <kendo-dropdownlist
19588
- class="k-dropdown"
19589
- #dropdownlist
19590
- [size]="size"
19591
- kendoGridPagerDropDown
19592
- [tabindex]="0"
19593
- kendoGridFocusable
19594
- [data]="pageSizes"
19595
- textField="text"
19596
- valueField="value"
19597
- [valuePrimitive]="true"
19598
- [value]="pageSize"
19599
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
19600
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
19601
- `, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: PagerDropDownListDirective, selector: "[kendoGridPagerDropDown]" }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19602
- }
19603
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
19604
- type: Component,
19605
- args: [{
19606
- changeDetection: ChangeDetectionStrategy.OnPush,
19607
- selector: 'kendo-pager-page-sizes',
19608
- template: `
19609
- <kendo-dropdownlist
19610
- class="k-dropdown"
19611
- #dropdownlist
19612
- [size]="size"
19613
- kendoGridPagerDropDown
19614
- [tabindex]="0"
19615
- kendoGridFocusable
19616
- [data]="pageSizes"
19617
- textField="text"
19618
- valueField="value"
19619
- [valuePrimitive]="true"
19620
- [value]="pageSize"
19621
- (valueChange)="pageSizeChange($event)"></kendo-dropdownlist>
19622
- <kendo-label [for]="dropdownlist" [text]="textFor('pagerItemsPerPage')"></kendo-label>
19623
- `,
19624
- standalone: true,
19625
- imports: [DropDownListComponent, PagerDropDownListDirective, FocusableDirective, LabelComponent]
19626
- }]
19627
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{
19628
- type: Input
19629
- }], classes: [{
19630
- type: HostBinding,
19631
- args: ['class.k-pager-sizes']
19632
- }, {
19633
- type: HostBinding,
19634
- args: ['class.k-label']
19635
- }] } });
19636
-
19637
- /**
19638
- * Displays numeric buttons to enable navigation between the pages ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
19639
- */
19640
- class PagerNumericButtonsComponent extends PagerElementComponent {
19641
- pagerContext;
19642
- selectElement;
19643
- numbersElement;
19644
- /**
19645
- * The count of the displayed buttons.
19646
- *
19647
- * @type {number}
19648
- * @memberOf PagerNumericButtonsComponent
19649
- */
19650
- buttonCount;
19651
- /**
19652
- * @hidden
19653
- *
19654
- * @readonly
19655
- * @type {number[]}
19656
- * @memberOf PagerNumericButtonsComponent
19657
- */
19658
- get buttons() {
19659
- const result = [];
19660
- for (let idx = this.start; idx <= this.end; idx++) {
19661
- result.push(idx);
19662
- }
19663
- return result;
19664
- }
19665
- /**
19666
- * @hidden
19667
- */
19668
- get end() {
19669
- return Math.min((this.start + this.buttonCount) - 1, this.totalPages);
19670
- }
19671
- /**
19672
- * @hidden
19673
- */
19674
- get start() {
19675
- const page = this.currentPage;
19676
- const buttonCount = this.buttonCount;
19677
- if (page > buttonCount) {
19678
- const reminder = (page % buttonCount);
19679
- return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;
19680
- }
19681
- return 1;
19682
- }
19683
- constructor(ctx, cd, pagerContext) {
19684
- super(ctx, pagerContext, cd);
19685
- this.pagerContext = pagerContext;
19686
- }
19687
- /**
19688
- * @hidden
19689
- */
19690
- pageLabel(num) {
19691
- const pageText = this.textFor('pagerPage');
19692
- if (pageText) {
19693
- return pageText + ' ' + num;
19694
- }
19695
- return num.toString();
19696
- }
19697
- /**
19698
- * @hidden
19699
- */
19700
- onSelectChange(e) {
19701
- const target = e.target;
19702
- const valueAsNumber = Number(target.value);
19703
- if (!Number.isNaN(valueAsNumber)) {
19704
- this.changePage(valueAsNumber - 1);
19705
- }
19706
- else {
19707
- if (target.value === 'previousButtons') {
19708
- this.changePage(this.start - 2);
19709
- }
19710
- else {
19711
- this.changePage(this.end);
19712
- }
19713
- }
19714
- }
19715
- onChanges({ total, skip, pageSize }) {
19716
- this.total = total;
19717
- this.skip = skip;
19718
- this.pageSize = pageSize;
19719
- this.cd.markForCheck();
19720
- }
19721
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
19722
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNumericButtonsComponent, isStandalone: true, 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: `
19723
- <select
19724
- #select
19725
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
19726
- kendoGridFocusable
19727
- [style.display]="'none'"
19728
- [attr.title]="textFor('selectPage')"
19729
- [attr.aria-label]="textFor('selectPage')"
19730
- [ngClass]="{
19731
- 'k-picker-sm': size === 'small',
19732
- 'k-picker-md': size === 'medium' || !size
19733
- }"
19734
- (change)="onSelectChange($event)">
19735
- <option *ngIf="start > 1"
19736
- value="previousButtons"
19737
- [selected]="false"
19738
- [attr.aria-label]="pageLabel(start - 1)">...
19739
- </option>
19740
- <option *ngFor="let num of buttons"
19741
- [value]="num.toString()"
19742
- [selected]="num === currentPage"
19743
- [attr.aria-label]="pageLabel(num)"
19744
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
19745
- [ngClass]="{'k-selected':currentPage === num}">
19746
- {{num}}
19747
- </option>
19748
- <option *ngIf="end < totalPages"
19749
- value="nextButtons"
19750
- [selected]="false"
19751
- [attr.aria-label]="pageLabel(end + 1)">...
19752
- </option>
19753
- </select>
19754
- <div class="k-pager-numbers" #numbers>
19755
- <button *ngIf="start > 1"
19756
- type="button"
19757
- kendoGridFocusable
19758
- kendoButton
19759
- [size]="size"
19760
- fillMode="flat"
19761
- themeColor="primary"
19762
- class="k-pager-nav"
19763
- rounded="none"
19764
- [attr.aria-label]="pageLabel(start - 1)"
19765
- [attr.title]="pageLabel(start - 1)"
19766
- (click)="changePage(start - 2)">...</button>
19767
- <button *ngFor="let num of buttons"
19768
- type="button"
19769
- kendoGridFocusable
19770
- kendoButton
19771
- [size]="size"
19772
- fillMode="flat"
19773
- themeColor="primary"
19774
- class="k-pager-nav"
19775
- rounded="none"
19776
- [attr.aria-label]="pageLabel(num)"
19777
- [attr.title]="pageLabel(num)"
19778
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
19779
- [selected]="currentPage === num"
19780
- (click)="changePage(num - 1)">
19781
- {{num}}
19782
- </button>
19783
- <button *ngIf="end < totalPages"
19784
- type="button"
19785
- kendoGridFocusable
19786
- kendoButton
19787
- class="k-pager-nav"
19788
- [size]="size"
19789
- fillMode="flat"
19790
- themeColor="primary"
19791
- rounded="none"
19792
- [attr.aria-label]="pageLabel(end + 1)"
19793
- [attr.title]="pageLabel(end + 1)"
19794
- (click)="changePage(end)">...</button>
19795
- </div>
19796
- `, isInline: true, dependencies: [{ kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19797
- }
19798
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
19799
- type: Component,
19800
- args: [{
19801
- changeDetection: ChangeDetectionStrategy.OnPush,
19802
- selector: 'kendo-pager-numeric-buttons',
19803
- template: `
19804
- <select
19805
- #select
19806
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
19807
- kendoGridFocusable
19808
- [style.display]="'none'"
19809
- [attr.title]="textFor('selectPage')"
19810
- [attr.aria-label]="textFor('selectPage')"
19811
- [ngClass]="{
19812
- 'k-picker-sm': size === 'small',
19813
- 'k-picker-md': size === 'medium' || !size
19814
- }"
19815
- (change)="onSelectChange($event)">
19816
- <option *ngIf="start > 1"
19817
- value="previousButtons"
19818
- [selected]="false"
19819
- [attr.aria-label]="pageLabel(start - 1)">...
19820
- </option>
19821
- <option *ngFor="let num of buttons"
19822
- [value]="num.toString()"
19823
- [selected]="num === currentPage"
19824
- [attr.aria-label]="pageLabel(num)"
19825
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
19826
- [ngClass]="{'k-selected':currentPage === num}">
19827
- {{num}}
19828
- </option>
19829
- <option *ngIf="end < totalPages"
19830
- value="nextButtons"
19831
- [selected]="false"
19832
- [attr.aria-label]="pageLabel(end + 1)">...
19833
- </option>
19834
- </select>
19835
- <div class="k-pager-numbers" #numbers>
19836
- <button *ngIf="start > 1"
19837
- type="button"
19838
- kendoGridFocusable
19839
- kendoButton
19840
- [size]="size"
19841
- fillMode="flat"
19842
- themeColor="primary"
19843
- class="k-pager-nav"
19844
- rounded="none"
19845
- [attr.aria-label]="pageLabel(start - 1)"
19846
- [attr.title]="pageLabel(start - 1)"
19847
- (click)="changePage(start - 2)">...</button>
19848
- <button *ngFor="let num of buttons"
19849
- type="button"
19850
- kendoGridFocusable
19851
- kendoButton
19852
- [size]="size"
19853
- fillMode="flat"
19854
- themeColor="primary"
19855
- class="k-pager-nav"
19856
- rounded="none"
19857
- [attr.aria-label]="pageLabel(num)"
19858
- [attr.title]="pageLabel(num)"
19859
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
19860
- [selected]="currentPage === num"
19861
- (click)="changePage(num - 1)">
19862
- {{num}}
19863
- </button>
19864
- <button *ngIf="end < totalPages"
19865
- type="button"
19866
- kendoGridFocusable
19867
- kendoButton
19868
- class="k-pager-nav"
19869
- [size]="size"
19870
- fillMode="flat"
19871
- themeColor="primary"
19872
- rounded="none"
19873
- [attr.aria-label]="pageLabel(end + 1)"
19874
- [attr.title]="pageLabel(end + 1)"
19875
- (click)="changePage(end)">...</button>
19876
- </div>
19877
- `,
19878
- standalone: true,
19879
- imports: [FocusableDirective, NgClass, NgIf, NgFor, ButtonComponent]
19880
- }]
19881
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { selectElement: [{
19882
- type: ViewChild,
19883
- args: ['select', { read: ElementRef }]
19884
- }], numbersElement: [{
19885
- type: ViewChild,
19886
- args: ['numbers', { read: ElementRef }]
19887
- }], buttonCount: [{
19888
- type: Input
19889
- }] } });
19890
-
19891
- /**
19892
- * Displays buttons for navigating to the next and to the last page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
19893
- */
19894
- class PagerNextButtonsComponent extends PagerElementComponent {
19895
- navigationService;
19896
- /**
19897
- * @hidden
19898
- *
19899
- * @readonly
19900
- * @type {boolean}
19901
- * @memberOf PagerNextButtonsComponent
19902
- */
19903
- get disabled() {
19904
- return this.currentPage === this.totalPages || !this.total;
19905
- }
19906
- constructor(ctx, pagerContext, cd, navigationService) {
19907
- super(ctx, pagerContext, cd);
19908
- this.navigationService = navigationService;
19909
- }
19910
- onChanges({ total, skip, pageSize }) {
19911
- this.total = total;
19912
- this.skip = skip;
19913
- this.pageSize = pageSize;
19914
- this.cd.markForCheck();
19915
- }
19916
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
19917
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNextButtonsComponent, isStandalone: true, selector: "kendo-pager-next-buttons", usesInheritance: true, ngImport: i0, template: `
19918
- <button
19919
- kendoButton
19920
- [kendoGridFocusable]="!disabled"
19921
- type="button"
19922
- [size]="size"
19923
- [icon]="nextArrowIcons[0]"
19924
- [svgIcon]="nextArrowSVGIcons[0]"
19925
- fillMode="flat"
19926
- rounded="none"
19927
- class="k-pager-nav"
19928
- [disabled]="disabled"
19929
- [title]="textFor('pagerNextPage')"
19930
- [attr.aria-label]="textFor('pagerNextPage')"
19931
- (click)="currentPage !== totalPages ? changePage(currentPage) : false">
19932
- </button>
19933
- <button
19934
- kendoButton
19935
- [kendoGridFocusable]="!disabled"
19936
- type="button"
19937
- [size]="size"
19938
- [icon]="nextArrowIcons[1]"
19939
- [svgIcon]="nextArrowSVGIcons[1]"
19940
- fillMode="flat"
19941
- rounded="none"
19942
- class="k-pager-nav k-pager-last"
19943
- [disabled]="disabled"
19944
- [title]="textFor('pagerLastPage')"
19945
- [attr.aria-label]="textFor('pagerLastPage')"
19946
- (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
19947
- </button>
19948
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19949
- }
19950
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
19951
- type: Component,
19952
- args: [{
19953
- changeDetection: ChangeDetectionStrategy.OnPush,
19954
- selector: 'kendo-pager-next-buttons',
19955
- template: `
19956
- <button
19957
- kendoButton
19958
- [kendoGridFocusable]="!disabled"
19959
- type="button"
19960
- [size]="size"
19961
- [icon]="nextArrowIcons[0]"
19962
- [svgIcon]="nextArrowSVGIcons[0]"
19963
- fillMode="flat"
19964
- rounded="none"
19965
- class="k-pager-nav"
19966
- [disabled]="disabled"
19967
- [title]="textFor('pagerNextPage')"
19968
- [attr.aria-label]="textFor('pagerNextPage')"
19969
- (click)="currentPage !== totalPages ? changePage(currentPage) : false">
19970
- </button>
19971
- <button
19972
- kendoButton
19973
- [kendoGridFocusable]="!disabled"
19974
- type="button"
19975
- [size]="size"
19976
- [icon]="nextArrowIcons[1]"
19977
- [svgIcon]="nextArrowSVGIcons[1]"
19978
- fillMode="flat"
19979
- rounded="none"
19980
- class="k-pager-nav k-pager-last"
19981
- [disabled]="disabled"
19982
- [title]="textFor('pagerLastPage')"
19983
- [attr.aria-label]="textFor('pagerLastPage')"
19984
- (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
19985
- </button>
19986
- `,
19987
- standalone: true,
19988
- imports: [ButtonComponent, FocusableDirective]
19989
- }]
19990
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
19991
-
19992
- /**
19993
- * @hidden
19994
- */
19995
- class PagerInputDirective {
19996
- host;
19997
- renderer;
19998
- constructor(host, renderer) {
19999
- this.host = host;
20000
- this.renderer = renderer;
20001
- }
20002
- ngAfterViewInit() {
20003
- const inputElement = this.host.numericInput.nativeElement;
20004
- this.renderer.addClass(inputElement, 'k-pager-nav');
20005
- }
20006
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputDirective, deps: [{ token: i1$5.NumericTextBoxComponent }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
20007
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerInputDirective, isStandalone: true, selector: "[kendoGridPagerInput]", ngImport: i0 });
20008
- }
20009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputDirective, decorators: [{
20010
- type: Directive,
20011
- args: [{
20012
- selector: '[kendoGridPagerInput]',
20013
- standalone: true
20014
- }]
20015
- }], ctorParameters: function () { return [{ type: i1$5.NumericTextBoxComponent }, { type: i0.Renderer2 }]; } });
20016
-
20017
- /**
20018
- * Displays an input element which allows the typing and rendering of page numbers ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
20019
- */
20020
- class PagerInputComponent extends PagerElementComponent {
20021
- pagerContext;
20022
- zone;
20023
- navigationService;
20024
- numericInput;
20025
- constructor(ctx, pagerContext, zone, navigationService, cd) {
20026
- super(ctx, pagerContext, cd);
20027
- this.pagerContext = pagerContext;
20028
- this.zone = zone;
20029
- this.navigationService = navigationService;
20030
- }
20031
- /**
20032
- * @hidden
20033
- *
20034
- * @param {string} value
20035
- *
20036
- * @memberOf PagerInputComponent
20037
- */
20038
- handleKeyDown = (event) => {
20039
- const incomingValue = this.numericInput.value || this.current;
20040
- if (event.keyCode === Keys.Enter) {
20041
- event.preventDefault();
20042
- if (incomingValue !== this.current) {
20043
- this.zone.run(() => {
20044
- this.changePage(incomingValue - 1);
20045
- });
20046
- }
20047
- }
20048
- };
20049
- /**
20050
- * @hidden
20051
- *
20052
- * @param {string} value
20053
- *
20054
- * @memberOf PagerInputComponent
20055
- */
20056
- handleBlur = () => {
20057
- const inputValue = this.numericInput.value;
20058
- if (!inputValue) {
20059
- this.numericInput.writeValue(this.current);
20060
- return;
20061
- }
20062
- if (inputValue !== this.current) {
20063
- this.zone.run(() => {
20064
- this.changePage(inputValue - 1);
20065
- });
20066
- }
20067
- };
20068
- /**
20069
- * @hidden
20070
- */
20071
- get current() {
20072
- return this.hasPages ? this.currentPage : 0;
20073
- }
20074
- get hasPages() {
20075
- return this.totalPages !== 0;
20076
- }
20077
- onChanges({ total, skip, pageSize }) {
20078
- this.total = total;
20079
- this.skip = skip;
20080
- this.pageSize = pageSize;
20081
- this.cd.markForCheck();
20082
- }
20083
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.NgZone }, { token: NavigationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
20084
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInputComponent, isStandalone: true, selector: "kendo-pager-input", viewQueries: [{ propertyName: "numericInput", first: true, predicate: NumericTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
20085
- <span class="k-pager-input k-label">
20086
- {{textFor('pagerPage')}}
20087
- <kendo-numerictextbox
20088
- kendoGridPagerInput
20089
- [kendoGridFocusable]="hasPages"
20090
- [spinners]="false"
20091
- [decimals]="0"
20092
- format="n0"
20093
- [disabled]="!hasPages"
20094
- [value]="current"
20095
- [min]="hasPages ? 1 : 0"
20096
- [max]="totalPages"
20097
- [size]="size"
20098
- [autoCorrect]="true"
20099
- [title]="textFor('pagerPageNumberInputTitle')"
20100
- [kendoEventsOutsideAngular]="{
20101
- keydown: handleKeyDown,
20102
- focusout: handleBlur
20103
- }"
20104
- >
20105
- </kendo-numerictextbox>
20106
- {{textFor('pagerOf')}} {{totalPages}}
20107
- </span>
20108
- `, isInline: true, dependencies: [{ kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: PagerInputDirective, selector: "[kendoGridPagerInput]" }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
20109
- }
20110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, decorators: [{
20111
- type: Component,
20112
- args: [{
20113
- selector: 'kendo-pager-input',
20114
- template: `
20115
- <span class="k-pager-input k-label">
20116
- {{textFor('pagerPage')}}
20117
- <kendo-numerictextbox
20118
- kendoGridPagerInput
20119
- [kendoGridFocusable]="hasPages"
20120
- [spinners]="false"
20121
- [decimals]="0"
20122
- format="n0"
20123
- [disabled]="!hasPages"
20124
- [value]="current"
20125
- [min]="hasPages ? 1 : 0"
20126
- [max]="totalPages"
20127
- [size]="size"
20128
- [autoCorrect]="true"
20129
- [title]="textFor('pagerPageNumberInputTitle')"
20130
- [kendoEventsOutsideAngular]="{
20131
- keydown: handleKeyDown,
20132
- focusout: handleBlur
20133
- }"
20134
- >
20135
- </kendo-numerictextbox>
20136
- {{textFor('pagerOf')}} {{totalPages}}
20137
- </span>
20138
- `,
20139
- standalone: true,
20140
- imports: [NumericTextBoxComponent, PagerInputDirective, FocusableDirective, EventsOutsideAngularDirective]
20141
- }]
20142
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.NgZone }, { type: NavigationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { numericInput: [{
20143
- type: ViewChild,
20144
- args: [NumericTextBoxComponent, { static: false }]
20145
- }] } });
20146
-
20147
- /**
20148
- * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).
20149
- */
20150
- class PagerPrevButtonsComponent extends PagerElementComponent {
20151
- navigationService;
20152
- constructor(ctx, pagerContext, cd, navigationService) {
20153
- super(ctx, pagerContext, cd);
20154
- this.navigationService = navigationService;
20155
- }
20156
- /**
20157
- * @hidden
20158
- *
20159
- * @readonly
20160
- * @type {boolean}
20161
- * @memberOf PagerPrevButtonsComponent
20162
- */
20163
- get disabled() {
20164
- return this.currentPage === 1 || !this.total;
20165
- }
20166
- onChanges({ total, skip, pageSize }) {
20167
- this.total = total;
20168
- this.skip = skip;
20169
- this.pageSize = pageSize;
20170
- this.cd.markForCheck();
20171
- }
20172
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: ContextService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
20173
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPrevButtonsComponent, isStandalone: true, selector: "kendo-pager-prev-buttons", usesInheritance: true, ngImport: i0, template: `
20174
- <button
20175
- [kendoGridFocusable]="!disabled"
20176
- kendoButton
20177
- type="button"
20178
- [title]="textFor('pagerFirstPage')"
20179
- [attr.aria-label]="textFor('pagerFirstPage')"
20180
- (click)="currentPage !== 1 ? changePage(0) : false"
20181
- role="button"
20182
- [icon]="prevArrowIcons[0]"
20183
- [svgIcon]="prevArrowSVGIcons[0]"
20184
- class="k-pager-nav k-pager-first"
20185
- [disabled]="disabled"
20186
- fillMode="flat"
20187
- rounded="none"
20188
- [size]="size">
20189
- </button>
20190
- <button
20191
- kendoButton
20192
- [kendoGridFocusable]="!disabled"
20193
- type="button"
20194
- class="k-pager-nav"
20195
- [disabled]="disabled"
20196
- [icon]="prevArrowIcons[1]"
20197
- [svgIcon]="prevArrowSVGIcons[1]"
20198
- fillMode="flat"
20199
- rounded="none"
20200
- [size]="size"
20201
- [title]="textFor('pagerPreviousPage')"
20202
- [attr.aria-label]="textFor('pagerPreviousPage')"
20203
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
20204
- </button>
20205
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20206
- }
20207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
20208
- type: Component,
20209
- args: [{
20210
- changeDetection: ChangeDetectionStrategy.OnPush,
20211
- selector: 'kendo-pager-prev-buttons',
20212
- template: `
20213
- <button
20214
- [kendoGridFocusable]="!disabled"
20215
- kendoButton
20216
- type="button"
20217
- [title]="textFor('pagerFirstPage')"
20218
- [attr.aria-label]="textFor('pagerFirstPage')"
20219
- (click)="currentPage !== 1 ? changePage(0) : false"
20220
- role="button"
20221
- [icon]="prevArrowIcons[0]"
20222
- [svgIcon]="prevArrowSVGIcons[0]"
20223
- class="k-pager-nav k-pager-first"
20224
- [disabled]="disabled"
20225
- fillMode="flat"
20226
- rounded="none"
20227
- [size]="size">
20228
- </button>
20229
- <button
20230
- kendoButton
20231
- [kendoGridFocusable]="!disabled"
20232
- type="button"
20233
- class="k-pager-nav"
20234
- [disabled]="disabled"
20235
- [icon]="prevArrowIcons[1]"
20236
- [svgIcon]="prevArrowSVGIcons[1]"
20237
- fillMode="flat"
20238
- rounded="none"
20239
- [size]="size"
20240
- [title]="textFor('pagerPreviousPage')"
20241
- [attr.aria-label]="textFor('pagerPreviousPage')"
20242
- (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
20243
- </button>
20244
- `,
20245
- standalone: true,
20246
- imports: [ButtonComponent, FocusableDirective]
20247
- }]
20248
- }], ctorParameters: function () { return [{ type: ContextService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });
20249
-
20250
- /**
20251
- * @hidden
20252
- */
20253
- class PagerComponent {
20254
- pagerContext;
20255
- navigationService;
20256
- element;
20257
- renderer;
20258
- zone;
20259
- ctx;
20260
- cellContext;
20261
- focusRoot;
20262
- focusGroup;
20263
- pagerInfo;
20264
- pagerPageSizes;
20265
- numericButtons;
20266
- total = 0;
20267
- skip = 1;
20268
- pageSize;
20269
- set options(value) {
20270
- this.settings = normalize(value);
20271
- }
20272
- set size(size) {
20273
- this._size = size;
20274
- if (size === 'none') {
20275
- this.element.nativeElement.classList.remove('k-pager-sm', 'k-pager-md');
20276
- }
20277
- }
20278
- get size() {
20279
- return this._size;
20280
- }
20281
- template;
20282
- pageChange = new EventEmitter();
20283
- gridPagerClass = true;
20284
- get sizeSmallClass() {
20285
- return this.size === 'small';
20286
- }
20287
- get sizeMediumClass() {
20288
- return this.size === 'medium' || !this.size;
20289
- }
20290
- settings = normalize({});
20291
- subscriptions = new Subscription();
20292
- _templateContext = {};
20293
- _isFocused = false;
20294
- _size = 'medium';
20295
- get isFocused() {
20296
- return this._isFocused;
20297
- }
20298
- get pagerAriaLabel() {
20299
- return this.navigationService.pagerEnabled ? this.pagerLabel : undefined;
20300
- }
20301
- get pagerLabel() {
20302
- const localizationMsg = this.ctx.localization.get('pagerLabel') || '';
20303
- return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
20304
- }
20305
- get focusTrapTabIndex() {
20306
- return this.focusGroup.isActive ? '0' : '-1';
20307
- }
20308
- onFocusIn(event) {
20309
- if (this.navigationService.pagerEnabled) {
20310
- const shouldFocusPager = event.target === this.element.nativeElement;
20311
- if (shouldFocusPager) {
20312
- this._isFocused = true;
20313
- this.focusRoot.deactivate();
20314
- }
20315
- else {
20316
- this.focusRoot.activate();
20317
- }
20318
- }
20319
- }
20320
- onFocusOut() {
20321
- if (this.navigationService.pagerEnabled) {
20322
- this._isFocused = false;
20323
- }
20324
- }
20325
- onEscape() {
20326
- if (this.navigationService.pagerEnabled) {
20327
- this.focusRoot.deactivate();
20328
- this.element.nativeElement.focus();
20329
- }
20330
- }
20331
- onEnter(event) {
20332
- if (this.navigationService.pagerEnabled && event.target === this.element.nativeElement) {
20333
- event.preventDefault();
20334
- this.focusRoot.activate();
20335
- this.focusFirstElement();
20336
- }
20337
- }
20338
- navigateToPreviousPage(e) {
20339
- e.preventDefault();
20340
- if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {
20341
- this.pagerContext.prevPage();
20342
- }
20343
- }
20344
- navigateToNextPage(e) {
20345
- e.preventDefault();
20346
- if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {
20347
- this.pagerContext.nextPage();
20348
- }
20349
- }
20350
- navigateToFirstPage(e) {
20351
- e.preventDefault();
20352
- if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {
20353
- this.pagerContext.changePage(0);
20354
- }
20355
- }
20356
- navigateToLastPage(e) {
20357
- e.preventDefault();
20358
- if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {
20359
- this.pagerContext.changePage(this.totalPages - 1);
20360
- }
20361
- }
20362
- get totalPages() {
20363
- return Math.ceil((this.total || 0) / this.pageSize);
20364
- }
20365
- get currentPage() {
20366
- return Math.floor((this.skip || 0) / this.pageSize) + 1;
20367
- }
20368
- get templateContext() {
20369
- const context = this._templateContext;
20370
- context.totalPages = this.totalPages;
20371
- context.total = this.total;
20372
- context.skip = this.skip;
20373
- context.pageSize = this.pageSize;
20374
- context.currentPage = this.currentPage;
20375
- return context;
20376
- }
20377
- constructor(pagerContext, navigationService, element, renderer, zone, ctx, cellContext, focusRoot, focusGroup) {
20378
- this.pagerContext = pagerContext;
20379
- this.navigationService = navigationService;
20380
- this.element = element;
20381
- this.renderer = renderer;
20382
- this.zone = zone;
20383
- this.ctx = ctx;
20384
- this.cellContext = cellContext;
20385
- this.focusRoot = focusRoot;
20386
- this.focusGroup = focusGroup;
20387
- }
20388
- ngOnInit() {
20389
- this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
20390
- if (this.navigationService.pagerEnabled) {
20391
- this.focusRoot.deactivate();
20392
- }
20393
- }
20394
- ngDoCheck() {
20395
- this.updateCellContext();
20396
- }
20397
- ngOnChanges(changes) {
20398
- if (anyChanged(['pageSize', 'skip', 'total'], changes, false)) {
20399
- this.pagerContext.notifyChanges({
20400
- pageSize: this.pageSize,
20401
- skip: this.skip,
20402
- total: this.total
20403
- });
20404
- }
20405
- const changesInTemplate = changes['template'];
20406
- if (changesInTemplate) {
20407
- changesInTemplate.currentValue ? this.clearResponsiveStyling() : this.resizeHandler();
20408
- }
20409
- if (changes['options']) {
20410
- this.settings.responsive ? this.resizeHandler() : this.clearResponsiveStyling();
20411
- }
20412
- }
20413
- ngOnDestroy() {
20414
- if (this.subscriptions) {
20415
- this.subscriptions.unsubscribe();
20416
- }
20417
- }
20418
- changePage(event) {
20419
- this.pageChange.emit(event);
20420
- }
20421
- resizeHandler = () => {
20422
- const element = this.element.nativeElement;
20423
- if (this.template || !element) {
20424
- return;
20425
- }
20426
- this.zone.runOutsideAngular(() => {
20427
- setTimeout(() => {
20428
- const width = element.offsetWidth;
20429
- if (this.numericButtons) {
20430
- const selectElement = this.numericButtons.selectElement.nativeElement;
20431
- const numbersElement = this.numericButtons.numbersElement.nativeElement;
20432
- this.renderer.removeStyle(numbersElement, 'display');
20433
- this.renderer.setStyle(selectElement, 'display', 'none');
20434
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
20435
- this.renderer.removeStyle(selectElement, 'display');
20436
- this.renderer.setStyle(numbersElement, 'display', 'none');
20437
- }
20438
- }
20439
- if (this.pagerInfo) {
20440
- this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
20441
- if (width < RESPONSIVE_BREAKPOINT_LARGE) {
20442
- this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
20443
- }
20444
- }
20445
- if (this.pagerPageSizes) {
20446
- this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
20447
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
20448
- this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
20449
- }
20450
- }
20451
- });
20452
- });
20453
- };
20454
- onInnerFocusIn(event, position) {
20455
- this.zone.onStable.pipe(take(1)).subscribe(() => {
20456
- if (position === 'start') {
20457
- if (event.relatedTarget === this.element.nativeElement) {
20458
- this.focusFirstElement();
20459
- }
20460
- else {
20461
- this.focusLastElement();
20462
- }
20463
- }
20464
- else {
20465
- this.focusFirstElement();
20466
- }
20467
- });
20468
- }
20469
- shouldTriggerPageChange(target, condition) {
20470
- return this.navigationService.pagerEnabled &&
20471
- target === this.element.nativeElement &&
20472
- condition;
20473
- }
20474
- focusFirstElement() {
20475
- const first = findFocusableChild(this.element.nativeElement, true);
20476
- if (first) {
20477
- first.focus();
20478
- }
20479
- }
20480
- focusLastElement() {
20481
- const last = findLastFocusableChild(this.element.nativeElement, true);
20482
- if (last) {
20483
- last.focus();
20484
- }
20485
- }
20486
- updateCellContext() {
20487
- if (this.cellContext) {
20488
- this.cellContext.focusGroup = this.focusGroup;
20489
- }
20490
- }
20491
- clearResponsiveStyling() {
20492
- this.zone.runOutsideAngular(() => {
20493
- setTimeout(() => {
20494
- if (this.numericButtons) {
20495
- this.renderer.removeStyle(this.numericButtons.numbersElement.nativeElement, 'display');
20496
- this.renderer.setStyle(this.numericButtons.selectElement.nativeElement, 'display', 'none');
20497
- }
20498
- this.pagerInfo && this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
20499
- this.pagerPageSizes && this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
20500
- });
20501
- });
20502
- }
20503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.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 });
20504
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerComponent, isStandalone: true, 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-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: [{
20505
- provide: FOCUS_ROOT_ACTIVE,
20506
- useValue: true
20507
- }, {
20508
- provide: FocusRoot,
20509
- deps: [FOCUS_ROOT_ACTIVE],
20510
- useClass: FocusRoot
20511
- }, {
20512
- provide: FocusGroup,
20513
- deps: [FocusRoot],
20514
- useClass: FocusGroup
20515
- }], 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: `
20516
- <div
20517
- *ngIf="navigationService.pagerEnabled"
20518
- class="k-sr-only"
20519
- [tabindex]="focusTrapTabIndex"
20520
- [attr.aria-hidden]="true"
20521
- (focusin)="onInnerFocusIn($event, 'start')">
20522
- </div>
20523
- <ng-container
20524
- *ngIf="template?.templateRef"
20525
- [ngTemplateOutlet]="template.templateRef"
20526
- [ngTemplateOutletContext]="templateContext">
20527
- </ng-container>
20528
- <ng-container *ngIf="!template?.templateRef">
20529
- <div class="k-pager-numbers-wrap">
20530
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
20531
- <kendo-pager-numeric-buttons
20532
- [size]="size"
20533
- *ngIf="settings.type === 'numeric'"
20534
- [buttonCount]="settings.buttonCount">
20535
- </kendo-pager-numeric-buttons>
20536
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
20537
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
20538
- </div>
20539
- <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
20540
- <kendo-pager-page-sizes
20541
- [size]="size"
20542
- *ngIf="settings.pageSizes"
20543
- [pageSizes]="$any(settings.pageSizes)"
20544
- ></kendo-pager-page-sizes>
20545
- </ng-container>
20546
- <div
20547
- *ngIf="navigationService.pagerEnabled"
20548
- class="k-sr-only"
20549
- [tabindex]="focusTrapTabIndex"
20550
- [attr.aria-hidden]="true"
20551
- (focusin)="onInnerFocusIn($event, 'end')">
20552
- </div>
20553
- <kendo-resize-sensor *ngIf="settings.responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
20554
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-pager-input" }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { kind: "component", type: PagerInfoComponent, selector: "kendo-pager-info" }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-pager-page-sizes", inputs: ["pageSizes"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
20555
- }
20556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
20557
- type: Component,
20558
- args: [{
20559
- selector: 'kendo-pager',
20560
- providers: [{
20561
- provide: FOCUS_ROOT_ACTIVE,
20562
- useValue: true
20563
- }, {
20564
- provide: FocusRoot,
20565
- deps: [FOCUS_ROOT_ACTIVE],
20566
- useClass: FocusRoot
20567
- }, {
20568
- provide: FocusGroup,
20569
- deps: [FocusRoot],
20570
- useClass: FocusGroup
20571
- }],
20572
- template: `
20573
- <div
20574
- *ngIf="navigationService.pagerEnabled"
20575
- class="k-sr-only"
20576
- [tabindex]="focusTrapTabIndex"
20577
- [attr.aria-hidden]="true"
20578
- (focusin)="onInnerFocusIn($event, 'start')">
20579
- </div>
20580
- <ng-container
20581
- *ngIf="template?.templateRef"
20582
- [ngTemplateOutlet]="template.templateRef"
20583
- [ngTemplateOutletContext]="templateContext">
20584
- </ng-container>
20585
- <ng-container *ngIf="!template?.templateRef">
20586
- <div class="k-pager-numbers-wrap">
20587
- <kendo-pager-prev-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-prev-buttons>
20588
- <kendo-pager-numeric-buttons
20589
- [size]="size"
20590
- *ngIf="settings.type === 'numeric'"
20591
- [buttonCount]="settings.buttonCount">
20592
- </kendo-pager-numeric-buttons>
20593
- <kendo-pager-input [size]="size" *ngIf="settings.type === 'input'"></kendo-pager-input>
20594
- <kendo-pager-next-buttons [size]="size" *ngIf="settings.previousNext"></kendo-pager-next-buttons>
20595
- </div>
20596
- <kendo-pager-info *ngIf='settings.info'></kendo-pager-info>
20597
- <kendo-pager-page-sizes
20598
- [size]="size"
20599
- *ngIf="settings.pageSizes"
20600
- [pageSizes]="$any(settings.pageSizes)"
20601
- ></kendo-pager-page-sizes>
20602
- </ng-container>
20603
- <div
20604
- *ngIf="navigationService.pagerEnabled"
20605
- class="k-sr-only"
20606
- [tabindex]="focusTrapTabIndex"
20607
- [attr.aria-hidden]="true"
20608
- (focusin)="onInnerFocusIn($event, 'end')">
20609
- </div>
20610
- <kendo-resize-sensor *ngIf="settings.responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
20611
- `,
20612
- standalone: true,
20613
- imports: [NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerInfoComponent, PagerPageSizesComponent, ResizeSensorComponent]
20614
- }]
20615
- }], ctorParameters: function () { return [{ type: PagerContextService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: ContextService }, { type: undefined, decorators: [{
20616
- type: Optional
20617
- }, {
20618
- type: Inject,
20619
- args: [CELL_CONTEXT]
20620
- }] }, { type: FocusRoot }, { type: FocusGroup }]; }, propDecorators: { pagerInfo: [{
20621
- type: ViewChild,
20622
- args: [PagerInfoComponent, { read: ElementRef }]
20623
- }], pagerPageSizes: [{
20624
- type: ViewChild,
20625
- args: [PagerPageSizesComponent, { read: ElementRef }]
20626
- }], numericButtons: [{
20627
- type: ViewChild,
20628
- args: [PagerNumericButtonsComponent]
20629
- }], total: [{
20630
- type: Input
20631
- }], skip: [{
20632
- type: Input
20633
- }], pageSize: [{
20634
- type: Input
20635
- }], options: [{
20636
- type: Input
20637
- }], size: [{
20638
- type: Input
20639
- }], template: [{
20640
- type: Input
20641
- }], pageChange: [{
20642
- type: Output
20643
- }], gridPagerClass: [{
20644
- type: HostBinding,
20645
- args: ['class.k-grid-pager']
20646
- }], sizeSmallClass: [{
20647
- type: HostBinding,
20648
- args: ['class.k-pager-sm']
20649
- }], sizeMediumClass: [{
20650
- type: HostBinding,
20651
- args: ['class.k-pager-md']
20652
- }], isFocused: [{
20653
- type: HostBinding,
20654
- args: ['class.k-focus']
20655
- }], pagerAriaLabel: [{
20656
- type: HostBinding,
20657
- args: ['attr.aria-label']
20658
- }], onFocusIn: [{
20659
- type: HostListener,
20660
- args: ['focusin', ['$event']]
20661
- }], onFocusOut: [{
20662
- type: HostListener,
20663
- args: ['focusout']
20664
- }], onEscape: [{
20665
- type: HostListener,
20666
- args: ['keydown.escape']
20667
- }], onEnter: [{
20668
- type: HostListener,
20669
- args: ['keydown.enter', ['$event']]
20670
- }], navigateToPreviousPage: [{
20671
- type: HostListener,
20672
- args: ['keydown.arrowleft', ['$event']]
20673
- }, {
20674
- type: HostListener,
20675
- args: ['keydown.pageup', ['$event']]
20676
- }], navigateToNextPage: [{
20677
- type: HostListener,
20678
- args: ['keydown.arrowright', ['$event']]
20679
- }, {
20680
- type: HostListener,
20681
- args: ['keydown.pagedown', ['$event']]
20682
- }], navigateToFirstPage: [{
20683
- type: HostListener,
20684
- args: ['keydown.home', ['$event']]
20685
- }], navigateToLastPage: [{
20686
- type: HostListener,
20687
- args: ['keydown.end', ['$event']]
20688
- }] } });
20689
-
20690
- /**
20691
- * @hidden
20692
- */
20693
- class ZoneAwareEventEmitter extends EventEmitter {
20694
- ngZone;
20695
- constructor(ngZone, isAsync = false) {
20696
- super(isAsync);
20697
- this.ngZone = ngZone;
20698
- }
20699
- subscribe(generatorOrNext, error, complete) {
20700
- let schedulerFn;
20701
- let errorFn = (_) => null;
20702
- let completeFn = () => null;
20703
- if (generatorOrNext && typeof generatorOrNext === 'object') {
20704
- schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext.next(value)); };
20705
- if (generatorOrNext.error) {
20706
- errorFn = (err) => { this.ngZone.run(() => generatorOrNext.error(err)); };
20707
- }
20708
- if (generatorOrNext.complete) {
20709
- completeFn = () => { this.ngZone.run(() => generatorOrNext.complete()); };
20710
- }
20711
- }
20712
- else {
20713
- schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext(value)); };
20714
- if (error) {
20715
- errorFn = (err) => { this.ngZone.run(() => error(err)); };
20716
- }
20717
- if (complete) {
20718
- completeFn = () => { this.ngZone.run(() => complete()); };
20719
- }
20720
- }
20721
- return super.subscribe(schedulerFn, errorFn, completeFn);
20722
- }
20723
- }
20724
-
20725
- /**
20726
- * @hidden
20727
- */
20728
- const packageMetadata = {
20729
- name: '@progress/kendo-angular-grid',
20730
- productName: 'Kendo UI for Angular',
20731
- productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
20732
- publishDate: 1730710037,
20733
- version: '17.0.0-develop.33',
20734
- licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
20735
- };
20736
-
20737
- const canCreateElement = () => isDocumentAvailable() && document.createElement;
20738
- let cachedScrollbarWidth = null;
20739
- let cachedPixelRatio;
20740
- let cachedRtlScrollLeft = null;
20741
- function scrollbarWidth() {
20742
- if (cachedScrollbarWidth === null && canCreateElement()) {
20743
- cachedPixelRatio = window.devicePixelRatio || 1;
20744
- const div = document.createElement("div");
20745
- div.style.cssText = "overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block";
20746
- div.innerHTML = "&nbsp;";
20747
- document.body.appendChild(div);
20748
- cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;
20749
- document.body.removeChild(div);
20750
- }
20751
- return cachedScrollbarWidth;
20752
- }
20753
- function rtlScrollLeft() {
20754
- if (cachedRtlScrollLeft === null && canCreateElement()) {
20755
- const outer = document.createElement('div');
20756
- outer.style.direction = 'rtl';
20757
- outer.style.display = 'block';
20758
- outer.style.clear = 'both';
20759
- outer.style.width = '100px';
20760
- outer.style.visibility = 'hidden';
20761
- outer.style.position = 'absolute';
20762
- outer.style.left = '-10000px';
20763
- outer.style.overflow = 'scroll';
20764
- outer.style.zoom = '1';
20765
- const inner = document.createElement('div');
20766
- inner.style.width = '200px';
20767
- inner.style.height = '1px';
20768
- outer.append(inner);
20769
- document.body.appendChild(outer);
20770
- const initial = outer.scrollLeft;
20771
- outer.scrollLeft = -1;
20772
- cachedRtlScrollLeft = outer.scrollLeft < 0 ? outer.scrollLeft : initial;
20773
- document.body.removeChild(outer);
20774
- }
20775
- return cachedRtlScrollLeft;
20776
- }
20777
- /**
20778
- * @hidden
20779
- * move to kendo-common
20780
- */
20781
- class BrowserSupportService {
20782
- zone;
20783
- changeDetector;
20784
- changes = new EventEmitter();
20785
- subscriptions;
20786
- constructor(zone, changeDetector) {
20787
- this.zone = zone;
20788
- this.changeDetector = changeDetector;
20789
- if (typeof window === 'undefined') {
20790
- return;
20791
- }
20792
- this.zone.runOutsideAngular(() => {
20793
- this.subscriptions = fromEvent(window, 'resize').pipe(auditTime(100)).subscribe(() => {
20794
- if (cachedPixelRatio !== window.devicePixelRatio) {
20795
- zone.run(() => {
20796
- cachedScrollbarWidth = null;
20797
- this.changes.emit();
20798
- this.changeDetector.markForCheck();
20799
- });
20800
- }
20801
- });
20802
- });
20803
- }
20804
- ngOnDestroy() {
20805
- if (this.subscriptions) {
20806
- this.subscriptions.unsubscribe();
20807
- this.subscriptions = null;
20808
- }
20809
- }
20810
- get scrollbarWidth() {
20811
- return scrollbarWidth();
20812
- }
20813
- get rtlScrollLeft() {
20814
- return rtlScrollLeft();
20815
- }
20816
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
20817
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService });
20818
- }
20819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BrowserSupportService, decorators: [{
20820
- type: Injectable
20821
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });
20822
-
20823
- const isGroupItem = (source) => {
20824
- return source.items !== undefined &&
20825
- source.field !== undefined;
20826
- };
20827
- const isVirtualGroupItem = (source) => {
20828
- return source.offset !== undefined &&
20829
- source.skipHeader !== undefined;
20830
- };
20831
- const flattenGroups = (groups) => (groups.reduce((acc, curr) => {
20832
- if (isGroupItem(curr)) {
20833
- return acc.concat(flattenGroups(curr.items));
20834
- }
20835
- return acc.concat([curr]);
20836
- }, []));
20837
- /**
20838
- * @hidden
20839
- */
20840
- const itemAt = (data, index) => {
20841
- const first = data[0];
20842
- if (isPresent(first) && isGroupItem(first)) {
20843
- return flattenGroups(data)[index];
19356
+ const itemAt = (data, index) => {
19357
+ const first = data[0];
19358
+ if (isPresent(first) && isGroupItem(first)) {
19359
+ return flattenGroups(data)[index];
20844
19360
  }
20845
19361
  return data[index];
20846
19362
  };
@@ -21595,6 +20111,19 @@ class ColumnLockedChangeEvent {
21595
20111
  }
21596
20112
  }
21597
20113
 
20114
+ /**
20115
+ * @hidden
20116
+ */
20117
+ const GROUP_CELL_WIDTH = 32; // this should be the value of group-cell inside the theme!
20118
+ /**
20119
+ * @hidden
20120
+ */
20121
+ const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
20122
+ /**
20123
+ * @hidden
20124
+ */
20125
+ const RESPONSIVE_BREAKPOINT_LARGE = 768;
20126
+
21598
20127
  /**
21599
20128
  * Arguments for the `columnStickyChange` event.
21600
20129
  */
@@ -23804,29 +22333,33 @@ class GridMessages extends ComponentMessages {
23804
22333
  */
23805
22334
  pagerNextPage;
23806
22335
  /**
23807
- * The label displayed before the pager input.
22336
+ * The text displayed before the pager input.
23808
22337
  */
23809
22338
  pagerPage;
23810
22339
  /**
23811
- * The label displayed after the page-size selector.
22340
+ * The text displayed after the page-size selector.
23812
22341
  */
23813
22342
  pagerItemsPerPage;
23814
22343
  /**
23815
- * The label before the total-page number.
22344
+ * The text displayed before the total-page number.
23816
22345
  */
23817
22346
  pagerOf;
23818
22347
  /**
23819
- * The label after the total-page number.
22348
+ * The text displayed after the total number of items.
23820
22349
  */
23821
22350
  pagerItems;
23822
22351
  /**
23823
22352
  * The title attribute of the page number input element.
23824
22353
  */
23825
22354
  pagerPageNumberInputTitle;
22355
+ /**
22356
+ * The text of the aria-label attribute applied to the page number input element.
22357
+ */
22358
+ pagerInputLabel;
23826
22359
  /**
23827
22360
  * The text of the title and `aria-label` attributes applied to the page chooser in the Grid Pager.
23828
22361
  */
23829
- selectPage;
22362
+ pagerSelectPage;
23830
22363
  /**
23831
22364
  * The label of the filter cell or icon.
23832
22365
  */
@@ -24167,7 +22700,7 @@ class GridMessages extends ComponentMessages {
24167
22700
  */
24168
22701
  groupChipMenuNext;
24169
22702
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
24170
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext" }, usesInheritance: true, ngImport: i0 });
22703
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext" }, usesInheritance: true, ngImport: i0 });
24171
22704
  }
24172
22705
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, decorators: [{
24173
22706
  type: Directive,
@@ -24199,7 +22732,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
24199
22732
  type: Input
24200
22733
  }], pagerPageNumberInputTitle: [{
24201
22734
  type: Input
24202
- }], selectPage: [{
22735
+ }], pagerInputLabel: [{
22736
+ type: Input
22737
+ }], pagerSelectPage: [{
24203
22738
  type: Input
24204
22739
  }], filter: [{
24205
22740
  type: Input
@@ -24544,8 +23079,6 @@ class GridComponent {
24544
23079
  this._group = value;
24545
23080
  }
24546
23081
  }
24547
- /**
24548
- */
24549
23082
  get group() {
24550
23083
  return this._group;
24551
23084
  }
@@ -24635,6 +23168,9 @@ class GridComponent {
24635
23168
  * @default false
24636
23169
  */
24637
23170
  pageable = false;
23171
+ get normalizedPageableSettings() {
23172
+ return normalize(this.pageable);
23173
+ }
24638
23174
  /**
24639
23175
  * If set to `true`, the user can group the Grid by dragging the column header cells ([see example]({% slug grouping_grid %})).
24640
23176
  * @default false
@@ -25059,7 +23595,7 @@ class GridComponent {
25059
23595
  }
25060
23596
  get headerPadding() {
25061
23597
  if (isUniversal()) {
25062
- return "";
23598
+ return '';
25063
23599
  }
25064
23600
  const padding = Math.max(0, this.scrollbarWidth) + 'px';
25065
23601
  const right = this.rtl ? 0 : padding;
@@ -25564,9 +24100,7 @@ class GridComponent {
25564
24100
  /**
25565
24101
  * @hidden
25566
24102
  */
25567
- messageFor(token) {
25568
- return this.localization.get(token);
25569
- }
24103
+ messageFor = token => this.localization.get(token);
25570
24104
  /**
25571
24105
  * Switches the specified table row in the edit mode ([see example]({% slug inline_editing_grid %}#toc-editing-records-1)).
25572
24106
  *
@@ -26423,6 +24957,7 @@ class GridComponent {
26423
24957
  FilterService,
26424
24958
  ResponsiveService,
26425
24959
  PagerContextService,
24960
+ PagerNavigationService,
26426
24961
  ExcelService,
26427
24962
  ScrollSyncService,
26428
24963
  ResizeService,
@@ -26482,6 +25017,9 @@ class GridComponent {
26482
25017
  i18n-pagerItemsPerPage="kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager"
26483
25018
  pagerItemsPerPage="items per page"
26484
25019
 
25020
+ i18n-pagerInputLabel="kendo.grid.pagerInputLabel|The text of the aria-label attribute applied to the input element for entering the page number"
25021
+ pagerInputLabel="Type a page number"
25022
+
26485
25023
  i18n-filter="kendo.grid.filter|The label of the filter cell or icon"
26486
25024
  filter="Filter"
26487
25025
 
@@ -26665,8 +25203,8 @@ class GridComponent {
26665
25203
  i18n-groupExpand="kendo.grid.groupExpand|The text of the title and aria-label attributes applied to the expand icon of group rows."
26666
25204
  groupExpand="Expand Group"
26667
25205
 
26668
- i18n-selectPage="kendo.grid.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
26669
- selectPage="Select page"
25206
+ i18n-pagerSelectPage="kendo.grid.pagerSelectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
25207
+ pagerSelectPage="Select page"
26670
25208
 
26671
25209
  i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
26672
25210
  topToolbarLabel="Top toolbar"
@@ -26706,16 +25244,39 @@ class GridComponent {
26706
25244
  <ng-content select="kendo-toolbar"></ng-content>
26707
25245
  <kendo-pager
26708
25246
  *ngIf="showTopPager"
26709
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
26710
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
26711
- class="k-grid-pager-top k-pager"
26712
- [template]="pagerTemplate"
25247
+ #topPager
25248
+ [navigable]="navigation.pagerEnabled"
25249
+ class="k-grid-pager k-grid-pager-top"
26713
25250
  [pageSize]="pageSize"
26714
25251
  [total]="view.total"
26715
25252
  [skip]="skip"
26716
25253
  [size]="size"
26717
- [options]="pageable"
25254
+ [responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
25255
+ [buttonCount]="normalizedPageableSettings.buttonCount"
25256
+ [info]="normalizedPageableSettings.info"
25257
+ [pageSizeValues]="normalizedPageableSettings.pageSizes"
25258
+ [previousNext]="normalizedPageableSettings.previousNext"
25259
+ [type]="normalizedPageableSettings.type"
26718
25260
  (pageChange)="notifyPageChange('pager', $event)">
25261
+ <ng-template kendoPagerTemplate>
25262
+ <ng-container
25263
+ [ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
25264
+ [ngTemplateOutletContext]="topPager.templateContext"></ng-container>
25265
+ </ng-template>
25266
+ <kendo-pager-messages
25267
+ [ariaLabel]="messageFor('pagerLabel')"
25268
+ [firstPage]="messageFor('pagerFirstPage')"
25269
+ [inputLabel]="messageFor('pagerInputLabel')"
25270
+ [previousPage]="messageFor('pagerPreviousPage')"
25271
+ [nextPage]="messageFor('pagerNextPage')"
25272
+ [lastPage]="messageFor('pagerLastPage')"
25273
+ [selectPage]="messageFor('pagerSelectPage')"
25274
+ [page]="messageFor('pagerPage')"
25275
+ [itemsPerPage]="messageFor('pagerItemsPerPage')"
25276
+ [items]="messageFor('pagerItems')"
25277
+ [of]="messageFor('pagerOf')"
25278
+ [pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
25279
+ </kendo-pager-messages>
26719
25280
  </kendo-pager>
26720
25281
  <kendo-grid-group-panel
26721
25282
  *ngIf="showGroupPanel"
@@ -26997,16 +25558,39 @@ class GridComponent {
26997
25558
  </kendo-grid-status-bar>
26998
25559
  <kendo-pager
26999
25560
  *ngIf="showBottomPager"
27000
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
27001
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
27002
- [template]="pagerTemplate"
25561
+ #bottomPager
25562
+ class="k-grid-pager"
25563
+ [navigable]="navigation.pagerEnabled"
27003
25564
  [pageSize]="pageSize"
27004
25565
  [total]="view.total"
27005
25566
  [skip]="skip"
27006
25567
  [size]="size"
27007
- [options]="pageable"
27008
- class="k-pager"
25568
+ [responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
25569
+ [buttonCount]="normalizedPageableSettings.buttonCount"
25570
+ [info]="normalizedPageableSettings.info"
25571
+ [pageSizeValues]="normalizedPageableSettings.pageSizes"
25572
+ [previousNext]="normalizedPageableSettings.previousNext"
25573
+ [type]="normalizedPageableSettings.type"
27009
25574
  (pageChange)="notifyPageChange('pager', $event)">
25575
+ <ng-template kendoPagerTemplate>
25576
+ <ng-container
25577
+ [ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
25578
+ [ngTemplateOutletContext]="bottomPager.templateContext"></ng-container>
25579
+ </ng-template>
25580
+ <kendo-pager-messages
25581
+ [ariaLabel]="messageFor('pagerLabel')"
25582
+ [firstPage]="messageFor('pagerFirstPage')"
25583
+ [inputLabel]="messageFor('pagerInputLabel')"
25584
+ [previousPage]="messageFor('pagerPreviousPage')"
25585
+ [nextPage]="messageFor('pagerNextPage')"
25586
+ [lastPage]="messageFor('pagerLastPage')"
25587
+ [selectPage]="messageFor('pagerSelectPage')"
25588
+ [page]="messageFor('pagerPage')"
25589
+ [itemsPerPage]="messageFor('pagerItemsPerPage')"
25590
+ [items]="messageFor('pagerItems')"
25591
+ [of]="messageFor('pagerOf')"
25592
+ [pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
25593
+ </kendo-pager-messages>
27010
25594
  </kendo-pager>
27011
25595
  <kendo-grid-toolbar
27012
25596
  class="k-grid-toolbar-bottom"
@@ -27027,8 +25611,26 @@ class GridComponent {
27027
25611
  {{hintText}}
27028
25612
  </ng-template>
27029
25613
 
25614
+ <ng-template #defaultPager>
25615
+ <div class="k-pager-numbers-wrap">
25616
+ <kendo-pager-prev-buttons [size]="size" *ngIf="normalizedPageableSettings.previousNext"></kendo-pager-prev-buttons>
25617
+ <kendo-pager-numeric-buttons
25618
+ [size]="size"
25619
+ *ngIf="normalizedPageableSettings.type === 'numeric' && normalizedPageableSettings.buttonCount > 0"
25620
+ [buttonCount]="normalizedPageableSettings.buttonCount">
25621
+ </kendo-pager-numeric-buttons>
25622
+ <kendo-pager-input [size]="size" *ngIf="normalizedPageableSettings.type === 'input'"></kendo-pager-input>
25623
+ <kendo-pager-next-buttons [size]="size" *ngIf="normalizedPageableSettings.previousNext"></kendo-pager-next-buttons>
25624
+ </div>
25625
+ <kendo-pager-page-sizes *ngIf="normalizedPageableSettings.pageSizes"
25626
+ [size]="size"
25627
+ [pageSizes]="normalizedPageableSettings.pageSizes">
25628
+ </kendo-pager-page-sizes>
25629
+ <kendo-pager-info *ngIf="normalizedPageableSettings.info">
25630
+ </kendo-pager-info>
25631
+ </ng-template>
27030
25632
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
27031
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], encapsulation: i0.ViewEncapsulation.None });
25633
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }, { kind: "component", type: i42.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i42.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i42.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i42.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i42.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i42.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i42.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i42.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i42.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
27032
25634
  }
27033
25635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
27034
25636
  type: Component,
@@ -27059,6 +25661,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27059
25661
  FilterService,
27060
25662
  ResponsiveService,
27061
25663
  PagerContextService,
25664
+ PagerNavigationService,
27062
25665
  ExcelService,
27063
25666
  ScrollSyncService,
27064
25667
  ResizeService,
@@ -27120,6 +25723,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27120
25723
  i18n-pagerItemsPerPage="kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager"
27121
25724
  pagerItemsPerPage="items per page"
27122
25725
 
25726
+ i18n-pagerInputLabel="kendo.grid.pagerInputLabel|The text of the aria-label attribute applied to the input element for entering the page number"
25727
+ pagerInputLabel="Type a page number"
25728
+
27123
25729
  i18n-filter="kendo.grid.filter|The label of the filter cell or icon"
27124
25730
  filter="Filter"
27125
25731
 
@@ -27303,8 +25909,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27303
25909
  i18n-groupExpand="kendo.grid.groupExpand|The text of the title and aria-label attributes applied to the expand icon of group rows."
27304
25910
  groupExpand="Expand Group"
27305
25911
 
27306
- i18n-selectPage="kendo.grid.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
27307
- selectPage="Select page"
25912
+ i18n-pagerSelectPage="kendo.grid.pagerSelectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
25913
+ pagerSelectPage="Select page"
27308
25914
 
27309
25915
  i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
27310
25916
  topToolbarLabel="Top toolbar"
@@ -27344,16 +25950,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27344
25950
  <ng-content select="kendo-toolbar"></ng-content>
27345
25951
  <kendo-pager
27346
25952
  *ngIf="showTopPager"
27347
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
27348
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
27349
- class="k-grid-pager-top k-pager"
27350
- [template]="pagerTemplate"
25953
+ #topPager
25954
+ [navigable]="navigation.pagerEnabled"
25955
+ class="k-grid-pager k-grid-pager-top"
27351
25956
  [pageSize]="pageSize"
27352
25957
  [total]="view.total"
27353
25958
  [skip]="skip"
27354
25959
  [size]="size"
27355
- [options]="pageable"
25960
+ [responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
25961
+ [buttonCount]="normalizedPageableSettings.buttonCount"
25962
+ [info]="normalizedPageableSettings.info"
25963
+ [pageSizeValues]="normalizedPageableSettings.pageSizes"
25964
+ [previousNext]="normalizedPageableSettings.previousNext"
25965
+ [type]="normalizedPageableSettings.type"
27356
25966
  (pageChange)="notifyPageChange('pager', $event)">
25967
+ <ng-template kendoPagerTemplate>
25968
+ <ng-container
25969
+ [ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
25970
+ [ngTemplateOutletContext]="topPager.templateContext"></ng-container>
25971
+ </ng-template>
25972
+ <kendo-pager-messages
25973
+ [ariaLabel]="messageFor('pagerLabel')"
25974
+ [firstPage]="messageFor('pagerFirstPage')"
25975
+ [inputLabel]="messageFor('pagerInputLabel')"
25976
+ [previousPage]="messageFor('pagerPreviousPage')"
25977
+ [nextPage]="messageFor('pagerNextPage')"
25978
+ [lastPage]="messageFor('pagerLastPage')"
25979
+ [selectPage]="messageFor('pagerSelectPage')"
25980
+ [page]="messageFor('pagerPage')"
25981
+ [itemsPerPage]="messageFor('pagerItemsPerPage')"
25982
+ [items]="messageFor('pagerItems')"
25983
+ [of]="messageFor('pagerOf')"
25984
+ [pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
25985
+ </kendo-pager-messages>
27357
25986
  </kendo-pager>
27358
25987
  <kendo-grid-group-panel
27359
25988
  *ngIf="showGroupPanel"
@@ -27635,16 +26264,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27635
26264
  </kendo-grid-status-bar>
27636
26265
  <kendo-pager
27637
26266
  *ngIf="showBottomPager"
27638
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
27639
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
27640
- [template]="pagerTemplate"
26267
+ #bottomPager
26268
+ class="k-grid-pager"
26269
+ [navigable]="navigation.pagerEnabled"
27641
26270
  [pageSize]="pageSize"
27642
26271
  [total]="view.total"
27643
26272
  [skip]="skip"
27644
26273
  [size]="size"
27645
- [options]="pageable"
27646
- class="k-pager"
26274
+ [responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
26275
+ [buttonCount]="normalizedPageableSettings.buttonCount"
26276
+ [info]="normalizedPageableSettings.info"
26277
+ [pageSizeValues]="normalizedPageableSettings.pageSizes"
26278
+ [previousNext]="normalizedPageableSettings.previousNext"
26279
+ [type]="normalizedPageableSettings.type"
27647
26280
  (pageChange)="notifyPageChange('pager', $event)">
26281
+ <ng-template kendoPagerTemplate>
26282
+ <ng-container
26283
+ [ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
26284
+ [ngTemplateOutletContext]="bottomPager.templateContext"></ng-container>
26285
+ </ng-template>
26286
+ <kendo-pager-messages
26287
+ [ariaLabel]="messageFor('pagerLabel')"
26288
+ [firstPage]="messageFor('pagerFirstPage')"
26289
+ [inputLabel]="messageFor('pagerInputLabel')"
26290
+ [previousPage]="messageFor('pagerPreviousPage')"
26291
+ [nextPage]="messageFor('pagerNextPage')"
26292
+ [lastPage]="messageFor('pagerLastPage')"
26293
+ [selectPage]="messageFor('pagerSelectPage')"
26294
+ [page]="messageFor('pagerPage')"
26295
+ [itemsPerPage]="messageFor('pagerItemsPerPage')"
26296
+ [items]="messageFor('pagerItems')"
26297
+ [of]="messageFor('pagerOf')"
26298
+ [pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
26299
+ </kendo-pager-messages>
27648
26300
  </kendo-pager>
27649
26301
  <kendo-grid-toolbar
27650
26302
  class="k-grid-toolbar-bottom"
@@ -27665,15 +26317,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27665
26317
  {{hintText}}
27666
26318
  </ng-template>
27667
26319
 
26320
+ <ng-template #defaultPager>
26321
+ <div class="k-pager-numbers-wrap">
26322
+ <kendo-pager-prev-buttons [size]="size" *ngIf="normalizedPageableSettings.previousNext"></kendo-pager-prev-buttons>
26323
+ <kendo-pager-numeric-buttons
26324
+ [size]="size"
26325
+ *ngIf="normalizedPageableSettings.type === 'numeric' && normalizedPageableSettings.buttonCount > 0"
26326
+ [buttonCount]="normalizedPageableSettings.buttonCount">
26327
+ </kendo-pager-numeric-buttons>
26328
+ <kendo-pager-input [size]="size" *ngIf="normalizedPageableSettings.type === 'input'"></kendo-pager-input>
26329
+ <kendo-pager-next-buttons [size]="size" *ngIf="normalizedPageableSettings.previousNext"></kendo-pager-next-buttons>
26330
+ </div>
26331
+ <kendo-pager-page-sizes *ngIf="normalizedPageableSettings.pageSizes"
26332
+ [size]="size"
26333
+ [pageSizes]="normalizedPageableSettings.pageSizes">
26334
+ </kendo-pager-page-sizes>
26335
+ <kendo-pager-info *ngIf="normalizedPageableSettings.info">
26336
+ </kendo-pager-info>
26337
+ </ng-template>
27668
26338
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
27669
26339
  `,
27670
26340
  standalone: true,
27671
26341
  imports: [
27672
- LocalizedMessagesDirective, NgIf, ToolbarComponent, PagerComponent, GroupPanelComponent,
26342
+ LocalizedMessagesDirective, NgIf, ToolbarComponent, GroupPanelComponent,
27673
26343
  TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective,
27674
26344
  ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective,
27675
26345
  GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent,
27676
- IconWrapperComponent, WatermarkOverlayComponent
26346
+ IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet
27677
26347
  ]
27678
26348
  }]
27679
26349
  }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1$2.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: RowReorderService }]; }, propDecorators: { data: [{
@@ -29126,12 +27796,12 @@ class GridSpacerComponent {
29126
27796
  */
29127
27797
  width;
29128
27798
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29129
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GridSpacerComponent, isStandalone: true, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: { width: "width" }, host: { properties: { "class.k-spacer": "this.hostClass", "class.k-spacer-sized": "this.sizedClass", "style.flexBasis": "this.flexBasisStyle" } }, ngImport: i0, template: ``, isInline: true });
27799
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GridSpacerComponent, isStandalone: true, selector: "kendo-grid-spacer", inputs: { width: "width" }, host: { properties: { "class.k-spacer": "this.hostClass", "class.k-spacer-sized": "this.sizedClass", "style.flexBasis": "this.flexBasisStyle" } }, ngImport: i0, template: ``, isInline: true });
29130
27800
  }
29131
27801
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridSpacerComponent, decorators: [{
29132
27802
  type: Component,
29133
27803
  args: [{
29134
- selector: 'kendo-grid-spacer, kendo-pager-spacer',
27804
+ selector: 'kendo-grid-spacer',
29135
27805
  template: ``,
29136
27806
  standalone: true
29137
27807
  }]
@@ -29425,7 +28095,7 @@ class PDFCommandToolbarDirective {
29425
28095
  e.preventDefault();
29426
28096
  this.pdfService.exportClick.emit();
29427
28097
  }
29428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i2.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
28098
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i43.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
29429
28099
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PDFCommandToolbarDirective, isStandalone: true, selector: "[kendoGridPDFTool]", ngImport: i0 });
29430
28100
  }
29431
28101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PDFCommandToolbarDirective, decorators: [{
@@ -29434,7 +28104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
29434
28104
  selector: '[kendoGridPDFTool]',
29435
28105
  standalone: true
29436
28106
  }]
29437
- }], ctorParameters: function () { return [{ type: PDFService }, { type: i2.ToolBarButtonComponent }]; } });
28107
+ }], ctorParameters: function () { return [{ type: PDFService }, { type: i43.ToolBarButtonComponent }]; } });
29438
28108
 
29439
28109
  /**
29440
28110
  * Represents the `export-to-Excel` toolbar tool of the Grid.
@@ -29480,7 +28150,7 @@ class ExcelCommandToolbarDirective {
29480
28150
  e.preventDefault();
29481
28151
  this.excelService.exportClick.emit();
29482
28152
  }
29483
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i2.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
28153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i43.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
29484
28154
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ExcelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridExcelTool]", ngImport: i0 });
29485
28155
  }
29486
28156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelCommandToolbarDirective, decorators: [{
@@ -29489,7 +28159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
29489
28159
  selector: '[kendoGridExcelTool]',
29490
28160
  standalone: true
29491
28161
  }]
29492
- }], ctorParameters: function () { return [{ type: ExcelService }, { type: i2.ToolBarButtonComponent }]; } });
28162
+ }], ctorParameters: function () { return [{ type: ExcelService }, { type: i43.ToolBarButtonComponent }]; } });
29493
28163
 
29494
28164
  /**
29495
28165
  * Represents the command for adding a new item to the Grid.
@@ -29533,7 +28203,7 @@ class AddCommandToolbarDirective {
29533
28203
  e.preventDefault();
29534
28204
  this.editService.beginAdd();
29535
28205
  }
29536
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i2.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
28206
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i43.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
29537
28207
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AddCommandToolbarDirective, isStandalone: true, selector: "[kendoGridAddTool]", ngImport: i0 });
29538
28208
  }
29539
28209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AddCommandToolbarDirective, decorators: [{
@@ -29542,7 +28212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
29542
28212
  selector: '[kendoGridAddTool]',
29543
28213
  standalone: true
29544
28214
  }]
29545
- }], ctorParameters: function () { return [{ type: EditService }, { type: i2.ToolBarButtonComponent }]; } });
28215
+ }], ctorParameters: function () { return [{ type: EditService }, { type: i43.ToolBarButtonComponent }]; } });
29546
28216
 
29547
28217
  // DRAGGABLE COLUMN
29548
28218
  /**
@@ -29764,23 +28434,6 @@ const KENDO_GRID_BODY_EXPORTS = [
29764
28434
  LoadingTemplateDirective,
29765
28435
  RowReorderColumnComponent
29766
28436
  ];
29767
- /**
29768
- * @hidden
29769
- *
29770
- * Utility array that contains the Pager module exports
29771
- */
29772
- const KENDO_GRID_PAGER_EXPORTS = [
29773
- PagerComponent,
29774
- PagerPrevButtonsComponent,
29775
- PagerNextButtonsComponent,
29776
- PagerNumericButtonsComponent,
29777
- PagerInputComponent,
29778
- PagerInfoComponent,
29779
- PagerPageSizesComponent,
29780
- PagerTemplateDirective,
29781
- PagerDropDownListDirective,
29782
- PagerInputDirective
29783
- ];
29784
28437
  /**
29785
28438
  * @hidden
29786
28439
  *
@@ -29833,11 +28486,11 @@ const KENDO_GRID_EXPORTS = [
29833
28486
  ...KENDO_GRID_SHARED,
29834
28487
  ...KENDO_GRID_BODY_EXPORTS,
29835
28488
  ...KENDO_GRID_HEADER_EXPORTS,
29836
- ...KENDO_GRID_PAGER_EXPORTS,
29837
28489
  ...KENDO_GRID_FILTER_ROW_EXPORTS,
29838
28490
  ...KENDO_GRID_FILTER_OPERATORS,
29839
28491
  ...KENDO_GRID_FILTER_MENU_EXPORTS,
29840
28492
  ...KENDO_GRID_COLUMN_MENU_EXPORTS,
28493
+ ...KENDO_PAGER,
29841
28494
  GridClipboardDirective
29842
28495
  ];
29843
28496
  /**
@@ -29895,7 +28548,7 @@ const KENDO_GRID = [
29895
28548
  */
29896
28549
  class GridModule {
29897
28550
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29898
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, TableDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, ToolBarModule] });
28551
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i42.CustomMessagesComponent, i42.PagerFocusableDirective, i42.PagerInfoComponent, i42.PagerInputComponent, i42.PagerNextButtonsComponent, i42.PagerNumericButtonsComponent, i42.PagerPageSizesComponent, i42.PagerPrevButtonsComponent, i42.PagerTemplateDirective, i42.PagerComponent, i42.PagerSpacerComponent, i43.ToolBarComponent, i43.ToolbarCustomMessagesComponent, i43.ToolBarButtonComponent, i43.ToolBarButtonGroupComponent, i43.ToolBarDropDownButtonComponent, i43.ToolBarSeparatorComponent, i43.ToolBarSpacerComponent, i43.ToolBarSplitButtonComponent, i43.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, TableDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, i42.CustomMessagesComponent, i42.PagerFocusableDirective, i42.PagerInfoComponent, i42.PagerInputComponent, i42.PagerNextButtonsComponent, i42.PagerNumericButtonsComponent, i42.PagerPageSizesComponent, i42.PagerPrevButtonsComponent, i42.PagerTemplateDirective, i42.PagerComponent, i42.PagerSpacerComponent, GridClipboardDirective, i43.ToolBarComponent, i43.ToolbarCustomMessagesComponent, i43.ToolBarButtonComponent, i43.ToolBarButtonGroupComponent, i43.ToolBarDropDownButtonComponent, i43.ToolBarSeparatorComponent, i43.ToolBarSpacerComponent, i43.ToolBarSplitButtonComponent, i43.ToolBarToolComponent] });
29899
28552
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, providers: [
29900
28553
  PopupService,
29901
28554
  ResizeBatchService,
@@ -29910,19 +28563,20 @@ class GridModule {
29910
28563
  MonthViewService,
29911
28564
  YearViewService,
29912
28565
  NavigationService$1
29913
- ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, HeaderComponent, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerPageSizesComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolBarModule] });
28566
+ ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, HeaderComponent, i42.CustomMessagesComponent, i42.PagerInfoComponent, i42.PagerInputComponent, i42.PagerNextButtonsComponent, i42.PagerNumericButtonsComponent, i42.PagerPageSizesComponent, i42.PagerPrevButtonsComponent, i42.PagerComponent, i42.PagerSpacerComponent, i43.ToolBarComponent, i43.ToolbarCustomMessagesComponent, i43.ToolBarButtonComponent, i43.ToolBarButtonGroupComponent, i43.ToolBarDropDownButtonComponent, i43.ToolBarSeparatorComponent, i43.ToolBarSpacerComponent, i43.ToolBarSplitButtonComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent] });
29914
28567
  }
29915
28568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, decorators: [{
29916
28569
  type: NgModule,
29917
28570
  args: [{
29918
- exports: [...KENDO_GRID_EXPORTS, ToolBarModule],
28571
+ exports: [...KENDO_GRID_EXPORTS, ...KENDO_TOOLBAR],
29919
28572
  imports: [
29920
28573
  ...KENDO_GRID_GROUP_EXPORTS,
29921
28574
  ...KENDO_GRID_SHARED,
29922
28575
  ...KENDO_GRID_BODY_EXPORTS,
29923
28576
  ...KENDO_GRID_HEADER_EXPORTS,
29924
28577
  ...KENDO_GRID_FOOTER_EXPORTS,
29925
- ...KENDO_GRID_PAGER_EXPORTS,
28578
+ ...KENDO_PAGER,
28579
+ ...KENDO_TOOLBAR,
29926
28580
  ...KENDO_GRID_FILTER_ROW,
29927
28581
  ...KENDO_GRID_FILTER_MENU,
29928
28582
  ...KENDO_GRID_COLUMN_MENU_DECLARATIONS,
@@ -30209,23 +28863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30209
28863
  }]
30210
28864
  }] });
30211
28865
 
30212
- /**
30213
- * @hidden
30214
- */
30215
- class PagerModule {
30216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30217
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, imports: [ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i9.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective], exports: [PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective] });
30218
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService], imports: [PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerPageSizesComponent] });
30219
- }
30220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, decorators: [{
30221
- type: NgModule,
30222
- args: [{
30223
- exports: [...KENDO_GRID_PAGER_EXPORTS],
30224
- imports: [...KENDO_GRID_SHARED, ...KENDO_GRID_PAGER_EXPORTS],
30225
- providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService]
30226
- }]
30227
- }] });
30228
-
30229
28866
  // IMPORTANT: NgModule export kept for backwards compatibility
30230
28867
  /**
30231
28868
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -30350,5 +28987,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30350
28987
  * Generated bundle index. Do not edit.
30351
28988
  */
30352
28989
 
30353
- export { AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PAGER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerElementComponent, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
28990
+ export { AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
30354
28991