@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.148 → 2.0.0-next.150

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 (57) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +4561 -3882
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +535 -21
  4. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.css.js +94 -0
  5. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.css.js.map +1 -0
  6. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.d.ts +72 -0
  7. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.d.ts.map +1 -0
  8. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.js +396 -0
  9. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.js.map +1 -0
  10. package/dist/components/icon-button/icon-button.d.ts +3 -0
  11. package/dist/components/icon-button/icon-button.d.ts.map +1 -1
  12. package/dist/components/icon-button/icon-button.js +6 -0
  13. package/dist/components/icon-button/icon-button.js.map +1 -1
  14. package/dist/components/table/table.css.js +43 -0
  15. package/dist/components/table/table.css.js.map +1 -1
  16. package/dist/components/table/table.d.ts +31 -1
  17. package/dist/components/table/table.d.ts.map +1 -1
  18. package/dist/components/table/table.js +124 -11
  19. package/dist/components/table/table.js.map +1 -1
  20. package/dist/components/top-bar/top-bar.d.ts.map +1 -1
  21. package/dist/components/top-bar/top-bar.js +8 -0
  22. package/dist/components/top-bar/top-bar.js.map +1 -1
  23. package/dist/generated/locales/es-419.d.ts +11 -1
  24. package/dist/generated/locales/es-419.d.ts.map +1 -1
  25. package/dist/generated/locales/es-419.js +11 -1
  26. package/dist/generated/locales/es-419.js.map +1 -1
  27. package/dist/generated/locales/fi-FI.d.ts +11 -1
  28. package/dist/generated/locales/fi-FI.d.ts.map +1 -1
  29. package/dist/generated/locales/fi-FI.js +11 -1
  30. package/dist/generated/locales/fi-FI.js.map +1 -1
  31. package/dist/integration-systems/integration-bar/integration-bar.d.ts +8 -8
  32. package/dist/integration-systems/integration-bar/integration-bar.d.ts.map +1 -1
  33. package/dist/integration-systems/integration-bar/integration-bar.js +13 -1
  34. package/dist/integration-systems/integration-bar/integration-bar.js.map +1 -1
  35. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.d.ts +72 -7
  36. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.d.ts.map +1 -1
  37. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.js +99 -41
  38. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.js.map +1 -1
  39. package/dist/types.d.ts +2 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/components/alert-list-details-experimental/alert-list-details-experimental.css +70 -0
  44. package/src/components/alert-list-details-experimental/alert-list-details-experimental.stories.ts +510 -0
  45. package/src/components/alert-list-details-experimental/alert-list-details-experimental.ts +457 -0
  46. package/src/components/icon-button/icon-button.spec.ts +52 -0
  47. package/src/components/icon-button/icon-button.ts +7 -0
  48. package/src/components/table/table.css +42 -0
  49. package/src/components/table/table.stories.ts +279 -0
  50. package/src/components/table/table.ts +177 -13
  51. package/src/components/top-bar/top-bar.ts +10 -0
  52. package/src/generated/locales/es-419.ts +11 -1
  53. package/src/generated/locales/fi-FI.ts +11 -1
  54. package/src/integration-systems/integration-bar/integration-bar.ts +21 -9
  55. package/src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.stories.ts +70 -3
  56. package/src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts +138 -52
  57. package/src/types.ts +6 -4
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../src/components/table/table.ts"],"sourcesContent":["import {\n html,\n HTMLTemplateResult,\n LitElement,\n nothing,\n PropertyValues,\n unsafeCSS,\n} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './table.css?inline';\nimport {property, state} from 'lit/decorators.js';\nimport '../table-header-item/table-header-item.js';\nimport {ObcTableHeaderItemType} from '../table-header-item/table-header-item.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../button/button.js';\nimport {CheckboxStatus, ObcCheckboxChangeEvent} from '../checkbox/checkbox.js';\nimport {TagColor} from '../tag/tag.js';\nimport '../../building-blocks/bar-horizontal/bar-horizontal.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {map} from 'lit/directives/map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {\n ExternalScaleSide,\n FillMode,\n FrameStyle,\n InstrumentState,\n Priority,\n ScaleType,\n} from '../../building-blocks/bar-horizontal/bar-horizontal.js';\n\nexport enum ObcTableCellType {\n Regular = 'regular',\n Button = 'button',\n Checkbox = 'checkbox',\n Tag = 'tag',\n HorizontalBar = 'horizontal-bar',\n}\n\nexport interface ObcTableCellDataRegular {\n type: ObcTableCellType.Regular;\n cssPart?: string;\n neutral?: boolean; // If true, the text will be neutral color\n largeIcon?: boolean;\n noWrap?: boolean; // If true, the text will not wrap\n vertical?: boolean; // If true, the text will be displayed vertically\n align?: 'left' | 'center' | 'right';\n text?: string | HTMLTemplateResult;\n title?: string | HTMLTemplateResult;\n icon?: HTMLTemplateResult;\n icon2?: HTMLTemplateResult;\n icon3?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataButton {\n type: ObcTableCellType.Button;\n disabled?: boolean;\n cssPart?: string;\n text?: string;\n icon?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataCheckbox {\n type: ObcTableCellType.Checkbox;\n cssPart?: string;\n label?: string;\n text?: string;\n status?: CheckboxStatus;\n disabled?: boolean;\n ariaDescribedBy?: string;\n align?: 'left' | 'center' | 'right';\n}\n\nexport interface ObcTableTagData {\n id: string;\n label: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n cssPart?: string;\n}\n\nexport interface ObcTableCellDataTag {\n type: ObcTableCellType.Tag;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n label?: string;\n text?: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n tagId?: string;\n tag?: ObcTableTagData;\n tags?: ObcTableTagData[];\n wrap?: boolean;\n maxTags?: number;\n overflowLabel?: string;\n}\n\nexport interface ObcTableCellDataHorizontalBar {\n type: ObcTableCellType.HorizontalBar;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n minValue?: number;\n maxValue?: number;\n value?: number;\n setpoint?: number;\n hasBar?: boolean;\n hasScale?: boolean;\n hideLabels?: boolean;\n priority?: Priority;\n fillMode?: FillMode;\n fillMin?: number;\n fillMax?: number;\n barThickness?: number;\n scaleType?: ScaleType;\n frameStyle?: FrameStyle;\n side?: ExternalScaleSide;\n state?: InstrumentState;\n fixedAspectRatio?: boolean;\n scaleReferenceSize?: number;\n}\n\nexport type ObcTableCellData =\n | ObcTableCellDataRegular\n | ObcTableCellDataButton\n | ObcTableCellDataCheckbox\n | ObcTableCellDataTag\n | ObcTableCellDataHorizontalBar;\n\nexport interface ObcTableRow {\n selected?: boolean;\n id: string;\n [key: string]: ObcTableCellData | boolean | undefined | string;\n}\n\nexport interface ObcTableColumnUnsortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> {\n label: string;\n key: string;\n headerType?: ObcTableHeaderItemType;\n renderHeaderIcon?: () => HTMLTemplateResult;\n renderCell?: (value: T, row: S, rowId: string) => HTMLTemplateResult;\n dividerRight?: boolean;\n}\n\nexport interface ObcTableColumnSortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> extends ObcTableColumnUnsortable<T, S> {\n sortable: true;\n sortDirection?: 'asc' | 'desc';\n compareFunction: (a: T, b: T, aRow: S, bRow: S) => number;\n}\n\nexport type ObcTableColumn<\n T extends ObcTableCellData = ObcTableCellData,\n S extends ObcTableRow = ObcTableRow,\n> = ObcTableColumnUnsortable<T, S> | ObcTableColumnSortable<T, S>;\n\nexport type ObcTableCellClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n}>;\n\nexport type ObcTableCellCheckboxChangeEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n status: CheckboxStatus;\n disabled: boolean;\n}>;\n\nexport type ObcTableCellTagClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n tagId: string;\n}>;\n\nexport type ObcTableSelectionChangeEvent = CustomEvent<{\n selectedRowIds: string[];\n selectedRows: ObcTableRow[];\n source: 'row' | 'header';\n}>;\n\nexport type ObcTableRowClickEvent = CustomEvent<{\n row: ObcTableRow;\n}>;\n\nfunction cssPart(value: ObcTableCellData, subpart: string): string | undefined {\n if (value.cssPart) {\n return `${value.cssPart} ${subpart}`;\n }\n return undefined;\n}\n\n/**\n * `<obc-table>` renders tabular data with configurable columns and cell types.\n *\n * Overview\n * Use this component to display structured datasets with optional selection, sorting, and rich cell\n * rendering. It accepts `data` and `columns` and renders rows based on column configuration.\n *\n * Features/Variants\n * - Selectable rows with header “select all” checkbox via `selectable=true`.\n * - Cell rendering variants: `checkbox`, `tag`, `horizontal-bar`, and `button` cell types.\n * - Visual variants: `rowDivider`, `striped`, `narrowHeader`, and `showHeader`.\n * - Sorting support for sortable columns via column definitions.\n *\n * Usage Guidelines\n * - Controlled selection: pass `selectedRowIds` and update it on `selection-change`.\n * - Uncontrolled selection: pass `defaultSelectedRowIds` and listen to `selection-change`.\n * - Use `selectAllAriaLabel` to customize the header checkbox accessibility label.\n *\n * Slots/Content\n * - This component does not expose public slots. Provide content via `data` and `columns`.\n *\n * Events\n * - `row-click` fires when a row is clicked.\n * - `cell-button-click` fires when a button cell is clicked.\n * - `cell-checkbox-change` fires when a checkbox cell changes.\n * - `cell-tag-click` fires when a tag inside a cell is clicked.\n * - `selection-change` fires when row selection changes (source: `row` or `header`).\n *\n * Best Practices\n * - Keep column `key` values stable across renders to avoid selection or sorting resets.\n * - Prefer `selectedRowIds` for deterministic state in apps with external stores.\n * - For dense tables, combine `narrowHeader` and `rowDivider` for visual clarity.\n *\n * Example (keywords: table, data grid, grid, tabular, datatable)\n * ```ts\n * html`<obc-table\n * .data=${rows}\n * .columns=${columns}\n * selectable\n * striped\n * @selection-change=${onSelectionChange}\n * ></obc-table>`;\n * ```\n *\n * @availableWhen narrowHeader showHeader==true\n * @availableWhen selectedRowIds selectable==true\n * @availableWhen defaultSelectedRowIds selectable==true && selectedRowIds==undefined\n * @availableWhen selectAllAriaLabel selectable==true && showHeader==true\n * @fires {ObcTableRowClickEvent} row-click - Fired when a row is clicked.\n * @fires {ObcTableCellClickEvent} cell-button-click - Fired when a cell button is clicked.\n * @fires {ObcTableCellCheckboxChangeEvent} cell-checkbox-change - Fired when a cell checkbox is changed.\n * @fires {ObcTableCellTagClickEvent} cell-tag-click - Fired when a tag inside a cell is clicked.\n * @fires {ObcTableSelectionChangeEvent} selection-change - Fired when row selection changes.\n * @beta\n */\n@customElement('obc-table')\nexport class ObcTable extends LitElement {\n @property({type: Array}) data: ObcTableRow[] = [];\n @property({type: Array}) columns: ObcTableColumn[] = [];\n @property({type: Boolean}) rowDivider = false;\n @property({type: Boolean}) narrowHeader = false;\n @property({type: Boolean, attribute: false}) showHeader = true;\n @property({type: Boolean}) striped = false;\n @property({type: Boolean}) selectable = false;\n @property({type: Array}) selectedRowIds?: string[];\n @property({type: Array}) defaultSelectedRowIds?: string[];\n @property({type: String}) selectAllAriaLabel = 'Select all rows';\n\n @state()\n private _sortByColumnIdx: number | undefined = undefined;\n\n @state()\n private _sortDirection: 'asc' | 'desc' = 'asc';\n\n @state()\n private _selectedRowIds: Set<string> = new Set();\n\n private _previousPositions: {top: number; index: string}[] = [];\n\n get sortedData() {\n if (this._sortByColumnIdx === undefined) {\n return this.data;\n }\n const sortByColumn = this.columns[this._sortByColumnIdx] as\n | ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n | undefined;\n if (sortByColumn === undefined) {\n console.warn('Sort by column is undefined');\n return this.data;\n }\n const sortDirection = this._sortDirection;\n const sortedData = [...this.data];\n sortedData.sort((a, b) => {\n const aValue = a[sortByColumn.key];\n const bValue = b[sortByColumn.key];\n if (sortDirection === 'asc') {\n return sortByColumn.compareFunction(\n aValue as ObcTableCellData,\n bValue as ObcTableCellData,\n a,\n b\n );\n } else {\n return sortByColumn.compareFunction(\n bValue as ObcTableCellData,\n aValue as ObcTableCellData,\n b,\n a\n );\n }\n });\n return sortedData;\n }\n\n private _handleSortClick(\n column: ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n ) {\n if (!column.sortable) {\n return;\n }\n const newSortColumnIdx = this.columns.indexOf(column);\n if (newSortColumnIdx === this._sortByColumnIdx) {\n this._sortDirection = this._sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortByColumnIdx = newSortColumnIdx;\n this._sortDirection = 'asc';\n }\n }\n\n private _handleRowClick(row: ObcTableRow) {\n this.dispatchEvent(\n new CustomEvent('row-click', {detail: {row}}) as ObcTableRowClickEvent\n );\n }\n\n private _focusFirstRow() {\n const firstRow = this.renderRoot.querySelector<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n );\n firstRow?.focus();\n }\n\n private _focusLeftHeaderItem() {\n this._focusHeaderByIndex(0);\n }\n\n private _focusHeaderByIndex(index: number) {\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n const clampedIndex = Math.max(0, Math.min(index, headers.length - 1));\n const headerItem = headers[clampedIndex];\n const innerButton = (headerItem.shadowRoot?.querySelector('button') ??\n null) as HTMLButtonElement | null;\n (innerButton ?? headerItem).focus();\n }\n\n private _handleHeaderKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (key === 'ArrowDown') {\n this._focusFirstRow();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return;\n }\n\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n\n const currentHeaderEl = event.currentTarget as HTMLElement | null;\n const currentIndex = currentHeaderEl\n ? headers.indexOf(currentHeaderEl)\n : -1;\n if (currentIndex === -1) return;\n\n const nextIndex =\n key === 'ArrowRight'\n ? Math.min(currentIndex + 1, headers.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (nextIndex !== currentIndex) {\n this._focusHeaderByIndex(nextIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'Home' &&\n key !== 'End'\n ) {\n return;\n }\n\n const target = event.currentTarget as HTMLButtonElement | null;\n if (!target) return;\n\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const currentIndex = rows.indexOf(target);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, rows.length - 1);\n break;\n case 'ArrowUp':\n if (currentIndex === 0) {\n this._focusLeftHeaderItem();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = rows.length - 1;\n break;\n }\n\n if (nextIndex !== currentIndex) {\n rows[nextIndex]?.focus();\n event.preventDefault();\n event.stopPropagation();\n } else if (key === 'Home' || key === 'End') {\n // Even if already at boundary, prevent page scroll for Home/End\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _getAllPositions(): {\n top: number;\n height: number;\n index: string;\n element: HTMLButtonElement;\n }[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n // Calculate the zoom factor for the first row\n const firstRow = rows[0];\n if (!firstRow) {\n return [];\n }\n const firstRowRect = firstRow.getBoundingClientRect();\n const firstRowHeight = firstRowRect.height;\n const computedStyle = getComputedStyle(firstRow);\n const computedHeight = parseFloat(computedStyle.height);\n const zoomFactor = computedHeight / firstRowHeight;\n\n return rows.map((row) => {\n const rect = row.getBoundingClientRect();\n return {\n top: rect.top * zoomFactor,\n height: rect.height * zoomFactor,\n index: row.getAttribute('data-row-id') ?? '',\n element: row,\n };\n });\n }\n\n private _animateRowChanges() {\n const previousPositions = this._previousPositions;\n const currentPositions = this._getAllPositions();\n currentPositions.forEach((el) => {\n const previousPosition = previousPositions.find(\n (p) => p.index === el.index\n );\n if (!previousPosition) {\n el.element.style.transform = `translateY(-${el.height}px)`;\n el.element.style.opacity = '0';\n } else {\n el.element.style.transform = `translateY(${previousPosition.top - el.top}px)`;\n }\n el.element.style.transition = 'none';\n // Force a reflow to ensure the animation is applied\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.element.offsetHeight;\n el.element.style.transition =\n 'transform 100ms ease-in-out, opacity 100ms ease-in-out';\n el.element.style.transform = 'translateY(0px)';\n el.element.style.opacity = '1';\n });\n\n this._previousPositions = currentPositions;\n }\n\n private _hasRenderedRows = false;\n\n override willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('defaultSelectedRowIds')) {\n if (\n this.selectedRowIds === undefined &&\n this._selectedRowIds.size === 0\n ) {\n this._selectedRowIds = new Set(this.defaultSelectedRowIds ?? []);\n }\n }\n\n if (changedProperties.has('selectedRowIds')) {\n if (this.selectedRowIds !== undefined) {\n this._selectedRowIds = new Set(this.selectedRowIds);\n }\n }\n\n if (changedProperties.has('data')) {\n const availableIds = new Set(this.data.map((row) => row.id));\n this._selectedRowIds.forEach((id) => {\n if (!availableIds.has(id)) {\n this._selectedRowIds.delete(id);\n }\n });\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._updatePositions();\n } else {\n this.updateComplete.then(() => {\n this._hasRenderedRows = true;\n });\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n if (changedProperties.has('columns')) {\n this._sortByColumnIdx = this.columns.findIndex(\n (col) => 'sortDirection' in col && col.sortDirection !== undefined\n );\n if (this._sortByColumnIdx === -1) {\n this._sortByColumnIdx = undefined;\n this._sortDirection = 'asc';\n } else {\n this._sortDirection =\n (\n this.columns[this._sortByColumnIdx] as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )?.sortDirection ?? 'asc';\n }\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._animateRowChanges();\n }\n }\n }\n\n private _updatePositions() {\n const positions = this._getAllPositions();\n this._previousPositions = positions;\n }\n\n override render() {\n const effectiveColumns = this.selectable\n ? ([\n {\n label: '',\n key: '__selection__',\n } as ObcTableColumn,\n ...this.columns,\n ] as ObcTableColumn[])\n : this.columns;\n const selectionColumnCount = this.selectable\n ? Math.max(0, effectiveColumns.length - 1)\n : effectiveColumns.length;\n return html`\n <div\n class=${classMap({\n 'grid-container': true,\n 'has-selection-column': this.selectable,\n })}\n part=\"grid\"\n style=\"\n --grid-columns: ${effectiveColumns.length};\n --grid-columns-rest: ${selectionColumnCount};\n --selection-column-width: var(--menu-navigation-components-table-item-touch-target-size);\n \"\n role=\"table\"\n >\n ${this.showHeader\n ? html`\n <div class=\"grid-header\" role=\"row\">\n ${effectiveColumns.map((col) => {\n const isSelectionColumn =\n this.selectable && col.key === '__selection__';\n const isNotLast =\n effectiveColumns.indexOf(col) !==\n effectiveColumns.length - 1;\n const icon = col.renderHeaderIcon\n ? html`<span slot=\"leading-icon\"\n >${col.renderHeaderIcon()}</span\n >`\n : nothing;\n\n const columnIndex = this.columns.findIndex(\n (column) => column.key === col.key\n );\n const sorted =\n 'sortable' in col &&\n col.sortable &&\n this._sortByColumnIdx === columnIndex;\n const sortDirection = sorted ? this._sortDirection : 'none';\n const headerType =\n col.headerType ??\n (this.narrowHeader\n ? ObcTableHeaderItemType.Narrow\n : ObcTableHeaderItemType.Regular);\n if ('sortable' in col && col.sortable && !isSelectionColumn) {\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n .sortDirection=${sortDirection}\n .sortable=${true}\n type=${headerType}\n @click=${() =>\n this._handleSortClick(\n col as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )}\n @keydown=${this._handleHeaderKeyDown}\n >${icon}${col.label}</obc-table-header-item\n > `;\n } else {\n if (isSelectionColumn) {\n return html`<div\n role=\"columnheader\"\n class=${classMap({\n 'selection-header': true,\n })}\n tabindex=\"0\"\n @keydown=${this._handleHeaderKeyDown}\n >\n <obc-checkbox\n .status=${this._getSelectionStatus()}\n .disabled=${false}\n aria-label=${this.selectAllAriaLabel}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleAllSelection()}\n ></obc-checkbox>\n </div>`;\n }\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n type=${headerType}\n >${icon}${col.label}</obc-table-header-item\n >`;\n }\n })}\n </div>\n <div class=\"grid-header-divider\"></div>\n `\n : nothing}\n <div\n class=\"grid-body\"\n part=\"body\"\n style=\"grid-template-rows: repeat(${this.sortedData\n .length}, min-content)\"\n >\n ${repeat(\n this.sortedData,\n (row) => row.id,\n (row, rowIndex) => {\n const hasDivider =\n this.rowDivider && this.data.length - 1 !== rowIndex;\n const isStriped = this.striped && rowIndex % 2 === 1;\n const isRowSelected =\n (row.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(row.id));\n const previousRow =\n rowIndex > 0 ? this.sortedData[rowIndex - 1] : undefined;\n const nextRow =\n rowIndex < this.sortedData.length - 1\n ? this.sortedData[rowIndex + 1]\n : undefined;\n const hasSelectedPreviousRow =\n previousRow !== undefined &&\n ((previousRow.selected ?? false) ||\n (this.selectable &&\n this._selectedRowIds.has(previousRow.id)));\n const hasSelectedNextRow =\n nextRow !== undefined &&\n ((nextRow.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(nextRow.id)));\n return html`\n <button\n role=\"row\"\n class=${classMap({\n 'grid-row': true,\n selected: isRowSelected,\n 'selected-with-prev':\n isRowSelected && hasSelectedPreviousRow,\n 'selected-with-next': isRowSelected && hasSelectedNextRow,\n striped: isStriped,\n })}\n @click=${() => this._handleRowClick(row)}\n @keydown=${this._handleRowKeyDown}\n data-row-id=${row.id}\n style=\"grid-row: ${rowIndex + 1}\"\n part=\"row\"\n >\n ${map(effectiveColumns, (col) => {\n if (this.selectable && col.key === '__selection__') {\n const checked = this._selectedRowIds.has(row.id);\n return html`<div\n class=\"grid-cell checkbox align-center selection\"\n role=\"cell\"\n >\n <obc-checkbox\n .status=${checked\n ? CheckboxStatus.checked\n : CheckboxStatus.unchecked}\n .disabled=${false}\n aria-label=${`Select row ${row.id}`}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleRowSelection(row.id)}\n ></obc-checkbox>\n </div>`;\n }\n const value = row[col.key];\n if (value === undefined) {\n return html`<div class=\"grid-cell\" role=\"cell\"></div>`;\n }\n if (col.renderCell) {\n return html`<div\n class=\"grid-cell ${col.dividerRight\n ? 'divider-right'\n : ''}\"\n role=\"cell\"\n part=${ifDefined((value as ObcTableCellData).cssPart)}\n >\n ${col.renderCell(\n value as ObcTableCellData,\n row,\n row.id\n )}\n </div>`;\n } else {\n return this._renderCell(\n value as ObcTableCellData,\n row,\n col\n );\n }\n })}\n ${hasDivider\n ? html`<div class=\"grid-row-divider\"></div>`\n : nothing}\n </button>\n `;\n }\n )}\n ${repeat(\n effectiveColumns,\n (col) => col.key,\n (col, colIndex) =>\n col.dividerRight\n ? html`<div\n class=\"grid-column-divider\"\n style=\"grid-column: ${colIndex + 1}; grid-row: 1/${this\n .sortedData.length + 1}\"\n ></div>`\n : nothing\n )}\n </div>\n </div>\n `;\n }\n\n public getAllVisibleRows(): string[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n const bodyRect = this.renderRoot\n .querySelector('.grid-body')\n ?.getBoundingClientRect();\n if (!bodyRect) {\n return [];\n }\n const scrollTop = bodyRect.top;\n const scrollHeight = bodyRect.height;\n const scrollBottom = scrollTop + scrollHeight;\n return rows\n .filter((el) => el.checkVisibility())\n .filter(\n (el) =>\n el.getBoundingClientRect().top >= scrollTop &&\n el.getBoundingClientRect().bottom <= scrollBottom\n )\n .map((row) => row.getAttribute('data-row-id'))\n .filter((id): id is string => id !== null);\n }\n\n private _handleCellButtonClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellClickEvent = new CustomEvent('cell-button-click', {\n detail: {rowId: row.id, columnKey},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellTagClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string,\n tagId: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellTagClickEvent = new CustomEvent('cell-tag-click', {\n detail: {rowId: row.id, columnKey, tagId},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellCheckboxChange(\n event: ObcCheckboxChangeEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellCheckboxChangeEvent = new CustomEvent(\n 'cell-checkbox-change',\n {\n detail: {\n rowId: row.id,\n columnKey,\n status: event.detail.status,\n disabled: event.detail.disabled,\n },\n }\n );\n this.dispatchEvent(e);\n }\n\n private _getSelectableRowIds(): string[] {\n return this.data.map((row) => row.id);\n }\n\n private _getSelectionStatus(): CheckboxStatus {\n const rowIds = this._getSelectableRowIds();\n if (rowIds.length === 0) return CheckboxStatus.unchecked;\n const selectedCount = rowIds.filter((id) =>\n this._selectedRowIds.has(id)\n ).length;\n if (selectedCount === 0) return CheckboxStatus.unchecked;\n if (selectedCount === rowIds.length) return CheckboxStatus.checked;\n return CheckboxStatus.mixed;\n }\n\n private _emitSelectionChange(\n selectedRowIds: string[],\n source: 'row' | 'header'\n ) {\n const selectedRows = this.data.filter((row) =>\n selectedRowIds.includes(row.id)\n );\n const e: ObcTableSelectionChangeEvent = new CustomEvent(\n 'selection-change',\n {\n detail: {selectedRowIds, selectedRows, source},\n }\n );\n this.dispatchEvent(e);\n }\n\n private _applySelectionChange(\n nextSelection: Set<string>,\n source: 'row' | 'header'\n ) {\n const selectedRowIds = Array.from(nextSelection);\n this._emitSelectionChange(selectedRowIds, source);\n if (this.selectedRowIds === undefined) {\n this._selectedRowIds = nextSelection;\n this.requestUpdate();\n }\n }\n\n private _toggleRowSelection(rowId: string) {\n const nextSelection = new Set(this._selectedRowIds);\n if (nextSelection.has(rowId)) {\n nextSelection.delete(rowId);\n } else {\n nextSelection.add(rowId);\n }\n this._applySelectionChange(nextSelection, 'row');\n }\n\n private _toggleAllSelection() {\n const rowIds = this._getSelectableRowIds();\n const status = this._getSelectionStatus();\n const nextSelection =\n status === CheckboxStatus.checked ? new Set<string>() : new Set(rowIds);\n this._applySelectionChange(nextSelection, 'header');\n }\n\n private _renderCell(\n value: ObcTableCellData,\n row: ObcTableRow,\n column: ObcTableColumn<ObcTableCellData, ObcTableRow>\n ) {\n if (value.type === ObcTableCellType.Regular) {\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n regular: true,\n neutral: value.neutral ?? false,\n 'large-icon': value.largeIcon ?? false,\n 'no-wrap': value.noWrap ?? false,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n vertical: value.vertical ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${value.icon3\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon3'))}\n >${value.icon3}</span\n >`\n : nothing}\n ${value.icon2\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon2'))}\n >${value.icon2}</span\n >`\n : nothing}\n ${value.icon\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.title\n ? html`<span class=\"title\" part=${ifDefined(cssPart(value, 'title'))}\n >${value.title}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.Button) {\n return html`<div\n class=\"grid-cell button ${column.dividerRight ? 'divider-right' : ''}\"\n role=\"cell\"\n >\n <obc-button\n variant=\"normal\"\n fullWidth\n .disabled=${value.disabled ?? false}\n ?showLeadingIcon=${value.icon !== undefined}\n part=${ifDefined(cssPart(value, 'button'))}\n @click=${(event: MouseEvent) =>\n this._handleCellButtonClick(event, row, column.key)}\n >\n ${value.icon\n ? html`<span\n slot=\"leading-icon\"\n part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </obc-button>\n </div>`;\n } else if (value.type === ObcTableCellType.Checkbox) {\n const checkboxLabel = value.label ?? value.text ?? '';\n const ariaLabel =\n checkboxLabel.trim() || column.label?.trim() || 'Checkbox';\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n checkbox: true,\n [`align-${value.align ?? 'center'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n <obc-checkbox\n .status=${value.status ?? CheckboxStatus.unchecked}\n .disabled=${value.disabled ?? false}\n aria-describedby=${ifDefined(value.ariaDescribedBy)}\n aria-label=${ariaLabel}\n part=${ifDefined(cssPart(value, 'checkbox'))}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${(event: ObcCheckboxChangeEvent) =>\n this._handleCellCheckboxChange(event, row, column.key)}\n ></obc-checkbox>\n </div>`;\n } else if (value.type === ObcTableCellType.Tag) {\n const tags: ObcTableTagData[] = value.tags ??\n (value.tag ? [value.tag] : undefined) ?? [\n {\n id: value.tagId ?? 'tag',\n label: value.label ?? value.text ?? 'Label',\n color: value.color,\n hasIcon: value.hasIcon,\n icon: value.icon,\n },\n ];\n const wrap = value.wrap ?? value.tags !== undefined;\n const defaultMaxTags = value.tags ? 2 : undefined;\n const maxTags =\n (value.maxTags ?? defaultMaxTags) !== undefined\n ? Math.max(0, Math.floor(value.maxTags ?? defaultMaxTags ?? 0))\n : undefined;\n const visibleTags = maxTags !== undefined ? tags.slice(0, maxTags) : tags;\n const overflowCount =\n maxTags !== undefined ? Math.max(0, tags.length - maxTags) : 0;\n const overflowLabel =\n value.overflowLabel ?? `+${overflowCount.toString()}`;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n tags: tags.length > 1,\n wrap,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${visibleTags.map((tag) => {\n const hasIcon = tag.hasIcon ?? tag.icon !== undefined;\n return html`<obc-tag\n .label=${tag.label}\n color=${tag.color ?? TagColor.gray}\n ?hasIcon=${hasIcon}\n part=${ifDefined(\n [cssPart(value, 'tag'), tag.cssPart].filter(Boolean).join(' ') ||\n undefined\n )}\n @click=${(event: MouseEvent) =>\n this._handleCellTagClick(event, row, column.key, tag.id)}\n >\n ${hasIcon && tag.icon ? tag.icon : nothing}\n </obc-tag>`;\n })}\n ${overflowCount > 0\n ? html`<span\n class=\"tag-overflow\"\n part=${ifDefined(cssPart(value, 'tag-overflow'))}\n >${overflowLabel}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.HorizontalBar) {\n const hasBar = value.hasBar ?? true;\n const hasScale = value.hasScale ?? false;\n const showLabels = !(value.hideLabels ?? true);\n const fixedAspectRatio = value.fixedAspectRatio ?? true;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n 'horizontal-bar': true,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n <obc-bar-horizontal\n .minValue=${value.minValue ?? 0}\n .maxValue=${value.maxValue ?? 100}\n .value=${value.value}\n .setpoint=${value.setpoint}\n .hasBar=${hasBar}\n .hasScale=${hasScale}\n .showLabels=${showLabels}\n .priority=${value.priority ?? Priority.regular}\n .fillMode=${value.fillMode ?? FillMode.fill}\n .fillMin=${value.fillMin}\n .fillMax=${value.fillMax}\n .barThickness=${value.barThickness ?? 24}\n .scaleType=${value.scaleType ?? ScaleType.regular}\n .frameStyle=${value.frameStyle ?? FrameStyle.regular}\n .side=${value.side ?? ExternalScaleSide.bottom}\n .state=${value.state ?? InstrumentState.active}\n .fixedAspectRatio=${fixedAspectRatio}\n .scaleReferenceSize=${value.scaleReferenceSize ?? 384}\n part=${ifDefined(cssPart(value, 'bar'))}\n ></obc-bar-horizontal>\n </div>`;\n } else {\n return nothing;\n }\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-table': ObcTable;\n }\n}\n"],"names":["ObcTableCellType"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../src/components/table/table.ts"],"sourcesContent":["import {\n html,\n HTMLTemplateResult,\n LitElement,\n nothing,\n PropertyValues,\n unsafeCSS,\n} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './table.css?inline';\nimport {property, state} from 'lit/decorators.js';\nimport '../table-header-item/table-header-item.js';\nimport {ObcTableHeaderItemType} from '../table-header-item/table-header-item.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../button/button.js';\nimport '../../icons/icon-chevron-right-google.js';\nimport {CheckboxStatus, ObcCheckboxChangeEvent} from '../checkbox/checkbox.js';\nimport {TagColor} from '../tag/tag.js';\nimport '../../building-blocks/bar-horizontal/bar-horizontal.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {map} from 'lit/directives/map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {\n ExternalScaleSide,\n FillMode,\n FrameStyle,\n InstrumentState,\n Priority,\n ScaleType,\n} from '../../building-blocks/bar-horizontal/bar-horizontal.js';\n\nexport enum ObcTableCellType {\n Regular = 'regular',\n Button = 'button',\n Checkbox = 'checkbox',\n Tag = 'tag',\n HorizontalBar = 'horizontal-bar',\n}\n\nexport interface ObcTableCellDataRegular {\n type: ObcTableCellType.Regular;\n cssPart?: string;\n neutral?: boolean; // If true, the text will be neutral color\n largeIcon?: boolean;\n noWrap?: boolean; // If true, the text will not wrap\n vertical?: boolean; // If true, the text will be displayed vertically\n align?: 'left' | 'center' | 'right';\n text?: string | HTMLTemplateResult;\n title?: string | HTMLTemplateResult;\n icon?: HTMLTemplateResult;\n icon2?: HTMLTemplateResult;\n icon3?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataButton {\n type: ObcTableCellType.Button;\n disabled?: boolean;\n cssPart?: string;\n text?: string;\n icon?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataCheckbox {\n type: ObcTableCellType.Checkbox;\n cssPart?: string;\n label?: string;\n text?: string;\n status?: CheckboxStatus;\n disabled?: boolean;\n ariaDescribedBy?: string;\n align?: 'left' | 'center' | 'right';\n}\n\nexport interface ObcTableTagData {\n id: string;\n label: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n cssPart?: string;\n}\n\nexport interface ObcTableCellDataTag {\n type: ObcTableCellType.Tag;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n label?: string;\n text?: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n tagId?: string;\n tag?: ObcTableTagData;\n tags?: ObcTableTagData[];\n wrap?: boolean;\n maxTags?: number;\n overflowLabel?: string;\n}\n\nexport interface ObcTableCellDataHorizontalBar {\n type: ObcTableCellType.HorizontalBar;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n minValue?: number;\n maxValue?: number;\n value?: number;\n setpoint?: number;\n hasBar?: boolean;\n hasScale?: boolean;\n hideLabels?: boolean;\n priority?: Priority;\n fillMode?: FillMode;\n fillMin?: number;\n fillMax?: number;\n barThickness?: number;\n scaleType?: ScaleType;\n frameStyle?: FrameStyle;\n side?: ExternalScaleSide;\n state?: InstrumentState;\n fixedAspectRatio?: boolean;\n scaleReferenceSize?: number;\n}\n\nexport type ObcTableCellData =\n | ObcTableCellDataRegular\n | ObcTableCellDataButton\n | ObcTableCellDataCheckbox\n | ObcTableCellDataTag\n | ObcTableCellDataHorizontalBar;\n\nexport interface ObcTableRow {\n selected?: boolean;\n id: string;\n parentId?: string;\n level?: number;\n expandable?: boolean;\n expanded?: boolean;\n [key: string]: ObcTableCellData | boolean | undefined | string | number;\n}\n\nexport interface ObcTableColumnUnsortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> {\n label: string;\n key: string;\n headerType?: ObcTableHeaderItemType;\n renderHeaderIcon?: () => HTMLTemplateResult;\n renderCell?: (value: T, row: S, rowId: string) => HTMLTemplateResult;\n dividerRight?: boolean;\n}\n\nexport interface ObcTableColumnSortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> extends ObcTableColumnUnsortable<T, S> {\n sortable: true;\n sortDirection?: 'asc' | 'desc';\n compareFunction: (a: T, b: T, aRow: S, bRow: S) => number;\n}\n\nexport type ObcTableColumn<\n T extends ObcTableCellData = ObcTableCellData,\n S extends ObcTableRow = ObcTableRow,\n> = ObcTableColumnUnsortable<T, S> | ObcTableColumnSortable<T, S>;\n\nexport type ObcTableCellClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n}>;\n\nexport type ObcTableCellCheckboxChangeEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n status: CheckboxStatus;\n disabled: boolean;\n}>;\n\nexport type ObcTableCellTagClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n tagId: string;\n}>;\n\nexport type ObcTableSelectionChangeEvent = CustomEvent<{\n selectedRowIds: string[];\n selectedRows: ObcTableRow[];\n source: 'row' | 'header';\n}>;\n\nexport type ObcTableRowClickEvent = CustomEvent<{\n row: ObcTableRow;\n}>;\n\nexport type ObcTableExpandToggleEvent = CustomEvent<{\n rowId: string;\n expanded: boolean;\n}>;\n\nfunction cssPart(value: ObcTableCellData, subpart: string): string | undefined {\n if (value.cssPart) {\n return `${value.cssPart} ${subpart}`;\n }\n return undefined;\n}\n\n/**\n * `<obc-table>` renders tabular data with configurable columns and cell types.\n *\n * Overview\n * Use this component to display structured datasets with optional selection, sorting, and rich cell\n * rendering. It accepts `data` and `columns` and renders rows based on column configuration.\n *\n * Features/Variants\n * - Selectable rows with header “select all” checkbox via `selectable=true`.\n * - Cell rendering variants: `checkbox`, `tag`, `horizontal-bar`, and `button` cell types.\n * - Visual variants: `rowDivider`, `striped`, `narrowHeader`, and `showHeader`.\n * - Sorting support for sortable columns via column definitions.\n * - Hierarchical rows via `parentId`, `level`, `expandable` and `expanded`.\n *\n * Usage Guidelines\n * - Controlled selection: pass `selectedRowIds` and update it on `selection-change`.\n * - Uncontrolled selection: pass `defaultSelectedRowIds` and listen to `selection-change`.\n * - Use `selectAllAriaLabel` to customize the header checkbox accessibility label.\n * - Hierarchy is controlled, and flat: pass only the rows that are currently\n * visible, each with the `parentId` of its parent row, and drop a collapsed\n * group's descendants from `data` on `expand-toggle`. The table draws the\n * indent and the chevron, keeps each sibling set sorted within its parent,\n * and owns no expansion state of its own.\n *\n * Slots/Content\n * - This component does not expose public slots. Provide content via `data` and `columns`.\n *\n * Events\n * - `row-click` fires when a row is clicked.\n * - `cell-button-click` fires when a button cell is clicked.\n * - `cell-checkbox-change` fires when a checkbox cell changes.\n * - `cell-tag-click` fires when a tag inside a cell is clicked.\n * - `selection-change` fires when row selection changes (source: `row` or `header`).\n * - `expand-toggle` fires when a group row's chevron or expand key is used.\n *\n * Accessibility\n * A table with hierarchical rows renders as a\n * [treegrid](https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/): rows carry\n * `aria-level`, and group rows `aria-expanded`. Right expands a collapsed\n * group, Left collapses an expanded one or moves to the parent row. Cell-level\n * arrow navigation, which the full pattern also specifies, is out of scope —\n * arrow keys move between rows, matching the flat table.\n *\n * Best Practices\n * - Keep column `key` values stable across renders to avoid selection or sorting resets.\n * - Prefer `selectedRowIds` for deterministic state in apps with external stores.\n * - For dense tables, combine `narrowHeader` and `rowDivider` for visual clarity.\n *\n * Example (keywords: table, data grid, grid, tabular, datatable)\n * ```ts\n * html`<obc-table\n * .data=${rows}\n * .columns=${columns}\n * selectable\n * striped\n * @selection-change=${onSelectionChange}\n * ></obc-table>`;\n * ```\n *\n * @availableWhen narrowHeader showHeader==true\n * @availableWhen selectedRowIds selectable==true\n * @availableWhen defaultSelectedRowIds selectable==true && selectedRowIds==undefined\n * @availableWhen selectAllAriaLabel selectable==true && showHeader==true\n * @fires {ObcTableRowClickEvent} row-click - Fired when a row is clicked.\n * @fires {ObcTableCellClickEvent} cell-button-click - Fired when a cell button is clicked.\n * @fires {ObcTableCellCheckboxChangeEvent} cell-checkbox-change - Fired when a cell checkbox is changed.\n * @fires {ObcTableCellTagClickEvent} cell-tag-click - Fired when a tag inside a cell is clicked.\n * @fires {ObcTableSelectionChangeEvent} selection-change - Fired when row selection changes.\n * @fires {ObcTableExpandToggleEvent} expand-toggle - Fired when a group row is expanded or collapsed.\n * @beta\n */\n@customElement('obc-table')\nexport class ObcTable extends LitElement {\n @property({type: Array}) data: ObcTableRow[] = [];\n @property({type: Array}) columns: ObcTableColumn[] = [];\n @property({type: Boolean}) rowDivider = false;\n @property({type: Boolean}) narrowHeader = false;\n @property({type: Boolean, attribute: false}) showHeader = true;\n @property({type: Boolean}) striped = false;\n @property({type: Boolean}) selectable = false;\n @property({type: Array}) selectedRowIds?: string[];\n @property({type: Array}) defaultSelectedRowIds?: string[];\n @property({type: String}) selectAllAriaLabel = 'Select all rows';\n\n @state()\n private _sortByColumnIdx: number | undefined = undefined;\n\n @state()\n private _sortDirection: 'asc' | 'desc' = 'asc';\n\n @state()\n private _selectedRowIds: Set<string> = new Set();\n\n private _previousPositions: {top: number; index: string}[] = [];\n\n private get hasHierarchy() {\n return this.data.some(\n (row) =>\n row.parentId !== undefined ||\n (row.level ?? 0) > 0 ||\n row.expandable === true\n );\n }\n\n private sortWithinSiblings(\n rows: ObcTableRow[],\n compare: (a: ObcTableRow, b: ObcTableRow) => number\n ) {\n const ids = new Set(rows.map((row) => row.id));\n const childrenByParent = new Map<string, ObcTableRow[]>();\n const roots: ObcTableRow[] = [];\n for (const row of rows) {\n const parentId = row.parentId;\n if (parentId !== undefined && parentId !== row.id && ids.has(parentId)) {\n const siblings = childrenByParent.get(parentId) ?? [];\n siblings.push(row);\n childrenByParent.set(parentId, siblings);\n } else {\n roots.push(row);\n }\n }\n\n const sorted: ObcTableRow[] = [];\n const visited = new Set<string>();\n const visit = (siblings: ObcTableRow[]) => {\n for (const row of [...siblings].sort(compare)) {\n if (visited.has(row.id)) {\n continue;\n }\n visited.add(row.id);\n sorted.push(row);\n visit(childrenByParent.get(row.id) ?? []);\n }\n };\n visit(roots);\n visit(rows.filter((row) => !visited.has(row.id)));\n return sorted;\n }\n\n get sortedData() {\n if (this._sortByColumnIdx === undefined) {\n return this.data;\n }\n const sortByColumn = this.columns[this._sortByColumnIdx] as\n | ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n | undefined;\n if (sortByColumn === undefined) {\n console.warn('Sort by column is undefined');\n return this.data;\n }\n const sortDirection = this._sortDirection;\n const compare = (a: ObcTableRow, b: ObcTableRow) => {\n const aValue = a[sortByColumn.key];\n const bValue = b[sortByColumn.key];\n if (sortDirection === 'asc') {\n return sortByColumn.compareFunction(\n aValue as ObcTableCellData,\n bValue as ObcTableCellData,\n a,\n b\n );\n } else {\n return sortByColumn.compareFunction(\n bValue as ObcTableCellData,\n aValue as ObcTableCellData,\n b,\n a\n );\n }\n };\n if (this.hasHierarchy) {\n return this.sortWithinSiblings(this.data, compare);\n }\n const sortedData = [...this.data];\n sortedData.sort(compare);\n return sortedData;\n }\n\n private _handleSortClick(\n column: ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n ) {\n if (!column.sortable) {\n return;\n }\n const newSortColumnIdx = this.columns.indexOf(column);\n if (newSortColumnIdx === this._sortByColumnIdx) {\n this._sortDirection = this._sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortByColumnIdx = newSortColumnIdx;\n this._sortDirection = 'asc';\n }\n }\n\n private _handleRowClick(row: ObcTableRow) {\n this.dispatchEvent(\n new CustomEvent('row-click', {detail: {row}}) as ObcTableRowClickEvent\n );\n }\n\n private _handleExpandToggle(row: ObcTableRow, expanded: boolean) {\n if (!row.expandable) {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('expand-toggle', {\n detail: {rowId: row.id, expanded},\n }) as ObcTableExpandToggleEvent\n );\n }\n\n private _renderRowExpander(row: ObcTableRow) {\n if (!this.hasHierarchy) {\n return nothing;\n }\n const level = row.level ?? 0;\n return html`<span\n class=\"row-expander\"\n style=\"--row-level: ${level}\"\n aria-hidden=\"true\"\n >\n ${row.expandable\n ? html`<span\n class=${classMap({chevron: true, expanded: row.expanded ?? false})}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this._handleExpandToggle(row, !(row.expanded ?? false));\n }}\n >\n <obi-chevron-right-google></obi-chevron-right-google>\n </span>`\n : nothing}\n </span>`;\n }\n\n private _focusFirstRow() {\n const firstRow = this.renderRoot.querySelector<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n );\n firstRow?.focus();\n }\n\n private _focusLeftHeaderItem() {\n this._focusHeaderByIndex(0);\n }\n\n private _focusHeaderByIndex(index: number) {\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n const clampedIndex = Math.max(0, Math.min(index, headers.length - 1));\n const headerItem = headers[clampedIndex];\n const innerButton = (headerItem.shadowRoot?.querySelector('button') ??\n null) as HTMLButtonElement | null;\n (innerButton ?? headerItem).focus();\n }\n\n private _handleHeaderKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (key === 'ArrowDown') {\n this._focusFirstRow();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return;\n }\n\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n\n const currentHeaderEl = event.currentTarget as HTMLElement | null;\n const currentIndex = currentHeaderEl\n ? headers.indexOf(currentHeaderEl)\n : -1;\n if (currentIndex === -1) return;\n\n const nextIndex =\n key === 'ArrowRight'\n ? Math.min(currentIndex + 1, headers.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (nextIndex !== currentIndex) {\n this._focusHeaderByIndex(nextIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (\n this.hasHierarchy &&\n (key === 'ArrowRight' || key === 'ArrowLeft') &&\n this._handleRowExpandKey(event, key)\n ) {\n return;\n }\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'Home' &&\n key !== 'End'\n ) {\n return;\n }\n\n const target = event.currentTarget as HTMLButtonElement | null;\n if (!target) return;\n\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const currentIndex = rows.indexOf(target);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, rows.length - 1);\n break;\n case 'ArrowUp':\n if (currentIndex === 0) {\n this._focusLeftHeaderItem();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = rows.length - 1;\n break;\n }\n\n if (nextIndex !== currentIndex) {\n rows[nextIndex]?.focus();\n event.preventDefault();\n event.stopPropagation();\n } else if (key === 'Home' || key === 'End') {\n // Even if already at boundary, prevent page scroll for Home/End\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowExpandKey(\n event: KeyboardEvent,\n key: 'ArrowRight' | 'ArrowLeft'\n ) {\n const target = event.currentTarget as HTMLButtonElement | null;\n const rowId = target?.dataset.rowId;\n const row = this.sortedData.find((candidate) => candidate.id === rowId);\n if (!row) return false;\n\n const expanded = row.expanded ?? false;\n if (key === 'ArrowRight' && row.expandable && !expanded) {\n this._handleExpandToggle(row, true);\n } else if (key === 'ArrowLeft' && row.expandable && expanded) {\n this._handleExpandToggle(row, false);\n } else if (key === 'ArrowLeft') {\n const parent = this.renderRoot.querySelector<HTMLButtonElement>(\n `button[role=\"row\"].grid-row[data-row-id=\"${CSS.escape(\n row.parentId ?? ''\n )}\"]`\n );\n if (!parent) return false;\n parent.focus();\n } else {\n return false;\n }\n\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n\n private _getAllPositions(): {\n top: number;\n height: number;\n index: string;\n element: HTMLButtonElement;\n }[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const firstRow = rows[0];\n if (!firstRow) {\n return [];\n }\n const firstRowRect = firstRow.getBoundingClientRect();\n const firstRowHeight = firstRowRect.height;\n const computedStyle = getComputedStyle(firstRow);\n const computedHeight = parseFloat(computedStyle.height);\n const zoomFactor = computedHeight / firstRowHeight;\n\n return rows.map((row) => {\n const rect = row.getBoundingClientRect();\n return {\n top: rect.top * zoomFactor,\n height: rect.height * zoomFactor,\n index: row.getAttribute('data-row-id') ?? '',\n element: row,\n };\n });\n }\n\n private _animateRowChanges() {\n const previousPositions = this._previousPositions;\n const currentPositions = this._getAllPositions();\n currentPositions.forEach((el) => {\n const previousPosition = previousPositions.find(\n (p) => p.index === el.index\n );\n if (!previousPosition) {\n el.element.style.transform = `translateY(-${el.height}px)`;\n el.element.style.opacity = '0';\n } else {\n el.element.style.transform = `translateY(${previousPosition.top - el.top}px)`;\n }\n el.element.style.transition = 'none';\n // Force a reflow to ensure the animation is applied\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.element.offsetHeight;\n el.element.style.transition =\n 'transform 100ms ease-in-out, opacity 100ms ease-in-out';\n el.element.style.transform = 'translateY(0px)';\n el.element.style.opacity = '1';\n });\n\n this._previousPositions = currentPositions;\n }\n\n private _hasRenderedRows = false;\n\n override willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('defaultSelectedRowIds')) {\n if (\n this.selectedRowIds === undefined &&\n this._selectedRowIds.size === 0\n ) {\n this._selectedRowIds = new Set(this.defaultSelectedRowIds ?? []);\n }\n }\n\n if (changedProperties.has('selectedRowIds')) {\n if (this.selectedRowIds !== undefined) {\n this._selectedRowIds = new Set(this.selectedRowIds);\n }\n }\n\n if (changedProperties.has('data')) {\n const availableIds = new Set(this.data.map((row) => row.id));\n this._selectedRowIds.forEach((id) => {\n if (!availableIds.has(id)) {\n this._selectedRowIds.delete(id);\n }\n });\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._updatePositions();\n } else {\n this.updateComplete.then(() => {\n this._hasRenderedRows = true;\n });\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n if (changedProperties.has('columns')) {\n this._sortByColumnIdx = this.columns.findIndex(\n (col) => 'sortDirection' in col && col.sortDirection !== undefined\n );\n if (this._sortByColumnIdx === -1) {\n this._sortByColumnIdx = undefined;\n this._sortDirection = 'asc';\n } else {\n this._sortDirection =\n (\n this.columns[this._sortByColumnIdx] as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )?.sortDirection ?? 'asc';\n }\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._animateRowChanges();\n }\n }\n }\n\n private _updatePositions() {\n const positions = this._getAllPositions();\n this._previousPositions = positions;\n }\n\n override render() {\n const effectiveColumns = this.selectable\n ? ([\n {\n label: '',\n key: '__selection__',\n } as ObcTableColumn,\n ...this.columns,\n ] as ObcTableColumn[])\n : this.columns;\n const selectionColumnCount = this.selectable\n ? Math.max(0, effectiveColumns.length - 1)\n : effectiveColumns.length;\n return html`\n <div\n class=${classMap({\n 'grid-container': true,\n 'has-selection-column': this.selectable,\n })}\n part=\"grid\"\n style=\"\n --grid-columns: ${effectiveColumns.length};\n --grid-columns-rest: ${selectionColumnCount};\n --selection-column-width: var(--menu-navigation-components-table-item-touch-target-size);\n \"\n role=${this.hasHierarchy ? 'treegrid' : 'table'}\n >\n ${this.showHeader\n ? html`\n <div class=\"grid-header\" role=\"row\">\n ${effectiveColumns.map((col) => {\n const isSelectionColumn =\n this.selectable && col.key === '__selection__';\n const isNotLast =\n effectiveColumns.indexOf(col) !==\n effectiveColumns.length - 1;\n const icon = col.renderHeaderIcon\n ? html`<span slot=\"leading-icon\"\n >${col.renderHeaderIcon()}</span\n >`\n : nothing;\n\n const columnIndex = this.columns.findIndex(\n (column) => column.key === col.key\n );\n const sorted =\n 'sortable' in col &&\n col.sortable &&\n this._sortByColumnIdx === columnIndex;\n const sortDirection = sorted ? this._sortDirection : 'none';\n const headerType =\n col.headerType ??\n (this.narrowHeader\n ? ObcTableHeaderItemType.Narrow\n : ObcTableHeaderItemType.Regular);\n if ('sortable' in col && col.sortable && !isSelectionColumn) {\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n .sortDirection=${sortDirection}\n .sortable=${true}\n type=${headerType}\n @click=${() =>\n this._handleSortClick(\n col as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )}\n @keydown=${this._handleHeaderKeyDown}\n >${icon}${col.label}</obc-table-header-item\n > `;\n } else {\n if (isSelectionColumn) {\n return html`<div\n role=\"columnheader\"\n class=${classMap({\n 'selection-header': true,\n })}\n tabindex=\"0\"\n @keydown=${this._handleHeaderKeyDown}\n >\n <obc-checkbox\n .status=${this._getSelectionStatus()}\n .disabled=${false}\n aria-label=${this.selectAllAriaLabel}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleAllSelection()}\n ></obc-checkbox>\n </div>`;\n }\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n type=${headerType}\n >${icon}${col.label}</obc-table-header-item\n >`;\n }\n })}\n </div>\n <div class=\"grid-header-divider\"></div>\n `\n : nothing}\n <div\n class=\"grid-body\"\n part=\"body\"\n style=\"grid-template-rows: repeat(${this.sortedData\n .length}, min-content)\"\n >\n ${repeat(\n this.sortedData,\n (row) => row.id,\n (row, rowIndex) => {\n const hasDivider =\n this.rowDivider && this.data.length - 1 !== rowIndex;\n const isStriped = this.striped && rowIndex % 2 === 1;\n const isRowSelected =\n (row.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(row.id));\n const previousRow =\n rowIndex > 0 ? this.sortedData[rowIndex - 1] : undefined;\n const nextRow =\n rowIndex < this.sortedData.length - 1\n ? this.sortedData[rowIndex + 1]\n : undefined;\n const hasSelectedPreviousRow =\n previousRow !== undefined &&\n ((previousRow.selected ?? false) ||\n (this.selectable &&\n this._selectedRowIds.has(previousRow.id)));\n const hasSelectedNextRow =\n nextRow !== undefined &&\n ((nextRow.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(nextRow.id)));\n return html`\n <button\n role=\"row\"\n class=${classMap({\n 'grid-row': true,\n selected: isRowSelected,\n 'selected-with-prev':\n isRowSelected && hasSelectedPreviousRow,\n 'selected-with-next': isRowSelected && hasSelectedNextRow,\n striped: isStriped,\n })}\n @click=${() => this._handleRowClick(row)}\n @keydown=${this._handleRowKeyDown}\n data-row-id=${row.id}\n style=\"grid-row: ${rowIndex + 1}\"\n part=\"row\"\n aria-level=${ifDefined(\n this.hasHierarchy ? (row.level ?? 0) + 1 : undefined\n )}\n aria-expanded=${ifDefined(\n row.expandable ? (row.expanded ?? false) : undefined\n )}\n >\n ${map(effectiveColumns, (col, colIndex) => {\n const expander =\n colIndex === (this.selectable ? 1 : 0)\n ? this._renderRowExpander(row)\n : nothing;\n if (this.selectable && col.key === '__selection__') {\n const checked = this._selectedRowIds.has(row.id);\n return html`<div\n class=\"grid-cell checkbox align-center selection\"\n role=\"cell\"\n >\n <obc-checkbox\n .status=${checked\n ? CheckboxStatus.checked\n : CheckboxStatus.unchecked}\n .disabled=${false}\n aria-label=${`Select row ${row.id}`}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleRowSelection(row.id)}\n ></obc-checkbox>\n </div>`;\n }\n const value = row[col.key];\n if (value === undefined) {\n return html`<div class=\"grid-cell\" role=\"cell\">\n ${expander}\n </div>`;\n }\n if (col.renderCell) {\n return html`<div\n class=\"grid-cell ${col.dividerRight\n ? 'divider-right'\n : ''}\"\n role=\"cell\"\n part=${ifDefined((value as ObcTableCellData).cssPart)}\n >\n ${expander}${col.renderCell(\n value as ObcTableCellData,\n row,\n row.id\n )}\n </div>`;\n } else {\n return this._renderCell(\n value as ObcTableCellData,\n row,\n col,\n expander\n );\n }\n })}\n ${hasDivider\n ? html`<div class=\"grid-row-divider\"></div>`\n : nothing}\n </button>\n `;\n }\n )}\n ${repeat(\n effectiveColumns,\n (col) => col.key,\n (col, colIndex) =>\n col.dividerRight\n ? html`<div\n class=\"grid-column-divider\"\n style=\"grid-column: ${colIndex + 1}; grid-row: 1/${this\n .sortedData.length + 1}\"\n ></div>`\n : nothing\n )}\n </div>\n </div>\n `;\n }\n\n public getAllVisibleRows(): string[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n const bodyRect = this.renderRoot\n .querySelector('.grid-body')\n ?.getBoundingClientRect();\n if (!bodyRect) {\n return [];\n }\n const scrollTop = bodyRect.top;\n const scrollHeight = bodyRect.height;\n const scrollBottom = scrollTop + scrollHeight;\n return rows\n .filter((el) => el.checkVisibility())\n .filter(\n (el) =>\n el.getBoundingClientRect().top >= scrollTop &&\n el.getBoundingClientRect().bottom <= scrollBottom\n )\n .map((row) => row.getAttribute('data-row-id'))\n .filter((id): id is string => id !== null);\n }\n\n private _handleCellButtonClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellClickEvent = new CustomEvent('cell-button-click', {\n detail: {rowId: row.id, columnKey},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellTagClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string,\n tagId: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellTagClickEvent = new CustomEvent('cell-tag-click', {\n detail: {rowId: row.id, columnKey, tagId},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellCheckboxChange(\n event: ObcCheckboxChangeEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellCheckboxChangeEvent = new CustomEvent(\n 'cell-checkbox-change',\n {\n detail: {\n rowId: row.id,\n columnKey,\n status: event.detail.status,\n disabled: event.detail.disabled,\n },\n }\n );\n this.dispatchEvent(e);\n }\n\n private _getSelectableRowIds(): string[] {\n return this.data.map((row) => row.id);\n }\n\n private _getSelectionStatus(): CheckboxStatus {\n const rowIds = this._getSelectableRowIds();\n if (rowIds.length === 0) return CheckboxStatus.unchecked;\n const selectedCount = rowIds.filter((id) =>\n this._selectedRowIds.has(id)\n ).length;\n if (selectedCount === 0) return CheckboxStatus.unchecked;\n if (selectedCount === rowIds.length) return CheckboxStatus.checked;\n return CheckboxStatus.mixed;\n }\n\n private _emitSelectionChange(\n selectedRowIds: string[],\n source: 'row' | 'header'\n ) {\n const selectedRows = this.data.filter((row) =>\n selectedRowIds.includes(row.id)\n );\n const e: ObcTableSelectionChangeEvent = new CustomEvent(\n 'selection-change',\n {\n detail: {selectedRowIds, selectedRows, source},\n }\n );\n this.dispatchEvent(e);\n }\n\n private _applySelectionChange(\n nextSelection: Set<string>,\n source: 'row' | 'header'\n ) {\n const selectedRowIds = Array.from(nextSelection);\n this._emitSelectionChange(selectedRowIds, source);\n if (this.selectedRowIds === undefined) {\n this._selectedRowIds = nextSelection;\n this.requestUpdate();\n }\n }\n\n private _toggleRowSelection(rowId: string) {\n const nextSelection = new Set(this._selectedRowIds);\n if (nextSelection.has(rowId)) {\n nextSelection.delete(rowId);\n } else {\n nextSelection.add(rowId);\n }\n this._applySelectionChange(nextSelection, 'row');\n }\n\n private _toggleAllSelection() {\n const rowIds = this._getSelectableRowIds();\n const status = this._getSelectionStatus();\n const nextSelection =\n status === CheckboxStatus.checked ? new Set<string>() : new Set(rowIds);\n this._applySelectionChange(nextSelection, 'header');\n }\n\n private _renderCell(\n value: ObcTableCellData,\n row: ObcTableRow,\n column: ObcTableColumn<ObcTableCellData, ObcTableRow>,\n expander: HTMLTemplateResult | typeof nothing = nothing\n ) {\n if (value.type === ObcTableCellType.Regular) {\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n regular: true,\n neutral: value.neutral ?? false,\n 'large-icon': value.largeIcon ?? false,\n 'no-wrap': value.noWrap ?? false,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n vertical: value.vertical ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}${value.icon3\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon3'))}\n >${value.icon3}</span\n >`\n : nothing}\n ${value.icon2\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon2'))}\n >${value.icon2}</span\n >`\n : nothing}\n ${value.icon\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.title\n ? html`<span class=\"title\" part=${ifDefined(cssPart(value, 'title'))}\n >${value.title}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.Button) {\n return html`<div\n class=\"grid-cell button ${column.dividerRight ? 'divider-right' : ''}\"\n role=\"cell\"\n >\n ${expander}\n <obc-button\n variant=\"normal\"\n fullWidth\n .disabled=${value.disabled ?? false}\n ?showLeadingIcon=${value.icon !== undefined}\n part=${ifDefined(cssPart(value, 'button'))}\n @click=${(event: MouseEvent) =>\n this._handleCellButtonClick(event, row, column.key)}\n >\n ${value.icon\n ? html`<span\n slot=\"leading-icon\"\n part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </obc-button>\n </div>`;\n } else if (value.type === ObcTableCellType.Checkbox) {\n const checkboxLabel = value.label ?? value.text ?? '';\n const ariaLabel =\n checkboxLabel.trim() || column.label?.trim() || 'Checkbox';\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n checkbox: true,\n [`align-${value.align ?? 'center'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}\n <obc-checkbox\n .status=${value.status ?? CheckboxStatus.unchecked}\n .disabled=${value.disabled ?? false}\n aria-describedby=${ifDefined(value.ariaDescribedBy)}\n aria-label=${ariaLabel}\n part=${ifDefined(cssPart(value, 'checkbox'))}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${(event: ObcCheckboxChangeEvent) =>\n this._handleCellCheckboxChange(event, row, column.key)}\n ></obc-checkbox>\n </div>`;\n } else if (value.type === ObcTableCellType.Tag) {\n const tags: ObcTableTagData[] = value.tags ??\n (value.tag ? [value.tag] : undefined) ?? [\n {\n id: value.tagId ?? 'tag',\n label: value.label ?? value.text ?? 'Label',\n color: value.color,\n hasIcon: value.hasIcon,\n icon: value.icon,\n },\n ];\n const wrap = value.wrap ?? value.tags !== undefined;\n const defaultMaxTags = value.tags ? 2 : undefined;\n const maxTags =\n (value.maxTags ?? defaultMaxTags) !== undefined\n ? Math.max(0, Math.floor(value.maxTags ?? defaultMaxTags ?? 0))\n : undefined;\n const visibleTags = maxTags !== undefined ? tags.slice(0, maxTags) : tags;\n const overflowCount =\n maxTags !== undefined ? Math.max(0, tags.length - maxTags) : 0;\n const overflowLabel =\n value.overflowLabel ?? `+${overflowCount.toString()}`;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n tags: tags.length > 1,\n wrap,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}${visibleTags.map((tag) => {\n const hasIcon = tag.hasIcon ?? tag.icon !== undefined;\n return html`<obc-tag\n .label=${tag.label}\n color=${tag.color ?? TagColor.gray}\n ?hasIcon=${hasIcon}\n part=${ifDefined(\n [cssPart(value, 'tag'), tag.cssPart].filter(Boolean).join(' ') ||\n undefined\n )}\n @click=${(event: MouseEvent) =>\n this._handleCellTagClick(event, row, column.key, tag.id)}\n >\n ${hasIcon && tag.icon ? tag.icon : nothing}\n </obc-tag>`;\n })}\n ${overflowCount > 0\n ? html`<span\n class=\"tag-overflow\"\n part=${ifDefined(cssPart(value, 'tag-overflow'))}\n >${overflowLabel}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.HorizontalBar) {\n const hasBar = value.hasBar ?? true;\n const hasScale = value.hasScale ?? false;\n const showLabels = !(value.hideLabels ?? true);\n const fixedAspectRatio = value.fixedAspectRatio ?? true;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n 'horizontal-bar': true,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}\n <obc-bar-horizontal\n .minValue=${value.minValue ?? 0}\n .maxValue=${value.maxValue ?? 100}\n .value=${value.value}\n .setpoint=${value.setpoint}\n .hasBar=${hasBar}\n .hasScale=${hasScale}\n .showLabels=${showLabels}\n .priority=${value.priority ?? Priority.regular}\n .fillMode=${value.fillMode ?? FillMode.fill}\n .fillMin=${value.fillMin}\n .fillMax=${value.fillMax}\n .barThickness=${value.barThickness ?? 24}\n .scaleType=${value.scaleType ?? ScaleType.regular}\n .frameStyle=${value.frameStyle ?? FrameStyle.regular}\n .side=${value.side ?? ExternalScaleSide.bottom}\n .state=${value.state ?? InstrumentState.active}\n .fixedAspectRatio=${fixedAspectRatio}\n .scaleReferenceSize=${value.scaleReferenceSize ?? 384}\n part=${ifDefined(cssPart(value, 'bar'))}\n ></obc-bar-horizontal>\n </div>`;\n } else {\n return nothing;\n }\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-table': ObcTable;\n }\n}\n"],"names":["ObcTableCellType"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../../src/components/top-bar/top-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAIhD,OAAO,+BAA+B,CAAC;AACvC,OAAO,mBAAmB,CAAC;AAC3B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,0BAA0B,CAAC;AAClC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,uCAAuC,CAAC;AAC/C,OAAO,wCAAwC,CAAC;AAChD,OAAO,2CAA2C,CAAC;AACnD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0CAA0C,CAAC;AAClD,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAEL,cAAc,EACf,MAAM,6BAA6B,CAAC;AAGrC,oBAAY,uBAAuB;IACjC,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6HG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC;;;;OAIG;IACuB,QAAQ,SAAS;IAE3C;;;;;OAKG;IACuB,QAAQ,SAAU;IAElB,cAAc,0BAAgC;IAExE;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,sBAAsB,UAAS;IAE/B;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,uBAAuB,UAAS;IAEhC;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,kBAAkB,UAAS;IAE3B;;;;OAIG;IACwB,IAAI,UAAS;IAExC;;;;;OAKG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IAEH,iBAAiB,UAAS;IAE1B;;;;OAIG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IACwB,SAAS,UAAS;IAE7C;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;OAIG;IACwB,WAAW,UAAS;IAE/C;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;OAIG;IAEH,qBAAqB,SAAO;IAE5B;;;;OAIG;IAEH,yBAAyB,SAAO;IAEhC;;;;OAIG;IAEH,oBAAoB,SAAO;IAE3B;;;;OAIG;IAEH,sBAAsB,SAAO;IAE7B;;;;OAIG;IAEH,mBAAmB,SAAO;IAE1B;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;;OAKG;IAEH,eAAe,EAAE,cAAc,EAAE,CAAM;IAEvC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,eAAe;IAad,MAAM;IAiLf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../../src/components/top-bar/top-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD,OAAO,+BAA+B,CAAC;AACvC,OAAO,mBAAmB,CAAC;AAC3B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,0BAA0B,CAAC;AAClC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,uCAAuC,CAAC;AAC/C,OAAO,wCAAwC,CAAC;AAChD,OAAO,2CAA2C,CAAC;AACnD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0CAA0C,CAAC;AAClD,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAEL,cAAc,EACf,MAAM,6BAA6B,CAAC;AAGrC,oBAAY,uBAAuB;IACjC,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6HG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC;;;;OAIG;IACuB,QAAQ,SAAS;IAE3C;;;;;OAKG;IACuB,QAAQ,SAAU;IAElB,cAAc,0BAAgC;IAExE;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,sBAAsB,UAAS;IAE/B;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,uBAAuB,UAAS;IAEhC;;;;;OAKG;IAEH,mBAAmB,UAAS;IAE5B;;;;;OAKG;IAEH,kBAAkB,UAAS;IAE3B;;;;OAIG;IACwB,IAAI,UAAS;IAExC;;;;;OAKG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IAEH,iBAAiB,UAAS;IAE1B;;;;OAIG;IACwB,cAAc,UAAS;IAElD;;;;OAIG;IACwB,SAAS,UAAS;IAE7C;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;OAIG;IACwB,WAAW,UAAS;IAE/C;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;OAIG;IAEH,qBAAqB,SAAO;IAE5B;;;;OAIG;IAEH,yBAAyB,SAAO;IAEhC;;;;OAIG;IAEH,oBAAoB,SAAO;IAE3B;;;;OAIG;IAEH,sBAAsB,SAAO;IAE7B;;;;OAIG;IAEH,mBAAmB,SAAO;IAE1B;;;;OAIG;IACwB,QAAQ,UAAS;IAE5C;;;;;OAKG;IAEH,eAAe,EAAE,cAAc,EAAE,CAAM;IAEvC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,eAAe;IAad,MAAM;IA0Lf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { unsafeCSS, LitElement, html } from "lit";
2
2
  import { property } from "lit/decorators.js";
3
3
  import { classMap } from "lit/directives/class-map.js";
4
+ import { msg } from "@lit/localize";
4
5
  import compentStyle from "./top-bar.css.js";
5
6
  import "../icon-button/icon-button.js";
6
7
  import "../clock/clock.js";
@@ -119,6 +120,7 @@ let ObcTopBar = class extends LitElement {
119
120
  html`<div class="menu-button">
120
121
  <obc-icon-button
121
122
  variant="flat"
123
+ aria-label=${msg("Close")}
122
124
  @pointerdown=${() => this.leftButtonDown(new CustomEvent("close"))}
123
125
  @pointerup=${() => this.leftButtonUp()}
124
126
  @pointerleave=${() => this.leftButtonLeave()}
@@ -130,6 +132,7 @@ let ObcTopBar = class extends LitElement {
130
132
  leftGroup.push(
131
133
  html`<obc-icon-button
132
134
  variant="flat"
135
+ aria-label=${msg("Back")}
133
136
  @click=${() => this.dispatchEvent(new CustomEvent("back"))}
134
137
  >
135
138
  <obi-arrow-left-google></obi-arrow-left-google>
@@ -152,6 +155,7 @@ let ObcTopBar = class extends LitElement {
152
155
  html`<div class="menu-button ${this.wideMenuButton ? "wide" : null}">
153
156
  <obc-icon-button
154
157
  variant="flat"
158
+ aria-label=${this.menuButtonIcon === "menu" ? msg("Menu") : msg("Home")}
155
159
  @pointerdown=${() => this.leftButtonDown(new CustomEvent("menu-button-clicked"))}
156
160
  @pointerup=${() => this.leftButtonUp()}
157
161
  @pointerleave=${() => this.leftButtonLeave()}
@@ -236,6 +240,7 @@ let ObcTopBar = class extends LitElement {
236
240
  class="dimming-button"
237
241
  part="dimming-button"
238
242
  variant="flat"
243
+ aria-label=${msg("Dimming")}
239
244
  @click=${this.dimmingButtonClicked}
240
245
  ?activated=${this.dimmingButtonActivated}
241
246
  >
@@ -245,6 +250,7 @@ let ObcTopBar = class extends LitElement {
245
250
  class="user-button"
246
251
  variant="flat"
247
252
  part="user-button"
253
+ aria-label=${msg("User")}
248
254
  @click=${this.userButtonClicked}
249
255
  ?activated=${this.userButtonActivated}
250
256
  ?disabled=${this.userButtonDisabled}
@@ -255,6 +261,7 @@ let ObcTopBar = class extends LitElement {
255
261
  class="apps-button"
256
262
  variant="flat"
257
263
  part="apps-button"
264
+ aria-label=${msg("Apps")}
258
265
  @click=${this.appsButtonClicked}
259
266
  ?activated=${this.appsButtonActivated}
260
267
  >
@@ -265,6 +272,7 @@ let ObcTopBar = class extends LitElement {
265
272
  class="left-more-button"
266
273
  part="left-more-button"
267
274
  variant="flat"
275
+ aria-label=${msg("More")}
268
276
  @click=${this.leftMoreButtonClicked}
269
277
  ?activated=${this.leftMoreButtonActivated}
270
278
  >
@@ -1 +1 @@
1
- {"version":3,"file":"top-bar.js","sources":["../../../src/components/top-bar/top-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport compentStyle from './top-bar.css?inline';\nimport '../icon-button/icon-button.js';\nimport '../clock/clock.js';\nimport '../divider/divider.js';\nimport '../breadcrumb/breadcrumb.js';\nimport '../../icons/icon-menu-iec.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-close-google.js';\nimport '../../icons/icon-arrow-left-google.js';\nimport '../../icons/icon-arrow-right-google.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-applications.js';\nimport '../../icons/icon-more-vertical-google.js';\nimport '../../icons/icon-user.js';\nimport {\n BreadcrumbClickEvent,\n BreadcrumbItem,\n} from '../breadcrumb/breadcrumb.js';\nimport {customElement} from '../../decorator.js';\n\nexport enum ObcTopBarMenuButtonIcon {\n Menu = 'menu',\n Home = 'home',\n}\n\n/**\n * `<obc-top-bar>` – A responsive top navigation bar component for application layouts.\n *\n * Provides a flexible, highly configurable top bar for application interfaces, supporting navigation, context display, quick actions, and status indicators. The top bar adapts to screen size and can show or hide elements such as menu, app icon, breadcrumbs, user/profile, clock, and alert notifications.\n *\n * Appears at the top of the UI, organizing primary navigation and contextual actions in a single, persistent region. Designed for use as the main app bar or header in multi-pane or dashboard-style layouts.\n *\n * ## Features\n * - **Configurable Sections:** Supports left and right-aligned groups for navigation, context, and actions.\n * - **Menu Button:** Optional menu button for opening navigation drawers or sidebars; can be styled as wide or regular.\n * - **App Icon Slot:** Customizable slot for displaying an application or brand icon.\n * - **App Title & Page Name:** Displays the current application and page context.\n * - **Breadcrumbs:** Optional breadcrumb navigation for hierarchical context (in settings mode).\n * - **Command Button Slot:** Slot for inserting a primary command/action button.\n * - **Alert/Notification Area:** Slot for alert indicators, notification badges, or custom alert components.\n * - **Dimming Button:** Optional button for toggling display modes (e.g., day/night).\n * - **User/Profile Button:** Optional user icon for profile/account actions.\n * - **Apps Button:** Optional button for accessing additional applications or modules.\n * - **Clock & Date:** Optional digital clock and date display, responsive to screen size.\n * - **Responsive Layout:** Multiple breakpoint properties to control visibility and layout of elements based on viewport width.\n * - **Settings Mode:** Special mode with close, back, and forward navigation, breadcrumbs, and app title.\n * - **Tall Variant:** Optional increased height for touch or accessibility needs.\n * - **Inactive State:** Disables interactive elements and visually de-emphasizes the bar.\n *\n * ## Variants\n * - **Regular:** Standard top bar with menu, app icon, title, page name, and action slots.\n * - **Settings:** Shows close, back, forward buttons, breadcrumbs, and app title for configuration or settings screens.\n * - **Inactive:** Visually muted and disables interaction (e.g., when the app is locked or in a modal state).\n * - **Tall:** Increases the height of the bar for improved touch targets.\n *\n * ## Usage Guidelines\n * Use `<obc-top-bar>` as the persistent header for your application, providing navigation, context, and quick access to key actions or status. Configure which elements appear via boolean properties and slots. Adjust breakpoint properties to control responsive behavior for each section.\n *\n * - Place navigation, branding, and context (title, breadcrumbs) on the left; actions, alerts, and status (clock, user, apps) on the right.\n * - Use the `settings` property for configuration or setup screens to enable close/back/forward navigation and breadcrumbs.\n * - Use the `inactive` property to visually disable the bar and its actions when the app is not interactive.\n * - Insert custom icons or buttons using the `app-icon` and `command-button` slots.\n * - Use the `alerts` slot to display alert indicators, notification badges, or custom alert components.\n *\n * **TODO(designer):** Clarify recommended combinations of visible elements for different app contexts (e.g., when to show both user and apps buttons, or best practices for alert placement).\n *\n * ## Slots\n *\n * | Slot Name | Renders When... | Purpose |\n * |------------------|---------------------------------|----------------------------------------------------------------|\n * | `app-icon` | `showAppIcon` is true | Custom icon representing the application or brand. |\n * | `command-button` | Always (if provided) | Primary command or action button for the current context. |\n * | `alerts` | Always (if provided) | Area for alert indicators, notification badges, or alert items.|\n * | `clock` | Always (if provided) | Clock component for displaying the current time. |\n *\n * ## Properties and Attributes\n * - `appTitle` (string): Sets the main application title (default: \"App\").\n * - `pageName` (string): Sets the current page or section name (default: \"Page\").\n * - `menuButtonActivated` (boolean): Highlights the menu button as active.\n * - `dimmingButtonActivated` (boolean): Highlights the dimming button as active.\n * - `appsButtonActivated` (boolean): Highlights the apps button as active.\n * - `leftMoreButtonActivated` (boolean): Highlights the left more button as active.\n * - `userButtonActivated` (boolean): Highlights the user button as active.\n * - `tall` (boolean): Increases the bar height for larger touch targets.\n * - `wideMenuButton` (boolean): Expands the menu button for wide-rail layouts.\n * - `showAppsButton` (boolean): Shows/hides the apps button.\n * - `showDimmingButton` (boolean): Shows/hides the dimming (day/night) button.\n * - `showUserButton` (boolean): Shows/hides the user/profile button.\n * - `showClock` (boolean): Shows/hides the clock.\n * - `showDate` (boolean): Shows/hides the date in the clock.\n * - `showAppIcon` (boolean): Shows/hides the app icon slot.\n * - `inactive` (boolean): Disables interaction and visually de-emphasizes the bar.\n * - `settings` (boolean): Enables settings mode (shows close, back, forward, breadcrumbs).\n * - `breadcrumbItems` (BreadcrumbItem[]): Array of breadcrumb items for navigation.\n * - Breakpoint properties (`appButtonBreakpointPx`, `dimmingButtonBreakpointPx`, `appTitleBreakpointPx`, `userButtonBreakpointPx`, `appIconBreakpointPx`): Control responsive visibility of each section.\n *\n * ## Events\n * - `menu-button-clicked` – Fired when the menu button is clicked.\n * - `dimming-button-clicked` – Fired when the dimming (day/night) button is clicked.\n * - `apps-button-clicked` – Fired when the apps button is clicked.\n * - `left-more-button-clicked` – Fired when the left more button is clicked.\n * - `user-button-clicked` – Fired when the user/profile button is clicked.\n * - `close` – Fired in settings mode when the close button is clicked.\n * - `back` – Fired in settings mode when the back button is clicked.\n * - `forward` – Fired in settings mode when the forward button is clicked.\n * - `emergency-brightness-start` – Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.\n * - `emergency-brightness-stop` – Fired when the menu button is released.\n *\n * ## Best Practices and Constraints\n * - Only show interactive elements relevant to the current context to avoid clutter.\n * - Use the `alerts` slot for transient or critical notifications; persistent alerts may require a different component.\n * - For accessibility, ensure that all interactive elements have appropriate labels and focus handling.\n * - Adjust breakpoint properties to optimize the layout for different device sizes.\n * - In settings mode, use breadcrumbs to provide clear navigation context.\n *\n * ## Example\n *\n * ```html\n * <obc-top-bar\n * appTitle=\"My App\"\n * pageName=\"Dashboard\"\n * showAppsButton\n * showDimmingButton\n * showClock\n * showUserButton\n * showAppIcon\n * >\n * <obi-placeholder slot=\"app-icon\"></obi-placeholder>\n * <obc-command-button slot=\"command-button\"></obc-command-button>\n * <obc-topbar-message-item slot=\"alerts\"></obc-topbar-message-item>\n * <obc-clock slot=\"clock\"></obc-clock>\n * </obc-top-bar>\n * ```\n *\n * @availableWhen menuButtonIcon settings==false && inactive==false\n * @slot app-icon - Custom icon representing the application or brand (shown when `showAppIcon` is true)\n * @slot command-button - Primary command/action button for the current context\n * @slot alerts - Area for alert indicators, notification badges, or alert items\n * @slot clock - Clock component for displaying the current time (shown when `showClock` is true)\n * @fires menu-button-clicked - Fired when the menu button is clicked\n * @fires dimming-button-clicked - Fired when the dimming (day/night) button is clicked\n * @fires apps-button-clicked - Fired when the apps button is clicked\n * @fires left-more-button-clicked - Fired when the left more button is clicked\n * @fires user-button-clicked - Fired when the user/profile button is clicked\n * @fires close - Fired in settings mode when the close button is clicked\n * @fires back - Fired in settings mode when the back button is clicked\n * @fires emergency-brightness-start - Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.\n * @fires emergency-brightness-stop - Fired when the menu button is released.\n * @fires {BreadcrumbClickEvent} breadcrumb-click - Fired when a breadcrumb item is clicked.\n * @stable\n */\n@customElement('obc-top-bar')\nexport class ObcTopBar extends LitElement {\n /**\n * Sets the main application title displayed in the top bar.\n * @type {string}\n * @default \"App\"\n */\n @property({type: String}) appTitle = 'App';\n\n /**\n * Sets the current page or section name displayed in the top bar.\n * @type {string}\n * @default \"Page\"\n * @availableWhen settings==false\n */\n @property({type: String}) pageName = 'Page';\n\n @property({type: String}) menuButtonIcon = ObcTopBarMenuButtonIcon.Menu;\n\n /**\n * Highlights the menu button as active.\n * @type {boolean}\n * @default false\n * @availableWhen settings==false && inactive==false\n */\n @property({type: Boolean})\n menuButtonActivated = false;\n\n /**\n * Highlights the dimming (day/night) button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showDimmingButton==true && inactive==false\n */\n @property({type: Boolean})\n dimmingButtonActivated = false;\n\n /**\n * Highlights the apps button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showAppsButton==true && inactive==false\n */\n @property({type: Boolean})\n appsButtonActivated = false;\n\n /**\n * Highlights the left more button as active.\n * @type {boolean}\n * @default false\n * @availableWhen inactive==false\n */\n @property({type: Boolean})\n leftMoreButtonActivated = false;\n\n /**\n * Highlights the user/profile button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showUserButton==true && inactive==false\n */\n @property({type: Boolean})\n userButtonActivated = false;\n\n /**\n * Disables the user/profile button.\n * @type {boolean}\n * @default false\n * @availableWhen showUserButton==true && inactive==false\n */\n @property({type: Boolean})\n userButtonDisabled = false;\n\n /**\n * Increases the height of the top bar for larger touch targets.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) tall = false;\n\n /**\n * Expands the menu button for wide-rail layouts.\n * @type {boolean}\n * @default false\n * @availableWhen settings==false && inactive==false\n */\n @property({type: Boolean}) wideMenuButton = false;\n\n /**\n * Shows or hides the apps button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showAppsButton = false;\n\n /**\n * Shows or hides the dimming (day/night) button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean})\n showDimmingButton = false;\n\n /**\n * Shows or hides the user/profile button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showUserButton = false;\n\n /**\n * Shows or hides the clock.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showClock = false;\n\n /**\n * Shows or hides the date in the clock display.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showDate = false;\n\n /**\n * Shows or hides the app icon slot.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showAppIcon = false;\n\n /**\n * Disables interaction and visually de-emphasizes the bar.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) inactive = false;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the apps button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the dimming button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n dimmingButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the app title.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appTitleBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the user button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n userButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the app icon.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appIconBreakpointPx = 500;\n\n /**\n * Enables settings mode, displaying close, back buttons, breadcrumbs, and app title.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) settings = false;\n\n /**\n * Array of breadcrumb items for navigation (used in settings mode).\n * @type {BreadcrumbItem[]}\n * @default []\n * @availableWhen settings==true\n */\n @property({type: Array})\n breadcrumbItems: BreadcrumbItem[] = [];\n\n private dimmingButtonClicked() {\n /**\n * Fired when the dimming (day/night) button is clicked.\n * @event dimming-button-clicked\n */\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'));\n }\n\n private appsButtonClicked() {\n /**\n * Fired when the apps button is clicked.\n * @event apps-button-clicked\n */\n this.dispatchEvent(new CustomEvent('apps-button-clicked'));\n }\n\n private leftMoreButtonClicked() {\n /**\n * Fired when the left more button is clicked.\n * @event left-more-button-clicked\n */\n this.dispatchEvent(new CustomEvent('left-more-button-clicked'));\n }\n\n private userButtonClicked() {\n /**\n * Fired when the user/profile button is clicked.\n * @event user-button-clicked\n */\n this.dispatchEvent(new CustomEvent('user-button-clicked'));\n }\n\n private leftButtonEvent: null | CustomEvent = null;\n private leftButtonTimeout: null | NodeJS.Timeout = null;\n private isLeftButtonDown = false;\n private isEmergencyBrightness = false;\n\n private leftButtonDown(event: CustomEvent) {\n this.leftButtonEvent = event;\n this.isLeftButtonDown = true;\n this.leftButtonTimeout = setTimeout(() => {\n this.leftButtonEvent = null;\n this.dispatchEvent(new CustomEvent('emergency-brightness-start'));\n this.isEmergencyBrightness = true;\n }, 500);\n }\n\n private leftButtonUp() {\n if (this.leftButtonEvent) {\n this.dispatchEvent(this.leftButtonEvent);\n this.leftButtonEvent = null;\n }\n if (this.leftButtonTimeout) {\n clearTimeout(this.leftButtonTimeout);\n this.leftButtonTimeout = null;\n }\n if (this.isEmergencyBrightness) {\n this.dispatchEvent(new CustomEvent('emergency-brightness-stop'));\n this.isEmergencyBrightness = false;\n }\n this.isLeftButtonDown = false;\n }\n\n private leftButtonLeave() {\n if (!this.isLeftButtonDown) return;\n if (this.leftButtonTimeout) {\n clearInterval(this.leftButtonTimeout);\n this.leftButtonTimeout = null;\n }\n if (this.isEmergencyBrightness) {\n this.dispatchEvent(new CustomEvent('emergency-brightness-stop'));\n this.isEmergencyBrightness = false;\n }\n this.isLeftButtonDown = false;\n }\n\n override render() {\n const leftGroup = [];\n if (this.settings) {\n leftGroup.push(\n html`<div class=\"menu-button\">\n <obc-icon-button\n variant=\"flat\"\n @pointerdown=${() => this.leftButtonDown(new CustomEvent('close'))}\n @pointerup=${() => this.leftButtonUp()}\n @pointerleave=${() => this.leftButtonLeave()}\n >\n <obi-close-google></obi-close-google>\n </obc-icon-button>\n </div>`\n );\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n @click=${() => this.dispatchEvent(new CustomEvent('back'))}\n >\n <obi-arrow-left-google></obi-arrow-left-google>\n </obc-icon-button>`\n );\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(\n html`<obc-breadcrumb\n .items=${this.breadcrumbItems}\n @breadcrumb-click=${(e: BreadcrumbClickEvent) =>\n this.dispatchEvent(\n new CustomEvent('breadcrumb-click', {\n detail: e.detail,\n }) as BreadcrumbClickEvent\n )}\n ></obc-breadcrumb>`\n );\n } else {\n if (!this.inactive) {\n leftGroup.push(\n html`<div class=\"menu-button ${this.wideMenuButton ? 'wide' : null}\">\n <obc-icon-button\n variant=\"flat\"\n @pointerdown=${() =>\n this.leftButtonDown(new CustomEvent('menu-button-clicked'))}\n @pointerup=${() => this.leftButtonUp()}\n @pointerleave=${() => this.leftButtonLeave()}\n ?activated=${this.menuButtonActivated}\n >\n ${this.menuButtonIcon === ObcTopBarMenuButtonIcon.Menu\n ? html`<obi-menu-iec></obi-menu-iec>`\n : html`<obi-home></obi-home>`}\n </obc-icon-button>\n </div>`\n );\n }\n if (this.showAppIcon) {\n leftGroup.push(\n html`<div class=\"app-icon\"><slot name=\"app-icon\"></slot></div>`\n );\n }\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(html`<div class=\"page-name\">${this.pageName}</div>`);\n leftGroup.push(html`<slot name=\"command-button\"></slot>`);\n }\n\n const breakpointMoreButton = Math.max(\n this.appButtonBreakpointPx,\n this.dimmingButtonBreakpointPx\n );\n\n return html`\n <style>\n @media (max-width: ${breakpointMoreButton}px) {\n .left-more-button {\n display: revert !important;\n }\n\n .group.left > * {\n margin-right: 4px;\n margin-left: 4px;\n }\n }\n\n @media (max-width: ${this.appButtonBreakpointPx}px) {\n .apps-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.dimmingButtonBreakpointPx}px) {\n .dimming-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appTitleBreakpointPx}px) {\n .title {\n display: none !important; /* the stylesheet's display wins over this inline rule otherwise */\n }\n }\n\n @media (max-width: ${this.userButtonBreakpointPx}px) {\n .user-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appIconBreakpointPx}px) {\n .app-icon {\n display: none;\n }\n }\n </style>\n <nav\n class=${classMap({\n wrapper: true,\n inactive: this.inactive,\n settings: this.settings,\n tall: this.tall,\n })}\n role=\"menubar\"\n >\n <div class=\"left group\">${leftGroup}</div>\n <div class=\"right group\">\n <div class=\"alert-container\">\n <slot name=\"alerts\"></slot>\n </div>\n ${this.showDimmingButton && !this.inactive\n ? html`<obc-icon-button\n class=\"dimming-button\"\n part=\"dimming-button\"\n variant=\"flat\"\n @click=${this.dimmingButtonClicked}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton && !this.inactive\n ? html`<obc-icon-button\n class=\"user-button\"\n variant=\"flat\"\n part=\"user-button\"\n @click=${this.userButtonClicked}\n ?activated=${this.userButtonActivated}\n ?disabled=${this.userButtonDisabled}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showAppsButton && !this.inactive\n ? html`<obc-icon-button\n class=\"apps-button\"\n variant=\"flat\"\n part=\"apps-button\"\n @click=${this.appsButtonClicked}\n ?activated=${this.appsButtonActivated}\n >\n <obi-applications></obi-applications>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n ${!this.inactive\n ? html`<obc-icon-button\n class=\"left-more-button\"\n part=\"left-more-button\"\n variant=\"flat\"\n @click=${this.leftMoreButtonClicked}\n ?activated=${this.leftMoreButtonActivated}\n >\n <obi-more-vertical-google></obi-more-vertical-google>\n </obc-icon-button>`\n : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-top-bar': ObcTopBar;\n }\n}\n"],"names":["ObcTopBarMenuButtonIcon"],"mappings":"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"}
1
+ {"version":3,"file":"top-bar.js","sources":["../../../src/components/top-bar/top-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {msg} from '@lit/localize';\nimport compentStyle from './top-bar.css?inline';\nimport '../icon-button/icon-button.js';\nimport '../clock/clock.js';\nimport '../divider/divider.js';\nimport '../breadcrumb/breadcrumb.js';\nimport '../../icons/icon-menu-iec.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-close-google.js';\nimport '../../icons/icon-arrow-left-google.js';\nimport '../../icons/icon-arrow-right-google.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-applications.js';\nimport '../../icons/icon-more-vertical-google.js';\nimport '../../icons/icon-user.js';\nimport {\n BreadcrumbClickEvent,\n BreadcrumbItem,\n} from '../breadcrumb/breadcrumb.js';\nimport {customElement} from '../../decorator.js';\n\nexport enum ObcTopBarMenuButtonIcon {\n Menu = 'menu',\n Home = 'home',\n}\n\n/**\n * `<obc-top-bar>` – A responsive top navigation bar component for application layouts.\n *\n * Provides a flexible, highly configurable top bar for application interfaces, supporting navigation, context display, quick actions, and status indicators. The top bar adapts to screen size and can show or hide elements such as menu, app icon, breadcrumbs, user/profile, clock, and alert notifications.\n *\n * Appears at the top of the UI, organizing primary navigation and contextual actions in a single, persistent region. Designed for use as the main app bar or header in multi-pane or dashboard-style layouts.\n *\n * ## Features\n * - **Configurable Sections:** Supports left and right-aligned groups for navigation, context, and actions.\n * - **Menu Button:** Optional menu button for opening navigation drawers or sidebars; can be styled as wide or regular.\n * - **App Icon Slot:** Customizable slot for displaying an application or brand icon.\n * - **App Title & Page Name:** Displays the current application and page context.\n * - **Breadcrumbs:** Optional breadcrumb navigation for hierarchical context (in settings mode).\n * - **Command Button Slot:** Slot for inserting a primary command/action button.\n * - **Alert/Notification Area:** Slot for alert indicators, notification badges, or custom alert components.\n * - **Dimming Button:** Optional button for toggling display modes (e.g., day/night).\n * - **User/Profile Button:** Optional user icon for profile/account actions.\n * - **Apps Button:** Optional button for accessing additional applications or modules.\n * - **Clock & Date:** Optional digital clock and date display, responsive to screen size.\n * - **Responsive Layout:** Multiple breakpoint properties to control visibility and layout of elements based on viewport width.\n * - **Settings Mode:** Special mode with close, back, and forward navigation, breadcrumbs, and app title.\n * - **Tall Variant:** Optional increased height for touch or accessibility needs.\n * - **Inactive State:** Disables interactive elements and visually de-emphasizes the bar.\n *\n * ## Variants\n * - **Regular:** Standard top bar with menu, app icon, title, page name, and action slots.\n * - **Settings:** Shows close, back, forward buttons, breadcrumbs, and app title for configuration or settings screens.\n * - **Inactive:** Visually muted and disables interaction (e.g., when the app is locked or in a modal state).\n * - **Tall:** Increases the height of the bar for improved touch targets.\n *\n * ## Usage Guidelines\n * Use `<obc-top-bar>` as the persistent header for your application, providing navigation, context, and quick access to key actions or status. Configure which elements appear via boolean properties and slots. Adjust breakpoint properties to control responsive behavior for each section.\n *\n * - Place navigation, branding, and context (title, breadcrumbs) on the left; actions, alerts, and status (clock, user, apps) on the right.\n * - Use the `settings` property for configuration or setup screens to enable close/back/forward navigation and breadcrumbs.\n * - Use the `inactive` property to visually disable the bar and its actions when the app is not interactive.\n * - Insert custom icons or buttons using the `app-icon` and `command-button` slots.\n * - Use the `alerts` slot to display alert indicators, notification badges, or custom alert components.\n *\n * **TODO(designer):** Clarify recommended combinations of visible elements for different app contexts (e.g., when to show both user and apps buttons, or best practices for alert placement).\n *\n * ## Slots\n *\n * | Slot Name | Renders When... | Purpose |\n * |------------------|---------------------------------|----------------------------------------------------------------|\n * | `app-icon` | `showAppIcon` is true | Custom icon representing the application or brand. |\n * | `command-button` | Always (if provided) | Primary command or action button for the current context. |\n * | `alerts` | Always (if provided) | Area for alert indicators, notification badges, or alert items.|\n * | `clock` | Always (if provided) | Clock component for displaying the current time. |\n *\n * ## Properties and Attributes\n * - `appTitle` (string): Sets the main application title (default: \"App\").\n * - `pageName` (string): Sets the current page or section name (default: \"Page\").\n * - `menuButtonActivated` (boolean): Highlights the menu button as active.\n * - `dimmingButtonActivated` (boolean): Highlights the dimming button as active.\n * - `appsButtonActivated` (boolean): Highlights the apps button as active.\n * - `leftMoreButtonActivated` (boolean): Highlights the left more button as active.\n * - `userButtonActivated` (boolean): Highlights the user button as active.\n * - `tall` (boolean): Increases the bar height for larger touch targets.\n * - `wideMenuButton` (boolean): Expands the menu button for wide-rail layouts.\n * - `showAppsButton` (boolean): Shows/hides the apps button.\n * - `showDimmingButton` (boolean): Shows/hides the dimming (day/night) button.\n * - `showUserButton` (boolean): Shows/hides the user/profile button.\n * - `showClock` (boolean): Shows/hides the clock.\n * - `showDate` (boolean): Shows/hides the date in the clock.\n * - `showAppIcon` (boolean): Shows/hides the app icon slot.\n * - `inactive` (boolean): Disables interaction and visually de-emphasizes the bar.\n * - `settings` (boolean): Enables settings mode (shows close, back, forward, breadcrumbs).\n * - `breadcrumbItems` (BreadcrumbItem[]): Array of breadcrumb items for navigation.\n * - Breakpoint properties (`appButtonBreakpointPx`, `dimmingButtonBreakpointPx`, `appTitleBreakpointPx`, `userButtonBreakpointPx`, `appIconBreakpointPx`): Control responsive visibility of each section.\n *\n * ## Events\n * - `menu-button-clicked` – Fired when the menu button is clicked.\n * - `dimming-button-clicked` – Fired when the dimming (day/night) button is clicked.\n * - `apps-button-clicked` – Fired when the apps button is clicked.\n * - `left-more-button-clicked` – Fired when the left more button is clicked.\n * - `user-button-clicked` – Fired when the user/profile button is clicked.\n * - `close` – Fired in settings mode when the close button is clicked.\n * - `back` – Fired in settings mode when the back button is clicked.\n * - `forward` – Fired in settings mode when the forward button is clicked.\n * - `emergency-brightness-start` – Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.\n * - `emergency-brightness-stop` – Fired when the menu button is released.\n *\n * ## Best Practices and Constraints\n * - Only show interactive elements relevant to the current context to avoid clutter.\n * - Use the `alerts` slot for transient or critical notifications; persistent alerts may require a different component.\n * - For accessibility, ensure that all interactive elements have appropriate labels and focus handling.\n * - Adjust breakpoint properties to optimize the layout for different device sizes.\n * - In settings mode, use breadcrumbs to provide clear navigation context.\n *\n * ## Example\n *\n * ```html\n * <obc-top-bar\n * appTitle=\"My App\"\n * pageName=\"Dashboard\"\n * showAppsButton\n * showDimmingButton\n * showClock\n * showUserButton\n * showAppIcon\n * >\n * <obi-placeholder slot=\"app-icon\"></obi-placeholder>\n * <obc-command-button slot=\"command-button\"></obc-command-button>\n * <obc-topbar-message-item slot=\"alerts\"></obc-topbar-message-item>\n * <obc-clock slot=\"clock\"></obc-clock>\n * </obc-top-bar>\n * ```\n *\n * @availableWhen menuButtonIcon settings==false && inactive==false\n * @slot app-icon - Custom icon representing the application or brand (shown when `showAppIcon` is true)\n * @slot command-button - Primary command/action button for the current context\n * @slot alerts - Area for alert indicators, notification badges, or alert items\n * @slot clock - Clock component for displaying the current time (shown when `showClock` is true)\n * @fires menu-button-clicked - Fired when the menu button is clicked\n * @fires dimming-button-clicked - Fired when the dimming (day/night) button is clicked\n * @fires apps-button-clicked - Fired when the apps button is clicked\n * @fires left-more-button-clicked - Fired when the left more button is clicked\n * @fires user-button-clicked - Fired when the user/profile button is clicked\n * @fires close - Fired in settings mode when the close button is clicked\n * @fires back - Fired in settings mode when the back button is clicked\n * @fires emergency-brightness-start - Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.\n * @fires emergency-brightness-stop - Fired when the menu button is released.\n * @fires {BreadcrumbClickEvent} breadcrumb-click - Fired when a breadcrumb item is clicked.\n * @stable\n */\n@customElement('obc-top-bar')\nexport class ObcTopBar extends LitElement {\n /**\n * Sets the main application title displayed in the top bar.\n * @type {string}\n * @default \"App\"\n */\n @property({type: String}) appTitle = 'App';\n\n /**\n * Sets the current page or section name displayed in the top bar.\n * @type {string}\n * @default \"Page\"\n * @availableWhen settings==false\n */\n @property({type: String}) pageName = 'Page';\n\n @property({type: String}) menuButtonIcon = ObcTopBarMenuButtonIcon.Menu;\n\n /**\n * Highlights the menu button as active.\n * @type {boolean}\n * @default false\n * @availableWhen settings==false && inactive==false\n */\n @property({type: Boolean})\n menuButtonActivated = false;\n\n /**\n * Highlights the dimming (day/night) button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showDimmingButton==true && inactive==false\n */\n @property({type: Boolean})\n dimmingButtonActivated = false;\n\n /**\n * Highlights the apps button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showAppsButton==true && inactive==false\n */\n @property({type: Boolean})\n appsButtonActivated = false;\n\n /**\n * Highlights the left more button as active.\n * @type {boolean}\n * @default false\n * @availableWhen inactive==false\n */\n @property({type: Boolean})\n leftMoreButtonActivated = false;\n\n /**\n * Highlights the user/profile button as active.\n * @type {boolean}\n * @default false\n * @availableWhen showUserButton==true && inactive==false\n */\n @property({type: Boolean})\n userButtonActivated = false;\n\n /**\n * Disables the user/profile button.\n * @type {boolean}\n * @default false\n * @availableWhen showUserButton==true && inactive==false\n */\n @property({type: Boolean})\n userButtonDisabled = false;\n\n /**\n * Increases the height of the top bar for larger touch targets.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) tall = false;\n\n /**\n * Expands the menu button for wide-rail layouts.\n * @type {boolean}\n * @default false\n * @availableWhen settings==false && inactive==false\n */\n @property({type: Boolean}) wideMenuButton = false;\n\n /**\n * Shows or hides the apps button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showAppsButton = false;\n\n /**\n * Shows or hides the dimming (day/night) button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean})\n showDimmingButton = false;\n\n /**\n * Shows or hides the user/profile button.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showUserButton = false;\n\n /**\n * Shows or hides the clock.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showClock = false;\n\n /**\n * Shows or hides the date in the clock display.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showDate = false;\n\n /**\n * Shows or hides the app icon slot.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) showAppIcon = false;\n\n /**\n * Disables interaction and visually de-emphasizes the bar.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) inactive = false;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the apps button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the dimming button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n dimmingButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the app title.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appTitleBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the user button.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n userButtonBreakpointPx = 500;\n\n /**\n * Controls the breakpoint (in px) for showing/hiding the app icon.\n * @type {number}\n * @default 500\n */\n @property({type: Number})\n appIconBreakpointPx = 500;\n\n /**\n * Enables settings mode, displaying close, back buttons, breadcrumbs, and app title.\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean}) settings = false;\n\n /**\n * Array of breadcrumb items for navigation (used in settings mode).\n * @type {BreadcrumbItem[]}\n * @default []\n * @availableWhen settings==true\n */\n @property({type: Array})\n breadcrumbItems: BreadcrumbItem[] = [];\n\n private dimmingButtonClicked() {\n /**\n * Fired when the dimming (day/night) button is clicked.\n * @event dimming-button-clicked\n */\n this.dispatchEvent(new CustomEvent('dimming-button-clicked'));\n }\n\n private appsButtonClicked() {\n /**\n * Fired when the apps button is clicked.\n * @event apps-button-clicked\n */\n this.dispatchEvent(new CustomEvent('apps-button-clicked'));\n }\n\n private leftMoreButtonClicked() {\n /**\n * Fired when the left more button is clicked.\n * @event left-more-button-clicked\n */\n this.dispatchEvent(new CustomEvent('left-more-button-clicked'));\n }\n\n private userButtonClicked() {\n /**\n * Fired when the user/profile button is clicked.\n * @event user-button-clicked\n */\n this.dispatchEvent(new CustomEvent('user-button-clicked'));\n }\n\n private leftButtonEvent: null | CustomEvent = null;\n private leftButtonTimeout: null | NodeJS.Timeout = null;\n private isLeftButtonDown = false;\n private isEmergencyBrightness = false;\n\n private leftButtonDown(event: CustomEvent) {\n this.leftButtonEvent = event;\n this.isLeftButtonDown = true;\n this.leftButtonTimeout = setTimeout(() => {\n this.leftButtonEvent = null;\n this.dispatchEvent(new CustomEvent('emergency-brightness-start'));\n this.isEmergencyBrightness = true;\n }, 500);\n }\n\n private leftButtonUp() {\n if (this.leftButtonEvent) {\n this.dispatchEvent(this.leftButtonEvent);\n this.leftButtonEvent = null;\n }\n if (this.leftButtonTimeout) {\n clearTimeout(this.leftButtonTimeout);\n this.leftButtonTimeout = null;\n }\n if (this.isEmergencyBrightness) {\n this.dispatchEvent(new CustomEvent('emergency-brightness-stop'));\n this.isEmergencyBrightness = false;\n }\n this.isLeftButtonDown = false;\n }\n\n private leftButtonLeave() {\n if (!this.isLeftButtonDown) return;\n if (this.leftButtonTimeout) {\n clearInterval(this.leftButtonTimeout);\n this.leftButtonTimeout = null;\n }\n if (this.isEmergencyBrightness) {\n this.dispatchEvent(new CustomEvent('emergency-brightness-stop'));\n this.isEmergencyBrightness = false;\n }\n this.isLeftButtonDown = false;\n }\n\n override render() {\n const leftGroup = [];\n if (this.settings) {\n leftGroup.push(\n html`<div class=\"menu-button\">\n <obc-icon-button\n variant=\"flat\"\n aria-label=${msg('Close')}\n @pointerdown=${() => this.leftButtonDown(new CustomEvent('close'))}\n @pointerup=${() => this.leftButtonUp()}\n @pointerleave=${() => this.leftButtonLeave()}\n >\n <obi-close-google></obi-close-google>\n </obc-icon-button>\n </div>`\n );\n leftGroup.push(\n html`<obc-icon-button\n variant=\"flat\"\n aria-label=${msg('Back')}\n @click=${() => this.dispatchEvent(new CustomEvent('back'))}\n >\n <obi-arrow-left-google></obi-arrow-left-google>\n </obc-icon-button>`\n );\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(\n html`<obc-breadcrumb\n .items=${this.breadcrumbItems}\n @breadcrumb-click=${(e: BreadcrumbClickEvent) =>\n this.dispatchEvent(\n new CustomEvent('breadcrumb-click', {\n detail: e.detail,\n }) as BreadcrumbClickEvent\n )}\n ></obc-breadcrumb>`\n );\n } else {\n if (!this.inactive) {\n leftGroup.push(\n html`<div class=\"menu-button ${this.wideMenuButton ? 'wide' : null}\">\n <obc-icon-button\n variant=\"flat\"\n aria-label=${this.menuButtonIcon === ObcTopBarMenuButtonIcon.Menu\n ? msg('Menu')\n : msg('Home')}\n @pointerdown=${() =>\n this.leftButtonDown(new CustomEvent('menu-button-clicked'))}\n @pointerup=${() => this.leftButtonUp()}\n @pointerleave=${() => this.leftButtonLeave()}\n ?activated=${this.menuButtonActivated}\n >\n ${this.menuButtonIcon === ObcTopBarMenuButtonIcon.Menu\n ? html`<obi-menu-iec></obi-menu-iec>`\n : html`<obi-home></obi-home>`}\n </obc-icon-button>\n </div>`\n );\n }\n if (this.showAppIcon) {\n leftGroup.push(\n html`<div class=\"app-icon\"><slot name=\"app-icon\"></slot></div>`\n );\n }\n leftGroup.push(html`<div class=\"title\">${this.appTitle}</div>`);\n leftGroup.push(html`<div class=\"page-name\">${this.pageName}</div>`);\n leftGroup.push(html`<slot name=\"command-button\"></slot>`);\n }\n\n const breakpointMoreButton = Math.max(\n this.appButtonBreakpointPx,\n this.dimmingButtonBreakpointPx\n );\n\n return html`\n <style>\n @media (max-width: ${breakpointMoreButton}px) {\n .left-more-button {\n display: revert !important;\n }\n\n .group.left > * {\n margin-right: 4px;\n margin-left: 4px;\n }\n }\n\n @media (max-width: ${this.appButtonBreakpointPx}px) {\n .apps-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.dimmingButtonBreakpointPx}px) {\n .dimming-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appTitleBreakpointPx}px) {\n .title {\n display: none !important; /* the stylesheet's display wins over this inline rule otherwise */\n }\n }\n\n @media (max-width: ${this.userButtonBreakpointPx}px) {\n .user-button {\n display: none;\n }\n }\n\n @media (max-width: ${this.appIconBreakpointPx}px) {\n .app-icon {\n display: none;\n }\n }\n </style>\n <nav\n class=${classMap({\n wrapper: true,\n inactive: this.inactive,\n settings: this.settings,\n tall: this.tall,\n })}\n role=\"menubar\"\n >\n <div class=\"left group\">${leftGroup}</div>\n <div class=\"right group\">\n <div class=\"alert-container\">\n <slot name=\"alerts\"></slot>\n </div>\n ${this.showDimmingButton && !this.inactive\n ? html`<obc-icon-button\n class=\"dimming-button\"\n part=\"dimming-button\"\n variant=\"flat\"\n aria-label=${msg('Dimming')}\n @click=${this.dimmingButtonClicked}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null}\n ${this.showUserButton && !this.inactive\n ? html`<obc-icon-button\n class=\"user-button\"\n variant=\"flat\"\n part=\"user-button\"\n aria-label=${msg('User')}\n @click=${this.userButtonClicked}\n ?activated=${this.userButtonActivated}\n ?disabled=${this.userButtonDisabled}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null}\n ${this.showAppsButton && !this.inactive\n ? html`<obc-icon-button\n class=\"apps-button\"\n variant=\"flat\"\n part=\"apps-button\"\n aria-label=${msg('Apps')}\n @click=${this.appsButtonClicked}\n ?activated=${this.appsButtonActivated}\n >\n <obi-applications></obi-applications>\n </obc-icon-button>`\n : null}\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n ${!this.inactive\n ? html`<obc-icon-button\n class=\"left-more-button\"\n part=\"left-more-button\"\n variant=\"flat\"\n aria-label=${msg('More')}\n @click=${this.leftMoreButtonClicked}\n ?activated=${this.leftMoreButtonActivated}\n >\n <obi-more-vertical-google></obi-more-vertical-google>\n </obc-icon-button>`\n : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-top-bar': ObcTopBar;\n }\n}\n"],"names":["ObcTopBarMenuButtonIcon"],"mappings":"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"}
@@ -44,6 +44,14 @@ export declare const templates: {
44
44
  sdb1595f5c742dfbb: string;
45
45
  s37cbecaec58e2192: string;
46
46
  s065289e6cba017c6: string;
47
+ s5e8250fb85d64c23: string;
48
+ sc16e00a7a8b2fde2: string;
49
+ s6d8c02aee480af7a: string;
50
+ s6abb1cd87fe0114e: string;
51
+ s18c92783d4042bbc: string;
52
+ sa48f81f001b893d2: string;
53
+ sf7eeef8b4d6e602d: string;
54
+ s37a9e8aec5713460: string;
47
55
  s76b886a513fca0d8: string;
48
56
  seb1d48da15e775c9: string;
49
57
  s5e27738a2e8eb763: string;
@@ -51,8 +59,10 @@ export declare const templates: {
51
59
  sf6e1665c7022a1f8: string;
52
60
  s981f6febad4df84a: string;
53
61
  sbce70cbdb856635e: string;
54
- sa48f81f001b893d2: string;
55
62
  s7cfe12cd14df9950: string;
63
+ s5be3c6d61cd9182f: string;
64
+ s744d993d03f29851: string;
65
+ sa81e2cdaf6921adc: string;
56
66
  s3374200692e9843d: string;
57
67
  s6686fcc6d2c8f0bd: string;
58
68
  sfbc33dd48f23752c: string;
@@ -1 +1 @@
1
- {"version":3,"file":"es-419.d.ts","sourceRoot":"","sources":["../../../src/generated/locales/es-419.ts"],"names":[],"mappings":"AAUI,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkErB,CAAC"}
1
+ {"version":3,"file":"es-419.d.ts","sourceRoot":"","sources":["../../../src/generated/locales/es-419.ts"],"names":[],"mappings":"AAUI,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ErB,CAAC"}
@@ -44,6 +44,14 @@ const templates = {
44
44
  "sdb1595f5c742dfbb": `Input`,
45
45
  "s37cbecaec58e2192": `Mode`,
46
46
  "s065289e6cba017c6": `Transcribe`,
47
+ "s5e8250fb85d64c23": `Close`,
48
+ "sc16e00a7a8b2fde2": `Back`,
49
+ "s6d8c02aee480af7a": `Menu`,
50
+ "s6abb1cd87fe0114e": `Home`,
51
+ "s18c92783d4042bbc": `Dimming`,
52
+ "sa48f81f001b893d2": `User`,
53
+ "sf7eeef8b4d6e602d": `Apps`,
54
+ "s37a9e8aec5713460": `More`,
47
55
  "s76b886a513fca0d8": `Username is required`,
48
56
  "seb1d48da15e775c9": `Password is required`,
49
57
  "s5e27738a2e8eb763": `Sign in`,
@@ -51,8 +59,10 @@ const templates = {
51
59
  "sf6e1665c7022a1f8": `Password`,
52
60
  "s981f6febad4df84a": `Recently signed in`,
53
61
  "sbce70cbdb856635e": `Recent`,
54
- "sa48f81f001b893d2": `User`,
55
62
  "s7cfe12cd14df9950": `Sign out`,
63
+ "s5be3c6d61cd9182f": `Notifications`,
64
+ "s744d993d03f29851": `Screen`,
65
+ "sa81e2cdaf6921adc": `System`,
56
66
  "s3374200692e9843d": `No alerts`,
57
67
  "s6686fcc6d2c8f0bd": `Note`,
58
68
  "sfbc33dd48f23752c": `Tag ID`,
@@ -1 +1 @@
1
- {"version":3,"file":"es-419.js","sources":["../../../src/generated/locales/es-419.ts"],"sourcesContent":["\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's0f3699a7bd401f61': `Noche`,\n's8119af112f965c78': `Brillantez`,\n'sa7f8e003ff63ef9f': `No alertas activas`,\n'se0955919920ee87d': `Día`,\n'sf993bb199fefbe04': `All`,\n's01b603dddbaba7b6': `Unacked`,\n'se92d11374fcdf768': `No unacknowledged alerts`,\n'sf268637d594dacb2': `Shelved`,\n's2a2488656f97b746': `No shelved alerts`,\n'sf59d9197d2e50c93': `Blocked`,\n's61a9ee872da3a0cd': `No blocked alerts`,\n's16fccc311f4779f6': `Rectified`,\n'seb27af82aef6a03e': `No rectified alerts`,\n'sfa32c219a0764262': `ACK`,\n's5ba9818f6a39054c': `Go to the 'Alert list' for more details or to manage existing alerts.`,\n'sa45a194b58837e4f': `Active`,\n'sa6ef04345891fb38': `ACK visible`,\n's68395a4c26a9e8ac': `Silence`,\n's88d1c1e15ca1aade': `Alerts`,\n's3cf89cb47fdde7e9': `Link`,\n's47278872f6826da8': `Dusk`,\n's9e34794bcfdc6665': `Bright`,\n's33e301ba1f4a6864': `Screen Control`,\n'sc5a5b268010fc312': `Audio muted`,\n's740deeebbea89396': `Audio on`,\n'sb1772b5e873910c2': `Microphone muted`,\n'sae9a175972fdc8a6': `Microphone on`,\n'scdec9ef5c73b26a1': `Wi-Fi`,\n's08e6bd98452e6bb9': `Audio`,\n's232f88877550dfa9': `Microphone`,\n's2eda024d0ca3dbae': `Battery`,\n's77a0727520efc502': `Charging`,\n'sfa0a009c85861b5b': `Powered &amp; not charging`,\n's2d91daeb457fbd1d': `On battery`,\n's9d8b8aa2b404c2c8': `Settings`,\n's463b8c4e92751ba5': `Options`,\n'sd2208cd1a767644b': `Disconnect`,\n's40bbf4a98d873400': `Push to talk`,\n's345be9d2d7ce0228': `Usage`,\n's0200a1a60221ccd3': `Battery saving mode`,\n's186609156d69afdc': `Other networks`,\n'sfd77270c3f54f664': `Output`,\n'sdb1595f5c742dfbb': `Input`,\n's37cbecaec58e2192': `Mode`,\n's065289e6cba017c6': `Transcribe`,\n's76b886a513fca0d8': `Username is required`,\n'seb1d48da15e775c9': `Password is required`,\n's5e27738a2e8eb763': `Sign in`,\n's03f42eea72154959': `Username`,\n'sf6e1665c7022a1f8': `Password`,\n's981f6febad4df84a': `Recently signed in`,\n'sbce70cbdb856635e': `Recent`,\n'sa48f81f001b893d2': `User`,\n's7cfe12cd14df9950': `Sign out`,\n's3374200692e9843d': `No alerts`,\n's6686fcc6d2c8f0bd': `Note`,\n'sfbc33dd48f23752c': `Tag ID`,\n's079a052719914d71': `Category`,\n'sa2b9faa7ad068cfc': `Activated`,\n's35aab6bf5dda3be0': `Alert timer`,\n'sdc7335a13d9e03f5': `Acknowledged`,\n's93c7817bb872836a': `Acknowledged by`,\n'sf2de3605b3655264': `Shelfing timer`,\n's097d821eb8e9069f': `Shelved by`,\n'sa711a6fcc9552dbf': `Readout`,\n };\n "],"names":[],"mappings":"AAUW,MAAM,YAAY;AAAA,EACvB,qBAAqB;AAAA,EAC3B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACjB;"}
1
+ {"version":3,"file":"es-419.js","sources":["../../../src/generated/locales/es-419.ts"],"sourcesContent":["\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's0f3699a7bd401f61': `Noche`,\n's8119af112f965c78': `Brillantez`,\n'sa7f8e003ff63ef9f': `No alertas activas`,\n'se0955919920ee87d': `Día`,\n'sf993bb199fefbe04': `All`,\n's01b603dddbaba7b6': `Unacked`,\n'se92d11374fcdf768': `No unacknowledged alerts`,\n'sf268637d594dacb2': `Shelved`,\n's2a2488656f97b746': `No shelved alerts`,\n'sf59d9197d2e50c93': `Blocked`,\n's61a9ee872da3a0cd': `No blocked alerts`,\n's16fccc311f4779f6': `Rectified`,\n'seb27af82aef6a03e': `No rectified alerts`,\n'sfa32c219a0764262': `ACK`,\n's5ba9818f6a39054c': `Go to the 'Alert list' for more details or to manage existing alerts.`,\n'sa45a194b58837e4f': `Active`,\n'sa6ef04345891fb38': `ACK visible`,\n's68395a4c26a9e8ac': `Silence`,\n's88d1c1e15ca1aade': `Alerts`,\n's3cf89cb47fdde7e9': `Link`,\n's47278872f6826da8': `Dusk`,\n's9e34794bcfdc6665': `Bright`,\n's33e301ba1f4a6864': `Screen Control`,\n'sc5a5b268010fc312': `Audio muted`,\n's740deeebbea89396': `Audio on`,\n'sb1772b5e873910c2': `Microphone muted`,\n'sae9a175972fdc8a6': `Microphone on`,\n'scdec9ef5c73b26a1': `Wi-Fi`,\n's08e6bd98452e6bb9': `Audio`,\n's232f88877550dfa9': `Microphone`,\n's2eda024d0ca3dbae': `Battery`,\n's77a0727520efc502': `Charging`,\n'sfa0a009c85861b5b': `Powered &amp; not charging`,\n's2d91daeb457fbd1d': `On battery`,\n's9d8b8aa2b404c2c8': `Settings`,\n's463b8c4e92751ba5': `Options`,\n'sd2208cd1a767644b': `Disconnect`,\n's40bbf4a98d873400': `Push to talk`,\n's345be9d2d7ce0228': `Usage`,\n's0200a1a60221ccd3': `Battery saving mode`,\n's186609156d69afdc': `Other networks`,\n'sfd77270c3f54f664': `Output`,\n'sdb1595f5c742dfbb': `Input`,\n's37cbecaec58e2192': `Mode`,\n's065289e6cba017c6': `Transcribe`,\n's5e8250fb85d64c23': `Close`,\n'sc16e00a7a8b2fde2': `Back`,\n's6d8c02aee480af7a': `Menu`,\n's6abb1cd87fe0114e': `Home`,\n's18c92783d4042bbc': `Dimming`,\n'sa48f81f001b893d2': `User`,\n'sf7eeef8b4d6e602d': `Apps`,\n's37a9e8aec5713460': `More`,\n's76b886a513fca0d8': `Username is required`,\n'seb1d48da15e775c9': `Password is required`,\n's5e27738a2e8eb763': `Sign in`,\n's03f42eea72154959': `Username`,\n'sf6e1665c7022a1f8': `Password`,\n's981f6febad4df84a': `Recently signed in`,\n'sbce70cbdb856635e': `Recent`,\n's7cfe12cd14df9950': `Sign out`,\n's5be3c6d61cd9182f': `Notifications`,\n's744d993d03f29851': `Screen`,\n'sa81e2cdaf6921adc': `System`,\n's3374200692e9843d': `No alerts`,\n's6686fcc6d2c8f0bd': `Note`,\n'sfbc33dd48f23752c': `Tag ID`,\n's079a052719914d71': `Category`,\n'sa2b9faa7ad068cfc': `Activated`,\n's35aab6bf5dda3be0': `Alert timer`,\n'sdc7335a13d9e03f5': `Acknowledged`,\n's93c7817bb872836a': `Acknowledged by`,\n'sf2de3605b3655264': `Shelfing timer`,\n's097d821eb8e9069f': `Shelved by`,\n'sa711a6fcc9552dbf': `Readout`,\n };\n "],"names":[],"mappings":"AAUW,MAAM,YAAY;AAAA,EACvB,qBAAqB;AAAA,EAC3B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACjB;"}