@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":"ripple.js","sourceRoot":"","sources":["../../../../../src/md/ripple/internals/ripple.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { createAnimationSignal, Easing } from '../../motion/animation.js'\n\nconst PRESS_GROW_MS = 450\nconst MINIMUM_PRESS_MS = 225\nconst INITIAL_ORIGIN_SCALE = 0.2\nconst PADDING = 10\nconst SOFT_EDGE_MINIMUM_SIZE = 75\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35\nconst PRESS_PSEUDO = '::after'\nconst ANIMATION_FILL = 'forwards'\n\ninterface IPoint {\n x: number\n y: number\n}\n\nexport default class UiRipple extends LitElement {\n @query('.surface') accessor mdRoot!: HTMLElement\n\n /**\n * @attribute\n */\n @property({ type: Boolean }) accessor unbounded = false\n\n /**\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n @state() protected accessor hovered = false\n\n @state() protected accessor focused = false\n\n @state() protected accessor pressed = false\n\n get isPressed(): boolean {\n return this.pressed\n }\n\n protected rippleSize = ''\n\n protected rippleScale = ''\n\n protected initialSize = 0\n\n protected pressAnimationSignal = createAnimationSignal()\n\n protected growAnimation: Animation | null = null\n\n protected delayedEndPressHandle: number | null = null\n\n protected override render(): TemplateResult {\n return html`<div class=\"surface ${classMap(this.getRenderRippleClasses())}\"></div>`\n }\n\n /** @soyTemplate */\n protected getRenderRippleClasses(): ClassInfo {\n return {\n hovered: this.hovered,\n focused: this.focused,\n pressed: this.pressed,\n unbounded: this.unbounded,\n }\n }\n\n protected override update(changedProps: PropertyValues<this>): void {\n if (changedProps.has('disabled') && this.disabled) {\n this.endHover()\n this.endFocus()\n this.endPress()\n }\n super.update(changedProps)\n }\n\n protected getDimensions(): DOMRect {\n return (this.parentElement ?? this).getBoundingClientRect()\n }\n\n protected determineRippleSize(): void {\n const { height, width } = this.getDimensions()\n const maxDim = Math.max(height, width)\n const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE)\n\n let maxRadius = maxDim\n let initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE)\n\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2)\n maxRadius = hypotenuse + PADDING\n\n // ensure `initialSize` is even for unbounded\n if (this.unbounded) {\n initialSize -= initialSize % 2\n }\n\n this.initialSize = initialSize\n this.rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`\n this.rippleSize = `${this.initialSize}px`\n }\n\n protected getNormalizedPointerEventCoords(pointerEvent: PointerEvent): IPoint {\n const { scrollX, scrollY } = window\n const { left, top } = this.getDimensions()\n const documentX = scrollX + left\n const documentY = scrollY + top\n const { pageX, pageY } = pointerEvent\n return { x: pageX - documentX, y: pageY - documentY }\n }\n\n protected getTranslationCoordinates(positionEvent?: Event | null): { startPoint: IPoint; endPoint: IPoint } {\n const { height, width } = this.getDimensions()\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n }\n\n let startPoint\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent)\n } else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n }\n }\n\n // center around start point\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2,\n }\n\n return { startPoint, endPoint }\n }\n\n protected startPressAnimation(positionEvent?: Event | null): void {\n const { mdRoot } = this\n if (!mdRoot) {\n return\n }\n\n this.determineRippleSize()\n const { startPoint, endPoint } = this.getTranslationCoordinates(positionEvent)\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`\n\n const signal = this.pressAnimationSignal.start()\n\n const growAnimation = mdRoot.animate(\n {\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [`translate(${translateStart}) scale(1)`, `translate(${translateEnd}) scale(${this.rippleScale})`],\n },\n {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: Easing.STANDARD,\n fill: ANIMATION_FILL,\n }\n )\n\n growAnimation.addEventListener('finish', () => {\n this.pressAnimationSignal.finish()\n this.growAnimation = null\n })\n\n signal.addEventListener('abort', () => {\n growAnimation.cancel()\n this.growAnimation = null\n })\n\n this.growAnimation = growAnimation\n }\n\n beginHover(hoverEvent?: Event): void {\n if ((hoverEvent as PointerEvent)?.pointerType !== 'touch') {\n this.hovered = true\n }\n }\n\n endHover(): void {\n this.hovered = false\n }\n\n beginFocus(): void {\n this.focused = true\n }\n\n endFocus(): void {\n this.focused = false\n }\n\n beginPress(positionEvent?: Event | null): void {\n this.pressed = true\n if (this.delayedEndPressHandle !== null) {\n clearTimeout(this.delayedEndPressHandle)\n this.delayedEndPressHandle = null\n }\n this.startPressAnimation(positionEvent)\n }\n\n endPress(): void {\n const pressAnimationPlayState = (this.growAnimation?.currentTime ?? Infinity) as number\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false\n } else {\n this.delayedEndPressHandle = setTimeout(() => {\n this.pressed = false\n this.delayedEndPressHandle = null\n }, MINIMUM_PRESS_MS - pressAnimationPlayState) as unknown as number\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../src/md/ripple/internals/ripple.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { Easing } from '../../motion/animation.js'\n\nconst PRESS_GROW_MS = 450\nconst MINIMUM_PRESS_MS = 80\nconst INITIAL_ORIGIN_SCALE = 0.2\nconst PADDING = 10\nconst SOFT_EDGE_MINIMUM_SIZE = 75\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35\nconst PRESS_PSEUDO = '::after'\nconst ANIMATION_FILL = 'forwards'\n\ninterface IPoint {\n x: number\n y: number\n}\n\nexport default class UiRipple extends LitElement {\n @query('.surface') accessor mdRoot!: HTMLElement\n\n /**\n * @attribute\n */\n @property({ type: Boolean }) accessor unbounded = false\n\n /**\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n @state() protected accessor hovered = false\n\n @state() protected accessor focused = false\n\n @state() protected accessor pressed = false\n\n get isPressed(): boolean {\n return this.pressed\n }\n\n protected rippleSize = ''\n\n protected rippleScale = ''\n\n protected initialSize = 0\n\n private rippleStartEvent?: Event | null\n\n // protected pressAnimationSignal = createAnimationSignal()\n\n protected growAnimation: Animation | null = null\n\n protected delayedEndPressHandle: number | null = null\n\n protected override render(): TemplateResult {\n return html`<div class=\"surface ${classMap(this.getRenderRippleClasses())}\"></div>`\n }\n\n /** @soyTemplate */\n protected getRenderRippleClasses(): ClassInfo {\n return {\n hovered: this.hovered,\n focused: this.focused,\n pressed: this.pressed,\n unbounded: this.unbounded,\n }\n }\n\n protected override update(changedProps: PropertyValues<this>): void {\n if (changedProps.has('disabled') && this.disabled) {\n this.endHover()\n this.endFocus()\n this.endPress()\n }\n super.update(changedProps)\n }\n\n protected getDimensions(): DOMRect {\n return (this.parentElement ?? this).getBoundingClientRect()\n }\n\n protected determineRippleSize(): void {\n const { height, width } = this.getDimensions()\n const maxDim = Math.max(height, width)\n const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE)\n\n let maxRadius = maxDim\n let initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE)\n\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2)\n maxRadius = hypotenuse + PADDING\n\n // ensure `initialSize` is even for unbounded\n if (this.unbounded) {\n initialSize -= initialSize % 2\n }\n\n this.initialSize = initialSize\n this.rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`\n this.rippleSize = `${this.initialSize}px`\n }\n\n protected getNormalizedPointerEventCoords(pointerEvent: PointerEvent): IPoint {\n const { scrollX, scrollY } = window\n const { left, top } = this.getDimensions()\n const documentX = scrollX + left\n const documentY = scrollY + top\n const { pageX, pageY } = pointerEvent\n return { x: pageX - documentX, y: pageY - documentY }\n }\n\n protected getTranslationCoordinates(positionEvent?: Event | null): { startPoint: IPoint; endPoint: IPoint } {\n const { height, width } = this.getDimensions()\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n }\n\n let startPoint\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent)\n } else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n }\n }\n\n // center around start point\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2,\n }\n\n return { startPoint, endPoint }\n }\n\n protected startPressAnimation(positionEvent?: Event | null): void {\n const { mdRoot } = this\n if (!mdRoot) {\n return\n }\n this.pressed = true\n this.growAnimation?.cancel()\n this.determineRippleSize()\n const { startPoint, endPoint } = this.getTranslationCoordinates(positionEvent)\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`\n\n // const signal = this.pressAnimationSignal.start()\n\n const growAnimation = mdRoot.animate(\n {\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [`translate(${translateStart}) scale(1)`, `translate(${translateEnd}) scale(${this.rippleScale})`],\n },\n {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: Easing.STANDARD,\n fill: ANIMATION_FILL,\n }\n )\n\n // growAnimation.addEventListener('finish', () => {\n // this.pressAnimationSignal.finish()\n // this.growAnimation = null\n // })\n\n // signal.addEventListener('abort', () => {\n // growAnimation.cancel()\n // this.growAnimation = null\n // })\n\n this.growAnimation = growAnimation\n }\n\n private async endPressAnimation() {\n this.rippleStartEvent = undefined\n // this.state = State.INACTIVE\n const animation = this.growAnimation\n let pressAnimationPlayState = Infinity\n if (typeof animation?.currentTime === 'number') {\n pressAnimationPlayState = animation.currentTime\n } else if (animation?.currentTime) {\n pressAnimationPlayState = animation.currentTime.to('ms').value\n }\n\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false\n return\n }\n\n await new Promise((resolve) => {\n setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState)\n })\n\n if (this.growAnimation !== animation) {\n // A new press animation was started. The old animation was canceled and\n // should not finish the pressed state.\n return\n }\n\n this.pressed = false\n }\n\n beginHover(hoverEvent?: Event): void {\n if ((hoverEvent as PointerEvent)?.pointerType !== 'touch') {\n this.hovered = true\n }\n }\n\n endHover(): void {\n this.hovered = false\n }\n\n beginFocus(): void {\n this.focused = true\n }\n\n endFocus(): void {\n this.focused = false\n }\n\n beginPress(positionEvent?: Event | null): void {\n this.pressed = true\n this.rippleStartEvent = positionEvent\n if (this.delayedEndPressHandle !== null) {\n clearTimeout(this.delayedEndPressHandle)\n this.delayedEndPressHandle = null\n }\n this.startPressAnimation(positionEvent)\n }\n\n endPress(): void {\n const pressAnimationPlayState = (this.growAnimation?.currentTime ?? Infinity) as number\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false\n } else {\n this.delayedEndPressHandle = setTimeout(() => {\n this.pressed = false\n this.delayedEndPressHandle = null\n }, MINIMUM_PRESS_MS - pressAnimationPlayState) as unknown as number\n }\n this.endPressAnimation()\n }\n}\n"]}
@@ -26,7 +26,7 @@ export default class SegmentedButton extends UiElement {
26
26
  connectedCallback(): void;
27
27
  beginPress(options: BeginPressConfig): void;
28
28
  endPress(options: EndPressConfig): void;
29
- protected handlePointerEnter(e: PointerEvent): void;
29
+ handlePointerEnter(e: PointerEvent): void;
30
30
  handlePointerLeave(e: PointerEvent): void;
31
31
  protected handleIconSlotChange(): void;
32
32
  protected render(): TemplateResult;
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButton.d.ts","sourceRoot":"","sources":["../../../../../src/md/segmented-button/internals/SegmentedButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1C,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,2BAA2B,CAAA;AAElC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAAS;IAChC,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAA;IAE9C;;;OAGG;IAC0B,QAAQ,CAAC,QAAQ,UAAQ;IAEE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAG,WAAW,EAAE,CAAA;IAEvG,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAI1B;;IAgBQ,iBAAiB,IAAI,IAAI;IAUzB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAK3C,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAShD,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1C,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKlD,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAInB,MAAM,IAAI,cAAc;IAmB3C,SAAS,CAAC,cAAc,IAAI,cAAc;IAS1C,SAAS,CAAC,iBAAiB,IAAI,cAAc;IAY7C,SAAS,CAAC,aAAa,IAAI,cAAc;IAQzC,SAAS,CAAC,YAAY,QAAO,cAAc,CAG1C;CACF"}
1
+ {"version":3,"file":"SegmentedButton.d.ts","sourceRoot":"","sources":["../../../../../src/md/segmented-button/internals/SegmentedButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1C,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,2BAA2B,CAAA;AAElC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAAS;IAChC,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAA;IAE9C;;;OAGG;IAC0B,QAAQ,CAAC,QAAQ,UAAQ;IAEE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAG,WAAW,EAAE,CAAA;IAEvG,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAI1B;;IAgBQ,iBAAiB,IAAI,IAAI;IAUzB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAK3C,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IASvC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAKlD,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAInB,MAAM,IAAI,cAAc;IAmB3C,SAAS,CAAC,cAAc,IAAI,cAAc;IAS1C,SAAS,CAAC,iBAAiB,IAAI,cAAc;IAY7C,SAAS,CAAC,aAAa,IAAI,cAAc;IAQzC,SAAS,CAAC,YAAY,QAAO,cAAc,CAG1C;CACF"}
@@ -60,7 +60,6 @@ let SegmentedButton = (() => {
60
60
  }
61
61
  constructor() {
62
62
  super();
63
- this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));
64
63
  this.actionController.cancelKeyboardEvents = true;
65
64
  this.addEventListener('keydown', this.handleKeyDown.bind(this));
66
65
  this.addEventListener('keyup', this.handleKeyUp.bind(this));
@@ -68,6 +67,7 @@ let SegmentedButton = (() => {
68
67
  this.addEventListener('pointerdown', this.handlePointerDown.bind(this));
69
68
  this.addEventListener('pointerup', this.handlePointerUp.bind(this));
70
69
  this.addEventListener('pointercancel', this.handlePointerCancel.bind(this));
70
+ this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));
71
71
  this.addEventListener('pointerleave', this.handlePointerLeave.bind(this));
72
72
  this.addEventListener('contextmenu', this.handleContextMenu.bind(this));
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../../../../../src/md/segmented-button/internals/SegmentedButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit'\nimport { property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ClassInfo, 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 { ripple } from '../../effects/rippleDirective.js'\nimport { check } from '../../icons/Icons.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport '../../ripple/ui-ripple.js'\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends UiElement {\n @query('ui-ripple') accessor ripple!: UiRipple\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) accessor selected = false\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected accessor leadingIcons!: HTMLElement[]\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n constructor() {\n super()\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this))\n this.actionController.cancelKeyboardEvents = true\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\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 }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button')\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.ripple.beginPress(options.positionEvent)\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options)\n this.ripple.endPress()\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }))\n }\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n this.ripple.endHover()\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate()\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n })\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()}\n <slot></slot>\n </div>\n </div>\n `\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this\n const classes: ClassInfo = {\n leading: true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html` <div class=\"${classMap(classes)}\">${this.renderLeadingIcon()} ${this.renderChecked()}</div> `\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n 'hidden': !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n 'checked': !!this.selected,\n })\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`\n }\n}\n"]}
1
+ {"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../../../../../src/md/segmented-button/internals/SegmentedButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit'\nimport { property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ClassInfo, 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 { ripple } from '../../effects/rippleDirective.js'\nimport { check } from '../../icons/Icons.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport '../../ripple/ui-ripple.js'\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends UiElement {\n @query('ui-ripple') accessor ripple!: UiRipple\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) accessor selected = false\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected accessor leadingIcons!: HTMLElement[]\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n constructor() {\n super()\n this.actionController.cancelKeyboardEvents = true\n this.addEventListener('keydown', this.handleKeyDown.bind(this))\n this.addEventListener('keyup', this.handleKeyUp.bind(this))\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('pointerenter', this.handlePointerEnter.bind(this))\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this))\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this))\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button')\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.ripple.beginPress(options.positionEvent)\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options)\n this.ripple.endPress()\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }))\n }\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e)\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n this.ripple.endHover()\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate()\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n })\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()}\n <slot></slot>\n </div>\n </div>\n `\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this\n const classes: ClassInfo = {\n leading: true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html` <div class=\"${classMap(classes)}\">${this.renderLeadingIcon()} ${this.renderChecked()}</div> `\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n 'hidden': !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n 'checked': !!this.selected,\n })\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`\n }\n}\n"]}
@@ -18,6 +18,6 @@
18
18
  <body>
