@angular/cdk 13.2.3 → 13.2.6
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.
- package/drag-drop/drag-ref.d.ts +3 -1
- package/drag-drop/parent-position-tracker.d.ts +11 -3
- package/esm2020/drag-drop/drag-ref.mjs +27 -17
- package/esm2020/drag-drop/drop-list-ref.mjs +2 -2
- package/esm2020/drag-drop/parent-position-tracker.mjs +13 -5
- package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +24 -6
- package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +31 -10
- package/esm2020/overlay/overlay-ref.mjs +15 -16
- package/esm2020/testing/harness-environment.mjs +4 -1
- package/esm2020/testing/protractor/protractor-element.mjs +8 -3
- package/esm2020/testing/public-api.mjs +2 -1
- package/esm2020/testing/selenium-webdriver/selenium-web-driver-element.mjs +8 -3
- package/esm2020/testing/test-element-errors.mjs +15 -0
- package/esm2020/testing/test-element.mjs +1 -1
- package/esm2020/testing/testbed/fake-events/type-in-element.mjs +12 -3
- package/esm2020/testing/testbed/unit-test-element.mjs +21 -5
- package/esm2020/version.mjs +1 -1
- package/fesm2015/cdk.mjs +1 -1
- package/fesm2015/cdk.mjs.map +1 -1
- package/fesm2015/drag-drop.mjs +40 -21
- package/fesm2015/drag-drop.mjs.map +1 -1
- package/fesm2015/overlay.mjs +66 -28
- package/fesm2015/overlay.mjs.map +1 -1
- package/fesm2015/testing/protractor.mjs +7 -2
- package/fesm2015/testing/protractor.mjs.map +1 -1
- package/fesm2015/testing/selenium-webdriver.mjs +7 -2
- package/fesm2015/testing/selenium-webdriver.mjs.map +1 -1
- package/fesm2015/testing/testbed.mjs +31 -7
- package/fesm2015/testing/testbed.mjs.map +1 -1
- package/fesm2015/testing.mjs +19 -1
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/cdk.mjs +1 -1
- package/fesm2020/cdk.mjs.map +1 -1
- package/fesm2020/drag-drop.mjs +39 -21
- package/fesm2020/drag-drop.mjs.map +1 -1
- package/fesm2020/overlay.mjs +66 -28
- package/fesm2020/overlay.mjs.map +1 -1
- package/fesm2020/testing/protractor.mjs +7 -2
- package/fesm2020/testing/protractor.mjs.map +1 -1
- package/fesm2020/testing/selenium-webdriver.mjs +7 -2
- package/fesm2020/testing/selenium-webdriver.mjs.map +1 -1
- package/fesm2020/testing/testbed.mjs +31 -7
- package/fesm2020/testing/testbed.mjs.map +1 -1
- package/fesm2020/testing.mjs +19 -1
- package/fesm2020/testing.mjs.map +1 -1
- package/overlay/_index.scss +7 -1
- package/overlay/dispatchers/overlay-keyboard-dispatcher.d.ts +7 -2
- package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +8 -2
- package/overlay/overlay-ref.d.ts +2 -0
- package/overlay-prebuilt.css +1 -1
- package/package.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-update/devkit-migration-rule.js +2 -2
- package/schematics/ng-update/devkit-migration-rule.mjs +2 -2
- package/testing/public-api.d.ts +1 -0
- package/testing/test-element-errors.d.ts +12 -0
- package/testing/test-element.d.ts +4 -2
- package/testing/testbed/fake-events/type-in-element.d.ts +2 -2
- package/testing/testbed/unit-test-element.d.ts +4 -1
package/fesm2020/overlay.mjs
CHANGED
|
@@ -4,7 +4,7 @@ export { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scr
|
|
|
4
4
|
import * as i6 from '@angular/common';
|
|
5
5
|
import { DOCUMENT } from '@angular/common';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter,
|
|
7
|
+
import { Injectable, Inject, Optional, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';
|
|
8
8
|
import { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
9
9
|
import * as i1$1 from '@angular/cdk/platform';
|
|
10
10
|
import { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';
|
|
@@ -531,8 +531,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
531
531
|
* on event target and order of overlay opens.
|
|
532
532
|
*/
|
|
533
533
|
class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
534
|
-
constructor(document
|
|
534
|
+
constructor(document,
|
|
535
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
536
|
+
_ngZone) {
|
|
535
537
|
super(document);
|
|
538
|
+
this._ngZone = _ngZone;
|
|
536
539
|
/** Keyboard event listener that will be attached to the body. */
|
|
537
540
|
this._keydownListener = (event) => {
|
|
538
541
|
const overlays = this._attachedOverlays;
|
|
@@ -544,7 +547,14 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
544
547
|
// because we don't want overlays that don't handle keyboard events to block the ones below
|
|
545
548
|
// them that do.
|
|
546
549
|
if (overlays[i]._keydownEvents.observers.length > 0) {
|
|
547
|
-
overlays[i]._keydownEvents
|
|
550
|
+
const keydownEvents = overlays[i]._keydownEvents;
|
|
551
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
552
|
+
if (this._ngZone) {
|
|
553
|
+
this._ngZone.run(() => keydownEvents.next(event));
|
|
554
|
+
}
|
|
555
|
+
else {
|
|
556
|
+
keydownEvents.next(event);
|
|
557
|
+
}
|
|
548
558
|
break;
|
|
549
559
|
}
|
|
550
560
|
}
|
|
@@ -555,7 +565,13 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
555
565
|
super.add(overlayRef);
|
|
556
566
|
// Lazily start dispatcher once first overlay is added
|
|
557
567
|
if (!this._isAttached) {
|
|
558
|
-
|
|
568
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
569
|
+
if (this._ngZone) {
|
|
570
|
+
this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
this._document.body.addEventListener('keydown', this._keydownListener);
|
|
574
|
+
}
|
|
559
575
|
this._isAttached = true;
|
|
560
576
|
}
|
|
561
577
|
}
|
|
@@ -567,7 +583,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
567
583
|
}
|
|
568
584
|
}
|
|
569
585
|
}
|
|
570
|
-
OverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
586
|
+
OverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
571
587
|
OverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });
|
|
572
588
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{
|
|
573
589
|
type: Injectable,
|
|
@@ -575,6 +591,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
575
591
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
576
592
|
type: Inject,
|
|
577
593
|
args: [DOCUMENT]
|
|
594
|
+
}] }, { type: i0.NgZone, decorators: [{
|
|
595
|
+
type: Optional
|
|
578
596
|
}] }]; } });
|
|
579
597
|
|
|
580
598
|
/**
|
|
@@ -590,9 +608,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
590
608
|
* on event target and order of overlay opens.
|
|
591
609
|
*/
|
|
592
610
|
class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
593
|
-
constructor(document, _platform
|
|
611
|
+
constructor(document, _platform,
|
|
612
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
613
|
+
_ngZone) {
|
|
594
614
|
super(document);
|
|
595
615
|
this._platform = _platform;
|
|
616
|
+
this._ngZone = _ngZone;
|
|
596
617
|
this._cursorStyleIsSet = false;
|
|
597
618
|
/** Store pointerdown event target to track origin of click. */
|
|
598
619
|
this._pointerDownListener = (event) => {
|
|
@@ -633,7 +654,14 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
633
654
|
overlayRef.overlayElement.contains(origin)) {
|
|
634
655
|
break;
|
|
635
656
|
}
|
|
636
|
-
overlayRef._outsidePointerEvents
|
|
657
|
+
const outsidePointerEvents = overlayRef._outsidePointerEvents;
|
|
658
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
659
|
+
if (this._ngZone) {
|
|
660
|
+
this._ngZone.run(() => outsidePointerEvents.next(event));
|
|
661
|
+
}
|
|
662
|
+
else {
|
|
663
|
+
outsidePointerEvents.next(event);
|
|
664
|
+
}
|
|
637
665
|
}
|
|
638
666
|
};
|
|
639
667
|
}
|
|
@@ -648,10 +676,13 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
648
676
|
// https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html
|
|
649
677
|
if (!this._isAttached) {
|
|
650
678
|
const body = this._document.body;
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
679
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
680
|
+
if (this._ngZone) {
|
|
681
|
+
this._ngZone.runOutsideAngular(() => this._addEventListeners(body));
|
|
682
|
+
}
|
|
683
|
+
else {
|
|
684
|
+
this._addEventListeners(body);
|
|
685
|
+
}
|
|
655
686
|
// click event is not fired on iOS. To make element "clickable" we are
|
|
656
687
|
// setting the cursor to pointer
|
|
657
688
|
if (this._platform.IOS && !this._cursorStyleIsSet) {
|
|
@@ -677,8 +708,14 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
677
708
|
this._isAttached = false;
|
|
678
709
|
}
|
|
679
710
|
}
|
|
711
|
+
_addEventListeners(body) {
|
|
712
|
+
body.addEventListener('pointerdown', this._pointerDownListener, true);
|
|
713
|
+
body.addEventListener('click', this._clickListener, true);
|
|
714
|
+
body.addEventListener('auxclick', this._clickListener, true);
|
|
715
|
+
body.addEventListener('contextmenu', this._clickListener, true);
|
|
716
|
+
}
|
|
680
717
|
}
|
|
681
|
-
OverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
718
|
+
OverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
682
719
|
OverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });
|
|
683
720
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{
|
|
684
721
|
type: Injectable,
|
|
@@ -686,7 +723,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
686
723
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
687
724
|
type: Inject,
|
|
688
725
|
args: [DOCUMENT]
|
|
689
|
-
}] }, { type: i1$1.Platform }
|
|
726
|
+
}] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{
|
|
727
|
+
type: Optional
|
|
728
|
+
}] }]; } });
|
|
690
729
|
|
|
691
730
|
/**
|
|
692
731
|
* @license
|
|
@@ -792,6 +831,9 @@ class OverlayRef {
|
|
|
792
831
|
this._detachments = new Subject();
|
|
793
832
|
this._locationChanges = Subscription.EMPTY;
|
|
794
833
|
this._backdropClickHandler = (event) => this._backdropClick.next(event);
|
|
834
|
+
this._backdropTransitionendHandler = (event) => {
|
|
835
|
+
this._disposeBackdrop(event.target);
|
|
836
|
+
};
|
|
795
837
|
/** Stream of keydown events dispatched to this overlay. */
|
|
796
838
|
this._keydownEvents = new Subject();
|
|
797
839
|
/** Stream of mouse outside events dispatched to this overlay. */
|
|
@@ -1080,22 +1122,9 @@ class OverlayRef {
|
|
|
1080
1122
|
if (!backdropToDetach) {
|
|
1081
1123
|
return;
|
|
1082
1124
|
}
|
|
1083
|
-
let timeoutId;
|
|
1084
|
-
const finishDetach = () => {
|
|
1085
|
-
// It may not be attached to anything in certain cases (e.g. unit tests).
|
|
1086
|
-
if (backdropToDetach) {
|
|
1087
|
-
backdropToDetach.removeEventListener('click', this._backdropClickHandler);
|
|
1088
|
-
backdropToDetach.removeEventListener('transitionend', finishDetach);
|
|
1089
|
-
this._disposeBackdrop(backdropToDetach);
|
|
1090
|
-
}
|
|
1091
|
-
if (this._config.backdropClass) {
|
|
1092
|
-
this._toggleClasses(backdropToDetach, this._config.backdropClass, false);
|
|
1093
|
-
}
|
|
1094
|
-
clearTimeout(timeoutId);
|
|
1095
|
-
};
|
|
1096
1125
|
backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');
|
|
1097
1126
|
this._ngZone.runOutsideAngular(() => {
|
|
1098
|
-
backdropToDetach.addEventListener('transitionend',
|
|
1127
|
+
backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);
|
|
1099
1128
|
});
|
|
1100
1129
|
// If the backdrop doesn't have a transition, the `transitionend` event won't fire.
|
|
1101
1130
|
// In this case we make it unclickable and we try to remove it after a delay.
|
|
@@ -1103,7 +1132,10 @@ class OverlayRef {
|
|
|
1103
1132
|
// Run this outside the Angular zone because there's nothing that Angular cares about.
|
|
1104
1133
|
// If it were to run inside the Angular zone, every test that used Overlay would have to be
|
|
1105
1134
|
// either async or fakeAsync.
|
|
1106
|
-
|
|
1135
|
+
this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {
|
|
1136
|
+
console.log('fallback');
|
|
1137
|
+
this._disposeBackdrop(backdropToDetach);
|
|
1138
|
+
}, 500));
|
|
1107
1139
|
}
|
|
1108
1140
|
/** Toggles a single CSS class or an array of classes on an element. */
|
|
1109
1141
|
_toggleClasses(element, cssClasses, isAdd) {
|
|
@@ -1152,6 +1184,8 @@ class OverlayRef {
|
|
|
1152
1184
|
/** Removes a backdrop element from the DOM. */
|
|
1153
1185
|
_disposeBackdrop(backdrop) {
|
|
1154
1186
|
if (backdrop) {
|
|
1187
|
+
backdrop.removeEventListener('click', this._backdropClickHandler);
|
|
1188
|
+
backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);
|
|
1155
1189
|
backdrop.remove();
|
|
1156
1190
|
// It is possible that a new portal has been attached to this overlay since we started
|
|
1157
1191
|
// removing the backdrop. If that is the case, only clear the backdrop reference if it
|
|
@@ -1160,6 +1194,10 @@ class OverlayRef {
|
|
|
1160
1194
|
this._backdropElement = null;
|
|
1161
1195
|
}
|
|
1162
1196
|
}
|
|
1197
|
+
if (this._backdropTimeout) {
|
|
1198
|
+
clearTimeout(this._backdropTimeout);
|
|
1199
|
+
this._backdropTimeout = undefined;
|
|
1200
|
+
}
|
|
1163
1201
|
}
|
|
1164
1202
|
}
|
|
1165
1203
|
|