@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/fesm2015/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, ElementRef, Optional, 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, _isTestEnvironment, _getEventTarget } from '@angular/cdk/platform';
|
|
@@ -492,6 +492,9 @@ class OverlayRef {
|
|
|
492
492
|
this._detachments = new Subject();
|
|
493
493
|
this._locationChanges = Subscription.EMPTY;
|
|
494
494
|
this._backdropClickHandler = (event) => this._backdropClick.next(event);
|
|
495
|
+
this._backdropTransitionendHandler = (event) => {
|
|
496
|
+
this._disposeBackdrop(event.target);
|
|
497
|
+
};
|
|
495
498
|
/** Stream of keydown events dispatched to this overlay. */
|
|
496
499
|
this._keydownEvents = new Subject();
|
|
497
500
|
/** Stream of mouse outside events dispatched to this overlay. */
|
|
@@ -781,22 +784,9 @@ class OverlayRef {
|
|
|
781
784
|
if (!backdropToDetach) {
|
|
782
785
|
return;
|
|
783
786
|
}
|
|
784
|
-
let timeoutId;
|
|
785
|
-
const finishDetach = () => {
|
|
786
|
-
// It may not be attached to anything in certain cases (e.g. unit tests).
|
|
787
|
-
if (backdropToDetach) {
|
|
788
|
-
backdropToDetach.removeEventListener('click', this._backdropClickHandler);
|
|
789
|
-
backdropToDetach.removeEventListener('transitionend', finishDetach);
|
|
790
|
-
this._disposeBackdrop(backdropToDetach);
|
|
791
|
-
}
|
|
792
|
-
if (this._config.backdropClass) {
|
|
793
|
-
this._toggleClasses(backdropToDetach, this._config.backdropClass, false);
|
|
794
|
-
}
|
|
795
|
-
clearTimeout(timeoutId);
|
|
796
|
-
};
|
|
797
787
|
backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');
|
|
798
788
|
this._ngZone.runOutsideAngular(() => {
|
|
799
|
-
backdropToDetach.addEventListener('transitionend',
|
|
789
|
+
backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);
|
|
800
790
|
});
|
|
801
791
|
// If the backdrop doesn't have a transition, the `transitionend` event won't fire.
|
|
802
792
|
// In this case we make it unclickable and we try to remove it after a delay.
|
|
@@ -804,7 +794,10 @@ class OverlayRef {
|
|
|
804
794
|
// Run this outside the Angular zone because there's nothing that Angular cares about.
|
|
805
795
|
// If it were to run inside the Angular zone, every test that used Overlay would have to be
|
|
806
796
|
// either async or fakeAsync.
|
|
807
|
-
|
|
797
|
+
this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {
|
|
798
|
+
console.log('fallback');
|
|
799
|
+
this._disposeBackdrop(backdropToDetach);
|
|
800
|
+
}, 500));
|
|
808
801
|
}
|
|
809
802
|
/** Toggles a single CSS class or an array of classes on an element. */
|
|
810
803
|
_toggleClasses(element, cssClasses, isAdd) {
|
|
@@ -853,6 +846,8 @@ class OverlayRef {
|
|
|
853
846
|
/** Removes a backdrop element from the DOM. */
|
|
854
847
|
_disposeBackdrop(backdrop) {
|
|
855
848
|
if (backdrop) {
|
|
849
|
+
backdrop.removeEventListener('click', this._backdropClickHandler);
|
|
850
|
+
backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);
|
|
856
851
|
backdrop.remove();
|
|
857
852
|
// It is possible that a new portal has been attached to this overlay since we started
|
|
858
853
|
// removing the backdrop. If that is the case, only clear the backdrop reference if it
|
|
@@ -861,6 +856,10 @@ class OverlayRef {
|
|
|
861
856
|
this._backdropElement = null;
|
|
862
857
|
}
|
|
863
858
|
}
|
|
859
|
+
if (this._backdropTimeout) {
|
|
860
|
+
clearTimeout(this._backdropTimeout);
|
|
861
|
+
this._backdropTimeout = undefined;
|
|
862
|
+
}
|
|
864
863
|
}
|
|
865
864
|
}
|
|
866
865
|
|
|
@@ -2212,8 +2211,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
2212
2211
|
* on event target and order of overlay opens.
|
|
2213
2212
|
*/
|
|
2214
2213
|
class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
2215
|
-
constructor(document
|
|
2214
|
+
constructor(document,
|
|
2215
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2216
|
+
_ngZone) {
|
|
2216
2217
|
super(document);
|
|
2218
|
+
this._ngZone = _ngZone;
|
|
2217
2219
|
/** Keyboard event listener that will be attached to the body. */
|
|
2218
2220
|
this._keydownListener = (event) => {
|
|
2219
2221
|
const overlays = this._attachedOverlays;
|
|
@@ -2225,7 +2227,14 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
2225
2227
|
// because we don't want overlays that don't handle keyboard events to block the ones below
|
|
2226
2228
|
// them that do.
|
|
2227
2229
|
if (overlays[i]._keydownEvents.observers.length > 0) {
|
|
2228
|
-
overlays[i]._keydownEvents
|
|
2230
|
+
const keydownEvents = overlays[i]._keydownEvents;
|
|
2231
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2232
|
+
if (this._ngZone) {
|
|
2233
|
+
this._ngZone.run(() => keydownEvents.next(event));
|
|
2234
|
+
}
|
|
2235
|
+
else {
|
|
2236
|
+
keydownEvents.next(event);
|
|
2237
|
+
}
|
|
2229
2238
|
break;
|
|
2230
2239
|
}
|
|
2231
2240
|
}
|
|
@@ -2236,7 +2245,13 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
2236
2245
|
super.add(overlayRef);
|
|
2237
2246
|
// Lazily start dispatcher once first overlay is added
|
|
2238
2247
|
if (!this._isAttached) {
|
|
2239
|
-
|
|
2248
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2249
|
+
if (this._ngZone) {
|
|
2250
|
+
this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));
|
|
2251
|
+
}
|
|
2252
|
+
else {
|
|
2253
|
+
this._document.body.addEventListener('keydown', this._keydownListener);
|
|
2254
|
+
}
|
|
2240
2255
|
this._isAttached = true;
|
|
2241
2256
|
}
|
|
2242
2257
|
}
|
|
@@ -2248,7 +2263,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
|
|
|
2248
2263
|
}
|
|
2249
2264
|
}
|
|
2250
2265
|
}
|
|
2251
|
-
OverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2266
|
+
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 });
|
|
2252
2267
|
OverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });
|
|
2253
2268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{
|
|
2254
2269
|
type: Injectable,
|
|
@@ -2257,6 +2272,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
2257
2272
|
return [{ type: undefined, decorators: [{
|
|
2258
2273
|
type: Inject,
|
|
2259
2274
|
args: [DOCUMENT]
|
|
2275
|
+
}] }, { type: i0.NgZone, decorators: [{
|
|
2276
|
+
type: Optional
|
|
2260
2277
|
}] }];
|
|
2261
2278
|
} });
|
|
2262
2279
|
|
|
@@ -2273,9 +2290,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
2273
2290
|
* on event target and order of overlay opens.
|
|
2274
2291
|
*/
|
|
2275
2292
|
class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
2276
|
-
constructor(document, _platform
|
|
2293
|
+
constructor(document, _platform,
|
|
2294
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2295
|
+
_ngZone) {
|
|
2277
2296
|
super(document);
|
|
2278
2297
|
this._platform = _platform;
|
|
2298
|
+
this._ngZone = _ngZone;
|
|
2279
2299
|
this._cursorStyleIsSet = false;
|
|
2280
2300
|
/** Store pointerdown event target to track origin of click. */
|
|
2281
2301
|
this._pointerDownListener = (event) => {
|
|
@@ -2316,7 +2336,14 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
2316
2336
|
overlayRef.overlayElement.contains(origin)) {
|
|
2317
2337
|
break;
|
|
2318
2338
|
}
|
|
2319
|
-
overlayRef._outsidePointerEvents
|
|
2339
|
+
const outsidePointerEvents = overlayRef._outsidePointerEvents;
|
|
2340
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2341
|
+
if (this._ngZone) {
|
|
2342
|
+
this._ngZone.run(() => outsidePointerEvents.next(event));
|
|
2343
|
+
}
|
|
2344
|
+
else {
|
|
2345
|
+
outsidePointerEvents.next(event);
|
|
2346
|
+
}
|
|
2320
2347
|
}
|
|
2321
2348
|
};
|
|
2322
2349
|
}
|
|
@@ -2331,10 +2358,13 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
2331
2358
|
// https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html
|
|
2332
2359
|
if (!this._isAttached) {
|
|
2333
2360
|
const body = this._document.body;
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2361
|
+
/** @breaking-change 14.0.0 _ngZone will be required. */
|
|
2362
|
+
if (this._ngZone) {
|
|
2363
|
+
this._ngZone.runOutsideAngular(() => this._addEventListeners(body));
|
|
2364
|
+
}
|
|
2365
|
+
else {
|
|
2366
|
+
this._addEventListeners(body);
|
|
2367
|
+
}
|
|
2338
2368
|
// click event is not fired on iOS. To make element "clickable" we are
|
|
2339
2369
|
// setting the cursor to pointer
|
|
2340
2370
|
if (this._platform.IOS && !this._cursorStyleIsSet) {
|
|
@@ -2360,8 +2390,14 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
|
|
|
2360
2390
|
this._isAttached = false;
|
|
2361
2391
|
}
|
|
2362
2392
|
}
|
|
2393
|
+
_addEventListeners(body) {
|
|
2394
|
+
body.addEventListener('pointerdown', this._pointerDownListener, true);
|
|
2395
|
+
body.addEventListener('click', this._clickListener, true);
|
|
2396
|
+
body.addEventListener('auxclick', this._clickListener, true);
|
|
2397
|
+
body.addEventListener('contextmenu', this._clickListener, true);
|
|
2398
|
+
}
|
|
2363
2399
|
}
|
|
2364
|
-
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 });
|
|
2400
|
+
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 });
|
|
2365
2401
|
OverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });
|
|
2366
2402
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{
|
|
2367
2403
|
type: Injectable,
|
|
@@ -2370,7 +2406,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
2370
2406
|
return [{ type: undefined, decorators: [{
|
|
2371
2407
|
type: Inject,
|
|
2372
2408
|
args: [DOCUMENT]
|
|
2373
|
-
}] }, { type: i1$1.Platform }
|
|
2409
|
+
}] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{
|
|
2410
|
+
type: Optional
|
|
2411
|
+
}] }];
|
|
2374
2412
|
} });
|
|
2375
2413
|
|
|
2376
2414
|
/** Next overlay unique ID. */
|