19
19
  <div id="app"></div>
20
20
 
21
- <script type="module" src="/.tmp/demo/md/buttons/button.js"></script>
21
+ <script type="module" src="/.tmp/demo/md/buttons/index.js"></script>
22
22
  </body>
23
23
  </html>
@@ -34,6 +34,6 @@
34
34
  <body>
35
35
  <div id="app"></div>
36
36
 
37
- <script type="module" src="/.tmp/demo/md/inputs/checkbox.js"></script>
37
+ <script type="module" src="/.tmp/demo/md/checkbox/index.js"></script>
38
38
  </body>
39
39
  </html>
@@ -26,6 +26,6 @@
26
26
  <body>
27
27
  <div id="app"></div>
28
28
 
29
- <script type="module" src="/.tmp/demo/md/list/dropdown-list.js"></script>
29
+ <script type="module" src="/.tmp/demo/md/dropdown-list/index.js"></script>
30
30
  </body>
31
31
  </html>
@@ -6,6 +6,10 @@
6
6
  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0">
7
7
  <title>UI icon button</title>
8
8
  <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
9
+ <link
10
+ rel="stylesheet"
11
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
12
+ />
9
13
  <link href="../../../src/styles/m3/tokens.css" rel="stylesheet" type="text/css" />
10
14
  <link href="../../../src/styles/m3/theme.css" rel="stylesheet" type="text/css" />
