@angular/cdk 7.0.3 → 7.2.0

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 (252) hide show
  1. package/a11y/typings/focus-monitor/focus-monitor.d.ts +20 -4
  2. package/a11y/typings/index.metadata.json +1 -1
  3. package/a11y/typings/key-manager/list-key-manager.d.ts +8 -0
  4. package/a11y/typings/live-announcer/live-announcer.d.ts +37 -4
  5. package/bidi/typings/dir.d.ts +4 -1
  6. package/bidi/typings/index.metadata.json +1 -1
  7. package/bundles/cdk-a11y.umd.js +503 -210
  8. package/bundles/cdk-a11y.umd.js.map +1 -1
  9. package/bundles/cdk-a11y.umd.min.js +1 -1
  10. package/bundles/cdk-a11y.umd.min.js.map +1 -1
  11. package/bundles/cdk-accordion.umd.js +16 -9
  12. package/bundles/cdk-accordion.umd.js.map +1 -1
  13. package/bundles/cdk-accordion.umd.min.js.map +1 -1
  14. package/bundles/cdk-bidi.umd.js +16 -7
  15. package/bundles/cdk-bidi.umd.js.map +1 -1
  16. package/bundles/cdk-bidi.umd.min.js +1 -1
  17. package/bundles/cdk-bidi.umd.min.js.map +1 -1
  18. package/bundles/cdk-coercion.umd.js +5 -5
  19. package/bundles/cdk-coercion.umd.js.map +1 -1
  20. package/bundles/cdk-collections.umd.js +28 -5
  21. package/bundles/cdk-collections.umd.js.map +1 -1
  22. package/bundles/cdk-collections.umd.min.js.map +1 -1
  23. package/bundles/cdk-drag-drop.umd.js +2251 -853
  24. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  25. package/bundles/cdk-drag-drop.umd.min.js +2 -1
  26. package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
  27. package/bundles/cdk-keycodes.umd.js +33 -1
  28. package/bundles/cdk-keycodes.umd.js.map +1 -1
  29. package/bundles/cdk-keycodes.umd.min.js +1 -1
  30. package/bundles/cdk-keycodes.umd.min.js.map +1 -1
  31. package/bundles/cdk-layout.umd.js +29 -22
  32. package/bundles/cdk-layout.umd.js.map +1 -1
  33. package/bundles/cdk-layout.umd.min.js +1 -1
  34. package/bundles/cdk-layout.umd.min.js.map +1 -1
  35. package/bundles/cdk-observers.umd.js +25 -6
  36. package/bundles/cdk-observers.umd.js.map +1 -1
  37. package/bundles/cdk-observers.umd.min.js.map +1 -1
  38. package/bundles/cdk-overlay.umd.js +600 -243
  39. package/bundles/cdk-overlay.umd.js.map +1 -1
  40. package/bundles/cdk-overlay.umd.min.js +2 -2
  41. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  42. package/bundles/cdk-platform.umd.js +50 -28
  43. package/bundles/cdk-platform.umd.js.map +1 -1
  44. package/bundles/cdk-platform.umd.min.js.map +1 -1
  45. package/bundles/cdk-portal.umd.js +14 -7
  46. package/bundles/cdk-portal.umd.js.map +1 -1
  47. package/bundles/cdk-portal.umd.min.js.map +1 -1
  48. package/bundles/cdk-scrolling.umd.js +143 -48
  49. package/bundles/cdk-scrolling.umd.js.map +1 -1
  50. package/bundles/cdk-scrolling.umd.min.js +1 -1
  51. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  52. package/bundles/cdk-stepper.umd.js +103 -19
  53. package/bundles/cdk-stepper.umd.js.map +1 -1
  54. package/bundles/cdk-stepper.umd.min.js +1 -1
  55. package/bundles/cdk-stepper.umd.min.js.map +1 -1
  56. package/bundles/cdk-table.umd.js +182 -48
  57. package/bundles/cdk-table.umd.js.map +1 -1
  58. package/bundles/cdk-table.umd.min.js.map +1 -1
  59. package/bundles/cdk-text-field.umd.js +70 -32
  60. package/bundles/cdk-text-field.umd.js.map +1 -1
  61. package/bundles/cdk-text-field.umd.min.js +1 -1
  62. package/bundles/cdk-text-field.umd.min.js.map +1 -1
  63. package/bundles/cdk-tree.umd.js +71 -34
  64. package/bundles/cdk-tree.umd.js.map +1 -1
  65. package/bundles/cdk-tree.umd.min.js +1 -1
  66. package/bundles/cdk-tree.umd.min.js.map +1 -1
  67. package/bundles/cdk.umd.js +5 -4
  68. package/bundles/cdk.umd.js.map +1 -1
  69. package/bundles/cdk.umd.min.js +1 -1
  70. package/bundles/cdk.umd.min.js.map +1 -1
  71. package/drag-drop/typings/{drag-handle.d.ts → directives/drag-handle.d.ts} +3 -0
  72. package/drag-drop/typings/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
  73. package/drag-drop/typings/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
  74. package/drag-drop/typings/directives/drag.d.ts +108 -0
  75. package/drag-drop/typings/directives/drop-list-group.d.ts +22 -0
  76. package/drag-drop/typings/directives/drop-list.d.ts +135 -0
  77. package/drag-drop/typings/drag-drop-registry.d.ts +8 -5
  78. package/drag-drop/typings/drag-events.d.ts +24 -6
  79. package/{typings/esm5/drag-drop/drag.d.ts → drag-drop/typings/drag-ref.d.ts} +153 -77
  80. package/drag-drop/typings/drop-list-container.d.ts +21 -3
  81. package/drag-drop/typings/{drop-list.d.ts → drop-list-ref.d.ts} +133 -77
  82. package/drag-drop/typings/index.d.ts +1 -0
  83. package/drag-drop/typings/index.metadata.json +1 -1
  84. package/drag-drop/typings/public-api.d.ts +13 -5
  85. package/esm2015/a11y.js +353 -189
  86. package/esm2015/a11y.js.map +1 -1
  87. package/esm2015/accordion.js +16 -11
  88. package/esm2015/accordion.js.map +1 -1
  89. package/esm2015/bidi.js +18 -9
  90. package/esm2015/bidi.js.map +1 -1
  91. package/esm2015/cdk.js +7 -6
  92. package/esm2015/cdk.js.map +1 -1
  93. package/esm2015/coercion.js +7 -7
  94. package/esm2015/coercion.js.map +1 -1
  95. package/esm2015/collections.js +22 -7
  96. package/esm2015/collections.js.map +1 -1
  97. package/esm2015/drag-drop.js +1768 -751
  98. package/esm2015/drag-drop.js.map +1 -1
  99. package/esm2015/keycodes.js +31 -4
  100. package/esm2015/keycodes.js.map +1 -1
  101. package/esm2015/layout.js +29 -19
  102. package/esm2015/layout.js.map +1 -1
  103. package/esm2015/observers.js +13 -8
  104. package/esm2015/observers.js.map +1 -1
  105. package/esm2015/overlay.js +384 -219
  106. package/esm2015/overlay.js.map +1 -1
  107. package/esm2015/platform.js +53 -31
  108. package/esm2015/platform.js.map +1 -1
  109. package/esm2015/portal.js +13 -9
  110. package/esm2015/portal.js.map +1 -1
  111. package/esm2015/scrolling.js +106 -49
  112. package/esm2015/scrolling.js.map +1 -1
  113. package/esm2015/stepper.js +93 -24
  114. package/esm2015/stepper.js.map +1 -1
  115. package/esm2015/table.js +89 -45
  116. package/esm2015/table.js.map +1 -1
  117. package/esm2015/text-field.js +51 -34
  118. package/esm2015/text-field.js.map +1 -1
  119. package/esm2015/tree.js +55 -36
  120. package/esm2015/tree.js.map +1 -1
  121. package/esm5/a11y.es5.js +507 -214
  122. package/esm5/a11y.es5.js.map +1 -1
  123. package/esm5/accordion.es5.js +18 -11
  124. package/esm5/accordion.es5.js.map +1 -1
  125. package/esm5/bidi.es5.js +18 -9
  126. package/esm5/bidi.es5.js.map +1 -1
  127. package/esm5/cdk.es5.js +7 -6
  128. package/esm5/cdk.es5.js.map +1 -1
  129. package/esm5/coercion.es5.js +7 -7
  130. package/esm5/coercion.es5.js.map +1 -1
  131. package/esm5/collections.es5.js +35 -7
  132. package/esm5/collections.es5.js.map +1 -1
  133. package/esm5/drag-drop.es5.js +2125 -729
  134. package/esm5/drag-drop.es5.js.map +1 -1
  135. package/esm5/keycodes.es5.js +35 -4
  136. package/esm5/keycodes.es5.js.map +1 -1
  137. package/esm5/layout.es5.js +31 -24
  138. package/esm5/layout.es5.js.map +1 -1
  139. package/esm5/observers.es5.js +27 -8
  140. package/esm5/observers.es5.js.map +1 -1
  141. package/esm5/overlay.es5.js +602 -245
  142. package/esm5/overlay.es5.js.map +1 -1
  143. package/esm5/platform.es5.js +52 -30
  144. package/esm5/platform.es5.js.map +1 -1
  145. package/esm5/portal.es5.js +16 -9
  146. package/esm5/portal.es5.js.map +1 -1
  147. package/esm5/scrolling.es5.js +145 -50
  148. package/esm5/scrolling.es5.js.map +1 -1
  149. package/esm5/stepper.es5.js +106 -24
  150. package/esm5/stepper.es5.js.map +1 -1
  151. package/esm5/table.es5.js +184 -50
  152. package/esm5/table.es5.js.map +1 -1
  153. package/esm5/text-field.es5.js +72 -34
  154. package/esm5/text-field.es5.js.map +1 -1
  155. package/esm5/tree.es5.js +74 -37
  156. package/esm5/tree.es5.js.map +1 -1
  157. package/keycodes/typings/index.metadata.json +1 -1
  158. package/keycodes/typings/modifiers.d.ts +14 -0
  159. package/keycodes/typings/public-api.d.ts +1 -0
  160. package/overlay/typings/index.metadata.json +1 -1
  161. package/package.json +4 -4
  162. package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  163. package/schematics/ng-update/upgrade-data.js +2 -1
  164. package/schematics/ng-update/upgrade-data.js.map +1 -1
  165. package/schematics/ng-update/upgrade-rules/index.js +3 -2
  166. package/schematics/ng-update/upgrade-rules/index.js.map +1 -1
  167. package/schematics/utils/ast/ng-module-imports.d.ts +1 -1
  168. package/schematics/utils/ast/ng-module-imports.js +25 -13
  169. package/schematics/utils/ast/ng-module-imports.js.map +1 -1
  170. package/schematics/utils/get-project.js +2 -1
  171. package/schematics/utils/get-project.js.map +1 -1
  172. package/schematics/utils/parse5-element.js +3 -2
  173. package/schematics/utils/parse5-element.js.map +1 -1
  174. package/schematics/utils/project-targets.js +2 -1
  175. package/schematics/utils/project-targets.js.map +1 -1
  176. package/schematics/utils/version-agnostic-typescript.js +3 -2
  177. package/schematics/utils/version-agnostic-typescript.js.map +1 -1
  178. package/scrolling/typings/index.metadata.json +1 -1
  179. package/stepper/typings/index.metadata.json +1 -1
  180. package/stepper/typings/public-api.d.ts +1 -0
  181. package/stepper/typings/step-header.d.ts +15 -0
  182. package/stepper/typings/stepper.d.ts +11 -1
  183. package/text-field/typings/autosize.d.ts +6 -0
  184. package/text-field/typings/index.metadata.json +1 -1
  185. package/tree/typings/nested-node.d.ts +5 -5
  186. package/typings/a11y/focus-monitor/focus-monitor.d.ts +20 -4
  187. package/typings/a11y/index.metadata.json +1 -1
  188. package/typings/a11y/key-manager/list-key-manager.d.ts +8 -0
  189. package/typings/a11y/live-announcer/live-announcer.d.ts +37 -4
  190. package/typings/bidi/dir.d.ts +4 -1
  191. package/typings/bidi/index.metadata.json +1 -1
  192. package/typings/{esm5/drag-drop → drag-drop/directives}/drag-handle.d.ts +3 -0
  193. package/typings/drag-drop/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
  194. package/typings/drag-drop/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
  195. package/typings/drag-drop/directives/drag.d.ts +108 -0
  196. package/typings/drag-drop/directives/drop-list-group.d.ts +22 -0
  197. package/typings/drag-drop/directives/drop-list.d.ts +135 -0
  198. package/typings/drag-drop/drag-drop-registry.d.ts +8 -5
  199. package/typings/drag-drop/drag-events.d.ts +24 -6
  200. package/typings/drag-drop/{drag.d.ts → drag-ref.d.ts} +153 -77
  201. package/typings/drag-drop/drop-list-container.d.ts +21 -3
  202. package/typings/{esm5/drag-drop/drop-list.d.ts → drag-drop/drop-list-ref.d.ts} +133 -77
  203. package/typings/drag-drop/index.d.ts +1 -0
  204. package/typings/drag-drop/index.metadata.json +1 -1
  205. package/typings/drag-drop/public-api.d.ts +13 -5
  206. package/typings/esm5/a11y/focus-monitor/focus-monitor.d.ts +20 -4
  207. package/typings/esm5/a11y/index.metadata.json +1 -1
  208. package/typings/esm5/a11y/key-manager/list-key-manager.d.ts +8 -0
  209. package/typings/esm5/a11y/live-announcer/live-announcer.d.ts +37 -4
  210. package/typings/esm5/bidi/dir.d.ts +4 -1
  211. package/typings/esm5/bidi/index.metadata.json +1 -1
  212. package/typings/{drag-drop → esm5/drag-drop/directives}/drag-handle.d.ts +3 -0
  213. package/typings/esm5/drag-drop/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
  214. package/typings/esm5/drag-drop/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
  215. package/typings/esm5/drag-drop/directives/drag.d.ts +108 -0
  216. package/typings/esm5/drag-drop/directives/drop-list-group.d.ts +22 -0
  217. package/typings/esm5/drag-drop/directives/drop-list.d.ts +135 -0
  218. package/typings/esm5/drag-drop/drag-drop-registry.d.ts +8 -5
  219. package/typings/esm5/drag-drop/drag-events.d.ts +24 -6
  220. package/{drag-drop/typings/drag.d.ts → typings/esm5/drag-drop/drag-ref.d.ts} +153 -77
  221. package/typings/esm5/drag-drop/drop-list-container.d.ts +21 -3
  222. package/typings/{drag-drop/drop-list.d.ts → esm5/drag-drop/drop-list-ref.d.ts} +133 -77
  223. package/typings/esm5/drag-drop/index.d.ts +1 -0
  224. package/typings/esm5/drag-drop/index.metadata.json +1 -1
  225. package/typings/esm5/drag-drop/public-api.d.ts +13 -5
  226. package/typings/esm5/index.metadata.json +1 -1
  227. package/typings/esm5/keycodes/index.metadata.json +1 -1
  228. package/typings/esm5/keycodes/modifiers.d.ts +14 -0
  229. package/typings/esm5/keycodes/public-api.d.ts +1 -0
  230. package/typings/esm5/overlay/index.metadata.json +1 -1
  231. package/typings/esm5/scrolling/index.metadata.json +1 -1
  232. package/typings/esm5/stepper/index.metadata.json +1 -1
  233. package/typings/esm5/stepper/public-api.d.ts +1 -0
  234. package/typings/esm5/stepper/step-header.d.ts +15 -0
  235. package/typings/esm5/stepper/stepper.d.ts +11 -1
  236. package/typings/esm5/text-field/autosize.d.ts +6 -0
  237. package/typings/esm5/text-field/index.metadata.json +1 -1
  238. package/typings/esm5/tree/nested-node.d.ts +5 -5
  239. package/typings/index.metadata.json +1 -1
  240. package/typings/keycodes/index.metadata.json +1 -1
  241. package/typings/keycodes/modifiers.d.ts +14 -0
  242. package/typings/keycodes/public-api.d.ts +1 -0
  243. package/typings/overlay/index.metadata.json +1 -1
  244. package/typings/schematics/utils/ast/ng-module-imports.d.ts +1 -1
  245. package/typings/scrolling/index.metadata.json +1 -1
  246. package/typings/stepper/index.metadata.json +1 -1
  247. package/typings/stepper/public-api.d.ts +1 -0
  248. package/typings/stepper/step-header.d.ts +15 -0
  249. package/typings/stepper/stepper.d.ts +11 -1
  250. package/typings/text-field/autosize.d.ts +6 -0
  251. package/typings/text-field/index.metadata.json +1 -1
  252. package/typings/tree/nested-node.d.ts +5 -5
