@angular/cdk 13.1.0-next.0 → 13.1.0-next.1

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 (153) hide show
  1. package/esm2020/a11y/a11y-module.mjs +5 -5
  2. package/esm2020/a11y/aria-describer/aria-describer.mjs +4 -4
  3. package/esm2020/a11y/focus-monitor/focus-monitor.mjs +7 -7
  4. package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +4 -4
  5. package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +4 -4
  6. package/esm2020/a11y/focus-trap/focus-trap.mjs +7 -7
  7. package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +4 -4
  8. package/esm2020/a11y/input-modality/input-modality-detector.mjs +4 -4
  9. package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +4 -4
  10. package/esm2020/a11y/live-announcer/live-announcer.mjs +7 -7
  11. package/esm2020/accordion/accordion-item.mjs +4 -4
  12. package/esm2020/accordion/accordion-module.mjs +5 -5
  13. package/esm2020/accordion/accordion.mjs +4 -4
  14. package/esm2020/bidi/bidi-module.mjs +5 -5
  15. package/esm2020/bidi/dir.mjs +4 -4
  16. package/esm2020/bidi/directionality.mjs +4 -4
  17. package/esm2020/clipboard/clipboard-module.mjs +5 -5
  18. package/esm2020/clipboard/clipboard.mjs +4 -4
  19. package/esm2020/clipboard/copy-to-clipboard.mjs +4 -4
  20. package/esm2020/collections/unique-selection-dispatcher.mjs +4 -4
  21. package/esm2020/drag-drop/directives/drag-handle.mjs +4 -4
  22. package/esm2020/drag-drop/directives/drag-placeholder.mjs +4 -4
  23. package/esm2020/drag-drop/directives/drag-preview.mjs +4 -4
  24. package/esm2020/drag-drop/directives/drag.mjs +4 -4
  25. package/esm2020/drag-drop/directives/drop-list-group.mjs +4 -4
  26. package/esm2020/drag-drop/directives/drop-list.mjs +4 -4
  27. package/esm2020/drag-drop/drag-drop-module.mjs +5 -5
  28. package/esm2020/drag-drop/drag-drop-registry.mjs +4 -4
  29. package/esm2020/drag-drop/drag-drop.mjs +4 -4
  30. package/esm2020/layout/breakpoints-observer.mjs +4 -4
  31. package/esm2020/layout/layout-module.mjs +5 -5
  32. package/esm2020/layout/media-matcher.mjs +4 -4
  33. package/esm2020/observers/observe-content.mjs +14 -14
  34. package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +4 -4
  35. package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +4 -4
  36. package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +4 -4
  37. package/esm2020/overlay/fullscreen-overlay-container.mjs +4 -4
  38. package/esm2020/overlay/overlay-container.mjs +4 -4
  39. package/esm2020/overlay/overlay-directives.mjs +7 -7
  40. package/esm2020/overlay/overlay-module.mjs +5 -5
  41. package/esm2020/overlay/overlay-ref.mjs +1 -1
  42. package/esm2020/overlay/overlay.mjs +4 -4
  43. package/esm2020/overlay/position/connected-position.mjs +3 -12
  44. package/esm2020/overlay/position/overlay-position-builder.mjs +4 -4
  45. package/esm2020/overlay/scroll/scroll-strategy-options.mjs +4 -4
  46. package/esm2020/platform/features/test-environment.mjs +14 -17
  47. package/esm2020/platform/platform-module.mjs +5 -5
  48. package/esm2020/platform/platform.mjs +4 -4
  49. package/esm2020/portal/portal-directives.mjs +17 -17
  50. package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +4 -4
  51. package/esm2020/scrolling/scroll-dispatcher.mjs +4 -4
  52. package/esm2020/scrolling/scrollable.mjs +4 -4
  53. package/esm2020/scrolling/scrolling-module.mjs +9 -9
  54. package/esm2020/scrolling/viewport-ruler.mjs +4 -4
  55. package/esm2020/scrolling/virtual-for-of.mjs +4 -4
  56. package/esm2020/scrolling/virtual-scroll-viewport.mjs +4 -4
  57. package/esm2020/stepper/step-header.mjs +4 -4
  58. package/esm2020/stepper/step-label.mjs +4 -4
  59. package/esm2020/stepper/stepper-button.mjs +10 -30
  60. package/esm2020/stepper/stepper-module.mjs +5 -5
  61. package/esm2020/stepper/stepper.mjs +7 -7
  62. package/esm2020/table/cell.mjs +22 -22
  63. package/esm2020/table/coalesced-style-scheduler.mjs +4 -4
  64. package/esm2020/table/row.mjs +28 -28
  65. package/esm2020/table/table-module.mjs +5 -5
  66. package/esm2020/table/table.mjs +19 -19
  67. package/esm2020/table/text-column.mjs +4 -4
  68. package/esm2020/text-field/autofill.mjs +7 -7
  69. package/esm2020/text-field/autosize.mjs +6 -12
  70. package/esm2020/text-field/text-field-module.mjs +5 -5
  71. package/esm2020/tree/nested-node.mjs +7 -12
  72. package/esm2020/tree/node.mjs +4 -4
  73. package/esm2020/tree/outlet.mjs +4 -4
  74. package/esm2020/tree/padding.mjs +4 -4
  75. package/esm2020/tree/toggle.mjs +11 -14
  76. package/esm2020/tree/tree-module.mjs +5 -5
  77. package/esm2020/tree/tree.mjs +11 -25
  78. package/esm2020/version.mjs +1 -1
  79. package/fesm2015/a11y.mjs +40 -40
  80. package/fesm2015/a11y.mjs.map +1 -1
  81. package/fesm2015/accordion.mjs +10 -10
  82. package/fesm2015/accordion.mjs.map +1 -1
  83. package/fesm2015/bidi.mjs +10 -10
  84. package/fesm2015/bidi.mjs.map +1 -1
  85. package/fesm2015/cdk.mjs +1 -1
  86. package/fesm2015/cdk.mjs.map +1 -1
  87. package/fesm2015/clipboard.mjs +10 -10
  88. package/fesm2015/clipboard.mjs.map +1 -1
  89. package/fesm2015/collections.mjs +3 -3
  90. package/fesm2015/collections.mjs.map +1 -1
  91. package/fesm2015/drag-drop.mjs +28 -28
  92. package/fesm2015/drag-drop.mjs.map +1 -1
  93. package/fesm2015/layout.mjs +10 -10
  94. package/fesm2015/layout.mjs.map +1 -1
  95. package/fesm2015/observers.mjs +13 -13
  96. package/fesm2015/observers.mjs.map +1 -1
  97. package/fesm2015/overlay.mjs +37 -43
  98. package/fesm2015/overlay.mjs.map +1 -1
  99. package/fesm2015/platform.mjs +20 -23
  100. package/fesm2015/platform.mjs.map +1 -1
  101. package/fesm2015/portal.mjs +16 -16
  102. package/fesm2015/portal.mjs.map +1 -1
  103. package/fesm2015/scrolling.mjs +26 -26
  104. package/fesm2015/scrolling.mjs.map +1 -1
  105. package/fesm2015/stepper.mjs +25 -45
  106. package/fesm2015/stepper.mjs.map +1 -1
  107. package/fesm2015/table.mjs +76 -76
  108. package/fesm2015/table.mjs.map +1 -1
  109. package/fesm2015/text-field.mjs +15 -21
  110. package/fesm2015/text-field.mjs.map +1 -1
  111. package/fesm2015/tree.mjs +39 -61
  112. package/fesm2015/tree.mjs.map +1 -1
  113. package/fesm2020/a11y.mjs +40 -40
  114. package/fesm2020/a11y.mjs.map +1 -1
  115. package/fesm2020/accordion.mjs +10 -10
  116. package/fesm2020/accordion.mjs.map +1 -1
  117. package/fesm2020/bidi.mjs +10 -10
  118. package/fesm2020/bidi.mjs.map +1 -1
  119. package/fesm2020/cdk.mjs +1 -1
  120. package/fesm2020/cdk.mjs.map +1 -1
  121. package/fesm2020/clipboard.mjs +10 -10
  122. package/fesm2020/clipboard.mjs.map +1 -1
  123. package/fesm2020/collections.mjs +3 -3
  124. package/fesm2020/collections.mjs.map +1 -1
  125. package/fesm2020/drag-drop.mjs +28 -28
  126. package/fesm2020/drag-drop.mjs.map +1 -1
  127. package/fesm2020/layout.mjs +10 -10
  128. package/fesm2020/layout.mjs.map +1 -1
  129. package/fesm2020/observers.mjs +13 -13
  130. package/fesm2020/observers.mjs.map +1 -1
  131. package/fesm2020/overlay.mjs +37 -43
  132. package/fesm2020/overlay.mjs.map +1 -1
  133. package/fesm2020/platform.mjs +20 -23
  134. package/fesm2020/platform.mjs.map +1 -1
  135. package/fesm2020/portal.mjs +16 -16
  136. package/fesm2020/portal.mjs.map +1 -1
  137. package/fesm2020/scrolling.mjs +26 -26
  138. package/fesm2020/scrolling.mjs.map +1 -1
  139. package/fesm2020/stepper.mjs +25 -45
  140. package/fesm2020/stepper.mjs.map +1 -1
  141. package/fesm2020/table.mjs +76 -76
  142. package/fesm2020/table.mjs.map +1 -1
  143. package/fesm2020/text-field.mjs +15 -21
  144. package/fesm2020/text-field.mjs.map +1 -1
  145. package/fesm2020/tree.mjs +39 -61
  146. package/fesm2020/tree.mjs.map +1 -1
  147. package/overlay/position/connected-position.d.ts +1 -0
  148. package/package.json +1 -1
  149. package/schematics/ng-add/index.js +1 -1
  150. package/schematics/ng-add/index.mjs +1 -1
  151. package/stepper/stepper-button.d.ts +0 -2
  152. package/tree/nested-node.d.ts +2 -3
  153. package/tree/tree.d.ts +2 -5
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/cdk/platform';
2
2
  import { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, HostListener, NgModule } from '@angular/core';