11
15
  <style>
@@ -23,6 +27,6 @@
23
27
  <body>
24
28
  <div id="app"></div>
25
29
 
26
- <script type="module" src="/.tmp/demo/md/buttons/icon-button.js"></script>
30
+ <script type="module" src="/.tmp/demo/md/icon-button/index.js"></script>
27
31
  </body>
28
32
  </html>
@@ -0,0 +1,236 @@
1
+ import { html, TemplateResult } from 'lit'
2
+ import { DemoPage } from '../../../src/demo/DemoPage.js'
3
+ import IconButtonElement from '../../../src/md/icon-button/internals/IconButton.js'
4
+
5
+ import '../../../src/md/icon-button/ui-icon-button.js'
6
+ import '../../../src/md/icon-button/ui-filled-icon-button.js'
7
+ import '../../../src/md/icon-button/ui-filled-tonal-icon-button.js'
8
+ import '../../../src/md/icon-button/ui-outlined-icon-button.js'
9
+ import '../../../src/md/icons/ui-icon.js'
10
+
11
+ import '@material/web/iconbutton/icon-button.js'
12
+ import '@material/web/iconbutton/filled-icon-button.js'
13
+ import '@material/web/iconbutton/filled-tonal-icon-button.js'
14
+ import '@material/web/iconbutton/outlined-icon-button.js'
15
+ import '@material/web/icon/icon.js'
16
+
17
+ class ComponentDemoPage extends DemoPage {
18
+ override accessor componentName = 'API icon button'
19
+
20
+ _clickHandler(e: Event): void {
21
+ const button = e.target as IconButtonElement
22
+ console.log(`A ${button.localName} button was clicked.`)
23
+ }
24
+
25
+ _activeHandler(e: Event): void {
26
+ const button = e.target as IconButtonElement
27
+ console.log(`A ${button.localName} button was ${button.active ? 'activated' : 'deactivated'}`)
28
+ }
29
+
30
+ contentTemplate(): TemplateResult {
31
+ return html`
32
+ <a href="../">Back</a>
33
+ <section class="demo-section">
34
+ <h2 class="title-large">Filled icon button</h2>
35
+
36
+ <h3 class="title-small">UI icon button</h3>
37
+ <div class="demo-row icons-demo-row">
38
+ <ui-filled-icon-button
39
+ @click="${this._clickHandler}"
40
+ @active="${this._activeHandler}"
41
+ aria-label="Settings: standard filled button"
42
+ ><ui-icon>settings</ui-icon></ui-filled-icon-button
43
+ >
44
+ <ui-filled-icon-button
45
+ toggle
46
+ @click="${this._clickHandler}"
47
+ @active="${this._activeHandler}"
48
+ aria-label="Settings: toggle filled button"
49
+ ><ui-icon>settings</ui-icon></ui-filled-icon-button
50
+ >
51
+ <ui-filled-icon-button
52
+ toggle
53
+ active
54
+ @click="${this._clickHandler}"
55
+ @active="${this._activeHandler}"
56
+ aria-label="Settings: toggle, active filled button"
57
+ ><ui-icon>settings</ui-icon></ui-filled-icon-button
58
+ >
59
+ <ui-filled-icon-button
60
+ disabled
61
+ @click="${this._clickHandler}"
62
+ @active="${this._activeHandler}"
63
+ aria-label="Settings: disabled filled button"
64
+ ><ui-icon>settings</ui-icon></ui-filled-icon-button
65
+ >
66
+
67
+ <p class="label-large">No toggle</p>
68
+ <p class="label-large">Toggle (unselected)</p>
69
+ <p class="label-large">Toggle (selected)</p>
70
+ <p class="label-large">Disabled</p>
71
+ </div>
72
+
73
+ <h3 class="title-small">MD icon button (reference)</h3>
74
+ <div class="demo-row icons-demo-row">
75
+ <md-filled-icon-button><md-icon>settings</md-icon></md-filled-icon-button>
76
+ <md-filled-icon-button toggle><md-icon>settings</md-icon></md-filled-icon-button>
77
+ <md-filled-icon-button toggle selected><md-icon>settings</md-icon></md-filled-icon-button>
78
+ <md-filled-icon-button disabled><md-icon>settings</md-icon></md-filled-icon-button>
79
+ <p class="label-large">No toggle</p>
80
+ <p class="label-large">Toggle (unselected)</p>
81
+ <p class="label-large">Toggle (selected)</p>
82
+ <p class="label-large">Disabled</p>
83
+ </div>
84
+ </section>
85
+
86
+ <section class="demo-section">
87
+ <h2 class="title-large">Filled tonal icon button</h2>
88
+ <h3 class="title-small">UI icon button</h3>
89
+ <div class="demo-row icons-demo-row">
90
+ <ui-filled-tonal-icon-button
91
+ @click="${this._clickHandler}"
92
+ @active="${this._activeHandler}"
93
+ aria-label="Settings: standard filled button"
94
+ ><ui-icon>settings</ui-icon></ui-filled-tonal-icon-button
95
+ >
96
+ <ui-filled-tonal-icon-button
97
+ toggle
98
+ @click="${this._clickHandler}"
99
+ @active="${this._activeHandler}"
100
+ aria-label="Settings: toggle filled button"
101
+ ><ui-icon>settings</ui-icon></ui-filled-tonal-icon-button
102
+ >
103
+ <ui-filled-tonal-icon-button
104
+ toggle
105
+ active
106
+ @click="${this._clickHandler}"
107
+ @active="${this._activeHandler}"
108
+ aria-label="Settings: toggle, active filled button"
109
+ ><ui-icon>settings</ui-icon></ui-filled-tonal-icon-button
110
+ >
111
+ <ui-filled-tonal-icon-button
112
+ disabled
113
+ @click="${this._clickHandler}"
114
+ @active="${this._activeHandler}"
115
+ aria-label="Settings: disabled filled button"
116
+ ><ui-icon>settings</ui-icon></ui-filled-tonal-icon-button
117
+ >
118
+
119
+ <p class="label-large">No toggle</p>
120
+ <p class="label-large">Toggle (unselected)</p>
121
+ <p class="label-large">Toggle (selected)</p>
122
+ <p class="label-large">Disabled</p>
123
+ </div>
124
+
125
+ <h3 class="title-small">MD icon button (reference)</h3>
126
+ <div class="demo-row icons-demo-row">
127
+ <md-filled-tonal-icon-button><md-icon>settings</md-icon></md-filled-tonal-icon-button>
128
+ <md-filled-tonal-icon-button toggle><md-icon>settings</md-icon></md-filled-tonal-icon-button>
129
+ <md-filled-tonal-icon-button toggle selected><md-icon>settings</md-icon></md-filled-tonal-icon-button>
130
+ <md-filled-tonal-icon-button disabled><md-icon>settings</md-icon></md-filled-tonal-icon-button>
131
+ <p class="label-large">No toggle</p>
132
+ <p class="label-large">Toggle (unselected)</p>
133
+ <p class="label-large">Toggle (selected)</p>
134
+ <p class="label-large">Disabled</p>
135
+ </div>
136
+ </section>
137
+
138
+ <section class="demo-section">
139
+ <h2 class="title-large">Outlined icon button</h2>
140
+ <h3 class="title-small">UI icon button</h3>
141
+
142
+ <div class="demo-row icons-demo-row">
143
+ <ui-outlined-icon-button
144
+ @click="${this._clickHandler}"
145
+ @active="${this._activeHandler}"
146
+ aria-labelledby="iont"
147
+ ><ui-icon>settings</ui-icon></ui-outlined-icon-button
148
+ >
149
+ <ui-outlined-icon-button
150
+ toggle
151
+ @click="${this._clickHandler}"
152
+ @active="${this._activeHandler}"
153
+ aria-labelledby="iotu"
154
+ ><ui-icon>settings</ui-icon></ui-outlined-icon-button
155
+ >
156
+ <ui-outlined-icon-button
157
+ active
158
+ toggle
159
+ @click="${this._clickHandler}"
160
+ @active="${this._activeHandler}"
161
+ aria-labelledby="iots"
162
+ ><ui-icon>settings</ui-icon></ui-outlined-icon-button
163
+ >
164
+ <ui-outlined-icon-button
165
+ disabled
166
+ @click="${this._clickHandler}"
167
+ @active="${this._activeHandler}"
168
+ aria-labelledby="iod"
169
+ ><ui-icon>settings</ui-icon></ui-outlined-icon-button
170
+ >
171
+
172
+ <p class="label-large" id="iont">No toggle</p>
173
+ <p class="label-large" id="iotu">Toggle (unselected)</p>
174
+ <p class="label-large" id="iots">Toggle (selected)</p>
175
+ <p class="label-large" id="iod">Disabled</p>
176
+ </div>
177
+
178
+ <h3 class="title-small">MD icon button (reference)</h3>
179
+ <div class="demo-row icons-demo-row">
180
+ <md-outlined-icon-button><md-icon>settings</md-icon></md-outlined-icon-button>
181
+ <md-outlined-icon-button toggle><md-icon>settings</md-icon></md-outlined-icon-button>
182
+ <md-outlined-icon-button toggle selected><md-icon>settings</md-icon></md-outlined-icon-button>
183
+ <md-outlined-icon-button disabled><md-icon>settings</md-icon></md-outlined-icon-button>
184
+ <p class="label-large">No toggle</p>
185
+ <p class="label-large">Toggle (unselected)</p>
186
+ <p class="label-large">Toggle (selected)</p>
187
+ <p class="label-large">Disabled</p>
188
+ </div>
189
+ </section>
190
+
191
+ <section class="demo-section">
192
+ <h2 class="title-large">Standard icon button</h2>
193
+ <h3 class="title-small">UI icon button</h3>
194
+ <div class="demo-row icons-demo-row">
195
+ <ui-icon-button @click="${this._clickHandler}" @active="${this._activeHandler}" aria-labelledby="isnt"
196
+ ><ui-icon>settings</ui-icon></ui-icon-button
197
+ >
198
+ <ui-icon-button toggle @click="${this._clickHandler}" @active="${this._activeHandler}" aria-labelledby="istu"
199
+ ><ui-icon>settings</ui-icon></ui-icon-button
200
+ >
201
+ <ui-icon-button
202
+ toggle
203
+ active
204
+ @click="${this._clickHandler}"
205
+ @active="${this._activeHandler}"
206
+ aria-labelledby="ists"
207
+ ><ui-icon>settings</ui-icon></ui-icon-button
208
+ >
209
+ <ui-icon-button disabled @click="${this._clickHandler}" @active="${this._activeHandler}" aria-labelledby="isd"
210
+ ><ui-icon>settings</ui-icon></ui-icon-button
211
+ >
212
+
213
+ <p class="label-large" id="isnt">No toggle</p>
214
+ <p class="label-large" id="istu">Toggle (unselected)</p>
215
+ <p class="label-large" id="ists">Toggle (selected)</p>
216
+ <p class="label-large" id="isd">Disabled</p>
217
+ </div>
218
+
219
+ <h3 class="title-small">MD icon button (reference)</h3>
220
+ <div class="demo-row icons-demo-row">
221
+ <md-icon-button><md-icon>settings</md-icon></md-icon-button>
222
+ <md-icon-button toggle><md-icon>settings</md-icon></md-icon-button>
223
+ <md-icon-button toggle selected><md-icon>settings</md-icon></md-icon-button>
224
+ <md-icon-button disabled><md-icon>settings</md-icon></md-icon-button>
225
+ <p class="label-large">No toggle</p>
226
+ <p class="label-large">Toggle (unselected)</p>
227
+ <p class="label-large">Toggle (selected)</p>
228
+ <p class="label-large">Disabled</p>
229
+ </div>
230
+ </section>
231
+ `
232
+ }
233
+ }
234
+
235
+ const instance = new ComponentDemoPage()
236
+ instance.render()
@@ -19,36 +19,43 @@
19
19
  <nav>
