@api-client/ui 0.5.47 → 0.5.48

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 (81) hide show
  1. package/build/src/elements/data-table/DataTable.d.ts +1 -1
  2. package/build/src/elements/data-table/DataTable.js +3 -3
  3. package/build/src/elements/data-table/DataTable.js.map +1 -1
  4. package/build/src/elements/file-system/internals/Breadcrumbs.d.ts +1 -1
  5. package/build/src/elements/file-system/internals/Breadcrumbs.d.ts.map +1 -1
  6. package/build/src/elements/file-system/internals/Breadcrumbs.js +3 -3
  7. package/build/src/elements/file-system/internals/Breadcrumbs.js.map +1 -1
  8. package/build/src/elements/navigation/internals/NavigationItem.d.ts +2 -0
  9. package/build/src/elements/navigation/internals/NavigationItem.d.ts.map +1 -1
  10. package/build/src/elements/navigation/internals/NavigationItem.js +4 -2
  11. package/build/src/elements/navigation/internals/NavigationItem.js.map +1 -1
  12. package/build/src/elements/user/internals/UserAvatar.d.ts +26 -4
  13. package/build/src/elements/user/internals/UserAvatar.d.ts.map +1 -1
  14. package/build/src/elements/user/internals/UserAvatar.js +125 -12
  15. package/build/src/elements/user/internals/UserAvatar.js.map +1 -1
  16. package/build/src/elements/user/internals/UserAvatar.styles.d.ts.map +1 -1
  17. package/build/src/elements/user/internals/UserAvatar.styles.js +6 -11
  18. package/build/src/elements/user/internals/UserAvatar.styles.js.map +1 -1
  19. package/build/src/md/button/internals/base.d.ts +1 -1
  20. package/build/src/md/button/internals/base.d.ts.map +1 -1
  21. package/build/src/md/button/internals/base.js +2 -2
  22. package/build/src/md/button/internals/base.js.map +1 -1
  23. package/build/src/md/checkbox/internals/CheckboxElement.d.ts +1 -1
  24. package/build/src/md/checkbox/internals/CheckboxElement.d.ts.map +1 -1
  25. package/build/src/md/checkbox/internals/CheckboxElement.js +2 -2
  26. package/build/src/md/checkbox/internals/CheckboxElement.js.map +1 -1
  27. package/build/src/md/focus-ring/internals/focus-ring.d.ts +87 -0
  28. package/build/src/md/focus-ring/internals/focus-ring.d.ts.map +1 -0
  29. package/build/src/md/focus-ring/internals/focus-ring.js +206 -0
  30. package/build/src/md/focus-ring/internals/focus-ring.js.map +1 -0
  31. package/build/src/md/focus-ring/internals/focus-ring.styles.d.ts +3 -0
  32. package/build/src/md/focus-ring/internals/focus-ring.styles.d.ts.map +1 -0
  33. package/build/src/md/focus-ring/internals/focus-ring.styles.js +109 -0
  34. package/build/src/md/focus-ring/internals/focus-ring.styles.js.map +1 -0
  35. package/build/src/md/focus-ring/ui-focus-ring.d.ts +42 -0
  36. package/build/src/md/focus-ring/ui-focus-ring.d.ts.map +1 -0
  37. package/build/src/md/focus-ring/ui-focus-ring.js +58 -0
  38. package/build/src/md/focus-ring/ui-focus-ring.js.map +1 -0
  39. package/build/src/md/list/internals/ListItem.d.ts +3 -3
  40. package/build/src/md/list/internals/ListItem.d.ts.map +1 -1
  41. package/build/src/md/list/internals/ListItem.js +7 -6
  42. package/build/src/md/list/internals/ListItem.js.map +1 -1
  43. package/build/src/md/menu/internal/MenuItem.d.ts +0 -2
  44. package/build/src/md/menu/internal/MenuItem.d.ts.map +1 -1
  45. package/build/src/md/menu/internal/MenuItem.js +0 -2
  46. package/build/src/md/menu/internal/MenuItem.js.map +1 -1
  47. package/build/src/md/radio/internals/Radio.styles.js +1 -1
  48. package/build/src/md/radio/internals/Radio.styles.js.map +1 -1
  49. package/build/src/md/radio/internals/RadioElement.d.ts +1 -0
  50. package/build/src/md/radio/internals/RadioElement.d.ts.map +1 -1
  51. package/build/src/md/radio/internals/RadioElement.js +2 -0
  52. package/build/src/md/radio/internals/RadioElement.js.map +1 -1
  53. package/build/src/md/select/internals/Select.d.ts +1 -1
  54. package/build/src/md/select/internals/Select.d.ts.map +1 -1
  55. package/build/src/md/select/internals/Select.js +2 -2
  56. package/build/src/md/select/internals/Select.js.map +1 -1
  57. package/build/src/md/tabs/internals/Tab.d.ts +1 -0
  58. package/build/src/md/tabs/internals/Tab.d.ts.map +1 -1
  59. package/build/src/md/tabs/internals/Tab.js +3 -2
  60. package/build/src/md/tabs/internals/Tab.js.map +1 -1
  61. package/build/src/md/tabs/internals/Tabs.js +4 -4
  62. package/build/src/md/tabs/internals/Tabs.js.map +1 -1
  63. package/build/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +1 -2
  65. package/src/elements/data-table/DataTable.ts +3 -3
  66. package/src/elements/file-system/internals/Breadcrumbs.ts +3 -3
  67. package/src/elements/navigation/internals/NavigationItem.ts +4 -2
  68. package/src/elements/user/internals/UserAvatar.styles.ts +6 -11
  69. package/src/elements/user/internals/UserAvatar.ts +115 -8
  70. package/src/md/button/internals/base.ts +2 -2
  71. package/src/md/checkbox/internals/CheckboxElement.ts +2 -2
  72. package/src/md/focus-ring/internals/focus-ring.styles.ts +109 -0
  73. package/src/md/focus-ring/internals/focus-ring.ts +184 -0
  74. package/src/md/focus-ring/ui-focus-ring.ts +46 -0
  75. package/src/md/list/internals/ListItem.ts +5 -5
  76. package/src/md/menu/internal/MenuItem.ts +0 -2
  77. package/src/md/radio/internals/Radio.styles.ts +1 -1
  78. package/src/md/radio/internals/RadioElement.ts +2 -0
  79. package/src/md/select/internals/Select.ts +2 -2
  80. package/src/md/tabs/internals/Tab.ts +4 -2
  81. package/src/md/tabs/internals/Tabs.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/md/tabs/internals/Tab.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport type { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport type UiRipple from '../../ripple/internals/ripple.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport { UiElement } from '../../UiElement.js'\nimport type { SizingInfo, TabsPriority } from './Tabs.js'\nimport { Easing } from '../../motion/animation.js'\nimport '../../ripple/ui-ripple.js'\n\nexport default class UiTab extends UiElement {\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 /**\n * Whether the tab is selected. Note, this does not correspond to the `selected` state\n * in the `ui-tabs`. This is only to render the tab in the selected state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean }) accessor selected\n\n /**\n * @attribute\n */\n @property({ reflect: true, type: String }) accessor priority: TabsPriority\n\n /**\n * @attribute\n */\n @property({ reflect: true, type: Boolean }) accessor indicated\n\n /**\n * Indicates whether the tab has an icon.\n * This is set automatically when the \"icon\" slot is populated.\n */\n @state() protected accessor hasIcon\n /**\n * Indicates whether the tab only has an icon and no text.\n * This is set automatically when the default slot is populated with only an icon.\n */\n @state() protected accessor iconOnly\n\n @query('ui-ripple') protected accessor ripple!: UiRipple | null\n\n constructor() {\n super()\n this.priority = 'primary'\n this.selected = false\n this.indicated = false\n this.hasIcon = false\n this.iconOnly = true\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('pointerenter', this.handlePointerEnter.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', 'tab')\n }\n if (!this.hasAttribute('aria-selected')) {\n this.setAttribute('aria-selected', 'false')\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('selected')) {\n this.setAttribute('aria-selected', String(this.selected))\n }\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.classList.add('pressed')\n this.ripple?.beginPress(options.positionEvent)\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config)\n this.classList.remove('pressed')\n this.ripple?.endPress()\n const { cancelled, reason } = config\n if (cancelled) {\n return\n }\n if (reason === 'enter' || reason === 'space') {\n this.click()\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n this.endPress({ cancelled: false, actionData: { event: e } })\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n super.handlePointerEnter(e)\n if (this.ripple) {\n this.ripple.beginHover(e)\n }\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n if (this.ripple) {\n this.ripple.endHover()\n }\n }\n\n override handleKeyUp(e: KeyboardEvent): void {\n super.handleKeyUp(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n }\n\n /**\n * Sets the `_hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement\n this.hasIcon = !!slot.assignedNodes().length\n }\n\n protected handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement\n // Check if there's any label text or elements. If not, then there is only\n // an icon.\n for (const node of slot.assignedNodes()) {\n const hasTextContent = node.nodeType === Node.TEXT_NODE && !!(node as Text).wholeText.match(/\\S/)\n if (node.nodeType === Node.ELEMENT_NODE || hasTextContent) {\n this.iconOnly = false\n return\n }\n }\n this.iconOnly = true\n }\n\n public getIndicatorSizing(): SizingInfo {\n const element = this.priority === 'primary' ? this.shadowRoot?.querySelector('.tab-content') : this\n if (!element) {\n return { width: 0, left: 0 }\n }\n const rect = element.getBoundingClientRect()\n return {\n width: rect.width,\n left: rect.left,\n }\n }\n\n /**\n * When `indicated` is `true` it animates the indicator to highlight the position of the tab.\n */\n public highlight(): void {\n if (!this.indicated) {\n return\n }\n const pointer = this.shadowRoot?.querySelector('.pointer')\n if (!pointer) {\n return\n }\n const frames: Keyframe[] = [\n {\n width: `40px`,\n },\n {\n width: `80px`,\n },\n {\n width: `40px`,\n },\n ]\n\n pointer.animate(frames, {\n duration: 360,\n iterations: 1,\n easing: Easing.STANDARD,\n })\n }\n\n protected override render(): TemplateResult {\n const isPrimary = this.priority === 'primary'\n const containerClasses = classMap({\n 'surface': true,\n 'has-icon': this.hasIcon,\n 'has-label': !this.iconOnly,\n 'stacked': isPrimary,\n })\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()}\n <div class=\"${containerClasses}\">\n <div class=\"tab-content\">\n ${this.renderIcon()}\n <slot @slotchange=\"${this.handleSlotChange}\"></slot>\n </div>\n ${isPrimary ? this.renderIndicator() : nothing}\n </div>\n ${!isPrimary ? this.renderIndicator() : nothing}\n `\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<md-focus-ring\n part=\"focus-ring\"\n class=\"focus-ring\"\n inward\n .control=\"${this as HTMLElement}\"\n ></md-focus-ring>`\n }\n\n protected renderRipple(): TemplateResult {\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></ui-ripple>`\n }\n\n protected renderIcon(): TemplateResult {\n return html` <slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot> `\n }\n\n protected renderIndicator(): TemplateResult | typeof nothing {\n const { indicated, priority } = this\n if (!indicated) {\n return nothing\n }\n const classes: ClassInfo = {\n indicator: true,\n primary: priority === 'primary',\n }\n return html`<div class=\"${classMap(classes)}\"></div>`\n }\n}\n"]}
