@universal-material/web 3.4.2 → 3.5.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/button/button-base.d.ts +1 -1
- package/button/button-base.d.ts.map +1 -1
- package/button/button-base.js +1 -1
- package/button/button-base.js.map +1 -1
- package/button/button-base.styles.d.ts.map +1 -1
- package/button/button-base.styles.js +3 -0
- package/button/button-base.styles.js.map +1 -1
- package/button/button.d.ts +5 -11
- package/button/button.d.ts.map +1 -1
- package/button/button.js +29 -20
- package/button/button.js.map +1 -1
- package/button/button.styles.d.ts.map +1 -1
- package/button/button.styles.js +41 -50
- package/button/button.styles.js.map +1 -1
- package/button/fab-menu-color-context.d.ts +5 -0
- package/button/fab-menu-color-context.d.ts.map +1 -0
- package/button/fab-menu-color-context.js +3 -0
- package/button/fab-menu-color-context.js.map +1 -0
- package/button/fab-menu-item.d.ts +23 -0
- package/button/fab-menu-item.d.ts.map +1 -0
- package/button/fab-menu-item.js +70 -0
- package/button/fab-menu-item.js.map +1 -0
- package/button/fab-menu-item.styles.d.ts +2 -0
- package/button/fab-menu-item.styles.d.ts.map +1 -0
- package/button/fab-menu-item.styles.js +82 -0
- package/button/fab-menu-item.styles.js.map +1 -0
- package/button/fab-menu-open-context.d.ts +4 -0
- package/button/fab-menu-open-context.d.ts.map +1 -0
- package/button/fab-menu-open-context.js +3 -0
- package/button/fab-menu-open-context.js.map +1 -0
- package/button/fab-menu.d.ts +26 -0
- package/button/fab-menu.d.ts.map +1 -0
- package/button/fab-menu.js +93 -0
- package/button/fab-menu.js.map +1 -0
- package/button/fab-menu.styles.d.ts +2 -0
- package/button/fab-menu.styles.d.ts.map +1 -0
- package/button/fab-menu.styles.js +145 -0
- package/button/fab-menu.styles.js.map +1 -0
- package/button/fab.d.ts +2 -1
- package/button/fab.d.ts.map +1 -1
- package/button/fab.js +13 -7
- package/button/fab.js.map +1 -1
- package/button/fab.styles.d.ts.map +1 -1
- package/button/fab.styles.js +50 -56
- package/button/fab.styles.js.map +1 -1
- package/button/icon-button.d.ts +3 -2
- package/button/icon-button.d.ts.map +1 -1
- package/button/icon-button.js +12 -4
- package/button/icon-button.js.map +1 -1
- package/button/icon-button.styles.d.ts.map +1 -1
- package/button/icon-button.styles.js +28 -30
- package/button/icon-button.styles.js.map +1 -1
- package/button/toggle-button.d.ts +6 -5
- package/button/toggle-button.d.ts.map +1 -1
- package/button/toggle-button.js +27 -8
- package/button/toggle-button.js.map +1 -1
- package/button/toggle-button.styles.d.ts.map +1 -1
- package/button/toggle-button.styles.js +18 -13
- package/button/toggle-button.styles.js.map +1 -1
- package/chip/chip.d.ts +9 -23
- package/chip/chip.d.ts.map +1 -1
- package/chip/chip.js +60 -60
- package/chip/chip.js.map +1 -1
- package/chip/chip.styles.d.ts.map +1 -1
- package/chip/chip.styles.js +32 -39
- package/chip/chip.styles.js.map +1 -1
- package/custom-elements.json +4289 -3625
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/list/list-item.d.ts.map +1 -1
- package/list/list-item.js +13 -9
- package/list/list-item.js.map +1 -1
- package/list/list-item.styles.d.ts.map +1 -1
- package/list/list-item.styles.js +5 -1
- package/list/list-item.styles.js.map +1 -1
- package/menu/menu-item.d.ts +6 -24
- package/menu/menu-item.d.ts.map +1 -1
- package/menu/menu-item.js +22 -44
- package/menu/menu-item.js.map +1 -1
- package/menu/menu-item.styles.d.ts.map +1 -1
- package/menu/menu-item.styles.js +6 -5
- package/menu/menu-item.styles.js.map +1 -1
- package/navigation/drawer-item.d.ts +5 -14
- package/navigation/drawer-item.d.ts.map +1 -1
- package/navigation/drawer-item.js +18 -21
- package/navigation/drawer-item.js.map +1 -1
- package/navigation/drawer-item.styles.d.ts.map +1 -1
- package/navigation/drawer-item.styles.js +8 -7
- package/navigation/drawer-item.styles.js.map +1 -1
- package/package.json +1 -1
- package/select/option.d.ts +1 -1
- package/select/option.d.ts.map +1 -1
- package/select/option.js +1 -1
- package/select/option.js.map +1 -1
- package/shared/base.styles.d.ts.map +1 -1
- package/shared/base.styles.js +1 -0
- package/shared/base.styles.js.map +1 -1
- package/shared/button-wrapper.d.ts +4 -6
- package/shared/button-wrapper.d.ts.map +1 -1
- package/shared/button-wrapper.js +20 -12
- package/shared/button-wrapper.js.map +1 -1
- package/shared/button-wrapper.styles.d.ts.map +1 -1
- package/shared/button-wrapper.styles.js +7 -5
- package/shared/button-wrapper.styles.js.map +1 -1
- package/tab-bar/tab.d.ts +2 -2
- package/tab-bar/tab.d.ts.map +1 -1
- package/tab-bar/tab.js +3 -3
- package/tab-bar/tab.js.map +1 -1
- package/tab-bar/tab.styles.d.ts.map +1 -1
- package/tab-bar/tab.styles.js +4 -1
- package/tab-bar/tab.styles.js.map +1 -1
- package/typeahead/typeahead.styles.d.ts.map +1 -1
- package/typeahead/typeahead.styles.js +1 -4
- package/typeahead/typeahead.styles.js.map +1 -1
- package/vscode.html-custom-data.json +334 -317
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
.container {
|
|
4
|
+
--_animation-duration: 225ms;
|
|
5
|
+
--_height: var(--u-fab-menu-item-height, 56px);
|
|
6
|
+
height: var(--_height);
|
|
7
|
+
border-radius: calc(var(--_height) / 2);
|
|
8
|
+
padding-inline: var(--u-fab-menu-item-padding, 24px);
|
|
9
|
+
opacity: 0;
|
|
10
|
+
transition: opacity var(--_animation-duration) linear;
|
|
11
|
+
}
|
|
12
|
+
.container:not(.has-icon) .icon {
|
|
13
|
+
display: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.icon {
|
|
17
|
+
font-size: var(--u-fab-icon-size, 1.5rem);
|
|
18
|
+
margin-inline-end: var(--u-fab-menu-item-icon-margin, 8px);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.label {
|
|
22
|
+
font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"));
|
|
23
|
+
line-height: var(--u-fab-menu-item-label-line-height, var(--u-title-m-line-height, 1.5rem));
|
|
24
|
+
font-size: var(--u-fab-menu-item-label-font-size, var(--u-title-m-font-size, 1rem));
|
|
25
|
+
letter-spacing: var(--u-fab-menu-item-label-letter-spacing, var(--u-title-m-letter-spacing, 0.009375rem));
|
|
26
|
+
font-weight: var(--u-fab-menu-item-label-font-weight, var(--u-title-m-font-weight, var(--u-font-weight-medium, 500)));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.primary {
|
|
30
|
+
background-color: var(--u-fab-menu-item-primary-container-color, var(--u-color-primary-container, rgb(234, 221, 255)));
|
|
31
|
+
color: var(--u-fab-menu-item-primary-text-color, var(--u-color-on-primary-container, rgb(33, 0, 93)));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.secondary {
|
|
35
|
+
background-color: var(--u-fab-menu-item-secondary-container-color, var(--u-color-secondary-container, rgb(232, 222, 248)));
|
|
36
|
+
color: var(--u-fab-menu-item-secondary-text-color, var(--u-color-on-secondary-container, rgb(29, 25, 43)));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.tertiary {
|
|
40
|
+
background-color: var(--u-fab-menu-item-tertiary-container-color, var(--u-color-tertiary-container, rgb(255, 216, 228)));
|
|
41
|
+
color: var(--u-fab-menu-item-tertiary-text-color, var(--u-color-on-tertiary-container, rgb(49, 17, 29)));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.clipper {
|
|
45
|
+
animation: clip-out var(--_animation-duration) forwards linear;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.open {
|
|
49
|
+
opacity: 1;
|
|
50
|
+
transition-delay: calc(75ms * var(--_animation-delay-increment, 0));
|
|
51
|
+
}
|
|
52
|
+
.open .clipper {
|
|
53
|
+
animation-name: clip-in;
|
|
54
|
+
}
|
|
55
|
+
.open .clipper {
|
|
56
|
+
animation-delay: calc(75ms * var(--_animation-delay-increment, 0));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@keyframes clip-in {
|
|
60
|
+
0% {
|
|
61
|
+
margin-inline-start: -32px;
|
|
62
|
+
}
|
|
63
|
+
25% {
|
|
64
|
+
margin-inline-start: -8px;
|
|
65
|
+
}
|
|
66
|
+
50% {
|
|
67
|
+
margin-inline-start: 16px;
|
|
68
|
+
}
|
|
69
|
+
100% {
|
|
70
|
+
margin-inline-start: 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
@keyframes clip-out {
|
|
74
|
+
0% {
|
|
75
|
+
margin-inline-start: 0;
|
|
76
|
+
}
|
|
77
|
+
100% {
|
|
78
|
+
margin-inline-start: -32px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
//# sourceMappingURL=fab-menu-item.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu-item.styles.js","sourceRoot":"","sources":["../../src/button/fab-menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+EzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n .container {\n --_animation-duration: 225ms;\n --_height: var(--u-fab-menu-item-height, 56px);\n height: var(--_height);\n border-radius: calc(var(--_height) / 2);\n padding-inline: var(--u-fab-menu-item-padding, 24px);\n opacity: 0;\n transition: opacity var(--_animation-duration) linear;\n }\n .container:not(.has-icon) .icon {\n display: none;\n }\n\n .icon {\n font-size: var(--u-fab-icon-size, 1.5rem);\n margin-inline-end: var(--u-fab-menu-item-icon-margin, 8px);\n }\n\n .label {\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-fab-menu-item-label-line-height, var(--u-title-m-line-height, 1.5rem));\n font-size: var(--u-fab-menu-item-label-font-size, var(--u-title-m-font-size, 1rem));\n letter-spacing: var(--u-fab-menu-item-label-letter-spacing, var(--u-title-m-letter-spacing, 0.009375rem));\n font-weight: var(--u-fab-menu-item-label-font-weight, var(--u-title-m-font-weight, var(--u-font-weight-medium, 500)));\n }\n\n .primary {\n background-color: var(--u-fab-menu-item-primary-container-color, var(--u-color-primary-container, rgb(234, 221, 255)));\n color: var(--u-fab-menu-item-primary-text-color, var(--u-color-on-primary-container, rgb(33, 0, 93)));\n }\n\n .secondary {\n background-color: var(--u-fab-menu-item-secondary-container-color, var(--u-color-secondary-container, rgb(232, 222, 248)));\n color: var(--u-fab-menu-item-secondary-text-color, var(--u-color-on-secondary-container, rgb(29, 25, 43)));\n }\n\n .tertiary {\n background-color: var(--u-fab-menu-item-tertiary-container-color, var(--u-color-tertiary-container, rgb(255, 216, 228)));\n color: var(--u-fab-menu-item-tertiary-text-color, var(--u-color-on-tertiary-container, rgb(49, 17, 29)));\n }\n\n .clipper {\n animation: clip-out var(--_animation-duration) forwards linear;\n }\n\n .open {\n opacity: 1;\n transition-delay: calc(75ms * var(--_animation-delay-increment, 0));\n }\n .open .clipper {\n animation-name: clip-in;\n }\n .open .clipper {\n animation-delay: calc(75ms * var(--_animation-delay-increment, 0));\n }\n\n @keyframes clip-in {\n 0% {\n margin-inline-start: -32px;\n }\n 25% {\n margin-inline-start: -8px;\n }\n 50% {\n margin-inline-start: 16px;\n }\n 100% {\n margin-inline-start: 0;\n }\n }\n @keyframes clip-out {\n 0% {\n margin-inline-start: 0;\n }\n 100% {\n margin-inline-start: -32px;\n }\n }\n`;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu-open-context.d.ts","sourceRoot":"","sources":["../../src/button/fab-menu-open-context.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;CAAuD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu-open-context.js","sourceRoot":"","sources":["../../src/button/fab-menu-open-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAU,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC","sourcesContent":["import { createContext } from '@lit/context';\n\nexport const fabMenuOpenContext = createContext<boolean>(Symbol('fabMenuOpenContext'));\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HTMLTemplateResult, LitElement } from 'lit';
|
|
2
|
+
import { UmFabColor, UmFabSize } from './fab.js';
|
|
3
|
+
export declare class UmFabMenu extends LitElement {
|
|
4
|
+
#private;
|
|
5
|
+
static styles: import("lit").CSSResult[];
|
|
6
|
+
/**
|
|
7
|
+
* The FAB color variant to render.
|
|
8
|
+
*/
|
|
9
|
+
color: UmFabColor;
|
|
10
|
+
/**
|
|
11
|
+
* The size of the FAB.
|
|
12
|
+
*/
|
|
13
|
+
size: UmFabSize;
|
|
14
|
+
/**
|
|
15
|
+
* Lowers the FAB's elevation.
|
|
16
|
+
*/
|
|
17
|
+
lowered: boolean;
|
|
18
|
+
open: boolean;
|
|
19
|
+
protected render(): HTMLTemplateResult;
|
|
20
|
+
}
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElementTagNameMap {
|
|
23
|
+
'u-fab-menu': UmFabMenu;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fab-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu.d.ts","sourceRoot":"","sources":["../../src/button/fab-menu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAQ3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEjD,qBACa,SAAU,SAAQ,UAAU;;IAEvC,OAAgB,MAAM,4BAAY;IAElC;;OAEG;IAGH,KAAK,EAAE,UAAU,CAAa;IAE9B;;OAEG;IACS,IAAI,EAAE,SAAS,CAAY;IAEvC;;OAEG;IACyC,OAAO,UAAS;IAI5D,IAAI,UAAS;cAEM,MAAM,IAAI,kBAAkB;CAmDhD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { provide } from '@lit/context';
|
|
3
|
+
import { html, LitElement } from 'lit';
|
|
4
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
5
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
6
|
+
import { fabMenuColorContext } from './fab-menu-color-context.js';
|
|
7
|
+
import { UmFabMenuItem } from './fab-menu-item.js';
|
|
8
|
+
import { fabMenuOpenContext } from './fab-menu-open-context.js';
|
|
9
|
+
import { styles } from './fab-menu.styles.js';
|
|
10
|
+
let UmFabMenu = class UmFabMenu extends LitElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
/**
|
|
14
|
+
* The FAB color variant to render.
|
|
15
|
+
*/
|
|
16
|
+
this.color = 'primary';
|
|
17
|
+
/**
|
|
18
|
+
* The size of the FAB.
|
|
19
|
+
*/
|
|
20
|
+
this.size = 'medium';
|
|
21
|
+
/**
|
|
22
|
+
* Lowers the FAB's elevation.
|
|
23
|
+
*/
|
|
24
|
+
this.lowered = false;
|
|
25
|
+
this.open = false;
|
|
26
|
+
}
|
|
27
|
+
static { this.styles = [styles]; }
|
|
28
|
+
render() {
|
|
29
|
+
const containerClasses = classMap({
|
|
30
|
+
open: this.open,
|
|
31
|
+
[this.color]: true,
|
|
32
|
+
});
|
|
33
|
+
return html `
|
|
34
|
+
<div class="container ${containerClasses}">
|
|
35
|
+
<div class="menu-items">
|
|
36
|
+
<slot @slotchange=${this.#handleIconItemsSlotChange}></slot>
|
|
37
|
+
</div>
|
|
38
|
+
<u-fab class="toggle-container" .size=${this.size}>
|
|
39
|
+
<u-fab
|
|
40
|
+
class="toggle"
|
|
41
|
+
.color=${this.color}
|
|
42
|
+
.lowered=${this.lowered}
|
|
43
|
+
.size=${this.open ? 'medium' : this.size}
|
|
44
|
+
@click=${this.#toggle}>
|
|
45
|
+
<span class="icon-container" aria-hidden="true">
|
|
46
|
+
<span class="icon icon-default">
|
|
47
|
+
<slot name="icon"></slot>
|
|
48
|
+
</span>
|
|
49
|
+
<span class="icon icon-close">
|
|
50
|
+
<slot name="close-icon">
|
|
51
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
|
|
52
|
+
<path
|
|
53
|
+
d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z" />
|
|
54
|
+
</svg>
|
|
55
|
+
</slot>
|
|
56
|
+
</span>
|
|
57
|
+
</span>
|
|
58
|
+
</u-fab>
|
|
59
|
+
</u-fab>
|
|
60
|
+
</div>
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
#toggle() {
|
|
64
|
+
this.open = !this.open;
|
|
65
|
+
}
|
|
66
|
+
#handleIconItemsSlotChange(event) {
|
|
67
|
+
const elements = event.target.assignedElements({ flatten: true });
|
|
68
|
+
let index = 0;
|
|
69
|
+
for (const element of elements.filter(e => e instanceof UmFabMenuItem).reverse()) {
|
|
70
|
+
element._index = index;
|
|
71
|
+
index++;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
__decorate([
|
|
76
|
+
provide({ context: fabMenuColorContext }),
|
|
77
|
+
property()
|
|
78
|
+
], UmFabMenu.prototype, "color", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
property()
|
|
81
|
+
], UmFabMenu.prototype, "size", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
property({ type: Boolean, reflect: true })
|
|
84
|
+
], UmFabMenu.prototype, "lowered", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
provide({ context: fabMenuOpenContext }),
|
|
87
|
+
state()
|
|
88
|
+
], UmFabMenu.prototype, "open", void 0);
|
|
89
|
+
UmFabMenu = __decorate([
|
|
90
|
+
customElement('u-fab-menu')
|
|
91
|
+
], UmFabMenu);
|
|
92
|
+
export { UmFabMenu };
|
|
93
|
+
//# sourceMappingURL=fab-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu.js","sourceRoot":"","sources":["../../src/button/fab-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAsB,UAAU,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAAlC;;QAIL;;WAEG;QAGH,UAAK,GAAe,SAAS,CAAC;QAE9B;;WAEG;QACS,SAAI,GAAc,QAAQ,CAAC;QAEvC;;WAEG;QACyC,YAAO,GAAG,KAAK,CAAC;QAI5D,SAAI,GAAG,KAAK,CAAC;IAqDf,CAAC;aA1EiB,WAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;IAuBf,MAAM;QACvB,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;8BACe,gBAAgB;;8BAEhB,IAAI,CAAC,0BAA0B;;gDAEb,IAAI,CAAC,IAAI;;;qBAGpC,IAAI,CAAC,KAAK;uBACR,IAAI,CAAC,OAAO;oBACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;qBAC/B,IAAI,CAAC,OAAO;;;;;;;;;;;;;;;;;KAiB5B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,0BAA0B,CAAC,KAAY;QACrC,MAAM,QAAQ,GAAI,KAAK,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvF,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACjF,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;;AAlED;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IACzC,QAAQ,EAAE;wCACmB;AAKlB;IAAX,QAAQ,EAAE;uCAA4B;AAKK;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAAiB;AAI5D;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACxC,KAAK,EAAE;uCACK;AAvBF,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CA4ErB","sourcesContent":["import { provide } from '@lit/context';\n\nimport { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { fabMenuColorContext } from './fab-menu-color-context.js';\nimport { UmFabMenuItem } from './fab-menu-item.js';\nimport { fabMenuOpenContext } from './fab-menu-open-context.js';\nimport { styles } from './fab-menu.styles.js';\nimport { UmFabColor, UmFabSize } from './fab.js';\n\n@customElement('u-fab-menu')\nexport class UmFabMenu extends LitElement {\n\n static override styles = [styles];\n\n /**\n * The FAB color variant to render.\n */\n @provide({ context: fabMenuColorContext })\n @property()\n color: UmFabColor = 'primary';\n\n /**\n * The size of the FAB.\n */\n @property() size: UmFabSize = 'medium';\n\n /**\n * Lowers the FAB's elevation.\n */\n @property({ type: Boolean, reflect: true }) lowered = false;\n\n @provide({ context: fabMenuOpenContext })\n @state()\n open = false;\n\n protected override render(): HTMLTemplateResult {\n const containerClasses = classMap({\n open: this.open,\n [this.color]: true,\n });\n\n return html`\n <div class=\"container ${containerClasses}\">\n <div class=\"menu-items\">\n <slot @slotchange=${this.#handleIconItemsSlotChange}></slot>\n </div>\n <u-fab class=\"toggle-container\" .size=${this.size}>\n <u-fab \n class=\"toggle\"\n .color=${this.color}\n .lowered=${this.lowered}\n .size=${this.open ? 'medium' : this.size}\n @click=${this.#toggle}>\n <span class=\"icon-container\" aria-hidden=\"true\">\n <span class=\"icon icon-default\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"icon icon-close\">\n <slot name=\"close-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path\n d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\" />\n </svg>\n </slot>\n </span>\n </span>\n </u-fab>\n </u-fab>\n </div>\n `;\n }\n\n #toggle(): void {\n this.open = !this.open;\n }\n\n #handleIconItemsSlotChange(event: Event) {\n const elements = (event.target as HTMLSlotElement).assignedElements({ flatten: true });\n\n let index = 0;\n\n for (const element of elements.filter(e => e instanceof UmFabMenuItem).reverse()) {\n element._index = index;\n index++;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-fab-menu': UmFabMenu;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu.styles.d.ts","sourceRoot":"","sources":["../../src/button/fab-menu.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA8IlB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
--_fab-menu-morph-duration: var(--u-fab-menu-morph-duration, 175ms);
|
|
5
|
+
--u-button-morph-duration: var(--_fab-menu-morph-duration);
|
|
6
|
+
display: inline-block;
|
|
7
|
+
pointer-events: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.container {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
align-items: flex-end;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.menu-items {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: flex-end;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
gap: var(--u-fab-menu-item-margin, 4px);
|
|
21
|
+
pointer-events: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.toggle-container {
|
|
25
|
+
position: relative;
|
|
26
|
+
}
|
|
27
|
+
.toggle-container * {
|
|
28
|
+
pointer-events: auto;
|
|
29
|
+
}
|
|
30
|
+
.toggle-container::part(container) {
|
|
31
|
+
--u-elevation-level: 0 !important;
|
|
32
|
+
background: transparent !important;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.toggle {
|
|
36
|
+
position: absolute;
|
|
37
|
+
inset-block-start: 0;
|
|
38
|
+
inset-inline-end: 0;
|
|
39
|
+
margin-top: var(--u-fab-menu-toggle-margin, 8px);
|
|
40
|
+
}
|
|
41
|
+
.toggle::part(container) {
|
|
42
|
+
transition: width var(--_fab-menu-morph-duration), height var(--_fab-menu-morph-duration), background-color var(--_fab-menu-morph-duration) linear, border-radius var(--_fab-menu-morph-duration) linear, color var(--_fab-menu-morph-duration) linear;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.icon-container {
|
|
46
|
+
position: relative;
|
|
47
|
+
height: 1px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.icon {
|
|
51
|
+
--_scale: 1;
|
|
52
|
+
position: absolute;
|
|
53
|
+
top: 50%;
|
|
54
|
+
left: 50%;
|
|
55
|
+
display: inline-flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
transform: translate3d(-50%, -50%, 0) scale(var(--_scale));
|
|
59
|
+
transition: opacity, transform;
|
|
60
|
+
transition-duration: calc(var(--_fab-menu-morph-duration) * 0.75);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.icon-default {
|
|
64
|
+
--_scale: 1;
|
|
65
|
+
opacity: 1;
|
|
66
|
+
transition-delay: calc(var(--_fab-menu-morph-duration) * 0.5);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.icon-close {
|
|
70
|
+
--_scale: .5;
|
|
71
|
+
opacity: 0;
|
|
72
|
+
transition-delay: 0ms;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.open .menu-items {
|
|
76
|
+
display: flex;
|
|
77
|
+
pointer-events: auto;
|
|
78
|
+
}
|
|
79
|
+
.open .toggle::part(container) {
|
|
80
|
+
border-radius: 50%;
|
|
81
|
+
}
|
|
82
|
+
.open .icon-default {
|
|
83
|
+
--_scale: .5;
|
|
84
|
+
opacity: 0;
|
|
85
|
+
transition-delay: 0ms;
|
|
86
|
+
}
|
|
87
|
+
.open .icon-close {
|
|
88
|
+
--_scale: 1;
|
|
89
|
+
opacity: 1;
|
|
90
|
+
transition-delay: calc(var(--_fab-menu-morph-duration) * 0.5);
|
|
91
|
+
}
|
|
92
|
+
.open.primary {
|
|
93
|
+
--u-fab-primary-container-color: var(--u-fab-menu-toggle-primary-container-color, var(--u-color-primary, rgb(103, 80, 164)));
|
|
94
|
+
--u-fab-primary-text-color: var(--u-fab-menu-toggle-primary-text-color, var(--u-color-on-primary, rgb(255, 255, 255)));
|
|
95
|
+
}
|
|
96
|
+
.open.secondary {
|
|
97
|
+
--u-fab-secondary-container-color: var(--u-fab-menu-toggle-secondary-container-color, var(--u-color-secondary, rgb(98, 91, 113)));
|
|
98
|
+
--u-fab-secondary-text-color: var(--u-fab-menu-toggle-secondary-text-color, var(--u-color-on-secondary, rgb(255, 255, 255)));
|
|
99
|
+
}
|
|
100
|
+
.open.tertiary {
|
|
101
|
+
--u-fab-tertiary-container-color: var(--u-fab-menu-toggle-tertiary-container-color, var(--u-color-tertiary, rgb(125, 82, 96)));
|
|
102
|
+
--u-fab-tertiary-text-color: var(--u-fab-menu-toggle-tertiary-text-color, var(--u-color-on-tertiary, rgb(255, 255, 255)));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
::slotted(u-fab-menu-item) {
|
|
106
|
+
--_animation-delay: $i * 50ms;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
::slotted(u-fab-menu-item) {
|
|
110
|
+
--_animation-delay: $i * 50ms;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
::slotted(u-fab-menu-item) {
|
|
114
|
+
--_animation-delay: $i * 50ms;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
::slotted(u-fab-menu-item) {
|
|
118
|
+
--_animation-delay: $i * 50ms;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
::slotted(u-fab-menu-item) {
|
|
122
|
+
--_animation-delay: $i * 50ms;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
::slotted(u-fab-menu-item) {
|
|
126
|
+
--_animation-delay: $i * 50ms;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
::slotted(u-fab-menu-item) {
|
|
130
|
+
--_animation-delay: $i * 50ms;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
::slotted(u-fab-menu-item) {
|
|
134
|
+
--_animation-delay: $i * 50ms;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
::slotted(u-fab-menu-item) {
|
|
138
|
+
--_animation-delay: $i * 50ms;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
::slotted(u-fab-menu-item) {
|
|
142
|
+
--_animation-delay: $i * 50ms;
|
|
143
|
+
}
|
|
144
|
+
`;
|
|
145
|
+
//# sourceMappingURL=fab-menu.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab-menu.styles.js","sourceRoot":"","sources":["../../src/button/fab-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8IzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --_fab-menu-morph-duration: var(--u-fab-menu-morph-duration, 175ms);\n --u-button-morph-duration: var(--_fab-menu-morph-duration);\n display: inline-block;\n pointer-events: none;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .menu-items {\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n gap: var(--u-fab-menu-item-margin, 4px);\n pointer-events: none;\n }\n\n .toggle-container {\n position: relative;\n }\n .toggle-container * {\n pointer-events: auto;\n }\n .toggle-container::part(container) {\n --u-elevation-level: 0 !important;\n background: transparent !important;\n }\n\n .toggle {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n margin-top: var(--u-fab-menu-toggle-margin, 8px);\n }\n .toggle::part(container) {\n transition: width var(--_fab-menu-morph-duration), height var(--_fab-menu-morph-duration), background-color var(--_fab-menu-morph-duration) linear, border-radius var(--_fab-menu-morph-duration) linear, color var(--_fab-menu-morph-duration) linear;\n }\n\n .icon-container {\n position: relative;\n height: 1px;\n }\n\n .icon {\n --_scale: 1;\n position: absolute;\n top: 50%;\n left: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transform: translate3d(-50%, -50%, 0) scale(var(--_scale));\n transition: opacity, transform;\n transition-duration: calc(var(--_fab-menu-morph-duration) * 0.75);\n }\n\n .icon-default {\n --_scale: 1;\n opacity: 1;\n transition-delay: calc(var(--_fab-menu-morph-duration) * 0.5);\n }\n\n .icon-close {\n --_scale: .5;\n opacity: 0;\n transition-delay: 0ms;\n }\n\n .open .menu-items {\n display: flex;\n pointer-events: auto;\n }\n .open .toggle::part(container) {\n border-radius: 50%;\n }\n .open .icon-default {\n --_scale: .5;\n opacity: 0;\n transition-delay: 0ms;\n }\n .open .icon-close {\n --_scale: 1;\n opacity: 1;\n transition-delay: calc(var(--_fab-menu-morph-duration) * 0.5);\n }\n .open.primary {\n --u-fab-primary-container-color: var(--u-fab-menu-toggle-primary-container-color, var(--u-color-primary, rgb(103, 80, 164)));\n --u-fab-primary-text-color: var(--u-fab-menu-toggle-primary-text-color, var(--u-color-on-primary, rgb(255, 255, 255)));\n }\n .open.secondary {\n --u-fab-secondary-container-color: var(--u-fab-menu-toggle-secondary-container-color, var(--u-color-secondary, rgb(98, 91, 113)));\n --u-fab-secondary-text-color: var(--u-fab-menu-toggle-secondary-text-color, var(--u-color-on-secondary, rgb(255, 255, 255)));\n }\n .open.tertiary {\n --u-fab-tertiary-container-color: var(--u-fab-menu-toggle-tertiary-container-color, var(--u-color-tertiary, rgb(125, 82, 96)));\n --u-fab-tertiary-text-color: var(--u-fab-menu-toggle-tertiary-text-color, var(--u-color-on-tertiary, rgb(255, 255, 255)));\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n\n ::slotted(u-fab-menu-item) {\n --_animation-delay: $i * 50ms;\n }\n`;\n"]}
|
package/button/fab.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class UmFab extends UmButtonBase {
|
|
|
21
21
|
*/
|
|
22
22
|
lowered: boolean;
|
|
23
23
|
get extended(): boolean;
|
|
24
|
-
protected
|
|
24
|
+
protected _getContainerClasses(): Record<string, boolean>;
|
|
25
|
+
protected _renderContent(): HTMLTemplateResult;
|
|
25
26
|
}
|
|
26
27
|
declare global {
|
|
27
28
|
interface HTMLElementTagNameMap {
|
package/button/fab.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fab.d.ts","sourceRoot":"","sources":["../../src/button/fab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,qBACa,KAAM,SAAQ,YAAY;IAErC,OAAgB,MAAM,iCAAiC;IAEvD;;OAEG;
|
|
1
|
+
{"version":3,"file":"fab.d.ts","sourceRoot":"","sources":["../../src/button/fab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,qBACa,KAAM,SAAQ,YAAY;IAErC,OAAgB,MAAM,iCAAiC;IAEvD;;OAEG;IACS,KAAK,EAAE,UAAU,CAAa;IAE1C;;OAEG;IACS,IAAI,EAAE,SAAS,CAAY;IAEvC;;OAEG;IACS,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAExC;;OAEG;IACyC,OAAO,UAAS;IAE5D,IAAI,QAAQ,IAAI,OAAO,CAEtB;cAEkB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAU/C,cAAc,IAAI,kBAAkB;CAQxD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
|
package/button/fab.js
CHANGED
|
@@ -27,7 +27,16 @@ let UmFab = class UmFab extends UmButtonBase {
|
|
|
27
27
|
get extended() {
|
|
28
28
|
return !!this.label;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
_getContainerClasses() {
|
|
31
|
+
return {
|
|
32
|
+
...super._getContainerClasses(),
|
|
33
|
+
[this.color]: true,
|
|
34
|
+
[this.size]: true,
|
|
35
|
+
lowered: this.lowered,
|
|
36
|
+
extended: this.extended,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
_renderContent() {
|
|
31
40
|
const labelTag = html `<span>${this.label}</span>`;
|
|
32
41
|
return html `
|
|
33
42
|
<span class="icon" aria-hidden="true"><slot></slot></span>
|
|
@@ -36,20 +45,17 @@ let UmFab = class UmFab extends UmButtonBase {
|
|
|
36
45
|
}
|
|
37
46
|
};
|
|
38
47
|
__decorate([
|
|
39
|
-
property(
|
|
48
|
+
property()
|
|
40
49
|
], UmFab.prototype, "color", void 0);
|
|
41
50
|
__decorate([
|
|
42
|
-
property(
|
|
51
|
+
property()
|
|
43
52
|
], UmFab.prototype, "size", void 0);
|
|
44
53
|
__decorate([
|
|
45
|
-
property(
|
|
54
|
+
property()
|
|
46
55
|
], UmFab.prototype, "label", void 0);
|
|
47
56
|
__decorate([
|
|
48
57
|
property({ type: Boolean, reflect: true })
|
|
49
58
|
], UmFab.prototype, "lowered", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
property({ type: Boolean, reflect: true })
|
|
52
|
-
], UmFab.prototype, "extended", null);
|
|
53
59
|
UmFab = __decorate([
|
|
54
60
|
customElement('u-fab')
|
|
55
61
|
], UmFab);
|
package/button/fab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fab.js","sourceRoot":"","sources":["../../src/button/fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAMlC,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,YAAY;IAAhC;;QAIL;;WAEG;
|
|
1
|
+
{"version":3,"file":"fab.js","sourceRoot":"","sources":["../../src/button/fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAMlC,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,YAAY;IAAhC;;QAIL;;WAEG;QACS,UAAK,GAAe,SAAS,CAAC;QAE1C;;WAEG;QACS,SAAI,GAAc,QAAQ,CAAC;QAEvC;;WAEG;QACS,UAAK,GAAkB,IAAI,CAAC;QAExC;;WAEG;QACyC,YAAO,GAAG,KAAK,CAAC;IAwB9D,CAAC;aA5CiB,WAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,AAAhC,CAAiC;IAsBvD,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEkB,oBAAoB;QACrC,OAAO;YACL,GAAG,KAAK,CAAC,oBAAoB,EAAE;YAC/B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI;YAClB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAEkB,cAAc;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAA,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC;QAElD,OAAO,IAAI,CAAA;;QAEP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;KAClC,CAAC;IACJ,CAAC;;AAtCW;IAAX,QAAQ,EAAE;oCAA+B;AAK9B;IAAX,QAAQ,EAAE;mCAA4B;AAK3B;IAAX,QAAQ,EAAE;oCAA6B;AAKI;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAAiB;AAtBjD,KAAK;IADjB,aAAa,CAAC,OAAO,CAAC;GACV,KAAK,CA8CjB","sourcesContent":["import { html, HTMLTemplateResult, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { UmButtonBase } from './button-base.js';\nimport { styles } from './fab.styles.js';\n\nexport type UmFabColor = 'primary' | 'secondary' | 'tertiary' | 'surface' | 'branded';\nexport type UmFabSize = 'small' | 'medium' | 'large';\n\n@customElement('u-fab')\nexport class UmFab extends UmButtonBase {\n\n static override styles = [UmButtonBase.styles, styles];\n\n /**\n * The FAB color variant to render.\n */\n @property() color: UmFabColor = 'primary';\n\n /**\n * The size of the FAB.\n */\n @property() size: UmFabSize = 'medium';\n\n /**\n * The text to display the FAB.\n */\n @property() label: string | null = null;\n\n /**\n * Lowers the FAB's elevation.\n */\n @property({ type: Boolean, reflect: true }) lowered = false;\n\n get extended(): boolean {\n return !!this.label;\n }\n\n protected override _getContainerClasses(): Record<string, boolean> {\n return {\n ...super._getContainerClasses(),\n [this.color]: true,\n [this.size]: true,\n lowered: this.lowered,\n extended: this.extended,\n };\n }\n\n protected override _renderContent(): HTMLTemplateResult {\n const labelTag = html`<span>${this.label}</span>`;\n\n return html`\n <span class=\"icon\" aria-hidden=\"true\"><slot></slot></span>\n ${this.label ? labelTag : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-fab': UmFab;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fab.styles.d.ts","sourceRoot":"","sources":["../../src/button/fab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"fab.styles.d.ts","sourceRoot":"","sources":["../../src/button/fab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgFlB,CAAC"}
|
package/button/fab.styles.js
CHANGED
|
@@ -1,89 +1,83 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
2
|
export const styles = css `
|
|
3
|
-
|
|
3
|
+
.container {
|
|
4
|
+
--u-elevation-level: var(--u-fab-elevation-level, 3);
|
|
4
5
|
aspect-ratio: 1;
|
|
5
|
-
--u-elevation-level: var(--u-fab-button-elevation-level, 3);
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
:host([lowered]) {
|
|
9
|
-
--u-elevation-level: var(--u-fab-button-elevation-level, 1);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
7
|
@media (hover: hover) {
|
|
13
|
-
:
|
|
14
|
-
--u-elevation-level: var(--u-fab-
|
|
15
|
-
}
|
|
16
|
-
:host(:hover:not(:focus-within):not(:active)[lowered]) {
|
|
17
|
-
--u-elevation-level: var(--u-fab-button-elevation-level, 2);
|
|
8
|
+
.container:hover:not(:focus-within):not(:active) {
|
|
9
|
+
--u-elevation-level: var(--u-fab-hover-elevation-level, 4);
|
|
18
10
|
}
|
|
19
11
|
}
|
|
12
|
+
|
|
13
|
+
.lowered {
|
|
14
|
+
--u-elevation-level: var(--u-fab-elevation-level, 1);
|
|
15
|
+
}
|
|
20
16
|
@media (hover: hover) {
|
|
21
|
-
:
|
|
22
|
-
--u-elevation-level: var(--u-fab-
|
|
17
|
+
.lowered:hover:not(:focus-within):not(:active) {
|
|
18
|
+
--u-elevation-level: var(--u-fab-elevation-level, 2);
|
|
23
19
|
}
|
|
24
20
|
}
|
|
25
|
-
:host([size=small]) {
|
|
26
|
-
width: var(--u-fab-button-small-size, 40px);
|
|
27
|
-
border-radius: var(--u-fab-button-medium-shape-corner, var(--u-shape-corner-medium, 12px));
|
|
28
|
-
}
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
width: var(--u-fab-
|
|
32
|
-
border-radius: var(--u-fab-
|
|
22
|
+
.small {
|
|
23
|
+
width: var(--u-fab-small-size, 40px);
|
|
24
|
+
border-radius: var(--u-fab-small-shape-corner, var(--u-shape-corner-medium, 12px));
|
|
33
25
|
}
|
|
34
26
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
.large {
|
|
28
|
+
width: var(--u-fab-large-size, 96px);
|
|
29
|
+
border-radius: var(--u-fab-large-shape-corner, var(--u-shape-corner-extra-large, 28px));
|
|
30
|
+
}
|
|
31
|
+
.large .icon {
|
|
32
|
+
font-size: var(--u-fab-large-icon-size, 2rem);
|
|
39
33
|
}
|
|
40
34
|
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
.extended,
|
|
36
|
+
.medium {
|
|
37
|
+
width: var(--u-fab-medium-size, 56px);
|
|
38
|
+
border-radius: var(--u-fab-medium-shape-corner, var(--u-shape-corner-large, 16px));
|
|
43
39
|
}
|
|
44
40
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
font-size: var(--u-fab-
|
|
41
|
+
.extended .icon,
|
|
42
|
+
.small .icon,
|
|
43
|
+
.medium .icon {
|
|
44
|
+
font-size: var(--u-fab-icon-size, 1.5rem);
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
.extended {
|
|
52
48
|
width: auto;
|
|
53
|
-
height: var(--u-extended-fab-
|
|
49
|
+
height: var(--u-extended-fab-height, 56px);
|
|
54
50
|
aspect-ratio: auto;
|
|
55
|
-
min-width: var(--u-extended-fab-
|
|
56
|
-
padding-inline: var(--u-extended-fab-
|
|
51
|
+
min-width: var(--u-extended-fab-min-width, 80px);
|
|
52
|
+
padding-inline: var(--u-extended-fab-padding, 16px 24px);
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
margin-inline-end: var(--u-extended-fab-button-icon-margin, 12px);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
:host([color=primary]) {
|
|
64
|
-
background-color: var(--u-fab-button-primary-bg-color, var(--u-color-primary-container, rgb(234, 221, 255)));
|
|
65
|
-
color: var(--u-fab-button-primary-text-color, var(--u-color-on-primary-container, rgb(33, 0, 93)));
|
|
54
|
+
.extended .icon {
|
|
55
|
+
margin-inline-end: var(--u-extended-fab-icon-margin, 12px);
|
|
66
56
|
}
|
|
67
57
|
|
|
68
|
-
|
|
69
|
-
background-color: var(--u-fab-
|
|
70
|
-
color: var(--u-fab-
|
|
58
|
+
.primary {
|
|
59
|
+
background-color: var(--u-fab-primary-container-color, var(--u-color-primary-container, rgb(234, 221, 255)));
|
|
60
|
+
color: var(--u-fab-primary-text-color, var(--u-color-on-primary-container, rgb(33, 0, 93)));
|
|
71
61
|
}
|
|
72
62
|
|
|
73
|
-
|
|
74
|
-
background-color: var(--u-fab-
|
|
75
|
-
color: var(--u-fab-
|
|
63
|
+
.secondary {
|
|
64
|
+
background-color: var(--u-fab-secondary-container-color, var(--u-color-secondary-container, rgb(232, 222, 248)));
|
|
65
|
+
color: var(--u-fab-secondary-text-color, var(--u-color-on-secondary-container, rgb(29, 25, 43)));
|
|
76
66
|
}
|
|
77
67
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
color: var(--u-fab-button-surface-text-color, var(--_color-primary));
|
|
68
|
+
.tertiary {
|
|
69
|
+
background-color: var(--u-fab-tertiary-container-color, var(--u-color-tertiary-container, rgb(255, 216, 228)));
|
|
70
|
+
color: var(--u-fab-tertiary-text-color, var(--u-color-on-tertiary-container, rgb(49, 17, 29)));
|
|
82
71
|
}
|
|
83
72
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
background-color: var(--u-fab-
|
|
73
|
+
.branded,
|
|
74
|
+
.surface {
|
|
75
|
+
background-color: var(--u-fab-surface-container-color, var(--u-color-surface-container-high, rgb(236, 230, 240)));
|
|
76
|
+
color: var(--u-fab-surface-text-color, var(--_color-primary));
|
|
77
|
+
}
|
|
78
|
+
.branded.lowered,
|
|
79
|
+
.surface.lowered {
|
|
80
|
+
background-color: var(--u-fab-surface-container-color, var(--u-color-surface-container-low, rgb(247, 242, 250)));
|
|
87
81
|
}
|
|
88
82
|
`;
|
|
89
83
|
//# sourceMappingURL=fab.styles.js.map
|