@vonage/vivid 4.3.0 → 4.4.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/custom-elements.json +392 -41
- package/index.cjs +1 -0
- package/index.js +1 -1
- package/lib/dialog/dialog.d.ts +1 -0
- package/lib/empty-state/definition.d.ts +1 -0
- package/lib/empty-state/empty-state.d.ts +5 -0
- package/lib/enums.d.ts +4 -0
- package/lib/popup/popup.d.ts +5 -0
- package/lib/range-slider/range-slider.d.ts +2 -0
- package/lib/slider/slider.d.ts +5 -0
- package/lib/slider/slider.template.d.ts +2 -2
- package/package.json +1 -1
- package/shared/definition.cjs +1 -1
- package/shared/definition.js +1 -1
- package/shared/definition21.cjs +67 -30
- package/shared/definition21.js +67 -30
- package/shared/definition23.cjs +18 -3
- package/shared/definition23.js +19 -4
- package/shared/definition25.cjs +1 -1
- package/shared/definition25.js +1 -1
- package/shared/definition30.cjs +1 -1
- package/shared/definition30.js +1 -1
- package/shared/definition42.cjs +123 -18
- package/shared/definition42.js +123 -18
- package/shared/definition46.cjs +96 -11
- package/shared/definition46.js +97 -12
- package/shared/definition56.cjs +1 -1
- package/shared/definition56.js +1 -1
- package/shared/definition63.cjs +155 -2
- package/shared/definition63.js +156 -4
- package/shared/enums.cjs +6 -0
- package/shared/enums.js +6 -1
- package/shared/patterns/anchored.d.ts +4 -4
- package/shared/presentationDate.cjs +1 -1
- package/shared/presentationDate.js +1 -1
- package/shared/slider.template.cjs +27 -4
- package/shared/slider.template.js +27 -4
- package/styles/core/all.css +1 -1
- package/styles/core/theme.css +1 -1
- package/styles/core/typography.css +1 -1
- package/styles/tokens/theme-dark.css +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/styles/tokens/vivid-2-compat.css +1 -1
- package/vivid.api.json +211 -0
package/shared/definition46.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { F as FoundationElement, _ as __decorate, a as attr, o as observable, n as nullableNumberConverter, r as registerFactory } from './index.js';
|
|
1
|
+
import { F as FoundationElement, _ as __decorate, a as attr, o as observable, n as nullableNumberConverter, v as volatile, r as registerFactory } from './index.js';
|
|
2
|
+
import { p as popupRegistries } from './definition63.js';
|
|
2
3
|
import './affix.js';
|
|
3
4
|
import './index2.js';
|
|
4
5
|
import { L as Localized } from './localized.js';
|
|
@@ -482,24 +483,70 @@ __decorate([
|
|
|
482
483
|
attr
|
|
483
484
|
], Slider$1.prototype, "mode", void 0);
|
|
484
485
|
|
|
485
|
-
const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;--_track-start-inset-inline-start: 0;--_track-start-inset-block-start: 0;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;border-radius:4px;background:var(--_track-background-color)}.control .track-start{position:absolute;border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}:host([markers]) .control.horizontal .track-start{--_track-start-inset-inline-start: 1px;border-bottom-left-radius:0;border-top-left-radius:0}.control.horizontal .track .mark{position:absolute;block-size:6px;inline-size:100%;inset-block-start:-2px;inset-inline-start:0}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{position:absolute;block-size:100%;inline-size:6px;inset-block-start:0;inset-inline-start:-2px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}:host([markers]) .control.vertical .track-start{--_track-start-inset-block-start: 1px;border-radius:0}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.control:not(.disabled) .mark{color:var(--vvd-color-neutral-950)}.control.disabled .mark{color:var(--_track-start-background-color)}.thumb-container{position:absolute;border-radius:50%;block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline
|
|
486
|
+
const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;--_track-start-inset-inline-start: 0;--_track-start-inset-block-start: 0;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;border-radius:4px;background:var(--_track-background-color)}.control .track-start{position:absolute;border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}:host([markers]) .control.horizontal .track-start{--_track-start-inset-inline-start: 1px;border-bottom-left-radius:0;border-top-left-radius:0}.control.horizontal .track .mark{position:absolute;block-size:6px;inline-size:100%;inset-block-start:-2px;inset-inline-start:0}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{position:absolute;block-size:100%;inline-size:6px;inset-block-start:0;inset-inline-start:-2px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}:host([markers]) .control.vertical .track-start{--_track-start-inset-block-start: 1px;border-radius:0}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.control:not(.disabled) .mark{color:var(--vvd-color-neutral-950)}.control.disabled .mark{color:var(--_track-start-background-color)}.thumb-container{position:absolute;border-radius:50%;block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline:none;touch-action:none}.thumb-container.focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;--_thumb-interaction-indicator-alpha: .05;border-radius:50%}.control.horizontal .thumb-container{transform:translate(calc(var(--_thumb-interaction-indicator-size) / 2))}.control.vertical .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha: .12}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha: .25}.thumb-container:before{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha, 0);transition:opacity .2s ease-out 0s}.thumb-container:after{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2)}.popup{pointer-events:none}.tooltip{width:auto;padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
|
|
486
487
|
|
|
487
488
|
var __defProp = Object.defineProperty;
|
|
489
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
488
490
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
489
|
-
var result = void 0 ;
|
|
491
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
490
492
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
491
493
|
if (decorator = decorators[i])
|
|
492
|
-
result = (decorator(target, key, result) ) || result;
|
|
493
|
-
if (result) __defProp(target, key, result);
|
|
494
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
495
|
+
if (kind && result) __defProp(target, key, result);
|
|
494
496
|
return result;
|
|
495
497
|
};
|
|
496
498
|
class Slider extends Slider$1 {
|
|
497
499
|
constructor() {
|
|
498
|
-
super(
|
|
500
|
+
super();
|
|
499
501
|
this.ariaLabel = null;
|
|
500
502
|
this.ariaValuetext = null;
|
|
501
503
|
this.markers = false;
|
|
504
|
+
this.pin = false;
|
|
502
505
|
this.valueTextFormatter = (value) => parseFloat(value).toLocaleString(this.locale.lang);
|
|
506
|
+
this._focusVisible = false;
|
|
507
|
+
this._hoveringOnThumb = false;
|
|
508
|
+
this.#isNonVisibleFocus = false;
|
|
509
|
+
/**
|
|
510
|
+
* @internal
|
|
511
|
+
*/
|
|
512
|
+
this._onFocusIn = () => {
|
|
513
|
+
if (!this.#isNonVisibleFocus) {
|
|
514
|
+
this._focusVisible = true;
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
/**
|
|
518
|
+
* @internal
|
|
519
|
+
*/
|
|
520
|
+
this._onFocusOut = () => {
|
|
521
|
+
this._focusVisible = false;
|
|
522
|
+
};
|
|
523
|
+
this.#onMouseOver = () => {
|
|
524
|
+
this._hoveringOnThumb = true;
|
|
525
|
+
};
|
|
526
|
+
this.#onMouseOut = () => {
|
|
527
|
+
this._hoveringOnThumb = false;
|
|
528
|
+
};
|
|
529
|
+
const fastSliderInternals = this;
|
|
530
|
+
const originalHandleMouseDown = fastSliderInternals.handleMouseDown;
|
|
531
|
+
fastSliderInternals.handleMouseDown = (e) => {
|
|
532
|
+
this.#isNonVisibleFocus = true;
|
|
533
|
+
originalHandleMouseDown(e);
|
|
534
|
+
this.#isNonVisibleFocus = false;
|
|
535
|
+
if (e && !this.disabled && !this.readOnly) {
|
|
536
|
+
this.isDragging = true;
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
const originalHandleThumbMouseDown = fastSliderInternals.handleThumbMouseDown;
|
|
540
|
+
fastSliderInternals.handleThumbMouseDown = (e) => {
|
|
541
|
+
this.#isNonVisibleFocus = true;
|
|
542
|
+
originalHandleThumbMouseDown(e);
|
|
543
|
+
this.#isNonVisibleFocus = false;
|
|
544
|
+
};
|
|
545
|
+
const originalKeypressHandler = fastSliderInternals.keypressHandler;
|
|
546
|
+
fastSliderInternals.keypressHandler = (e) => {
|
|
547
|
+
this._focusVisible = true;
|
|
548
|
+
originalKeypressHandler(e);
|
|
549
|
+
};
|
|
503
550
|
}
|
|
504
551
|
/**
|
|
505
552
|
* TO BE REMOVED WHEN UPGRADING TO FAST-FOUNDATION 3
|
|
@@ -521,24 +568,62 @@ class Slider extends Slider$1 {
|
|
|
521
568
|
super.valueChanged(previous, value);
|
|
522
569
|
}
|
|
523
570
|
}
|
|
571
|
+
get _isThumbPopupOpen() {
|
|
572
|
+
return this._focusVisible || this._hoveringOnThumb || this.isDragging;
|
|
573
|
+
}
|
|
574
|
+
#isNonVisibleFocus;
|
|
575
|
+
connectedCallback() {
|
|
576
|
+
super.connectedCallback();
|
|
577
|
+
this.#registerThumbListeners();
|
|
578
|
+
}
|
|
579
|
+
disconnectedCallback() {
|
|
580
|
+
super.disconnectedCallback();
|
|
581
|
+
this.#unregisterThumbListeners();
|
|
582
|
+
}
|
|
583
|
+
#registerThumbListeners() {
|
|
584
|
+
this.thumb.addEventListener("mouseover", this.#onMouseOver, {
|
|
585
|
+
passive: true
|
|
586
|
+
});
|
|
587
|
+
this.thumb.addEventListener("mouseout", this.#onMouseOut, {
|
|
588
|
+
passive: true
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
#unregisterThumbListeners() {
|
|
592
|
+
this.thumb.removeEventListener("mouseover", this.#onMouseOver);
|
|
593
|
+
this.thumb.removeEventListener("mouseout", this.#onMouseOut);
|
|
594
|
+
}
|
|
595
|
+
#onMouseOver;
|
|
596
|
+
#onMouseOut;
|
|
524
597
|
}
|
|
525
598
|
__decorateClass([
|
|
526
599
|
attr({ attribute: "aria-label" })
|
|
527
|
-
], Slider.prototype, "ariaLabel");
|
|
600
|
+
], Slider.prototype, "ariaLabel", 2);
|
|
528
601
|
__decorateClass([
|
|
529
602
|
attr({ attribute: "aria-valuetext" })
|
|
530
|
-
], Slider.prototype, "ariaValuetext");
|
|
603
|
+
], Slider.prototype, "ariaValuetext", 2);
|
|
531
604
|
__decorateClass([
|
|
532
605
|
attr({
|
|
533
606
|
mode: "boolean"
|
|
534
607
|
})
|
|
535
|
-
], Slider.prototype, "markers");
|
|
608
|
+
], Slider.prototype, "markers", 2);
|
|
609
|
+
__decorateClass([
|
|
610
|
+
attr({ mode: "boolean" })
|
|
611
|
+
], Slider.prototype, "pin", 2);
|
|
536
612
|
__decorateClass([
|
|
537
613
|
attr
|
|
538
|
-
], Slider.prototype, "connotation");
|
|
614
|
+
], Slider.prototype, "connotation", 2);
|
|
539
615
|
__decorateClass([
|
|
540
616
|
observable
|
|
541
|
-
], Slider.prototype, "valueTextFormatter");
|
|
617
|
+
], Slider.prototype, "valueTextFormatter", 2);
|
|
618
|
+
__decorateClass([
|
|
619
|
+
observable
|
|
620
|
+
], Slider.prototype, "_focusVisible", 2);
|
|
621
|
+
__decorateClass([
|
|
622
|
+
observable
|
|
623
|
+
], Slider.prototype, "_hoveringOnThumb", 2);
|
|
624
|
+
__decorateClass([
|
|
625
|
+
volatile
|
|
626
|
+
], Slider.prototype, "_isThumbPopupOpen", 1);
|
|
542
627
|
applyMixins(Slider, Localized);
|
|
543
628
|
|
|
544
629
|
const sliderDefinition = Slider.compose({
|
|
@@ -549,7 +634,7 @@ const sliderDefinition = Slider.compose({
|
|
|
549
634
|
delegatesFocus: true
|
|
550
635
|
}
|
|
551
636
|
});
|
|
552
|
-
const sliderRegistries = [sliderDefinition()];
|
|
637
|
+
const sliderRegistries = [...popupRegistries, sliderDefinition()];
|
|
553
638
|
const registerSlider = registerFactory(sliderRegistries);
|
|
554
639
|
|
|
555
640
|
export { Slider as S, sliderRegistries as a, registerSlider as r, sliderDefinition as s };
|
package/shared/definition56.cjs
CHANGED
|
@@ -16,7 +16,7 @@ const when = require('./when.cjs');
|
|
|
16
16
|
const repeat = require('./repeat.cjs');
|
|
17
17
|
const classNames = require('./class-names.cjs');
|
|
18
18
|
|
|
19
|
-
const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none;scrollbar-width:thin}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}";
|
|
19
|
+
const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;justify-content:center;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none;scrollbar-width:thin}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}";
|
|
20
20
|
|
|
21
21
|
class _TimePicker extends index.FoundationElement {
|
|
22
22
|
}
|
package/shared/definition56.js
CHANGED
|
@@ -14,7 +14,7 @@ import { w as when } from './when.js';
|
|
|
14
14
|
import { r as repeat } from './repeat.js';
|
|
15
15
|
import { c as classNames } from './class-names.js';
|
|
16
16
|
|
|
17
|
-
const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none;scrollbar-width:thin}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}";
|
|
17
|
+
const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;justify-content:center;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none;scrollbar-width:thin}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}";
|
|
18
18
|
|
|
19
19
|
class _TimePicker extends FoundationElement {
|
|
20
20
|
}
|
package/shared/definition63.cjs
CHANGED
|
@@ -8,6 +8,8 @@ const when = require('./when.cjs');
|
|
|
8
8
|
const classNames = require('./class-names.cjs');
|
|
9
9
|
|
|
10
10
|
const sides = ['top', 'right', 'bottom', 'left'];
|
|
11
|
+
const alignments = ['start', 'end'];
|
|
12
|
+
const placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
|
|
11
13
|
const min = Math.min;
|
|
12
14
|
const max = Math.max;
|
|
13
15
|
const round = Math.round;
|
|
@@ -421,6 +423,109 @@ const arrow = options => ({
|
|
|
421
423
|
}
|
|
422
424
|
});
|
|
423
425
|
|
|
426
|
+
function getPlacementList(alignment, autoAlignment, allowedPlacements) {
|
|
427
|
+
const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
|
|
428
|
+
return allowedPlacementsSortedByAlignment.filter(placement => {
|
|
429
|
+
if (alignment) {
|
|
430
|
+
return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
|
|
431
|
+
}
|
|
432
|
+
return true;
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Optimizes the visibility of the floating element by choosing the placement
|
|
437
|
+
* that has the most space available automatically, without needing to specify a
|
|
438
|
+
* preferred placement. Alternative to `flip`.
|
|
439
|
+
* @see https://floating-ui.com/docs/autoPlacement
|
|
440
|
+
*/
|
|
441
|
+
const autoPlacement = function (options) {
|
|
442
|
+
if (options === void 0) {
|
|
443
|
+
options = {};
|
|
444
|
+
}
|
|
445
|
+
return {
|
|
446
|
+
name: 'autoPlacement',
|
|
447
|
+
options,
|
|
448
|
+
async fn(state) {
|
|
449
|
+
var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
|
|
450
|
+
const {
|
|
451
|
+
rects,
|
|
452
|
+
middlewareData,
|
|
453
|
+
placement,
|
|
454
|
+
platform,
|
|
455
|
+
elements
|
|
456
|
+
} = state;
|
|
457
|
+
const {
|
|
458
|
+
crossAxis = false,
|
|
459
|
+
alignment,
|
|
460
|
+
allowedPlacements = placements,
|
|
461
|
+
autoAlignment = true,
|
|
462
|
+
...detectOverflowOptions
|
|
463
|
+
} = evaluate(options, state);
|
|
464
|
+
const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
|
|
465
|
+
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
466
|
+
const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
|
|
467
|
+
const currentPlacement = placements$1[currentIndex];
|
|
468
|
+
if (currentPlacement == null) {
|
|
469
|
+
return {};
|
|
470
|
+
}
|
|
471
|
+
const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
|
|
472
|
+
|
|
473
|
+
// Make `computeCoords` start from the right place.
|
|
474
|
+
if (placement !== currentPlacement) {
|
|
475
|
+
return {
|
|
476
|
+
reset: {
|
|
477
|
+
placement: placements$1[0]
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
|
|
482
|
+
const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
|
|
483
|
+
placement: currentPlacement,
|
|
484
|
+
overflows: currentOverflows
|
|
485
|
+
}];
|
|
486
|
+
const nextPlacement = placements$1[currentIndex + 1];
|
|
487
|
+
|
|
488
|
+
// There are more placements to check.
|
|
489
|
+
if (nextPlacement) {
|
|
490
|
+
return {
|
|
491
|
+
data: {
|
|
492
|
+
index: currentIndex + 1,
|
|
493
|
+
overflows: allOverflows
|
|
494
|
+
},
|
|
495
|
+
reset: {
|
|
496
|
+
placement: nextPlacement
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
const placementsSortedByMostSpace = allOverflows.map(d => {
|
|
501
|
+
const alignment = getAlignment(d.placement);
|
|
502
|
+
return [d.placement, alignment && crossAxis ?
|
|
503
|
+
// Check along the mainAxis and main crossAxis side.
|
|
504
|
+
d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
|
|
505
|
+
// Check only the mainAxis.
|
|
506
|
+
d.overflows[0], d.overflows];
|
|
507
|
+
}).sort((a, b) => a[1] - b[1]);
|
|
508
|
+
const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
|
|
509
|
+
// Aligned placements should not check their opposite crossAxis
|
|
510
|
+
// side.
|
|
511
|
+
getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
|
|
512
|
+
const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
|
|
513
|
+
if (resetPlacement !== placement) {
|
|
514
|
+
return {
|
|
515
|
+
data: {
|
|
516
|
+
index: currentIndex + 1,
|
|
517
|
+
overflows: allOverflows
|
|
518
|
+
},
|
|
519
|
+
reset: {
|
|
520
|
+
placement: resetPlacement
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
return {};
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
};
|
|
528
|
+
|
|
424
529
|
/**
|
|
425
530
|
* Optimizes the visibility of the floating element by flipping the `placement`
|
|
426
531
|
* in order to keep it in view when the preferred placement(s) will overflow the
|
|
@@ -1628,6 +1733,34 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
1628
1733
|
if (result) __defProp(target, key, result);
|
|
1629
1734
|
return result;
|
|
1630
1735
|
};
|
|
1736
|
+
const PlacementStrategy = {
|
|
1737
|
+
Flip: "flip",
|
|
1738
|
+
AutoPlacementHorizontal: "auto-placement-horizontal",
|
|
1739
|
+
AutoPlacementVertical: "auto-placement-vertical"
|
|
1740
|
+
};
|
|
1741
|
+
const placementStrategyMiddlewares = {
|
|
1742
|
+
[PlacementStrategy.Flip]: flip(),
|
|
1743
|
+
[PlacementStrategy.AutoPlacementHorizontal]: autoPlacement({
|
|
1744
|
+
allowedPlacements: [
|
|
1745
|
+
"bottom",
|
|
1746
|
+
"top",
|
|
1747
|
+
"bottom-start",
|
|
1748
|
+
"bottom-end",
|
|
1749
|
+
"top-start",
|
|
1750
|
+
"top-end"
|
|
1751
|
+
]
|
|
1752
|
+
}),
|
|
1753
|
+
[PlacementStrategy.AutoPlacementVertical]: autoPlacement({
|
|
1754
|
+
allowedPlacements: [
|
|
1755
|
+
"left",
|
|
1756
|
+
"right",
|
|
1757
|
+
"left-start",
|
|
1758
|
+
"left-end",
|
|
1759
|
+
"right-start",
|
|
1760
|
+
"right-end"
|
|
1761
|
+
]
|
|
1762
|
+
})
|
|
1763
|
+
};
|
|
1631
1764
|
class Popup extends index.FoundationElement {
|
|
1632
1765
|
constructor() {
|
|
1633
1766
|
super(...arguments);
|
|
@@ -1635,12 +1768,19 @@ class Popup extends index.FoundationElement {
|
|
|
1635
1768
|
this.dismissible = false;
|
|
1636
1769
|
this.arrow = false;
|
|
1637
1770
|
this.alternate = false;
|
|
1771
|
+
/**
|
|
1772
|
+
* The placement strategy of the popup.
|
|
1773
|
+
*
|
|
1774
|
+
* @public
|
|
1775
|
+
*/
|
|
1776
|
+
this.placementStrategy = PlacementStrategy.Flip;
|
|
1777
|
+
this.animationFrame = false;
|
|
1638
1778
|
this.strategy = "fixed";
|
|
1639
1779
|
}
|
|
1640
1780
|
get #middleware() {
|
|
1641
1781
|
let middleware = [
|
|
1642
1782
|
inline(),
|
|
1643
|
-
|
|
1783
|
+
placementStrategyMiddlewares[this.placementStrategy],
|
|
1644
1784
|
hide(),
|
|
1645
1785
|
size({
|
|
1646
1786
|
apply({ availableWidth, availableHeight, elements }) {
|
|
@@ -1663,6 +1803,12 @@ class Popup extends index.FoundationElement {
|
|
|
1663
1803
|
#cleanup;
|
|
1664
1804
|
openChanged(_, newValue) {
|
|
1665
1805
|
newValue ? this.$emit("vwc-popup:open") : this.$emit("vwc-popup:close");
|
|
1806
|
+
index.DOM.queueUpdate(() => this.#updateAutoUpdate());
|
|
1807
|
+
}
|
|
1808
|
+
/**
|
|
1809
|
+
* @internal
|
|
1810
|
+
*/
|
|
1811
|
+
animationFrameChanged() {
|
|
1666
1812
|
this.#updateAutoUpdate();
|
|
1667
1813
|
}
|
|
1668
1814
|
/**
|
|
@@ -1685,7 +1831,10 @@ class Popup extends index.FoundationElement {
|
|
|
1685
1831
|
this.#cleanup = autoUpdate(
|
|
1686
1832
|
this.anchorEl,
|
|
1687
1833
|
this.popupEl,
|
|
1688
|
-
() => this.updatePosition()
|
|
1834
|
+
() => this.updatePosition(),
|
|
1835
|
+
{
|
|
1836
|
+
animationFrame: this.animationFrame
|
|
1837
|
+
}
|
|
1689
1838
|
);
|
|
1690
1839
|
}
|
|
1691
1840
|
}
|
|
@@ -1764,6 +1913,9 @@ __decorateClass([
|
|
|
1764
1913
|
__decorateClass([
|
|
1765
1914
|
index.attr({ mode: "fromView" })
|
|
1766
1915
|
], Popup.prototype, "placement");
|
|
1916
|
+
__decorateClass([
|
|
1917
|
+
index.attr({ mode: "boolean", attribute: "animation-frame" })
|
|
1918
|
+
], Popup.prototype, "animationFrame");
|
|
1767
1919
|
__decorateClass([
|
|
1768
1920
|
index.attr({ mode: "fromView" })
|
|
1769
1921
|
], Popup.prototype, "strategy");
|
|
@@ -1818,6 +1970,7 @@ const popupRegistries = [
|
|
|
1818
1970
|
];
|
|
1819
1971
|
const registerPopup = index.registerFactory(popupRegistries);
|
|
1820
1972
|
|
|
1973
|
+
exports.PlacementStrategy = PlacementStrategy;
|
|
1821
1974
|
exports.Popup = Popup;
|
|
1822
1975
|
exports.popupRegistries = popupRegistries;
|
|
1823
1976
|
exports.registerPopup = registerPopup;
|
package/shared/definition63.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as attr, F as FoundationElement, o as observable, h as html, r as registerFactory } from './index.js';
|
|
1
|
+
import { a as attr, F as FoundationElement, D as DOM, o as observable, h as html, r as registerFactory } from './index.js';
|
|
2
2
|
import { B as Button, a as buttonRegistries } from './definition11.js';
|
|
3
3
|
import { E as Elevation, e as elevationRegistries } from './definition62.js';
|
|
4
4
|
import { r as ref } from './ref.js';
|
|
@@ -6,6 +6,8 @@ import { w as when } from './when.js';
|
|
|
6
6
|
import { c as classNames } from './class-names.js';
|
|
7
7
|
|
|
8
8
|
const sides = ['top', 'right', 'bottom', 'left'];
|
|
9
|
+
const alignments = ['start', 'end'];
|
|
10
|
+
const placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
|
|
9
11
|
const min = Math.min;
|
|
10
12
|
const max = Math.max;
|
|
11
13
|
const round = Math.round;
|
|
@@ -419,6 +421,109 @@ const arrow = options => ({
|
|
|
419
421
|
}
|
|
420
422
|
});
|
|
421
423
|
|
|
424
|
+
function getPlacementList(alignment, autoAlignment, allowedPlacements) {
|
|
425
|
+
const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
|
|
426
|
+
return allowedPlacementsSortedByAlignment.filter(placement => {
|
|
427
|
+
if (alignment) {
|
|
428
|
+
return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
|
|
429
|
+
}
|
|
430
|
+
return true;
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Optimizes the visibility of the floating element by choosing the placement
|
|
435
|
+
* that has the most space available automatically, without needing to specify a
|
|
436
|
+
* preferred placement. Alternative to `flip`.
|
|
437
|
+
* @see https://floating-ui.com/docs/autoPlacement
|
|
438
|
+
*/
|
|
439
|
+
const autoPlacement = function (options) {
|
|
440
|
+
if (options === void 0) {
|
|
441
|
+
options = {};
|
|
442
|
+
}
|
|
443
|
+
return {
|
|
444
|
+
name: 'autoPlacement',
|
|
445
|
+
options,
|
|
446
|
+
async fn(state) {
|
|
447
|
+
var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
|
|
448
|
+
const {
|
|
449
|
+
rects,
|
|
450
|
+
middlewareData,
|
|
451
|
+
placement,
|
|
452
|
+
platform,
|
|
453
|
+
elements
|
|
454
|
+
} = state;
|
|
455
|
+
const {
|
|
456
|
+
crossAxis = false,
|
|
457
|
+
alignment,
|
|
458
|
+
allowedPlacements = placements,
|
|
459
|
+
autoAlignment = true,
|
|
460
|
+
...detectOverflowOptions
|
|
461
|
+
} = evaluate(options, state);
|
|
462
|
+
const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
|
|
463
|
+
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
464
|
+
const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
|
|
465
|
+
const currentPlacement = placements$1[currentIndex];
|
|
466
|
+
if (currentPlacement == null) {
|
|
467
|
+
return {};
|
|
468
|
+
}
|
|
469
|
+
const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
|
|
470
|
+
|
|
471
|
+
// Make `computeCoords` start from the right place.
|
|
472
|
+
if (placement !== currentPlacement) {
|
|
473
|
+
return {
|
|
474
|
+
reset: {
|
|
475
|
+
placement: placements$1[0]
|
|
476
|
+
}
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
|
|
480
|
+
const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
|
|
481
|
+
placement: currentPlacement,
|
|
482
|
+
overflows: currentOverflows
|
|
483
|
+
}];
|
|
484
|
+
const nextPlacement = placements$1[currentIndex + 1];
|
|
485
|
+
|
|
486
|
+
// There are more placements to check.
|
|
487
|
+
if (nextPlacement) {
|
|
488
|
+
return {
|
|
489
|
+
data: {
|
|
490
|
+
index: currentIndex + 1,
|
|
491
|
+
overflows: allOverflows
|
|
492
|
+
},
|
|
493
|
+
reset: {
|
|
494
|
+
placement: nextPlacement
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
const placementsSortedByMostSpace = allOverflows.map(d => {
|
|
499
|
+
const alignment = getAlignment(d.placement);
|
|
500
|
+
return [d.placement, alignment && crossAxis ?
|
|
501
|
+
// Check along the mainAxis and main crossAxis side.
|
|
502
|
+
d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
|
|
503
|
+
// Check only the mainAxis.
|
|
504
|
+
d.overflows[0], d.overflows];
|
|
505
|
+
}).sort((a, b) => a[1] - b[1]);
|
|
506
|
+
const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
|
|
507
|
+
// Aligned placements should not check their opposite crossAxis
|
|
508
|
+
// side.
|
|
509
|
+
getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
|
|
510
|
+
const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
|
|
511
|
+
if (resetPlacement !== placement) {
|
|
512
|
+
return {
|
|
513
|
+
data: {
|
|
514
|
+
index: currentIndex + 1,
|
|
515
|
+
overflows: allOverflows
|
|
516
|
+
},
|
|
517
|
+
reset: {
|
|
518
|
+
placement: resetPlacement
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
return {};
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
|
|
422
527
|
/**
|
|
423
528
|
* Optimizes the visibility of the floating element by flipping the `placement`
|
|
424
529
|
* in order to keep it in view when the preferred placement(s) will overflow the
|
|
@@ -1626,6 +1731,34 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
1626
1731
|
if (result) __defProp(target, key, result);
|
|
1627
1732
|
return result;
|
|
1628
1733
|
};
|
|
1734
|
+
const PlacementStrategy = {
|
|
1735
|
+
Flip: "flip",
|
|
1736
|
+
AutoPlacementHorizontal: "auto-placement-horizontal",
|
|
1737
|
+
AutoPlacementVertical: "auto-placement-vertical"
|
|
1738
|
+
};
|
|
1739
|
+
const placementStrategyMiddlewares = {
|
|
1740
|
+
[PlacementStrategy.Flip]: flip(),
|
|
1741
|
+
[PlacementStrategy.AutoPlacementHorizontal]: autoPlacement({
|
|
1742
|
+
allowedPlacements: [
|
|
1743
|
+
"bottom",
|
|
1744
|
+
"top",
|
|
1745
|
+
"bottom-start",
|
|
1746
|
+
"bottom-end",
|
|
1747
|
+
"top-start",
|
|
1748
|
+
"top-end"
|
|
1749
|
+
]
|
|
1750
|
+
}),
|
|
1751
|
+
[PlacementStrategy.AutoPlacementVertical]: autoPlacement({
|
|
1752
|
+
allowedPlacements: [
|
|
1753
|
+
"left",
|
|
1754
|
+
"right",
|
|
1755
|
+
"left-start",
|
|
1756
|
+
"left-end",
|
|
1757
|
+
"right-start",
|
|
1758
|
+
"right-end"
|
|
1759
|
+
]
|
|
1760
|
+
})
|
|
1761
|
+
};
|
|
1629
1762
|
class Popup extends FoundationElement {
|
|
1630
1763
|
constructor() {
|
|
1631
1764
|
super(...arguments);
|
|
@@ -1633,12 +1766,19 @@ class Popup extends FoundationElement {
|
|
|
1633
1766
|
this.dismissible = false;
|
|
1634
1767
|
this.arrow = false;
|
|
1635
1768
|
this.alternate = false;
|
|
1769
|
+
/**
|
|
1770
|
+
* The placement strategy of the popup.
|
|
1771
|
+
*
|
|
1772
|
+
* @public
|
|
1773
|
+
*/
|
|
1774
|
+
this.placementStrategy = PlacementStrategy.Flip;
|
|
1775
|
+
this.animationFrame = false;
|
|
1636
1776
|
this.strategy = "fixed";
|
|
1637
1777
|
}
|
|
1638
1778
|
get #middleware() {
|
|
1639
1779
|
let middleware = [
|
|
1640
1780
|
inline(),
|
|
1641
|
-
|
|
1781
|
+
placementStrategyMiddlewares[this.placementStrategy],
|
|
1642
1782
|
hide(),
|
|
1643
1783
|
size({
|
|
1644
1784
|
apply({ availableWidth, availableHeight, elements }) {
|
|
@@ -1661,6 +1801,12 @@ class Popup extends FoundationElement {
|
|
|
1661
1801
|
#cleanup;
|
|
1662
1802
|
openChanged(_, newValue) {
|
|
1663
1803
|
newValue ? this.$emit("vwc-popup:open") : this.$emit("vwc-popup:close");
|
|
1804
|
+
DOM.queueUpdate(() => this.#updateAutoUpdate());
|
|
1805
|
+
}
|
|
1806
|
+
/**
|
|
1807
|
+
* @internal
|
|
1808
|
+
*/
|
|
1809
|
+
animationFrameChanged() {
|
|
1664
1810
|
this.#updateAutoUpdate();
|
|
1665
1811
|
}
|
|
1666
1812
|
/**
|
|
@@ -1683,7 +1829,10 @@ class Popup extends FoundationElement {
|
|
|
1683
1829
|
this.#cleanup = autoUpdate(
|
|
1684
1830
|
this.anchorEl,
|
|
1685
1831
|
this.popupEl,
|
|
1686
|
-
() => this.updatePosition()
|
|
1832
|
+
() => this.updatePosition(),
|
|
1833
|
+
{
|
|
1834
|
+
animationFrame: this.animationFrame
|
|
1835
|
+
}
|
|
1687
1836
|
);
|
|
1688
1837
|
}
|
|
1689
1838
|
}
|
|
@@ -1762,6 +1911,9 @@ __decorateClass([
|
|
|
1762
1911
|
__decorateClass([
|
|
1763
1912
|
attr({ mode: "fromView" })
|
|
1764
1913
|
], Popup.prototype, "placement");
|
|
1914
|
+
__decorateClass([
|
|
1915
|
+
attr({ mode: "boolean", attribute: "animation-frame" })
|
|
1916
|
+
], Popup.prototype, "animationFrame");
|
|
1765
1917
|
__decorateClass([
|
|
1766
1918
|
attr({ mode: "fromView" })
|
|
1767
1919
|
], Popup.prototype, "strategy");
|
|
@@ -1816,4 +1968,4 @@ const popupRegistries = [
|
|
|
1816
1968
|
];
|
|
1817
1969
|
const registerPopup = registerFactory(popupRegistries);
|
|
1818
1970
|
|
|
1819
|
-
export { Popup as P, popupRegistries as p, registerPopup as r };
|
|
1971
|
+
export { Popup as P, PlacementStrategy as a, popupRegistries as p, registerPopup as r };
|
package/shared/enums.cjs
CHANGED
|
@@ -34,6 +34,11 @@ var Appearance = /* @__PURE__ */ ((Appearance2) => {
|
|
|
34
34
|
Appearance2["Elevated"] = "elevated";
|
|
35
35
|
return Appearance2;
|
|
36
36
|
})(Appearance || {});
|
|
37
|
+
var IconDecoration = /* @__PURE__ */ ((IconDecoration2) => {
|
|
38
|
+
IconDecoration2["Filled"] = "filled";
|
|
39
|
+
IconDecoration2["Outlined"] = "outlined";
|
|
40
|
+
return IconDecoration2;
|
|
41
|
+
})(IconDecoration || {});
|
|
37
42
|
var Size = /* @__PURE__ */ ((Size2) => {
|
|
38
43
|
Size2["UltraCondensed"] = "ultra-condensed";
|
|
39
44
|
Size2["SuperCondensed"] = "super-condensed";
|
|
@@ -89,6 +94,7 @@ exports.Appearance = Appearance;
|
|
|
89
94
|
exports.AriaLive = AriaLive;
|
|
90
95
|
exports.Connotation = Connotation;
|
|
91
96
|
exports.ConnotationDecorative = ConnotationDecorative;
|
|
97
|
+
exports.IconDecoration = IconDecoration;
|
|
92
98
|
exports.LayoutSize = LayoutSize;
|
|
93
99
|
exports.MediaSkipBy = MediaSkipBy;
|
|
94
100
|
exports.Position = Position;
|