1
+ {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/md/tabs/internals/Tab.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport type { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js'\nimport type UiRipple from '../../ripple/internals/ripple.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport { UiElement } from '../../UiElement.js'\nimport type { SizingInfo, TabsPriority } from './Tabs.js'\nimport { Easing } from '../../motion/animation.js'\n\nimport '../../ripple/ui-ripple.js'\nimport '../../focus-ring/ui-focus-ring.js'\n\nexport default class UiTab extends UiElement {\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 /**\n * Whether the tab is selected. Note, this does not correspond to the `selected` state\n * in the `ui-tabs`. This is only to render the tab in the selected state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean }) accessor selected\n\n /**\n * @attribute\n */\n @property({ reflect: true, type: String }) accessor priority: TabsPriority\n\n /**\n * @attribute\n */\n @property({ reflect: true, type: Boolean }) accessor indicated\n\n /**\n * Indicates whether the tab has an icon.\n * This is set automatically when the \"icon\" slot is populated.\n */\n @state() protected accessor hasIcon\n /**\n * Indicates whether the tab only has an icon and no text.\n * This is set automatically when the default slot is populated with only an icon.\n */\n @state() protected accessor iconOnly\n\n @query('ui-ripple') protected accessor ripple!: UiRipple | null\n\n constructor() {\n super()\n this.priority = 'primary'\n this.selected = false\n this.indicated = false\n this.hasIcon = false\n this.iconOnly = true\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('pointerenter', this.handlePointerEnter.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', 'tab')\n }\n if (!this.hasAttribute('aria-selected')) {\n this.setAttribute('aria-selected', 'false')\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('selected')) {\n this.setAttribute('aria-selected', String(this.selected))\n }\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options)\n this.classList.add('pressed')\n this.ripple?.beginPress(options.positionEvent)\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config)\n this.classList.remove('pressed')\n this.ripple?.endPress()\n const { cancelled, reason } = config\n if (cancelled) {\n return\n }\n if (reason === 'enter' || reason === 'space') {\n this.click()\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n this.endPress({ cancelled: false, actionData: { event: e } })\n }\n\n override handlePointerEnter(e: PointerEvent): void {\n super.handlePointerEnter(e)\n if (this.ripple) {\n this.ripple.beginHover(e)\n }\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e)\n if (this.ripple) {\n this.ripple.endHover()\n }\n }\n\n override handleKeyUp(e: KeyboardEvent): void {\n super.handleKeyUp(e)\n if (this.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n }\n\n /**\n * Sets the `_hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement\n this.hasIcon = !!slot.assignedNodes().length\n }\n\n protected handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement\n // Check if there's any label text or elements. If not, then there is only\n // an icon.\n for (const node of slot.assignedNodes()) {\n const hasTextContent = node.nodeType === Node.TEXT_NODE && !!(node as Text).wholeText.match(/\\S/)\n if (node.nodeType === Node.ELEMENT_NODE || hasTextContent) {\n this.iconOnly = false\n return\n }\n }\n this.iconOnly = true\n }\n\n public getIndicatorSizing(): SizingInfo {\n const element = this.priority === 'primary' ? this.shadowRoot?.querySelector('.tab-content') : this\n if (!element) {\n return { width: 0, left: 0 }\n }\n const rect = element.getBoundingClientRect()\n return {\n width: rect.width,\n left: rect.left,\n }\n }\n\n /**\n * When `indicated` is `true` it animates the indicator to highlight the position of the tab.\n */\n public highlight(): void {\n if (!this.indicated) {\n return\n }\n const pointer = this.shadowRoot?.querySelector('.pointer')\n if (!pointer) {\n return\n }\n const frames: Keyframe[] = [\n {\n width: `40px`,\n },\n {\n width: `80px`,\n },\n {\n width: `40px`,\n },\n ]\n\n pointer.animate(frames, {\n duration: 360,\n iterations: 1,\n easing: Easing.STANDARD,\n })\n }\n\n protected override render(): TemplateResult {\n const isPrimary = this.priority === 'primary'\n const containerClasses = classMap({\n 'surface': true,\n 'has-icon': this.hasIcon,\n 'has-label': !this.iconOnly,\n 'stacked': isPrimary,\n })\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()}\n <div class=\"${containerClasses}\">\n <div class=\"tab-content\">\n ${this.renderIcon()}\n <slot @slotchange=\"${this.handleSlotChange}\"></slot>\n </div>\n ${isPrimary ? this.renderIndicator() : nothing}\n </div>\n ${!isPrimary ? this.renderIndicator() : nothing}\n `\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<ui-focus-ring\n part=\"focus-ring\"\n class=\"focus-ring\"\n inward\n .control=\"${this as HTMLElement}\"\n ></ui-focus-ring>`\n }\n\n protected renderRipple(): TemplateResult {\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></ui-ripple>`\n }\n\n protected renderIcon(): TemplateResult {\n return html` <slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot> `\n }\n\n protected renderIndicator(): TemplateResult | typeof nothing {\n const { indicated, priority } = this\n if (!indicated) {\n return nothing\n }\n const classes: ClassInfo = {\n indicator: true,\n primary: priority === 'primary',\n }\n return html`<div class=\"${classMap(classes)}\"></div>`\n }\n}\n"]}
@@ -107,10 +107,10 @@ let UiTabs = (() => {
107
107
  //
108
108
  // ```ts
109
109
  // html`
110
- // <md-tabs .activeTabIndex=${1}>
111
- // <md-tab>First</md-tab>
112
- // <md-tab>Second</md-tab>
113
- // </md-tabs>
110
+ // <ui-tabs .activeTabIndex=${1}>
111
+ // <ui-tab>First</ui-tab>
112
+ // <ui-tab>Second</ui-tab>
113
+ // </ui-tabs>
114
114
  // `;
115
115
  // ```
116
116
  //
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../../src/md/tabs/internals/Tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { Easing } from '../../motion/animation.js'\nimport UiTab from './Tab.js'\nimport '../../icon-button/ui-icon-button.js'\nimport '../../divider/ui-divider.js'\nimport '../../icons/ui-icon.js'\n\nexport type TabsPriority = 'primary' | 'secondary'\n\nexport interface TabSelectionDetail {\n /**\n * The selected tab.\n */\n item: UiTab\n /**\n * The index of the selected tab.\n */\n index: number\n}\n\nexport interface SizingInfo {\n left: number\n width: number\n}\n\n/**\n * Calculates value in percentages\n * @param w Element width\n * @param w0 Parent width\n * @return The percentage of element's width relative to parent.\n */\nexport function calcPercent(w: number, w0: number): number {\n return (100 * w) / w0\n}\n\n/**\n * A container for tabs.\n *\n * @fires change - A non bubbling event when selection change through user interaction.\n */\nexport default class UiTabs extends LitElement {\n activeItem: UiTab | null = null\n\n previousItem: UiTab | null = null\n\n /**\n * The currently selected tab, `null` only when there are no tab children.\n */\n get activeTab(): UiTab | null {\n return this.tabs.find((tab) => tab.selected) ?? null\n }\n\n set activeTab(tab: UiTab | null) {\n // Ignore setting activeTab to null. As long as there are children, one tab\n // must be selected.\n if (tab) {\n this.activateTab(tab)\n }\n }\n\n /**\n * The index of the currently selected tab.\n */\n get activeTabIndex() {\n return this.tabs.findIndex((tab) => tab.selected)\n }\n\n /**\n * Sets the active tab by index.\n */\n set activeTabIndex(index) {\n const activateTabAtIndex = () => {\n const tab = this.tabs[index]\n // Ignore out-of-bound indices.\n if (tab) {\n this.activateTab(tab)\n }\n }\n if (!this.slotElement) {\n // This is needed to support setting the activeTabIndex via a lit property\n // binding.\n //\n // ```ts\n // html`\n // <md-tabs .activeTabIndex=${1}>\n // <md-tab>First</md-tab>\n // <md-tab>Second</md-tab>\n // </md-tabs>\n // `;\n // ```\n //\n // It's needed since lit's rendering lifecycle is asynchronous, and the\n // `<slot>` element hasn't rendered, so `tabs` is empty.\n this.updateComplete.then(activateTabAtIndex)\n return\n }\n activateTabAtIndex()\n }\n\n get focusedTab() {\n return this.tabs.find((tab) => tab.matches(':focus-within'))\n }\n\n @queryAssignedElements({ flatten: true, selector: 'ui-tab' }) private accessor tabs!: UiTab[]\n\n @query('.tabs') private accessor tabsScrollerElement!: HTMLElement\n @query('slot') private accessor slotElement!: HTMLSlotElement\n\n @query('.pointer') private accessor pointer!: HTMLElement\n\n /**\n * The priority of the tabs.\n *\n * @default primary\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor priority: TabsPriority = 'primary'\n\n @state() private accessor pointerStyles: StyleInfo | undefined\n\n @state() private accessor indicated = false\n\n private observer: IntersectionObserver\n\n /**\n * This is set by the intersection observer. Once the tabs are in the view it turns to `true`.\n * This we can properly visualize selection.\n */\n @state() accessor isVisible: boolean | undefined\n\n /**\n * Whether or not to automatically select a tab when it is focused.\n */\n @property({ type: Boolean }) accessor autoActivate = false\n\n private readonly internals = (this as HTMLElement).attachInternals()\n\n constructor() {\n super()\n this.internals.role = 'tablist'\n this.observer = new IntersectionObserver(this.intersectionCallback.bind(this), {\n threshold: 1.0,\n rootMargin: '0px',\n })\n this.addEventListener('keydown', this.handleKeydown.bind(this))\n this.addEventListener('keyup', this.handleKeyup.bind(this))\n this.addEventListener('focusout', this.handleFocusout.bind(this))\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('isVisible')) {\n this.handleVisibility()\n }\n super.willUpdate(cp)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.observer.observe(this)\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'tablist')\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n this.observer.unobserve(this)\n }\n\n protected intersectionCallback(entries: IntersectionObserverEntry[]): void {\n const [entry] = entries\n this.isVisible = entry.isIntersecting\n }\n\n /**\n * Scrolls the toolbar, if overflowing, to the active tab, or the provided\n * tab.\n *\n * @param tabToScrollTo The tab that should be scrolled to. Defaults to the\n * active tab.\n * @return A Promise that resolves after the tab has been scrolled to.\n */\n async scrollToTab(tabToScrollTo?: UiTab | null) {\n await this.updateComplete\n const { tabs } = this\n tabToScrollTo ??= this.activeTab\n if (!tabToScrollTo || !tabs.includes(tabToScrollTo) || !this.tabsScrollerElement) {\n return\n }\n\n // wait for tabs to render.\n await Promise.all(tabs.map((tab) => tab.updateComplete))\n tabToScrollTo.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: !this.focusedTab ? 'instant' : 'auto',\n })\n }\n\n protected handleVisibility(): void {\n const { previousItem, activeItem } = this\n if (!activeItem) {\n return\n }\n this.positionPointer(activeItem, previousItem)\n }\n\n protected async positionPointer(tab: UiTab, old?: UiTab | null): Promise<void> {\n const { pointer, isVisible } = this\n if (!isVisible) {\n tab.indicated = true\n return\n }\n const index = this.tabs.indexOf(tab)\n if (index < 0 || !pointer) {\n this.pointerStyles = undefined\n return\n }\n\n if (!old) {\n // no start animation, just show indicator.\n tab.indicated = true\n return\n }\n const isPrimary = this.priority === 'primary'\n const final = this.getTabSizing(tab)\n if (this.pointerStyles && this.pointerStyles.left === `${final.left}px`) {\n tab.indicated = true\n return\n }\n\n // first position this indicator in the place of the old one.\n // update the view and then run the animation.\n this.indicated = true\n const starting = this.getTabSizing(old)\n this.pointerStyles = { left: `${starting.left}px`, width: `${starting.width}px` }\n await this.updateComplete\n const frames = isPrimary ? this.getPrimaryKeyframes(starting, final) : this.getSecondaryKeyframes(starting, final)\n\n if (this.moveAnimation) {\n this.moveAnimation.cancel()\n }\n const moveAnimation = pointer.animate(frames, {\n duration: 200,\n iterations: 1,\n easing: Easing.EMPHASIZED_DECELERATE,\n })\n const finalStyles: StyleInfo = {\n left: `${final.left}px`,\n width: `${final.width}px`,\n }\n moveAnimation.addEventListener('finish', () => {\n this.pointerStyles = finalStyles\n this.moveAnimation = undefined\n tab.indicated = true\n this.indicated = false\n })\n moveAnimation.addEventListener('cancel', () => {\n this.pointerStyles = finalStyles\n })\n this.moveAnimation = moveAnimation\n }\n\n protected moveAnimation?: Animation\n\n protected getTabSizing(tab: UiTab): SizingInfo {\n const contentBox = this.tabsScrollerElement.getBoundingClientRect()\n const sizing = tab.getIndicatorSizing()\n sizing.left = sizing.left - contentBox.x\n return sizing\n }\n\n protected getPrimaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[] {\n return [\n {\n left: `${start.left}px`,\n width: `${start.width}px`,\n },\n {\n left: `${final.left}px`,\n width: `${final.width}px`,\n },\n ]\n }\n\n protected getSecondaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[] {\n return [\n {\n left: `${start.left}px`,\n width: `${start.width}px`,\n },\n {\n left: `${final.left}px`,\n width: `${final.width}px`,\n },\n ]\n }\n\n protected async handleTabClick(e: PointerEvent): Promise<void> {\n const tab = e.composedPath().find((el) => isTab(el)) as UiTab | undefined\n // Allow event to bubble\n await new Promise((resolve) => setTimeout(resolve, 0))\n if (e.defaultPrevented || !tab || tab.selected) {\n return\n }\n this.activateTab(tab)\n }\n\n private activateTab(activeTab: UiTab): void {\n const { tabs } = this\n const previousTab = this.activeTab\n if (!tabs.includes(activeTab) || previousTab === activeTab) {\n // Ignore setting activeTab to a tab element that is not a child.\n return\n }\n for (const tab of tabs) {\n tab.selected = tab === activeTab\n }\n if (previousTab) {\n // Don't dispatch a change event if activating a tab when no previous tabs\n // were selected, such as when md-tabs auto-selects the first tab.\n const detail: TabSelectionDetail = {\n item: activeTab,\n index: this.tabs.indexOf(activeTab),\n }\n const defaultPrevented = !this.dispatchEvent(\n new CustomEvent('change', { detail, bubbles: false, cancelable: true })\n )\n if (defaultPrevented) {\n for (const tab of tabs) {\n tab.selected = tab === previousTab\n }\n return\n }\n previousTab.indicated = false\n }\n activeTab.indicated = false\n this.positionPointer(activeTab, previousTab)\n this.updateFocusableTab(activeTab)\n this.scrollToTab(activeTab)\n }\n\n private updateFocusableTab(focusableTab: UiTab) {\n for (const tab of this.tabs) {\n tab.tabIndex = tab === focusableTab ? 0 : -1\n }\n }\n\n private async handleKeydown(event: KeyboardEvent) {\n // Allow event to bubble.\n await new Promise((resolve) => setTimeout(resolve, 0))\n const isLeft = event.key === 'ArrowLeft'\n const isRight = event.key === 'ArrowRight'\n const isHome = event.key === 'Home'\n const isEnd = event.key === 'End'\n // Ignore non-navigation keys\n if (event.defaultPrevented || (!isLeft && !isRight && !isHome && !isEnd)) {\n return\n }\n\n const { tabs } = this\n // Don't try to select another tab if there aren't any.\n if (tabs.length < 2) {\n return\n }\n\n // Prevent default interactions, such as scrolling.\n event.preventDefault()\n\n let indexToFocus: number\n if (isHome || isEnd) {\n indexToFocus = isHome ? 0 : tabs.length - 1\n } else {\n // Check if moving forwards or backwards\n const isRtl = getComputedStyle(this).direction === 'rtl'\n const forwards = isRtl ? isLeft : isRight\n const { focusedTab } = this\n if (!focusedTab) {\n // If there is not already a tab focused, select the first or last tab\n // based on the direction we're traveling.\n indexToFocus = forwards ? 0 : tabs.length - 1\n } else {\n const focusedIndex = this.tabs.indexOf(focusedTab)\n indexToFocus = forwards ? focusedIndex + 1 : focusedIndex - 1\n if (indexToFocus >= tabs.length) {\n // Return to start if moving past the last item.\n indexToFocus = 0\n } else if (indexToFocus < 0) {\n // Go to end if moving before the first item.\n indexToFocus = tabs.length - 1\n }\n }\n }\n\n const tabToFocus = tabs[indexToFocus]\n tabToFocus.focus()\n if (this.autoActivate) {\n this.activateTab(tabToFocus)\n } else {\n this.updateFocusableTab(tabToFocus)\n }\n }\n\n // scroll to item on keyup.\n private handleKeyup() {\n this.scrollToTab(this.focusedTab ?? this.activeTab)\n }\n\n private handleFocusout() {\n // restore focus to selected item when blurring the tab bar.\n if (this.matches(':focus-within')) {\n return\n }\n\n const { activeTab } = this\n if (activeTab) {\n this.updateFocusableTab(activeTab)\n }\n }\n\n private handleSlotChange() {\n for (const tab of this.tabs) {\n tab.priority = this.priority\n if (tab.selected) {\n tab.indicated = true\n }\n }\n const firstTab = this.tabs[0]\n if (!this.activeTab && firstTab) {\n // If the active tab was removed, auto-select the first one. There should\n // always be a selected tab while the bar has children.\n this.activateTab(firstTab)\n }\n\n // When children shift, ensure the active tab is visible. For example, if\n // many children are added before the active tab, it'd be pushed off screen.\n // This ensures it stays visible.\n this.scrollToTab(this.activeTab)\n if (this.activeTab) {\n this.updateFocusableTab(this.activeTab)\n }\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"tabs\">${this.renderSlot()}</div>\n ${this.renderIndicator()}\n <ui-divider class=\"divider\"></ui-divider>\n `\n }\n\n protected renderSlot(): TemplateResult {\n return html`<slot @slotchange=\"${this.handleSlotChange}\" @click=\"${this.handleTabClick}\"></slot>`\n }\n\n protected renderIndicator(): TemplateResult {\n const classes: ClassInfo = {\n indicator: true,\n indicated: this.indicated,\n primary: this.priority === 'primary',\n secondary: this.priority === 'secondary',\n }\n return html`\n <div class=\"${classMap(classes)}\">\n <span role=\"presentation\" class=\"pointer\" style=\"${styleMap(this.pointerStyles || {})}\"></span>\n </div>\n `\n }\n}\n\nfunction isTab(element: unknown): element is UiTab {\n return element instanceof UiTab\n}\n"]}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../../src/md/tabs/internals/Tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, PropertyValues, TemplateResult } from 'lit'\nimport { property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { Easing } from '../../motion/animation.js'\nimport UiTab from './Tab.js'\nimport '../../icon-button/ui-icon-button.js'\nimport '../../divider/ui-divider.js'\nimport '../../icons/ui-icon.js'\n\nexport type TabsPriority = 'primary' | 'secondary'\n\nexport interface TabSelectionDetail {\n /**\n * The selected tab.\n */\n item: UiTab\n /**\n * The index of the selected tab.\n */\n index: number\n}\n\nexport interface SizingInfo {\n left: number\n width: number\n}\n\n/**\n * Calculates value in percentages\n * @param w Element width\n * @param w0 Parent width\n * @return The percentage of element's width relative to parent.\n */\nexport function calcPercent(w: number, w0: number): number {\n return (100 * w) / w0\n}\n\n/**\n * A container for tabs.\n *\n * @fires change - A non bubbling event when selection change through user interaction.\n */\nexport default class UiTabs extends LitElement {\n activeItem: UiTab | null = null\n\n previousItem: UiTab | null = null\n\n /**\n * The currently selected tab, `null` only when there are no tab children.\n */\n get activeTab(): UiTab | null {\n return this.tabs.find((tab) => tab.selected) ?? null\n }\n\n set activeTab(tab: UiTab | null) {\n // Ignore setting activeTab to null. As long as there are children, one tab\n // must be selected.\n if (tab) {\n this.activateTab(tab)\n }\n }\n\n /**\n * The index of the currently selected tab.\n */\n get activeTabIndex() {\n return this.tabs.findIndex((tab) => tab.selected)\n }\n\n /**\n * Sets the active tab by index.\n */\n set activeTabIndex(index) {\n const activateTabAtIndex = () => {\n const tab = this.tabs[index]\n // Ignore out-of-bound indices.\n if (tab) {\n this.activateTab(tab)\n }\n }\n if (!this.slotElement) {\n // This is needed to support setting the activeTabIndex via a lit property\n // binding.\n //\n // ```ts\n // html`\n // <ui-tabs .activeTabIndex=${1}>\n // <ui-tab>First</ui-tab>\n // <ui-tab>Second</ui-tab>\n // </ui-tabs>\n // `;\n // ```\n //\n // It's needed since lit's rendering lifecycle is asynchronous, and the\n // `<slot>` element hasn't rendered, so `tabs` is empty.\n this.updateComplete.then(activateTabAtIndex)\n return\n }\n activateTabAtIndex()\n }\n\n get focusedTab() {\n return this.tabs.find((tab) => tab.matches(':focus-within'))\n }\n\n @queryAssignedElements({ flatten: true, selector: 'ui-tab' }) private accessor tabs!: UiTab[]\n\n @query('.tabs') private accessor tabsScrollerElement!: HTMLElement\n @query('slot') private accessor slotElement!: HTMLSlotElement\n\n @query('.pointer') private accessor pointer!: HTMLElement\n\n /**\n * The priority of the tabs.\n *\n * @default primary\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor priority: TabsPriority = 'primary'\n\n @state() private accessor pointerStyles: StyleInfo | undefined\n\n @state() private accessor indicated = false\n\n private observer: IntersectionObserver\n\n /**\n * This is set by the intersection observer. Once the tabs are in the view it turns to `true`.\n * This we can properly visualize selection.\n */\n @state() accessor isVisible: boolean | undefined\n\n /**\n * Whether or not to automatically select a tab when it is focused.\n */\n @property({ type: Boolean }) accessor autoActivate = false\n\n private readonly internals = (this as HTMLElement).attachInternals()\n\n constructor() {\n super()\n this.internals.role = 'tablist'\n this.observer = new IntersectionObserver(this.intersectionCallback.bind(this), {\n threshold: 1.0,\n rootMargin: '0px',\n })\n this.addEventListener('keydown', this.handleKeydown.bind(this))\n this.addEventListener('keyup', this.handleKeyup.bind(this))\n this.addEventListener('focusout', this.handleFocusout.bind(this))\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('isVisible')) {\n this.handleVisibility()\n }\n super.willUpdate(cp)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.observer.observe(this)\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'tablist')\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n this.observer.unobserve(this)\n }\n\n protected intersectionCallback(entries: IntersectionObserverEntry[]): void {\n const [entry] = entries\n this.isVisible = entry.isIntersecting\n }\n\n /**\n * Scrolls the toolbar, if overflowing, to the active tab, or the provided\n * tab.\n *\n * @param tabToScrollTo The tab that should be scrolled to. Defaults to the\n * active tab.\n * @return A Promise that resolves after the tab has been scrolled to.\n */\n async scrollToTab(tabToScrollTo?: UiTab | null) {\n await this.updateComplete\n const { tabs } = this\n tabToScrollTo ??= this.activeTab\n if (!tabToScrollTo || !tabs.includes(tabToScrollTo) || !this.tabsScrollerElement) {\n return\n }\n\n // wait for tabs to render.\n await Promise.all(tabs.map((tab) => tab.updateComplete))\n tabToScrollTo.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: !this.focusedTab ? 'instant' : 'auto',\n })\n }\n\n protected handleVisibility(): void {\n const { previousItem, activeItem } = this\n if (!activeItem) {\n return\n }\n this.positionPointer(activeItem, previousItem)\n }\n\n protected async positionPointer(tab: UiTab, old?: UiTab | null): Promise<void> {\n const { pointer, isVisible } = this\n if (!isVisible) {\n tab.indicated = true\n return\n }\n const index = this.tabs.indexOf(tab)\n if (index < 0 || !pointer) {\n this.pointerStyles = undefined\n return\n }\n\n if (!old) {\n // no start animation, just show indicator.\n tab.indicated = true\n return\n }\n const isPrimary = this.priority === 'primary'\n const final = this.getTabSizing(tab)\n if (this.pointerStyles && this.pointerStyles.left === `${final.left}px`) {\n tab.indicated = true\n return\n }\n\n // first position this indicator in the place of the old one.\n // update the view and then run the animation.\n this.indicated = true\n const starting = this.getTabSizing(old)\n this.pointerStyles = { left: `${starting.left}px`, width: `${starting.width}px` }\n await this.updateComplete\n const frames = isPrimary ? this.getPrimaryKeyframes(starting, final) : this.getSecondaryKeyframes(starting, final)\n\n if (this.moveAnimation) {\n this.moveAnimation.cancel()\n }\n const moveAnimation = pointer.animate(frames, {\n duration: 200,\n iterations: 1,\n easing: Easing.EMPHASIZED_DECELERATE,\n })\n const finalStyles: StyleInfo = {\n left: `${final.left}px`,\n width: `${final.width}px`,\n }\n moveAnimation.addEventListener('finish', () => {\n this.pointerStyles = finalStyles\n this.moveAnimation = undefined\n tab.indicated = true\n this.indicated = false\n })\n moveAnimation.addEventListener('cancel', () => {\n this.pointerStyles = finalStyles\n })\n this.moveAnimation = moveAnimation\n }\n\n protected moveAnimation?: Animation\n\n protected getTabSizing(tab: UiTab): SizingInfo {\n const contentBox = this.tabsScrollerElement.getBoundingClientRect()\n const sizing = tab.getIndicatorSizing()\n sizing.left = sizing.left - contentBox.x\n return sizing\n }\n\n protected getPrimaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[] {\n return [\n {\n left: `${start.left}px`,\n width: `${start.width}px`,\n },\n {\n left: `${final.left}px`,\n width: `${final.width}px`,\n },\n ]\n }\n\n protected getSecondaryKeyframes(start: SizingInfo, final: SizingInfo): Keyframe[] {\n return [\n {\n left: `${start.left}px`,\n width: `${start.width}px`,\n },\n {\n left: `${final.left}px`,\n width: `${final.width}px`,\n },\n ]\n }\n\n protected async handleTabClick(e: PointerEvent): Promise<void> {\n const tab = e.composedPath().find((el) => isTab(el)) as UiTab | undefined\n // Allow event to bubble\n await new Promise((resolve) => setTimeout(resolve, 0))\n if (e.defaultPrevented || !tab || tab.selected) {\n return\n }\n this.activateTab(tab)\n }\n\n private activateTab(activeTab: UiTab): void {\n const { tabs } = this\n const previousTab = this.activeTab\n if (!tabs.includes(activeTab) || previousTab === activeTab) {\n // Ignore setting activeTab to a tab element that is not a child.\n return\n }\n for (const tab of tabs) {\n tab.selected = tab === activeTab\n }\n if (previousTab) {\n // Don't dispatch a change event if activating a tab when no previous tabs\n // were selected, such as when md-tabs auto-selects the first tab.\n const detail: TabSelectionDetail = {\n item: activeTab,\n index: this.tabs.indexOf(activeTab),\n }\n const defaultPrevented = !this.dispatchEvent(\n new CustomEvent('change', { detail, bubbles: false, cancelable: true })\n )\n if (defaultPrevented) {\n for (const tab of tabs) {\n tab.selected = tab === previousTab\n }\n return\n }\n previousTab.indicated = false\n }\n activeTab.indicated = false\n this.positionPointer(activeTab, previousTab)\n this.updateFocusableTab(activeTab)\n this.scrollToTab(activeTab)\n }\n\n private updateFocusableTab(focusableTab: UiTab) {\n for (const tab of this.tabs) {\n tab.tabIndex = tab === focusableTab ? 0 : -1\n }\n }\n\n private async handleKeydown(event: KeyboardEvent) {\n // Allow event to bubble.\n await new Promise((resolve) => setTimeout(resolve, 0))\n const isLeft = event.key === 'ArrowLeft'\n const isRight = event.key === 'ArrowRight'\n const isHome = event.key === 'Home'\n const isEnd = event.key === 'End'\n // Ignore non-navigation keys\n if (event.defaultPrevented || (!isLeft && !isRight && !isHome && !isEnd)) {\n return\n }\n\n const { tabs } = this\n // Don't try to select another tab if there aren't any.\n if (tabs.length < 2) {\n return\n }\n\n // Prevent default interactions, such as scrolling.\n event.preventDefault()\n\n let indexToFocus: number\n if (isHome || isEnd) {\n indexToFocus = isHome ? 0 : tabs.length - 1\n } else {\n // Check if moving forwards or backwards\n const isRtl = getComputedStyle(this).direction === 'rtl'\n const forwards = isRtl ? isLeft : isRight\n const { focusedTab } = this\n if (!focusedTab) {\n // If there is not already a tab focused, select the first or last tab\n // based on the direction we're traveling.\n indexToFocus = forwards ? 0 : tabs.length - 1\n } else {\n const focusedIndex = this.tabs.indexOf(focusedTab)\n indexToFocus = forwards ? focusedIndex + 1 : focusedIndex - 1\n if (indexToFocus >= tabs.length) {\n // Return to start if moving past the last item.\n indexToFocus = 0\n } else if (indexToFocus < 0) {\n // Go to end if moving before the first item.\n indexToFocus = tabs.length - 1\n }\n }\n }\n\n const tabToFocus = tabs[indexToFocus]\n tabToFocus.focus()\n if (this.autoActivate) {\n this.activateTab(tabToFocus)\n } else {\n this.updateFocusableTab(tabToFocus)\n }\n }\n\n // scroll to item on keyup.\n private handleKeyup() {\n this.scrollToTab(this.focusedTab ?? this.activeTab)\n }\n\n private handleFocusout() {\n // restore focus to selected item when blurring the tab bar.\n if (this.matches(':focus-within')) {\n return\n }\n\n const { activeTab } = this\n if (activeTab) {\n this.updateFocusableTab(activeTab)\n }\n }\n\n private handleSlotChange() {\n for (const tab of this.tabs) {\n tab.priority = this.priority\n if (tab.selected) {\n tab.indicated = true\n }\n }\n const firstTab = this.tabs[0]\n if (!this.activeTab && firstTab) {\n // If the active tab was removed, auto-select the first one. There should\n // always be a selected tab while the bar has children.\n this.activateTab(firstTab)\n }\n\n // When children shift, ensure the active tab is visible. For example, if\n // many children are added before the active tab, it'd be pushed off screen.\n // This ensures it stays visible.\n this.scrollToTab(this.activeTab)\n if (this.activeTab) {\n this.updateFocusableTab(this.activeTab)\n }\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"tabs\">${this.renderSlot()}</div>\n ${this.renderIndicator()}\n <ui-divider class=\"divider\"></ui-divider>\n `\n }\n\n protected renderSlot(): TemplateResult {\n return html`<slot @slotchange=\"${this.handleSlotChange}\" @click=\"${this.handleTabClick}\"></slot>`\n }\n\n protected renderIndicator(): TemplateResult {\n const classes: ClassInfo = {\n indicator: true,\n indicated: this.indicated,\n primary: this.priority === 'primary',\n secondary: this.priority === 'secondary',\n }\n return html`\n <div class=\"${classMap(classes)}\">\n <span role=\"presentation\" class=\"pointer\" style=\"${styleMap(this.pointerStyles || {})}\"></span>\n </div>\n `\n }\n}\n\nfunction isTab(element: unknown): element is UiTab {\n return element instanceof UiTab\n}\n"]}