@m3e/web 2.1.1 → 2.1.2
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/dist/all.js +605 -1296
- package/dist/all.js.map +1 -1
- package/dist/all.min.js +54 -114
- package/dist/all.min.js.map +1 -1
- package/dist/app-bar.js +2 -34
- package/dist/app-bar.js.map +1 -1
- package/dist/app-bar.min.js +1 -1
- package/dist/app-bar.min.js.map +1 -1
- package/dist/autocomplete.js +17 -40
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.min.js +1 -1
- package/dist/autocomplete.min.js.map +1 -1
- package/dist/avatar.js +1 -28
- package/dist/avatar.js.map +1 -1
- package/dist/avatar.min.js +1 -1
- package/dist/avatar.min.js.map +1 -1
- package/dist/badge.js +1 -39
- package/dist/badge.js.map +1 -1
- package/dist/badge.min.js +1 -1
- package/dist/badge.min.js.map +1 -1
- package/dist/bottom-sheet.js +22 -58
- package/dist/bottom-sheet.js.map +1 -1
- package/dist/bottom-sheet.min.js +1 -1
- package/dist/bottom-sheet.min.js.map +1 -1
- package/dist/button-group.js +2 -34
- package/dist/button-group.js.map +1 -1
- package/dist/button-group.min.js +1 -1
- package/dist/button-group.min.js.map +1 -1
- package/dist/button.js +2 -34
- package/dist/button.js.map +1 -1
- package/dist/button.min.js +1 -1
- package/dist/button.min.js.map +1 -1
- package/dist/card.js +4 -34
- package/dist/card.js.map +1 -1
- package/dist/card.min.js +1 -1
- package/dist/card.min.js.map +1 -1
- package/dist/checkbox.js +2 -34
- package/dist/checkbox.js.map +1 -1
- package/dist/checkbox.min.js +1 -1
- package/dist/checkbox.min.js.map +1 -1
- package/dist/chips.js +2 -40
- package/dist/chips.js.map +1 -1
- package/dist/chips.min.js +1 -1
- package/dist/chips.min.js.map +1 -1
- package/dist/core-a11y.js +1 -39
- package/dist/core-a11y.js.map +1 -1
- package/dist/core-a11y.min.js +4 -4
- package/dist/core-a11y.min.js.map +1 -1
- package/dist/core-anchoring.js +164 -177
- package/dist/core-anchoring.js.map +1 -1
- package/dist/core-anchoring.min.js +1 -1
- package/dist/core-anchoring.min.js.map +1 -1
- package/dist/core-bidi.js +1 -31
- package/dist/core-bidi.js.map +1 -1
- package/dist/core-bidi.min.js +2 -3
- package/dist/core-bidi.min.js.map +1 -1
- package/dist/core.js +53 -40
- package/dist/core.js.map +1 -1
- package/dist/core.min.js +1 -1
- package/dist/core.min.js.map +1 -1
- package/dist/css-custom-data.json +517 -512
- package/dist/custom-elements.json +5201 -4336
- package/dist/dialog.js +3 -41
- package/dist/dialog.js.map +1 -1
- package/dist/dialog.min.js +1 -1
- package/dist/dialog.min.js.map +1 -1
- package/dist/divider.js +1 -28
- package/dist/divider.js.map +1 -1
- package/dist/divider.min.js +1 -1
- package/dist/divider.min.js.map +1 -1
- package/dist/drawer-container.js +18 -48
- package/dist/drawer-container.js.map +1 -1
- package/dist/drawer-container.min.js +1 -1
- package/dist/drawer-container.min.js.map +1 -1
- package/dist/expansion-panel.js +8 -41
- package/dist/expansion-panel.js.map +1 -1
- package/dist/expansion-panel.min.js +1 -1
- package/dist/expansion-panel.min.js.map +1 -1
- package/dist/fab-menu.js +3 -47
- package/dist/fab-menu.js.map +1 -1
- package/dist/fab-menu.min.js +1 -1
- package/dist/fab-menu.min.js.map +1 -1
- package/dist/fab.js +1 -33
- package/dist/fab.js.map +1 -1
- package/dist/fab.min.js +1 -1
- package/dist/fab.min.js.map +1 -1
- package/dist/form-field.js +19 -49
- package/dist/form-field.js.map +1 -1
- package/dist/form-field.min.js +3 -4
- package/dist/form-field.min.js.map +1 -1
- package/dist/heading.js +1 -28
- package/dist/heading.js.map +1 -1
- package/dist/heading.min.js +1 -1
- package/dist/heading.min.js.map +1 -1
- package/dist/html-custom-data.json +192 -171
- package/dist/icon-button.js +2 -34
- package/dist/icon-button.js.map +1 -1
- package/dist/icon-button.min.js +1 -1
- package/dist/icon-button.min.js.map +1 -1
- package/dist/icon.js +1 -28
- package/dist/icon.js.map +1 -1
- package/dist/icon.min.js +1 -1
- package/dist/icon.min.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +7 -0
- package/dist/index.min.js.map +1 -0
- package/dist/list.js +17 -46
- package/dist/list.js.map +1 -1
- package/dist/list.min.js +1 -1
- package/dist/list.min.js.map +1 -1
- package/dist/loading-indicator.js +8 -31
- package/dist/loading-indicator.js.map +1 -1
- package/dist/loading-indicator.min.js +1 -1
- package/dist/loading-indicator.min.js.map +1 -1
- package/dist/menu.js +3 -47
- package/dist/menu.js.map +1 -1
- package/dist/menu.min.js +1 -1
- package/dist/menu.min.js.map +1 -1
- package/dist/nav-bar.js +3 -41
- package/dist/nav-bar.js.map +1 -1
- package/dist/nav-bar.min.js +1 -1
- package/dist/nav-bar.min.js.map +1 -1
- package/dist/nav-menu.js +2 -40
- package/dist/nav-menu.js.map +1 -1
- package/dist/nav-menu.min.js +1 -1
- package/dist/nav-menu.min.js.map +1 -1
- package/dist/nav-rail.js +1 -33
- package/dist/nav-rail.js.map +1 -1
- package/dist/nav-rail.min.js +1 -1
- package/dist/nav-rail.min.js.map +1 -1
- package/dist/option.js +3 -59
- package/dist/option.js.map +1 -1
- package/dist/option.min.js +1 -1
- package/dist/option.min.js.map +1 -1
- package/dist/paginator.js +2 -34
- package/dist/paginator.js.map +1 -1
- package/dist/paginator.min.js +2 -3
- package/dist/paginator.min.js.map +1 -1
- package/dist/progress-indicator.js +41 -63
- package/dist/progress-indicator.js.map +1 -1
- package/dist/progress-indicator.min.js +32 -32
- package/dist/progress-indicator.min.js.map +1 -1
- package/dist/radio-group.js +1 -39
- package/dist/radio-group.js.map +1 -1
- package/dist/radio-group.min.js +1 -1
- package/dist/radio-group.min.js.map +1 -1
- package/dist/segmented-button.js +2 -40
- package/dist/segmented-button.js.map +1 -1
- package/dist/segmented-button.min.js +1 -1
- package/dist/segmented-button.min.js.map +1 -1
- package/dist/select.js +16 -40
- package/dist/select.js.map +1 -1
- package/dist/select.min.js +1 -1
- package/dist/select.min.js.map +1 -1
- package/dist/shape.js +1 -28
- package/dist/shape.js.map +1 -1
- package/dist/shape.min.js +1 -1
- package/dist/shape.min.js.map +1 -1
- package/dist/slide-group.js +9 -42
- package/dist/slide-group.js.map +1 -1
- package/dist/slide-group.min.js +1 -1
- package/dist/slide-group.min.js.map +1 -1
- package/dist/slider.js +1 -39
- package/dist/slider.js.map +1 -1
- package/dist/slider.min.js +1 -1
- package/dist/slider.min.js.map +1 -1
- package/dist/snackbar.js +2 -40
- package/dist/snackbar.js.map +1 -1
- package/dist/snackbar.min.js +1 -1
- package/dist/snackbar.min.js.map +1 -1
- package/dist/split-button.js +1 -39
- package/dist/split-button.js.map +1 -1
- package/dist/split-button.min.js +1 -1
- package/dist/split-button.min.js.map +1 -1
- package/dist/src/autocomplete/AutocompleteElement.d.ts +6 -0
- package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
- package/dist/src/bottom-sheet/BottomSheetElement.d.ts +3 -3
- package/dist/src/bottom-sheet/BottomSheetElement.d.ts.map +1 -1
- package/dist/src/card/CardElement.d.ts +1 -0
- package/dist/src/card/CardElement.d.ts.map +1 -1
- package/dist/src/card/styles/CardVariantToken.d.ts +1 -1
- package/dist/src/card/styles/CardVariantToken.d.ts.map +1 -1
- package/dist/src/core/anchoring/FloatingPanelElement.d.ts +6 -3
- package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
- package/dist/src/core/anchoring/FloatingPanelScrollStrategy.d.ts +3 -0
- package/dist/src/core/anchoring/FloatingPanelScrollStrategy.d.ts.map +1 -0
- package/dist/src/core/anchoring/index.d.ts +1 -0
- package/dist/src/core/anchoring/index.d.ts.map +1 -1
- package/dist/src/core/shared/mixins/ReconnectedCallback.d.ts +15 -0
- package/dist/src/core/shared/mixins/ReconnectedCallback.d.ts.map +1 -0
- package/dist/src/core/shared/mixins/SuppressInitialAnimation.d.ts +11 -0
- package/dist/src/core/shared/mixins/SuppressInitialAnimation.d.ts.map +1 -0
- package/dist/src/core/shared/mixins/index.d.ts +2 -0
- package/dist/src/core/shared/mixins/index.d.ts.map +1 -1
- package/dist/src/drawer-container/DrawerContainerElement.d.ts +4 -2
- package/dist/src/drawer-container/DrawerContainerElement.d.ts.map +1 -1
- package/dist/src/expansion-panel/ExpansionPanelElement.d.ts +3 -1
- package/dist/src/expansion-panel/ExpansionPanelElement.d.ts.map +1 -1
- package/dist/src/fab-menu/FabMenuElement.d.ts +1 -3
- package/dist/src/fab-menu/FabMenuElement.d.ts.map +1 -1
- package/dist/src/form-field/FormFieldElement.d.ts +4 -2
- package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
- package/dist/src/list/ActionListElement.d.ts.map +1 -1
- package/dist/src/list/ListItemElement.d.ts +3 -1
- package/dist/src/list/ListItemElement.d.ts.map +1 -1
- package/dist/src/loading-indicator/LoadingIndicatorElement.d.ts +3 -1
- package/dist/src/loading-indicator/LoadingIndicatorElement.d.ts.map +1 -1
- package/dist/src/menu/MenuElement.d.ts +1 -3
- package/dist/src/menu/MenuElement.d.ts.map +1 -1
- package/dist/src/nav-bar/NavBarElement.d.ts +1 -1
- package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
- package/dist/src/option/OptionPanelElement.d.ts +0 -4
- package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
- package/dist/src/progress-indicator/CircularProgressIndicatorElement.d.ts +2 -0
- package/dist/src/progress-indicator/CircularProgressIndicatorElement.d.ts.map +1 -1
- package/dist/src/progress-indicator/LinearProgressIndicatorElement.d.ts +2 -0
- package/dist/src/progress-indicator/LinearProgressIndicatorElement.d.ts.map +1 -1
- package/dist/src/progress-indicator/ProgressElementIndicatorBase.d.ts +1 -1
- package/dist/src/progress-indicator/ProgressElementIndicatorBase.d.ts.map +1 -1
- package/dist/src/select/SelectElement.d.ts +6 -0
- package/dist/src/select/SelectElement.d.ts.map +1 -1
- package/dist/src/slide-group/SlideGroupElement.d.ts +5 -1
- package/dist/src/slide-group/SlideGroupElement.d.ts.map +1 -1
- package/dist/src/stepper/StepperElement.d.ts +1 -1
- package/dist/src/stepper/StepperElement.d.ts.map +1 -1
- package/dist/src/toc/TocElement.d.ts +1 -1
- package/dist/src/toc/TocElement.d.ts.map +1 -1
- package/dist/src/tooltip/TooltipElementBase.d.ts +3 -1
- package/dist/src/tooltip/TooltipElementBase.d.ts.map +1 -1
- package/dist/stepper.js +3 -41
- package/dist/stepper.js.map +1 -1
- package/dist/stepper.min.js +1 -1
- package/dist/stepper.min.js.map +1 -1
- package/dist/switch.js +1 -33
- package/dist/switch.js.map +1 -1
- package/dist/switch.min.js +1 -1
- package/dist/switch.min.js.map +1 -1
- package/dist/tabs.js +1 -39
- package/dist/tabs.js.map +1 -1
- package/dist/tabs.min.js +1 -1
- package/dist/tabs.min.js.map +1 -1
- package/dist/textarea-autosize.js +1 -39
- package/dist/textarea-autosize.js.map +1 -1
- package/dist/textarea-autosize.min.js +2 -3
- package/dist/textarea-autosize.min.js.map +1 -1
- package/dist/theme.js +1 -39
- package/dist/theme.js.map +1 -1
- package/dist/theme.min.js +19 -19
- package/dist/theme.min.js.map +1 -1
- package/dist/toc.js +4 -42
- package/dist/toc.js.map +1 -1
- package/dist/toc.min.js +1 -1
- package/dist/toc.min.js.map +1 -1
- package/dist/toolbar.js +1 -39
- package/dist/toolbar.js.map +1 -1
- package/dist/toolbar.min.js +1 -1
- package/dist/toolbar.min.js.map +1 -1
- package/dist/tooltip.js +15 -46
- package/dist/tooltip.js.map +1 -1
- package/dist/tooltip.min.js +1 -1
- package/dist/tooltip.min.js.map +1 -1
- package/package.json +3 -2
package/dist/core-anchoring.js
CHANGED
|
@@ -3,49 +3,12 @@
|
|
|
3
3
|
* Copyright (c) 2025 matraic
|
|
4
4
|
* See LICENSE file in the project root for full license text.
|
|
5
5
|
*/
|
|
6
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from 'tslib';
|
|
6
7
|
import { LitElement, html, unsafeCSS, css } from 'lit';
|
|
7
|
-
import {
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { SuppressInitialAnimation, AttachInternals, ScrollController, DesignToken, customElement, setCustomState } from '@m3e/web/core';
|
|
8
10
|
import { M3eDirectionality } from '@m3e/web/core/bidi';
|
|
9
11
|
|
|
10
|
-
/******************************************************************************
|
|
11
|
-
Copyright (c) Microsoft Corporation.
|
|
12
|
-
|
|
13
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
14
|
-
purpose with or without fee is hereby granted.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
17
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
18
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
19
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
20
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
21
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
22
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
23
|
-
***************************************************************************** */
|
|
24
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
25
|
-
|
|
26
|
-
function __decorate(decorators, target, key, desc) {
|
|
27
|
-
var c = arguments.length,
|
|
28
|
-
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
29
|
-
d;
|
|
30
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
31
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
|
-
}
|
|
33
|
-
function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
34
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
35
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
36
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
37
|
-
}
|
|
38
|
-
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
39
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
40
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
41
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
42
|
-
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
|
|
43
|
-
}
|
|
44
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
45
|
-
var e = new Error(message);
|
|
46
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
12
|
/**
|
|
50
13
|
* Custom positioning reference element.
|
|
51
14
|
* @see https://floating-ui.com/docs/virtual-elements
|
|
@@ -65,10 +28,6 @@ const oppositeSideMap = {
|
|
|
65
28
|
bottom: 'top',
|
|
66
29
|
top: 'bottom'
|
|
67
30
|
};
|
|
68
|
-
const oppositeAlignmentMap = {
|
|
69
|
-
start: 'end',
|
|
70
|
-
end: 'start'
|
|
71
|
-
};
|
|
72
31
|
function clamp(start, value, end) {
|
|
73
32
|
return max(start, min(value, end));
|
|
74
33
|
}
|
|
@@ -87,9 +46,9 @@ function getOppositeAxis(axis) {
|
|
|
87
46
|
function getAxisLength(axis) {
|
|
88
47
|
return axis === 'y' ? 'height' : 'width';
|
|
89
48
|
}
|
|
90
|
-
const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
|
|
91
49
|
function getSideAxis(placement) {
|
|
92
|
-
|
|
50
|
+
const firstChar = placement[0];
|
|
51
|
+
return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';
|
|
93
52
|
}
|
|
94
53
|
function getAlignmentAxis(placement) {
|
|
95
54
|
return getOppositeAxis(getSideAxis(placement));
|
|
@@ -112,7 +71,7 @@ function getExpandedPlacements(placement) {
|
|
|
112
71
|
return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
|
|
113
72
|
}
|
|
114
73
|
function getOppositeAlignmentPlacement(placement) {
|
|
115
|
-
return placement.replace(
|
|
74
|
+
return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');
|
|
116
75
|
}
|
|
117
76
|
const lrPlacement = ['left', 'right'];
|
|
118
77
|
const rlPlacement = ['right', 'left'];
|
|
@@ -143,7 +102,8 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
|
|
|
143
102
|
return list;
|
|
144
103
|
}
|
|
145
104
|
function getOppositePlacement(placement) {
|
|
146
|
-
|
|
105
|
+
const side = getSide(placement);
|
|
106
|
+
return oppositeSideMap[side] + placement.slice(side.length);
|
|
147
107
|
}
|
|
148
108
|
function expandPaddingObject(padding) {
|
|
149
109
|
return {
|
|
@@ -237,6 +197,74 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
|
237
197
|
return coords;
|
|
238
198
|
}
|
|
239
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Resolves with an object of overflow side offsets that determine how much the
|
|
202
|
+
* element is overflowing a given clipping boundary on each side.
|
|
203
|
+
* - positive = overflowing the boundary by that number of pixels
|
|
204
|
+
* - negative = how many pixels left before it will overflow
|
|
205
|
+
* - 0 = lies flush with the boundary
|
|
206
|
+
* @see https://floating-ui.com/docs/detectOverflow
|
|
207
|
+
*/
|
|
208
|
+
async function detectOverflow(state, options) {
|
|
209
|
+
var _await$platform$isEle;
|
|
210
|
+
if (options === void 0) {
|
|
211
|
+
options = {};
|
|
212
|
+
}
|
|
213
|
+
const {
|
|
214
|
+
x,
|
|
215
|
+
y,
|
|
216
|
+
platform,
|
|
217
|
+
rects,
|
|
218
|
+
elements,
|
|
219
|
+
strategy
|
|
220
|
+
} = state;
|
|
221
|
+
const {
|
|
222
|
+
boundary = 'clippingAncestors',
|
|
223
|
+
rootBoundary = 'viewport',
|
|
224
|
+
elementContext = 'floating',
|
|
225
|
+
altBoundary = false,
|
|
226
|
+
padding = 0
|
|
227
|
+
} = evaluate(options, state);
|
|
228
|
+
const paddingObject = getPaddingObject(padding);
|
|
229
|
+
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
230
|
+
const element = elements[altBoundary ? altContext : elementContext];
|
|
231
|
+
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
232
|
+
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
233
|
+
boundary,
|
|
234
|
+
rootBoundary,
|
|
235
|
+
strategy
|
|
236
|
+
}));
|
|
237
|
+
const rect = elementContext === 'floating' ? {
|
|
238
|
+
x,
|
|
239
|
+
y,
|
|
240
|
+
width: rects.floating.width,
|
|
241
|
+
height: rects.floating.height
|
|
242
|
+
} : rects.reference;
|
|
243
|
+
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
244
|
+
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
245
|
+
x: 1,
|
|
246
|
+
y: 1
|
|
247
|
+
} : {
|
|
248
|
+
x: 1,
|
|
249
|
+
y: 1
|
|
250
|
+
};
|
|
251
|
+
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
252
|
+
elements,
|
|
253
|
+
rect,
|
|
254
|
+
offsetParent,
|
|
255
|
+
strategy
|
|
256
|
+
}) : rect);
|
|
257
|
+
return {
|
|
258
|
+
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
259
|
+
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
260
|
+
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
261
|
+
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Maximum number of resets that can occur before bailing to avoid infinite reset loops.
|
|
266
|
+
const MAX_RESET_COUNT = 50;
|
|
267
|
+
|
|
240
268
|
/**
|
|
241
269
|
* Computes the `x` and `y` coordinates that will place the floating element
|
|
242
270
|
* next to a given reference element.
|
|
@@ -251,7 +279,10 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
251
279
|
middleware = [],
|
|
252
280
|
platform
|
|
253
281
|
} = config;
|
|
254
|
-
const
|
|
282
|
+
const platformWithDetectOverflow = platform.detectOverflow ? platform : {
|
|
283
|
+
...platform,
|
|
284
|
+
detectOverflow
|
|
285
|
+
};
|
|
255
286
|
const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
|
|
256
287
|
let rects = await platform.getElementRects({
|
|
257
288
|
reference,
|
|
@@ -263,13 +294,17 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
263
294
|
y
|
|
264
295
|
} = computeCoordsFromPlacement(rects, placement, rtl);
|
|
265
296
|
let statefulPlacement = placement;
|
|
266
|
-
let middlewareData = {};
|
|
267
297
|
let resetCount = 0;
|
|
268
|
-
|
|
298
|
+
const middlewareData = {};
|
|
299
|
+
for (let i = 0; i < middleware.length; i++) {
|
|
300
|
+
const currentMiddleware = middleware[i];
|
|
301
|
+
if (!currentMiddleware) {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
269
304
|
const {
|
|
270
305
|
name,
|
|
271
306
|
fn
|
|
272
|
-
} =
|
|
307
|
+
} = currentMiddleware;
|
|
273
308
|
const {
|
|
274
309
|
x: nextX,
|
|
275
310
|
y: nextY,
|
|
@@ -283,7 +318,7 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
283
318
|
strategy,
|
|
284
319
|
middlewareData,
|
|
285
320
|
rects,
|
|
286
|
-
platform,
|
|
321
|
+
platform: platformWithDetectOverflow,
|
|
287
322
|
elements: {
|
|
288
323
|
reference,
|
|
289
324
|
floating
|
|
@@ -291,14 +326,11 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
291
326
|
});
|
|
292
327
|
x = nextX != null ? nextX : x;
|
|
293
328
|
y = nextY != null ? nextY : y;
|
|
294
|
-
middlewareData = {
|
|
295
|
-
...middlewareData,
|
|
296
|
-
|
|
297
|
-
...middlewareData[name],
|
|
298
|
-
...data
|
|
299
|
-
}
|
|
329
|
+
middlewareData[name] = {
|
|
330
|
+
...middlewareData[name],
|
|
331
|
+
...data
|
|
300
332
|
};
|
|
301
|
-
if (reset && resetCount
|
|
333
|
+
if (reset && resetCount < MAX_RESET_COUNT) {
|
|
302
334
|
resetCount++;
|
|
303
335
|
if (typeof reset === 'object') {
|
|
304
336
|
if (reset.placement) {
|
|
@@ -328,71 +360,6 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
328
360
|
};
|
|
329
361
|
};
|
|
330
362
|
|
|
331
|
-
/**
|
|
332
|
-
* Resolves with an object of overflow side offsets that determine how much the
|
|
333
|
-
* element is overflowing a given clipping boundary on each side.
|
|
334
|
-
* - positive = overflowing the boundary by that number of pixels
|
|
335
|
-
* - negative = how many pixels left before it will overflow
|
|
336
|
-
* - 0 = lies flush with the boundary
|
|
337
|
-
* @see https://floating-ui.com/docs/detectOverflow
|
|
338
|
-
*/
|
|
339
|
-
async function detectOverflow(state, options) {
|
|
340
|
-
var _await$platform$isEle;
|
|
341
|
-
if (options === void 0) {
|
|
342
|
-
options = {};
|
|
343
|
-
}
|
|
344
|
-
const {
|
|
345
|
-
x,
|
|
346
|
-
y,
|
|
347
|
-
platform,
|
|
348
|
-
rects,
|
|
349
|
-
elements,
|
|
350
|
-
strategy
|
|
351
|
-
} = state;
|
|
352
|
-
const {
|
|
353
|
-
boundary = 'clippingAncestors',
|
|
354
|
-
rootBoundary = 'viewport',
|
|
355
|
-
elementContext = 'floating',
|
|
356
|
-
altBoundary = false,
|
|
357
|
-
padding = 0
|
|
358
|
-
} = evaluate(options, state);
|
|
359
|
-
const paddingObject = getPaddingObject(padding);
|
|
360
|
-
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
361
|
-
const element = elements[altBoundary ? altContext : elementContext];
|
|
362
|
-
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
363
|
-
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
364
|
-
boundary,
|
|
365
|
-
rootBoundary,
|
|
366
|
-
strategy
|
|
367
|
-
}));
|
|
368
|
-
const rect = elementContext === 'floating' ? {
|
|
369
|
-
x,
|
|
370
|
-
y,
|
|
371
|
-
width: rects.floating.width,
|
|
372
|
-
height: rects.floating.height
|
|
373
|
-
} : rects.reference;
|
|
374
|
-
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
375
|
-
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
376
|
-
x: 1,
|
|
377
|
-
y: 1
|
|
378
|
-
} : {
|
|
379
|
-
x: 1,
|
|
380
|
-
y: 1
|
|
381
|
-
};
|
|
382
|
-
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
383
|
-
elements,
|
|
384
|
-
rect,
|
|
385
|
-
offsetParent,
|
|
386
|
-
strategy
|
|
387
|
-
}) : rect);
|
|
388
|
-
return {
|
|
389
|
-
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
390
|
-
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
391
|
-
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
392
|
-
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
393
|
-
};
|
|
394
|
-
}
|
|
395
|
-
|
|
396
363
|
/**
|
|
397
364
|
* Optimizes the visibility of the floating element by flipping the `placement`
|
|
398
365
|
* in order to keep it in view when the preferred placement(s) will overflow the
|
|
@@ -443,7 +410,7 @@ const flip$1 = function (options) {
|
|
|
443
410
|
fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
|
|
444
411
|
}
|
|
445
412
|
const placements = [initialPlacement, ...fallbackPlacements];
|
|
446
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
413
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
447
414
|
const overflows = [];
|
|
448
415
|
let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
|
|
449
416
|
if (checkMainAxis) {
|
|
@@ -758,7 +725,8 @@ const shift$1 = function (options) {
|
|
|
758
725
|
const {
|
|
759
726
|
x,
|
|
760
727
|
y,
|
|
761
|
-
placement
|
|
728
|
+
placement,
|
|
729
|
+
platform
|
|
762
730
|
} = state;
|
|
763
731
|
const {
|
|
764
732
|
mainAxis: checkMainAxis = true,
|
|
@@ -781,7 +749,7 @@ const shift$1 = function (options) {
|
|
|
781
749
|
x,
|
|
782
750
|
y
|
|
783
751
|
};
|
|
784
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
752
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
785
753
|
const crossAxis = getSideAxis(getSide(placement));
|
|
786
754
|
const mainAxis = getOppositeAxis(crossAxis);
|
|
787
755
|
let mainAxisCoord = coords[mainAxis];
|
|
@@ -864,7 +832,6 @@ function isShadowRoot(value) {
|
|
|
864
832
|
}
|
|
865
833
|
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
866
834
|
}
|
|
867
|
-
const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
|
|
868
835
|
function isOverflowElement(element) {
|
|
869
836
|
const {
|
|
870
837
|
overflow,
|
|
@@ -872,32 +839,35 @@ function isOverflowElement(element) {
|
|
|
872
839
|
overflowY,
|
|
873
840
|
display
|
|
874
841
|
} = getComputedStyle$1(element);
|
|
875
|
-
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) &&
|
|
842
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';
|
|
876
843
|
}
|
|
877
|
-
const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
|
|
878
844
|
function isTableElement(element) {
|
|
879
|
-
return
|
|
845
|
+
return /^(table|td|th)$/.test(getNodeName(element));
|
|
880
846
|
}
|
|
881
|
-
const topLayerSelectors = [':popover-open', ':modal'];
|
|
882
847
|
function isTopLayer(element) {
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
return
|
|
886
|
-
} catch (_e) {
|
|
887
|
-
return false;
|
|
848
|
+
try {
|
|
849
|
+
if (element.matches(':popover-open')) {
|
|
850
|
+
return true;
|
|
888
851
|
}
|
|
889
|
-
})
|
|
852
|
+
} catch (_e) {
|
|
853
|
+
// no-op
|
|
854
|
+
}
|
|
855
|
+
try {
|
|
856
|
+
return element.matches(':modal');
|
|
857
|
+
} catch (_e) {
|
|
858
|
+
return false;
|
|
859
|
+
}
|
|
890
860
|
}
|
|
891
|
-
const
|
|
892
|
-
const
|
|
893
|
-
const
|
|
861
|
+
const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
|
|
862
|
+
const containRe = /paint|layout|strict|content/;
|
|
863
|
+
const isNotNone = value => !!value && value !== 'none';
|
|
864
|
+
let isWebKitValue;
|
|
894
865
|
function isContainingBlock(elementOrCss) {
|
|
895
|
-
const webkit = isWebKit();
|
|
896
866
|
const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
|
|
897
867
|
|
|
898
868
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
|
|
899
869
|
// https://drafts.csswg.org/css-transforms-2/#individual-transforms
|
|
900
|
-
return
|
|
870
|
+
return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');
|
|
901
871
|
}
|
|
902
872
|
function getContainingBlock(element) {
|
|
903
873
|
let currentNode = getParentNode(element);
|
|
@@ -912,12 +882,13 @@ function getContainingBlock(element) {
|
|
|
912
882
|
return null;
|
|
913
883
|
}
|
|
914
884
|
function isWebKit() {
|
|
915
|
-
if (
|
|
916
|
-
|
|
885
|
+
if (isWebKitValue == null) {
|
|
886
|
+
isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');
|
|
887
|
+
}
|
|
888
|
+
return isWebKitValue;
|
|
917
889
|
}
|
|
918
|
-
const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
|
|
919
890
|
function isLastTraversableNode(node) {
|
|
920
|
-
return
|
|
891
|
+
return /^(html|body|#document)$/.test(getNodeName(node));
|
|
921
892
|
}
|
|
922
893
|
function getComputedStyle$1(element) {
|
|
923
894
|
return getWindow(element).getComputedStyle(element);
|
|
@@ -973,8 +944,9 @@ function getOverflowAncestors(node, list, traverseIframes) {
|
|
|
973
944
|
if (isBody) {
|
|
974
945
|
const frameElement = getFrameElement(win);
|
|
975
946
|
return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
|
|
947
|
+
} else {
|
|
948
|
+
return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
|
|
976
949
|
}
|
|
977
|
-
return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
|
|
978
950
|
}
|
|
979
951
|
function getFrameElement(win) {
|
|
980
952
|
return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
|
|
@@ -1151,7 +1123,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
|
|
|
1151
1123
|
if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
|
|
1152
1124
|
scroll = getNodeScroll(offsetParent);
|
|
1153
1125
|
}
|
|
1154
|
-
if (
|
|
1126
|
+
if (isOffsetParentAnElement) {
|
|
1155
1127
|
const offsetRect = getBoundingClientRect(offsetParent);
|
|
1156
1128
|
scale = getScale(offsetParent);
|
|
1157
1129
|
offsets.x = offsetRect.x + offsetParent.clientLeft;
|
|
@@ -1239,7 +1211,6 @@ function getViewportRect(element, strategy) {
|
|
|
1239
1211
|
};
|
|
1240
1212
|
}
|
|
1241
1213
|
|
|
1242
|
-
const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
|
|
1243
1214
|
// Returns the inner client rect, subtracting scrollbars if present.
|
|
1244
1215
|
function getInnerBoundingClientRect(element, strategy) {
|
|
1245
1216
|
const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
|
|
@@ -1304,7 +1275,7 @@ function getClippingElementAncestors(element, cache) {
|
|
|
1304
1275
|
if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
|
|
1305
1276
|
currentContainingBlockComputedStyle = null;
|
|
1306
1277
|
}
|
|
1307
|
-
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle &&
|
|
1278
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
1308
1279
|
if (shouldDropCurrentNode) {
|
|
1309
1280
|
// Drop non-containing blocks.
|
|
1310
1281
|
result = result.filter(ancestor => ancestor !== currentNode);
|
|
@@ -1329,20 +1300,23 @@ function getClippingRect(_ref) {
|
|
|
1329
1300
|
} = _ref;
|
|
1330
1301
|
const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
|
|
1331
1302
|
const clippingAncestors = [...elementClippingAncestors, rootBoundary];
|
|
1332
|
-
const
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1303
|
+
const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
|
|
1304
|
+
let top = firstRect.top;
|
|
1305
|
+
let right = firstRect.right;
|
|
1306
|
+
let bottom = firstRect.bottom;
|
|
1307
|
+
let left = firstRect.left;
|
|
1308
|
+
for (let i = 1; i < clippingAncestors.length; i++) {
|
|
1309
|
+
const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
|
|
1310
|
+
top = max(rect.top, top);
|
|
1311
|
+
right = min(rect.right, right);
|
|
1312
|
+
bottom = min(rect.bottom, bottom);
|
|
1313
|
+
left = max(rect.left, left);
|
|
1314
|
+
}
|
|
1341
1315
|
return {
|
|
1342
|
-
width:
|
|
1343
|
-
height:
|
|
1344
|
-
x:
|
|
1345
|
-
y:
|
|
1316
|
+
width: right - left,
|
|
1317
|
+
height: bottom - top,
|
|
1318
|
+
x: left,
|
|
1319
|
+
y: top
|
|
1346
1320
|
};
|
|
1347
1321
|
}
|
|
1348
1322
|
|
|
@@ -1593,7 +1567,7 @@ function autoUpdate(reference, floating, update, options) {
|
|
|
1593
1567
|
animationFrame = false
|
|
1594
1568
|
} = options;
|
|
1595
1569
|
const referenceEl = unwrapElement(reference);
|
|
1596
|
-
const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
|
|
1570
|
+
const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
|
|
1597
1571
|
ancestors.forEach(ancestor => {
|
|
1598
1572
|
ancestorScroll && ancestor.addEventListener('scroll', update, {
|
|
1599
1573
|
passive: true
|
|
@@ -1606,7 +1580,7 @@ function autoUpdate(reference, floating, update, options) {
|
|
|
1606
1580
|
if (elementResize) {
|
|
1607
1581
|
resizeObserver = new ResizeObserver(_ref => {
|
|
1608
1582
|
let [firstEntry] = _ref;
|
|
1609
|
-
if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
|
|
1583
|
+
if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
|
|
1610
1584
|
// Prevent update loops when using the `size` middleware.
|
|
1611
1585
|
// https://github.com/floating-ui/floating-ui/issues/1740
|
|
1612
1586
|
resizeObserver.unobserve(floating);
|
|
@@ -1621,7 +1595,9 @@ function autoUpdate(reference, floating, update, options) {
|
|
|
1621
1595
|
if (referenceEl && !animationFrame) {
|
|
1622
1596
|
resizeObserver.observe(referenceEl);
|
|
1623
1597
|
}
|
|
1624
|
-
|
|
1598
|
+
if (floating) {
|
|
1599
|
+
resizeObserver.observe(floating);
|
|
1600
|
+
}
|
|
1625
1601
|
}
|
|
1626
1602
|
let frameId;
|
|
1627
1603
|
let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
|
|
@@ -1786,12 +1762,14 @@ async function positionAnchor(target, anchor, options, update) {
|
|
|
1786
1762
|
return autoUpdate(anchor, target, async () => await computeAnchorPosition());
|
|
1787
1763
|
}
|
|
1788
1764
|
|
|
1789
|
-
var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFloatingPanelElement_anchor, _M3eFloatingPanelElement_anchorCleanup, _M3eFloatingPanelElement_documentClickHandler, _M3eFloatingPanelElement_toggleHandler, _M3eFloatingPanelElement_handleDocumentClick;
|
|
1765
|
+
var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFloatingPanelElement_anchor, _M3eFloatingPanelElement_anchorCleanup, _M3eFloatingPanelElement_documentClickHandler, _M3eFloatingPanelElement_toggleHandler, _M3eFloatingPanelElement_scrollController, _M3eFloatingPanelElement_handleDocumentClick;
|
|
1790
1766
|
/**
|
|
1791
1767
|
* A lightweight, generic floating surface used to present content above the page.
|
|
1792
1768
|
*
|
|
1793
1769
|
* @tag m3e-floating-panel
|
|
1794
1770
|
*
|
|
1771
|
+
* @attr scroll-strategy - The strategy that controls how the panel behaves when its trigger scrolls.
|
|
1772
|
+
*
|
|
1795
1773
|
* @slot - Renders the contents of the panel.
|
|
1796
1774
|
*
|
|
1797
1775
|
* @fires beforetoggle - Dispatched before the toggle state changes.
|
|
@@ -1806,7 +1784,7 @@ var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFl
|
|
|
1806
1784
|
* @cssprop --m3e-floating-panel-container-color - Background color of the panel container.
|
|
1807
1785
|
* @cssprop --m3e-floating-panel-container-elevation - Box shadow elevation of the panel container.
|
|
1808
1786
|
*/
|
|
1809
|
-
let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachInternals(LitElement) {
|
|
1787
|
+
let M3eFloatingPanelElement = class M3eFloatingPanelElement extends SuppressInitialAnimation(AttachInternals(LitElement)) {
|
|
1810
1788
|
constructor() {
|
|
1811
1789
|
super(...arguments);
|
|
1812
1790
|
_M3eFloatingPanelElement_instances.add(this);
|
|
@@ -1823,9 +1801,15 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
|
|
|
1823
1801
|
if (e.newState === "closed") {
|
|
1824
1802
|
__classPrivateFieldGet(this, _M3eFloatingPanelElement_anchorCleanup, "f")?.call(this);
|
|
1825
1803
|
__classPrivateFieldSet(this, _M3eFloatingPanelElement_anchorCleanup, undefined, "f");
|
|
1826
|
-
__classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, undefined, "f");
|
|
1827
1804
|
}
|
|
1828
1805
|
});
|
|
1806
|
+
/** @private */
|
|
1807
|
+
_M3eFloatingPanelElement_scrollController.set(this, new ScrollController(this, {
|
|
1808
|
+
target: null,
|
|
1809
|
+
callback: () => this.hide(false)
|
|
1810
|
+
}));
|
|
1811
|
+
/** The strategy that controls how the panel behaves when its trigger scrolls. */
|
|
1812
|
+
this.scrollStrategy = "hide";
|
|
1829
1813
|
}
|
|
1830
1814
|
/** Whether the panel is open. */
|
|
1831
1815
|
get isOpen() {
|
|
@@ -1838,7 +1822,6 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
|
|
|
1838
1822
|
/** @inheritdoc */
|
|
1839
1823
|
connectedCallback() {
|
|
1840
1824
|
super.connectedCallback();
|
|
1841
|
-
addCustomState(this, "-no-animate");
|
|
1842
1825
|
this.setAttribute("popover", "manual");
|
|
1843
1826
|
this.addEventListener("toggle", __classPrivateFieldGet(this, _M3eFloatingPanelElement_toggleHandler, "f"));
|
|
1844
1827
|
document.addEventListener("click", __classPrivateFieldGet(this, _M3eFloatingPanelElement_documentClickHandler, "f"));
|
|
@@ -1879,6 +1862,9 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
|
|
|
1879
1862
|
__classPrivateFieldSet(this, _M3eFloatingPanelElement_trigger, trigger, "f");
|
|
1880
1863
|
__classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f").ariaExpanded = "true";
|
|
1881
1864
|
__classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, anchor, "f");
|
|
1865
|
+
if (this.scrollStrategy === "hide") {
|
|
1866
|
+
__classPrivateFieldGet(this, _M3eFloatingPanelElement_scrollController, "f").observe(__classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f") ?? __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f"));
|
|
1867
|
+
}
|
|
1882
1868
|
}
|
|
1883
1869
|
/**
|
|
1884
1870
|
* Hides the panel.
|
|
@@ -1891,7 +1877,9 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
|
|
|
1891
1877
|
if (restoreFocus) {
|
|
1892
1878
|
__classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f").focus();
|
|
1893
1879
|
}
|
|
1880
|
+
__classPrivateFieldGet(this, _M3eFloatingPanelElement_scrollController, "f").unobserve(__classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f") ?? __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f"));
|
|
1894
1881
|
__classPrivateFieldSet(this, _M3eFloatingPanelElement_trigger, undefined, "f");
|
|
1882
|
+
__classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, undefined, "f");
|
|
1895
1883
|
}
|
|
1896
1884
|
}
|
|
1897
1885
|
/**
|
|
@@ -1908,11 +1896,6 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
|
|
|
1908
1896
|
}
|
|
1909
1897
|
}
|
|
1910
1898
|
/** @inheritdoc */
|
|
1911
|
-
firstUpdated(_changedProperties) {
|
|
1912
|
-
super.firstUpdated(_changedProperties);
|
|
1913
|
-
requestAnimationFrame(() => deleteCustomState(this, "-no-animate"));
|
|
1914
|
-
}
|
|
1915
|
-
/** @inheritdoc */
|
|
1916
1899
|
render() {
|
|
1917
1900
|
return html`<div class="base"><slot></slot></div>`;
|
|
1918
1901
|
}
|
|
@@ -1922,6 +1905,7 @@ _M3eFloatingPanelElement_anchor = new WeakMap();
|
|
|
1922
1905
|
_M3eFloatingPanelElement_anchorCleanup = new WeakMap();
|
|
1923
1906
|
_M3eFloatingPanelElement_documentClickHandler = new WeakMap();
|
|
1924
1907
|
_M3eFloatingPanelElement_toggleHandler = new WeakMap();
|
|
1908
|
+
_M3eFloatingPanelElement_scrollController = new WeakMap();
|
|
1925
1909
|
_M3eFloatingPanelElement_instances = new WeakSet();
|
|
1926
1910
|
_M3eFloatingPanelElement_handleDocumentClick = function _M3eFloatingPanelElement_handleDocumentClick(e) {
|
|
1927
1911
|
if (this.isOpen && !e.composedPath().some(x => x === this || x === __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f") || x === __classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f"))) {
|
|
@@ -1933,6 +1917,9 @@ M3eFloatingPanelElement.styles = css`:host { position: absolute; flex-direction:
|
|
|
1933
1917
|
transform ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},
|
|
1934
1918
|
overlay ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete,
|
|
1935
1919
|
display ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host { transform: scaleY(0.8); } :host(:popover-open) { transform: scaleY(1); display: block; opacity: 1; } :host::backdrop { background-color: transparent; } :host(:state(-bottom)) { transform-origin: top; } :host(:state(-top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } } @media (prefers-reduced-motion) { :host(:not(:state(-no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; outline: 1px solid MenuText; } }`;
|
|
1920
|
+
__decorate([property({
|
|
1921
|
+
attribute: "scroll-strategy"
|
|
1922
|
+
})], M3eFloatingPanelElement.prototype, "scrollStrategy", void 0);
|
|
1936
1923
|
M3eFloatingPanelElement = __decorate([customElement("m3e-floating-panel")], M3eFloatingPanelElement);
|
|
1937
1924
|
|
|
1938
1925
|
export { M3eFloatingPanelElement, positionAnchor };
|