@@ -15,16 +15,17 @@ import { ArrayDataSource, DataSource } from '@angular/cdk/collections';
15
15
 
16
16
  /**
17
17
  * @fileoverview added by tsickle
18
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
18
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
19
19
  */
20
- /** *
20
+ /**
21
21
  * The injection token used to specify the virtual scrolling strategy.
22
- @type {?} */
22
+ * @type {?}
23
+ */
23
24
  const VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');
24
25
 
25
26
  /**
26
27
  * @fileoverview added by tsickle
27
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
28
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
28
29
  */
29
30
  /**
30
31
  * Virtual scrolling strategy for lists with items of known fixed size.
@@ -103,16 +104,12 @@ class FixedSizeVirtualScrollStrategy {
103
104
  * \@docs-private Implemented as part of VirtualScrollStrategy.
104
105
  * @return {?}
105
106
  */
106
- onContentRendered() {
107
- /* no-op */
108
- }
107
+ onContentRendered() { }
109
108
  /**
110
109
  * \@docs-private Implemented as part of VirtualScrollStrategy.
111
110
  * @return {?}
112
111
  */
113
- onRenderedOffsetChanged() {
114
- /* no-op */
115
- }
112
+ onRenderedOffsetChanged() { }
116
113
  /**
117
114
  * Scroll to the offset for the given index.
118
115
  * @param {?} index The index of the element to scroll to.
@@ -126,6 +123,7 @@ class FixedSizeVirtualScrollStrategy {
126
123
  }
127
124
  /**
128
125
  * Update the viewport's total content size.
126
+ * @private
129
127
  * @return {?}
130
128
  */