4
+ import { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';
5
5
  import { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
6
6
  import { EMPTY, Subject, fromEvent } from 'rxjs';
7
7
  import { auditTime, takeUntil } from 'rxjs/operators';
@@ -80,9 +80,9 @@ class AutofillMonitor {
80
80
  this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));
81
81
  }
82
82
  }
83
- AutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
84
- AutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AutofillMonitor, decorators: [{
83
+ AutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ AutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AutofillMonitor, decorators: [{
86
86
  type: Injectable,
87
87
  args: [{ providedIn: 'root' }]
88
88
  }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });
@@ -103,9 +103,9 @@ class CdkAutofill {
103
103
  this._autofillMonitor.stopMonitoring(this._elementRef);
104
104
  }
105
105
  }
106
- CdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });
107
- CdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkAutofill, selector: "[cdkAutofill]", outputs: { cdkAutofill: "cdkAutofill" }, ngImport: i0 });
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkAutofill, decorators: [{
106
+ CdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });
107
+ CdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkAutofill, selector: "[cdkAutofill]", outputs: { cdkAutofill: "cdkAutofill" }, ngImport: i0 });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkAutofill, decorators: [{
109
109
  type: Directive,
110
110
  args: [{
111
111
  selector: '[cdkAutofill]',
@@ -347,10 +347,6 @@ class CdkTextareaAutosize {
347
347
  this._textareaElement.style.height = this._initialHeight;
348
348
  }
349
349
  }
350
- // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order
351
- // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we
352
- // can move this back into `host`.
353
- // tslint:disable:no-host-decorator-in-concrete
354
350
  _noopInputHandler() {
355
351
  // no-op handler that ensures we're running change detection on input events.
356
352
  }
@@ -381,9 +377,9 @@ class CdkTextareaAutosize {
381
377
  }
382
378
  }
383
379
  }
384
- CdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
385
- CdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: { minRows: ["cdkAutosizeMinRows", "minRows"], maxRows: ["cdkAutosizeMaxRows", "maxRows"], enabled: ["cdkTextareaAutosize", "enabled"], placeholder: "placeholder" }, host: { attributes: { "rows": "1" }, listeners: { "input": "_noopInputHandler()" }, classAttribute: "cdk-textarea-autosize" }, exportAs: ["cdkTextareaAutosize"], ngImport: i0 });
386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTextareaAutosize, decorators: [{
380
+ CdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
381
+ CdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: { minRows: ["cdkAutosizeMinRows", "minRows"], maxRows: ["cdkAutosizeMaxRows", "maxRows"], enabled: ["cdkTextareaAutosize", "enabled"], placeholder: "placeholder" }, host: { attributes: { "rows": "1" }, listeners: { "input": "_noopInputHandler()" }, classAttribute: "cdk-textarea-autosize" }, exportAs: ["cdkTextareaAutosize"], ngImport: i0 });
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTextareaAutosize, decorators: [{
387
383
  type: Directive,
388
384
  args: [{
389
385
  selector: 'textarea[cdkTextareaAutosize]',
@@ -393,6 +389,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ng
393
389
  // Textarea elements that have the directive applied should have a single row by default.
394
390
  // Browsers normally show two rows by default and therefore this limits the minRows binding.
395
391
  'rows': '1',
392
+ '(input)': '_noopInputHandler()',
396
393
  },
397
394
  }]
398
395
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{
@@ -411,9 +408,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ng
411
408
  args: ['cdkTextareaAutosize']
412
409
  }], placeholder: [{
413
410
  type: Input
414
- }], _noopInputHandler: [{
415
- type: HostListener,
416
- args: ['input']
417
411
  }] } });