20
20
  <h2>Elements</h2>
21
21
  <dl>
22
- <dt><a href="buttons/button.html">ui buttons</a></dt>
23
- <dd>A Material 3-styled button.</dd>
24
- <dt><a href="buttons/segmented-buttons.html">ui-segmented-button</a></dt>
25
- <dd>A Material 3-styled segmented buttons.</dd>
26
- <dt><a href="buttons/icon-button.html">ui-icon-button</a></dt>
27
- <dd>A Material 3-styled icon button.</dd>
28
- <dt><a href="inputs/checkbox.html">ui-checkbox</a></dt>
29
- <dd>A Material 3-styled checkbox.</dd>
30
- <dt><a href="inputs/switch.html">ui-switch</a></dt>
31
- <dd>A Material 3-styled switch.</dd>
32
- <dt><a href="inputs/radio.html">ui-radio</a></dt>
33
- <dd>A Material 3-styled radio input.</dd>
34
- <dt><a href="chip/chip.html">ui-chip</a></dt>
35
- <dd>A Material 3-styled chip.</dd>
36
- <dt><a href="list/list.html">ui-list</a></dt>
37
- <dd>A Material 3-styled list and list item.</dd>
38
- <dt><a href="list/dropdown-list.html">dropdown-list</a></dt>
39
- <dd>A Material 3-styled dropdown-list.</dd>
40
- <dt><a href="inputs/input.html">Text field</a></dt>
41
- <dd>A Material 3-styled text field and text area.</dd>
42
- <dt><a href="notification/snack.html">ui-snackbar</a></dt>
43
- <dd>A Material 3-styled snackbar notification.</dd>
44
- <dt><a href="tabs/tabs.html">ui-tabs</a></dt>
45
- <dd>A Material 3-styled tabs.</dd>
46
- <dt><a href="progress/progress.html">ui-progress</a></dt>
47
- <dd>A Material 3-styled progress element.</dd>
48
- <dt><a href="dialog/dialog.html">ui-dialog</a></dt>
49
- <dd>A Material 3-styled dialog element.</dd>
50
- <dt><a href="collapse/collapse.html">ui-collapse</a></dt>
22
+ <dt><a href="buttons/index.html">button</a></dt>
23
+ <dd>A Material 3 button.</dd>
24
+ <dt><a href="checkbox/index.html">checkbox</a></dt>
25
+ <dd>A Material 3 checkbox.</dd>
26
+ <dt><a href="chip/chip.html">chip</a></dt>
27
+ <dd>A Material 3 chip.</dd>
28
+ <dt><a href="collapse/collapse.html">collapse</a></dt>
51
29
  <dd>An animated collapse element.</dd>
