@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/fesm2020/core.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { VERSION as VERSION$1 } from '@angular/cdk';
|
|
|
7
7
|
import * as i3 from '@angular/common';
|
|
8
8
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
9
9
|
import * as i1$1 from '@angular/cdk/platform';
|
|
10
|
-
import { _isTestEnvironment, normalizePassiveListenerOptions } from '@angular/cdk/platform';
|
|
10
|
+
import { _isTestEnvironment, normalizePassiveListenerOptions, _getEventTarget } from '@angular/cdk/platform';
|
|
11
11
|
import { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';
|
|
12
12
|
import { Observable, Subject } from 'rxjs';
|
|
13
13
|
import { startWith } from 'rxjs/operators';
|
|
@@ -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
|
|
@@ -858,6 +858,74 @@ class RippleRef {
|
|
|
858
858
|
}
|
|
859
859
|
}
|
|
860
860
|
|
|
861
|
+
/**
|
|
862
|
+
* @license
|
|
863
|
+
* Copyright Google LLC All Rights Reserved.
|
|
864
|
+
*
|
|
865
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
866
|
+
* found in the LICENSE file at https://angular.io/license
|
|
867
|
+
*/
|
|
868
|
+
/** Options used to bind a passive capturing event. */
|
|
869
|
+
const passiveCapturingEventOptions$1 = normalizePassiveListenerOptions({
|
|
870
|
+
passive: true,
|
|
871
|
+
capture: true,
|
|
872
|
+
});
|
|
873
|
+
/** Manages events through delegation so that as few event handlers as possible are bound. */
|
|
874
|
+
class RippleEventManager {
|
|
875
|
+
constructor() {
|
|
876
|
+
this._events = new Map();
|
|
877
|
+
/** Event handler that is bound and which dispatches the events to the different targets. */
|
|
878
|
+
this._delegateEventHandler = (event) => {
|
|
879
|
+
const target = _getEventTarget(event);
|
|
880
|
+
if (target) {
|
|
881
|
+
this._events.get(event.type)?.forEach((handlers, element) => {
|
|
882
|
+
if (element === target || element.contains(target)) {
|
|
883
|
+
handlers.forEach(handler => handler.handleEvent(event));
|
|
884
|
+
}
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
/** Adds an event handler. */
|
|
890
|
+
addHandler(ngZone, name, element, handler) {
|
|
891
|
+
const handlersForEvent = this._events.get(name);
|
|
892
|
+
if (handlersForEvent) {
|
|
893
|
+
const handlersForElement = handlersForEvent.get(element);
|
|
894
|
+
if (handlersForElement) {
|
|
895
|
+
handlersForElement.add(handler);
|
|
896
|
+
}
|
|
897
|
+
else {
|
|
898
|
+
handlersForEvent.set(element, new Set([handler]));
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
else {
|
|
902
|
+
this._events.set(name, new Map([[element, new Set([handler])]]));
|
|
903
|
+
ngZone.runOutsideAngular(() => {
|
|
904
|
+
document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
/** Removes an event handler. */
|
|
909
|
+
removeHandler(name, element, handler) {
|
|
910
|
+
const handlersForEvent = this._events.get(name);
|
|
911
|
+
if (!handlersForEvent) {
|
|
912
|
+
return;
|
|
913
|
+
}
|
|
914
|
+
const handlersForElement = handlersForEvent.get(element);
|
|
915
|
+
if (!handlersForElement) {
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
handlersForElement.delete(handler);
|
|
919
|
+
if (handlersForElement.size === 0) {
|
|
920
|
+
handlersForEvent.delete(element);
|
|
921
|
+
}
|
|
922
|
+
if (handlersForEvent.size === 0) {
|
|
923
|
+
this._events.delete(name);
|
|
924
|
+
document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
|
|
861
929
|
// TODO: import these values from `@material/ripple` eventually.
|
|
862
930
|
/**
|
|
863
931
|
* Default ripple animation configuration for ripples without an explicit
|
|
@@ -872,8 +940,11 @@ const defaultRippleAnimationConfig = {
|
|
|
872
940
|
* events to avoid synthetic mouse events.
|
|
873
941
|
*/
|
|
874
942
|
const ignoreMouseEventsTimeout = 800;
|
|
875
|
-
/** Options
|
|
876
|
-
const
|
|
943
|
+
/** Options used to bind a passive capturing event. */
|
|
944
|
+
const passiveCapturingEventOptions = normalizePassiveListenerOptions({
|
|
945
|
+
passive: true,
|
|
946
|
+
capture: true,
|
|
947
|
+
});
|
|
877
948
|
/** Events that signal that the pointer is down. */
|
|
878
949
|
const pointerDownEvents = ['mousedown', 'touchstart'];
|
|
879
950
|
/** Events that signal that the pointer is up. */
|
|
@@ -886,9 +957,10 @@ const pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];
|
|
|
886
957
|
* @docs-private
|
|
887
958
|
*/
|
|
888
959
|
class RippleRenderer {
|
|
889
|
-
constructor(_target, _ngZone, elementOrElementRef,
|
|
960
|
+
constructor(_target, _ngZone, elementOrElementRef, _platform) {
|
|
890
961
|
this._target = _target;
|
|
891
962
|
this._ngZone = _ngZone;
|
|
963
|
+
this._platform = _platform;
|
|
892
964
|
/** Whether the pointer is currently down or not. */
|
|
893
965
|
this._isPointerDown = false;
|
|
894
966
|
/**
|
|
@@ -901,7 +973,7 @@ class RippleRenderer {
|
|
|
901
973
|
/** Whether pointer-up event listeners have been registered. */
|
|
902
974
|
this._pointerUpEventsRegistered = false;
|
|
903
975
|
// Only do anything if we're on the browser.
|
|
904
|
-
if (
|
|
976
|
+
if (_platform.isBrowser) {
|
|
905
977
|
this._containerElement = coerceElement(elementOrElementRef);
|
|
906
978
|
}
|
|
907
979
|
}
|
|
@@ -1024,13 +1096,17 @@ class RippleRenderer {
|
|
|
1024
1096
|
/** Sets up the trigger event listeners */
|
|
1025
1097
|
setupTriggerEvents(elementOrElementRef) {
|
|
1026
1098
|
const element = coerceElement(elementOrElementRef);
|
|
1027
|
-
if (!element || element === this._triggerElement) {
|
|
1099
|
+
if (!this._platform.isBrowser || !element || element === this._triggerElement) {
|
|
1028
1100
|
return;
|
|
1029
1101
|
}
|
|
1030
1102
|
// Remove all previously registered event listeners from the trigger element.
|
|
1031
1103
|
this._removeTriggerEvents();
|
|
1032
1104
|
this._triggerElement = element;
|
|
1033
|
-
|
|
1105
|
+
// Use event delegation for the trigger events since they're
|
|
1106
|
+
// set up during creation and are performance-sensitive.
|
|
1107
|
+
pointerDownEvents.forEach(type => {
|
|
1108
|
+
RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);
|
|
1109
|
+
});
|
|
1034
1110
|
}
|
|
1035
1111
|
/**
|
|
1036
1112
|
* Handles all registered events.
|
|
@@ -1050,7 +1126,16 @@ class RippleRenderer {
|
|
|
1050
1126
|
// We do this on-demand in order to reduce the total number of event listeners
|
|
1051
1127
|
// registered by the ripples, which speeds up the rendering time for large UIs.
|
|
1052
1128
|
if (!this._pointerUpEventsRegistered) {
|
|
1053
|
-
|
|
1129
|
+
// The events for hiding the ripple are bound directly on the trigger, because:
|
|
1130
|
+
// 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from
|
|
1131
|
+
// delegation will be diminished by having to look through all the data structures often.
|
|
1132
|
+
// 2. They aren't as performance-sensitive, because they're bound only after the user
|
|
1133
|
+
// has interacted with an element.
|
|
1134
|
+
this._ngZone.runOutsideAngular(() => {
|
|
1135
|
+
pointerUpEvents.forEach(type => {
|
|
1136
|
+
this._triggerElement.addEventListener(type, this, passiveCapturingEventOptions);
|
|
1137
|
+
});
|
|
1138
|
+
});
|
|
1054
1139
|
this._pointerUpEventsRegistered = true;
|
|
1055
1140
|
}
|
|
1056
1141
|
}
|
|
@@ -1144,31 +1229,21 @@ class RippleRenderer {
|
|
|
1144
1229
|
}
|
|
1145
1230
|
});
|
|
1146
1231
|
}
|
|
1147
|
-
/** Registers event listeners for a given list of events. */
|
|
1148
|
-
_registerEvents(eventTypes) {
|
|
1149
|
-
this._ngZone.runOutsideAngular(() => {
|
|
1150
|
-
eventTypes.forEach(type => {
|
|
1151
|
-
this._triggerElement.addEventListener(type, this, passiveEventOptions);
|
|
1152
|
-
});
|
|
1153
|
-
});
|
|
1154
|
-
}
|
|
1155
1232
|
_getActiveRipples() {
|
|
1156
1233
|
return Array.from(this._activeRipples.keys());
|
|
1157
1234
|
}
|
|
1158
1235
|
/** Removes previously registered event listeners from the trigger element. */
|
|
1159
1236
|
_removeTriggerEvents() {
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
});
|
|
1237
|
+
const trigger = this._triggerElement;
|
|
1238
|
+
if (trigger) {
|
|
1239
|
+
pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));
|
|
1164
1240
|
if (this._pointerUpEventsRegistered) {
|
|
1165
|
-
pointerUpEvents.forEach(type =>
|
|
1166
|
-
this._triggerElement.removeEventListener(type, this, passiveEventOptions);
|
|
1167
|
-
});
|
|
1241
|
+
pointerUpEvents.forEach(type => trigger.removeEventListener(type, this, passiveCapturingEventOptions));
|
|
1168
1242
|
}
|
|
1169
1243
|
}
|
|
1170
1244
|
}
|
|
1171
1245
|
}
|
|
1246
|
+
RippleRenderer._eventManager = new RippleEventManager();
|
|
1172
1247
|
/**
|
|
1173
1248
|
* Returns the distance from the point (x, y) to the furthest corner of a rectangle.
|
|
1174
1249
|
*/
|