@universal-material/web 3.4.2 → 3.5.1

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.
Files changed (125) hide show
  1. package/badge/badge.d.ts +2 -0
  2. package/badge/badge.d.ts.map +1 -1
  3. package/badge/badge.js +19 -2
  4. package/badge/badge.js.map +1 -1
  5. package/badge/badge.styles.d.ts.map +1 -1
  6. package/badge/badge.styles.js +3 -5
  7. package/badge/badge.styles.js.map +1 -1
  8. package/button/button-base.d.ts +1 -1
  9. package/button/button-base.d.ts.map +1 -1
  10. package/button/button-base.js +1 -1
  11. package/button/button-base.js.map +1 -1
  12. package/button/button-base.styles.d.ts.map +1 -1
  13. package/button/button-base.styles.js +3 -0
  14. package/button/button-base.styles.js.map +1 -1
  15. package/button/button.d.ts +5 -11
  16. package/button/button.d.ts.map +1 -1
  17. package/button/button.js +29 -20
  18. package/button/button.js.map +1 -1
  19. package/button/button.styles.d.ts.map +1 -1
  20. package/button/button.styles.js +41 -50
  21. package/button/button.styles.js.map +1 -1
  22. package/button/fab-menu-color-context.d.ts +5 -0
  23. package/button/fab-menu-color-context.d.ts.map +1 -0
  24. package/button/fab-menu-color-context.js +3 -0
  25. package/button/fab-menu-color-context.js.map +1 -0
  26. package/button/fab-menu-item.d.ts +23 -0
  27. package/button/fab-menu-item.d.ts.map +1 -0
  28. package/button/fab-menu-item.js +70 -0
  29. package/button/fab-menu-item.js.map +1 -0
  30. package/button/fab-menu-item.styles.d.ts +2 -0
  31. package/button/fab-menu-item.styles.d.ts.map +1 -0
  32. package/button/fab-menu-item.styles.js +82 -0
  33. package/button/fab-menu-item.styles.js.map +1 -0
  34. package/button/fab-menu-open-context.d.ts +4 -0
  35. package/button/fab-menu-open-context.d.ts.map +1 -0
  36. package/button/fab-menu-open-context.js +3 -0
  37. package/button/fab-menu-open-context.js.map +1 -0
  38. package/button/fab-menu.d.ts +26 -0
  39. package/button/fab-menu.d.ts.map +1 -0
  40. package/button/fab-menu.js +93 -0
  41. package/button/fab-menu.js.map +1 -0
  42. package/button/fab-menu.styles.d.ts +2 -0
  43. package/button/fab-menu.styles.d.ts.map +1 -0
  44. package/button/fab-menu.styles.js +145 -0
  45. package/button/fab-menu.styles.js.map +1 -0
  46. package/button/fab.d.ts +2 -1
  47. package/button/fab.d.ts.map +1 -1
  48. package/button/fab.js +13 -7
  49. package/button/fab.js.map +1 -1
  50. package/button/fab.styles.d.ts.map +1 -1
  51. package/button/fab.styles.js +50 -56
  52. package/button/fab.styles.js.map +1 -1
  53. package/button/icon-button.d.ts +3 -2
  54. package/button/icon-button.d.ts.map +1 -1
  55. package/button/icon-button.js +12 -4
  56. package/button/icon-button.js.map +1 -1
  57. package/button/icon-button.styles.d.ts.map +1 -1
  58. package/button/icon-button.styles.js +28 -30
  59. package/button/icon-button.styles.js.map +1 -1
  60. package/button/toggle-button.d.ts +6 -5
  61. package/button/toggle-button.d.ts.map +1 -1
  62. package/button/toggle-button.js +27 -8
  63. package/button/toggle-button.js.map +1 -1
  64. package/button/toggle-button.styles.d.ts.map +1 -1
  65. package/button/toggle-button.styles.js +18 -13
  66. package/button/toggle-button.styles.js.map +1 -1
  67. package/chip/chip.d.ts +9 -23
  68. package/chip/chip.d.ts.map +1 -1
  69. package/chip/chip.js +60 -60
  70. package/chip/chip.js.map +1 -1
  71. package/chip/chip.styles.d.ts.map +1 -1
  72. package/chip/chip.styles.js +32 -39
  73. package/chip/chip.styles.js.map +1 -1
  74. package/custom-elements.json +2589 -1886
  75. package/index.d.ts +2 -0
  76. package/index.d.ts.map +1 -1
  77. package/index.js +2 -0
  78. package/index.js.map +1 -1
  79. package/list/list-item.d.ts.map +1 -1
  80. package/list/list-item.js +13 -9
  81. package/list/list-item.js.map +1 -1
  82. package/list/list-item.styles.d.ts.map +1 -1
  83. package/list/list-item.styles.js +5 -1
  84. package/list/list-item.styles.js.map +1 -1
  85. package/menu/menu-item.d.ts +6 -24
  86. package/menu/menu-item.d.ts.map +1 -1
  87. package/menu/menu-item.js +22 -44
  88. package/menu/menu-item.js.map +1 -1
  89. package/menu/menu-item.styles.d.ts.map +1 -1
  90. package/menu/menu-item.styles.js +6 -5
  91. package/menu/menu-item.styles.js.map +1 -1
  92. package/navigation/drawer-item.d.ts +5 -14
  93. package/navigation/drawer-item.d.ts.map +1 -1
  94. package/navigation/drawer-item.js +18 -21
  95. package/navigation/drawer-item.js.map +1 -1
  96. package/navigation/drawer-item.styles.d.ts.map +1 -1
  97. package/navigation/drawer-item.styles.js +8 -7
  98. package/navigation/drawer-item.styles.js.map +1 -1
  99. package/package.json +1 -1
  100. package/select/option.d.ts +1 -1
  101. package/select/option.d.ts.map +1 -1
  102. package/select/option.js +1 -1
  103. package/select/option.js.map +1 -1
  104. package/shared/base.styles.d.ts.map +1 -1
  105. package/shared/base.styles.js +1 -0
  106. package/shared/base.styles.js.map +1 -1
  107. package/shared/button-wrapper.d.ts +4 -6
  108. package/shared/button-wrapper.d.ts.map +1 -1
  109. package/shared/button-wrapper.js +20 -12
  110. package/shared/button-wrapper.js.map +1 -1
  111. package/shared/button-wrapper.styles.d.ts.map +1 -1
  112. package/shared/button-wrapper.styles.js +7 -5
  113. package/shared/button-wrapper.styles.js.map +1 -1
  114. package/tab-bar/tab-bar.js +3 -2
  115. package/tab-bar/tab-bar.js.map +1 -1
  116. package/tab-bar/tab.d.ts +4 -2
  117. package/tab-bar/tab.d.ts.map +1 -1
  118. package/tab-bar/tab.js +18 -10
  119. package/tab-bar/tab.js.map +1 -1
  120. package/tab-bar/tab.styles.js +2 -2
  121. package/tab-bar/tab.styles.js.map +1 -1
  122. package/typeahead/typeahead.styles.d.ts.map +1 -1
  123. package/typeahead/typeahead.styles.js +1 -4
  124. package/typeahead/typeahead.styles.js.map +1 -1
  125. package/vscode.html-custom-data.json +267 -250