418
412
 
419
413
  /**
@@ -425,10 +419,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ng
425
419
  */
426
420
  class TextFieldModule {
427
421
  }
428
- TextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
429
- TextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize] });
430
- TextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: TextFieldModule, imports: [[PlatformModule]] });
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: TextFieldModule, decorators: [{
422
+ TextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
423
+ TextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize] });
424
+ TextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldModule, imports: [[PlatformModule]] });
425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TextFieldModule, decorators: [{
432
426
  type: NgModule,
433
427
  args: [{
434
428
  declarations: [CdkAutofill, CdkTextareaAutosize],
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.mjs","sources":["../../../../../../src/cdk/text-field/autofill.ts","../../../../../../src/cdk/text-field/autosize.ts","../../../../../../src/cdk/text-field/text-field-module.ts","../../../../../../src/cdk/text-field/public-api.ts","../../../../../../src/cdk/text-field/index.ts","../../../../../../src/cdk/text-field/text-field_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injectable,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {EMPTY, Observable, Subject} from 'rxjs';\n\n/** An event that is emitted when the autofill state of an input changes. */\nexport type AutofillEvent = {\n /** The element whose autofill state changes. */\n target: Element;\n /** Whether the element is currently autofilled. */\n isAutofilled: boolean;\n};\n\n/** Used to track info about currently monitored elements. */\ntype MonitoredElementInfo = {\n readonly subject: Subject<AutofillEvent>;\n unlisten: () => void;\n};\n\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({passive: true});\n\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\n@Injectable({providedIn: 'root'})\nexport class AutofillMonitor implements OnDestroy {\n private _monitoredElements = new Map<Element, MonitoredElementInfo>();\n\n constructor(private _platform: Platform, private _ngZone: NgZone) {}\n\n /**\n * Monitor for changes in the autofill state of the given input element.\n * @param element The element to monitor.\n * @return A stream of autofill state changes.\n */\n monitor(element: Element): Observable<AutofillEvent>;\n\n /**\n * Monitor for changes in the autofill state of the given input element.\n * @param element The element to monitor.\n * @return A stream of autofill state changes.\n */\n monitor(element: ElementRef<Element>): Observable<AutofillEvent>;\n\n monitor(elementOrRef: Element | ElementRef<Element>): Observable<AutofillEvent> {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n\n if (info) {\n return info.subject;\n }\n\n const result = new Subject<AutofillEvent>();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event: AnimationEvent) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (\n event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)\n ) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: true}));\n } else if (\n event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)\n ) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: false}));\n }\n }) as EventListenerOrEventListenerObject;\n\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n\n return result;\n }\n\n /**\n * Stop monitoring the autofill state of the given input element.\n * @param element The element to stop monitoring.\n */\n stopMonitoring(element: Element): void;\n\n /**\n * Stop monitoring the autofill state of the given input element.\n * @param element The element to stop monitoring.\n */\n stopMonitoring(element: ElementRef<Element>): void;\n\n stopMonitoring(elementOrRef: Element | ElementRef<Element>): void {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\n\n/** A directive that can be used to monitor the autofill state of an input. */\n@Directive({\n selector: '[cdkAutofill]',\n})\nexport class CdkAutofill implements OnDestroy, OnInit {\n /** Emits when the autofill state of the element changes. */\n @Output() readonly cdkAutofill = new EventEmitter<AutofillEvent>();\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _autofillMonitor: AutofillMonitor,\n ) {}\n\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n Input,\n AfterViewInit,\n DoCheck,\n OnDestroy,\n NgZone,\n HostListener,\n Optional,\n Inject,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {auditTime, takeUntil} from 'rxjs/operators';\nimport {fromEvent, Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\n\n/** Directive to automatically resize a textarea to fit its content. */\n@Directive({\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {\n /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */\n private _previousValue?: string;\n private _initialHeight: string | undefined;\n private readonly _destroyed = new Subject<void>();\n\n private _minRows: number;\n private _maxRows: number;\n private _enabled: boolean = true;\n\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n private _previousMinRows: number = -1;\n\n private _textareaElement: HTMLTextAreaElement;\n\n /** Minimum amount of rows in the textarea. */\n @Input('cdkAutosizeMinRows')\n get minRows(): number {\n return this._minRows;\n }\n set minRows(value: number) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n\n /** Maximum amount of rows in the textarea. */\n @Input('cdkAutosizeMaxRows')\n get maxRows(): number {\n return this._maxRows;\n }\n set maxRows(value: number) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n\n /** Whether autosizing is enabled or not */\n @Input('cdkTextareaAutosize')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: boolean) {\n value = coerceBooleanProperty(value);\n\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n\n @Input()\n get placeholder(): string {\n return this._textareaElement.placeholder;\n }\n set placeholder(value: string) {\n this._cachedPlaceholderHeight = undefined;\n this._textareaElement.placeholder = value;\n this._cacheTextareaPlaceholderHeight();\n }\n\n /** Cached height of a textarea with a single row. */\n private _cachedLineHeight: number;\n /** Cached height of a textarea with only the placeholder. */\n private _cachedPlaceholderHeight?: number;\n\n /** Used to reference correct document/window */\n protected _document?: Document;\n\n private _hasFocus: boolean;\n\n private _isViewInited = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _platform: Platform,\n private _ngZone: NgZone,\n /** @breaking-change 11.0.0 make document required */\n @Optional() @Inject(DOCUMENT) document?: any,\n ) {\n this._document = document;\n\n this._textareaElement = this._elementRef.nativeElement as HTMLTextAreaElement;\n }\n\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight(): void {\n const minHeight =\n this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight(): void {\n const maxHeight =\n this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n private _cacheTextareaLineHeight(): void {\n if (this._cachedLineHeight) {\n return;\n }\n\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false) as HTMLTextAreaElement;\n textareaClone.rows = 1;\n\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n\n this._textareaElement.parentNode!.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n\n private _measureScrollHeight(): number {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n\n return scrollHeight;\n }\n\n private _cacheTextareaPlaceholderHeight(): void {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n\n const value = this._textareaElement.value;\n\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n\n /** Handles `focus` and `blur` events. */\n private _handleFocusEvent = (event: FocusEvent) => {\n this._hasFocus = event.type === 'focus';\n };\n\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force: boolean = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n\n const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n const value = textarea.value;\n\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n } else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n\n // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order\n // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we\n // can move this back into `host`.\n // tslint:disable:no-host-decorator-in-concrete\n @HostListener('input')\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n\n /** Access injected document if available or fallback to global document reference */\n private _getDocument(): Document {\n return this._document || document;\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n private _scrollToCaretPosition(textarea: HTMLTextAreaElement) {\n const {selectionStart, selectionEnd} = textarea;\n\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n\n static ngAcceptInputType_minRows: NumberInput;\n static ngAcceptInputType_maxRows: NumberInput;\n static ngAcceptInputType_enabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {CdkAutofill} from './autofill';\nimport {CdkTextareaAutosize} from './autosize';\n\n@NgModule({\n declarations: [CdkAutofill, CdkTextareaAutosize],\n imports: [PlatformModule],\n exports: [CdkAutofill, CdkTextareaAutosize],\n})\nexport class TextFieldModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autofill';\nexport * from './autosize';\nexport * from './text-field-module';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;AAoCA;AACA,MAAM,eAAe,GAAG,+BAA+B,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAEzE;;;;;MAMa,eAAe;IAG1B,YAAoB,SAAmB,EAAU,OAAe;QAA5C,cAAS,GAAT,SAAS,CAAU;QAAU,YAAO,GAAP,OAAO,CAAQ;QAFxD,uBAAkB,GAAG,IAAI,GAAG,EAAiC,CAAC;KAEF;IAgBpE,OAAO,CAAC,YAA2C;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAED,MAAM,MAAM,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC5C,MAAM,QAAQ,GAAG,2BAA2B,CAAC;QAC7C,MAAM,QAAQ,IAAI,CAAC,KAAqB;;;;YAItC,IACE,KAAK,CAAC,aAAa,KAAK,+BAA+B;gBACvD,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACrC;gBACA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,MAAiB,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;aAC5F;iBAAM,IACL,KAAK,CAAC,aAAa,KAAK,6BAA6B;gBACrD,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACpC;gBACA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,MAAiB,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;aAC7F;SACF,CAAuC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC7B,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YACtE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE;YACnC,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE;gBACR,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;aAC1E;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACf;IAcD,cAAc,CAAC,YAA2C;QACxD,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAC9D,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzC;KACF;IAED,WAAW;QACT,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;KACnF;;iHA9FU,eAAe;qHAAf,eAAe,cADH,MAAM;gGAClB,eAAe;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;AAkGhC;MAIa,WAAW;IAItB,YACU,WAAoC,EACpC,gBAAiC;QADjC,gBAAW,GAAX,WAAW,CAAyB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAiB;;QAJxB,gBAAW,GAAG,IAAI,YAAY,EAAiB,CAAC;KAK/D;IAEJ,QAAQ;QACN,IAAI,CAAC,gBAAgB;aAClB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;aACzB,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACrD;IAED,WAAW;QACT,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxD;;6GAjBU,WAAW,4CAMM,eAAe;iGANhC,WAAW;gGAAX,WAAW;kBAHvB,SAAS;mBAAC;oBACT,QAAQ,EAAE,eAAe;iBAC1B;mFAO6B,eAAe,0BAJxB,WAAW;sBAA7B,MAAM;;;ACpJT;;;;;;;AA+BA;MAWa,mBAAmB;IA4E9B,YACU,WAAoC,EACpC,SAAmB,EACnB,OAAe;;IAEO,QAAc;QAJpC,gBAAW,GAAX,WAAW,CAAyB;QACpC,cAAS,GAAT,SAAS,CAAU;QACnB,YAAO,GAAP,OAAO,CAAQ;QA3ER,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;QAI1C,aAAQ,GAAY,IAAI,CAAC;;;;;;QAOzB,qBAAgB,GAAW,CAAC,CAAC,CAAC;QA2D9B,kBAAa,GAAG,KAAK,CAAC;;QA0JtB,sBAAiB,GAAG,CAAC,KAAiB;YAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;SACzC,CAAC;QAnJA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAoC,CAAC;KAC/E;;IAlED,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;IAGD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;IAGD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAc;QACxB,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;;;QAIrC,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SACxE;KACF;IAED,IACI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;KAC1C;IACD,IAAI,WAAW,CAAC,KAAa;QAC3B,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,+BAA+B,EAAE,CAAC;KACxC;;IA2BD,aAAa;QACX,MAAM,SAAS,GACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,IAAI,GAAG,IAAI,CAAC;QAE/F,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;SACnD;KACF;;IAGD,aAAa;QACX,MAAM,SAAS,GACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,IAAI,GAAG,IAAI,CAAC;QAE/F,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;SACnD;KACF;IAED,eAAe;QACb,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;;YAE5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;YACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAEjC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;qBACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAC/C,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAElD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACxE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACxE,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC/B;KACF;IAED,WAAW;QACT,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;;;;;;;IASO,wBAAwB;QAC9B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO;SACR;;QAGD,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAwB,CAAC;QAClF,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;;;;QAKvB,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC1C,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC1C,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACpC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAClC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAChC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;;;;;QAOnC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAExC,IAAI,CAAC,gBAAgB,CAAC,UAAW,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,YAAY,CAAC;QACpD,aAAa,CAAC,MAAM,EAAE,CAAC;;QAGvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACzC,MAAM,iBAAiB,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACtD,MAAM,cAAc,GAAG,SAAS;cAC5B,yCAAyC;cACzC,iCAAiC,CAAC;;;;QAKtC,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;SAC1D;;;QAID,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;;;QAGtC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC;SAC7C;QAED,OAAO,YAAY,CAAC;KACrB;IAEO,+BAA+B;QACrC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS,EAAE;YACrE,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAClC,OAAO;SACR;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAChE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;KACrC;IAOD,SAAS;QACP,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;;;;;;IAOD,kBAAkB,CAAC,QAAiB,KAAK;;QAEvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACR;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,+BAA+B,EAAE,CAAC;;;QAIvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAoC,CAAC;QACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;;QAG7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,IAAI,KAAK,KAAK,IAAI,CAAC,cAAc,EAAE;YACtF,OAAO;SACR;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;;QAG1E,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QAEtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC7B,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;gBAChD,qBAAqB,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;aACpE;iBAAM;gBACL,UAAU,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;aACzD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;KACvC;;;;IAKD,KAAK;;;QAGH,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;SAC1D;KACF;;;;;IAOD,iBAAiB;;KAEhB;;IAGO,YAAY;QAClB,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;KACnC;;IAGO,UAAU;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;KAClC;;;;;;IAOO,sBAAsB,CAAC,QAA6B;QAC1D,MAAM,EAAC,cAAc,EAAE,YAAY,EAAC,GAAG,QAAQ,CAAC;;;;;;;QAQhD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;YAChD,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;SAC1D;KACF;;qHA5UU,mBAAmB,0FAiFR,QAAQ;yGAjFnB,mBAAmB;gGAAnB,mBAAmB;kBAV/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,+BAA+B;oBACzC,QAAQ,EAAE,qBAAqB;oBAC/B,IAAI,EAAE;wBACJ,OAAO,EAAE,uBAAuB;;;wBAGhC,MAAM,EAAE,GAAG;qBACZ;iBACF;;0BAkFI,QAAQ;;0BAAI,MAAM;2BAAC,QAAQ;4CA5D1B,OAAO;sBADV,KAAK;uBAAC,oBAAoB;gBAWvB,OAAO;sBADV,KAAK;uBAAC,oBAAoB;gBAWvB,OAAO;sBADV,KAAK;uBAAC,qBAAqB;gBAexB,WAAW;sBADd,KAAK;gBAsPN,iBAAiB;sBADhB,YAAY;uBAAC,OAAO;;;ACrVvB;;;;;;;MAkBa,eAAe;;iHAAf,eAAe;kHAAf,eAAe,iBAJX,WAAW,EAAE,mBAAmB,aACrC,cAAc,aACd,WAAW,EAAE,mBAAmB;kHAE/B,eAAe,YAHjB,CAAC,cAAc,CAAC;gGAGd,eAAe;kBAL3B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;oBAChD,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;iBAC5C;;;ACjBD;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"text-field.mjs","sources":["../../../../../../src/cdk/text-field/autofill.ts","../../../../../../src/cdk/text-field/autosize.ts","../../../../../../src/cdk/text-field/text-field-module.ts","../../../../../../src/cdk/text-field/public-api.ts","../../../../../../src/cdk/text-field/index.ts","../../../../../../src/cdk/text-field/text-field_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injectable,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {EMPTY, Observable, Subject} from 'rxjs';\n\n/** An event that is emitted when the autofill state of an input changes. */\nexport type AutofillEvent = {\n /** The element whose autofill state changes. */\n target: Element;\n /** Whether the element is currently autofilled. */\n isAutofilled: boolean;\n};\n\n/** Used to track info about currently monitored elements. */\ntype MonitoredElementInfo = {\n readonly subject: Subject<AutofillEvent>;\n unlisten: () => void;\n};\n\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({passive: true});\n\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\n@Injectable({providedIn: 'root'})\nexport class AutofillMonitor implements OnDestroy {\n private _monitoredElements = new Map<Element, MonitoredElementInfo>();\n\n constructor(private _platform: Platform, private _ngZone: NgZone) {}\n\n /**\n * Monitor for changes in the autofill state of the given input element.\n * @param element The element to monitor.\n * @return A stream of autofill state changes.\n */\n monitor(element: Element): Observable<AutofillEvent>;\n\n /**\n * Monitor for changes in the autofill state of the given input element.\n * @param element The element to monitor.\n * @return A stream of autofill state changes.\n */\n monitor(element: ElementRef<Element>): Observable<AutofillEvent>;\n\n monitor(elementOrRef: Element | ElementRef<Element>): Observable<AutofillEvent> {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n\n if (info) {\n return info.subject;\n }\n\n const result = new Subject<AutofillEvent>();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event: AnimationEvent) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (\n event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)\n ) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: true}));\n } else if (\n event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)\n ) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: false}));\n }\n }) as EventListenerOrEventListenerObject;\n\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n\n return result;\n }\n\n /**\n * Stop monitoring the autofill state of the given input element.\n * @param element The element to stop monitoring.\n */\n stopMonitoring(element: Element): void;\n\n /**\n * Stop monitoring the autofill state of the given input element.\n * @param element The element to stop monitoring.\n */\n stopMonitoring(element: ElementRef<Element>): void;\n\n stopMonitoring(elementOrRef: Element | ElementRef<Element>): void {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\n\n/** A directive that can be used to monitor the autofill state of an input. */\n@Directive({\n selector: '[cdkAutofill]',\n})\nexport class CdkAutofill implements OnDestroy, OnInit {\n /** Emits when the autofill state of the element changes. */\n @Output() readonly cdkAutofill = new EventEmitter<AutofillEvent>();\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _autofillMonitor: AutofillMonitor,\n ) {}\n\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n Input,\n AfterViewInit,\n DoCheck,\n OnDestroy,\n NgZone,\n Optional,\n Inject,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {auditTime, takeUntil} from 'rxjs/operators';\nimport {fromEvent, Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\n\n/** Directive to automatically resize a textarea to fit its content. */\n@Directive({\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n})\nexport class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {\n /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */\n private _previousValue?: string;\n private _initialHeight: string | undefined;\n private readonly _destroyed = new Subject<void>();\n\n private _minRows: number;\n private _maxRows: number;\n private _enabled: boolean = true;\n\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n private _previousMinRows: number = -1;\n\n private _textareaElement: HTMLTextAreaElement;\n\n /** Minimum amount of rows in the textarea. */\n @Input('cdkAutosizeMinRows')\n get minRows(): number {\n return this._minRows;\n }\n set minRows(value: number) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n\n /** Maximum amount of rows in the textarea. */\n @Input('cdkAutosizeMaxRows')\n get maxRows(): number {\n return this._maxRows;\n }\n set maxRows(value: number) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n\n /** Whether autosizing is enabled or not */\n @Input('cdkTextareaAutosize')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: boolean) {\n value = coerceBooleanProperty(value);\n\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n\n @Input()\n get placeholder(): string {\n return this._textareaElement.placeholder;\n }\n set placeholder(value: string) {\n this._cachedPlaceholderHeight = undefined;\n this._textareaElement.placeholder = value;\n this._cacheTextareaPlaceholderHeight();\n }\n\n /** Cached height of a textarea with a single row. */\n private _cachedLineHeight: number;\n /** Cached height of a textarea with only the placeholder. */\n private _cachedPlaceholderHeight?: number;\n\n /** Used to reference correct document/window */\n protected _document?: Document;\n\n private _hasFocus: boolean;\n\n private _isViewInited = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _platform: Platform,\n private _ngZone: NgZone,\n /** @breaking-change 11.0.0 make document required */\n @Optional() @Inject(DOCUMENT) document?: any,\n ) {\n this._document = document;\n\n this._textareaElement = this._elementRef.nativeElement as HTMLTextAreaElement;\n }\n\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight(): void {\n const minHeight =\n this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight(): void {\n const maxHeight =\n this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n private _cacheTextareaLineHeight(): void {\n if (this._cachedLineHeight) {\n return;\n }\n\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false) as HTMLTextAreaElement;\n textareaClone.rows = 1;\n\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n\n this._textareaElement.parentNode!.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n\n private _measureScrollHeight(): number {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n\n return scrollHeight;\n }\n\n private _cacheTextareaPlaceholderHeight(): void {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n\n const value = this._textareaElement.value;\n\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n\n /** Handles `focus` and `blur` events. */\n private _handleFocusEvent = (event: FocusEvent) => {\n this._hasFocus = event.type === 'focus';\n };\n\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force: boolean = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n\n const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;\n const value = textarea.value;\n\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n } else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n\n /** Access injected document if available or fallback to global document reference */\n private _getDocument(): Document {\n return this._document || document;\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n private _scrollToCaretPosition(textarea: HTMLTextAreaElement) {\n const {selectionStart, selectionEnd} = textarea;\n\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n\n static ngAcceptInputType_minRows: NumberInput;\n static ngAcceptInputType_maxRows: NumberInput;\n static ngAcceptInputType_enabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {CdkAutofill} from './autofill';\nimport {CdkTextareaAutosize} from './autosize';\n\n@NgModule({\n declarations: [CdkAutofill, CdkTextareaAutosize],\n imports: [PlatformModule],\n exports: [CdkAutofill, CdkTextareaAutosize],\n})\nexport class TextFieldModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autofill';\nexport * from './autosize';\nexport * from './text-field-module';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/fesm2020/tree.mjs CHANGED
@@ -2,7 +2,7 @@ import { SelectionModel, isDataSource } from '@angular/cdk/collections';
2
2
  import { isObservable, Subject, BehaviorSubject, of } from 'rxjs';
3
3
  import { take, filter, takeUntil } from 'rxjs/operators';
4
4
  import * as i0 from '@angular/core';
5
- import { InjectionToken, Directive, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ContentChildren, HostListener, NgModule } from '@angular/core';
5
+ import { InjectionToken, Directive, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
6
6
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
7
7
  import * as i2 from '@angular/cdk/bidi';
8
8
 
@@ -190,9 +190,9 @@ class CdkTreeNodeOutlet {
190
190
  this._node = _node;
191
191
  }
192
192
  }
193
- CdkTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
194
- CdkTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]", ngImport: i0 });
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeOutlet, decorators: [{
193
+ CdkTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
194
+ CdkTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]", ngImport: i0 });
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeOutlet, decorators: [{
196
196
  type: Directive,
197
197
  args: [{
198
198
  selector: '[cdkTreeNodeOutlet]',
@@ -227,9 +227,9 @@ class CdkTreeNodeDef {
227
227
  this.template = template;
228
228
  }
229
229
  }
230
- CdkTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
231
- CdkTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: { when: ["cdkTreeNodeDefWhen", "when"] }, ngImport: i0 });
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeDef, decorators: [{
230
+ CdkTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
231
+ CdkTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: { when: ["cdkTreeNodeDefWhen", "when"] }, ngImport: i0 });
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeDef, decorators: [{
233
233
  type: Directive,
234
234
  args: [{
235
235
  selector: '[cdkTreeNodeDef]',
@@ -458,9 +458,9 @@ class CdkTree {
458
458
  }
459
459
  }
460
460
  }
461
- CdkTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTree, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
462
- CdkTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTree, selector: "cdk-tree", inputs: { dataSource: "dataSource", treeControl: "treeControl", trackBy: "trackBy" }, host: { attributes: { "role": "tree" }, classAttribute: "cdk-tree" }, queries: [{ propertyName: "_nodeDefs", predicate: CdkTreeNodeDef, descendants: true }], viewQueries: [{ propertyName: "_nodeOutlet", first: true, predicate: CdkTreeNodeOutlet, descendants: true, static: true }], exportAs: ["cdkTree"], ngImport: i0, template: `<ng-container cdkTreeNodeOutlet></ng-container>`, isInline: true, directives: [{ type: CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
463
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTree, decorators: [{
461
+ CdkTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTree, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
462
+ CdkTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: CdkTree, selector: "cdk-tree", inputs: { dataSource: "dataSource", treeControl: "treeControl", trackBy: "trackBy" }, host: { attributes: { "role": "tree" }, classAttribute: "cdk-tree" }, queries: [{ propertyName: "_nodeDefs", predicate: CdkTreeNodeDef, descendants: true }], viewQueries: [{ propertyName: "_nodeOutlet", first: true, predicate: CdkTreeNodeOutlet, descendants: true, static: true }], exportAs: ["cdkTree"], ngImport: i0, template: `<ng-container cdkTreeNodeOutlet></ng-container>`, isInline: true, directives: [{ type: CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTree, decorators: [{
464
464
  type: Component,
465
465
  args: [{
466
466
  selector: 'cdk-tree',
@@ -506,11 +506,6 @@ class CdkTreeNode {
506
506
  /** Emits when the node's data has changed. */
507
507
  this._dataChanges = new Subject();
508
508
  CdkTreeNode.mostRecentTreeNode = this;
509
- // The classes are directly added here instead of in the host property because classes on
510
- // the host property are not inherited with View Engine. It is not set as a @HostBinding because
511
- // it is not set by the time it's children nodes try to read the class from it.
512
- // TODO: move to host after View Engine deprecation
513
- this._elementRef.nativeElement.classList.add('cdk-tree-node');
514
509
  this.role = 'treeitem';
515
510
  }
516
511
  /**
@@ -540,10 +535,6 @@ class CdkTreeNode {
540
535
  get isExpanded() {
541
536
  return this._tree.treeControl.isExpanded(this._data);
542
537
  }
543
- _setExpanded(_expanded) {
544
- this._isAriaExpanded = _expanded;
545
- this._elementRef.nativeElement.setAttribute('aria-expanded', `${_expanded}`);
546
- }
547
538
  get level() {
548
539
  // If the treeControl has a getLevel method, use it to get the level. Otherwise read the
549
540
  // aria-level off the parent node and use it as the level for this node (note aria-level is
@@ -556,15 +547,6 @@ class CdkTreeNode {
556
547
  this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);
557
548
  this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`);
558
549
  }
559
- ngDoCheck() {
560
- // aria-expanded is be set here because the expanded state is stored in the tree control and
561
- // the node isn't aware when the state is changed.
562
- // It is not set using a @HostBinding because they sometimes get lost with Mixin based classes.
563
- // TODO: move to host after View Engine deprecation
564
- if (this.isExpanded != this._isAriaExpanded) {
565
- this._setExpanded(this.isExpanded);
566
- }
567
- }
568
550
  ngOnDestroy() {
569
551
  // If this is the last tree node being destroyed,
570
552
  // clear out the reference to avoid leaking memory.
@@ -594,13 +576,17 @@ class CdkTreeNode {
594
576
  * in `CdkTree` and set the data to it.
595
577
  */
596
578
  CdkTreeNode.mostRecentTreeNode = null;
597
- CdkTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }], target: i0.ɵɵFactoryTarget.Directive });
598
- CdkTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTreeNode, selector: "cdk-tree-node", inputs: { role: "role" }, exportAs: ["cdkTreeNode"], ngImport: i0 });
599
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNode, decorators: [{
579
+ CdkTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }], target: i0.ɵɵFactoryTarget.Directive });
580
+ CdkTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTreeNode, selector: "cdk-tree-node", inputs: { role: "role" }, host: { properties: { "attr.aria-expanded": "isExpanded" }, classAttribute: "cdk-tree-node" }, exportAs: ["cdkTreeNode"], ngImport: i0 });
581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNode, decorators: [{
600
582
  type: Directive,
601
583
  args: [{
602
584
  selector: 'cdk-tree-node',
603
585
  exportAs: 'cdkTreeNode',
586
+ host: {
587
+ 'class': 'cdk-tree-node',
588
+ '[attr.aria-expanded]': 'isExpanded',
589
+ },
604
590
  }]
605
591
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }]; }, propDecorators: { role: [{
606
592
  type: Input
@@ -648,11 +634,6 @@ class CdkNestedTreeNode extends CdkTreeNode {
648
634
  constructor(elementRef, tree, _differs) {
649
635
  super(elementRef, tree);
650
636
  this._differs = _differs;
651
- // The classes are directly added here instead of in the host property because classes on
652
- // the host property are not inherited with View Engine. It is not set as a @HostBinding because
653
- // it is not set by the time it's children nodes try to read the class from it.
654
- // TODO: move to host after View Engine deprecation
655
- elementRef.nativeElement.classList.add('cdk-nested-tree-node');
656
637
  }
657
638
  ngAfterContentInit() {
658
639
  this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);
@@ -677,9 +658,6 @@ class CdkNestedTreeNode extends CdkTreeNode {
677
658
  ngOnInit() {
678
659
  super.ngOnInit();
679
660
  }
680
- ngDoCheck() {
681
- super.ngDoCheck();
682
- }
683
661
  ngOnDestroy() {
684
662
  this._clear();
685
663
  super.ngOnDestroy();
@@ -715,12 +693,12 @@ class CdkNestedTreeNode extends CdkTreeNode {
715
693
  return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);
716
694
  }
717
695
  }
718
- CdkNestedTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
719
- CdkNestedTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: { role: "role", disabled: "disabled", tabIndex: "tabIndex" }, providers: [
696
+ CdkNestedTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
697
+ CdkNestedTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: { role: "role", disabled: "disabled", tabIndex: "tabIndex" }, host: { classAttribute: "cdk-nested-tree-node" }, providers: [
720
698
  { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },
721
699
  { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },
722
700
  ], queries: [{ propertyName: "nodeOutlet", predicate: CdkTreeNodeOutlet, descendants: true }], exportAs: ["cdkNestedTreeNode"], usesInheritance: true, ngImport: i0 });
723
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkNestedTreeNode, decorators: [{
701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkNestedTreeNode, decorators: [{
724
702
  type: Directive,
725
703
  args: [{
726
704
  selector: 'cdk-nested-tree-node',
@@ -730,6 +708,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ng
730
708
  { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },
731
709
  { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },
732
710
  ],
711
+ host: {
712
+ 'class': 'cdk-nested-tree-node',
713
+ },
733
714
  }]
734
715
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }, { type: i0.IterableDiffers }]; }, propDecorators: { nodeOutlet: [{
735
716
  type: ContentChildren,
@@ -845,9 +826,9 @@ class CdkTreeNodePadding {
845
826
  this._setPadding();
846
827
  }
847
828
  }
848
- CdkTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodePadding, deps: [{ token: CdkTreeNode }, { token: CdkTree }, { token: i0.ElementRef }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
849
- CdkTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTreeNodePadding, selector: "[cdkTreeNodePadding]", inputs: { level: ["cdkTreeNodePadding", "level"], indent: ["cdkTreeNodePaddingIndent", "indent"] }, ngImport: i0 });
850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodePadding, decorators: [{
829
+ CdkTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodePadding, deps: [{ token: CdkTreeNode }, { token: CdkTree }, { token: i0.ElementRef }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
830
+ CdkTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTreeNodePadding, selector: "[cdkTreeNodePadding]", inputs: { level: ["cdkTreeNodePadding", "level"], indent: ["cdkTreeNodePaddingIndent", "indent"] }, ngImport: i0 });
831
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodePadding, decorators: [{
851
832
  type: Directive,
852
833
  args: [{
853
834
  selector: '[cdkTreeNodePadding]',
@@ -885,11 +866,6 @@ class CdkTreeNodeToggle {
885
866
  set recursive(value) {
886
867
  this._recursive = coerceBooleanProperty(value);
887
868
  }
888
- // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
889
- // In Ivy the `host` bindings will be merged when this class is extended, whereas in
890
- // ViewEngine they're overwritten.
891
- // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
892
- // tslint:disable-next-line:no-host-decorator-in-concrete
893
869
  _toggle(event) {
894
870
  this.recursive
895
871
  ? this._tree.treeControl.toggleDescendants(this._treeNode.data)
@@ -897,17 +873,19 @@ class CdkTreeNodeToggle {
897
873
  event.stopPropagation();
898
874
  }
899
875
  }
900
- CdkTreeNodeToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeToggle, deps: [{ token: CdkTree }, { token: CdkTreeNode }], target: i0.ɵɵFactoryTarget.Directive });
901
- CdkTreeNodeToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: { recursive: ["cdkTreeNodeToggleRecursive", "recursive"] }, host: { listeners: { "click": "_toggle($event)" } }, ngImport: i0 });
902
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeNodeToggle, decorators: [{
876
+ CdkTreeNodeToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeToggle, deps: [{ token: CdkTree }, { token: CdkTreeNode }], target: i0.ɵɵFactoryTarget.Directive });
877
+ CdkTreeNodeToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: { recursive: ["cdkTreeNodeToggleRecursive", "recursive"] }, host: { listeners: { "click": "_toggle($event)" } }, ngImport: i0 });
878
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeNodeToggle, decorators: [{
903
879
  type: Directive,
904
- args: [{ selector: '[cdkTreeNodeToggle]' }]
880
+ args: [{
881
+ selector: '[cdkTreeNodeToggle]',
882
+ host: {
883
+ '(click)': '_toggle($event)',
884
+ },
885
+ }]
905
886
  }], ctorParameters: function () { return [{ type: CdkTree }, { type: CdkTreeNode }]; }, propDecorators: { recursive: [{
906
887
  type: Input,
907
888
  args: ['cdkTreeNodeToggleRecursive']
908
- }], _toggle: [{
909
- type: HostListener,
910
- args: ['click', ['$event']]
911
889
  }] } });
912
890
 
913
891
  /**
@@ -928,8 +906,8 @@ const EXPORTED_DECLARATIONS = [
928
906
  ];
929
907
  class CdkTreeModule {
930
908
  }
931
- CdkTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
932
- CdkTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeModule, declarations: [CdkNestedTreeNode,
909
+ CdkTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
910
+ CdkTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeModule, declarations: [CdkNestedTreeNode,
933
911
  CdkTreeNodeDef,
934
912
  CdkTreeNodePadding,
935
913
  CdkTreeNodeToggle,
@@ -942,8 +920,8 @@ CdkTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
942
920
  CdkTree,
943
921
  CdkTreeNode,
944
922
  CdkTreeNodeOutlet] });
945
- CdkTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeModule });
946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: CdkTreeModule, decorators: [{
923
+ CdkTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeModule });
924
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: CdkTreeModule, decorators: [{
947
925
  type: NgModule,
948
926
  args: [{
949
927
  exports: EXPORTED_DECLARATIONS,