@progress/kendo-angular-grid 20.1.0-develop.3 → 20.1.0-develop.30

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 (64) hide show
  1. package/column-menu/column-list.component.d.ts +0 -2
  2. package/columns/column.component.d.ts +8 -1
  3. package/columns/command-column.component.d.ts +1 -1
  4. package/columns/span-column.component.d.ts +1 -1
  5. package/editing/cancel-command.directive.d.ts +1 -1
  6. package/editing/edit-row-options.interface.d.ts +1 -1
  7. package/editing/edit-template.directive.d.ts +1 -1
  8. package/editing/remove-command.directive.d.ts +1 -1
  9. package/editing/save-command.directive.d.ts +1 -1
  10. package/editing-directives/edit-service.interface.d.ts +2 -2
  11. package/editing-directives/external-editing.directive.d.ts +1 -1
  12. package/editing-directives/in-cell-editing.directive.d.ts +1 -1
  13. package/editing-directives/reactive-editing.directive.d.ts +1 -1
  14. package/editing-directives/template-editing.directive.d.ts +1 -1
  15. package/esm2022/column-menu/column-list-kb-nav.service.mjs +1 -1
  16. package/esm2022/column-menu/column-list.component.mjs +7 -43
  17. package/esm2022/column-menu/column-menu-container.component.mjs +10 -1
  18. package/esm2022/column-menu/column-menu.component.mjs +7 -1
  19. package/esm2022/columns/column.component.mjs +9 -1
  20. package/esm2022/columns/command-column.component.mjs +1 -1
  21. package/esm2022/columns/span-column.component.mjs +1 -1
  22. package/esm2022/common/clipboard.directive.mjs +3 -0
  23. package/esm2022/editing/cancel-command.directive.mjs +1 -1
  24. package/esm2022/editing/edit-template.directive.mjs +1 -1
  25. package/esm2022/editing/remove-command.directive.mjs +1 -1
  26. package/esm2022/editing/save-command.directive.mjs +1 -1
  27. package/esm2022/editing-directives/external-editing.directive.mjs +1 -1
  28. package/esm2022/editing-directives/in-cell-editing.directive.mjs +1 -1
  29. package/esm2022/editing-directives/reactive-editing.directive.mjs +1 -1
  30. package/esm2022/editing-directives/template-editing.directive.mjs +1 -1
  31. package/esm2022/filtering/menu/filter-menu-container.component.mjs +120 -31
  32. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +2 -2
  33. package/esm2022/filtering/menu/filter-menu.component.mjs +11 -7
  34. package/esm2022/filtering/multicheckbox-filter.component.mjs +290 -0
  35. package/esm2022/grid.component.mjs +25 -12
  36. package/esm2022/index.mjs +1 -0
  37. package/esm2022/localization/messages.mjs +28 -1
  38. package/esm2022/navigation/logical-cell.directive.mjs +8 -2
  39. package/esm2022/navigation/navigation.service.mjs +1 -0
  40. package/esm2022/package-metadata.mjs +2 -2
  41. package/esm2022/pdf/pdf.component.mjs +8 -3
  42. package/esm2022/rendering/cell.component.mjs +2 -2
  43. package/esm2022/rendering/common/field-accessor.pipe.mjs +1 -1
  44. package/esm2022/rendering/common/format.pipe.mjs +37 -0
  45. package/esm2022/rendering/header/header.component.mjs +1 -1
  46. package/esm2022/rendering/list.component.mjs +2 -2
  47. package/esm2022/rendering/table-body.component.mjs +4 -2
  48. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +1 -1
  49. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +1 -1
  50. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +2 -2
  51. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +1 -1
  52. package/esm2022/scrolling/scroller.service.mjs +0 -3
  53. package/fesm2022/progress-kendo-angular-grid.mjs +1781 -1348
  54. package/filtering/filterable.d.ts +23 -0
  55. package/filtering/menu/filter-menu-container.component.d.ts +5 -1
  56. package/filtering/menu/filter-menu.component.d.ts +3 -4
  57. package/filtering/multicheckbox-filter.component.d.ts +43 -0
  58. package/grid.component.d.ts +4 -6
  59. package/index.d.ts +1 -0
  60. package/localization/messages.d.ts +22 -1
  61. package/navigation/navigation.service.d.ts +1 -0
  62. package/package.json +21 -21
  63. package/rendering/common/format.pipe.d.ts +17 -0
  64. package/schematics/ngAdd/index.js +4 -4