@@ -0,0 +1,23 @@
1
+ import { HTMLTemplateResult } from 'lit';
2
+ import { UmButtonBase } from './button-base.js';
3
+ export declare class UmFabMenuItem extends UmButtonBase {
4
+ #private;
5
+ static styles: import("lit").CSSResultGroup[];
6
+ private readonly _color;
7
+ private readonly _menuOpen;
8
+ /**
9
+ * The text to display the FAB menu item.
10
+ */
11
+ label: string | null;
12
+ private _hasIcon;
13
+ get _index(): number;
14
+ set _index(value: number);
15
+ protected _getContainerClasses(): Record<string, boolean>;
16
+ protected _renderContent(): HTMLTemplateResult;
17
+ }
18
+ declare global {
19
+ interface HTMLElementTagNameMap {
20
+ 'u-fab-menu-item': UmFabMenuItem;
21
+ }
22
+ }
23
+ //# sourceMappingURL=fab-menu-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab-menu-item.d.ts","sourceRoot":"","sources":["../../src/button/fab-menu-item.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,qBACa,aAAc,SAAQ,YAAY;;IAE7C,OAAgB,MAAM,iCAAiC;IAKvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAIrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAErC;;OAEG;IACS,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B,OAAO,CAAC,QAAQ,CAAS;IAElC,IACI,MAAM,WAET;IAED,IAAI,MAAM,CAAC,KAAK,QAAA,EAGf;cAEkB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAS/C,cAAc,IAAI,kBAAkB;CAaxD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
@@ -0,0 +1,70 @@
1
+ import { __decorate } from "tslib";
2
+ import { consume } from '@lit/context';
3
+ import { html } from 'lit';
4
+ import { customElement, property, state } from 'lit/decorators.js';
5
+ import { UmButtonBase } from './button-base.js';
6
+ import { fabMenuColorContext } from './fab-menu-color-context.js';
7
+ import { styles } from './fab-menu-item.styles.js';
8
+ import { fabMenuOpenContext } from './fab-menu-open-context.js';
9
+ let UmFabMenuItem = class UmFabMenuItem extends UmButtonBase {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.#index = 0;
13
+ /**
14
+ * The text to display the FAB menu item.
15
+ */
16
+ this.label = null;
17
+ this._hasIcon = false;
18
+ }
19
+ static { this.styles = [UmButtonBase.styles, styles]; }
20
+ #index;
21
+ get _index() {
22
+ return this.#index;
23
+ }
24
+ set _index(value) {
25
+ this.#index = value;
26
+ this.style.setProperty('--_animation-delay-increment', value.toString());
27
+ }
28
+ _getContainerClasses() {
29
+ return {
30
+ ...super._getContainerClasses(),
31
+ open: this._menuOpen,
32
+ [this._color]: true,
33
+ 'has-icon': this._hasIcon,
34
+ };
35
+ }
36
+ _renderContent() {
37
+ return html `
38
+ <span class="clipper"></span>
39
+ <span class="icon" aria-hidden="true">
40
+ <slot @slotchange=${this.#handleIconSlotChange}></slot>
41
+ </span>
42
+ <span class="label">${this.label}</span>
43
+ `;
44
+ }
45
+ #handleIconSlotChange(e) {
46
+ this._hasIcon = e.target.assignedElements({ flatten: true }).length > 0;
47
+ }
48
+ };
49
+ __decorate([
50
+ consume({ context: fabMenuColorContext, subscribe: true }),
51
+ state()
52
+ ], UmFabMenuItem.prototype, "_color", void 0);
53
+ __decorate([
54
+ consume({ context: fabMenuOpenContext, subscribe: true }),
55
+ state()
56
+ ], UmFabMenuItem.prototype, "_menuOpen", void 0);
57
+ __decorate([
58
+ property()
59
+ ], UmFabMenuItem.prototype, "label", void 0);
60
+ __decorate([
61
+ state()
62
+ ], UmFabMenuItem.prototype, "_hasIcon", void 0);
63
+ __decorate([
64
+ state()
65
+ ], UmFabMenuItem.prototype, "_index", null);
66
+ UmFabMenuItem = __decorate([
67
+ customElement('u-fab-menu-item')
68
+ ], UmFabMenuItem);
69
+ export { UmFabMenuItem };
70
+ //# sourceMappingURL=fab-menu-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab-menu-item.js","sourceRoot":"","sources":["../../src/button/fab-menu-item.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAsB,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIzD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY;IAAxC;;QAGL,WAAM,GAAG,CAAC,CAAC;QAUX;;WAEG;QACS,UAAK,GAAkB,IAAI,CAAC;QAEvB,aAAQ,GAAG,KAAK,CAAC;IAkCpC,CAAC;aAlDiB,WAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,AAAhC,CAAiC;IACvD,MAAM,CAAK;IAkBX,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEkB,oBAAoB;QACrC,OAAO;YACL,GAAG,KAAK,CAAC,oBAAoB,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAEkB,cAAc;QAC/B,OAAO,IAAI,CAAA;;;4BAGa,IAAI,CAAC,qBAAqB;;4BAE1B,IAAI,CAAC,KAAK;KACjC,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,CAAQ;QAC5B,IAAI,CAAC,QAAQ,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/F,CAAC;;AA5CgB;IAFhB,OAAO,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1D,KAAK,EAAE;6CAC6B;AAIpB;IAFhB,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzD,KAAK,EAAE;gDAC6B;AAKzB;IAAX,QAAQ,EAAE;4CAA6B;AAEvB;IAAhB,KAAK,EAAE;+CAA0B;AAGlC;IADC,KAAK,EAAE;2CAGP;AAvBU,aAAa;IADzB,aAAa,CAAC,iBAAiB,CAAC;GACpB,aAAa,CAoDzB","sourcesContent":["import { consume } from '@lit/context';\n\nimport { html, HTMLTemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { UmButtonBase } from './button-base.js';\nimport { fabMenuColorContext } from './fab-menu-color-context.js';\nimport { styles } from './fab-menu-item.styles.js';\nimport { fabMenuOpenContext } from './fab-menu-open-context.js';\nimport { UmFabColor } from './fab.js';\n\n@customElement('u-fab-menu-item')\nexport class UmFabMenuItem extends UmButtonBase {\n\n static override styles = [UmButtonBase.styles, styles];\n #index = 0;\n\n @consume({ context: fabMenuColorContext, subscribe: true })\n @state()\n private readonly _color!: UmFabColor;\n\n @consume({ context: fabMenuOpenContext, subscribe: true })\n @state()\n private readonly _menuOpen!: boolean;\n\n /**\n * The text to display the FAB menu item.\n */\n @property() label: string | null = null;\n\n @state() private _hasIcon = false;\n\n @state()\n get _index() {\n return this.#index;\n }\n\n set _index(value) {\n this.#index = value;\n this.style.setProperty('--_animation-delay-increment', value.toString());\n }\n\n protected override _getContainerClasses(): Record<string, boolean> {\n return {\n ...super._getContainerClasses(),\n open: this._menuOpen,\n [this._color]: true,\n 'has-icon': this._hasIcon,\n };\n }\n\n protected override _renderContent(): HTMLTemplateResult {\n return html`\n <span class=\"clipper\"></span>\n <span class=\"icon\" aria-hidden=\"true\">\n <slot @slotchange=${this.#handleIconSlotChange}></slot>\n </span>\n <span class=\"label\">${this.label}</span>\n `;\n }\n\n #handleIconSlotChange(e: Event) {\n this._hasIcon = (e.target as HTMLSlotElement).assignedElements({ flatten: true }).length > 0;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-fab-menu-item': UmFabMenuItem;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=fab-menu-item.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab-menu-item.styles.d.ts","sourceRoot":"","sources":["../../src/button/fab-menu-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA+ElB,CAAC"}
@@ -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,4 @@
1
+ export declare const fabMenuOpenContext: {
2
+ __context__: boolean;
3
+ };
4
+ //# sourceMappingURL=fab-menu-open-context.d.ts.map
@@ -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,3 @@
1
+ import { createContext } from '@lit/context';
2
+ export const fabMenuOpenContext = createContext(Symbol('fabMenuOpenContext'));
3
+ //# sourceMappingURL=fab-menu-open-context.js.map
@@ -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,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=fab-menu.styles.d.ts.map
@@ -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 renderContent(): HTMLTemplateResult;
24
+ protected _getContainerClasses(): Record<string, boolean>;
25
+ protected _renderContent(): HTMLTemplateResult;
25
26
  }