131
129
  _updateTotalContentSize() {
@@ -136,6 +134,7 @@ class FixedSizeVirtualScrollStrategy {
136
134
  }
137
135
  /**
138
136
  * Update the viewport's rendered range.
137
+ * @private
139
138
  * @return {?}
140
139
  */
141
140
  _updateRenderedRange() {
@@ -258,11 +257,12 @@ CdkFixedSizeVirtualScroll.propDecorators = {
258
257
 
259
258
  /**
260
259
  * @fileoverview added by tsickle
261
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
260
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
262
261
  */
263
- /** *
262
+ /**
264
263
  * Time in ms to throttle the scrolling events by default.
265
- @type {?} */
264
+ * @type {?}
265
+ */
266
266
  const DEFAULT_SCROLL_TIME = 20;
267
267
  /**
268
268
  * Service contained all registered Scrollable references and emits an event when any one of the
@@ -301,10 +301,10 @@ class ScrollDispatcher {
301
301
  * @return {?}
302
302
  */
303
303
  register(scrollable) {
304
- /** @type {?} */
305
- const scrollSubscription = scrollable.elementScrolled()
306
- .subscribe(() => this._scrolled.next(scrollable));
307
- this.scrollContainers.set(scrollable, scrollSubscription);
304
+ if (!this.scrollContainers.has(scrollable)) {
305
+ this.scrollContainers.set(scrollable, scrollable.elementScrolled()
306
+ .subscribe(() => this._scrolled.next(scrollable)));
307
+ }
308
308
  }
309
309
  /**
310
310
  * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.
@@ -339,6 +339,8 @@ class ScrollDispatcher {
339
339
  if (!this._globalSubscription) {
340
340
  this._addGlobalListener();
341
341
  }
342
+ // In the case of a 0ms delay, use an observable without auditTime
343
+ // since it does add a perceptible delay in processing overhead.
342
344
  /** @type {?} */
343
345
  const subscription = auditTimeInMs > 0 ?
344
346
  this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) :
@@ -392,6 +394,7 @@ class ScrollDispatcher {
392
394
  }
393
395
  /**
394
396
  * Returns true if the element is contained within the provided Scrollable.
397
+ * @private
395
398
  * @param {?} scrollable
396
399
  * @param {?} elementRef
397
400
  * @return {?}
@@ -407,11 +410,12 @@ class ScrollDispatcher {
407
410
  if (element == scrollableElement) {
408
411
  return true;
409
412
  }
410
- } while (element = /** @type {?} */ ((element)).parentElement);
413
+ } while (element = (/** @type {?} */ (element)).parentElement);
411
414
  return false;