30
+ <dt><a href="dialog/dialog.html">dialog</a></dt>
31
+ <dd>A Material 3 dialog element.</dd>
32
+ <dt><a href="dropdown-list/index.html">dropdown-list</a></dt>
33
+ <dd>A Material 3 dropdown-list.</dd>
34
+ <dt><a href="icon-button/index.html">icon-button</a></dt>
35
+ <dd>A Material 3 icon button.</dd>
36
+ <dt><a href="list/list.html">list</a></dt>
37
+ <dd>A Material 3 list and list item.</dd>
38
+ <dt><a href="dropdown-list/index.html">dropdown-list</a></dt>
39
+ <dd>A Material 3 dropdown-list.</dd>
40
+ <dt><a href="listbox/listbox.html">listbox</a></dt>
41
+ <dd>A Material 3 listbox.</dd>
42
+ <dt><a href="inputs/switch.html">switch</a></dt>
43
+ <dd>A Material 3 switch.</dd>
44
+
45
+ <dt><a href="progress/progress.html">progress</a></dt>
46
+ <dd>A Material 3 progress element.</dd>
47
+
48
+
49
+ <dt><a href="inputs/input.html">Text field</a></dt>
50
+ <dd>A Material 3 text field and text area.</dd>
51
+ <dt><a href="notification/snack.html">snackbar</a></dt>
52
+ <dd>A Material 3 snackbar notification.</dd>
53
+ <dt><a href="segmented-button/index.html">segmented-button</a></dt>
54
+ <dd>A Material 3 segmented buttons.</dd>
55
+ <dt><a href="inputs/radio.html">radio</a></dt>
56
+ <dd>A Material 3 radio input.</dd>
57
+ <dt><a href="tabs/tabs.html">tabs</a></dt>
58
+ <dd>A Material 3 tabs.</dd>
52
59
  </dl>