26
27
  declare global {
27
28
  interface HTMLElementTagNameMap {
@@ -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;IAC0B,KAAK,EAAE,UAAU,CAAa;IAE3D;;OAEG;IAC0B,IAAI,EAAE,SAAS,CAAY;IAExD;;OAEG;IAC0B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzD;;OAEG;IACyC,OAAO,UAAS;IAE5D,IACI,QAAQ,IAAI,OAAO,CAEtB;cAEkB,aAAa,IAAI,kBAAkB;CAQvD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
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
- renderContent() {
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({ reflect: true })
48
+ property()
40
49
  ], UmFab.prototype, "color", void 0);
41
50
  __decorate([
42
- property({ reflect: true })
51
+ property()
43
52
  ], UmFab.prototype, "size", void 0);
44
53
  __decorate([
45
- property({ reflect: true })
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;QAC0B,UAAK,GAAe,SAAS,CAAC;QAE3D;;WAEG;QAC0B,SAAI,GAAc,QAAQ,CAAC;QAExD;;WAEG;QAC0B,UAAK,GAAkB,IAAI,CAAC;QAEzD;;WAEG;QACyC,YAAO,GAAG,KAAK,CAAC;IAe9D,CAAC;aAnCiB,WAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,AAAhC,CAAiC;IAuBvD,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEkB,aAAa;QAC9B,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;;AA7B4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCAA+B;AAK9B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mCAA4B;AAK3B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCAA6B;AAKb;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAAiB;AAG5D;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qCAG1C;AA3BU,KAAK;IADjB,aAAa,CAAC,OAAO,CAAC;GACV,KAAK,CAqCjB","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({ reflect: true }) color: UmFabColor = 'primary';\n\n /**\n * The size of the FAB.\n */\n @property({ reflect: true }) size: UmFabSize = 'medium';\n\n /**\n * The text to display the FAB.\n */\n @property({ reflect: true }) label: string | null = null;\n\n /**\n * Lowers the FAB's elevation.\n */\n @property({ type: Boolean, reflect: true }) lowered = false;\n\n @property({ type: Boolean, reflect: true })\n get extended(): boolean {\n return !!this.label;\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
+ {"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,yBAsFlB,CAAC"}
1
+ {"version":3,"file":"fab.styles.d.ts","sourceRoot":"","sources":["../../src/button/fab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgFlB,CAAC"}