412
415
  }
413
416
  /**
414
417
  * Sets up the global scroll listeners.
418
+ * @private
415
419
  * @return {?}
416
420
  */
417
421
  _addGlobalListener() {
@@ -421,6 +425,7 @@ class ScrollDispatcher {
421
425
  }
422
426
  /**
423
427
  * Cleans up the global scroll listener.
428
+ * @private
424
429
  * @return {?}
425
430
  */
426
431
  _removeGlobalListener() {
@@ -449,9 +454,10 @@ ScrollDispatcher.ctorParameters = () => [
449
454
  function SCROLL_DISPATCHER_PROVIDER_FACTORY(parentDispatcher, ngZone, platform) {
450
455
  return parentDispatcher || new ScrollDispatcher(ngZone, platform);
451
456
  }
452
- /** *
457
+ /**
453
458
  * \@docs-private \@deprecated \@breaking-change 8.0.0
454
- @type {?} */
459
+ * @type {?}
460
+ */
455
461
  const SCROLL_DISPATCHER_PROVIDER = {
456
462
  // If there is already a ScrollDispatcher available, use that. Otherwise, provide a new one.
457
463
  provide: ScrollDispatcher,
@@ -461,7 +467,7 @@ const SCROLL_DISPATCHER_PROVIDER = {
461
467
 
462
468
  /**
463
469
  * @fileoverview added by tsickle
464
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
470
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
465
471
  */
466
472
  /**
467
473
  * Sends an event when the directive's element is scrolled. Registers itself with the
@@ -553,6 +559,7 @@ class CdkScrollable {
553
559
  this._applyScrollToOptions(options);
554
560
  }
555
561
  /**
562
+ * @private
556
563
  * @param {?} options
557
564
  * @return {?}
558
565
  */
@@ -594,6 +601,7 @@ class CdkScrollable {
594
601
  if (from == 'bottom') {
595
602
  return el.scrollHeight - el.clientHeight - el.scrollTop;
596
603
  }
604
+ // Rewrite start & end as left or right offsets.
597
605
  /** @type {?} */
598
606
  const isRtl = this.dir && this.dir.value == 'rtl';
599
607
  if (from == 'start') {
@@ -649,7 +657,7 @@ CdkScrollable.ctorParameters = () => [
649
657
 
650
658
  /**
651
659
  * @fileoverview added by tsickle
652
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
660
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
653
661
  */
654
662
  /**
655
663
  * Checks if the given ranges are equal.
@@ -689,6 +697,10 @@ class CdkVirtualScrollViewport extends CdkScrollable {
689
697
  * The direction the viewport scrolls.
690
698
  */
691
699
  this.orientation = 'vertical';
700
+ // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll
701
+ // strategy lazily (i.e. only if the user is actually listening to the events). We do this because
702
+ // depending on how the strategy calculates the scrolled index, it may come at a cost to
703
+ // performance.
692
704
  /**
693
705
  * Emits when the index of the first element visible in the viewport changes.
694
706
  */
@@ -754,7 +766,7 @@ class CdkVirtualScrollViewport extends CdkScrollable {
754
766
  this.elementScrolled()
755
767
  .pipe(
756
768
  // Start off with a fake scroll event so we properly detect our initial position.
757
- startWith(/** @type {?} */ ((null))),
769
+ startWith((/** @type {?} */ (null))),
758
770
  // Collect multiple events into one until the next animation frame. This way if
759
771
  // there are multiple scroll events in the same frame we only need to recheck
760
772
  // our layout once.
@@ -821,6 +833,10 @@ class CdkVirtualScrollViewport extends CdkScrollable {
821
833
  getViewportSize() {
822
834
  return this._viewportSize;
823
835
  }
836
+ // TODO(mmalerba): This is technically out of sync with what's really rendered until a render
837
+ // cycle happens. I'm being careful to only call it after the render cycle is complete and before
838
+ // setting it to something else, but its error prone and should probably be split into
839
+ // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.
824
840
  /**
825
841
  * Get the current rendered range of items.
826
842
  * @return {?}
@@ -869,6 +885,8 @@ class CdkVirtualScrollViewport extends CdkScrollable {
869
885
  * @return {?}
870
886
  */
871
887
  setRenderedContentOffset(offset, to = 'to-start') {
888
+ // For a horizontal viewport in a right-to-left language we need to translate along the x-axis
889
+ // in the negative direction.
872
890
  /** @type {?} */
873
891
  const isRtl = this.dir && this.dir.value == 'rtl';
874
892
  /** @type {?} */
@@ -972,6 +990,7 @@ class CdkVirtualScrollViewport extends CdkScrollable {
972
990
  }
973
991
  /**
974
992
  * Measure the viewport size.
993
+ * @private
975
994
  * @return {?}
976
995
  */
977
996
  _measureViewportSize() {
@@ -982,6 +1001,7 @@ class CdkVirtualScrollViewport extends CdkScrollable {
982
1001
  }
983
1002
  /**
984
1003
  * Queue up change detection to run.
1004
+ * @private
985
1005
  * @param {?=} runAfter
986
1006
  * @return {?}
987
1007
  */
@@ -1000,6 +1020,7 @@ class CdkVirtualScrollViewport extends CdkScrollable {
1000
1020
  }
1001
1021
  /**
1002
1022
  * Run change detection.
1023
+ * @private
1003
1024
  * @return {?}
1004
1025
  */
1005
1026
  _doChangeDetection() {
@@ -1028,10 +1049,14 @@ CdkVirtualScrollViewport.decorators = [
1028
1049
  host: {
1029
1050
  'class': 'cdk-virtual-scroll-viewport',
1030
1051
  '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === "horizontal"',
1031
- '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation === "vertical"',
1052
+ '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== "horizontal"',
1032
1053
  },
1033
1054
  encapsulation: ViewEncapsulation.None,
1034
1055
  changeDetection: ChangeDetectionStrategy.OnPush,
1056
+ providers: [{
1057
+ provide: CdkScrollable,
1058
+ useExisting: CdkVirtualScrollViewport,
1059
+ }]
1035
1060
  },] },
1036
1061
  ];
1037
1062
  /** @nocollapse */
@@ -1051,7 +1076,7 @@ CdkVirtualScrollViewport.propDecorators = {
1051
1076
 
1052
1077
  /**
1053
1078
  * @fileoverview added by tsickle
1054
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1079
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1055
1080
  */
1056
1081
  /**
1057
1082
  * Helper to extract size from a DOM Node.
@@ -1061,7 +1086,7 @@ CdkVirtualScrollViewport.propDecorators = {
1061
1086
  */
1062
1087
  function getSize(orientation, node) {
1063
1088
  /** @type {?} */
1064
- const el = /** @type {?} */ (node);
1089
+ const el = (/** @type {?} */ (node));
1065
1090
  if (!el.getBoundingClientRect) {
1066
1091
  return 0;
1067
1092
  }
@@ -1082,8 +1107,7 @@ class CdkVirtualForOf {
1082
1107
  * @param {?} _viewport
1083
1108
  * @param {?} ngZone
1084
1109
  */
1085
- constructor(_viewContainerRef, _template, _differs, /** The virtual scrolling viewport that these items are being rendered in. */
1086
- _viewport, ngZone) {
1110
+ constructor(_viewContainerRef, _template, _differs, _viewport, ngZone) {
1087
1111
  this._viewContainerRef = _viewContainerRef;
1088
1112
  this._template = _template;
1089
1113
  this._differs = _differs;
@@ -1107,7 +1131,7 @@ class CdkVirtualForOf {
1107
1131
  this.dataStream = this._dataSourceChanges
1108
1132
  .pipe(
1109
1133
  // Start off with null `DataSource`.
1110
- startWith(/** @type {?} */ ((null))),
1134
+ startWith((/** @type {?} */ (null))),
1111
1135
  // Bundle up the previous and current data sources so we can work with both.
1112
1136
  pairwise(),
1113
1137
  // Use `_changeDataSource` to disconnect from the previous data source and connect to the
@@ -1205,21 +1229,24 @@ class CdkVirtualForOf {
1205
1229
  if (range.start < this._renderedRange.start || range.end > this._renderedRange.end) {
1206
1230
  throw Error(`Error: attempted to measure an item that isn't rendered.`);
1207
1231
  }
1232
+ // The index into the list of rendered views for the first item in the range.
1208
1233
  /** @type {?} */
1209
1234
  const renderedStartIndex = range.start - this._renderedRange.start;
1235
+ // The length of the range we're measuring.
1210
1236
  /** @type {?} */
1211
1237
  const rangeLen = range.end - range.start;
1238
+ // Loop over all root nodes for all items in the range and sum up their size.
1212
1239
  /** @type {?} */
1213
1240
  let totalSize = 0;
1214
1241
  /** @type {?} */
1215
1242
  let i = rangeLen;
1216
1243
  while (i--) {
1217
1244
  /** @type {?} */
1218
- const view = /** @type {?} */ (this._viewContainerRef.get(i + renderedStartIndex));
1245
+ const view = (/** @type {?} */ (this._viewContainerRef.get(i + renderedStartIndex)));
1219
1246
  /** @type {?} */
1220
1247
  let j = view ? view.rootNodes.length : 0;
1221
1248
  while (j--) {
1222
- totalSize += getSize(orientation, /** @type {?} */ ((view)).rootNodes[j]);
1249
+ totalSize += getSize(orientation, (/** @type {?} */ (view)).rootNodes[j]);
1223
1250
  }
1224
1251
  }
1225
1252
  return totalSize;
@@ -1229,6 +1256,9 @@ class CdkVirtualForOf {
1229
1256
  */
1230
1257
  ngDoCheck() {
1231
1258
  if (this._differ && this._needsUpdate) {
1259
+ // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of
1260
+ // this list being rendered (can use simpler algorithm) vs needs update due to data actually
1261
+ // changing (need to do this diff).
1232
1262
  /** @type {?} */
1233
1263
  const changes = this._differ.diff(this._renderedItems);
1234
1264
  if (!changes) {
@@ -1255,6 +1285,7 @@ class CdkVirtualForOf {
1255
1285
  }
1256
1286
  /**
1257
1287
  * React to scroll state changes in the viewport.
1288
+ * @private
1258
1289
  * @return {?}
1259
1290
  */
1260
1291
  _onRenderedDataChange() {
@@ -1269,6 +1300,7 @@ class CdkVirtualForOf {
1269
1300
  }
1270
1301
  /**
1271
1302
  * Swap out one `DataSource` for another.
1303
+ * @private
1272
1304
  * @param {?} oldDs
1273
1305
  * @param {?} newDs
1274
1306
  * @return {?}
@@ -1282,6 +1314,7 @@ class CdkVirtualForOf {
1282
1314
  }
1283
1315
  /**
1284
1316
  * Update the `CdkVirtualForOfContext` for all views.
1317
+ * @private
1285
1318
  * @return {?}
1286
1319
  */
1287
1320
  _updateContext() {
@@ -1291,7 +1324,7 @@ class CdkVirtualForOf {
1291
1324
  let i = this._viewContainerRef.length;
1292
1325
  while (i--) {
1293
1326
  /** @type {?} */
1294
- let view = /** @type {?} */ (this._viewContainerRef.get(i));
1327
+ let view = (/** @type {?} */ (this._viewContainerRef.get(i)));
1295
1328
  view.context.index = this._renderedRange.start + i;
1296
1329
  view.context.count = count;
1297
1330
  this._updateComputedContextProperties(view.context);
@@ -1300,6 +1333,7 @@ class CdkVirtualForOf {
1300
1333
  }
1301
1334
  /**
1302
1335
  * Apply changes to the DOM.
1336
+ * @private
1303
1337
  * @param {?} changes
1304
1338
  * @return {?}
1305
1339
  */
@@ -1307,18 +1341,19 @@ class CdkVirtualForOf {
1307
1341
  // Rearrange the views to put them in the right location.
1308
1342
  changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {
1309
1343
  if (record.previousIndex == null) { // Item added.
1344
+ // Item added.
1310
1345
  /** @type {?} */
1311
1346
  const view = this._getViewForNewItem();
1312
- this._viewContainerRef.insert(view, /** @type {?} */ ((currentIndex)));
1347
+ this._viewContainerRef.insert(view, (/** @type {?} */ (currentIndex)));
1313
1348
  view.context.$implicit = record.item;
1314
1349
  }
1315
1350
  else if (currentIndex == null) { // Item removed.
1316
- // Item removed.
1317
- this._cacheView(/** @type {?} */ (this._viewContainerRef.detach(/** @type {?} */ ((adjustedPreviousIndex)))));
1351
+ this._cacheView((/** @type {?} */ (this._viewContainerRef.detach((/** @type {?} */ (adjustedPreviousIndex))))));
1318
1352
  }
1319
1353
  else { // Item moved.
1354
+ // Item moved.
1320
1355
  /** @type {?} */
1321
- const view = /** @type {?} */ (this._viewContainerRef.get(/** @type {?} */ ((adjustedPreviousIndex))));
1356
+ const view = (/** @type {?} */ (this._viewContainerRef.get((/** @type {?} */ (adjustedPreviousIndex)))));
1322
1357
  this._viewContainerRef.move(view, currentIndex);
1323
1358
  view.context.$implicit = record.item;
1324
1359
  }
@@ -1326,16 +1361,17 @@ class CdkVirtualForOf {
1326
1361
  // Update $implicit for any items that had an identity change.
1327
1362
  changes.forEachIdentityChange((record) => {
1328
1363
  /** @type {?} */
1329
- const view = /** @type {?} */ (this._viewContainerRef.get(/** @type {?} */ ((record.currentIndex))));
1364
+ const view = (/** @type {?} */ (this._viewContainerRef.get((/** @type {?} */ (record.currentIndex)))));
1330
1365
  view.context.$implicit = record.item;
1331
1366
  });
1367
+ // Update the context variables on all items.
1332
1368
  /** @type {?} */
1333
1369
  const count = this._data.length;
1334
1370
  /** @type {?} */
1335
1371
  let i = this._viewContainerRef.length;
1336
1372
  while (i--) {
1337
1373
  /** @type {?} */
1338
- const view = /** @type {?} */ (this._viewContainerRef.get(i));
1374
+ const view = (/** @type {?} */ (this._viewContainerRef.get(i)));
1339
1375
  view.context.index = this._renderedRange.start + i;
1340
1376
  view.context.count = count;
1341
1377
  this._updateComputedContextProperties(view.context);
@@ -1343,6 +1379,7 @@ class CdkVirtualForOf {
1343
1379
  }
1344
1380
  /**
1345
1381
  * Cache the given detached view.
1382
+ * @private
1346
1383
  * @param {?} view
1347
1384
  * @return {?}
1348
1385
  */
@@ -1366,11 +1403,12 @@ class CdkVirtualForOf {
1366
1403
  }
1367
1404
  /**
1368
1405
  * Get a view for a new item, either from the cache or by creating a new one.
1406
+ * @private
1369
1407
  * @return {?}
1370
1408
  */
1371
1409
  _getViewForNewItem() {
1372
1410
  return this._templateCache.pop() || this._viewContainerRef.createEmbeddedView(this._template, {
1373
- $implicit: /** @type {?} */ ((null)),
1411
+ $implicit: (/** @type {?} */ (null)),
1374
1412
  cdkVirtualForOf: this._cdkVirtualForOf,
1375
1413
  index: -1,
1376
1414
  count: -1,
@@ -1382,6 +1420,7 @@ class CdkVirtualForOf {
1382
1420
  }
1383
1421
  /**
1384
1422
  * Update the computed properties on the `CdkVirtualForOfContext`.
1423
+ * @private
1385
1424
  * @param {?} context
1386
1425
  * @return {?}
1387
1426
  */
@@ -1414,7 +1453,7 @@ CdkVirtualForOf.propDecorators = {
1414
1453
 
1415
1454
  /**
1416
1455
  * @fileoverview added by tsickle
1417
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1456
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1418
1457
  */
1419
1458
  class ScrollingModule {
1420
1459
  }
@@ -1451,11 +1490,12 @@ ScrollDispatchModule.decorators = [
1451
1490
 
1452
1491
  /**
1453
1492
  * @fileoverview added by tsickle
1454
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1493
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1455
1494
  */
1456
- /** *
1495
+ /**
1457
1496
  * Time in ms to throttle the resize events by default.
1458
- @type {?} */
1497
+ * @type {?}
1498
+ */
1459
1499
  const DEFAULT_RESIZE_TIME = 20;
1460
1500
  /**
1461
1501
  * Simple utility for getting the bounds of the browser viewport.
@@ -1495,7 +1535,7 @@ class ViewportRuler {
1495
1535
  const output = { width: this._viewportSize.width, height: this._viewportSize.height };
1496
1536
  // If we're not on a browser, don't cache the size since it'll be mocked out anyway.
1497
1537
  if (!this._platform.isBrowser) {
1498
- this._viewportSize = /** @type {?} */ ((null));
1538
+ this._viewportSize = (/** @type {?} */ (null));
1499
1539
  }
1500
1540
  return output;
1501
1541
  }
@@ -1504,6 +1544,15 @@ class ViewportRuler {
1504
1544
  * @return {?}
1505
1545
  */
1506
1546
  getViewportRect() {
1547
+ // Use the document element's bounding rect rather than the window scroll properties
1548
+ // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll
1549
+ // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different
1550
+ // conceptual viewports. Under most circumstances these viewports are equivalent, but they
1551
+ // can disagree when the page is pinch-zoomed (on devices that support touch).
1552
+ // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4
1553
+ // We use the documentElement instead of the body because, by default (without a css reset)
1554
+ // browsers typically give the document body an 8px margin, which is not included in
1555
+ // getBoundingClientRect().
1507
1556
  /** @type {?} */
1508
1557
  const scrollPosition = this.getViewportScrollPosition();
1509
1558
  const { width, height } = this.getViewportSize();
@@ -1526,8 +1575,14 @@ class ViewportRuler {
1526
1575
  if (!this._platform.isBrowser) {
1527
1576
  return { top: 0, left: 0 };
1528
1577
  }
1578
+ // The top-left-corner of the viewport is determined by the scroll position of the document
1579
+ // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about
1580
+ // whether `document.body` or `document.documentElement` is the scrolled element, so reading
1581
+ // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of
1582
+ // `document.documentElement` works consistently, where the `top` and `left` values will
1583
+ // equal negative the scroll position.
1529
1584
  /** @type {?} */
1530
- const documentElement = /** @type {?} */ ((document.documentElement));
1585
+ const documentElement = (/** @type {?} */ (document.documentElement));
1531
1586
  /** @type {?} */
1532
1587
  const documentRect = documentElement.getBoundingClientRect();
1533
1588
  /** @type {?} */
@@ -1548,6 +1603,7 @@ class ViewportRuler {
1548
1603
  }
1549
1604
  /**
1550
1605
  * Updates the cached viewport size.
1606
+ * @private
1551
1607
  * @return {?}
1552
1608
  */
1553
1609
  _updateViewportSize() {
@@ -1575,9 +1631,10 @@ ViewportRuler.ctorParameters = () => [
1575
1631
  function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone) {
1576
1632
  return parentRuler || new ViewportRuler(platform, ngZone);
1577
1633
  }
1578
- /** *
1634
+ /**
1579
1635
  * \@docs-private \@deprecated \@breaking-change 8.0.0
1580
- @type {?} */
1636
+ * @type {?}
1637
+ */
1581
1638
  const VIEWPORT_RULER_PROVIDER = {
1582
1639
  // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.
1583
1640
  provide: ViewportRuler,
@@ -1587,12 +1644,12 @@ const VIEWPORT_RULER_PROVIDER = {
1587
1644
 
1588
1645
  /**
1589
1646
  * @fileoverview added by tsickle
1590
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1647
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1591
1648
  */
1592
1649
 
1593
1650
  /**
1594
1651
  * @fileoverview added by tsickle
1595
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1652
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1596
1653
  */
1597
1654
 
1598
1655
  export { _fixedSizeVirtualScrollStrategyFactory, FixedSizeVirtualScrollStrategy, CdkFixedSizeVirtualScroll, SCROLL_DISPATCHER_PROVIDER_FACTORY, DEFAULT_SCROLL_TIME, ScrollDispatcher, SCROLL_DISPATCHER_PROVIDER, CdkScrollable, ScrollingModule, ScrollDispatchModule, VIEWPORT_RULER_PROVIDER_FACTORY, DEFAULT_RESIZE_TIME, ViewportRuler, VIEWPORT_RULER_PROVIDER, CdkVirtualForOf, VIRTUAL_SCROLL_STRATEGY, CdkVirtualScrollViewport };