53
60
  </nav>
54
61
  </main>
@@ -0,0 +1,31 @@
1
+ <!doctype html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
6
+ <title>UI listbox</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
8
+ <link href="../../../src/styles/m3/tokens.css" rel="stylesheet" type="text/css" />
9
+ <link href="../../../src/styles/m3/theme.css" rel="stylesheet" type="text/css" />
10
+ <style>
11
+ .demo-row {
12
+ margin: 20px 0;
13
+ }
14
+
15
+ .button-in-lists {
16
+ display: inline-block;
17
+ vertical-align: top;
18
+ width: 48px;
19
+ height: 48px;
20
+ overflow: hidden;
21
+
22
+ margin-right: 40px;;
23
+ }
24
+ </style>
25
+ </head>
26
+ <body>
27
+ <div id="app"></div>
28
+
29
+ <script type="module" src="/.tmp/demo/md/listbox/listbox.js"></script>
30
+ </body>
31
+ </html>
@@ -0,0 +1,27 @@
1
+ import { html, TemplateResult } from 'lit'
2
+ import { DemoPage } from '../../../src/demo/DemoPage.js'
3
+
4
+ import '../../../src/md/listbox/ui-listbox.js'
5
+ import '../../../src/md/list/ui-list-item.js'
6
+
7
+ class ComponentDemoPage extends DemoPage {
8
+ override accessor componentName = 'UI listbox'
9
+
10
+ contentTemplate(): TemplateResult {
11
+ return html`
12
+ <a href="../">Back</a>
13
+ <section class="demo-section">
14
+ <h2 class="title-large">Listbox</h2>
15
+ <ui-listbox>
16
+ <ui-list-item role="menuitem" data-item="item 1">Item 1</ui-list-item>
17
+ <ui-list-item role="menuitem" data-item="item 2">Item 2</ui-list-item>
18
+ <ui-list-item role="menuitem" data-item="item 3">Item 3</ui-list-item>
19
+ <ui-list-item role="menuitem" data-item="item 4">Item 4</ui-list-item>
20
+ </ui-listbox>
21
+ </section>
22
+ `
23
+ }
24
+ }
25
+
26
+ const instance = new ComponentDemoPage()
27
+ instance.render()
@@ -16,6 +16,6 @@
16
16
  <body>
