@angular/material 15.1.0-next.0 → 15.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.
- package/autocomplete/testing/index.d.ts +2 -0
- package/button/testing/index.d.ts +2 -0
- package/button-toggle/testing/index.d.ts +4 -0
- package/checkbox/testing/index.d.ts +2 -0
- package/core/index.d.ts +3 -3
- package/esm2020/autocomplete/testing/autocomplete-harness-filters.mjs +1 -1
- package/esm2020/autocomplete/testing/autocomplete-harness.mjs +6 -2
- package/esm2020/button/icon-button.mjs +4 -4
- package/esm2020/button/testing/button-harness-filters.mjs +1 -1
- package/esm2020/button/testing/button-harness.mjs +5 -2
- package/esm2020/button-toggle/testing/button-toggle-group-harness-filters.mjs +1 -1
- package/esm2020/button-toggle/testing/button-toggle-group-harness.mjs +4 -2
- package/esm2020/button-toggle/testing/button-toggle-harness-filters.mjs +1 -1
- package/esm2020/button-toggle/testing/button-toggle-harness.mjs +5 -2
- package/esm2020/checkbox/testing/checkbox-harness-filters.mjs +1 -1
- package/esm2020/checkbox/testing/checkbox-harness.mjs +5 -2
- package/esm2020/chips/chip-action.mjs +3 -5
- package/esm2020/core/ripple/ripple-event-manager.mjs +69 -0
- package/esm2020/core/ripple/ripple-renderer.mjs +31 -23
- package/esm2020/core/version.mjs +1 -1
- package/esm2020/form-field/directives/prefix.mjs +12 -7
- package/esm2020/form-field/directives/suffix.mjs +12 -7
- package/esm2020/legacy-autocomplete/testing/autocomplete-harness-filters.mjs +1 -1
- package/esm2020/legacy-autocomplete/testing/autocomplete-harness.mjs +6 -2
- package/esm2020/legacy-button/testing/button-harness.mjs +5 -2
- package/esm2020/legacy-checkbox/testing/checkbox-harness.mjs +5 -2
- package/esm2020/list/list-option.mjs +2 -5
- package/esm2020/list/selection-list.mjs +2 -9
- package/esm2020/progress-spinner/progress-spinner.mjs +4 -5
- package/esm2020/slider/testing/slider-harness-filters.mjs +1 -1
- package/esm2020/slider/testing/slider-harness.mjs +6 -2
- package/esm2020/tabs/tab-group.mjs +6 -6
- package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +7 -7
- package/fesm2015/autocomplete/testing.mjs +5 -1
- package/fesm2015/autocomplete/testing.mjs.map +1 -1
- package/fesm2015/button/testing.mjs +4 -1
- package/fesm2015/button/testing.mjs.map +1 -1
- package/fesm2015/button-toggle/testing.mjs +7 -2
- package/fesm2015/button-toggle/testing.mjs.map +1 -1
- package/fesm2015/button.mjs +4 -4
- package/fesm2015/button.mjs.map +1 -1
- package/fesm2015/checkbox/testing.mjs +4 -1
- package/fesm2015/checkbox/testing.mjs.map +1 -1
- package/fesm2015/chips.mjs +2 -4
- package/fesm2015/chips.mjs.map +1 -1
- package/fesm2015/core.mjs +100 -24
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/form-field.mjs +20 -10
- package/fesm2015/form-field.mjs.map +1 -1
- package/fesm2015/legacy-autocomplete/testing.mjs +6 -8
- package/fesm2015/legacy-autocomplete/testing.mjs.map +1 -1
- package/fesm2015/legacy-button/testing.mjs +4 -1
- package/fesm2015/legacy-button/testing.mjs.map +1 -1
- package/fesm2015/legacy-checkbox/testing.mjs +4 -1
- package/fesm2015/legacy-checkbox/testing.mjs.map +1 -1
- package/fesm2015/list.mjs +2 -12
- package/fesm2015/list.mjs.map +1 -1
- package/fesm2015/progress-spinner.mjs +3 -4
- package/fesm2015/progress-spinner.mjs.map +1 -1
- package/fesm2015/slider/testing.mjs +5 -1
- package/fesm2015/slider/testing.mjs.map +1 -1
- package/fesm2015/tabs.mjs +11 -11
- package/fesm2015/tabs.mjs.map +1 -1
- package/fesm2020/autocomplete/testing.mjs +5 -1
- package/fesm2020/autocomplete/testing.mjs.map +1 -1
- package/fesm2020/button/testing.mjs +4 -1
- package/fesm2020/button/testing.mjs.map +1 -1
- package/fesm2020/button-toggle/testing.mjs +7 -2
- package/fesm2020/button-toggle/testing.mjs.map +1 -1
- package/fesm2020/button.mjs +4 -4
- package/fesm2020/button.mjs.map +1 -1
- package/fesm2020/checkbox/testing.mjs +4 -1
- package/fesm2020/checkbox/testing.mjs.map +1 -1
- package/fesm2020/chips.mjs +2 -4
- package/fesm2020/chips.mjs.map +1 -1
- package/fesm2020/core.mjs +99 -24
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/form-field.mjs +20 -10
- package/fesm2020/form-field.mjs.map +1 -1
- package/fesm2020/legacy-autocomplete/testing.mjs +5 -1
- package/fesm2020/legacy-autocomplete/testing.mjs.map +1 -1
- package/fesm2020/legacy-button/testing.mjs +4 -1
- package/fesm2020/legacy-button/testing.mjs.map +1 -1
- package/fesm2020/legacy-checkbox/testing.mjs +4 -1
- package/fesm2020/legacy-checkbox/testing.mjs.map +1 -1
- package/fesm2020/list.mjs +2 -12
- package/fesm2020/list.mjs.map +1 -1
- package/fesm2020/progress-spinner.mjs +3 -4
- package/fesm2020/progress-spinner.mjs.map +1 -1
- package/fesm2020/slider/testing.mjs +5 -1
- package/fesm2020/slider/testing.mjs.map +1 -1
- package/fesm2020/tabs.mjs +11 -11
- package/fesm2020/tabs.mjs.map +1 -1
- package/form-field/index.d.ts +4 -4
- package/legacy-autocomplete/testing/index.d.ts +2 -0
- package/list/_interactive-list-theme.scss +0 -17
- package/list/index.d.ts +0 -12
- package/package.json +2 -2
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/progress-spinner/index.d.ts +3 -4
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-generate/mdc-migration/index_bundled.js +4 -2
- package/schematics/ng-generate/mdc-migration/index_bundled.js.map +2 -2
- package/schematics/ng-generate/mdc-migration/mdc_migration_bundle_metadata.json +1 -1
- package/slider/testing/index.d.ts +2 -0
- package/tabs/_tabs-common.scss +42 -0
- package/tabs/_tabs-theme.scss +4 -30
package/fesm2015/core.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { VERSION as VERSION$1 } from '@angular/cdk';
|
|
|
5
5
|
import * as i3 from '@angular/common';
|
|
6
6
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
7
7
|
import * as i1$1 from '@angular/cdk/platform';
|
|
8
|
-
import { _isTestEnvironment, normalizePassiveListenerOptions } from '@angular/cdk/platform';
|
|
8
|
+
import { _isTestEnvironment, normalizePassiveListenerOptions, _getEventTarget } from '@angular/cdk/platform';
|
|
9
9
|
import * as i1 from '@angular/cdk/a11y';
|
|
10
10
|
import { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';
|
|
11
11
|
import { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';
|
|
@@ -22,7 +22,7 @@ import { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';
|
|
|
22
22
|
* found in the LICENSE file at https://angular.io/license
|
|
23
23
|
*/
|
|
24
24
|
/** Current version of Angular Material. */
|
|
25
|
-
const VERSION = new Version('15.1.0-next.
|
|
25
|
+
const VERSION = new Version('15.1.0-next.1');
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* @license
|
|
@@ -848,6 +848,75 @@ class RippleRef {
|
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
850
|
|
|
851
|
+
/**
|
|
852
|
+
* @license
|
|
853
|
+
* Copyright Google LLC All Rights Reserved.
|
|
854
|
+
*
|
|
855
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
856
|
+
* found in the LICENSE file at https://angular.io/license
|
|
857
|
+
*/
|
|
858
|
+
/** Options used to bind a passive capturing event. */
|
|
859
|
+
const passiveCapturingEventOptions$1 = normalizePassiveListenerOptions({
|
|
860
|
+
passive: true,
|
|
861
|
+
capture: true,
|
|
862
|
+
});
|
|
863
|
+
/** Manages events through delegation so that as few event handlers as possible are bound. */
|
|
864
|
+
class RippleEventManager {
|
|
865
|
+
constructor() {
|
|
866
|
+
this._events = new Map();
|
|
867
|
+
/** Event handler that is bound and which dispatches the events to the different targets. */
|
|
868
|
+
this._delegateEventHandler = (event) => {
|
|
869
|
+
var _a;
|
|
870
|
+
const target = _getEventTarget(event);
|
|
871
|
+
if (target) {
|
|
872
|
+
(_a = this._events.get(event.type)) === null || _a === void 0 ? void 0 : _a.forEach((handlers, element) => {
|
|
873
|
+
if (element === target || element.contains(target)) {
|
|
874
|
+
handlers.forEach(handler => handler.handleEvent(event));
|
|
875
|
+
}
|
|
876
|
+
});
|
|
877
|
+
}
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
/** Adds an event handler. */
|
|
881
|
+
addHandler(ngZone, name, element, handler) {
|
|
882
|
+
const handlersForEvent = this._events.get(name);
|
|
883
|
+
if (handlersForEvent) {
|
|
884
|
+
const handlersForElement = handlersForEvent.get(element);
|
|
885
|
+
if (handlersForElement) {
|
|
886
|
+
handlersForElement.add(handler);
|
|
887
|
+
}
|
|
888
|
+
else {
|
|
889
|
+
handlersForEvent.set(element, new Set([handler]));
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
else {
|
|
893
|
+
this._events.set(name, new Map([[element, new Set([handler])]]));
|
|
894
|
+
ngZone.runOutsideAngular(() => {
|
|
895
|
+
document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);
|
|
896
|
+
});
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
/** Removes an event handler. */
|
|
900
|
+
removeHandler(name, element, handler) {
|
|
901
|
+
const handlersForEvent = this._events.get(name);
|
|
902
|
+
if (!handlersForEvent) {
|
|
903
|
+
return;
|
|
904
|
+
}
|
|
905
|
+
const handlersForElement = handlersForEvent.get(element);
|
|
906
|
+
if (!handlersForElement) {
|
|
907
|
+
return;
|
|
908
|
+
}
|
|
909
|
+
handlersForElement.delete(handler);
|
|
910
|
+
if (handlersForElement.size === 0) {
|
|
911
|
+
handlersForEvent.delete(element);
|
|
912
|
+
}
|
|
913
|
+
if (handlersForEvent.size === 0) {
|
|
914
|
+
this._events.delete(name);
|
|
915
|
+
document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
|
|
851
920
|
// TODO: import these values from `@material/ripple` eventually.
|
|
852
921
|
/**
|
|
853
922
|
* Default ripple animation configuration for ripples without an explicit
|
|
@@ -862,8 +931,11 @@ const defaultRippleAnimationConfig = {
|
|
|
862
931
|
* events to avoid synthetic mouse events.
|
|
863
932
|
*/
|
|
864
933
|
const ignoreMouseEventsTimeout = 800;
|
|
865
|
-
/** Options
|
|
866
|
-
const
|
|
934
|
+
/** Options used to bind a passive capturing event. */
|
|
935
|
+
const passiveCapturingEventOptions = normalizePassiveListenerOptions({
|
|
936
|
+
passive: true,
|
|
937
|
+
capture: true,
|
|
938
|
+
});
|
|
867
939
|
/** Events that signal that the pointer is down. */
|
|
868
940
|
const pointerDownEvents = ['mousedown', 'touchstart'];
|
|
869
941
|
/** Events that signal that the pointer is up. */
|
|
@@ -876,9 +948,10 @@ const pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];
|
|
|
876
948
|
* @docs-private
|
|
877
949
|
*/
|
|
878
950
|
class RippleRenderer {
|
|
879
|
-
constructor(_target, _ngZone, elementOrElementRef,
|
|
951
|
+
constructor(_target, _ngZone, elementOrElementRef, _platform) {
|
|
880
952
|
this._target = _target;
|
|
881
953
|
this._ngZone = _ngZone;
|
|
954
|
+
this._platform = _platform;
|
|
882
955
|
/** Whether the pointer is currently down or not. */
|
|
883
956
|
this._isPointerDown = false;
|
|
884
957
|
/**
|
|
@@ -891,7 +964,7 @@ class RippleRenderer {
|
|
|
891
964
|
/** Whether pointer-up event listeners have been registered. */
|
|
892
965
|
this._pointerUpEventsRegistered = false;
|
|
893
966
|
// Only do anything if we're on the browser.
|
|
894
|
-
if (
|
|
967
|
+
if (_platform.isBrowser) {
|
|
895
968
|
this._containerElement = coerceElement(elementOrElementRef);
|
|
896
969
|
}
|
|
897
970
|
}
|
|
@@ -1014,13 +1087,17 @@ class RippleRenderer {
|
|
|
1014
1087
|
/** Sets up the trigger event listeners */
|
|
1015
1088
|
setupTriggerEvents(elementOrElementRef) {
|
|
1016
1089
|
const element = coerceElement(elementOrElementRef);
|
|
1017
|
-
if (!element || element === this._triggerElement) {
|
|
1090
|
+
if (!this._platform.isBrowser || !element || element === this._triggerElement) {
|
|
1018
1091
|
return;
|
|
1019
1092
|
}
|
|
1020
1093
|
// Remove all previously registered event listeners from the trigger element.
|
|
1021
1094
|
this._removeTriggerEvents();
|
|
1022
1095
|
this._triggerElement = element;
|
|
1023
|
-
|
|
1096
|
+
// Use event delegation for the trigger events since they're
|
|
1097
|
+
// set up during creation and are performance-sensitive.
|
|
1098
|
+
pointerDownEvents.forEach(type => {
|
|
1099
|
+
RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);
|
|
1100
|
+
});
|
|
1024
1101
|
}
|
|
1025
1102
|
/**
|
|
1026
1103
|
* Handles all registered events.
|
|
@@ -1040,7 +1117,16 @@ class RippleRenderer {
|
|
|
1040
1117
|
// We do this on-demand in order to reduce the total number of event listeners
|
|
1041
1118
|
// registered by the ripples, which speeds up the rendering time for large UIs.
|
|
1042
1119
|
if (!this._pointerUpEventsRegistered) {
|
|
1043
|
-
|
|
1120
|
+
// The events for hiding the ripple are bound directly on the trigger, because:
|
|
1121
|
+
// 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from
|
|
1122
|
+
// delegation will be diminished by having to look through all the data structures often.
|
|
1123
|
+
// 2. They aren't as performance-sensitive, because they're bound only after the user
|
|
1124
|
+
// has interacted with an element.
|
|
1125
|
+
this._ngZone.runOutsideAngular(() => {
|
|
1126
|
+
pointerUpEvents.forEach(type => {
|
|
1127
|
+
this._triggerElement.addEventListener(type, this, passiveCapturingEventOptions);
|
|
1128
|
+
});
|
|
1129
|
+
});
|
|
1044
1130
|
this._pointerUpEventsRegistered = true;
|
|
1045
1131
|
}
|
|
1046
1132
|
}
|
|
@@ -1135,31 +1221,21 @@ class RippleRenderer {
|
|
|
1135
1221
|
}
|
|
1136
1222
|
});
|
|
1137
1223
|
}
|
|
1138
|
-
/** Registers event listeners for a given list of events. */
|
|
1139
|
-
_registerEvents(eventTypes) {
|
|
1140
|
-
this._ngZone.runOutsideAngular(() => {
|
|
1141
|
-
eventTypes.forEach(type => {
|
|
1142
|
-
this._triggerElement.addEventListener(type, this, passiveEventOptions);
|
|
1143
|
-
});
|
|
1144
|
-
});
|
|
1145
|
-
}
|
|
1146
1224
|
_getActiveRipples() {
|
|
1147
1225
|
return Array.from(this._activeRipples.keys());
|
|
1148
1226
|
}
|
|
1149
1227
|
/** Removes previously registered event listeners from the trigger element. */
|
|
1150
1228
|
_removeTriggerEvents() {
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
});
|
|
1229
|
+
const trigger = this._triggerElement;
|
|
1230
|
+
if (trigger) {
|
|
1231
|
+
pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));
|
|
1155
1232
|
if (this._pointerUpEventsRegistered) {
|
|
1156
|
-
pointerUpEvents.forEach(type =>
|
|
1157
|
-
this._triggerElement.removeEventListener(type, this, passiveEventOptions);
|
|
1158
|
-
});
|
|
1233
|
+
pointerUpEvents.forEach(type => trigger.removeEventListener(type, this, passiveCapturingEventOptions));
|
|
1159
1234
|
}
|
|
1160
1235
|
}
|
|
1161
1236
|
}
|
|
1162
1237
|
}
|
|
1238
|
+
RippleRenderer._eventManager = new RippleEventManager();
|
|
1163
1239
|
/**
|
|
1164
1240
|
* Returns the distance from the point (x, y) to the furthest corner of a rectangle.
|
|
1165
1241
|
*/
|