@@ -58,7 +58,6 @@ export declare class ColumnListComponent implements OnInit, OnDestroy {
58
58
  ngOnInit(): void;
59
59
  ngAfterViewInit(): void;
60
60
  ngOnChanges(changes: SimpleChanges): void;
61
- onSelectAllClick(e: any): void;
62
61
  onSelectAllCheckboxChange(checkedState: any): void;
63
62
  ngOnDestroy(): void;
64
63
  cancelChanges(): void;
@@ -70,7 +69,6 @@ export declare class ColumnListComponent implements OnInit, OnDestroy {
70
69
  private disableFirstUnlockedCheckedCheckbox;
71
70
  private enableLastDisabledColumn;
72
71
  private setDisabledState;
73
- checkBoxClick(e: any): void;
74
72
  onCheckboxChange(checkedState: any, column: any, _index: number): void;
75
73
  private setTabindex;
76
74
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnListComponent, [null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
@@ -14,6 +14,7 @@ import { FilterCellTemplateDirective } from '../filtering/cell/filter-cell-templ
14
14
  import { FilterMenuTemplateDirective } from '../filtering/menu/filter-menu-template.directive';
15
15
  import { IdService } from '../common/id.service';
16
16
  import { FieldDataType } from '../common/field-datatype';
17
+ import { FilterVariant, FilterVariantSettings } from '../filtering/filterable';
17
18
  import * as i0 from "@angular/core";
18
19
  /**
19
20
  * @hidden
@@ -72,6 +73,12 @@ export declare class ColumnComponent extends ColumnBase {
72
73
  * @default 'text'
73
74
  */
74
75
  filter: FieldDataType;
76
+ /**
77
+ * Specifies the filter type for the filter menu UI.
78
+ *
79
+ * @default 'default'
80
+ */
81
+ filterVariant: FilterVariant | FilterVariantSettings;
75
82
  /**
76
83
  * Shows or hides the filter UI for this column. [See example](slug:filtering_grid).
77
84
  *
@@ -101,5 +108,5 @@ export declare class ColumnComponent extends ColumnBase {
101
108
  get filterMenuTemplateRef(): TemplateRef<any>;
102
109
  get displayTitle(): string;
103
110
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnComponent, [{ optional: true; host: true; skipSelf: true; }, { optional: true; }]>;
104
- static ɵcmp: i0.ɵɵComponentDeclaration<ColumnComponent, "kendo-grid-column", never, { "field": { "alias": "field"; "required": false; }; "format": { "alias": "format"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "groupable": { "alias": "groupable"; "required": false; }; "editor": { "alias": "editor"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; }, {}, ["template", "groupHeaderTemplate", "groupHeaderColumnTemplate", "groupFooterTemplate", "editTemplate", "filterCellTemplate", "filterMenuTemplate"], never, true, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColumnComponent, "kendo-grid-column", never, { "field": { "alias": "field"; "required": false; }; "format": { "alias": "format"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "groupable": { "alias": "groupable"; "required": false; }; "editor": { "alias": "editor"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterVariant": { "alias": "filterVariant"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; }, {}, ["template", "groupHeaderTemplate", "groupHeaderColumnTemplate", "groupFooterTemplate", "editTemplate", "filterCellTemplate", "filterMenuTemplate"], never, true, never>;
105
112
  }
@@ -10,7 +10,7 @@ import { CellRowspanFn } from './cell-rowspan';
10
10
  import * as i0 from "@angular/core";
11
11
  /**
12
12
  * Represents the command columns of the Grid. Define the content of the column inside an `<ng-template>` tag.
13
- * For more information and examples, see the [Command Column Directives](slug:editing_directives_grid#toc-command-column-directives) article.
13
+ * For more information and examples, see the [Editing Action Buttons](slug:basics_editing_grid#editing-action-buttons) article.
14
14
  *
15
15
  * @example
16
16
  * ```html
@@ -74,7 +74,7 @@ export declare class SpanColumnComponent extends ColumnBase {
74
74
  includeInChooser: boolean;
75
75
  /**
76
76
  * Sets whether the edit template of the column is rendered.
77
- * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_reactive_editing_grid)).
77
+ * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
78
78
  * @default false
79
79
  */
80
80
  set editable(value: boolean);
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  /**
12
12
  * Represents the `cancel` command of the Grid. Apply this directive to any `button`
13
13
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
14
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
14
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
15
15
  *
16
16
  * When a button with this directive is clicked, the
17
17
  * [`cancel`]({% slug api_grid_gridcomponent %}#toc-cancel) event
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  /**
6
- * Provides additional options for the [`editRow`]({% slug api_grid_gridcomponent %}#toc-editrow) method. [See example]({% slug editing_rowclick_grid %}#toc-managing-focus).
6
+ * Provides additional options for the [`editRow`]({% slug api_grid_gridcomponent %}#toc-editrow) method. [See example](slug:inline_editing_grid#managing-focus).
7
7
  *
8
8
  * @example
9
9
  * ```typescript
@@ -5,7 +5,7 @@
5
5
  import { TemplateRef } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
- * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
8
+ * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
9
9
  * Place an `<ng-template>` tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag to define the template.
10
10
  *
11
11
  * The template context includes:
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  /**
12
12
  * Represents the `remove` command of the Grid. Apply this directive to any `button` element
13
13
  * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
14
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
14
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
15
15
  * When you click the button with this directive, the
16
16
  * [`remove`]({% slug api_grid_gridcomponent %}#toc-remove) event fires.
17
17
  * The button with `kendoGridRemoveCommand` is automatically hidden when the row is in edit mode.
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  /**
12
12
  * Represents the `save` command of the Grid. Apply this directive to any `button`
13
13
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
14
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
14
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
15
15
  * When you click the button with this directive, the
16
16
  * [`save`]({% slug api_grid_gridcomponent %}#toc-save) event fires.
17
17
  * The button with `kendoGridSaveCommand` is automatically hidden when the row is not in edit mode.
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * The interface which must be extended when creating custom edit service.
7
7
  * This interface defines the methods that a custom editing service should implement to handle create, update, and remove operations on grid items.
8
- * Set the custom edit service to the `editService` input of the respective editing directive.
9
- * [See exampe](slug:editing_directives_grid#toc-custom-editing-service).
8
+ * Set the custom edit service to the `editService` input of the respective editing directive
9
+ * [See example](slug:custom_editing_service_grid).
10
10
  */
11
11
  export interface EditService {
12
12
  /**
@@ -13,7 +13,7 @@ import { AdaptiveGridService } from '../common/adaptiveness.service';
13
13
  import * as i0 from "@angular/core";
14
14
  /**
15
15
  * Represents the Kendo UI Grid external editing directive. The directive manages editing operations in the Grid when using the
16
- * External Form ([see example](slug:editing_directives_grid#external-editing)).
16
+ * External Form ([see example](slug:external_editing_grid#quick-setup)).
17
17
  *
18
18
  * @example
19
19
  * ```typescript
@@ -9,7 +9,7 @@ import { LocalDataChangesService } from '../editing/local-data-changes.service';
9
9
  import { CreateFormGroup } from '../common/create-form-group';
10
10
  import * as i0 from "@angular/core";
11
11
  /**
12
- * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
12
+ * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example](slug:editing_incell_grid#quick-setup)).
13
13
  *
14
14
  * @example
15
15
  * ```html
@@ -8,7 +8,7 @@ import { LocalDataChangesService } from '../editing/local-data-changes.service';
8
8
  import { CreateFormGroup } from '../common/create-form-group';
9
9
  import * as i0 from "@angular/core";
10
10
  /**
11
- * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:editing_directives_grid#toc-reactive-editing-directive)).
11
+ * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:inline_editing_grid#using-reactive-forms)).
12
12
  *
13
13
  * @example
14
14
  * ```html
@@ -7,7 +7,7 @@ import { GridComponent } from '../grid.component';
7
7
  import { LocalDataChangesService } from '../editing/local-data-changes.service';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
- * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
10
+ * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example](slug:inline_editing_grid#using-template-driven-forms)).
11
11
  *
12
12
  * @example
13
13
  * ```html
@@ -27,7 +27,7 @@ export class ColumnListKeyboardNavigation {
27
27
  toggle(index, active) {
28
28
  const element = this.items[index]?.hostElement.nativeElement.closest('.k-column-list-item');
29
29
  element && this.renderer.setAttribute(element, 'tabindex', active ? '0' : '-1');
30
- active && element?.focus();
30
+ active && element?.focus({ preventScroll: true });
31
31
  }
32
32
  toggleCheckedState() {
33
33
  this.items[this.activeIndex].hostElement.nativeElement.closest('.k-column-list-item').firstElementChild.click();
@@ -5,7 +5,7 @@
5
5
  import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, ViewChildren, QueryList, Optional, ChangeDetectorRef } from '@angular/core';
6
6
  import { ColumnMenuService } from './column-menu.service';
7
7
  import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
8
- import { EventsOutsideAngularDirective, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
8
+ import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
9
9
  import { Subscription } from 'rxjs';
10
10
  import { NgFor, NgIf } from '@angular/common';
11
11
  import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
@@ -136,15 +136,6 @@ export class ColumnListComponent {
136
136
  this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;
137
137
  }
138
138
  }
139
- onSelectAllClick(e) {
140
- if (e.target.classList.contains('k-checkbox')) {
141
- return;
142
- }
143
- e.preventDefault();
144
- const label = e.target.closest('.k-column-list-item');
145
- const input = label?.querySelector('input');
146
- input.click();
147
- }
148
139
  onSelectAllCheckboxChange(checkedState) {
149
140
  if (!checkedState && !this.allowHideAll) {
150
141
  const columnsToKeep = [];
@@ -326,25 +317,6 @@ export class ColumnListComponent {
326
317
  });
327
318
  }
328
319
  }
329
- checkBoxClick(e) {
330
- const closestItem = e.target.closest('.k-column-list-item');
331
- if (!closestItem)
332
- return;
333
- const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
334
- const input = checkboxElement?.querySelector('input');
335
- if (e.target === input) {
336
- return;
337
- }
338
- e.preventDefault();
339
- if (input) {
340
- const index = parseInt(input.getAttribute('data-index'), 10);
341
- const column = this.filteredColumns[index];
342
- const isDisabled = checkboxElement.classList.contains('k-disabled');
343
- if (column && !isDisabled) {
344
- input.click();
345
- }
346
- }
347
- }
348
320
  onCheckboxChange(checkedState, column, _index) {
349
321
  column.currentlyChecked = checkedState;
350
322
  if (this.autoSync) {
@@ -378,9 +350,7 @@ export class ColumnListComponent {
378
350
  <label
379
351
  *ngIf="showSelectAll"
380
352
  class='k-column-list-item'
381
- role="option"
382
- [kendoEventsOutsideAngular]="{click: onSelectAllClick}"
383
- [scope]="this">
353
+ role="option">
384
354
  <kendo-checkbox
385
355
  #checkbox
386
356
  [inputAttributes]="{'data-index': '0'}"
@@ -393,9 +363,7 @@ export class ColumnListComponent {
393
363
  <label
394
364
  *ngFor="let column of filteredColumns; let index = index;"
395
365
  class='k-column-list-item'
396
- role="option"
397
- [kendoEventsOutsideAngular]="{click: checkBoxClick}"
398
- [scope]="this">
366
+ role="option">
399
367
  <kendo-checkbox
400
368
  #checkbox
401
369
  [inputAttributes]="{'data-index': index.toString()}"
@@ -406,7 +374,7 @@ export class ColumnListComponent {
406
374
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
407
375
  </label>
408
376
  </div>
409
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
377
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
410
378
  }
411
379
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, decorators: [{
412
380
  type: Component,
@@ -422,9 +390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
422
390
  <label
423
391
  *ngIf="showSelectAll"
424
392
  class='k-column-list-item'
425
- role="option"
426
- [kendoEventsOutsideAngular]="{click: onSelectAllClick}"
427
- [scope]="this">
393
+ role="option">
428
394
  <kendo-checkbox
429
395
  #checkbox
430
396
  [inputAttributes]="{'data-index': '0'}"
@@ -437,9 +403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
437
403
  <label
438
404
  *ngFor="let column of filteredColumns; let index = index;"
439
405
  class='k-column-list-item'
440
- role="option"
441
- [kendoEventsOutsideAngular]="{click: checkBoxClick}"
442
- [scope]="this">
406
+ role="option">
443
407
  <kendo-checkbox
444
408
  #checkbox
445
409
  [inputAttributes]="{'data-index': index.toString()}"
@@ -452,7 +416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
452
416
  </div>
453
417
  `,
454
418
  standalone: true,
455
- imports: [NgFor, NgIf, CheckBoxComponent, EventsOutsideAngularDirective]
419
+ imports: [NgFor, NgIf, CheckBoxComponent]
456
420
  }]
457
421
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }, { type: i0.ChangeDetectorRef }, { type: i2.ColumnInfoService, decorators: [{
458
422
  type: Optional
@@ -6,6 +6,7 @@ import { ColumnMenuItemDirective } from './column-menu-item.directive';
6
6
  import { Component, ContentChildren, Inject, NgZone, QueryList } from '@angular/core';
7
7
  import { take } from 'rxjs/operators';
8
8
  import { ColumnMenuService } from './column-menu.service';
9
+ import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "./column-menu.service";
11
12
  /**
@@ -33,7 +34,15 @@ export class ColumnMenuContainerComponent {
33
34
  else {
34
35
  return;
35
36
  }
36
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable?.focus());
37
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
38
+ const firstFocusable = this.service.menuTabbingService.firstFocusable;
39
+ if (firstFocusable instanceof DropDownListComponent) {
40
+ firstFocusable.wrapper.nativeElement.focus({ preventScroll: true });
41
+ }
42
+ else {
43
+ firstFocusable?.focus({ preventScroll: true });
44
+ }
45
+ });
37
46
  }
38
47
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: i1.ColumnMenuService }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Component });
39
48
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuContainerComponent, isStandalone: true, selector: "kendo-grid-columnmenu-container", queries: [{ propertyName: "columnMenuItems", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `
@@ -353,7 +353,13 @@ export class ColumnMenuComponent {
353
353
  ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'false');
354
354
  }
355
355
  focusRoot() {
356
- this.isNavigable ? this.navigationService.focusCell(0, this.column.leafIndex) : this.anchor.nativeElement.focus();
356
+ if (this.isNavigable) {
357
+ this.navigationService.preventScroll = true;
358
+ this.navigationService.focusCell(0, this.column.leafIndex);
359
+ }
360
+ else {
361
+ this.anchor.nativeElement.focus({ preventScroll: true });
362
+ }
357
363
  }
358
364
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: i1.NavigationService }, { token: i2.SinglePopupService }, { token: i3.ColumnMenuService }, { token: i4.ContextService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.ColumnInfoService }, { token: i6.IdService, optional: true }, { token: i7.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
359
365
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuComponent, isStandalone: true, selector: "kendo-grid-column-menu", inputs: { standalone: "standalone", column: "column", settings: "settings", sort: "sort", filter: "filter", sortable: "sortable", columnMenuTemplate: "columnMenuTemplate", tabIndex: "tabIndex" }, host: { properties: { "class.k-grid-column-menu-standalone": "this.standalone" } }, providers: [
@@ -75,6 +75,12 @@ export class ColumnComponent extends ColumnBase {
75
75
  * @default 'text'
76
76
  */
77
77
  filter = 'text';
78
+ /**
79
+ * Specifies the filter type for the filter menu UI.
80
+ *
81
+ * @default 'default'
82
+ */
83
+ filterVariant = 'default';
78
84
  /**
79
85
  * Shows or hides the filter UI for this column. [See example](slug:filtering_grid).
80
86
  *
@@ -122,7 +128,7 @@ export class ColumnComponent extends ColumnBase {
122
128
  return this.title === undefined ? this.field : this.title;
123
129
  }
124
130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnComponent, deps: [{ token: i1.ColumnBase, host: true, optional: true, skipSelf: true }, { token: i2.IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
125
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnComponent, isStandalone: true, selector: "kendo-grid-column", inputs: { field: "field", format: "format", sortable: "sortable", groupable: "groupable", editor: "editor", filter: "filter", filterable: "filterable", editable: "editable" }, providers: [
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnComponent, isStandalone: true, selector: "kendo-grid-column", inputs: { field: "field", format: "format", sortable: "sortable", groupable: "groupable", editor: "editor", filter: "filter", filterVariant: "filterVariant", filterable: "filterable", editable: "editable" }, providers: [
126
132
  {
127
133
  provide: ColumnBase,
128
134
  useExisting: forwardRef(() => ColumnComponent)
@@ -162,6 +168,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
162
168
  type: Input
163
169
  }], filter: [{
164
170
  type: Input
171
+ }], filterVariant: [{
172
+ type: Input
165
173
  }], filterable: [{
166
174
  type: Input
167
175
  }], editable: [{
@@ -11,7 +11,7 @@ import * as i1 from "./column-base";
11
11
  import * as i2 from "../common/id.service";
12
12
  /**
13
13
  * Represents the command columns of the Grid. Define the content of the column inside an `<ng-template>` tag.
14
- * For more information and examples, see the [Command Column Directives](slug:editing_directives_grid#toc-command-column-directives) article.
14
+ * For more information and examples, see the [Editing Action Buttons](slug:basics_editing_grid#editing-action-buttons) article.
15
15
  *
16
16
  * @example
17
17
  * ```html
@@ -75,7 +75,7 @@ export class SpanColumnComponent extends ColumnBase {
75
75
  includeInChooser = false;
76
76
  /**
77
77
  * Sets whether the edit template of the column is rendered.
78
- * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_reactive_editing_grid)).
78
+ * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
79
79
  * @default false
80
80
  */
81
81
  set editable(value) {
@@ -136,6 +136,9 @@ export class GridClipboardDirective {
136
136
  const isPaste = operationType === 'paste';
137
137
  const pastedData = args.clipboardData.getData('text');
138
138
  const visibleCols = this.host.columns.toArray().filter(c => c.isVisible);
139
+ if (visibleCols.some(c => c.orderIndex > 0)) { // columns have been reordered
140
+ visibleCols.sort((a, b) => a.orderIndex - b.orderIndex);
141
+ }
139
142
  const data = isPaste ?
140
143
  {
141
144
  dataString: pastedData,
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `cancel` command of the Grid. Apply this directive to any `button`
17
17
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  *
20
20
  * When a button with this directive is clicked, the
21
21
  * [`cancel`]({% slug api_grid_gridcomponent %}#toc-cancel) event
@@ -5,7 +5,7 @@
5
5
  import { Directive, TemplateRef, Optional } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
- * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
8
+ * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
9
9
  * Place an `<ng-template>` tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag to define the template.
10
10
  *
11
11
  * The template context includes:
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `remove` command of the Grid. Apply this directive to any `button` element
17
17
  * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  * When you click the button with this directive, the
20
20
  * [`remove`]({% slug api_grid_gridcomponent %}#toc-remove) event fires.
21
21
  * The button with `kendoGridRemoveCommand` is automatically hidden when the row is in edit mode.
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `save` command of the Grid. Apply this directive to any `button`
17
17
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  * When you click the button with this directive, the
20
20
  * [`save`]({% slug api_grid_gridcomponent %}#toc-save) event fires.
21
21
  * The button with `kendoGridSaveCommand` is automatically hidden when the row is not in edit mode.
@@ -16,7 +16,7 @@ import * as i2 from "../editing/local-data-changes.service";
16
16
  import * as i3 from "../common/adaptiveness.service";
17
17
  /**
18
18
  * Represents the Kendo UI Grid external editing directive. The directive manages editing operations in the Grid when using the
19
- * External Form ([see example](slug:editing_directives_grid#external-editing)).
19
+ * External Form ([see example](slug:external_editing_grid#quick-setup)).
20
20
  *
21
21
  * @example
22
22
  * ```typescript
@@ -12,7 +12,7 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "../grid.component";
13
13
  import * as i2 from "../editing/local-data-changes.service";
14
14
  /**
15
- * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
15
+ * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example](slug:editing_incell_grid#quick-setup)).
16
16
  *
17
17
  * @example
18
18
  * ```html
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "../grid.component";
12
12
  import * as i2 from "../editing/local-data-changes.service";
13
13
  /**
14
- * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:editing_directives_grid#toc-reactive-editing-directive)).
14
+ * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:inline_editing_grid#using-reactive-forms)).
15
15
  *
16
16
  * @example
17
17
  * ```html
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "../grid.component";
11
11
  import * as i2 from "../editing/local-data-changes.service";
12
12
  /**
13
- * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
13
+ * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example](slug:inline_editing_grid#using-template-driven-forms)).
14
14
  *
15
15
  * @example
16
16
  * ```html