17
17
  <div id="app"></div>
18
18
 
19
- <script type="module" src="/.tmp/demo/md/buttons/segmented-buttons.js"></script>
19
+ <script type="module" src="/.tmp/demo/md/segmented-button/index.js"></script>
20
20
  </body>
21
21
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@api-client/ui",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "description": "Internal UI component library for the API Client ecosystem.",
5
5
  "license": "UNLICENSED",
6
6
  "main": "build/src/index.js",
@@ -159,7 +159,7 @@
159
159
  }
160
160
  },
161
161
  "dependencies": {
162
- "@api-client/core": "^0.13.0",
162
+ "@api-client/core": "^0.14.0",
163
163
  "@api-client/graph": "^0.3.6",
164
164
  "@api-client/json": "^0.2.0",
165
165
  "@github/relative-time-element": "^4.4.6",
@@ -285,10 +285,7 @@ export default class CertificateAdd extends ApiElement {
285
285
  if (invalid) {
286
286
  return
287
287
  }
288
- const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, space, folder } = this
289
- if (!space) {
290
- throw new Error(`The workspace key is not set on the certificate import element.`)
291
- }
288
+ const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, folder } = this
292
289
  const cert =
293
290
  this.importType === 'p12'
294
291
  ? Certificate.fromP12(certificateFile?.contents as ArrayBuffer, certificateName as string, certificatePassword)
@@ -298,7 +295,7 @@ export default class CertificateAdd extends ApiElement {
298
295
  certificateName as string,
299
296
  keyPassword
300
297
  )
301
- const file = CertificateFile.fromCertificate(cert, space)
298
+ const file = CertificateFile.fromCertificate(cert)
302
299
  await Events.Store.File.create(file.toJSON(), cert.toJSON(), { parent: folder }, this)
303
300
  this.handleCancel()
304
301
  }
@@ -93,7 +93,6 @@ export default css`
93
93
 
94
94
  .avatar-initials {
95
95
  text-transform: uppercase;
96
- font-size: large;
97
96
  width: 100%;
98
97
  height: 100%;
99
98
  display: flex;