@angular/cdk 12.1.0 → 12.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/a11y/index.metadata.json +1 -1
  2. package/a11y/input-modality/input-modality-detector.d.ts +0 -2
  3. package/bundles/cdk-a11y.umd.js +11 -16
  4. package/bundles/cdk-a11y.umd.js.map +1 -1
  5. package/bundles/cdk-drag-drop.umd.js +59 -40
  6. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  7. package/bundles/cdk-overlay.umd.js +6 -6
  8. package/bundles/cdk-overlay.umd.js.map +1 -1
  9. package/bundles/cdk-platform.umd.js +7 -0
  10. package/bundles/cdk-platform.umd.js.map +1 -1
  11. package/bundles/cdk-portal.umd.js.map +1 -1
  12. package/bundles/cdk-scrolling.umd.js +3 -3
  13. package/bundles/cdk-scrolling.umd.js.map +1 -1
  14. package/bundles/cdk-stepper.umd.js +11 -7
  15. package/bundles/cdk-stepper.umd.js.map +1 -1
  16. package/bundles/cdk-table.umd.js +25 -9
  17. package/bundles/cdk-table.umd.js.map +1 -1
  18. package/bundles/cdk-testing-protractor.umd.js +2 -1
  19. package/bundles/cdk-testing-protractor.umd.js.map +1 -1
  20. package/bundles/cdk-testing-selenium-webdriver.umd.js +2 -1
  21. package/bundles/cdk-testing-selenium-webdriver.umd.js.map +1 -1
  22. package/bundles/cdk-testing-testbed.umd.js +4 -2
  23. package/bundles/cdk-testing-testbed.umd.js.map +1 -1
  24. package/bundles/cdk-testing.umd.js.map +1 -1
  25. package/bundles/cdk-tree.umd.js +3 -5
  26. package/bundles/cdk-tree.umd.js.map +1 -1
  27. package/bundles/cdk.umd.js +1 -1
  28. package/bundles/cdk.umd.js.map +1 -1
  29. package/drag-drop/drag-styling.d.ts +5 -10
  30. package/drag-drop/index.metadata.json +1 -1
  31. package/drag-drop/parent-position-tracker.d.ts +0 -2
  32. package/esm2015/a11y/fake-event-detection.js +7 -6
  33. package/esm2015/a11y/focus-monitor/focus-monitor.js +5 -5
  34. package/esm2015/a11y/focus-trap/configurable-focus-trap.js +1 -1
  35. package/esm2015/a11y/input-modality/input-modality-detector.js +5 -11
  36. package/esm2015/a11y/key-manager/activedescendant-key-manager.js +1 -1
  37. package/esm2015/a11y/key-manager/focus-key-manager.js +1 -1
  38. package/esm2015/drag-drop/drag-ref.js +30 -18
  39. package/esm2015/drag-drop/drag-styling.js +29 -17
  40. package/esm2015/drag-drop/parent-position-tracker.js +3 -6
  41. package/esm2015/overlay/dispatchers/overlay-keyboard-dispatcher.js +1 -1
  42. package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +3 -4
  43. package/esm2015/overlay/fullscreen-overlay-container.js +1 -1
  44. package/esm2015/overlay/overlay-container.js +6 -5
  45. package/esm2015/platform/features/shadow-dom.js +7 -1
  46. package/esm2015/portal/dom-portal-outlet.js +1 -1
  47. package/esm2015/portal/portal-directives.js +1 -1
  48. package/esm2015/portal/portal.js +1 -1
  49. package/esm2015/scrolling/viewport-ruler.js +4 -4
  50. package/esm2015/scrolling/virtual-scroll-viewport.js +1 -1
  51. package/esm2015/stepper/stepper.js +9 -4
  52. package/esm2015/table/cell.js +16 -4
  53. package/esm2015/table/row.js +1 -1
  54. package/esm2015/table/table.js +2 -2
  55. package/esm2015/testing/protractor/protractor-element.js +3 -2
  56. package/esm2015/testing/selenium-webdriver/selenium-web-driver-element.js +3 -2
  57. package/esm2015/testing/test-element.js +1 -1
  58. package/esm2015/testing/testbed/fake-events/event-objects.js +5 -3
  59. package/esm2015/testing/testbed/unit-test-element.js +1 -1
  60. package/esm2015/tree/control/flat-tree-control.js +1 -1
  61. package/esm2015/tree/control/nested-tree-control.js +1 -1
  62. package/esm2015/tree/nested-node.js +4 -6
  63. package/esm2015/version.js +1 -1
  64. package/fesm2015/a11y.js +12 -17
  65. package/fesm2015/a11y.js.map +1 -1
  66. package/fesm2015/cdk.js +1 -1
  67. package/fesm2015/cdk.js.map +1 -1
  68. package/fesm2015/drag-drop.js +57 -37
  69. package/fesm2015/drag-drop.js.map +1 -1
  70. package/fesm2015/overlay.js +7 -7
  71. package/fesm2015/overlay.js.map +1 -1
  72. package/fesm2015/platform.js +7 -1
  73. package/fesm2015/platform.js.map +1 -1
  74. package/fesm2015/portal.js.map +1 -1
  75. package/fesm2015/scrolling.js +3 -3
  76. package/fesm2015/scrolling.js.map +1 -1
  77. package/fesm2015/stepper.js +8 -3
  78. package/fesm2015/stepper.js.map +1 -1
  79. package/fesm2015/table.js +15 -3
  80. package/fesm2015/table.js.map +1 -1
  81. package/fesm2015/testing/protractor.js +2 -1
  82. package/fesm2015/testing/protractor.js.map +1 -1
  83. package/fesm2015/testing/selenium-webdriver.js +2 -1
  84. package/fesm2015/testing/selenium-webdriver.js.map +1 -1
  85. package/fesm2015/testing/testbed.js +4 -2
  86. package/fesm2015/testing/testbed.js.map +1 -1
  87. package/fesm2015/testing.js.map +1 -1
  88. package/fesm2015/tree.js +3 -5
  89. package/fesm2015/tree.js.map +1 -1
  90. package/overlay/index.metadata.json +1 -1
  91. package/package.json +1 -1
  92. package/platform/features/shadow-dom.d.ts +2 -0
  93. package/platform/index.metadata.json +1 -1
  94. package/schematics/ng-add/index.js +1 -1
  95. package/schematics/ng-add/index.mjs +1 -1
  96. package/schematics/ng-add/package-config.js +5 -2
  97. package/schematics/ng-add/package-config.mjs +5 -2
  98. package/schematics/ng-update/devkit-migration-rule.js +1 -1
  99. package/schematics/ng-update/devkit-migration-rule.mjs +1 -1
  100. package/schematics/ng-update/find-stylesheets.js +2 -2
  101. package/schematics/ng-update/find-stylesheets.mjs +2 -2
  102. package/schematics/ng-update/html-parsing/elements.d.ts +2 -1
  103. package/schematics/ng-update/html-parsing/elements.js +6 -4
  104. package/schematics/ng-update/html-parsing/elements.mjs +6 -4
  105. package/schematics/ng-update/migrations/attribute-selectors.d.ts +3 -2
  106. package/schematics/ng-update/migrations/attribute-selectors.js +1 -1
  107. package/schematics/ng-update/migrations/attribute-selectors.mjs +1 -1
  108. package/schematics/ng-update/migrations/class-inheritance.js +1 -1
  109. package/schematics/ng-update/migrations/class-inheritance.mjs +1 -1
  110. package/schematics/ng-update/migrations/class-names.js +1 -1
  111. package/schematics/ng-update/migrations/class-names.mjs +1 -1
  112. package/schematics/ng-update/migrations/constructor-signature.js +1 -1
  113. package/schematics/ng-update/migrations/constructor-signature.mjs +1 -1
  114. package/schematics/ng-update/migrations/css-selectors.js +1 -1
  115. package/schematics/ng-update/migrations/css-selectors.mjs +1 -1
  116. package/schematics/ng-update/migrations/element-selectors.d.ts +3 -2
  117. package/schematics/ng-update/migrations/element-selectors.js +1 -1
  118. package/schematics/ng-update/migrations/element-selectors.mjs +1 -1
  119. package/schematics/ng-update/migrations/input-names.js +1 -1
  120. package/schematics/ng-update/migrations/input-names.mjs +1 -1
  121. package/schematics/ng-update/migrations/method-call-arguments.js +1 -1
  122. package/schematics/ng-update/migrations/method-call-arguments.mjs +1 -1
  123. package/schematics/ng-update/migrations/misc-template.js +1 -1
  124. package/schematics/ng-update/migrations/misc-template.mjs +1 -1
  125. package/schematics/ng-update/migrations/output-names.js +1 -1
  126. package/schematics/ng-update/migrations/output-names.mjs +1 -1
  127. package/schematics/ng-update/migrations/property-names.js +1 -1
  128. package/schematics/ng-update/migrations/property-names.mjs +1 -1
  129. package/schematics/ng-update/typescript/base-types.js +2 -2
  130. package/schematics/ng-update/typescript/base-types.mjs +2 -2
  131. package/schematics/tsconfig.json +6 -0
  132. package/schematics/update-tool/migration.d.ts +2 -2
  133. package/schematics/update-tool/migration.js +1 -1
  134. package/schematics/update-tool/migration.mjs +1 -1
  135. package/schematics/utils/build-component.js +7 -4
  136. package/schematics/utils/build-component.mjs +7 -4
  137. package/schematics/utils/html-manipulation.d.ts +2 -2
  138. package/schematics/utils/html-manipulation.js +1 -1
  139. package/schematics/utils/html-manipulation.mjs +1 -1
  140. package/schematics/utils/parse5-element.d.ts +2 -2
  141. package/schematics/utils/parse5-element.js +2 -2
  142. package/schematics/utils/parse5-element.mjs +2 -2
  143. package/schematics/utils/schematic-options.d.ts +2 -6
  144. package/schematics/utils/schematic-options.js +3 -2
  145. package/schematics/utils/schematic-options.mjs +3 -2
  146. package/schematics/utils/vendored-ast-utils/index.js +8 -7
  147. package/schematics/utils/vendored-ast-utils/index.mjs +8 -7
  148. package/scrolling/index.metadata.json +1 -1
  149. package/stepper/index.metadata.json +1 -1
  150. package/stepper/stepper.d.ts +6 -2
  151. package/table/index.metadata.json +1 -1
  152. package/testing/protractor/protractor-element.d.ts +1 -1
  153. package/testing/selenium-webdriver/selenium-web-driver-element.d.ts +1 -1
  154. package/testing/test-element.d.ts +1 -1
  155. package/testing/testbed/unit-test-element.d.ts +1 -1
  156. package/tree/index.metadata.json +1 -1
  157. package/tree/nested-node.d.ts +1 -3
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/scrolling'), require('@angular/cdk/platform'), require('@angular/cdk/coercion'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/bidi')) :
3
- typeof define === 'function' && define.amd ? define('@angular/cdk/drag-drop', ['exports', '@angular/core', '@angular/common', '@angular/cdk/scrolling', '@angular/cdk/platform', '@angular/cdk/coercion', 'rxjs', 'rxjs/operators', '@angular/cdk/bidi'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.dragDrop = {}), global.ng.core, global.ng.common, global.ng.cdk.scrolling, global.ng.cdk.platform, global.ng.cdk.coercion, global.rxjs, global.rxjs.operators, global.ng.cdk.bidi));
5
- }(this, (function (exports, i0, i1, i2, platform, coercion, rxjs, operators, bidi) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/scrolling'), require('@angular/cdk/platform'), require('@angular/cdk/coercion'), require('@angular/cdk/a11y'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/bidi')) :
3
+ typeof define === 'function' && define.amd ? define('@angular/cdk/drag-drop', ['exports', '@angular/core', '@angular/common', '@angular/cdk/scrolling', '@angular/cdk/platform', '@angular/cdk/coercion', '@angular/cdk/a11y', 'rxjs', 'rxjs/operators', '@angular/cdk/bidi'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.dragDrop = {}), global.ng.core, global.ng.common, global.ng.cdk.scrolling, global.ng.cdk.platform, global.ng.cdk.coercion, global.ng.cdk.a11y, global.rxjs, global.rxjs.operators, global.ng.cdk.bidi));
5
+ }(this, (function (exports, i0, i1, i2, platform, coercion, a11y, rxjs, operators, bidi) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -36,13 +36,20 @@
36
36
  * found in the LICENSE file at https://angular.io/license
37
37
  */
38
38
  /**
39
- * Shallow-extends a stylesheet object with another stylesheet object.
39
+ * Shallow-extends a stylesheet object with another stylesheet-like object.
40
+ * Note that the keys in `source` have to be dash-cased.
40
41
  * @docs-private
41
42
  */
42
- function extendStyles(dest, source) {
43
+ function extendStyles(dest, source, importantProperties) {
43
44
  for (var key in source) {
44
45
  if (source.hasOwnProperty(key)) {
45
- dest[key] = source[key];
46
+ var value = source[key];
47
+ if (value) {
48
+ dest.setProperty(key, value, (importantProperties === null || importantProperties === void 0 ? void 0 : importantProperties.has(key)) ? 'important' : '');
49
+ }
50
+ else {
51
+ dest.removeProperty(key);
52
+ }
46
53
  }
47
54
  }
48
55
  return dest;
@@ -56,33 +63,38 @@
56
63
  function toggleNativeDragInteractions(element, enable) {
57
64
  var userSelect = enable ? '' : 'none';
58
65
  extendStyles(element.style, {
59
- touchAction: enable ? '' : 'none',
60
- webkitUserDrag: enable ? '' : 'none',
61
- webkitTapHighlightColor: enable ? '' : 'transparent',
62
- userSelect: userSelect,
63
- msUserSelect: userSelect,
64
- webkitUserSelect: userSelect,
65
- MozUserSelect: userSelect
66
+ 'touch-action': enable ? '' : 'none',
67
+ '-webkit-user-drag': enable ? '' : 'none',
68
+ '-webkit-tap-highlight-color': enable ? '' : 'transparent',
69
+ 'user-select': userSelect,
70
+ '-ms-user-select': userSelect,
71
+ '-webkit-user-select': userSelect,
72
+ '-moz-user-select': userSelect
66
73
  });
67
74
  }
68
75
  /**
69
76
  * Toggles whether an element is visible while preserving its dimensions.
70
77
  * @param element Element whose visibility to toggle
71
78
  * @param enable Whether the element should be visible.
79
+ * @param importantProperties Properties to be set as `!important`.
72
80
  * @docs-private
73
81
  */
74
- function toggleVisibility(element, enable) {
75
- var styles = element.style;
76
- styles.position = enable ? '' : 'fixed';
77
- styles.top = styles.opacity = enable ? '' : '0';
78
- styles.left = enable ? '' : '-999em';
82
+ function toggleVisibility(element, enable, importantProperties) {
83
+ extendStyles(element.style, {
84
+ position: enable ? '' : 'fixed',
85
+ top: enable ? '' : '0',
86
+ opacity: enable ? '' : '0',
87
+ left: enable ? '' : '-999em'
88
+ }, importantProperties);
79
89
  }
80
90
  /**
81
91
  * Combines a transform string with an optional other transform
82
92
  * that exited before the base transform was applied.
83
93
  */
84
94
  function combineTransforms(transform, initialTransform) {
85
- return initialTransform ? (transform + ' ' + initialTransform) : transform;
95
+ return initialTransform && initialTransform != 'none' ?
96
+ (transform + ' ' + initialTransform) :
97
+ transform;
86
98
  }
87
99
 
88
100
  /**
@@ -216,7 +228,7 @@
216
228
  };
217
229
  /** Handles scrolling while a drag is taking place. */
218
230
  ParentPositionTracker.prototype.handleScroll = function (event) {
219
- var target = getEventTarget(event);
231
+ var target = platform._getEventTarget(event);
220
232
  var cachedPosition = this.positions.get(target);
221
233
  if (!cachedPosition) {
222
234
  return null;
@@ -252,10 +264,6 @@
252
264
  };
253
265
  return ParentPositionTracker;
254
266
  }());
255
- /** Gets the target of an event while accounting for shadow dom. */
256
- function getEventTarget(event) {
257
- return (event.composedPath ? event.composedPath()[0] : event.target);
258
- }
259
267
 
260
268
  /**
261
269
  * @license
@@ -340,6 +348,11 @@
340
348
  * addition to touch events.
341
349
  */
342
350
  var MOUSE_EVENT_IGNORE_TIME = 800;
351
+ /** Inline styles to be set as `!important` while dragging. */
352
+ var dragImportantProperties = new Set([
353
+ // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.
354
+ 'position'
355
+ ]);
343
356
  /**
344
357
  * Reference to a draggable item. Used to manipulate or dispose of the item.
345
358
  */
@@ -416,7 +429,7 @@
416
429
  // Delegate the event based on whether it started from a handle or the element itself.
417
430
  if (_this._handles.length) {
418
431
  var targetHandle = _this._handles.find(function (handle) {
419
- var target = getEventTarget(event);
432
+ var target = platform._getEventTarget(event);
420
433
  return !!target && (target === handle || handle.contains(target));
421
434
  });
422
435
  if (targetHandle && !_this._disabledHandles.has(targetHandle) && !_this.disabled) {
@@ -831,7 +844,7 @@
831
844
  // We move the element out at the end of the body and we make it hidden, because keeping it in
832
845
  // place will throw off the consumer's `:last-child` selectors. We can't remove the element
833
846
  // from the DOM completely, because iOS will stop firing all subsequent events in the chain.
834
- toggleVisibility(element, false);
847
+ toggleVisibility(element, false, dragImportantProperties);
835
848
  this._document.body.appendChild(parent.replaceChild(placeholder, element));
836
849
  this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);
837
850
  this.started.next({ source: this }); // Emit before notifying the container.
@@ -864,9 +877,11 @@
864
877
  var isTouchSequence = isTouchEvent(event);
865
878
  var isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;
866
879
  var rootElement = this._rootElement;
867
- var target = getEventTarget(event);
880
+ var target = platform._getEventTarget(event);
868
881
  var isSyntheticEvent = !isTouchSequence && this._lastTouchEventTime &&
869
882
  this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();
883
+ var isFakeEvent = isTouchSequence ? a11y.isFakeTouchstartFromScreenReader(event) :
884
+ a11y.isFakeMousedownFromScreenReader(event);
870
885
  // If the event started from an element with the native HTML drag&drop, it'll interfere
871
886
  // with our own dragging (e.g. `img` tags do it by default). Prevent the default action
872
887
  // to stop it from happening. Note that preventing on `dragstart` also seems to work, but
@@ -877,7 +892,7 @@
877
892
  event.preventDefault();
878
893
  }
879
894
  // Abort if the user is already dragging or is using a mouse button other than the primary one.
880
- if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent) {
895
+ if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {
881
896
  return;
882
897
  }
883
898
  // If we've got handles, we need to disable the tap highlight on the entire root element,
@@ -920,7 +935,7 @@
920
935
  // It's important that we maintain the position, because moving the element around in the DOM
921
936
  // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,
922
937
  // while moving the existing elements in all other cases.
923
- toggleVisibility(this._rootElement, true);
938
+ toggleVisibility(this._rootElement, true, dragImportantProperties);
924
939
  this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);
925
940
  this._destroyPreview();
926
941
  this._destroyPlaceholder();
@@ -1026,14 +1041,14 @@
1026
1041
  extendStyles(preview.style, {
1027
1042
  // It's important that we disable the pointer events on the preview, because
1028
1043
  // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.
1029
- pointerEvents: 'none',
1044
+ 'pointer-events': 'none',
1030
1045
  // We have to reset the margin, because it can throw off positioning relative to the viewport.
1031
- margin: '0',
1032
- position: 'fixed',
1033
- top: '0',
1034
- left: '0',
1035
- zIndex: "" + (this._config.zIndex || 1000)
1036
- });
1046
+ 'margin': '0',
1047
+ 'position': 'fixed',
1048
+ 'top': '0',
1049
+ 'left': '0',
1050
+ 'z-index': "" + (this._config.zIndex || 1000)
1051
+ }, dragImportantProperties);
1037
1052
  toggleNativeDragInteractions(preview, false);
1038
1053
  preview.classList.add('cdk-drag-preview');
1039
1054
  preview.setAttribute('dir', this._direction);
@@ -1073,7 +1088,7 @@
1073
1088
  return this._ngZone.runOutsideAngular(function () {
1074
1089
  return new Promise(function (resolve) {
1075
1090
  var handler = (function (event) {
1076
- if (!event || (getEventTarget(event) === _this._preview &&
1091
+ if (!event || (platform._getEventTarget(event) === _this._preview &&
1077
1092
  event.propertyName === 'transform')) {
1078
1093
  _this._preview.removeEventListener('transitionend', handler);
1079
1094
  resolve();
@@ -1219,8 +1234,12 @@
1219
1234
  var transform = getTransform(x, y);
1220
1235
  // Cache the previous transform amount only after the first drag sequence, because
1221
1236
  // we don't want our own transforms to stack on top of each other.
1237
+ // Should be excluded none because none + translate3d(x, y, x) is invalid css
1222
1238
  if (this._initialTransform == null) {
1223
- this._initialTransform = this._rootElement.style.transform || '';
1239
+ this._initialTransform = this._rootElement.style.transform
1240
+ && this._rootElement.style.transform != 'none'
1241
+ ? this._rootElement.style.transform
1242
+ : '';
1224
1243
  }
1225
1244
  // Preserve the previous `transform` value, if there was one. Note that we apply our own
1226
1245
  // transform before the user's, because things like rotation can affect which direction
@@ -1322,7 +1341,7 @@
1322
1341
  DragRef.prototype._updateOnScroll = function (event) {
1323
1342
  var scrollDifference = this._parentPositions.handleScroll(event);
1324
1343
  if (scrollDifference) {
1325
- var target = getEventTarget(event);
1344
+ var target = platform._getEventTarget(event);
1326
1345
  // ClientRect dimensions are based on the scroll position of the page and its parent node so
1327
1346
  // we have to update the cached boundary ClientRect if the user has scrolled. Check for
1328
1347
  // the `document` specifically since IE doesn't support `contains` on it.