@api-client/ui 0.2.10 → 0.2.12

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 (154) hide show
  1. package/build/src/elements/http/CertificateAdd.element.d.ts.map +1 -1
  2. package/build/src/elements/http/CertificateAdd.element.js +2 -5
  3. package/build/src/elements/http/CertificateAdd.element.js.map +1 -1
  4. package/build/src/elements/user/internals/UserAvatar.styles.d.ts.map +1 -1
  5. package/build/src/elements/user/internals/UserAvatar.styles.js +0 -1
  6. package/build/src/elements/user/internals/UserAvatar.styles.js.map +1 -1
  7. package/build/src/md/UiElement.d.ts +5 -0
  8. package/build/src/md/UiElement.d.ts.map +1 -1
  9. package/build/src/md/UiElement.js +7 -0
  10. package/build/src/md/UiElement.js.map +1 -1
  11. package/build/src/md/button/ui-elevated-button.d.ts +1 -1
  12. package/build/src/md/button/ui-elevated-button.js +1 -1
  13. package/build/src/md/button/ui-elevated-button.js.map +1 -1
  14. package/build/src/md/button/ui-filled-button.d.ts +1 -1
  15. package/build/src/md/button/ui-filled-button.js +1 -1
  16. package/build/src/md/button/ui-filled-button.js.map +1 -1
  17. package/build/src/md/button/ui-filled-tonal-button.d.ts +3 -3
  18. package/build/src/md/button/ui-filled-tonal-button.d.ts.map +1 -1
  19. package/build/src/md/button/ui-filled-tonal-button.js +6 -6
  20. package/build/src/md/button/ui-filled-tonal-button.js.map +1 -1
  21. package/build/src/md/button/ui-outlined-button.d.ts +1 -1
  22. package/build/src/md/button/ui-outlined-button.js +1 -1
  23. package/build/src/md/button/ui-outlined-button.js.map +1 -1
  24. package/build/src/md/button/ui-text-button.d.ts +1 -1
  25. package/build/src/md/button/ui-text-button.js +1 -1
  26. package/build/src/md/button/ui-text-button.js.map +1 -1
  27. package/build/src/md/checkbox/internals/Checkbox.styles.d.ts.map +1 -1
  28. package/build/src/md/checkbox/internals/Checkbox.styles.js +55 -216
  29. package/build/src/md/checkbox/internals/Checkbox.styles.js.map +1 -1
  30. package/build/src/md/checkbox/internals/CheckboxElement.d.ts +10 -7
  31. package/build/src/md/checkbox/internals/CheckboxElement.d.ts.map +1 -1
  32. package/build/src/md/checkbox/internals/CheckboxElement.js +39 -32
  33. package/build/src/md/checkbox/internals/CheckboxElement.js.map +1 -1
  34. package/build/src/md/checkbox/internals/CheckedElement.d.ts.map +1 -1
  35. package/build/src/md/checkbox/internals/CheckedElement.js +1 -0
  36. package/build/src/md/checkbox/internals/CheckedElement.js.map +1 -1
  37. package/build/src/md/dropdown-list/internals/UiDropdownList.d.ts +13 -2
  38. package/build/src/md/dropdown-list/internals/UiDropdownList.d.ts.map +1 -1
  39. package/build/src/md/dropdown-list/internals/UiDropdownList.js +59 -20
  40. package/build/src/md/dropdown-list/internals/UiDropdownList.js.map +1 -1
  41. package/build/src/md/icon-button/internals/IconButton.d.ts +8 -24
  42. package/build/src/md/icon-button/internals/IconButton.d.ts.map +1 -1
  43. package/build/src/md/icon-button/internals/IconButton.js +35 -63
  44. package/build/src/md/icon-button/internals/IconButton.js.map +1 -1
  45. package/build/src/md/icon-button/internals/{IconButton.styles.d.ts → base.styles.d.ts} +1 -1
  46. package/build/src/md/icon-button/internals/base.styles.d.ts.map +1 -0
  47. package/build/src/md/icon-button/internals/base.styles.js +93 -0
  48. package/build/src/md/icon-button/internals/base.styles.js.map +1 -0
  49. package/build/src/md/icon-button/internals/filled-tonal.styles.d.ts +3 -0
  50. package/build/src/md/icon-button/internals/filled-tonal.styles.d.ts.map +1 -0
  51. package/build/src/md/icon-button/internals/filled-tonal.styles.js +30 -0
  52. package/build/src/md/icon-button/internals/filled-tonal.styles.js.map +1 -0
  53. package/build/src/md/icon-button/internals/filled.styles.d.ts +3 -0
  54. package/build/src/md/icon-button/internals/filled.styles.d.ts.map +1 -0
  55. package/build/src/md/icon-button/internals/filled.styles.js +36 -0
  56. package/build/src/md/icon-button/internals/filled.styles.js.map +1 -0
  57. package/build/src/md/icon-button/internals/outlined.styles.d.ts +3 -0
  58. package/build/src/md/icon-button/internals/outlined.styles.d.ts.map +1 -0
  59. package/build/src/md/icon-button/internals/outlined.styles.js +31 -0
  60. package/build/src/md/icon-button/internals/outlined.styles.js.map +1 -0
  61. package/build/src/md/icon-button/internals/standard.styles.d.ts +3 -0
  62. package/build/src/md/icon-button/internals/standard.styles.d.ts.map +1 -0
  63. package/build/src/md/icon-button/internals/standard.styles.js +18 -0
  64. package/build/src/md/icon-button/internals/standard.styles.js.map +1 -0
  65. package/build/src/md/icon-button/ui-filled-icon-button.d.ts +11 -0
  66. package/build/src/md/icon-button/ui-filled-icon-button.d.ts.map +1 -0
  67. package/build/src/md/icon-button/ui-filled-icon-button.js +28 -0
  68. package/build/src/md/icon-button/ui-filled-icon-button.js.map +1 -0
  69. package/build/src/md/icon-button/ui-filled-tonal-icon-button.d.ts +11 -0
  70. package/build/src/md/icon-button/ui-filled-tonal-icon-button.d.ts.map +1 -0
  71. package/build/src/md/icon-button/ui-filled-tonal-icon-button.js +28 -0
  72. package/build/src/md/icon-button/ui-filled-tonal-icon-button.js.map +1 -0
  73. package/build/src/md/icon-button/ui-icon-button.d.ts.map +1 -1
  74. package/build/src/md/icon-button/ui-icon-button.js +3 -2
  75. package/build/src/md/icon-button/ui-icon-button.js.map +1 -1
  76. package/build/src/md/icon-button/ui-outlined-icon-button.d.ts +11 -0
  77. package/build/src/md/icon-button/ui-outlined-icon-button.d.ts.map +1 -0
  78. package/build/src/md/icon-button/ui-outlined-icon-button.js +28 -0
  79. package/build/src/md/icon-button/ui-outlined-icon-button.js.map +1 -0
  80. package/build/src/md/icons/internals/Icon.d.ts +1 -0
  81. package/build/src/md/icons/internals/Icon.d.ts.map +1 -1
  82. package/build/src/md/icons/internals/Icon.js +13 -0
  83. package/build/src/md/icons/internals/Icon.js.map +1 -1
  84. package/build/src/md/icons/internals/Icon.styles.d.ts.map +1 -1
  85. package/build/src/md/icons/internals/Icon.styles.js +31 -2
  86. package/build/src/md/icons/internals/Icon.styles.js.map +1 -1
  87. package/build/src/md/list/internals/ListItem.d.ts +4 -3
  88. package/build/src/md/list/internals/ListItem.d.ts.map +1 -1
  89. package/build/src/md/list/internals/ListItem.js +20 -18
  90. package/build/src/md/list/internals/ListItem.js.map +1 -1
  91. package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
  92. package/build/src/md/list/internals/ListItem.styles.js +6 -2
  93. package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
  94. package/build/src/md/ripple/internals/ripple.d.ts +2 -1
  95. package/build/src/md/ripple/internals/ripple.d.ts.map +1 -1
  96. package/build/src/md/ripple/internals/ripple.js +42 -12
  97. package/build/src/md/ripple/internals/ripple.js.map +1 -1
  98. package/build/src/md/segmented-button/internals/SegmentedButton.d.ts +1 -1
  99. package/build/src/md/segmented-button/internals/SegmentedButton.d.ts.map +1 -1
  100. package/build/src/md/segmented-button/internals/SegmentedButton.js +1 -1
  101. package/build/src/md/segmented-button/internals/SegmentedButton.js.map +1 -1
  102. package/demo/md/buttons/{button.html → index.html} +1 -1
  103. package/demo/md/{inputs/checkbox.html → checkbox/index.html} +1 -1
  104. package/demo/md/{list/dropdown-list.html → dropdown-list/index.html} +1 -1
  105. package/demo/md/{buttons/icon-button.html → icon-button/index.html} +5 -1
  106. package/demo/md/icon-button/index.ts +236 -0
  107. package/demo/md/index.html +36 -29
  108. package/demo/md/listbox/listbox.html +31 -0
  109. package/demo/md/listbox/listbox.ts +27 -0
  110. package/demo/md/{buttons/segmented-buttons.html → segmented-button/index.html} +1 -1
  111. package/package.json +2 -2
  112. package/src/elements/http/CertificateAdd.element.ts +2 -5
  113. package/src/elements/user/internals/UserAvatar.styles.ts +0 -1
  114. package/src/md/UiElement.ts +8 -0
  115. package/src/md/button/ui-elevated-button.ts +1 -1
  116. package/src/md/button/ui-filled-button.ts +1 -1
  117. package/src/md/button/ui-filled-tonal-button.ts +3 -3
  118. package/src/md/button/ui-outlined-button.ts +1 -1
  119. package/src/md/button/ui-text-button.ts +1 -1
  120. package/src/md/checkbox/internals/Checkbox.styles.ts +55 -216
  121. package/src/md/checkbox/internals/CheckboxElement.ts +39 -26
  122. package/src/md/checkbox/internals/CheckedElement.ts +1 -0
  123. package/src/md/dropdown-list/internals/UiDropdownList.ts +60 -21
  124. package/src/md/icon-button/internals/IconButton.ts +29 -46
  125. package/src/md/icon-button/internals/base.styles.ts +93 -0
  126. package/src/md/icon-button/internals/filled-tonal.styles.ts +30 -0
  127. package/src/md/icon-button/internals/filled.styles.ts +36 -0
  128. package/src/md/icon-button/internals/outlined.styles.ts +31 -0
  129. package/src/md/icon-button/internals/standard.styles.ts +18 -0
  130. package/src/md/icon-button/ui-filled-icon-button.ts +16 -0
  131. package/src/md/icon-button/ui-filled-tonal-icon-button.ts +16 -0
  132. package/src/md/icon-button/ui-icon-button.ts +3 -2
  133. package/src/md/icon-button/ui-outlined-icon-button.ts +16 -0
  134. package/src/md/icons/internals/Icon.styles.ts +31 -2
  135. package/src/md/icons/internals/Icon.ts +14 -0
  136. package/src/md/list/internals/ListItem.styles.ts +6 -2
  137. package/src/md/list/internals/ListItem.ts +16 -21
  138. package/src/md/ripple/internals/ripple.ts +47 -13
  139. package/src/md/segmented-button/internals/SegmentedButton.ts +2 -2
  140. package/test/ui/button/UiIconButton.test.ts +1 -8
  141. package/build/src/lib/UserCache.d.ts +0 -13
  142. package/build/src/lib/UserCache.d.ts.map +0 -1
  143. package/build/src/lib/UserCache.js +0 -30
  144. package/build/src/lib/UserCache.js.map +0 -1
  145. package/build/src/md/icon-button/internals/IconButton.styles.d.ts.map +0 -1
  146. package/build/src/md/icon-button/internals/IconButton.styles.js +0 -614
  147. package/build/src/md/icon-button/internals/IconButton.styles.js.map +0 -1
  148. package/demo/md/buttons/icon-button.ts +0 -184
  149. package/src/lib/UserCache.ts +0 -33
  150. package/src/md/icon-button/internals/IconButton.styles.ts +0 -614
  151. /package/demo/md/buttons/{button.ts → index.ts} +0 -0
  152. /package/demo/md/{inputs/checkbox.ts → checkbox/index.ts} +0 -0
  153. /package/demo/md/{list/dropdown-list.ts → dropdown-list/index.ts} +0 -0
  154. /package/demo/md/{buttons/segmented-buttons.ts → segmented-button/index.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ui-icon-button.d.ts","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-icon-button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAA;AAE5C,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAG/C,qBACa,mBAAoB,SAAQ,OAAO;IAC9C,OAAgB,MAAM,EAAE,iBAAiB,EAAE,CAAW;CACvD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,mBAAmB,CAAA;KACtC;CACF"}
1
+ {"version":3,"file":"ui-icon-button.d.ts","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-icon-button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAA;AAE5C,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAI/C,qBACa,mBAAoB,SAAQ,OAAO;IAC9C,OAAgB,MAAM,EAAE,iBAAiB,EAAE,CAAiB;CAC7D;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,mBAAmB,CAAA;KACtC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { customElement } from 'lit/decorators.js';
3
3
  import Element from './internals/IconButton.js';
4
- import styles from './internals/IconButton.styles.js';
4
+ import base from './internals/base.styles.js';
5
+ import styles from './internals/standard.styles.js';
5
6
  let UiIconButtonElement = (() => {
6
7
  let _classDecorators = [customElement('ui-icon-button')];
7
8
  let _classDescriptor;
@@ -16,7 +17,7 @@ let UiIconButtonElement = (() => {
16
17
  UiIconButtonElement = _classThis = _classDescriptor.value;
17
18
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
18
19
  }
19
- static styles = [styles];
20
+ static styles = [base, styles];
20
21
  static {
21
22
  __runInitializers(_classThis, _classExtraInitializers);
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ui-icon-button.js","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-icon-button.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAC/C,OAAO,MAAM,MAAM,kCAAkC,CAAA;IAGxC,mBAAmB;4BAD/B,aAAa,CAAC,gBAAgB,CAAC;;;;sBACS,OAAO;mCAAf,SAAQ,WAAO;;;;YAAhD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAwB,CAAC,MAAM,CAAC,CAAA;;YAD3C,uDAAmB;;;;;SAAnB,mBAAmB","sourcesContent":["import type { CSSResultOrNative } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport Element from './internals/IconButton.js'\nimport styles from './internals/IconButton.styles.js'\n\n@customElement('ui-icon-button')\nexport class UiIconButtonElement extends Element {\n static override styles: CSSResultOrNative[] = [styles]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-icon-button': UiIconButtonElement\n }\n}\n"]}
1
+ {"version":3,"file":"ui-icon-button.js","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-icon-button.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAC/C,OAAO,IAAI,MAAM,4BAA4B,CAAA;AAC7C,OAAO,MAAM,MAAM,gCAAgC,CAAA;IAGtC,mBAAmB;4BAD/B,aAAa,CAAC,gBAAgB,CAAC;;;;sBACS,OAAO;mCAAf,SAAQ,WAAO;;;;YAAhD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;;YADjD,uDAAmB;;;;;SAAnB,mBAAmB","sourcesContent":["import type { CSSResultOrNative } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport Element from './internals/IconButton.js'\nimport base from './internals/base.styles.js'\nimport styles from './internals/standard.styles.js'\n\n@customElement('ui-icon-button')\nexport class UiIconButtonElement extends Element {\n static override styles: CSSResultOrNative[] = [base, styles]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-icon-button': UiIconButtonElement\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { CSSResultOrNative } from 'lit';
2
+ import Element from './internals/IconButton.js';
3
+ export declare class UiOutlinedIconButtonElement extends Element {
4
+ static styles: CSSResultOrNative[];
5
+ }
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'ui-outlined-icon-button': UiOutlinedIconButtonElement;
9
+ }
10
+ }
11
+ //# sourceMappingURL=ui-outlined-icon-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-outlined-icon-button.d.ts","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-outlined-icon-button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAA;AAE5C,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAI/C,qBACa,2BAA4B,SAAQ,OAAO;IACtD,OAAgB,MAAM,EAAE,iBAAiB,EAAE,CAAiB;CAC7D;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,2BAA2B,CAAA;KACvD;CACF"}
@@ -0,0 +1,28 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { customElement } from 'lit/decorators.js';
3
+ import Element from './internals/IconButton.js';
4
+ import base from './internals/base.styles.js';
5
+ import styles from './internals/outlined.styles.js';
6
+ let UiOutlinedIconButtonElement = (() => {
7
+ let _classDecorators = [customElement('ui-outlined-icon-button')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = Element;
12
+ var UiOutlinedIconButtonElement = class extends _classSuper {
13
+ static { _classThis = this; }
14
+ static {
15
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
16
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
17
+ UiOutlinedIconButtonElement = _classThis = _classDescriptor.value;
18
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
19
+ }
20
+ static styles = [base, styles];
21
+ static {
22
+ __runInitializers(_classThis, _classExtraInitializers);
23
+ }
24
+ };
25
+ return UiOutlinedIconButtonElement = _classThis;
26
+ })();
27
+ export { UiOutlinedIconButtonElement };
28
+ //# sourceMappingURL=ui-outlined-icon-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-outlined-icon-button.js","sourceRoot":"","sources":["../../../../src/md/icon-button/ui-outlined-icon-button.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,2BAA2B,CAAA;AAC/C,OAAO,IAAI,MAAM,4BAA4B,CAAA;AAC7C,OAAO,MAAM,MAAM,gCAAgC,CAAA;IAGtC,2BAA2B;4BADvC,aAAa,CAAC,yBAAyB,CAAC;;;;sBACQ,OAAO;2CAAf,SAAQ,WAAO;;;;YAAxD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;;YADjD,uDAA2B;;;;;SAA3B,2BAA2B","sourcesContent":["import type { CSSResultOrNative } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport Element from './internals/IconButton.js'\nimport base from './internals/base.styles.js'\nimport styles from './internals/outlined.styles.js'\n\n@customElement('ui-outlined-icon-button')\nexport class UiOutlinedIconButtonElement extends Element {\n static override styles: CSSResultOrNative[] = [base, styles]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-outlined-icon-button': UiOutlinedIconButtonElement\n }\n}\n"]}
@@ -13,6 +13,7 @@ export default class UiIcon extends LitElement {
13
13
  * @returns True when the icon was found and is rendered.
14
14
  */
15
15
  get hasIcon(): boolean;
16
+ connectedCallback(): void;
16
17
  protected willUpdate(cp: PropertyValues<this>): void;
17
18
  /**
18
19
  * Maps icon name to it's definition and sets `hasIcon` value.
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,cAAc,EAAE,UAAU,EAAqB,cAAc,EAAE,MAAM,KAAK,CAAA;AAGzF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC5C,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,SAAS,CAA+B;IAEhD;;;;OAIG;IACS,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAE/C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;cAEkB,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM7D;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;IAOtD;;OAEG;IACM,MAAM,IAAI,cAAc;CAOlC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,cAAc,EAAE,UAAU,EAAqB,cAAc,EAAE,MAAM,KAAK,CAAA;AAGzF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC5C,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,SAAS,CAA+B;IAEhD;;;;OAIG;IACS,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAE/C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAEQ,iBAAiB;cAcP,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM7D;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;IAOtD;;OAEG;IACM,MAAM,IAAI,cAAc;CAOlC"}
@@ -34,6 +34,19 @@ let UiIcon = (() => {
34
34
  get hasIcon() {
35
35
  return this.hasIconInternal;
36
36
  }
37
+ connectedCallback() {
38
+ super.connectedCallback();
39
+ const ariaHidden = this.getAttribute('aria-hidden');
40
+ if (ariaHidden === 'false') {
41
+ // Allow the user to set `aria-hidden="false"` to create an icon that is
42
+ // announced by screen readers.
43
+ this.removeAttribute('aria-hidden');
44
+ return;
45
+ }
46
+ // Needed for VoiceOver, which will create a "group" if the element is a
47
+ // sibling to other content.
48
+ this.setAttribute('aria-hidden', 'true');
49
+ }
37
50
  willUpdate(cp) {
38
51
  if (cp.has('icon')) {
39
52
  this.updateIcon(this.icon);
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":";AAAA;;;EAGE;AACF,OAAO,EAAE,IAAI,EAAkB,UAAU,EAAqC,MAAM,KAAK,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;;sBAGA,UAAU;;;;iBAAzB,MAAO,SAAQ,WAAU;;;gCAU3C,QAAQ,EAAE;YAAC,iKAAS,IAAI,6BAAJ,IAAI,mFAAsB;;;QATvC,eAAe,GAAG,KAAK,CAAA;QAEvB,SAAS,CAA+B;QAOpC,6EAAmC;QAL/C;;;;WAIG;QACS,IAAS,IAAI,0CAAsB;QAAnC,IAAS,IAAI,gDAAsB;QAE/C;;WAEG;QACH,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,eAAe,CAAA;QAC7B,CAAC;QAEkB,UAAU,CAAC,EAAwB;YACpD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED;;;;WAIG;QACO,UAAU,CAAC,IAA0B;YAC7C,MAAM,IAAI,GAAI,KAAe,CAAC,IAAgB,CAAkC,CAAA;YAChF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACM,MAAM;YACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAA,eAAe,CAAA;YAC5B,CAAC;YACD,OAAO,IAAI,CAAA,GAAG,UAAU,EAAE,CAAA;QAC5B,CAAC;;;;;;;AA9CH,sBA+CC","sourcesContent":["/*\nCopyright 2022 Pawel Psztyc\nLicensed under the CC-BY 2.0\n*/\nimport { html, TemplateResult, LitElement, SVGTemplateResult, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport * as Icons from '../Icons.js'\nimport { IconType } from '../Icons.js'\n\nexport default class UiIcon extends LitElement {\n private hasIconInternal = false\n\n private iconValue: SVGTemplateResult | undefined\n\n /**\n * An icon to be rendered from the ApiIcons library.\n * When incorrect icon is referenced nothing is rendered.\n * @attribute\n */\n @property() accessor icon: IconType | undefined\n\n /**\n * @returns True when the icon was found and is rendered.\n */\n get hasIcon(): boolean {\n return this.hasIconInternal\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('icon')) {\n this.updateIcon(this.icon)\n }\n }\n\n /**\n * Maps icon name to it's definition and sets `hasIcon` value.\n *\n * @param name Icon name\n */\n protected updateIcon(name: IconType | undefined): void {\n const icon = (Icons as never)[name as IconType] as SVGTemplateResult | undefined\n this.hasIconInternal = !!icon\n this.iconValue = icon\n this.requestUpdate()\n }\n\n /**\n * @return Template result for an icon\n */\n override render(): TemplateResult {\n const { hasIcon, iconValue: _iconValue } = this\n if (!hasIcon) {\n return html`<slot></slot>`\n }\n return html`${_iconValue}`\n }\n}\n"]}
1
+ {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.ts"],"names":[],"mappings":";AAAA;;;EAGE;AACF,OAAO,EAAE,IAAI,EAAkB,UAAU,EAAqC,MAAM,KAAK,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;;sBAGA,UAAU;;;;iBAAzB,MAAO,SAAQ,WAAU;;;gCAU3C,QAAQ,EAAE;YAAC,iKAAS,IAAI,6BAAJ,IAAI,mFAAsB;;;QATvC,eAAe,GAAG,KAAK,CAAA;QAEvB,SAAS,CAA+B;QAOpC,6EAAmC;QAL/C;;;;WAIG;QACS,IAAS,IAAI,0CAAsB;QAAnC,IAAS,IAAI,gDAAsB;QAE/C;;WAEG;QACH,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,eAAe,CAAA;QAC7B,CAAC;QAEQ,iBAAiB;YACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;YACnD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBAC3B,wEAAwE;gBACxE,+BAA+B;gBAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,wEAAwE;YACxE,4BAA4B;YAC5B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QAEkB,UAAU,CAAC,EAAwB;YACpD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED;;;;WAIG;QACO,UAAU,CAAC,IAA0B;YAC7C,MAAM,IAAI,GAAI,KAAe,CAAC,IAAgB,CAAkC,CAAA;YAChF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACM,MAAM;YACb,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAA,eAAe,CAAA;YAC5B,CAAC;YACD,OAAO,IAAI,CAAA,GAAG,UAAU,EAAE,CAAA;QAC5B,CAAC;;;;;;;AA5DH,sBA6DC","sourcesContent":["/*\nCopyright 2022 Pawel Psztyc\nLicensed under the CC-BY 2.0\n*/\nimport { html, TemplateResult, LitElement, SVGTemplateResult, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport * as Icons from '../Icons.js'\nimport { IconType } from '../Icons.js'\n\nexport default class UiIcon extends LitElement {\n private hasIconInternal = false\n\n private iconValue: SVGTemplateResult | undefined\n\n /**\n * An icon to be rendered from the ApiIcons library.\n * When incorrect icon is referenced nothing is rendered.\n * @attribute\n */\n @property() accessor icon: IconType | undefined\n\n /**\n * @returns True when the icon was found and is rendered.\n */\n get hasIcon(): boolean {\n return this.hasIconInternal\n }\n\n override connectedCallback() {\n super.connectedCallback()\n const ariaHidden = this.getAttribute('aria-hidden')\n if (ariaHidden === 'false') {\n // Allow the user to set `aria-hidden=\"false\"` to create an icon that is\n // announced by screen readers.\n this.removeAttribute('aria-hidden')\n return\n }\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true')\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('icon')) {\n this.updateIcon(this.icon)\n }\n }\n\n /**\n * Maps icon name to it's definition and sets `hasIcon` value.\n *\n * @param name Icon name\n */\n protected updateIcon(name: IconType | undefined): void {\n const icon = (Icons as never)[name as IconType] as SVGTemplateResult | undefined\n this.hasIconInternal = !!icon\n this.iconValue = icon\n this.requestUpdate()\n }\n\n /**\n * @return Template result for an icon\n */\n override render(): TemplateResult {\n const { hasIcon, iconValue: _iconValue } = this\n if (!hasIcon) {\n return html`<slot></slot>`\n }\n return html`${_iconValue}`\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.styles.ts"],"names":[],"mappings":";AAEA,wBAOC"}
1
+ {"version":3,"file":"Icon.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.styles.ts"],"names":[],"mappings":";AAEA,wBAoCC"}
@@ -2,9 +2,38 @@ import { css } from 'lit';
2
2
  export default css `
3
3
  :host {
4
4
  display: inline-block;
5
- width: 24px;
6
- height: 24px;
5
+ font-size: var(--md-icon-size, 24px);
6
+ width: var(--md-icon-size, 24px);
7
+ height: var(--md-icon-size, 24px);
8
+ color: inherit;
7
9
  fill: currentColor;
10
+ font-variation-settings: inherit;
11
+ font-weight: 400;
12
+ font-family: var(--md-icon-font, Material Symbols Outlined);
13
+ display: inline-flex;
14
+ font-style: normal;
15
+ place-items: center;
16
+ place-content: center;
17
+ line-height: 1;
18
+ overflow: hidden;
19
+ letter-spacing: normal;
20
+ text-transform: none;
21
+ user-select: none;
22
+ white-space: nowrap;
23
+ word-wrap: normal;
24
+ flex-shrink: 0;
25
+ -webkit-font-smoothing: antialiased;
26
+ text-rendering: optimizeLegibility;
27
+ -moz-osx-font-smoothing: grayscale;
28
+ }
29
+
30
+ ::slotted(svg) {
31
+ fill: currentColor;
32
+ }
33
+
34
+ ::slotted(*) {
35
+ height: 100%;
36
+ width: 100%;
8
37
  }
9
38
  `;
10
39
  //# sourceMappingURL=Icon.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.styles.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;CAOjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n :host {\n display: inline-block;\n width: 24px;\n height: 24px;\n fill: currentColor;\n }\n`\n"]}
1
+ {"version":3,"file":"Icon.styles.js","sourceRoot":"","sources":["../../../../../src/md/icons/internals/Icon.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n :host {\n display: inline-block;\n font-size: var(--md-icon-size, 24px);\n width: var(--md-icon-size, 24px);\n height: var(--md-icon-size, 24px);\n color: inherit;\n fill: currentColor;\n font-variation-settings: inherit;\n font-weight: 400;\n font-family: var(--md-icon-font, Material Symbols Outlined);\n display: inline-flex;\n font-style: normal;\n place-items: center;\n place-content: center;\n line-height: 1;\n overflow: hidden;\n letter-spacing: normal;\n text-transform: none;\n user-select: none;\n white-space: nowrap;\n word-wrap: normal;\n flex-shrink: 0;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n }\n\n ::slotted(svg) {\n fill: currentColor;\n }\n\n ::slotted(*) {\n height: 100%;\n width: 100%;\n }\n`\n"]}
@@ -2,6 +2,7 @@ import { PropertyValues, TemplateResult } from 'lit';
2
2
  import { UiElement } from '../../UiElement.js';
3
3
  import { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js';
4
4
  import UiRipple from '../../ripple/internals/ripple.js';
5
+ import '@material/web/focus/md-focus-ring.js';
5
6
  import '../../ripple/ui-ripple.js';
6
7
  export declare enum ListItemLines {
7
8
  one = "one",
@@ -48,17 +49,17 @@ export default class UiListItem extends UiElement {
48
49
  * @attribute
49
50
  */
50
51
  accessor static: boolean;
52
+ accessor tabIndex: number;
51
53
  constructor();
54
+ protected updated(changedProperties: PropertyValues<this>): void;
52
55
  connectedCallback(): void;
53
56
  protected willUpdate(cp: PropertyValues<this>): void;
54
57
  handleKeyDown(e: KeyboardEvent): void;
55
58
  handleKeyUp(e: KeyboardEvent): void;
56
59
  beginPress(options: BeginPressConfig): void;
57
60
  endPress(options: EndPressConfig): void;
58
- protected handlePointerEnter(e: PointerEvent): void;
61
+ handlePointerEnter(e: PointerEvent): void;
59
62
  handlePointerLeave(e: PointerEvent): void;
60
- protected handleFocus(): void;
61
- protected handleBlur(): void;
62
63
  /**
63
64
  * Focuses list item and makes list item focusable via keyboard.
64
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAC3F,OAAO,QAAQ,MAAM,kCAAkC,CAAA;AAGvD,OAAO,2BAA2B,CAAA;AAElC,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS;IAC3B,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAA;IAE9C;;;OAGG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAErE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;;OAKG;IACyC,QAAQ,CAAC,MAAM,UAAQ;;IAoB1D,iBAAiB,IAAI,IAAI;cAOf,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMpD,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYrC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYnC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAQ3C,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQhD,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAS1C,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAWlD,SAAS,CAAC,WAAW,IAAI,IAAI;IAO7B,SAAS,CAAC,UAAU,IAAI,IAAI;IAO5B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAShB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAOnB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB,SAAS,CAAC,gBAAgB,IAAI,IAAI;cAIf,MAAM,IAAI,cAAc;IAiB3C,SAAS,CAAC,YAAY,QAAO,cAAc,CAG1C;IAED,SAAS,CAAC,WAAW,IAAI,cAAc;IAMvC,SAAS,CAAC,SAAS,IAAI,cAAc;IAOrC,SAAS,CAAC,UAAU,IAAI,cAAc;CAUvC"}
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAC3F,OAAO,QAAQ,MAAM,kCAAkC,CAAA;AAIvD,OAAO,sCAAsC,CAAA;AAC7C,OAAO,2BAA2B,CAAA;AAElC,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS;IAC3B,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAA;IAE9C;;;OAGG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAErE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;OAIG;IACwC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAExE;;;;;OAKG;IACyC,QAAQ,CAAC,MAAM,UAAQ;IAEnE,SAA6D,QAAQ,SAAK;;cAmBvD,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOhE,iBAAiB,IAAI,IAAI;cAOf,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMpD,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAWrC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYnC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAQ3C,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQvC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IASzC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAWlD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAOnB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB,SAAS,CAAC,gBAAgB,IAAI,IAAI;cAIf,MAAM,IAAI,cAAc;IAkB3C,SAAS,CAAC,YAAY,QAAO,cAAc,CAG1C;IAED,SAAS,CAAC,WAAW,IAAI,cAAc;IAMvC,SAAS,CAAC,SAAS,IAAI,cAAc;IAOrC,SAAS,CAAC,UAAU,IAAI,cAAc;CAUvC"}
@@ -5,6 +5,7 @@ import { classMap } from 'lit/directives/class-map.js';
5
5
  import { UiElement } from '../../UiElement.js';
6
6
  import { setDisabled } from '../../../lib/disabled.js';
7
7
  import { ripple } from '../../effects/rippleDirective.js';
8
+ import '@material/web/focus/md-focus-ring.js';
8
9
  import '../../ripple/ui-ripple.js';
9
10
  export var ListItemLines;
10
11
  (function (ListItemLines) {
@@ -37,6 +38,9 @@ let UiListItem = (() => {
37
38
  let _static_decorators;
38
39
  let _static_initializers = [];
39
40
  let _static_extraInitializers = [];
41
+ let _tabIndex_decorators;
42
+ let _tabIndex_initializers = [];
43
+ let _tabIndex_extraInitializers = [];
40
44
  return class UiListItem extends _classSuper {
41
45
  static {
42
46
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -45,11 +49,13 @@ let UiListItem = (() => {
45
49
  _lines_decorators = [property({ type: String, reflect: true })];
46
50
  _image_decorators = [property({ type: String, reflect: true })];
47
51
  _static_decorators = [property({ type: Boolean, reflect: true })];
52
+ _tabIndex_decorators = [property({ type: Number, reflect: true })];
48
53
  __esDecorate(this, null, _ripple_decorators, { kind: "accessor", name: "ripple", static: false, private: false, access: { has: obj => "ripple" in obj, get: obj => obj.ripple, set: (obj, value) => { obj.ripple = value; } }, metadata: _metadata }, _ripple_initializers, _ripple_extraInitializers);
49
54
  __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
50
55
  __esDecorate(this, null, _lines_decorators, { kind: "accessor", name: "lines", static: false, private: false, access: { has: obj => "lines" in obj, get: obj => obj.lines, set: (obj, value) => { obj.lines = value; } }, metadata: _metadata }, _lines_initializers, _lines_extraInitializers);
51
56
  __esDecorate(this, null, _image_decorators, { kind: "accessor", name: "image", static: false, private: false, access: { has: obj => "image" in obj, get: obj => obj.image, set: (obj, value) => { obj.image = value; } }, metadata: _metadata }, _image_initializers, _image_extraInitializers);
52
57
  __esDecorate(this, null, _static_decorators, { kind: "accessor", name: "static", static: false, private: false, access: { has: obj => "static" in obj, get: obj => obj.static, set: (obj, value) => { obj.static = value; } }, metadata: _metadata }, _static_initializers, _static_extraInitializers);
58
+ __esDecorate(this, null, _tabIndex_decorators, { kind: "accessor", name: "tabIndex", static: false, private: false, access: { has: obj => "tabIndex" in obj, get: obj => obj.tabIndex, set: (obj, value) => { obj.tabIndex = value; } }, metadata: _metadata }, _tabIndex_initializers, _tabIndex_extraInitializers);
53
59
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
54
60
  }
55
61
  #ripple_accessor_storage = __runInitializers(this, _ripple_initializers, void 0);
@@ -93,6 +99,9 @@ let UiListItem = (() => {
93
99
  */
94
100
  get static() { return this.#static_accessor_storage; }
95
101
  set static(value) { this.#static_accessor_storage = value; }
102
+ #tabIndex_accessor_storage = (__runInitializers(this, _static_extraInitializers), __runInitializers(this, _tabIndex_initializers, -1));
103
+ get tabIndex() { return this.#tabIndex_accessor_storage; }
104
+ set tabIndex(value) { this.#tabIndex_accessor_storage = value; }
96
105
  constructor() {
97
106
  super();
98
107
  this.lines = ListItemLines.one;
@@ -102,11 +111,16 @@ let UiListItem = (() => {
102
111
  this.addEventListener('pointerup', this.handlePointerUp.bind(this));
103
112
  this.addEventListener('pointercancel', this.handlePointerCancel.bind(this));
104
113
  this.addEventListener('pointerleave', this.handlePointerLeave.bind(this));
114
+ this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));
105
115
  this.addEventListener('contextmenu', this.handleContextMenu.bind(this));
106
116
  this.addEventListener('keydown', this.handleKeyDown.bind(this));
107
117
  this.addEventListener('keyup', this.handleKeyUp.bind(this));
108
- this.addEventListener('focus', this.handleFocus.bind(this));
109
- this.addEventListener('blur', this.handleBlur.bind(this));
118
+ }
119
+ updated(changedProperties) {
120
+ super.updated(changedProperties);
121
+ if (changedProperties.has('tabIndex') && (this.tabIndex === -1 || this.tabIndex === null)) {
122
+ this.ripple?.endPress();
123
+ }
110
124
  }
111
125
  connectedCallback() {
112
126
  super.connectedCallback();
@@ -127,7 +141,7 @@ let UiListItem = (() => {
127
141
  }
128
142
  if (e.key !== ' ' && e.key !== 'Enter')
129
143
  return;
130
- e.preventDefault();
144
+ // do not prevent default, so that parent elements can handle the key event
131
145
  this.beginPress({ positionEvent: e });
132
146
  }
133
147
  handleKeyUp(e) {
@@ -138,7 +152,7 @@ let UiListItem = (() => {
138
152
  }
139
153
  if (e.key !== ' ' && e.key !== 'Enter')
140
154
  return;
141
- e.preventDefault();
155
+ // do not prevent default, so that parent elements can handle the key event
142
156
  this.endPress({ cancelled: false, actionData: { item: this } });
143
157
  }
144
158
  beginPress(options) {
@@ -172,18 +186,6 @@ let UiListItem = (() => {
172
186
  super.handlePointerLeave(e);
173
187
  this.ripple.endHover();
174
188
  }
175
- handleFocus() {
176
- if (this.disabled || this.static) {
177
- return;
178
- }
179
- this.ripple.beginFocus();
180
- }
181
- handleBlur() {
182
- if (this.disabled || this.static) {
183
- return;
184
- }
185
- this.ripple.endFocus();
186
- }
187
189
  /**
188
190
  * Focuses list item and makes list item focusable via keyboard.
189
191
  */
@@ -193,7 +195,6 @@ let UiListItem = (() => {
193
195
  }
194
196
  this.setAttribute('tabindex', '0');
195
197
  this.focus();
196
- this.ripple.beginFocus();
197
198
  }
198
199
  /**
199
200
  * Returns true if list item is currently focused and is focusable.
@@ -223,6 +224,7 @@ let UiListItem = (() => {
223
224
  pressed,
224
225
  });
225
226
  return html `
227
+ <md-focus-ring part="focus-ring" .control="${this}" inward></md-focus-ring>
226
228
  <div class="${surfaceClasses}" ${ripple(() => this.ripple)}>
227
229
  <div class="container"></div>
228
230
  <div class="state"></div>
@@ -231,7 +233,7 @@ let UiListItem = (() => {
231
233
  </div>
232
234
  `;
233
235
  }
234
- renderRipple = (__runInitializers(this, _static_extraInitializers), () => {
236
+ renderRipple = (__runInitializers(this, _tabIndex_extraInitializers), () => {
235
237
  const { disabled, static: isStatic } = this;
236
238
  return html `<ui-ripple class="ripple" ?disabled="${disabled || isStatic}"></ui-ripple>`;
237
239
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { UiElement } from '../../UiElement.js'\nimport { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport UiRipple from '../../ripple/internals/ripple.js'\nimport { setDisabled } from '../../../lib/disabled.js'\nimport { ripple } from '../../effects/rippleDirective.js'\nimport '../../ripple/ui-ripple.js'\n\nexport enum ListItemLines {\n one = 'one',\n two = 'two',\n three = 'three',\n}\n\nexport enum ListItemImage {\n icon = 'icon',\n avatar = 'avatar',\n image = 'image',\n video = 'video',\n auto = 'auto',\n}\n\n/**\n * @slot\n * @slot start\n * @slot end\n * @slot end-text\n * @slot supporting-text\n */\nexport default class UiListItem extends UiElement {\n @query('ui-ripple') accessor ripple!: UiRipple\n\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * The number of lines to render the list template for.\n * @default ListItemLines.one\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor lines: ListItemLines\n\n /**\n * The type of the list image.\n * @default ListItemImage.icon\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor image: ListItemImage\n\n /**\n * Whether the list item is static and should not be focusable.\n * The ripple effect will not be applied when `true`.\n * @default false\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor static = false\n\n constructor() {\n super()\n\n this.lines = ListItemLines.one\n this.image = ListItemImage.icon\n\n this.addEventListener('click', this.handleClick.bind(this))\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this))\n this.addEventListener('pointerup', this.handlePointerUp.bind(this))\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this))\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this))\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this))\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\n this.addEventListener('focus', this.handleFocus.bind(this))\n this.addEventListener('blur', this.handleBlur.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem')\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('disabled')) {\n setDisabled(this, cp.get('disabled'))\n }\n }\n\n override handleKeyDown(e: KeyboardEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n if (e.key !== ' ' && e.key !== 'Enter') return\n\n e.preventDefault()\n this.beginPress({ positionEvent: e })\n }\n\n override handleKeyUp(e: KeyboardEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n if (e.key !== ' ' && e.key !== 'Enter') return\n\n e.preventDefault()\n this.endPress({ cancelled: false, actionData: { item: this } })\n }\n\n override beginPress(options: BeginPressConfig): void {\n if (this.disabled || this.static) {\n return\n }\n super.beginPress(options)\n this.ripple.beginPress(options.positionEvent)\n }\n\n override endPress(options: EndPressConfig): void {\n if (this.disabled || this.static) {\n return\n }\n super.endPress(options)\n this.ripple.endPress()\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n this.ripple.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n super.handlePointerLeave(e)\n\n this.ripple.endHover()\n }\n\n protected handleFocus(): void {\n if (this.disabled || this.static) {\n return\n }\n this.ripple.beginFocus()\n }\n\n protected handleBlur(): void {\n if (this.disabled || this.static) {\n return\n }\n this.ripple.endFocus()\n }\n\n /**\n * Focuses list item and makes list item focusable via keyboard.\n */\n activate(): void {\n if (this.disabled || this.static) {\n return\n }\n this.setAttribute('tabindex', '0')\n this.focus()\n this.ripple.beginFocus()\n }\n\n /**\n * Returns true if list item is currently focused and is focusable.\n */\n isActive(): boolean {\n if (this.disabled || this.static) {\n return false\n }\n return this.getAttribute('tabindex') === '0'\n }\n\n /**\n * Removes list item from sequential keyboard navigation.\n */\n deactivate(): void {\n if (this.disabled || this.static) {\n return\n }\n this.removeAttribute('tabindex')\n }\n\n protected handleSlotChange(): void {\n this.requestUpdate()\n }\n\n protected override render(): TemplateResult {\n const { pressed = false } = this\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n })\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n <div class=\"content\">${this.renderStart()} ${this.renderBody()} ${this.renderEnd()}</div>\n ${this.renderRipple()}\n </div>\n `\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled, static: isStatic } = this\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled || isStatic}\"></ui-ripple>`\n }\n\n protected renderStart(): TemplateResult {\n return html`<div class=\"start\">\n <slot name=\"start\" @slotchange=${this.handleSlotChange}></slot>\n </div>`\n }\n\n protected renderEnd(): TemplateResult {\n return html`<div class=\"end\">\n <slot name=\"end\" @slotchange=${this.handleSlotChange}></slot>\n <span class=\"trailing-supporting-text\"><slot name=\"end-text\"></slot></span>\n </div>`\n }\n\n protected renderBody(): TemplateResult {\n const { lines = ListItemLines.one } = this\n const hasSupportingText = lines !== ListItemLines.one\n return html`\n <div class=\"body\">\n <span class=\"headline\"><slot></slot></span>\n ${hasSupportingText ? html`<span class=\"supporting-text\"><slot name=\"supporting-text\"></slot></span>` : ''}\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { UiElement } from '../../UiElement.js'\nimport { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport UiRipple from '../../ripple/internals/ripple.js'\nimport { setDisabled } from '../../../lib/disabled.js'\nimport { ripple } from '../../effects/rippleDirective.js'\n\nimport '@material/web/focus/md-focus-ring.js'\nimport '../../ripple/ui-ripple.js'\n\nexport enum ListItemLines {\n one = 'one',\n two = 'two',\n three = 'three',\n}\n\nexport enum ListItemImage {\n icon = 'icon',\n avatar = 'avatar',\n image = 'image',\n video = 'video',\n auto = 'auto',\n}\n\n/**\n * @slot\n * @slot start\n * @slot end\n * @slot end-text\n * @slot supporting-text\n */\nexport default class UiListItem extends UiElement {\n @query('ui-ripple') accessor ripple!: UiRipple\n\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * The number of lines to render the list template for.\n * @default ListItemLines.one\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor lines: ListItemLines\n\n /**\n * The type of the list image.\n * @default ListItemImage.icon\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor image: ListItemImage\n\n /**\n * Whether the list item is static and should not be focusable.\n * The ripple effect will not be applied when `true`.\n * @default false\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor static = false\n\n @property({ type: Number, reflect: true }) override accessor tabIndex = -1\n\n constructor() {\n super()\n\n this.lines = ListItemLines.one\n this.image = ListItemImage.icon\n\n this.addEventListener('click', this.handleClick.bind(this))\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this))\n this.addEventListener('pointerup', this.handlePointerUp.bind(this))\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this))\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this))\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this))\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this))\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\n }\n\n protected override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties)\n if (changedProperties.has('tabIndex') && (this.tabIndex === -1 || this.tabIndex === null)) {\n this.ripple?.endPress()\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem')\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('disabled')) {\n setDisabled(this, cp.get('disabled'))\n }\n }\n\n override handleKeyDown(e: KeyboardEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n if (e.key !== ' ' && e.key !== 'Enter') return\n // do not prevent default, so that parent elements can handle the key event\n this.beginPress({ positionEvent: e })\n }\n\n override handleKeyUp(e: KeyboardEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n if (e.key !== ' ' && e.key !== 'Enter') return\n\n // do not prevent default, so that parent elements can handle the key event\n this.endPress({ cancelled: false, actionData: { item: this } })\n }\n\n override beginPress(options: BeginPressConfig): void {\n if (this.disabled || this.static) {\n return\n }\n super.beginPress(options)\n this.ripple.beginPress(options.positionEvent)\n }\n\n override endPress(options: EndPressConfig): void {\n if (this.disabled || this.static) {\n return\n }\n super.endPress(options)\n this.ripple.endPress()\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n this.ripple.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n if (this.disabled || this.static) {\n e.stopPropagation()\n e.preventDefault()\n return\n }\n super.handlePointerLeave(e)\n\n this.ripple.endHover()\n }\n\n /**\n * Focuses list item and makes list item focusable via keyboard.\n */\n activate(): void {\n if (this.disabled || this.static) {\n return\n }\n this.setAttribute('tabindex', '0')\n this.focus()\n }\n\n /**\n * Returns true if list item is currently focused and is focusable.\n */\n isActive(): boolean {\n if (this.disabled || this.static) {\n return false\n }\n return this.getAttribute('tabindex') === '0'\n }\n\n /**\n * Removes list item from sequential keyboard navigation.\n */\n deactivate(): void {\n if (this.disabled || this.static) {\n return\n }\n this.removeAttribute('tabindex')\n }\n\n protected handleSlotChange(): void {\n this.requestUpdate()\n }\n\n protected override render(): TemplateResult {\n const { pressed = false } = this\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n })\n\n return html`\n <md-focus-ring part=\"focus-ring\" .control=\"${this as HTMLElement}\" inward></md-focus-ring>\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n <div class=\"content\">${this.renderStart()} ${this.renderBody()} ${this.renderEnd()}</div>\n ${this.renderRipple()}\n </div>\n `\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled, static: isStatic } = this\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled || isStatic}\"></ui-ripple>`\n }\n\n protected renderStart(): TemplateResult {\n return html`<div class=\"start\">\n <slot name=\"start\" @slotchange=${this.handleSlotChange}></slot>\n </div>`\n }\n\n protected renderEnd(): TemplateResult {\n return html`<div class=\"end\">\n <slot name=\"end\" @slotchange=${this.handleSlotChange}></slot>\n <span class=\"trailing-supporting-text\"><slot name=\"end-text\"></slot></span>\n </div>`\n }\n\n protected renderBody(): TemplateResult {\n const { lines = ListItemLines.one } = this\n const hasSupportingText = lines !== ListItemLines.one\n return html`\n <div class=\"body\">\n <span class=\"headline\"><slot></slot></span>\n ${hasSupportingText ? html`<span class=\"supporting-text\"><slot name=\"supporting-text\"></slot></span>` : ''}\n </div>\n `\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.styles.ts"],"names":[],"mappings":";AAEA,wBAuMC"}
1
+ {"version":3,"file":"ListItem.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.styles.ts"],"names":[],"mappings":";AAEA,wBA2MC"}
@@ -5,6 +5,12 @@ export default css `
5
5
  height: 56px;
6
6
  outline: none;
7
7
  cursor: default;
8
+ position: relative;
9
+
10
+ --md-focus-ring-shape-end-end: 0px;
11
+ --md-focus-ring-shape-end-start: 0px;
12
+ --md-focus-ring-shape-start-end: 0px;
13
+ --md-focus-ring-shape-start-start: 0px;
8
14
  }
9
15
 
10
16
  :host([disabled]) {
@@ -42,8 +48,6 @@ export default css `
42
48
  position: absolute;
43
49
  inset: 0;
44
50
  z-index: 1;
45
-
46
- /* background-color: var(--md-sys-color-surface); */
47
51
  }
48
52
 
49
53
  .content {
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.styles.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuMjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n :host {\n display: block;\n height: 56px;\n outline: none;\n cursor: default;\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n :host([hidden]) {\n display: none;\n }\n\n :host([lines='two']),\n :host([lines='one'][image='image']) {\n height: 72px;\n }\n\n :host([lines='three']),\n :host([lines='one'][image='video']) {\n height: 88px;\n }\n\n .surface {\n height: inherit;\n position: relative;\n\n display: flex;\n align-items: center;\n }\n\n .surface,\n .content {\n width: 100%;\n }\n\n .container {\n position: absolute;\n inset: 0;\n z-index: 1;\n\n /* background-color: var(--md-sys-color-surface); */\n }\n\n .content {\n position: relative;\n z-index: 2;\n display: flex;\n align-items: center;\n overflow: hidden;\n padding: 8px 16px 8px 16px;\n }\n\n .ripple {\n z-index: 3;\n }\n\n :host([image='video']) .content {\n /* The spec says the right padding is 24px but counting from the checkbox check border.\n This does not include spacing presented by the checkbox itself (18 box, 40px state layer)\n */\n padding: 12px 16px 12px 0px;\n }\n\n .headline {\n color: var(--md-sys-color-on-surface);\n\n font-family: var(--md-sys-typescale-body-large-font);\n font-weight: var(--md-sys-typescale-body-large-weight);\n font-size: var(--md-sys-typescale-body-large-size);\n letter-spacing: var(--md-sys-typescale-body-large-tracking);\n line-height: var(--md-sys-typescale-body-large-height);\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n display: flex;\n align-items: center;\n }\n\n .supporting-text {\n color: var(--md-sys-color-on-surface-variant);\n\n font-family: var(--md-sys-typescale-body-medium-font);\n font-weight: var(--md-sys-typescale-body-medium-weight);\n font-size: var(--md-sys-typescale-body-medium-size);\n letter-spacing: var(--md-sys-typescale-body-medium-tracking);\n line-height: var(--md-sys-typescale-body-medium-height);\n\n overflow: hidden;\n }\n\n .supporting-text ::slotted(*),\n slot[name='end-text']::slotted(*) {\n margin: 0;\n padding: 0;\n overflow: hidden;\n }\n\n slot[name='end-text']::slotted(*) {\n /* this is to make up to the 24px right padding defined in the spec. */\n margin-right: 8px;\n margin-left: 16px;\n }\n\n :host([lines='three']) .supporting-text {\n height: calc(2 * var(--md-sys-typescale-body-medium-height, 1.1));\n }\n\n :host([lines='three']) .supporting-text ::slotted(*) {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n :host([lines='two']) .supporting-text ::slotted(*) {\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .trailing-supporting-text {\n color: var(--md-sys-color-on-surface-variant);\n\n font-family: var(--md-sys-typescale-body-small-font);\n font-weight: var(--md-sys-typescale-body-small-weight);\n font-size: var(--md-sys-typescale-body-small-size);\n letter-spacing: var(--md-sys-typescale-body-small-tracking);\n line-height: var(--md-sys-typescale-body-small-height);\n }\n\n :host slot[name='end']::slotted(*) {\n color: var(--md-sys-color-on-surface-variant);\n fill: var(--md-sys-color-on-surface-variant);\n margin-left: 16px;\n }\n\n :host slot[name='start']::slotted(*) {\n display: block;\n margin-right: 16px;\n }\n\n :host([image='icon']) slot[name='start']::slotted(*) {\n width: 24px;\n height: 24px;\n }\n\n :host([image='avatar']) slot[name='start']::slotted(*) {\n width: 40px;\n height: 40px;\n }\n\n :host([image='image']) slot[name='start']::slotted(*) {\n width: 56px;\n height: 56px;\n }\n\n :host([image='video']) slot[name='start']::slotted(*) {\n width: 114px;\n height: 64px;\n }\n\n .body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n :host(.highlight) .state {\n background-color: var(--md-sys-color-on-surface);\n opacity: var(--md-sys-state-hover-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n\n :host(.select) .state {\n background-color: var(--md-sys-color-secondary-container);\n color: var(--md-sys-color-on-secondary-container);\n opacity: var(--md-sys-state-focus-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n\n :host([static]:hover) .state {\n background-color: var(--md-sys-color-on-surface);\n opacity: var(--md-sys-state-hover-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n`\n"]}
1
+ {"version":3,"file":"ListItem.styles.js","sourceRoot":"","sources":["../../../../../src/md/list/internals/ListItem.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2MjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n :host {\n display: block;\n height: 56px;\n outline: none;\n cursor: default;\n position: relative;\n\n --md-focus-ring-shape-end-end: 0px;\n --md-focus-ring-shape-end-start: 0px;\n --md-focus-ring-shape-start-end: 0px;\n --md-focus-ring-shape-start-start: 0px;\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n :host([hidden]) {\n display: none;\n }\n\n :host([lines='two']),\n :host([lines='one'][image='image']) {\n height: 72px;\n }\n\n :host([lines='three']),\n :host([lines='one'][image='video']) {\n height: 88px;\n }\n\n .surface {\n height: inherit;\n position: relative;\n\n display: flex;\n align-items: center;\n }\n\n .surface,\n .content {\n width: 100%;\n }\n\n .container {\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n\n .content {\n position: relative;\n z-index: 2;\n display: flex;\n align-items: center;\n overflow: hidden;\n padding: 8px 16px 8px 16px;\n }\n\n .ripple {\n z-index: 3;\n }\n\n :host([image='video']) .content {\n /* The spec says the right padding is 24px but counting from the checkbox check border.\n This does not include spacing presented by the checkbox itself (18 box, 40px state layer)\n */\n padding: 12px 16px 12px 0px;\n }\n\n .headline {\n color: var(--md-sys-color-on-surface);\n\n font-family: var(--md-sys-typescale-body-large-font);\n font-weight: var(--md-sys-typescale-body-large-weight);\n font-size: var(--md-sys-typescale-body-large-size);\n letter-spacing: var(--md-sys-typescale-body-large-tracking);\n line-height: var(--md-sys-typescale-body-large-height);\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n display: flex;\n align-items: center;\n }\n\n .supporting-text {\n color: var(--md-sys-color-on-surface-variant);\n\n font-family: var(--md-sys-typescale-body-medium-font);\n font-weight: var(--md-sys-typescale-body-medium-weight);\n font-size: var(--md-sys-typescale-body-medium-size);\n letter-spacing: var(--md-sys-typescale-body-medium-tracking);\n line-height: var(--md-sys-typescale-body-medium-height);\n\n overflow: hidden;\n }\n\n .supporting-text ::slotted(*),\n slot[name='end-text']::slotted(*) {\n margin: 0;\n padding: 0;\n overflow: hidden;\n }\n\n slot[name='end-text']::slotted(*) {\n /* this is to make up to the 24px right padding defined in the spec. */\n margin-right: 8px;\n margin-left: 16px;\n }\n\n :host([lines='three']) .supporting-text {\n height: calc(2 * var(--md-sys-typescale-body-medium-height, 1.1));\n }\n\n :host([lines='three']) .supporting-text ::slotted(*) {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n :host([lines='two']) .supporting-text ::slotted(*) {\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .trailing-supporting-text {\n color: var(--md-sys-color-on-surface-variant);\n\n font-family: var(--md-sys-typescale-body-small-font);\n font-weight: var(--md-sys-typescale-body-small-weight);\n font-size: var(--md-sys-typescale-body-small-size);\n letter-spacing: var(--md-sys-typescale-body-small-tracking);\n line-height: var(--md-sys-typescale-body-small-height);\n }\n\n :host slot[name='end']::slotted(*) {\n color: var(--md-sys-color-on-surface-variant);\n fill: var(--md-sys-color-on-surface-variant);\n margin-left: 16px;\n }\n\n :host slot[name='start']::slotted(*) {\n display: block;\n margin-right: 16px;\n }\n\n :host([image='icon']) slot[name='start']::slotted(*) {\n width: 24px;\n height: 24px;\n }\n\n :host([image='avatar']) slot[name='start']::slotted(*) {\n width: 40px;\n height: 40px;\n }\n\n :host([image='image']) slot[name='start']::slotted(*) {\n width: 56px;\n height: 56px;\n }\n\n :host([image='video']) slot[name='start']::slotted(*) {\n width: 114px;\n height: 64px;\n }\n\n .body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n :host(.highlight) .state {\n background-color: var(--md-sys-color-on-surface);\n opacity: var(--md-sys-state-hover-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n\n :host(.select) .state {\n background-color: var(--md-sys-color-secondary-container);\n color: var(--md-sys-color-on-secondary-container);\n opacity: var(--md-sys-state-focus-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n\n :host([static]:hover) .state {\n background-color: var(--md-sys-color-on-surface);\n opacity: var(--md-sys-state-hover-state-layer-opacity);\n position: absolute;\n inset: 0;\n z-index: 1;\n }\n`\n"]}
@@ -26,7 +26,7 @@ export default class UiRipple extends LitElement {
26
26
  protected rippleSize: string;
27
27
  protected rippleScale: string;
28
28
  protected initialSize: number;
29
- protected pressAnimationSignal: import("../../motion/animation.js").AnimationSignal;
29
+ private rippleStartEvent?;
30
30
  protected growAnimation: Animation | null;
31
31
  protected delayedEndPressHandle: number | null;
32
32
  protected render(): TemplateResult;
@@ -41,6 +41,7 @@ export default class UiRipple extends LitElement {
41
41
  endPoint: IPoint;
42
42
  };
43
43
  protected startPressAnimation(positionEvent?: Event | null): void;
44
+ private endPressAnimation;
44
45
  beginHover(hoverEvent?: Event): void;
45
46
  endHover(): void;
46
47
  beginFocus(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../src/md/ripple/internals/ripple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAA;AAYjE,UAAU,MAAM;IACd,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAG,WAAW,CAAA;IAEhD;;OAEG;IAC0B,QAAQ,CAAC,SAAS,UAAQ;IAEvD;;OAEG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAE5D,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAElC,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAElC,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAE3C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,SAAS,CAAC,UAAU,SAAK;IAEzB,SAAS,CAAC,WAAW,SAAK;IAE1B,SAAS,CAAC,WAAW,SAAI;IAEzB,SAAS,CAAC,oBAAoB,sDAA0B;IAExD,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEhD,SAAS,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAO;cAElC,MAAM,IAAI,cAAc;IAI3C,mBAAmB;IACnB,SAAS,CAAC,sBAAsB,IAAI,SAAS;cAS1B,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IASnE,SAAS,CAAC,aAAa,IAAI,OAAO;IAIlC,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAqBrC,SAAS,CAAC,+BAA+B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM;IAS7E,SAAS,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IA2B3G,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IA0CjE,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,IAAI;IAMpC,QAAQ,IAAI,IAAI;IAIhB,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAS9C,QAAQ,IAAI,IAAI;CAWjB"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../src/md/ripple/internals/ripple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAA;AAYjE,UAAU,MAAM;IACd,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAG,WAAW,CAAA;IAEhD;;OAEG;IAC0B,QAAQ,CAAC,SAAS,UAAQ;IAEvD;;OAEG;IACyC,QAAQ,CAAC,QAAQ,UAAQ;IAE5D,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAElC,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAElC,SAAS,CAAC,QAAQ,CAAC,OAAO,UAAQ;IAE3C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,SAAS,CAAC,UAAU,SAAK;IAEzB,SAAS,CAAC,WAAW,SAAK;IAE1B,SAAS,CAAC,WAAW,SAAI;IAEzB,OAAO,CAAC,gBAAgB,CAAC,CAAc;IAIvC,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEhD,SAAS,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAO;cAElC,MAAM,IAAI,cAAc;IAI3C,mBAAmB;IACnB,SAAS,CAAC,sBAAsB,IAAI,SAAS;cAS1B,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IASnE,SAAS,CAAC,aAAa,IAAI,OAAO;IAIlC,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAqBrC,SAAS,CAAC,+BAA+B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM;IAS7E,SAAS,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IA2B3G,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;YA2CnD,iBAAiB;IA6B/B,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,IAAI;IAMpC,QAAQ,IAAI,IAAI;IAIhB,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAU9C,QAAQ,IAAI,IAAI;CAYjB"}
@@ -7,9 +7,9 @@ import { __esDecorate, __runInitializers } from "tslib";
7
7
  import { html, LitElement } from 'lit';
8
8
  import { property, query, state } from 'lit/decorators.js';
9
9
  import { classMap } from 'lit/directives/class-map.js';
10
- import { createAnimationSignal, Easing } from '../../motion/animation.js';
10
+ import { Easing } from '../../motion/animation.js';
11
11
  const PRESS_GROW_MS = 450;
12
- const MINIMUM_PRESS_MS = 225;
12
+ const MINIMUM_PRESS_MS = 80;
13
13
  const INITIAL_ORIGIN_SCALE = 0.2;
14
14
  const PADDING = 10;
15
15
  const SOFT_EDGE_MINIMUM_SIZE = 75;
@@ -87,7 +87,8 @@ let UiRipple = (() => {
87
87
  rippleSize = (__runInitializers(this, _pressed_extraInitializers), '');
88
88
  rippleScale = '';
89
89
  initialSize = 0;
90
- pressAnimationSignal = createAnimationSignal();
90
+ rippleStartEvent;
91
+ // protected pressAnimationSignal = createAnimationSignal()
91
92
  growAnimation = null;
92
93
  delayedEndPressHandle = null;
93
94
  render() {
@@ -166,11 +167,13 @@ let UiRipple = (() => {
166
167
  if (!mdRoot) {
167
168
  return;
168
169
  }
170
+ this.pressed = true;
171
+ this.growAnimation?.cancel();
169
172
  this.determineRippleSize();
170
173
  const { startPoint, endPoint } = this.getTranslationCoordinates(positionEvent);
171
174
  const translateStart = `${startPoint.x}px, ${startPoint.y}px`;
172
175
  const translateEnd = `${endPoint.x}px, ${endPoint.y}px`;
173
- const signal = this.pressAnimationSignal.start();
176
+ // const signal = this.pressAnimationSignal.start()
174
177
  const growAnimation = mdRoot.animate({
175
178
  top: [0, 0],
176
179
  left: [0, 0],
@@ -183,16 +186,41 @@ let UiRipple = (() => {
183
186
  easing: Easing.STANDARD,
184
187
  fill: ANIMATION_FILL,
185
188
  });
186
- growAnimation.addEventListener('finish', () => {
187
- this.pressAnimationSignal.finish();
188
- this.growAnimation = null;
189
- });
190
- signal.addEventListener('abort', () => {
191
- growAnimation.cancel();
192
- this.growAnimation = null;
193
- });
189
+ // growAnimation.addEventListener('finish', () => {
190
+ // this.pressAnimationSignal.finish()
191
+ // this.growAnimation = null
192
+ // })
193
+ // signal.addEventListener('abort', () => {
194
+ // growAnimation.cancel()
195
+ // this.growAnimation = null
196
+ // })
194
197
  this.growAnimation = growAnimation;
195
198
  }
199
+ async endPressAnimation() {
200
+ this.rippleStartEvent = undefined;
201
+ // this.state = State.INACTIVE
202
+ const animation = this.growAnimation;
203
+ let pressAnimationPlayState = Infinity;
204
+ if (typeof animation?.currentTime === 'number') {
205
+ pressAnimationPlayState = animation.currentTime;
206
+ }
207
+ else if (animation?.currentTime) {
208
+ pressAnimationPlayState = animation.currentTime.to('ms').value;
209
+ }
210
+ if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {
211
+ this.pressed = false;
212
+ return;
213
+ }
214
+ await new Promise((resolve) => {
215
+ setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);
216
+ });
217
+ if (this.growAnimation !== animation) {
218
+ // A new press animation was started. The old animation was canceled and
219
+ // should not finish the pressed state.
220
+ return;
221
+ }
222
+ this.pressed = false;
223
+ }
196
224
  beginHover(hoverEvent) {
197
225
  if (hoverEvent?.pointerType !== 'touch') {
198
226
  this.hovered = true;
@@ -209,6 +237,7 @@ let UiRipple = (() => {
209
237
  }
210
238
  beginPress(positionEvent) {
211
239
  this.pressed = true;
240
+ this.rippleStartEvent = positionEvent;
212
241
  if (this.delayedEndPressHandle !== null) {
213
242
  clearTimeout(this.delayedEndPressHandle);
214
243
  this.delayedEndPressHandle = null;
@@ -226,6 +255,7 @@ let UiRipple = (() => {
226
255
  this.delayedEndPressHandle = null;
227
256
  }, MINIMUM_PRESS_MS - pressAnimationPlayState);
228
257
  }
258
+ this.endPressAnimation();
229
259
  }
230
260
  };
231
261
  })();