@vollowx/seele 0.13.6 → 0.13.8
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/README.md +32 -13
- package/package.json +1 -1
- package/src/all.d.ts +2 -0
- package/src/all.js +2 -0
- package/src/base/autocomplete.d.ts +1 -0
- package/src/base/autocomplete.js +7 -13
- package/src/base/button.d.ts +4 -2
- package/src/base/button.js +15 -10
- package/src/base/checkbox.js +3 -8
- package/src/base/controllers/popover-controller.js +1 -1
- package/src/base/experimental/popup-styles.css.js +2 -0
- package/src/base/experimental/popup.d.ts +38 -0
- package/src/base/experimental/popup.js +276 -0
- package/src/base/menu.d.ts +2 -0
- package/src/base/menu.js +2 -0
- package/src/base/mixins/button-toggle-mixin.d.ts +7 -0
- package/src/base/mixins/button-toggle-mixin.js +102 -0
- package/src/base/mixins/internals-attached.d.ts +2 -0
- package/src/base/mixins/internals-attached.js +5 -0
- package/src/base/toggle-button.d.ts +6 -45
- package/src/base/toggle-button.js +6 -135
- package/src/core/ensure-ready.d.ts +1 -0
- package/src/core/ensure-ready.js +15 -0
- package/src/m3/autocomplete/autocomplete.d.ts +1 -0
- package/src/m3/autocomplete/autocomplete.js +1 -0
- package/src/m3/badge/badge.d.ts +1 -0
- package/src/m3/badge/badge.js +4 -0
- package/src/m3/button/common-button-toggle.d.ts +4 -10
- package/src/m3/button/common-button-toggle.js +6 -40
- package/src/m3/button/icon-button-toggle.d.ts +4 -6
- package/src/m3/button/icon-button-toggle.js +6 -33
- package/src/m3/button/shared-button-styles.css.js +1 -1
- package/src/m3/button/shared-button-toggle-styles.css.js +1 -1
- package/src/m3/checkbox/checkbox-styles.css.js +1 -1
- package/src/m3/checkbox/checkbox.d.ts +1 -1
- package/src/m3/dialog/dialog-styles.css.js +1 -1
- package/src/m3/experimental/popup-styles.css.js +2 -0
- package/src/m3/experimental/popup.d.ts +9 -0
- package/src/m3/experimental/popup.js +11 -0
- package/src/m3/fab/fab-styles.css.js +1 -1
- package/src/m3/field/field-styles.css.js +1 -1
- package/src/m3/field/filled-field-styles.css.js +1 -1
- package/src/m3/focus-ring/focus-ring-styles.css.js +1 -1
- package/src/m3/list/list-item-styles.css.js +1 -1
- package/src/m3/list/list-item.d.ts +4 -2
- package/src/m3/list/list-item.js +2 -0
- package/src/m3/menu/menu-styles.css.js +1 -1
- package/src/m3/radio/radio-styles.css.js +1 -1
- package/src/m3/ripple/ripple-styles.css.js +1 -1
- package/src/m3/ripple/ripple.d.ts +1 -12
- package/src/m3/ripple/ripple.js +8 -9
- package/src/m3/select/select.d.ts +1 -0
- package/src/m3/select/select.js +1 -0
- package/src/m3/switch/switch-styles.css.js +1 -1
- package/src/m3/switch/switch.d.ts +3 -2
- package/src/m3/switch/switch.js +11 -10
- package/src/m3/tab/tabs-styles.css.js +1 -1
- package/src/m3/toolbar/toolbar-styles.css.js +1 -1
- package/src/win98/button/button-styles.css.js +1 -1
- package/src/m3/dialog/dialog-spring.d.ts +0 -45
- package/src/m3/dialog/dialog-spring.js +0 -176
- package/src/win98/button/radio.d.ts +0 -3
- package/src/win98/button/radio.js +0 -9
- package/src/win98/radio/radio.d.ts +0 -3
- package/src/win98/radio/radio.js +0 -9
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement } from 'lit/decorators.js';
|
|
3
|
+
import { Popup } from '../../base/experimental/popup.js';
|
|
4
|
+
import { popupStyles } from './popup-styles.css.js';
|
|
5
|
+
let M3Popup = class M3Popup extends Popup {
|
|
6
|
+
static { this.styles = [...super.styles, popupStyles]; }
|
|
7
|
+
};
|
|
8
|
+
M3Popup = __decorate([
|
|
9
|
+
customElement('md-popup')
|
|
10
|
+
], M3Popup);
|
|
11
|
+
export { M3Popup };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const fabStyles = css`:host{--md-focus-ring-shape:var(--_border-radius);--_text-color:var(--md-sys-color-on-primary);--_background-color:var(--md-sys-color-primary);--_size:56px;--_border-radius:16px;--_icon-size:24px;background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:var(--_border-radius);box-shadow:var(--md-sys-elevation-shadow-3);box-sizing:border-box;color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);cursor:pointer;font:var(--md-sys-typography-label-large);height:var(--_size);min-width:var(--_size);padding-inline:calc((var(--_size) - var(--_icon-size)) / 2);-webkit-tap-highlight-color:transparent;transition:box-shadow var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default);-webkit-user-select:none;user-select:none;vertical-align:middle;outline:0;justify-content:center;align-items:center;gap:8px;display:inline-flex;position:relative}md-ripple,md-focus-ring{position:absolute}:host([size=m]){--_size:80px;--_border-radius:20px;--_icon-size:28px}:host([size=l]){--_size:96px;--_border-radius:28px;--_icon-size:36px}:host([color=primary-container]){--_text-color:var(--md-sys-color-on-primary-container);--_background-color:var(--md-sys-color-primary-container)}:host([color=secondary-container]){--_text-color:var(--md-sys-color-on-secondary-container);--_background-color:var(--md-sys-color-secondary-container)}:host([color=tertiary-container]){--_text-color:var(--md-sys-color-on-tertiary-container);--_background-color:var(--md-sys-color-tertiary-container)}:host([color=secondary]){--_text-color:var(--md-sys-color-on-secondary);--_background-color:var(--md-sys-color-secondary)}:host([color=tertiary]){--_text-color:var(--md-sys-color-on-tertiary);--_background-color:var(--md-sys-color-tertiary)}:host([color=surface]){--_text-color:var(--md-sys-color-primary);--_background-color:var(--md-sys-color-surface-container-high)}:host(:disabled){--_background-color:var(--md-sys-color-on-surface);--_background-opacity:12%;--_text-color:var(--md-sys-color-on-surface);--_text-opacity:38%;box-shadow:none;pointer-events:none}@media (hover:hover) and (pointer:fine){:host(:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-4)}}::slotted(:not([slot=label])){fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em}::slotted([slot=label]){margin-inline:4px}`;
|
|
2
|
+
export const fabStyles = css`:host{--md-focus-ring-shape:var(--_border-radius);--_text-color:var(--md-sys-color-on-primary);--_background-color:var(--md-sys-color-primary);--_size:56px;--_border-radius:16px;--_icon-size:24px;background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:var(--_border-radius);box-shadow:var(--md-sys-elevation-shadow-3);box-sizing:border-box;color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);cursor:pointer;font:var(--md-sys-typography-label-large);height:var(--_size);min-width:var(--_size);padding-inline:calc((var(--_size) - var(--_icon-size)) / 2);-webkit-tap-highlight-color:transparent;transition:box-shadow var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default);-webkit-user-select:none;user-select:none;vertical-align:middle;outline:0;justify-content:center;align-items:center;gap:8px;display:inline-flex;position:relative}md-ripple,md-focus-ring{position:absolute}:host([size=m]){--_size:80px;--_border-radius:20px;--_icon-size:28px}:host([size=l]){--_size:96px;--_border-radius:28px;--_icon-size:36px}:host([color=primary-container]){--_text-color:var(--md-sys-color-on-primary-container);--_background-color:var(--md-sys-color-primary-container)}:host([color=secondary-container]){--_text-color:var(--md-sys-color-on-secondary-container);--_background-color:var(--md-sys-color-secondary-container)}:host([color=tertiary-container]){--_text-color:var(--md-sys-color-on-tertiary-container);--_background-color:var(--md-sys-color-tertiary-container)}:host([color=secondary]){--_text-color:var(--md-sys-color-on-secondary);--_background-color:var(--md-sys-color-secondary)}:host([color=tertiary]){--_text-color:var(--md-sys-color-on-tertiary);--_background-color:var(--md-sys-color-tertiary)}:host([color=surface]){--_text-color:var(--md-sys-color-primary);--_background-color:var(--md-sys-color-surface-container-high)}:host(:disabled){--_background-color:var(--md-sys-color-on-surface);--_background-opacity:12%;--_text-color:var(--md-sys-color-on-surface);--_text-opacity:38%;box-shadow:none;pointer-events:none}@media (hover:hover) and (pointer:fine){:host(:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-4)}}::slotted(:not([slot=label])){fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em}::slotted([slot=label]){margin-inline:4px}@media (forced-colors:active){:host{forced-color-adjust:none;color:buttontext;background:buttonface;border:1px solid buttonborder}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const fieldStyles = css`:host{--_min-height:56px;--_padding-top:16px;--_padding-bottom:16px;cursor:text;-webkit-user-select:none;user-select:none;vertical-align:top;flex-direction:column;display:inline-flex;position:relative}.container{box-sizing:border-box;min-height:var(--_min-height);flex:1;align-items:center;display:flex;position:relative}:host([disabled]){opacity:.38;pointer-events:none}.start,.end{color:var(--md-sys-color-on-surface-variant);justify-content:center;align-items:center;min-width:48px;display:flex}.start[hidden],.end[hidden]{display:none}.middle{flex-direction:column;flex:1;justify-content:center;height:100%;display:flex;position:relative;overflow:hidden}.label{font:var(--md-sys-typography-body-large);pointer-events:none;text-overflow:ellipsis;transform-origin:0 0;max-width:calc(100% - 24px);transition:margin-top var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default), font-size var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default);white-space:nowrap}.input-wrapper{padding-block:var(--_padding-top) var(--_padding-bottom);flex:1;align-items:center;display:flex}:host([haslabel]:not([focused]):not([populated])) ::slotted(input:placeholder-shown),:host([haslabel]:not([focused]):not([populated])) ::slotted(textarea:placeholder-shown){opacity:0}::slotted(*){caret-color:var(--md-sys-color-primary);font:var(--md-sys-typography-body-large)}.supporting-text{color:var(--md-sys-color-on-surface-variant);font:var(--md-sys-typography-body-small);padding-inline:16px;padding-top:4px}:host([error]) ::slotted(*){caret-color:var(--md-sys-color-error)}:host([error]) .supporting-text{color:var(--md-sys-color-error)}`;
|
|
2
|
+
export const fieldStyles = css`:host{--_min-height:56px;--_padding-top:16px;--_padding-bottom:16px;cursor:text;-webkit-user-select:none;user-select:none;vertical-align:top;flex-direction:column;display:inline-flex;position:relative}.container{box-sizing:border-box;min-height:var(--_min-height);flex:1;align-items:center;display:flex;position:relative}:host([disabled]){opacity:.38;pointer-events:none}.start,.end{color:var(--md-sys-color-on-surface-variant);justify-content:center;align-items:center;min-width:48px;display:flex}.start[hidden],.end[hidden]{display:none}.middle{flex-direction:column;flex:1;justify-content:center;height:100%;display:flex;position:relative;overflow:hidden}.label{font:var(--md-sys-typography-body-large);pointer-events:none;text-overflow:ellipsis;transform-origin:0 0;max-width:calc(100% - 24px);transition:margin-top var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default), font-size var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default);white-space:nowrap}.input-wrapper{padding-block:var(--_padding-top) var(--_padding-bottom);flex:1;align-items:center;display:flex}:host([haslabel]:not([focused]):not([populated])) ::slotted(input:placeholder-shown),:host([haslabel]:not([focused]):not([populated])) ::slotted(textarea:placeholder-shown){opacity:0}::slotted(*){caret-color:var(--md-sys-color-primary);font:var(--md-sys-typography-body-large)}.supporting-text{color:var(--md-sys-color-on-surface-variant);font:var(--md-sys-typography-body-small);padding-inline:16px;padding-top:4px}:host([error]) ::slotted(*){caret-color:var(--md-sys-color-error)}:host([error]) .supporting-text{color:var(--md-sys-color-error)}@media (forced-colors:active){:host{--md-sys-color-primary:Highlight;--md-sys-color-error:VisitedText}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const filledFieldStyles = css`.container{--_indicator-height:1px;--_indicator-color:var(--md-sys-color-on-surface-variant);background-color:var(--md-sys-color-surface-container-highest);box-shadow:inset 0 calc(var(--_indicator-height) * -1) 0 0 var(--_indicator-color);transition:box-shadow var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast);border-radius:4px 4px 0 0;padding:0 16px}:host([haslabel]){--_padding-top:24px;--_padding-bottom:8px}.label{color:var(--md-sys-color-on-surface-variant);margin-top:calc((var(--_padding-top) + var(--_padding-bottom)) / 2);position:absolute;top:0}:host([focused]) .label{color:var(--md-sys-color-primary)}:host([error]) .label{color:var(--md-sys-color-error)}:host([populated]) .label,:host([focused]) .label{margin-top:calc(var(--_padding-top) / 2 - .75em);font-size:.75em}:host([focused]) .container{--_indicator-height:3px;--_indicator-color:var(--md-sys-color-primary)}:host([error]) .container,:host([error][focused]) .container{--_indicator-color:var(--md-sys-color-error)}`;
|
|
2
|
+
export const filledFieldStyles = css`.container{--_indicator-height:1px;--_indicator-color:var(--md-sys-color-on-surface-variant);background-color:var(--md-sys-color-surface-container-highest);box-shadow:inset 0 calc(var(--_indicator-height) * -1) 0 0 var(--_indicator-color);transition:box-shadow var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast);border-radius:4px 4px 0 0;padding:0 16px}:host([haslabel]){--_padding-top:24px;--_padding-bottom:8px}.label{color:var(--md-sys-color-on-surface-variant);margin-top:calc((var(--_padding-top) + var(--_padding-bottom)) / 2);position:absolute;top:0}:host([focused]) .label{color:var(--md-sys-color-primary)}:host([error]) .label{color:var(--md-sys-color-error)}:host([populated]) .label,:host([focused]) .label{margin-top:calc(var(--_padding-top) / 2 - .75em);font-size:.75em}:host([focused]) .container{--_indicator-height:3px;--_indicator-color:var(--md-sys-color-primary)}:host([error]) .container,:host([error][focused]) .container{--_indicator-color:var(--md-sys-color-error)}@media (forced-colors:active){:host{--md-sys-color-primary:Highlight;outline:1px solid canvastext}:host([focused]){outline-color:highlight}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const focusRingStyles = css`:host{animation-delay:0s, calc(var(--md-focus-ring-duration,.6s) * .25);animation-duration:calc(var(--md-focus-ring-duration,.6s) * .25), calc(var(--md-focus-ring-duration,.6s) * .75);box-sizing:border-box;color:var(--md-focus-ring-color,var(--md-sys-color-secondary));pointer-events:none;animation-timing-function:cubic-bezier(.2,0,0,1),cubic-bezier(.2,0,0,1);display:none;position:absolute}:host(:state(visible)){display:flex}:host(:not([inward])){box-shadow:0 0 0 var(--md-focus-ring-width,3px) currentColor;inset:calc(-1 * var(--md-focus-ring-outward-offset,2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-end-end-radius:calc(var(--md-focus-ring-shape-end-end,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));animation-name:outward-grow,outward-shrink}:host([inward]){box-shadow:inset 0 0 0 var(--md-focus-ring-width,3px) currentColor;inset:var(--md-focus-ring-inward-offset,0px);border-start-start-radius:calc(var(--md-focus-ring-shape-start-start,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-end-end-radius:calc(var(--md-focus-ring-shape-end-end,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));animation-name:inward-grow,inward-shrink}@keyframes outward-grow{0%{box-shadow:0 0}to{box-shadow:0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes outward-shrink{0%{box-shadow:0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes inward-grow{0%{box-shadow:inset 0 0}to{box-shadow:inset 0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes inward-shrink{0%{box-shadow:inset 0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@media (prefers-reduced-motion){:host{animation:none}}`;
|
|
2
|
+
export const focusRingStyles = css`:host{animation-delay:0s, calc(var(--md-focus-ring-duration,.6s) * .25);animation-duration:calc(var(--md-focus-ring-duration,.6s) * .25), calc(var(--md-focus-ring-duration,.6s) * .75);box-sizing:border-box;color:var(--md-focus-ring-color,var(--md-sys-color-secondary));pointer-events:none;animation-timing-function:cubic-bezier(.2,0,0,1),cubic-bezier(.2,0,0,1);display:none;position:absolute}:host(:state(visible)){display:flex}:host(:not([inward])){box-shadow:0 0 0 var(--md-focus-ring-width,3px) currentColor;inset:calc(-1 * var(--md-focus-ring-outward-offset,2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-end-end-radius:calc(var(--md-focus-ring-shape-end-end,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start,var(--md-focus-ring-shape,9999px)) + var(--md-focus-ring-outward-offset,2px));animation-name:outward-grow,outward-shrink}:host([inward]){box-shadow:inset 0 0 0 var(--md-focus-ring-width,3px) currentColor;inset:var(--md-focus-ring-inward-offset,0px);border-start-start-radius:calc(var(--md-focus-ring-shape-start-start,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-end-end-radius:calc(var(--md-focus-ring-shape-end-end,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start,var(--md-focus-ring-shape,9999px)) - var(--md-focus-ring-inward-offset,0px));animation-name:inward-grow,inward-shrink}@keyframes outward-grow{0%{box-shadow:0 0}to{box-shadow:0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes outward-shrink{0%{box-shadow:0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes inward-grow{0%{box-shadow:inset 0 0}to{box-shadow:inset 0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@keyframes inward-shrink{0%{box-shadow:inset 0 0 0 var(--md-focus-ring-active-width,8px) currentColor}}@media (prefers-reduced-motion){:host{animation:none}}@media (forced-colors:active){:host{color:highlight}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const listItemStyles = css`:host{--md-focus-ring-shape:12px;--md-focus-ring-inward-offset:-3px;background-color:var(--_background,transparent);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:4px;outline:0;display:flex}:host(:not([hidden]):first-of-type){border-radius:12px 12px 4px 4px}:host(:not([hidden]):last-of-type){border-radius:4px 4px 12px 12px}:host(:state(selected)){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container);border-radius:12px}:host(:disabled){cursor:default;opacity:.3;pointer-events:none}md-item,md-item div[slot=container]{border-radius:inherit}`;
|
|
2
|
+
export const listItemStyles = css`:host{--md-focus-ring-shape:12px;--md-focus-ring-inward-offset:-3px;background-color:var(--_background,transparent);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:4px;outline:0;display:flex}:host(:not([hidden]):first-of-type){border-radius:12px 12px 4px 4px}:host(:not([hidden]):last-of-type){border-radius:4px 4px 12px 12px}:host(:state(selected)){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container);border-radius:12px}:host(:disabled){cursor:default;opacity:.3;pointer-events:none}md-item,md-item div[slot=container]{border-radius:inherit}@media (forced-colors:active){:host{forced-color-adjust:none;color:canvastext}:host(:hover),:host(:state(selected)){color:highlighttext;background:highlight}}`;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ListItem } from '../../base/list-item.js';
|
|
2
2
|
import '../item/item.js';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import '../ripple/ripple.js';
|
|
4
|
+
import '../focus-ring/focus-ring.js';
|
|
5
|
+
import type { M3Ripple } from '../ripple/ripple.js';
|
|
6
|
+
import type { M3FocusRing } from '../focus-ring/focus-ring.js';
|
|
5
7
|
/**
|
|
6
8
|
* @tag md-list-item
|
|
7
9
|
*
|
package/src/m3/list/list-item.js
CHANGED
|
@@ -3,6 +3,8 @@ import { html } from 'lit';
|
|
|
3
3
|
import { customElement, query } from 'lit/decorators.js';
|
|
4
4
|
import { ListItem } from '../../base/list-item.js';
|
|
5
5
|
import '../item/item.js';
|
|
6
|
+
import '../ripple/ripple.js';
|
|
7
|
+
import '../focus-ring/focus-ring.js';
|
|
6
8
|
import { listItemStyles } from './list-item-styles.css.js';
|
|
7
9
|
/**
|
|
8
10
|
* @tag md-list-item
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const menuStyles = css`:host{min-width:112px;display:contents}[part=menu]{background:var(--md-sys-color-surface-container);box-shadow:var(--md-sys-elevation-shadow-2);box-sizing:border-box;color:var(--md-sys-color-on-surface);height:inherit;max-height:var(--md-menu-max-height,inherit);max-width:inherit;min-width:inherit;opacity:0;-webkit-user-select:none;user-select:none;z-index:1000;border-radius:16px;outline:0;padding:4px;position:absolute;inset:auto;overflow-y:auto;transform:scaleY(.35)}:host([color=vibrant]){& [part=menu]{--md-divider-color:var(--md-sys-color-tertiary);--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}& ::slotted([selected]){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary);background-color:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}}:host([alignstrategy=fixed]) [part=menu]{position:fixed}[part=items]{opacity:0;flex-direction:column;gap:2px;display:flex}:host(:state(closed)) [part=menu]{display:none}:host(:state(opening)){& [part=menu]{opacity:1;transition:opacity 67ms, transform var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);display:block;transform:scaleY(1)}& [part=items]{opacity:1;transition:opacity 67ms linear 67ms}}:host(:state(opened)){& [part=menu]{opacity:1;display:block;transform:scaleY(1)}& [part=items]{opacity:1}}:host(:state(closing)){& [part=menu]{opacity:0;transition:opacity var(--md-sys-motion-effects-fast-duration), transform var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);transform:scaleY(.35)}& [part=items]{opacity:0;transition:opacity 67ms}}::slotted(md-divider){margin-block:6px}`;
|
|
2
|
+
export const menuStyles = css`:host{min-width:112px;display:contents}[part=menu]{background:var(--md-sys-color-surface-container);box-shadow:var(--md-sys-elevation-shadow-2);box-sizing:border-box;color:var(--md-sys-color-on-surface);height:inherit;max-height:var(--md-menu-max-height,inherit);max-width:inherit;min-width:inherit;opacity:0;-webkit-user-select:none;user-select:none;z-index:1000;border-radius:16px;outline:0;padding:4px;position:absolute;inset:auto;overflow-y:auto;transform:scaleY(.35)}:host([color=vibrant]){& [part=menu]{--md-divider-color:var(--md-sys-color-tertiary);--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}& ::slotted([selected]){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary);background-color:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}}:host([alignstrategy=fixed]) [part=menu]{position:fixed}[part=items]{opacity:0;flex-direction:column;gap:2px;display:flex}:host(:state(closed)) [part=menu]{display:none}:host(:state(opening)){& [part=menu]{opacity:1;transition:opacity 67ms, transform var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);display:block;transform:scaleY(1)}& [part=items]{opacity:1;transition:opacity 67ms linear 67ms}}:host(:state(opened)){& [part=menu]{opacity:1;display:block;transform:scaleY(1)}& [part=items]{opacity:1}}:host(:state(closing)){& [part=menu]{opacity:0;transition:opacity var(--md-sys-motion-effects-fast-duration), transform var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);transform:scaleY(.35)}& [part=items]{opacity:0;transition:opacity 67ms}}::slotted(md-divider){margin-block:6px}@media (forced-colors:active){[part=menu]{border:1px solid canvastext}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const radioStyles = css`:host{--_d:var(--md-sys-motion-effects-default-duration);--_default:var(--_d) var(--md-sys-motion-effects-default);--_slow:var(--md-sys-motion-effects-slow-duration) var(--md-sys-motion-effects-slow);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:20px;outline:0;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex;position:relative}:host:before,.middle,:host:after{content:"";box-sizing:border-box;border-radius:50%;position:absolute;animation-fill-mode:forwards!important}:host:before{z-index:1;background-color:var(--md-sys-color-on-surface-variant);width:20px;height:20px;transition:background var(--_default)}.middle{z-index:2;background-color:var(--md-sys-color-surface);width:16px;height:16px}:host:after{z-index:3;background-color:var(--md-sys-color-primary);width:10px;height:10px;transform:scale(0)}:host(:state(unchecking)) .middle{animation:uncheck-mid-2 var(--_slow) var(--_d)}:host(:state(unchecking)):after{animation:uncheck-inner-1 var(--_default), uncheck-inner-2 var(--_slow) var(--_d)}:host([checked]):before{background-color:var(--md-sys-color-primary)}:host([checked]):after{transform:scale(1)}:host(:state(checking)) .middle{animation:check-mid-1 var(--_default), check-mid-2 var(--_slow) var(--_d)}:host(:state(checking)):after{animation:check-inner-1 var(--_default), check-inner-2 var(--_slow) var(--_d)}@keyframes uncheck-mid-2{0%,to{z-index:4}0%{transform:scale(0)}to{transform:scale(1)}}@keyframes uncheck-inner-1{0%{background-color:var(--md-sys-color-primary);transform:scale(1)}to{background-color:var(--md-sys-color-on-surface-variant);transform:scale(1.6)}}@keyframes uncheck-inner-2{0%{transform:scale(1.6)}to{transform:scale(1.6)}}@keyframes check-mid-1{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes check-mid-2{0%{transform:scale(.625)}to{transform:scale(1)}}@keyframes check-inner-1{0%,to{transform:scale(0)}}@keyframes check-inner-2{0%,to{transform:scale(1)}}:host([disabled]){pointer-events:none}:host([disabled]):before,:host([disabled]):after{background:color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)}`;
|
|
2
|
+
export const radioStyles = css`:host{--_d:var(--md-sys-motion-effects-default-duration);--_default:var(--_d) var(--md-sys-motion-effects-default);--_slow:var(--md-sys-motion-effects-slow-duration) var(--md-sys-motion-effects-slow);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:20px;outline:0;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex;position:relative}:host:before,.middle,:host:after{content:"";box-sizing:border-box;border-radius:50%;position:absolute;animation-fill-mode:forwards!important}:host:before{z-index:1;background-color:var(--md-sys-color-on-surface-variant);width:20px;height:20px;transition:background var(--_default)}.middle{z-index:2;background-color:var(--md-sys-color-surface);width:16px;height:16px}:host:after{z-index:3;background-color:var(--md-sys-color-primary);width:10px;height:10px;transform:scale(0)}:host(:state(unchecking)) .middle{animation:uncheck-mid-2 var(--_slow) var(--_d)}:host(:state(unchecking)):after{animation:uncheck-inner-1 var(--_default), uncheck-inner-2 var(--_slow) var(--_d)}:host([checked]):before{background-color:var(--md-sys-color-primary)}:host([checked]):after{transform:scale(1)}:host(:state(checking)) .middle{animation:check-mid-1 var(--_default), check-mid-2 var(--_slow) var(--_d)}:host(:state(checking)):after{animation:check-inner-1 var(--_default), check-inner-2 var(--_slow) var(--_d)}@keyframes uncheck-mid-2{0%,to{z-index:4}0%{transform:scale(0)}to{transform:scale(1)}}@keyframes uncheck-inner-1{0%{background-color:var(--md-sys-color-primary);transform:scale(1)}to{background-color:var(--md-sys-color-on-surface-variant);transform:scale(1.6)}}@keyframes uncheck-inner-2{0%{transform:scale(1.6)}to{transform:scale(1.6)}}@keyframes check-mid-1{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes check-mid-2{0%{transform:scale(.625)}to{transform:scale(1)}}@keyframes check-inner-1{0%,to{transform:scale(0)}}@keyframes check-inner-2{0%,to{transform:scale(1)}}:host([disabled]){pointer-events:none}:host([disabled]):before,:host([disabled]):after{background:color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)}@media (forced-colors:active){:host{--md-sys-color-primary:SelectedItem;--md-sys-color-on-surface-variant:CanvasText}:host(:disabled):before,:host(:disabled):after{background:graytext}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const rippleStyles = css`:host{border-radius:inherit;pointer-events:none;display:block;position:absolute;inset:0;overflow:hidden}[part~=ripple]{background-image:radial-gradient(closest-side, var(--
|
|
2
|
+
export const rippleStyles = css`:host{--_color:var(--md-ripple-color,currentColor);border-radius:inherit;pointer-events:none;display:block;position:absolute;inset:0;overflow:hidden}[part~=ripple]{background-image:radial-gradient(closest-side, var(--_color) max(calc(100% - 70px), 65%), transparent 100%);position:absolute;top:0;left:0}:host:before{background-color:var(--_color);border-radius:inherit;content:"";opacity:0;transition:opacity 67ms linear;display:block;position:absolute;inset:0}:host(:state(hover)):before{opacity:.08}@media (forced-colors:active){:host{--_color:var(--md-ripple-color,Highlight)}}`;
|
|
@@ -20,20 +20,9 @@ export declare class M3Ripple extends M3Ripple_base {
|
|
|
20
20
|
handlePointerDown: (e: PointerEvent) => void;
|
|
21
21
|
handlePointerUp: () => void;
|
|
22
22
|
handleControlChange(prev?: HTMLElement | null, next?: HTMLElement | HTMLInputElement | null): void;
|
|
23
|
-
calculateRipple(e?: MouseEvent | null): {
|
|
24
|
-
startCenter: {
|
|
25
|
-
x: number;
|
|
26
|
-
y: number;
|
|
27
|
-
};
|
|
28
|
-
endCenter: {
|
|
29
|
-
x: number;
|
|
30
|
-
y: number;
|
|
31
|
-
};
|
|
32
|
-
radius: number;
|
|
33
|
-
};
|
|
34
23
|
addRipple(e?: MouseEvent | null): void;
|
|
35
24
|
removeRipple(ripple: HTMLSpanElement): void;
|
|
36
|
-
|
|
25
|
+
keepLastRipple(): void;
|
|
37
26
|
}
|
|
38
27
|
declare global {
|
|
39
28
|
interface HTMLElementTagNameMap {
|
package/src/m3/ripple/ripple.js
CHANGED
|
@@ -32,7 +32,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
32
32
|
if ((e.key === 'Enter' && this.enterBehavior === 'always') ||
|
|
33
33
|
(e.key === ' ' && this.spaceBehavior === 'always')) {
|
|
34
34
|
this.addRipple();
|
|
35
|
-
this.
|
|
35
|
+
this.keepLastRipple();
|
|
36
36
|
}
|
|
37
37
|
else if (e.key === ' ' && this.spaceBehavior === 'once') {
|
|
38
38
|
if (!this.#spaceKeyDown)
|
|
@@ -43,7 +43,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
43
43
|
this.handleKeyUp = (e) => {
|
|
44
44
|
if (e.key === ' ' && this.spaceBehavior === 'once') {
|
|
45
45
|
this.#spaceKeyDown = false;
|
|
46
|
-
this.
|
|
46
|
+
this.keepLastRipple();
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
this.handlePointerEnter = (e) => {
|
|
@@ -56,7 +56,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
56
56
|
this.handlePointerLeave = () => {
|
|
57
57
|
this[internals].states.delete('hover');
|
|
58
58
|
if (this.#pointerDown && this.clickBehavior === 'always')
|
|
59
|
-
this.
|
|
59
|
+
this.keepLastRipple();
|
|
60
60
|
};
|
|
61
61
|
this.handlePointerDown = (e) => {
|
|
62
62
|
if (e.pointerType === 'mouse')
|
|
@@ -65,7 +65,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
65
65
|
document.addEventListener('touchcancel', this.handlePointerUp);
|
|
66
66
|
document.addEventListener('touchend', this.handlePointerUp);
|
|
67
67
|
document.addEventListener('touchmove', this.handlePointerUp);
|
|
68
|
-
if (e.button
|
|
68
|
+
if (e.button !== 0)
|
|
69
69
|
return;
|
|
70
70
|
if (this.clickBehavior === 'always')
|
|
71
71
|
this.addRipple(e);
|
|
@@ -76,7 +76,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
76
76
|
document.removeEventListener('touchcancel', this.handlePointerUp);
|
|
77
77
|
document.removeEventListener('touchend', this.handlePointerUp);
|
|
78
78
|
document.removeEventListener('touchmove', this.handlePointerUp);
|
|
79
|
-
this.
|
|
79
|
+
this.keepLastRipple();
|
|
80
80
|
};
|
|
81
81
|
this[internals].ariaHidden = 'true';
|
|
82
82
|
}
|
|
@@ -111,7 +111,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
-
calculateRipple(e = null) {
|
|
114
|
+
#calculateRipple(e = null) {
|
|
115
115
|
const containerRect = this.getBoundingClientRect();
|
|
116
116
|
const containerMiddle = {
|
|
117
117
|
x: containerRect.width / 2,
|
|
@@ -134,7 +134,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
134
134
|
return { startCenter, endCenter, radius };
|
|
135
135
|
}
|
|
136
136
|
addRipple(e = null) {
|
|
137
|
-
const { startCenter, endCenter, radius } = this
|
|
137
|
+
const { startCenter, endCenter, radius } = this.#calculateRipple(e);
|
|
138
138
|
const diameter = radius * 2 + 'px';
|
|
139
139
|
const translateStart = `${startCenter.x - radius}px ${startCenter.y - radius}px`;
|
|
140
140
|
const translateEnd = `${endCenter.x - radius}px ${endCenter.y - radius}px`;
|
|
@@ -156,7 +156,6 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
156
156
|
scale: [0.2, 1.35],
|
|
157
157
|
}, {
|
|
158
158
|
duration: PRESS_GROW_MS,
|
|
159
|
-
// TODO: Control by global variables
|
|
160
159
|
easing: 'cubic-bezier(0.2, 0, 0, 1)',
|
|
161
160
|
fill: 'forwards',
|
|
162
161
|
});
|
|
@@ -174,7 +173,7 @@ let M3Ripple = class M3Ripple extends Attachable(InternalsAttached(LitElement))
|
|
|
174
173
|
animation.onfinish = animation.oncancel = () => ripple.remove();
|
|
175
174
|
}, Math.max(MINIMUM_PRESS_MS - (Date.now() - this.#lastTime), 0));
|
|
176
175
|
}
|
|
177
|
-
|
|
176
|
+
keepLastRipple() {
|
|
178
177
|
for (const ripple of this.$ripples.splice(0))
|
|
179
178
|
this.removeRipple(ripple);
|
|
180
179
|
}
|
package/src/m3/select/select.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import { property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import '../menu/menu.js';
|
|
4
5
|
import { Select } from '../../base/select.js';
|
|
5
6
|
/**
|
|
6
7
|
* @fires {Event} change - Fired when the selected value has changed.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const switchStyles = css`:host{--_outline-color:var(--md-sys-color-outline);--_track-color:var(--md-sys-color-surface-container-highest);--_thumb-color:var(--md-sys-color-outline);--_icon-color:var(--md-sys-color-surface-container-highest);--_ripple-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_track-color) var(--_track-opacity,100%), transparent);border-color:color-mix(in srgb, var(--_outline-color) var(--_outline-opacity,100%), transparent);box-sizing:border-box;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:none;height:32px;transition:background-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast), border-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast);-webkit-user-select:none;user-select:none;vertical-align:top;border-style:solid;border-width:2px;border-radius:9999px;outline:0;place-content:center;place-items:center;width:52px;display:inline-grid;position:relative}:host(:state(checked)){--_outline-color:var(--md-sys-color-primary);--_track-color:var(--md-sys-color-primary);--_thumb-color:var(--md-sys-color-on-primary);--_icon-color:var(--md-sys-color-on-primary-container);--_ripple-color:var(--md-sys-color-primary)}:host(:disabled){--_outline-color:var(--md-sys-color-on-surface);--_outline-opacity:12%;--_track-color:var(--md-sys-color-surface-variant);--_track-opacity:12%;--_thumb-color:var(--md-sys-color-on-surface);--_thumb-opacity:38%;--_icon-color:var(--md-sys-color-surface-container-highest);cursor:default;pointer-events:none}:host(:disabled:state(checked)){--_outline-color:var(--md-sys-color-surface);--_track-color:var(--md-sys-color-on-surface);--_thumb-color:var(--md-sys-color-surface);--_thumb-opacity:100%;--_icon-color:var(--md-sys-color-on-surface)}:host([icons]:not(:state(checked)):not([checkedicononly])) [part~=icon-off],:host([icons]:state(checked)) [part~=icon-on]{--_icon-opacity:100%}:host([icons]:state(checked):disabled) [part~=icon-on]{--_icon-opacity:38%}@media (hover:hover) and (pointer:fine){:host(:hover){--_thumb-color:var(--md-sys-color-on-surface-variant)}:host(:state(checked):hover){--_thumb-color:var(--md-sys-color-primary-container)}}@media (forced-colors:active){:host{forced-color-adjust:none}}[part~=thumb]{--_thumb-diameter:16px;--_thumb-diff-default:20px;background-color:color-mix(in srgb, var(--_thumb-color) var(--_thumb-opacity,100%), transparent);height:var(--_thumb-diameter);transition:background-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast), width var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast), height var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast), margin var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast);width:var(--_thumb-diameter);z-index:1;border-radius:50%;place-content:center;place-items:center;margin-inline-start:calc(var(--_thumb-diff-pointer,0px) - var(--_thumb-diff-default));display:grid;position:absolute}:host(:state(checked)) [part~=thumb]{--_thumb-diameter:24px;--_thumb-diff-default:-20px;background-color:var(--_thumb-color)}:host([icons]:not([checkedicononly])) [part~=thumb]{--_thumb-diameter:24px}:host(:active) [part~=thumb]{--_thumb-color:var(--md-sys-color-on-surface-variant);--_thumb-diameter:28px!important}:host(:state(checked):active) [part~=thumb]{--_thumb-color:var(--md-sys-color-primary-container)}[part~=icons]{fill:color-mix(in srgb, var(--_icon-color) var(--_icon-opacity,0%), transparent);width:16px;height:16px;transition:fill 67ms linear;position:absolute}md-focus-ring{inset:-4px}md-ripple{color:var(--_ripple-color);height:40px;inset:unset;width:40px}`;
|
|
2
|
+
export const switchStyles = css`:host{--_outline-color:var(--md-sys-color-outline);--_track-color:var(--md-sys-color-surface-container-highest);--_thumb-color:var(--md-sys-color-outline);--_icon-color:var(--md-sys-color-surface-container-highest);--_ripple-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_track-color) var(--_track-opacity,100%), transparent);border-color:color-mix(in srgb, var(--_outline-color) var(--_outline-opacity,100%), transparent);box-sizing:border-box;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:none;height:32px;transition:background-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast), border-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast);-webkit-user-select:none;user-select:none;vertical-align:top;border-style:solid;border-width:2px;border-radius:9999px;outline:0;place-content:center;place-items:center;width:52px;display:inline-grid;position:relative}:host(:state(checked)){--_outline-color:var(--md-sys-color-primary);--_track-color:var(--md-sys-color-primary);--_thumb-color:var(--md-sys-color-on-primary);--_icon-color:var(--md-sys-color-on-primary-container);--_ripple-color:var(--md-sys-color-primary)}:host(:disabled){--_outline-color:var(--md-sys-color-on-surface);--_outline-opacity:12%;--_track-color:var(--md-sys-color-surface-variant);--_track-opacity:12%;--_thumb-color:var(--md-sys-color-on-surface);--_thumb-opacity:38%;--_icon-color:var(--md-sys-color-surface-container-highest);cursor:default;pointer-events:none}:host(:disabled:state(checked)){--_outline-color:var(--md-sys-color-surface);--_track-color:var(--md-sys-color-on-surface);--_thumb-color:var(--md-sys-color-surface);--_thumb-opacity:100%;--_icon-color:var(--md-sys-color-on-surface)}:host([icons]:not(:state(checked)):not([checkedicononly])) [part~=icon-off],:host([icons]:state(checked)) [part~=icon-on]{--_icon-opacity:100%}:host([icons]:state(checked):disabled) [part~=icon-on]{--_icon-opacity:38%}@media (hover:hover) and (pointer:fine){:host(:hover){--_thumb-color:var(--md-sys-color-on-surface-variant)}:host(:state(checked):hover){--_thumb-color:var(--md-sys-color-primary-container)}}@media (forced-colors:active){:host{forced-color-adjust:none}}[part~=thumb]{--_thumb-diameter:16px;--_thumb-diff-default:20px;background-color:color-mix(in srgb, var(--_thumb-color) var(--_thumb-opacity,100%), transparent);height:var(--_thumb-diameter);transition:background-color var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast), width var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast), height var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast), margin var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast);width:var(--_thumb-diameter);z-index:1;border-radius:50%;place-content:center;place-items:center;margin-inline-start:calc(var(--_thumb-diff-pointer,0px) - var(--_thumb-diff-default));display:grid;position:absolute}:host(:state(checked)) [part~=thumb]{--_thumb-diameter:24px;--_thumb-diff-default:-20px;background-color:var(--_thumb-color)}:host([icons]:not([checkedicononly])) [part~=thumb]{--_thumb-diameter:24px}:host(:active) [part~=thumb]{--_thumb-color:var(--md-sys-color-on-surface-variant);--_thumb-diameter:28px!important}:host(:state(checked):active) [part~=thumb]{--_thumb-color:var(--md-sys-color-primary-container)}[part~=icons]{fill:color-mix(in srgb, var(--_icon-color) var(--_icon-opacity,0%), transparent);width:16px;height:16px;transition:fill 67ms linear;position:absolute}md-focus-ring{inset:-4px}md-ripple{color:var(--_ripple-color);height:40px;inset:unset;width:40px}@media (forced-colors:active){:host{--md-sys-color-primary:SelectedItem;--md-sys-color-primary-container:SelectedItemText;--md-sys-color-on-primary:SelectedItemText}}`;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ToggleButton } from '../../base/toggle-button.js';
|
|
2
2
|
import '../focus-ring/focus-ring.js';
|
|
3
|
+
import '../ripple/ripple.js';
|
|
3
4
|
import { M3Ripple } from '../ripple/ripple.js';
|
|
4
5
|
/**
|
|
5
6
|
* @tag md-switch
|
|
@@ -9,6 +10,8 @@ import { M3Ripple } from '../ripple/ripple.js';
|
|
|
9
10
|
*/
|
|
10
11
|
export declare class M3Switch extends ToggleButton {
|
|
11
12
|
#private;
|
|
13
|
+
icons: boolean;
|
|
14
|
+
checkedIconOnly: boolean;
|
|
12
15
|
$ripple: M3Ripple;
|
|
13
16
|
$thumb: HTMLSpanElement;
|
|
14
17
|
static styles: any[];
|
|
@@ -17,8 +20,6 @@ export declare class M3Switch extends ToggleButton {
|
|
|
17
20
|
renderOffIcon(): import("lit-html").TemplateResult<1>;
|
|
18
21
|
connectedCallback(): void;
|
|
19
22
|
disconnectedCallback(): void;
|
|
20
|
-
icons: boolean;
|
|
21
|
-
checkedIconOnly: boolean;
|
|
22
23
|
}
|
|
23
24
|
declare global {
|
|
24
25
|
interface HTMLElementTagNameMap {
|
package/src/m3/switch/switch.js
CHANGED
|
@@ -3,6 +3,7 @@ import { html } from 'lit';
|
|
|
3
3
|
import { customElement, property, query } from 'lit/decorators.js';
|
|
4
4
|
import { ToggleButton } from '../../base/toggle-button.js';
|
|
5
5
|
import '../focus-ring/focus-ring.js';
|
|
6
|
+
import '../ripple/ripple.js';
|
|
6
7
|
import { switchStyles } from './switch-styles.css.js';
|
|
7
8
|
import { targetStyles } from '../target-styles.css.js';
|
|
8
9
|
function isRTL() {
|
|
@@ -53,12 +54,12 @@ let M3Switch = class M3Switch extends ToggleButton {
|
|
|
53
54
|
this.$thumb.style.setProperty('--_thumb-diameter', '');
|
|
54
55
|
this.$thumb.style.transitionDuration = '';
|
|
55
56
|
if (this.checked != shouldBeChecked)
|
|
56
|
-
this.
|
|
57
|
+
this._toggle();
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
static { this.styles = [targetStyles, switchStyles]; }
|
|
60
61
|
render() {
|
|
61
|
-
return html `<md-focus-ring></md-focus-ring><div part="thumb"><md-ripple
|
|
62
|
+
return html `<md-focus-ring></md-focus-ring><div part="thumb"><md-ripple></md-ripple><span part="target"></span> ${this.renderOffIcon()}${this.renderOnIcon()}</div>`;
|
|
62
63
|
}
|
|
63
64
|
renderOnIcon() {
|
|
64
65
|
return html `<svg part="icons icon-on" viewBox="0 0 24 24" aria-hidden="true"><path d="M9.55 18.2 3.65 12.3 5.275 10.675 9.55 14.95 18.725 5.775 20.35 7.4Z"/></svg>`;
|
|
@@ -69,33 +70,33 @@ let M3Switch = class M3Switch extends ToggleButton {
|
|
|
69
70
|
connectedCallback() {
|
|
70
71
|
super.connectedCallback();
|
|
71
72
|
this.updateComplete.then(() => {
|
|
72
|
-
this.$ripple.attach(this);
|
|
73
|
+
this.$ripple.attach(this, true);
|
|
73
74
|
});
|
|
74
75
|
this.addEventListener('pointerdown', this.#handlePointerDown);
|
|
75
76
|
this.addEventListener('pointerup', this.#handlePointerUp);
|
|
76
77
|
}
|
|
77
78
|
disconnectedCallback() {
|
|
78
|
-
super.disconnectedCallback();
|
|
79
79
|
this.removeEventListener('pointerdown', this.#handlePointerDown);
|
|
80
80
|
this.removeEventListener('pointerup', this.#handlePointerUp);
|
|
81
|
+
super.disconnectedCallback();
|
|
81
82
|
}
|
|
82
83
|
#pointerDownX;
|
|
83
84
|
#handlePointerDown;
|
|
84
85
|
#handlePointerMove;
|
|
85
86
|
#handlePointerUp;
|
|
86
87
|
};
|
|
87
|
-
__decorate([
|
|
88
|
-
query('md-ripple')
|
|
89
|
-
], M3Switch.prototype, "$ripple", void 0);
|
|
90
|
-
__decorate([
|
|
91
|
-
query('[part~="thumb"]')
|
|
92
|
-
], M3Switch.prototype, "$thumb", void 0);
|
|
93
88
|
__decorate([
|
|
94
89
|
property({ type: Boolean, reflect: true })
|
|
95
90
|
], M3Switch.prototype, "icons", void 0);
|
|
96
91
|
__decorate([
|
|
97
92
|
property({ type: Boolean, reflect: true })
|
|
98
93
|
], M3Switch.prototype, "checkedIconOnly", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
query('md-ripple')
|
|
96
|
+
], M3Switch.prototype, "$ripple", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
query('[part~="thumb"]')
|
|
99
|
+
], M3Switch.prototype, "$thumb", void 0);
|
|
99
100
|
M3Switch = __decorate([
|
|
100
101
|
customElement('md-switch')
|
|
101
102
|
], M3Switch);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const tabsStyles = css`:host{--_tab-selected-color:var(--md-sys-color-primary);--_tab-indicator-height:3px;border-bottom:1px solid var(--md-sys-color-outline-variant);box-sizing:border-box;scroll-behavior:smooth;scrollbar-width:none;display:block;position:relative;overflow:auto hidden}[part=tablist]{display:flex}[part=indicator]{height:var(--_tab-indicator-height);background-color:var(--md-sys-color-primary);transition:left var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default), width var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);will-change:left, width;border-radius:3px 3px 0 0;position:absolute;bottom:0}::slotted(*){flex:1}:host([secondary]){--_tab-selected-color:var(--md-sys-color-on-surface);--_tab-indicator-height:2px}:host([secondary]) [part=indicator]{border-radius:0}:host([iconsabove]){--_tab-flex-dir:column;--_tab-height:64px;--_tab-gap:2px}`;
|
|
2
|
+
export const tabsStyles = css`:host{--_tab-selected-color:var(--md-sys-color-primary);--_tab-indicator-height:3px;border-bottom:1px solid var(--md-sys-color-outline-variant);box-sizing:border-box;scroll-behavior:smooth;scrollbar-width:none;display:block;position:relative;overflow:auto hidden}[part=tablist]{display:flex}[part=indicator]{height:var(--_tab-indicator-height);background-color:var(--md-sys-color-primary);transition:left var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default), width var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default);will-change:left, width;border-radius:3px 3px 0 0;position:absolute;bottom:0}::slotted(*){flex:1}:host([secondary]){--_tab-selected-color:var(--md-sys-color-on-surface);--_tab-indicator-height:2px}:host([secondary]) [part=indicator]{border-radius:0}:host([iconsabove]){--_tab-flex-dir:column;--_tab-height:64px;--_tab-gap:2px}@media (forced-colors:active){[part=indicator]{background-color:highlight}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const toolbarStyles = css`:host{--_padding:16px;--_gap:32px;--_container-color:var(--md-sys-color-surface-container);--_on-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-sizing:border-box;color:color-mix(in srgb, var(--_on-color) var(--_on-opacity,100%), transparent);align-items:center;width:100%;height:64px;display:flex}[part=container]{box-sizing:border-box;align-items:center;gap:var(--_gap);height:64px;padding:0 var(--_padding);flex:auto;justify-content:space-between;width:100%;display:flex}[part=fab-slot]{justify-content:flex-end;align-items:center;display:flex}:host(:not([orientation=vertical])) ::slotted([slot=fab]){margin-inline-start:8px}:host([orientation=vertical]) ::slotted([slot=fab]){margin-block-start:8px}:host([type=floating]){--_padding:12px;--_gap:4px;--_container-color:var(--md-sys-color-surface-container-high);box-shadow:none;background:0 0;width:fit-content;max-width:calc(100% - 32px);& [part=container]{background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-shadow:var(--md-toolbar-shadow,var(--md-sys-elevation-shadow-3));border-radius:32px;width:fit-content}& ::slotted(md-button),& ::slotted(md-button-toggle),& ::slotted(md-icon-button),& ::slotted(md-icon-button-toggle){--md-focus-ring-shape:calc(var(--_h) / 2);border-radius:calc(var(--_h) / 2)}}:host([type=floating][orientation=vertical]){flex-direction:column;align-items:stretch;width:64px;min-height:auto;& [part=container]{height:fit-content;padding:var(--_padding) 0;flex-direction:column;width:100%}}::slotted(md-button-toggle[variant=tonal]:not(:state(checked))),::slotted(md-icon-button-toggle[variant=tonal]:not(:state(checked))){--_background-color:transparent}:host([color=vibrant]){--_container-color:var(--md-sys-color-primary-container);--_on-color:var(--md-sys-color-on-primary-container);& ::slotted(md-icon-button[variant=text]),& ::slotted(md-icon-button-toggle[variant=tonal]){--_text-color:var(--md-sys-color-on-primary-container)}& ::slotted(md-icon-button-toggle[variant=tonal]:state(checked)){--_background-color:var(--md-sys-color-surface-container);--_text-color:var(--md-sys-color-on-surface)}}`;
|
|
2
|
+
export const toolbarStyles = css`:host{--_padding:16px;--_gap:32px;--_container-color:var(--md-sys-color-surface-container);--_on-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-sizing:border-box;color:color-mix(in srgb, var(--_on-color) var(--_on-opacity,100%), transparent);align-items:center;width:100%;height:64px;display:flex}[part=container]{box-sizing:border-box;align-items:center;gap:var(--_gap);height:64px;padding:0 var(--_padding);flex:auto;justify-content:space-between;width:100%;display:flex}[part=fab-slot]{justify-content:flex-end;align-items:center;display:flex}:host(:not([orientation=vertical])) ::slotted([slot=fab]){margin-inline-start:8px}:host([orientation=vertical]) ::slotted([slot=fab]){margin-block-start:8px}:host([type=floating]){--_padding:12px;--_gap:4px;--_container-color:var(--md-sys-color-surface-container-high);box-shadow:none;background:0 0;width:fit-content;max-width:calc(100% - 32px);& [part=container]{background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-shadow:var(--md-toolbar-shadow,var(--md-sys-elevation-shadow-3));border-radius:32px;width:fit-content}& ::slotted(md-button),& ::slotted(md-button-toggle),& ::slotted(md-icon-button),& ::slotted(md-icon-button-toggle){--md-focus-ring-shape:calc(var(--_h) / 2);border-radius:calc(var(--_h) / 2)}}:host([type=floating][orientation=vertical]){flex-direction:column;align-items:stretch;width:64px;min-height:auto;& [part=container]{height:fit-content;padding:var(--_padding) 0;flex-direction:column;width:100%}}::slotted(md-button-toggle[variant=tonal]:not(:state(checked))),::slotted(md-icon-button-toggle[variant=tonal]:not(:state(checked))){--_background-color:transparent}:host([color=vibrant]){--_container-color:var(--md-sys-color-primary-container);--_on-color:var(--md-sys-color-on-primary-container);& ::slotted(md-icon-button[variant=text]),& ::slotted(md-icon-button-toggle[variant=tonal]){--_text-color:var(--md-sys-color-on-primary-container)}& ::slotted(md-icon-button-toggle[variant=tonal]:state(checked)){--_background-color:var(--md-sys-color-surface-container);--_text-color:var(--md-sys-color-on-surface)}}@media (forced-colors:active){[part=container]{outline:1px solid canvastext}}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const buttonStyles = css`:host{-webkit-font-smoothing:none;box-sizing:border-box;color:#0000;text-shadow:0 0 #222;-webkit-user-select:none;user-select:none;cursor:default;background:silver;border:none;border-radius:0;justify-content:center;align-items:center;min-width:75px;min-height:23px;padding:0 12px;font-family:Arial;font-size:11px;display:inline-flex;box-shadow:inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px gray,inset 2px 2px #dfdfdf}:host(:active){text-shadow:1px 1px #222;box-shadow:inset -1px -1px #fff,inset 1px 1px #0a0a0a,inset -2px -2px #dfdfdf,inset 2px 2px gray}:host(:focus){outline-offset:-4px;outline:1px dotted #000}:host(:disabled){color:gray;text-shadow:1px 1px #fff;pointer-events:none}`;
|
|
2
|
+
export const buttonStyles = css`:host{-webkit-font-smoothing:none;box-sizing:border-box;color:#0000;text-shadow:0 0 #222;-webkit-user-select:none;user-select:none;cursor:default;background:silver;border:none;border-radius:0;justify-content:center;align-items:center;min-width:75px;min-height:23px;padding:0 12px;font-family:Arial;font-size:11px;display:inline-flex;box-shadow:inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px gray,inset 2px 2px #dfdfdf}:host(:active),:host(:state(active)){text-shadow:1px 1px #222;box-shadow:inset -1px -1px #fff,inset 1px 1px #0a0a0a,inset -2px -2px #dfdfdf,inset 2px 2px gray}:host(:focus){outline-offset:-4px;outline:1px dotted #000}:host(:disabled){color:gray;text-shadow:1px 1px #fff;pointer-events:none}`;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Dialog } from '../../base/dialog.js';
|
|
2
|
-
/**
|
|
3
|
-
* TODO: test if form actions `cancel` and other things related work - no,
|
|
4
|
-
* event listener needed
|
|
5
|
-
*
|
|
6
|
-
* To get an approximation of the "not Expressive" version like:
|
|
7
|
-
* https://m3.material.io/styles/motion/easing-and-duration/applying-easing-and-duration#e5b958f0-435d-4e84-aed4-8d1ea395fa5c
|
|
8
|
-
*
|
|
9
|
-
* ```css
|
|
10
|
-
* --md-sys-motion-spatial-default: cubic-bezier(0, 0, 0, 1);
|
|
11
|
-
* --md-sys-motion-spatial-default-duration: 500ms;
|
|
12
|
-
* --md-sys-motion-spatial-fast: cubic-bezier(0.3, 0, 1, 1);
|
|
13
|
-
* --md-sys-motion-spatial-fast-duration: 300ms;
|
|
14
|
-
*
|
|
15
|
-
* --md-sys-motion-effects-fast: linear;
|
|
16
|
-
* --md-sys-motion-effects-fast-duration: 200ms;
|
|
17
|
-
* --md-sys-motion-effects-default: linear;
|
|
18
|
-
* --md-sys-motion-effects-default-duration: 300ms;
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* @tag md-dialog
|
|
22
|
-
*
|
|
23
|
-
* @csspart container
|
|
24
|
-
* @csspart headline
|
|
25
|
-
* @csspart content
|
|
26
|
-
* @csspart actions
|
|
27
|
-
*
|
|
28
|
-
* @slot icon
|
|
29
|
-
* @slot headline
|
|
30
|
-
* @slot - content
|
|
31
|
-
* @slot actions
|
|
32
|
-
*/
|
|
33
|
-
export declare class M3Dialog extends Dialog {
|
|
34
|
-
#private;
|
|
35
|
-
private hasIcon;
|
|
36
|
-
$container: HTMLDivElement;
|
|
37
|
-
$body: HTMLDivElement;
|
|
38
|
-
$actions: HTMLDivElement;
|
|
39
|
-
$actionsPlaceholder: HTMLDivElement;
|
|
40
|
-
$scrim: HTMLDivElement;
|
|
41
|
-
static styles: any[];
|
|
42
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
43
|
-
show(): void;
|
|
44
|
-
close(): void;
|
|
45
|
-
}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { html } from 'lit';
|
|
3
|
-
import { query, state, customElement } from 'lit/decorators.js';
|
|
4
|
-
import { Dialog } from '../../base/dialog.js';
|
|
5
|
-
import { getSpring } from '../system/motion.js';
|
|
6
|
-
import { dialogStyles } from './dialog-styles.css.js';
|
|
7
|
-
/**
|
|
8
|
-
* TODO: test if form actions `cancel` and other things related work - no,
|
|
9
|
-
* event listener needed
|
|
10
|
-
*
|
|
11
|
-
* To get an approximation of the "not Expressive" version like:
|
|
12
|
-
* https://m3.material.io/styles/motion/easing-and-duration/applying-easing-and-duration#e5b958f0-435d-4e84-aed4-8d1ea395fa5c
|
|
13
|
-
*
|
|
14
|
-
* ```css
|
|
15
|
-
* --md-sys-motion-spatial-default: cubic-bezier(0, 0, 0, 1);
|
|
16
|
-
* --md-sys-motion-spatial-default-duration: 500ms;
|
|
17
|
-
* --md-sys-motion-spatial-fast: cubic-bezier(0.3, 0, 1, 1);
|
|
18
|
-
* --md-sys-motion-spatial-fast-duration: 300ms;
|
|
19
|
-
*
|
|
20
|
-
* --md-sys-motion-effects-fast: linear;
|
|
21
|
-
* --md-sys-motion-effects-fast-duration: 200ms;
|
|
22
|
-
* --md-sys-motion-effects-default: linear;
|
|
23
|
-
* --md-sys-motion-effects-default-duration: 300ms;
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @tag md-dialog
|
|
27
|
-
*
|
|
28
|
-
* @csspart container
|
|
29
|
-
* @csspart headline
|
|
30
|
-
* @csspart content
|
|
31
|
-
* @csspart actions
|
|
32
|
-
*
|
|
33
|
-
* @slot icon
|
|
34
|
-
* @slot headline
|
|
35
|
-
* @slot - content
|
|
36
|
-
* @slot actions
|
|
37
|
-
*/
|
|
38
|
-
let M3Dialog = class M3Dialog extends Dialog {
|
|
39
|
-
constructor() {
|
|
40
|
-
super(...arguments);
|
|
41
|
-
this.hasIcon = false;
|
|
42
|
-
this.#activeAnimations = [];
|
|
43
|
-
this.#handleClick = (e) => {
|
|
44
|
-
const target = e.target;
|
|
45
|
-
if (!this.$container.contains(target) && !this.contains(target))
|
|
46
|
-
this.close();
|
|
47
|
-
};
|
|
48
|
-
this.#handleIconSlotChange = (e) => {
|
|
49
|
-
const slot = e.target;
|
|
50
|
-
this.hasIcon = slot.assignedElements({ flatten: true }).length > 0;
|
|
51
|
-
};
|
|
52
|
-
this.#opening = false;
|
|
53
|
-
this.#closing = false;
|
|
54
|
-
}
|
|
55
|
-
static { this.styles = [dialogStyles]; }
|
|
56
|
-
render() {
|
|
57
|
-
return html `<dialog part="dialog" @click="${this.#handleClick}" @cancel="${this._handleCancel}"><div part="container"><div part="body"><div part="headline" class="${this.hasIcon ? 'has-icon' : ''}"><slot name="icon" @slotchange="${this.#handleIconSlotChange}"></slot><slot name="headline"></slot></div><div part="content"><slot></slot></div><div class="actions-placeholder"></div></div><div part="actions"><slot name="actions"></slot></div></div></dialog><div part="scrim"></div>`;
|
|
58
|
-
}
|
|
59
|
-
#activeAnimations;
|
|
60
|
-
#clearAnimations() {
|
|
61
|
-
this.#activeAnimations.forEach((anim) => anim.cancel());
|
|
62
|
-
this.#activeAnimations = [];
|
|
63
|
-
this.#opening = this.#closing = false;
|
|
64
|
-
}
|
|
65
|
-
#handleClick;
|
|
66
|
-
#handleIconSlotChange;
|
|
67
|
-
get #springs() {
|
|
68
|
-
return {
|
|
69
|
-
spatialDefault: getSpring(this, 'spatial', 'default'),
|
|
70
|
-
spatialFast: getSpring(this, 'spatial', 'fast'),
|
|
71
|
-
effectsDefault: getSpring(this, 'effects', 'default'),
|
|
72
|
-
effectsFast: getSpring(this, 'effects', 'fast'),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
#opening;
|
|
76
|
-
show() {
|
|
77
|
-
if (this.#opening)
|
|
78
|
-
return;
|
|
79
|
-
this.#clearAnimations();
|
|
80
|
-
this.#opening = true;
|
|
81
|
-
// Reset margins to allow browser centering
|
|
82
|
-
this.$dialog.style.marginTop = 'auto';
|
|
83
|
-
this.$dialog.style.marginBottom = 'auto';
|
|
84
|
-
super.show();
|
|
85
|
-
const actionsHeight = this.$actions.offsetHeight;
|
|
86
|
-
this.$actionsPlaceholder.style.height = `${actionsHeight}px`;
|
|
87
|
-
this.$container.style.height = 'auto';
|
|
88
|
-
const startHeight = 0;
|
|
89
|
-
const endHeight = this.$container.offsetHeight;
|
|
90
|
-
// Lock the position to prevent auto-centering during animation
|
|
91
|
-
const rect = this.$container.getBoundingClientRect();
|
|
92
|
-
this.$dialog.style.marginTop = `${rect.top}px`;
|
|
93
|
-
this.$dialog.style.marginBottom = 'auto';
|
|
94
|
-
this.$container.style.minHeight = '0px';
|
|
95
|
-
const container = this.$container.animate([
|
|
96
|
-
{
|
|
97
|
-
height: `${startHeight}px`,
|
|
98
|
-
transform: `translateY(-40px)`,
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
height: `${endHeight}px`,
|
|
102
|
-
transform: 'translateY(0px)',
|
|
103
|
-
},
|
|
104
|
-
], this.#springs.spatialDefault);
|
|
105
|
-
const scrim = this.$scrim.animate([{ opacity: 0 }, { opacity: 0.32 }], {
|
|
106
|
-
...this.#springs.effectsDefault,
|
|
107
|
-
fill: 'forwards',
|
|
108
|
-
});
|
|
109
|
-
const body = this.$body.animate([{ opacity: 0.2 }, { opacity: 1 }], {
|
|
110
|
-
...this.#springs.effectsDefault,
|
|
111
|
-
fill: 'forwards',
|
|
112
|
-
});
|
|
113
|
-
const actions = this.$actions.animate([{ opacity: 0.5 }, { opacity: 1 }], {
|
|
114
|
-
...this.#springs.effectsDefault,
|
|
115
|
-
fill: 'forwards',
|
|
116
|
-
});
|
|
117
|
-
this.#activeAnimations.push(container, scrim, body, actions);
|
|
118
|
-
container.onfinish = () => {
|
|
119
|
-
this.$container.style.minHeight = '';
|
|
120
|
-
this.#clearAnimations();
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
#closing;
|
|
124
|
-
close() {
|
|
125
|
-
if (this.#closing)
|
|
126
|
-
return;
|
|
127
|
-
this.#clearAnimations();
|
|
128
|
-
this.#closing = true;
|
|
129
|
-
const startHeight = this.$container.offsetHeight;
|
|
130
|
-
const endHeight = startHeight * 0.35;
|
|
131
|
-
this.$container.style.minHeight = '0px';
|
|
132
|
-
const containerSpatial = this.$container.animate([
|
|
133
|
-
{ height: `${startHeight}px`, transform: 'translateY(0px)' },
|
|
134
|
-
{
|
|
135
|
-
height: `${endHeight}px`,
|
|
136
|
-
transform: `translateY(-40px)`,
|
|
137
|
-
},
|
|
138
|
-
], this.#springs.spatialFast);
|
|
139
|
-
const containerEffects = this.$container.animate([{ opacity: 1 }, { opacity: 0 }], {
|
|
140
|
-
...this.#springs.effectsFast,
|
|
141
|
-
fill: 'forwards',
|
|
142
|
-
});
|
|
143
|
-
const scrim = this.$scrim.animate([{ opacity: 0.32 }, { opacity: 0 }], {
|
|
144
|
-
...this.#springs.effectsFast,
|
|
145
|
-
fill: 'forwards',
|
|
146
|
-
});
|
|
147
|
-
this.#activeAnimations.push(containerSpatial, containerEffects, scrim);
|
|
148
|
-
containerEffects.onfinish = () => {
|
|
149
|
-
this.$container.style.minHeight = '';
|
|
150
|
-
super.close();
|
|
151
|
-
this.#clearAnimations();
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
__decorate([
|
|
156
|
-
state()
|
|
157
|
-
], M3Dialog.prototype, "hasIcon", void 0);
|
|
158
|
-
__decorate([
|
|
159
|
-
query('[part=container]')
|
|
160
|
-
], M3Dialog.prototype, "$container", void 0);
|
|
161
|
-
__decorate([
|
|
162
|
-
query('[part=body]')
|
|
163
|
-
], M3Dialog.prototype, "$body", void 0);
|
|
164
|
-
__decorate([
|
|
165
|
-
query('[part=actions]')
|
|
166
|
-
], M3Dialog.prototype, "$actions", void 0);
|
|
167
|
-
__decorate([
|
|
168
|
-
query('.actions-placeholder')
|
|
169
|
-
], M3Dialog.prototype, "$actionsPlaceholder", void 0);
|
|
170
|
-
__decorate([
|
|
171
|
-
query('[part=scrim]')
|
|
172
|
-
], M3Dialog.prototype, "$scrim", void 0);
|
|
173
|
-
M3Dialog = __decorate([
|
|
174
|
-
customElement('md-dialog')
|
|
175
|
-
], M3Dialog);
|
|
176
|
-
export { M3Dialog };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Radio } from '../../base/radio.js';
|
|
3
|
-
import { customElement } from '../../core/decorators.js';
|
|
4
|
-
let Win98Radio = class Win98Radio extends Radio {
|
|
5
|
-
};
|
|
6
|
-
Win98Radio = __decorate([
|
|
7
|
-
customElement('win98-radio')
|
|
8
|
-
], Win98Radio);
|
|
9
|
-
export { Win98Radio };
|