@getflip/swirl-components 0.140.0 → 0.141.0
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/components.json +12 -3
- package/dist/cjs/{floating-ui.dom.esm-39236b6a.js → floating-ui.dom.esm-d4123549.js} +72 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/swirl-action-list_3.cjs.entry.js +1 -1
- package/dist/cjs/swirl-autocomplete.cjs.entry.js +1 -1
- package/dist/cjs/swirl-components.cjs.js +1 -1
- package/dist/cjs/swirl-description-list-item.cjs.entry.js +1 -1
- package/dist/cjs/swirl-image-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/swirl-menu.cjs.entry.js +1 -1
- package/dist/cjs/swirl-popover_2.cjs.entry.js +2 -2
- package/dist/cjs/swirl-tooltip.cjs.entry.js +31 -38
- package/dist/collection/assets/pdfjs/pdf.worker.min.js +1 -1
- package/dist/collection/components/swirl-action-list/swirl-action-list.js +1 -1
- package/dist/collection/components/swirl-action-list/swirl-action-list.spec.js +1 -1
- package/dist/collection/components/swirl-description-list-item/swirl-description-list-item.js +1 -1
- package/dist/collection/components/swirl-image-grid-item/swirl-image-grid-item.css +6 -0
- package/dist/collection/components/swirl-image-grid-item/swirl-image-grid-item.js +1 -1
- package/dist/collection/components/swirl-popover/swirl-popover.css +15 -1
- package/dist/collection/components/swirl-popover/swirl-popover.js +1 -1
- package/dist/collection/components/swirl-tooltip/swirl-tooltip.css +36 -10
- package/dist/collection/components/swirl-tooltip/swirl-tooltip.js +32 -38
- package/dist/collection/components/swirl-tooltip/swirl-tooltip.spec.js +14 -12
- package/dist/collection/components/swirl-tooltip/swirl-tooltip.stories.js +2 -2
- package/dist/components/assets/pdfjs/pdf.worker.min.js +1 -1
- package/dist/components/floating-ui.dom.esm.js +72 -1
- package/dist/components/swirl-action-list2.js +1 -1
- package/dist/components/swirl-description-list-item.js +1 -1
- package/dist/components/swirl-image-grid-item.js +2 -2
- package/dist/components/swirl-popover2.js +1 -1
- package/dist/components/swirl-tooltip2.js +32 -38
- package/dist/esm/{floating-ui.dom.esm-ac7cc24e.js → floating-ui.dom.esm-b73e243b.js} +72 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/swirl-action-list_3.entry.js +1 -1
- package/dist/esm/swirl-autocomplete.entry.js +1 -1
- package/dist/esm/swirl-components.js +1 -1
- package/dist/esm/swirl-description-list-item.entry.js +1 -1
- package/dist/esm/swirl-image-grid-item.entry.js +2 -2
- package/dist/esm/swirl-menu.entry.js +1 -1
- package/dist/esm/swirl-popover_2.entry.js +2 -2
- package/dist/esm/swirl-tooltip.entry.js +32 -39
- package/dist/swirl-components/{p-987c3e53.entry.js → p-078fe179.entry.js} +1 -1
- package/dist/swirl-components/p-1cd56d3d.entry.js +1 -0
- package/dist/swirl-components/{p-f7b251f0.entry.js → p-2014f17b.entry.js} +1 -1
- package/dist/swirl-components/p-3aa956d6.entry.js +1 -0
- package/dist/swirl-components/p-48d784ee.entry.js +1 -0
- package/dist/swirl-components/p-6ac4b552.js +1 -0
- package/dist/swirl-components/p-85eeb993.entry.js +1 -0
- package/dist/swirl-components/p-ea43de20.entry.js +1 -0
- package/dist/swirl-components/swirl-components.esm.js +1 -1
- package/dist/types/components/swirl-popover/swirl-popover.d.ts +1 -1
- package/dist/types/components/swirl-tooltip/swirl-tooltip.d.ts +5 -2
- package/package.json +1 -1
- package/vscode-data.json +3 -0
- package/dist/swirl-components/p-03034505.entry.js +0 -1
- package/dist/swirl-components/p-0bb0dc4f.entry.js +0 -1
- package/dist/swirl-components/p-4beaf463.entry.js +0 -1
- package/dist/swirl-components/p-562de2fb.entry.js +0 -1
- package/dist/swirl-components/p-77dfa273.entry.js +0 -1
- package/dist/swirl-components/p-ecb8b7f5.js +0 -1
|
@@ -260,6 +260,77 @@ function within(min$1$1, value, max$1$1) {
|
|
|
260
260
|
return max$1(min$1$1, min$1(value, max$1$1));
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Provides data to position an inner element of the floating element so that it
|
|
265
|
+
* appears centered to the reference element.
|
|
266
|
+
* @see https://floating-ui.com/docs/arrow
|
|
267
|
+
*/
|
|
268
|
+
const arrow = options => ({
|
|
269
|
+
name: 'arrow',
|
|
270
|
+
options,
|
|
271
|
+
async fn(state) {
|
|
272
|
+
// Since `element` is required, we don't Partial<> the type.
|
|
273
|
+
const {
|
|
274
|
+
element,
|
|
275
|
+
padding = 0
|
|
276
|
+
} = options || {};
|
|
277
|
+
const {
|
|
278
|
+
x,
|
|
279
|
+
y,
|
|
280
|
+
placement,
|
|
281
|
+
rects,
|
|
282
|
+
platform,
|
|
283
|
+
elements
|
|
284
|
+
} = state;
|
|
285
|
+
if (element == null) {
|
|
286
|
+
return {};
|
|
287
|
+
}
|
|
288
|
+
const paddingObject = getSideObjectFromPadding(padding);
|
|
289
|
+
const coords = {
|
|
290
|
+
x,
|
|
291
|
+
y
|
|
292
|
+
};
|
|
293
|
+
const axis = getMainAxisFromPlacement(placement);
|
|
294
|
+
const length = getLengthFromAxis(axis);
|
|
295
|
+
const arrowDimensions = await platform.getDimensions(element);
|
|
296
|
+
const isYAxis = axis === 'y';
|
|
297
|
+
const minProp = isYAxis ? 'top' : 'left';
|
|
298
|
+
const maxProp = isYAxis ? 'bottom' : 'right';
|
|
299
|
+
const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
|
|
300
|
+
const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
|
|
301
|
+
const startDiff = coords[axis] - rects.reference[axis];
|
|
302
|
+
const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
|
|
303
|
+
let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
|
|
304
|
+
|
|
305
|
+
// DOM platform can return `window` as the `offsetParent`.
|
|
306
|
+
if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
|
|
307
|
+
clientSize = elements.floating[clientProp] || rects.floating[length];
|
|
308
|
+
}
|
|
309
|
+
const centerToReference = endDiff / 2 - startDiff / 2;
|
|
310
|
+
|
|
311
|
+
// Make sure the arrow doesn't overflow the floating element if the center
|
|
312
|
+
// point is outside the floating element's bounds.
|
|
313
|
+
const min = paddingObject[minProp];
|
|
314
|
+
const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
|
|
315
|
+
const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
|
|
316
|
+
const offset = within(min, center, max);
|
|
317
|
+
|
|
318
|
+
// If the reference is small enough that the arrow's padding causes it to
|
|
319
|
+
// to point to nothing for an aligned placement, adjust the offset of the
|
|
320
|
+
// floating element itself. This stops `shift()` from taking action, but can
|
|
321
|
+
// be worked around by calling it again after the `arrow()` if desired.
|
|
322
|
+
const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;
|
|
323
|
+
const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;
|
|
324
|
+
return {
|
|
325
|
+
[axis]: coords[axis] - alignmentOffset,
|
|
326
|
+
data: {
|
|
327
|
+
[axis]: offset,
|
|
328
|
+
centerOffset: center - offset
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
|
|
263
334
|
const oppositeSideMap = {
|
|
264
335
|
left: 'right',
|
|
265
336
|
right: 'left',
|
|
@@ -1232,4 +1303,4 @@ const computePosition = (reference, floating, options) => computePosition$1(refe
|
|
|
1232
1303
|
...options
|
|
1233
1304
|
});
|
|
1234
1305
|
|
|
1235
|
-
export { autoUpdate as a, computePosition as c, flip as f, offset as o, shift as s };
|
|
1306
|
+
export { autoUpdate as a, arrow as b, computePosition as c, flip as f, offset as o, shift as s };
|
|
@@ -79,7 +79,7 @@ const SwirlActionList = /*@__PURE__*/ proxyCustomElement(class SwirlActionList e
|
|
|
79
79
|
item === activeElement?.querySelector('[role="menuitem"]'));
|
|
80
80
|
}
|
|
81
81
|
render() {
|
|
82
|
-
return (h(Host, null, h("div", { "aria-orientation": "vertical", class: "action-list", onFocusout: this.isInsidePopover ? undefined : this.onFocusOut, onFocus: this.isInsidePopover ? undefined : this.onFocus, onKeyDown: this.onKeyDown, ref: (el) => (this.container = el), role: "menu" }, h("slot", null))));
|
|
82
|
+
return (h(Host, null, h("div", { "aria-orientation": "vertical", class: "action-list", onFocusout: this.isInsidePopover ? undefined : this.onFocusOut, onFocus: this.isInsidePopover ? undefined : this.onFocus, onKeyDown: this.onKeyDown, part: "action-list", ref: (el) => (this.container = el), role: "menu" }, h("slot", null))));
|
|
83
83
|
}
|
|
84
84
|
get el() { return this; }
|
|
85
85
|
static get style() { return swirlActionListCss; }
|
|
@@ -21,7 +21,7 @@ const SwirlDescriptionListItem$1 = /*@__PURE__*/ proxyCustomElement(class SwirlD
|
|
|
21
21
|
"description-list-item--bordered": this.bordered,
|
|
22
22
|
"description-list-item--has-tools": hasTools,
|
|
23
23
|
});
|
|
24
|
-
return (h(Host, { role: "listitem" }, h("div", { class: className, part: "description-list-item", role: "group" }, h("div", { class: "description-list-item__text-container" }, h("div", { class: "description-list-item__term", part: "description-list-item__term", role: "term" }, this.term, this.tooltip && (h("span", { class: "description-list-item__tooltip" }, h("swirl-tooltip", { content: this.tooltip, position: "right" }, h("swirl-icon-info", { size: 16 }))))), h("div", { style: { maxWidth: this.maxWidth }, class: "description-list-item__description", role: "definition" }, h("slot", null))), h("div", { class: "description-list-item__tools" }, h("slot", { name: "tools" })))));
|
|
24
|
+
return (h(Host, { role: "listitem" }, h("div", { class: className, part: "description-list-item", role: "group" }, h("div", { class: "description-list-item__text-container" }, h("div", { class: "description-list-item__term", part: "description-list-item__term", role: "term" }, this.term, this.tooltip && (h("span", { class: "description-list-item__tooltip" }, h("swirl-tooltip", { content: this.tooltip, position: "right" }, h("swirl-icon-info", { size: 16, tabIndex: 0 }))))), h("div", { style: { maxWidth: this.maxWidth }, class: "description-list-item__description", role: "definition" }, h("slot", null))), h("div", { class: "description-list-item__tools" }, h("slot", { name: "tools" })))));
|
|
25
25
|
}
|
|
26
26
|
get el() { return this; }
|
|
27
27
|
static get style() { return swirlDescriptionListItemCss; }
|
|
@@ -3,7 +3,7 @@ import { c as classnames } from './index2.js';
|
|
|
3
3
|
import { d as defineCustomElement$3 } from './swirl-spinner2.js';
|
|
4
4
|
import { d as defineCustomElement$2 } from './swirl-visually-hidden2.js';
|
|
5
5
|
|
|
6
|
-
const swirlImageGridItemCss = ":host{display:block;width:100%;min-height:0}:host *{box-sizing:border-box}:host(:not(:only-child)) .image-grid-item__background{display:none}:host(:not(:only-child)) .image-grid-item__image{-o-object-fit:cover;object-fit:cover}:host(:nth-child(n+5)){display:none}.image-grid-item{position:relative;display:inline-flex;overflow:hidden;width:100%;height:100%}button.image-grid-item{padding:0;border:none;background-color:transparent;cursor:pointer}button.image-grid-item:focus:not(:focus-visible){outline:none}button.image-grid-item:focus-visible{z-index:1;outline-color:var(--s-focus-default);outline-offset:var(--s-space-2)}.image-grid-item--has-overlay .image-grid-item__image{scale:1.1;filter:blur(5px)}.image-grid-item__background{position:absolute;background-size:cover;inset:-40px;filter:blur(20px)}.image-grid-item__image{z-index:1;display:inline-flex;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center}.image-grid-item__icon{position:absolute;z-index:1;top:50%;left:50%;display:flex;width:3rem;height:3rem;justify-content:center;align-items:center;border-radius:50%;color:var(--s-icon-on-image);background-color:rgba(0, 0, 0, 0.6);transform:translate3d(-50%, -50%, 0)}.image-grid-item__icon ::part(icon){width:2rem;height:2rem}.image-grid-item__overlay{position:absolute;z-index:2;display:flex;justify-content:center;align-items:center;color:var(--s-text-on-image);background-color:rgba(0, 0, 0, 0.4);font-size:var(--s-font-size-2xl);inset:0}.image-grid-item__spinner{position:absolute;z-index:3;display:flex;justify-content:center;align-items:center;background-color:rgba(0, 0, 0, 0.4);inset:0}";
|
|
6
|
+
const swirlImageGridItemCss = ":host{display:block;width:100%;min-height:0}:host *{box-sizing:border-box}:host(:not(:only-child)) .image-grid-item__background{display:none}:host(:not(:only-child)) .image-grid-item__image{-o-object-fit:cover;object-fit:cover}:host(:nth-child(n+5)){display:none}.image-grid-item{position:relative;display:inline-flex;overflow:hidden;width:100%;height:100%}button.image-grid-item{padding:0;border:none;background-color:transparent;cursor:pointer}button.image-grid-item:focus:not(:focus-visible){outline:none}button.image-grid-item:focus-visible{z-index:1;outline-color:var(--s-focus-default);outline-offset:var(--s-space-2)}.image-grid-item--has-overlay .image-grid-item__image{scale:1.1;filter:blur(5px)}.image-grid-item__background{position:absolute;background-size:cover;inset:-40px;filter:blur(20px)}.image-grid-item__image{z-index:1;display:inline-flex;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center}.image-grid-item__loading-placeholder{display:inline-flex;width:100%;height:100%}.image-grid-item__icon{position:absolute;z-index:1;top:50%;left:50%;display:flex;width:3rem;height:3rem;justify-content:center;align-items:center;border-radius:50%;color:var(--s-icon-on-image);background-color:rgba(0, 0, 0, 0.6);transform:translate3d(-50%, -50%, 0)}.image-grid-item__icon ::part(icon){width:2rem;height:2rem}.image-grid-item__overlay{position:absolute;z-index:2;display:flex;justify-content:center;align-items:center;color:var(--s-text-on-image);background-color:rgba(0, 0, 0, 0.4);font-size:var(--s-font-size-2xl);inset:0}.image-grid-item__spinner{position:absolute;z-index:3;display:flex;justify-content:center;align-items:center;background-color:rgba(0, 0, 0, 0.4);inset:0}";
|
|
7
7
|
|
|
8
8
|
const SwirlImageGridItem$1 = /*@__PURE__*/ proxyCustomElement(class SwirlImageGridItem extends HTMLElement {
|
|
9
9
|
constructor() {
|
|
@@ -53,7 +53,7 @@ const SwirlImageGridItem$1 = /*@__PURE__*/ proxyCustomElement(class SwirlImageGr
|
|
|
53
53
|
this.loaded
|
|
54
54
|
? `url(${this.src})`
|
|
55
55
|
: undefined,
|
|
56
|
-
} }),
|
|
56
|
+
} }), this.loading !== "intersecting" || this.inViewport ? (h("img", { alt: this.alt, class: "image-grid-item__image", loading: this.loading !== "intersecting" ? this.loading : undefined, onLoad: this.onLoad, src: this.src })) : (h("div", { class: "image-grid-item__loading-placeholder" })), this.loaded && this.icon && !Boolean(this.overlay) && (h("div", { class: "image-grid-item__icon", innerHTML: this.icon })), this.overlay && (h("div", { class: "image-grid-item__overlay" }, this.overlay)), !this.loaded && (h("div", { class: "image-grid-item__spinner" }, h("swirl-spinner", null))))));
|
|
57
57
|
}
|
|
58
58
|
get el() { return this; }
|
|
59
59
|
static get style() { return swirlImageGridItemCss; }
|
|
@@ -4,7 +4,7 @@ import { d as disableBodyScroll, e as enableBodyScroll } from './bodyScrollLock.
|
|
|
4
4
|
import { c as classnames } from './index2.js';
|
|
5
5
|
import { i as isMobileViewport, q as querySelectorAllDeep, b as getActiveElement } from './utils.js';
|
|
6
6
|
|
|
7
|
-
const swirlPopoverCss = ":host{position:relative;z-index:var(--s-z-40);display:inline-flex}:host *{box-sizing:border-box}.popover--active:not(.popover--closing) .popover__backdrop{animation:0.15s popover-fade-in}@media (prefers-reduced-motion){.popover--active:not(.popover--closing) .popover__backdrop{animation:none}}.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-slide-in}@media (min-width: 768px){.popover--active:not(.popover--closing) .popover__content{transform-origin:top left;animation:0.15s popover-fade-scale-in-xy}}@media (prefers-reduced-motion){.popover--active:not(.popover--closing) .popover__content{animation:none}}.popover--closing .popover__backdrop{animation:0.15s popover-fade-out;animation-fill-mode:forwards}@media (prefers-reduced-motion){.popover--closing .popover__backdrop{animation:none}}.popover--closing .popover__content{animation:0.15s popover-slide-out;animation-fill-mode:forwards}@media (min-width: 768px){.popover--closing .popover__content{animation:0.15s popover-fade-out}}@media (prefers-reduced-motion){.popover--closing .popover__content{animation:none}}.popover--inactive .popover__content{display:none}@media (max-width: 767px){.popover--fullscreen-bottom-sheet.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-fade-in}@media (prefers-reduced-motion){.popover--fullscreen-bottom-sheet.popover--active:not(.popover--closing) .popover__content{animation:none}}.popover--fullscreen-bottom-sheet.popover--closing .popover__content{animation:0.15s popover-fade-out;animation-fill-mode:forwards}@media (prefers-reduced-motion){.popover--fullscreen-bottom-sheet.popover--closing .popover__content{animation:none}}.popover--fullscreen-bottom-sheet .popover__backdrop{display:none}.popover--fullscreen-bottom-sheet .popover__content{top:0;border-top-left-radius:0;border-top-right-radius:0}.popover--fullscreen-bottom-sheet .popover__scroll-container{height:100%;max-height:none;padding-top:0;padding-bottom:0}.popover--fullscreen-bottom-sheet .popover__handle{display:none}}@media (min-width: 768px){.popover--animation-scale-in-y.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-fade-scale-in-y}}@media (prefers-reduced-motion){.popover--animation-scale-in-y.popover--active:not(.popover--closing) .popover__content{animation:none}}@media (min-width: 768px){.popover--transparent .popover__content{background-color:transparent;box-shadow:none}}@media (min-width: 768px){.popover--transparent .popover__scroll-container{padding:0}}.popover__backdrop{position:fixed;z-index:0;background-color:rgba(0, 0, 0, 0.2);animation:0.15s popover-backdrop-fade-in;inset:0}@media (prefers-reduced-motion){.popover__backdrop{animation:none}}@media (min-width: 768px){.popover__backdrop{display:none}}.popover__content{position:fixed;z-index:2;right:0;bottom:0;left:0;overflow:hidden;border-top-left-radius:var(--s-border-radius-xl);border-top-right-radius:var(--s-border-radius-xl);background-color:var(--s-surface-overlay-default)}@media (min-width: 768px){.popover__content{right:unset;bottom:unset;left:unset;max-width:22.5rem;border-radius:var(--s-border-radius-sm);animation:none;box-shadow:var(--s-shadow-level-
|
|
7
|
+
const swirlPopoverCss = ":host{position:relative;z-index:var(--s-z-40);display:inline-flex}:host *{box-sizing:border-box}.popover--active:not(.popover--closing) .popover__backdrop{animation:0.15s popover-fade-in}@media (prefers-reduced-motion){.popover--active:not(.popover--closing) .popover__backdrop{animation:none}}.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-slide-in}@media (min-width: 768px){.popover--active:not(.popover--closing) .popover__content{transform-origin:top left;animation:0.15s popover-fade-scale-in-xy}}@media (prefers-reduced-motion){.popover--active:not(.popover--closing) .popover__content{animation:none}}.popover--closing .popover__backdrop{animation:0.15s popover-fade-out;animation-fill-mode:forwards}@media (prefers-reduced-motion){.popover--closing .popover__backdrop{animation:none}}.popover--closing .popover__content{animation:0.15s popover-slide-out;animation-fill-mode:forwards}@media (min-width: 768px){.popover--closing .popover__content{animation:0.15s popover-fade-out}}@media (prefers-reduced-motion){.popover--closing .popover__content{animation:none}}.popover--inactive .popover__content{display:none}@media (max-width: 767px){.popover--fullscreen-bottom-sheet.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-fade-in}@media (prefers-reduced-motion){.popover--fullscreen-bottom-sheet.popover--active:not(.popover--closing) .popover__content{animation:none}}.popover--fullscreen-bottom-sheet.popover--closing .popover__content{animation:0.15s popover-fade-out;animation-fill-mode:forwards}@media (prefers-reduced-motion){.popover--fullscreen-bottom-sheet.popover--closing .popover__content{animation:none}}.popover--fullscreen-bottom-sheet .popover__backdrop{display:none}.popover--fullscreen-bottom-sheet .popover__content{top:0;border-top-left-radius:0;border-top-right-radius:0}.popover--fullscreen-bottom-sheet .popover__scroll-container{height:100%;max-height:none;padding-top:0;padding-bottom:0}.popover--fullscreen-bottom-sheet .popover__handle{display:none}}@media (min-width: 768px){.popover--animation-scale-in-y.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-fade-scale-in-y}}@media (prefers-reduced-motion){.popover--animation-scale-in-y.popover--active:not(.popover--closing) .popover__content{animation:none}}@media (min-width: 768px){.popover--animation-fade-in.popover--active:not(.popover--closing) .popover__content{animation:0.15s popover-fade-in}}@media (prefers-reduced-motion){.popover--animation-fade-in.popover--active:not(.popover--closing) .popover__content{animation:none}}@media (min-width: 768px){.popover--transparent .popover__content{background-color:transparent;box-shadow:none}}@media (min-width: 768px){.popover--transparent .popover__scroll-container{padding:0}}.popover__backdrop{position:fixed;z-index:0;background-color:rgba(0, 0, 0, 0.2);animation:0.15s popover-backdrop-fade-in;inset:0}@media (prefers-reduced-motion){.popover__backdrop{animation:none}}@media (min-width: 768px){.popover__backdrop{display:none}}.popover__content{position:fixed;z-index:2;right:0;bottom:0;left:0;overflow:hidden;border-top-left-radius:var(--s-border-radius-xl);border-top-right-radius:var(--s-border-radius-xl);background-color:var(--s-surface-overlay-default)}@media (min-width: 768px){.popover__content{right:unset;bottom:unset;left:unset;max-width:22.5rem;border-radius:var(--s-border-radius-sm);animation:none;box-shadow:var(--s-shadow-level-2)}}.popover__scroll-container{overflow-x:hidden;overflow-y:auto;width:100%;max-height:90vh;padding-top:var(--s-space-24);padding-bottom:var(--s-space-24);overscroll-behavior:contain}@media (min-width: 768px){.popover__scroll-container{max-height:22rem;padding-top:var(--s-space-8);padding-bottom:var(--s-space-8)}}.popover__handle{position:absolute;top:var(--s-space-8);left:50%;width:2.5rem;height:0.375rem;border-radius:0.1875rem;background-color:var(--s-border-default);transform:translatex(-50%)}@media (min-width: 768px){.popover__handle{display:none}}@keyframes popover-slide-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes popover-slide-out{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes popover-fade-in{from{opacity:0}to{opacity:1}}@keyframes popover-fade-out{from{opacity:1}to{opacity:0}}@keyframes popover-fade-scale-in-xy{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes popover-fade-scale-in-y{from{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}";
|
|
8
8
|
|
|
9
9
|
const SwirlPopover = /*@__PURE__*/ proxyCustomElement(class SwirlPopover extends HTMLElement {
|
|
10
10
|
constructor() {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
-
import { c as computePosition, a as autoUpdate, o as offset, s as shift, f as flip } from './floating-ui.dom.esm.js';
|
|
2
|
+
import { b as arrow, c as computePosition, a as autoUpdate, o as offset, s as shift, f as flip } from './floating-ui.dom.esm.js';
|
|
3
|
+
import { c as classnames } from './index2.js';
|
|
3
4
|
|
|
4
|
-
const swirlTooltipCss = ":host{display:
|
|
5
|
+
const swirlTooltipCss = ":host{display:contents}:host *{box-sizing:border-box}.tooltip{display:contents}.tooltip--visible .tooltip__popper{animation:tooltip-fade-in 0.15s;animation-delay:0.1s;animation-fill-mode:forwards;opacity:0}.tooltip--actual-placement-top .tooltip__arrow{top:calc(100% - 0.0625rem);transform:translate3d(0, -50%, 0) rotate(45deg)}.tooltip--actual-placement-bottom .tooltip__arrow{bottom:calc(100% - 0.0625rem);transform:translate3d(0, 50%, 0) rotate(45deg)}.tooltip--actual-placement-left .tooltip__arrow{left:calc(100% - 0.0625rem);transform:translate3d(-50%, 0, 0) rotate(45deg)}.tooltip--actual-placement-right .tooltip__arrow{right:calc(100% - 0.0625rem);transform:translate3d(50%, 0, 0) rotate(45deg)}.tooltip .tooltip__reference{display:contents}.tooltip__popper{position:absolute;z-index:var(--s-z-40);max-width:17.5rem;opacity:0}.tooltip__bubble{position:relative;display:block;padding-top:var(--s-space-8);padding-right:var(--s-space-12);padding-bottom:calc(var(--s-space-8) + 0.0625rem);padding-left:var(--s-space-12);border-radius:var(--s-border-radius-sm);color:var(--s-text-on-status);background-color:var(--s-surface-neutral-default);line-height:var(--s-line-height-base);box-shadow:var(--s-shadow-level-2)}@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px){.tooltip__bubble{font-size:var(--s-font-size-sm);line-height:var(--s-line-height-sm)}}.tooltip__arrow{position:absolute;width:0.6875rem;height:0.6875rem;border-radius:0.125rem;background-color:var(--s-surface-neutral-default)}@keyframes tooltip-fade-in{from{opacity:0}to{opacity:1}}";
|
|
5
6
|
|
|
6
7
|
const SwirlTooltip = /*@__PURE__*/ proxyCustomElement(class SwirlTooltip extends HTMLElement {
|
|
7
8
|
constructor() {
|
|
@@ -14,16 +15,31 @@ const SwirlTooltip = /*@__PURE__*/ proxyCustomElement(class SwirlTooltip extends
|
|
|
14
15
|
}
|
|
15
16
|
};
|
|
16
17
|
this.reposition = async () => {
|
|
17
|
-
|
|
18
|
+
const referenceElement = this.el.children[0];
|
|
19
|
+
if (!Boolean(referenceElement) || !Boolean(this.popperEl)) {
|
|
18
20
|
return;
|
|
19
21
|
}
|
|
20
|
-
|
|
22
|
+
const middleware = [
|
|
23
|
+
...this.options.middleware.filter((middleware) => middleware.name !== "arrow"),
|
|
24
|
+
arrow({ element: this.arrowElement, padding: 12 }),
|
|
25
|
+
];
|
|
26
|
+
this.actualPosition = await computePosition(referenceElement, this.popperEl, { ...this.options, middleware });
|
|
27
|
+
const arrowX = this.actualPosition.middlewareData.arrow?.x;
|
|
28
|
+
const arrowY = this.actualPosition.middlewareData.arrow?.y;
|
|
29
|
+
this.arrowStyles = {
|
|
30
|
+
left: Boolean(arrowX) ? arrowX + "px" : undefined,
|
|
31
|
+
top: Boolean(arrowY) ? arrowY + "px" : undefined,
|
|
32
|
+
};
|
|
21
33
|
};
|
|
22
34
|
this.show = () => {
|
|
23
35
|
this.visible = true;
|
|
24
36
|
requestAnimationFrame(() => {
|
|
37
|
+
const referenceElement = this.el.children[0];
|
|
38
|
+
if (!Boolean(referenceElement)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
25
41
|
this.reposition();
|
|
26
|
-
this.disableAutoUpdate = autoUpdate(
|
|
42
|
+
this.disableAutoUpdate = autoUpdate(referenceElement, this.popperEl, this.reposition.bind(this));
|
|
27
43
|
});
|
|
28
44
|
};
|
|
29
45
|
this.showWithDelay = () => {
|
|
@@ -53,40 +69,11 @@ const SwirlTooltip = /*@__PURE__*/ proxyCustomElement(class SwirlTooltip extends
|
|
|
53
69
|
strategy: "absolute",
|
|
54
70
|
};
|
|
55
71
|
};
|
|
56
|
-
this.getArrowStyles = () => {
|
|
57
|
-
if (this.actualPosition?.placement === "top") {
|
|
58
|
-
return {
|
|
59
|
-
top: "100%",
|
|
60
|
-
left: "50%",
|
|
61
|
-
transform: "translate3d(-50%, -50%, 0) rotate(45deg)",
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
if (this.actualPosition?.placement === "bottom") {
|
|
65
|
-
return {
|
|
66
|
-
bottom: "100%",
|
|
67
|
-
left: "50%",
|
|
68
|
-
transform: "translate3d(-50%, 50%, 0) rotate(45deg)",
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
if (this.actualPosition?.placement === "right") {
|
|
72
|
-
return {
|
|
73
|
-
top: "50%",
|
|
74
|
-
right: "100%",
|
|
75
|
-
transform: "translate3d(50%, -50%, 0) rotate(45deg)",
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
if (this.actualPosition?.placement === "left") {
|
|
79
|
-
return {
|
|
80
|
-
top: "50%",
|
|
81
|
-
left: "100%",
|
|
82
|
-
transform: "translate3d(-50%, -50%, 0) rotate(45deg)",
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
72
|
this.content = undefined;
|
|
87
73
|
this.delay = 300;
|
|
88
74
|
this.position = "top";
|
|
89
75
|
this.actualPosition = undefined;
|
|
76
|
+
this.arrowStyles = undefined;
|
|
90
77
|
this.visible = false;
|
|
91
78
|
}
|
|
92
79
|
watchPosition() {
|
|
@@ -111,16 +98,22 @@ const SwirlTooltip = /*@__PURE__*/ proxyCustomElement(class SwirlTooltip extends
|
|
|
111
98
|
this.updateOptions();
|
|
112
99
|
}
|
|
113
100
|
render() {
|
|
114
|
-
const
|
|
115
|
-
|
|
101
|
+
const className = classnames("tooltip", `tooltip--actual-placement-${this.actualPosition?.placement}`, {
|
|
102
|
+
"tooltip--visible": this.visible,
|
|
103
|
+
});
|
|
104
|
+
return (h(Host, { onKeydown: this.onKeydown }, h("span", { class: className }, h("span", { class: "tooltip__reference", "aria-describedby": "tooltip", onFocusout: this.hide, onClick: this.hide, onFocusin: this.show }, h("slot", null)), h("span", { class: "tooltip__popper", ref: (el) => (this.popperEl = el), style: {
|
|
116
105
|
top: Boolean(this.actualPosition)
|
|
117
106
|
? `${this.actualPosition?.y}px`
|
|
118
107
|
: "",
|
|
119
108
|
left: Boolean(this.actualPosition)
|
|
120
109
|
? `${this.actualPosition?.x}px`
|
|
121
110
|
: "",
|
|
122
|
-
} }, this.visible && (h("span", { class: "tooltip__bubble", id: "tooltip", part: "tooltip__bubble", role: "tooltip" }, h("span", { class: "tooltip__content", innerHTML: this.content }), h("span", { class: "tooltip__arrow",
|
|
111
|
+
} }, this.visible && (h("span", { class: "tooltip__bubble", id: "tooltip", part: "tooltip__bubble", role: "tooltip" }, h("span", { class: "tooltip__content", innerHTML: this.content }))), h("span", { class: "tooltip__arrow", ref: (el) => (this.arrowElement = el), style: {
|
|
112
|
+
...this.arrowStyles,
|
|
113
|
+
visibility: this.visible ? "visible" : "hidden",
|
|
114
|
+
} })))));
|
|
123
115
|
}
|
|
116
|
+
get el() { return this; }
|
|
124
117
|
static get watchers() { return {
|
|
125
118
|
"position": ["watchPosition"]
|
|
126
119
|
}; }
|
|
@@ -130,6 +123,7 @@ const SwirlTooltip = /*@__PURE__*/ proxyCustomElement(class SwirlTooltip extends
|
|
|
130
123
|
"delay": [2],
|
|
131
124
|
"position": [1],
|
|
132
125
|
"actualPosition": [32],
|
|
126
|
+
"arrowStyles": [32],
|
|
133
127
|
"visible": [32]
|
|
134
128
|
}, [[1, "mouseenter", "onMouseEnter"], [1, "mouseleave", "onMouseLeave"], [9, "resize", "onWindowResize"], [9, "scroll", "onWindowScroll"]]]);
|
|
135
129
|
function defineCustomElement() {
|
|
@@ -260,6 +260,77 @@ function within(min$1$1, value, max$1$1) {
|
|
|
260
260
|
return max$1(min$1$1, min$1(value, max$1$1));
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Provides data to position an inner element of the floating element so that it
|
|
265
|
+
* appears centered to the reference element.
|
|
266
|
+
* @see https://floating-ui.com/docs/arrow
|
|
267
|
+
*/
|
|
268
|
+
const arrow = options => ({
|
|
269
|
+
name: 'arrow',
|
|
270
|
+
options,
|
|
271
|
+
async fn(state) {
|
|
272
|
+
// Since `element` is required, we don't Partial<> the type.
|
|
273
|
+
const {
|
|
274
|
+
element,
|
|
275
|
+
padding = 0
|
|
276
|
+
} = options || {};
|
|
277
|
+
const {
|
|
278
|
+
x,
|
|
279
|
+
y,
|
|
280
|
+
placement,
|
|
281
|
+
rects,
|
|
282
|
+
platform,
|
|
283
|
+
elements
|
|
284
|
+
} = state;
|
|
285
|
+
if (element == null) {
|
|
286
|
+
return {};
|
|
287
|
+
}
|
|
288
|
+
const paddingObject = getSideObjectFromPadding(padding);
|
|
289
|
+
const coords = {
|
|
290
|
+
x,
|
|
291
|
+
y
|
|
292
|
+
};
|
|
293
|
+
const axis = getMainAxisFromPlacement(placement);
|
|
294
|
+
const length = getLengthFromAxis(axis);
|
|
295
|
+
const arrowDimensions = await platform.getDimensions(element);
|
|
296
|
+
const isYAxis = axis === 'y';
|
|
297
|
+
const minProp = isYAxis ? 'top' : 'left';
|
|
298
|
+
const maxProp = isYAxis ? 'bottom' : 'right';
|
|
299
|
+
const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
|
|
300
|
+
const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
|
|
301
|
+
const startDiff = coords[axis] - rects.reference[axis];
|
|
302
|
+
const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
|
|
303
|
+
let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
|
|
304
|
+
|
|
305
|
+
// DOM platform can return `window` as the `offsetParent`.
|
|
306
|
+
if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
|
|
307
|
+
clientSize = elements.floating[clientProp] || rects.floating[length];
|
|
308
|
+
}
|
|
309
|
+
const centerToReference = endDiff / 2 - startDiff / 2;
|
|
310
|
+
|
|
311
|
+
// Make sure the arrow doesn't overflow the floating element if the center
|
|
312
|
+
// point is outside the floating element's bounds.
|
|
313
|
+
const min = paddingObject[minProp];
|
|
314
|
+
const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
|
|
315
|
+
const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
|
|
316
|
+
const offset = within(min, center, max);
|
|
317
|
+
|
|
318
|
+
// If the reference is small enough that the arrow's padding causes it to
|
|
319
|
+
// to point to nothing for an aligned placement, adjust the offset of the
|
|
320
|
+
// floating element itself. This stops `shift()` from taking action, but can
|
|
321
|
+
// be worked around by calling it again after the `arrow()` if desired.
|
|
322
|
+
const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;
|
|
323
|
+
const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;
|
|
324
|
+
return {
|
|
325
|
+
[axis]: coords[axis] - alignmentOffset,
|
|
326
|
+
data: {
|
|
327
|
+
[axis]: offset,
|
|
328
|
+
centerOffset: center - offset
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
|
|
263
334
|
const oppositeSideMap = {
|
|
264
335
|
left: 'right',
|
|
265
336
|
right: 'left',
|
|
@@ -1232,4 +1303,4 @@ const computePosition = (reference, floating, options) => computePosition$1(refe
|
|
|
1232
1303
|
...options
|
|
1233
1304
|
});
|
|
1234
1305
|
|
|
1235
|
-
export { autoUpdate as a, computePosition as c, flip as f, offset as o, shift as s };
|
|
1306
|
+
export { autoUpdate as a, arrow as b, computePosition as c, flip as f, offset as o, shift as s };
|