@ni/nimble-components 35.2.3 → 35.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all-components-bundle.js +171 -63
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +6082 -6080
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/models/keyboard-navigation-manager.d.ts +6 -1
- package/dist/esm/table/models/keyboard-navigation-manager.js +90 -64
- package/dist/esm/table/models/keyboard-navigation-manager.js.map +1 -1
- package/dist/esm/theme-provider/design-token-comments.js +19 -1
- package/dist/esm/theme-provider/design-token-comments.js.map +1 -1
- package/dist/esm/theme-provider/design-token-names.js +19 -1
- package/dist/esm/theme-provider/design-token-names.js.map +1 -1
- package/dist/esm/theme-provider/design-token-values.d.ts +18 -0
- package/dist/esm/theme-provider/design-token-values.js +19 -1
- package/dist/esm/theme-provider/design-token-values.js.map +1 -1
- package/dist/esm/theme-provider/design-tokens.d.ts +18 -0
- package/dist/esm/theme-provider/design-tokens.js +18 -0
- package/dist/esm/theme-provider/design-tokens.js.map +1 -1
- package/dist/tokens-internal.scss +108 -0
- package/dist/tokens.scss +54 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-navigation-manager.js","sourceRoot":"","sources":["../../../../src/table/models/keyboard-navigation-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Notifier, type Subscriber, Observable } from '@ni/fast-element';\nimport {\n keyArrowDown,\n keyArrowLeft,\n keyArrowRight,\n keyArrowUp,\n keyEnd,\n keyEnter,\n keyEscape,\n keyFunction2,\n keyHome,\n keyPageDown,\n keyPageUp,\n keySpace,\n keyTab\n} from '@ni/fast-web-utilities';\nimport { FoundationElement } from '@ni/fast-foundation';\nimport type { ScrollToOptions } from '@tanstack/virtual-core';\nimport type { Table } from '..';\nimport { TableFocusType } from '../types';\nimport type {\n TableActionMenuToggleEventDetail,\n TableHeaderFocusableElements,\n TableRowFocusableElements,\n TableRecord\n} from '../types';\nimport type { Virtualizer } from './virtualizer';\nimport { TableGroupRow } from '../components/group-row';\nimport { TableRow } from '../components/row';\nimport { TableCell } from '../components/cell';\nimport type { MenuButton } from '../../menu-button';\nimport { tableHeaderTag } from '../components/header';\nimport { TableCellView } from '../../table-column/base/cell-view';\n\ninterface TableFocusState {\n focusType: TableFocusType;\n headerActionIndex?: number;\n rowIndex?: number;\n columnIndex?: number;\n cellContentIndex?: number;\n}\n\n/**\n * Manages the keyboard navigation and focus within the table.\n * @internal\n */\nexport class KeyboardNavigationManager<\n TData extends TableRecord\n> implements Subscriber {\n private focusType: TableFocusType = TableFocusType.none;\n private headerActionIndex = -1;\n private rowIndex = -1;\n private cellContentIndex = -1;\n private columnIndex = -1;\n private focusWithinTable = false;\n private isCurrentlyFocusingElement = false;\n private readonly tableNotifier: Notifier;\n private readonly virtualizerNotifier: Notifier;\n private visibleRowNotifiers: Notifier[] = [];\n private get inNavigationMode(): boolean {\n return (\n this.focusType !== TableFocusType.cellActionMenu\n && this.focusType !== TableFocusType.cellContent\n );\n }\n\n public constructor(\n private readonly table: Table<TData>,\n private readonly virtualizer: Virtualizer<TData>\n ) {\n this.tableNotifier = Observable.getNotifier(this.table);\n this.tableNotifier.subscribe(this, 'rowElements');\n this.virtualizerNotifier = Observable.getNotifier(this.virtualizer);\n this.virtualizerNotifier.subscribe(this, 'visibleItems');\n }\n\n public resetFocusState(): void {\n this.focusType = TableFocusType.none;\n const activeElement = this.getActiveElement();\n if (activeElement && this.isInTable(activeElement)) {\n this.setDefaultFocus();\n }\n }\n\n public get hasActiveRowOrCellFocus(): boolean {\n return this.focusWithinTable && this.hasRowOrCellFocusType();\n }\n\n public connect(): void {\n this.table.addEventListener(\n 'keydown',\n this.onCaptureKeyDown as EventListener,\n { capture: true }\n );\n this.table.addEventListener('keydown', this.onKeyDown as EventListener);\n this.table.addEventListener(\n 'focusin',\n this.onTableFocusIn as EventListener\n );\n this.table.addEventListener(\n 'focusout',\n this.onTableFocusOut as EventListener\n );\n this.table.viewport.addEventListener('keydown', this.onViewportKeyDown);\n this.table.viewport.addEventListener(\n 'cell-action-menu-blur',\n this.onCellActionMenuBlur as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-view-focus-in',\n this.onCellViewFocusIn as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-focus-in',\n this.onCellFocusIn as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-blur',\n this.onCellBlur as EventListener\n );\n }\n\n public disconnect(): void {\n this.table.removeEventListener(\n 'keydown',\n this.onCaptureKeyDown as EventListener,\n { capture: true }\n );\n this.table.removeEventListener(\n 'keydown',\n this.onKeyDown as EventListener\n );\n this.table.removeEventListener(\n 'focusin',\n this.onTableFocusIn as EventListener\n );\n this.table.removeEventListener(\n 'focusout',\n this.onTableFocusOut as EventListener\n );\n this.table.viewport.removeEventListener(\n 'keydown',\n this.onViewportKeyDown\n );\n this.table.viewport.removeEventListener(\n 'cell-action-menu-blur',\n this.onCellActionMenuBlur as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-view-focus-in',\n this.onCellViewFocusIn as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-focus-in',\n this.onCellFocusIn as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-blur',\n this.onCellBlur as EventListener\n );\n }\n\n public handleChange(source: unknown, args: unknown): void {\n let focusRowAndCell = false;\n if (source === this.virtualizer && args === 'visibleItems') {\n focusRowAndCell = true;\n } else if (source === this.table && args === 'rowElements') {\n for (const notifier of this.visibleRowNotifiers) {\n notifier.unsubscribe(this);\n }\n this.visibleRowNotifiers = [];\n for (const visibleRow of this.table.rowElements) {\n const rowNotifier = Observable.getNotifier(visibleRow);\n rowNotifier.subscribe(this, 'resolvedRowIndex');\n this.visibleRowNotifiers.push(rowNotifier);\n if (visibleRow.resolvedRowIndex === this.rowIndex) {\n focusRowAndCell = true;\n }\n }\n } else if (\n args === 'resolvedRowIndex'\n && this.isResolvedRowType(source)\n ) {\n if (source.resolvedRowIndex === this.rowIndex) {\n focusRowAndCell = true;\n }\n }\n\n if (focusRowAndCell) {\n // We want open action menus to be closed, and focused interactive cell content blurred, on scroll. We also don't want to\n // refocus the interactive cell content after the scroll, as the element no longer represents the same table data at that\n // point. So in both those cases, we focus the cell here. This also lets us maintain what row/ cell the user had focused\n // previously.\n if (\n this.focusType === TableFocusType.cellActionMenu\n || this.focusType === TableFocusType.cellContent\n ) {\n this.setCellFocusState(this.columnIndex, this.rowIndex, false);\n }\n if (this.inNavigationMode && this.hasRowOrCellFocusType()) {\n if (this.rowIndex > this.table.tableData.length - 1) {\n // Focused row index no longer valid, coerce to 1st row if possible\n if (this.table.tableData.length > 0) {\n this.rowIndex = 0;\n } else {\n if (this.focusWithinTable) {\n this.setDefaultFocus();\n } else {\n this.focusType = TableFocusType.none;\n }\n return;\n }\n }\n if (this.focusWithinTable) {\n this.focusCurrentRow(false);\n }\n }\n }\n }\n\n public onRowFocusIn(event: FocusEvent): void {\n if (this.isCurrentlyFocusingElement) {\n return;\n }\n const row = event.target;\n if (this.isResolvedRowType(row)) {\n if (this.rowIndex !== row.resolvedRowIndex) {\n // If user focuses a row some other way (e.g. mouse), update our focus state so future keyboard nav\n // will start from that row\n this.setRowFocusState(row.resolvedRowIndex);\n }\n }\n }\n\n public onRowBlur(event: FocusEvent): void {\n const row = event.target;\n if (this.isResolvedRowType(row)) {\n this.setElementFocusable(row, false);\n }\n }\n\n public onRowActionMenuToggle(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n const isOpen = event.detail.newState;\n if (isOpen) {\n const row = event.target as TableRow;\n const columnIndex = this.table.visibleColumns.findIndex(\n column => column.columnId === event.detail.columnId\n );\n this.setCellActionMenuFocusState(\n row.resolvedRowIndex!,\n columnIndex,\n false\n );\n }\n }\n\n private readonly onTableFocusIn = (event: FocusEvent): void => {\n this.focusWithinTable = true;\n this.updateFocusStateFromActiveElement(false);\n\n // Sets initial focus on the appropriate table content\n const actionMenuOpen = this.table.openActionMenuRecordId !== undefined;\n if (\n (event.target === this.table\n || this.focusType === TableFocusType.none)\n && !actionMenuOpen\n ) {\n let focusHeader = true;\n if (\n this.hasRowOrCellFocusType()\n && this.scrollToAndFocusRow(this.rowIndex)\n ) {\n focusHeader = false;\n }\n if (focusHeader && !this.setFocusOnHeader()) {\n // nothing to focus\n this.table.blur();\n }\n }\n };\n\n private readonly onTableFocusOut = (): void => {\n this.focusWithinTable = false;\n };\n\n private readonly onCellActionMenuBlur = (\n event: CustomEvent<TableCell>\n ): void => {\n event.stopPropagation();\n const cell = event.detail;\n if (cell.actionMenuButton) {\n // Ensure that action menu buttons get hidden when no longer focused\n this.setActionMenuButtonFocused(cell.actionMenuButton, false);\n }\n };\n\n private readonly onCellViewFocusIn = (\n event: CustomEvent<TableCell>\n ): void => {\n event.stopPropagation();\n this.updateFocusStateFromActiveElement(false);\n };\n\n private readonly onCellFocusIn = (event: CustomEvent<TableCell>): void => {\n event.stopPropagation();\n const cell = event.detail;\n this.updateFocusStateFromActiveElement(true);\n // Currently, clicking a non-interactive cell only updates the focus state to that row, it\n // doesn't focus the cell. If we revisit this, we most likely need to set the cells to tabindex=-1\n // upfront too, so their focusing behavior is consistent whether they've been previously keyboard\n // focused or not.\n if (\n this.focusType === TableFocusType.row\n && this.getActiveElement() === cell\n ) {\n this.focusCurrentRow(false);\n }\n };\n\n private readonly onCellBlur = (event: CustomEvent<TableCell>): void => {\n event.stopPropagation();\n const cell = event.detail;\n this.setElementFocusable(cell, false);\n };\n\n private readonly onCaptureKeyDown = (event: KeyboardEvent): void => {\n let handled = false;\n if (event.key === keyTab) {\n handled = this.onTabPressed(event.shiftKey);\n } else if (this.inNavigationMode) {\n switch (event.key) {\n case keyArrowLeft:\n handled = this.onLeftArrowPressed();\n break;\n case keyArrowRight:\n handled = this.onRightArrowPressed();\n break;\n case keyArrowUp:\n handled = this.onUpArrowPressed();\n break;\n case keyArrowDown:\n handled = this.onDownArrowPressed();\n break;\n case keyPageUp:\n handled = this.onPageUpPressed();\n break;\n case keyPageDown:\n handled = this.onPageDownPressed();\n break;\n case keyHome:\n handled = this.onHomePressed(event.ctrlKey);\n break;\n case keyEnd:\n handled = this.onEndPressed(event.ctrlKey);\n break;\n case keyEnter:\n handled = this.onEnterPressed(event.ctrlKey);\n break;\n case keySpace:\n handled = this.onSpacePressed(event.shiftKey);\n break;\n case keyFunction2:\n handled = this.onF2Pressed();\n break;\n default:\n break;\n }\n }\n if (handled) {\n event.preventDefault();\n }\n };\n\n private readonly onKeyDown = (event: KeyboardEvent): void => {\n if (!this.inNavigationMode && !event.defaultPrevented) {\n if (event.key === keyEscape || event.key === keyFunction2) {\n const row = this.getCurrentRow();\n if (row) {\n this.trySetCellFocus(row.getFocusableElements());\n }\n }\n }\n };\n\n private readonly onViewportKeyDown = (event: KeyboardEvent): void => {\n let handleEvent = !this.inNavigationMode\n && (event.key === keyArrowUp || event.key === keyArrowDown);\n switch (event.key) {\n case keyPageUp:\n case keyPageDown:\n case keyHome:\n case keyEnd:\n handleEvent = true;\n break;\n default:\n break;\n }\n if (handleEvent) {\n // Swallow key presses that would cause table scrolling, independently of keyboard navigation\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n private onEnterPressed(ctrlKey: boolean): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n }\n if (this.focusType === TableFocusType.row) {\n if (row instanceof TableGroupRow) {\n this.toggleRowExpanded(row);\n return true;\n }\n }\n if (this.focusType === TableFocusType.cell) {\n if (ctrlKey) {\n const cell = rowElements?.cells[this.columnIndex];\n if (cell?.actionMenuButton && !cell.actionMenuButton.open) {\n cell.actionMenuButton.toggleButton!.control.click();\n return true;\n }\n }\n return this.focusFirstInteractiveElementInCurrentCell(rowElements);\n }\n return false;\n }\n\n private onF2Pressed(): boolean {\n if (this.focusType === TableFocusType.cell) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return this.focusFirstInteractiveElementInCurrentCell(rowElements);\n }\n return false;\n }\n\n private onSpacePressed(shiftKey: boolean): boolean {\n if (\n this.focusType === TableFocusType.row\n || this.focusType === TableFocusType.cell\n ) {\n if (this.focusType === TableFocusType.row || shiftKey) {\n const row = this.getCurrentRow();\n if (row instanceof TableRow && row.selectable) {\n row.onSelectionChange(row.selected, !row.selected);\n } else if (row instanceof TableGroupRow) {\n this.toggleRowExpanded(row);\n }\n }\n // Default Space behavior scrolls down, which is redundant given the rest of our keyboard nav code, and we'd still try to focus a\n // row that you scrolled away from. So suppress default Space behavior if a row or cell is selected, regardless of if we're\n // toggling selection or not.\n return true;\n }\n return false;\n }\n\n private onLeftArrowPressed(): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n let headerElements!: TableHeaderFocusableElements;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n } else if (this.hasHeaderFocusType()) {\n headerElements = this.getTableHeaderFocusableElements();\n }\n\n switch (this.focusType) {\n case TableFocusType.headerActions:\n return this.trySetHeaderActionFocus(\n headerElements,\n this.headerActionIndex - 1\n );\n case TableFocusType.columnHeader:\n return (\n this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex - 1\n )\n || this.trySetHeaderActionFocus(\n headerElements,\n headerElements.headerActions.length - 1\n )\n );\n case TableFocusType.row:\n if (this.isRowExpanded(row) === true) {\n this.toggleRowExpanded(row!);\n return true;\n }\n return false;\n case TableFocusType.rowSelectionCheckbox:\n this.setRowFocusState();\n return this.focusCurrentRow(true);\n case TableFocusType.cell:\n if (\n !this.trySetCellFocus(rowElements, this.columnIndex - 1)\n && !this.trySetRowSelectionCheckboxFocus(rowElements)\n ) {\n this.setRowFocusState();\n this.focusCurrentRow(true);\n }\n return true;\n default:\n break;\n }\n\n return false;\n }\n\n private onRightArrowPressed(): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n let headerElements!: TableHeaderFocusableElements;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n } else if (this.hasHeaderFocusType()) {\n headerElements = this.getTableHeaderFocusableElements();\n }\n\n switch (this.focusType) {\n case TableFocusType.headerActions:\n return (\n this.trySetHeaderActionFocus(\n headerElements,\n this.headerActionIndex + 1\n ) || this.trySetColumnHeaderFocus(headerElements, 0)\n );\n case TableFocusType.columnHeader:\n return this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex + 1\n );\n case TableFocusType.row:\n if (this.isRowExpanded(row) === false) {\n this.toggleRowExpanded(row!);\n return true;\n }\n return (\n this.trySetRowSelectionCheckboxFocus(rowElements)\n || this.trySetCellFocus(rowElements, 0)\n );\n case TableFocusType.rowSelectionCheckbox:\n return this.trySetCellFocus(rowElements, 0);\n case TableFocusType.cell:\n return this.trySetCellFocus(rowElements, this.columnIndex + 1);\n default:\n break;\n }\n\n return false;\n }\n\n private onUpArrowPressed(): boolean {\n this.onMoveUp(1);\n // Always prevent default - prevents page scroll, and FireFox changing focus if focus is at table extents\n return true;\n }\n\n private onPageUpPressed(): boolean {\n return this.onMoveUp(this.virtualizer.pageSize);\n }\n\n private onHomePressed(ctrlKey: boolean): boolean {\n if (this.handleHomeEndWithinRow(ctrlKey)) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return (\n this.trySetRowSelectionCheckboxFocus(rowElements)\n || this.trySetCellFocus(rowElements, 0)\n );\n }\n\n return this.onMoveUp(0, 0);\n }\n\n private onDownArrowPressed(): boolean {\n this.onMoveDown(1);\n // Always prevent default - prevents page scroll, and FireFox changing focus if focus is at table extents\n return true;\n }\n\n private onPageDownPressed(): boolean {\n return this.onMoveDown(this.virtualizer.pageSize);\n }\n\n private onEndPressed(ctrlKey: boolean): boolean {\n if (this.handleHomeEndWithinRow(ctrlKey)) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return this.trySetCellFocus(\n rowElements,\n this.table.visibleColumns.length - 1\n );\n }\n\n return this.onMoveDown(0, this.table.tableData.length - 1);\n }\n\n private handleHomeEndWithinRow(ctrlKey: boolean): boolean {\n return (\n (this.focusType === TableFocusType.cell\n || this.focusType === TableFocusType.rowSelectionCheckbox)\n && !ctrlKey\n );\n }\n\n private onTabPressed(shiftKeyPressed: boolean): boolean {\n const activeElement = this.getActiveElement();\n if (activeElement === null || activeElement === this.table) {\n return false;\n }\n const nextFocusState = this.hasRowOrCellFocusType()\n ? this.getNextRowTabStop(shiftKeyPressed)\n : this.getNextHeaderTabStop(shiftKeyPressed);\n if (nextFocusState) {\n this.focusType = nextFocusState.focusType;\n this.rowIndex = nextFocusState.rowIndex ?? this.rowIndex;\n this.columnIndex = nextFocusState.columnIndex ?? this.columnIndex;\n this.headerActionIndex = nextFocusState.headerActionIndex ?? this.headerActionIndex;\n this.cellContentIndex = nextFocusState.cellContentIndex ?? this.cellContentIndex;\n if (this.hasRowOrCellFocusType()) {\n this.focusCurrentRow(false);\n } else {\n this.focusHeaderElement();\n }\n return true;\n }\n this.blurAfterLastTab(activeElement);\n return false;\n }\n\n private getNextRowTabStop(\n shiftKeyPressed: boolean\n ): TableFocusState | undefined {\n const row = this.getCurrentRow();\n if (row === undefined) {\n return undefined;\n }\n let startIndex = -1;\n const focusStates = [];\n const rowElements = row.getFocusableElements();\n if (rowElements.selectionCheckbox) {\n focusStates.push({\n focusType: TableFocusType.rowSelectionCheckbox\n });\n if (this.focusType === TableFocusType.rowSelectionCheckbox) {\n startIndex = 0;\n }\n }\n let cellIndex = 0;\n while (cellIndex < rowElements.cells.length) {\n const firstCellTabbableIndex = focusStates.length;\n const cellInfo = rowElements.cells[cellIndex]!;\n const cellViewTabbableChildren = cellInfo.cell.cellView.tabbableChildren;\n for (let i = 0; i < cellViewTabbableChildren.length; i++) {\n focusStates.push({\n focusType: TableFocusType.cellContent,\n columnIndex: cellIndex,\n cellContentIndex: i\n });\n if (\n this.focusType === TableFocusType.cellContent\n && this.columnIndex === cellIndex\n && this.cellContentIndex === i\n ) {\n startIndex = focusStates.length - 1;\n }\n }\n if (cellInfo.actionMenuButton) {\n focusStates.push({\n focusType: TableFocusType.cellActionMenu,\n columnIndex: cellIndex\n });\n if (\n this.focusType === TableFocusType.cellActionMenu\n && this.columnIndex === cellIndex\n ) {\n startIndex = focusStates.length - 1;\n }\n }\n const lastCellTabbableIndex = focusStates.length - 1;\n if (\n this.focusType === TableFocusType.cell\n && this.columnIndex === cellIndex\n ) {\n startIndex = shiftKeyPressed\n ? lastCellTabbableIndex + 1\n : firstCellTabbableIndex - 1;\n }\n cellIndex += 1;\n }\n if (this.focusType === TableFocusType.row) {\n startIndex = shiftKeyPressed ? focusStates.length : -1;\n }\n const direction = shiftKeyPressed ? -1 : 1;\n return focusStates[startIndex + direction];\n }\n\n private getNextHeaderTabStop(\n shiftKeyPressed: boolean\n ): TableFocusState | undefined {\n let startIndex = -1;\n const focusStates = [];\n const headerTabbableElements = this.getTableHeaderFocusableElements().headerActions;\n for (let i = 0; i < headerTabbableElements.length; i++) {\n focusStates.push({\n focusType: TableFocusType.headerActions,\n headerActionIndex: i\n });\n }\n if (this.focusType === TableFocusType.headerActions) {\n startIndex = this.headerActionIndex;\n } else {\n // TableFocusType.columnHeader\n startIndex = focusStates.length;\n }\n const direction = shiftKeyPressed ? -1 : 1;\n return focusStates[startIndex + direction];\n }\n\n private blurAfterLastTab(activeElement: HTMLElement): void {\n // In order to get the desired browser-provided Tab/Shift-Tab behavior of focusing the\n // element before/after the table, the table shouldn't have tabIndex=0 when this event\n // handling ends. However it needs to be tabIndex=0 so we can re-focus the table the next time\n // it's tabbed to, so set tabIndex back to 0 after a rAF.\n // Note: In Chrome this is only needed for Shift-Tab, but in Firefox both Tab and Shift-Tab need this\n // to work as expected.\n this.table.tabIndex = -1;\n window.requestAnimationFrame(() => {\n this.table.tabIndex = 0;\n });\n\n // Don't explicitly call blur() on activeElement (causes unexpected behavior on Safari / Mac Firefox)\n this.setElementFocusable(activeElement, false);\n }\n\n private onMoveUp(rowDelta: number, newRowIndex?: number): boolean {\n const coerceRowIndex = rowDelta > 1;\n switch (this.focusType) {\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n case TableFocusType.cell: {\n const scrollOptions: ScrollToOptions = {};\n let rowIndex = this.rowIndex;\n if (newRowIndex !== undefined) {\n rowIndex = newRowIndex;\n }\n rowIndex -= rowDelta;\n if (coerceRowIndex && rowIndex < 0) {\n rowIndex = 0;\n }\n if (rowDelta > 1) {\n scrollOptions.align = 'start';\n }\n\n if (rowIndex < this.rowIndex && rowIndex >= 0) {\n return this.scrollToAndFocusRow(rowIndex, scrollOptions);\n }\n if (rowIndex === -1) {\n const headerElements = this.getTableHeaderFocusableElements();\n if (\n this.focusType === TableFocusType.row\n || this.focusType === TableFocusType.rowSelectionCheckbox\n ) {\n return (\n this.trySetHeaderActionFocus(headerElements, 0)\n || this.trySetColumnHeaderFocus(headerElements, 0)\n );\n }\n return this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex\n );\n }\n return false;\n }\n default:\n break;\n }\n\n return false;\n }\n\n private onMoveDown(rowDelta: number, newRowIndex?: number): boolean {\n const coerceRowIndex = rowDelta > 1;\n switch (this.focusType) {\n case TableFocusType.headerActions: {\n this.setRowFocusState(0);\n return this.scrollToAndFocusRow(0);\n }\n case TableFocusType.columnHeader: {\n this.setCellFocusState(this.columnIndex, 0, false);\n return this.scrollToAndFocusRow(0);\n }\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n case TableFocusType.cell: {\n const scrollOptions: ScrollToOptions = {};\n let rowIndex = this.rowIndex;\n if (newRowIndex !== undefined) {\n rowIndex = newRowIndex;\n }\n rowIndex += rowDelta;\n if (coerceRowIndex && rowIndex >= this.table.tableData.length) {\n rowIndex = this.table.tableData.length - 1;\n }\n if (rowDelta > 1) {\n scrollOptions.align = 'end';\n }\n if (\n rowIndex > this.rowIndex\n && rowIndex < this.table.tableData.length\n ) {\n return this.scrollToAndFocusRow(rowIndex, scrollOptions);\n }\n return false;\n }\n default:\n break;\n }\n\n return false;\n }\n\n private updateFocusStateFromActiveElement(setRowFocus: boolean): void {\n // If the user is interacting with the table with non-keyboard methods (like mouse), we need to\n // update our focus state based on the current active/focused element\n const activeElement = this.getActiveElement();\n if (activeElement) {\n const row = this.getContainingRow(activeElement);\n if (row) {\n if (!(row instanceof TableGroupRow)) {\n const cell = this.getContainingCell(activeElement);\n if (cell) {\n const columnIndex = this.table.visibleColumns.indexOf(\n cell.column!\n );\n if (cell.actionMenuButton === activeElement) {\n this.setCellActionMenuFocusState(\n row.resolvedRowIndex!,\n columnIndex,\n false\n );\n return;\n }\n const contentIndex = cell.cellView.tabbableChildren.indexOf(\n activeElement\n );\n if (contentIndex > -1) {\n this.setCellContentFocusState(\n contentIndex,\n row.resolvedRowIndex!,\n columnIndex,\n false\n );\n return;\n }\n }\n }\n if (\n setRowFocus\n && this.hasRowOrCellFocusType()\n && this.rowIndex !== row.resolvedRowIndex\n ) {\n this.setRowFocusState(row.resolvedRowIndex);\n }\n }\n }\n }\n\n private focusElement(\n element: HTMLElement,\n focusOptions?: FocusOptions\n ): void {\n const previousActiveElement = this.getActiveElement();\n if (previousActiveElement !== element) {\n this.setElementFocusable(element, true);\n this.isCurrentlyFocusingElement = true;\n element.focus(focusOptions);\n this.isCurrentlyFocusingElement = false;\n if (\n previousActiveElement\n && this.isInTable(previousActiveElement)\n ) {\n this.setElementFocusable(previousActiveElement, false);\n }\n }\n }\n\n private setElementFocusable(\n element: HTMLElement,\n focusable: boolean\n ): void {\n if (element === this.table) {\n return;\n }\n\n element.tabIndex = focusable ? 0 : -1;\n }\n\n private setActionMenuButtonFocused(\n menuButton: MenuButton,\n focused: boolean\n ): void {\n // The action MenuButton needs to be visible in order to be focused, so this CSS class styling\n // handles that (see cell/styles.ts).\n if (focused) {\n menuButton.classList.add('cell-action-menu-focused');\n } else {\n menuButton.classList.remove('cell-action-menu-focused');\n }\n }\n\n private setFocusOnHeader(): boolean {\n if (this.hasHeaderFocusType()) {\n return this.focusHeaderElement();\n }\n this.setDefaultFocus();\n return this.focusType !== TableFocusType.none;\n }\n\n private setDefaultFocus(): void {\n const headerElements = this.getTableHeaderFocusableElements();\n if (\n !this.trySetHeaderActionFocus(headerElements, 0)\n && !this.trySetColumnHeaderFocus(headerElements, 0)\n && !this.scrollToAndFocusRow(0)\n ) {\n this.focusType = TableFocusType.none;\n }\n }\n\n private scrollToAndFocusRow(\n totalRowIndex: number,\n scrollOptions?: ScrollToOptions\n ): boolean {\n if (totalRowIndex >= 0 && totalRowIndex < this.table.tableData.length) {\n switch (this.focusType) {\n case TableFocusType.none:\n case TableFocusType.headerActions:\n case TableFocusType.columnHeader:\n this.setRowFocusState(totalRowIndex);\n break;\n default:\n break;\n }\n this.rowIndex = totalRowIndex;\n this.virtualizer.scrollToIndex(totalRowIndex, scrollOptions);\n this.focusCurrentRow(true);\n return true;\n }\n return false;\n }\n\n private focusCurrentRow(allowScroll: boolean): boolean {\n const visibleRowIndex = this.getCurrentRowVisibleIndex();\n if (visibleRowIndex < 0) {\n return false;\n }\n const focusedRow = this.table.rowElements[visibleRowIndex]!;\n\n let focusRowOnly = false;\n switch (this.focusType) {\n case TableFocusType.row:\n focusRowOnly = true;\n break;\n case TableFocusType.cell:\n case TableFocusType.cellActionMenu:\n case TableFocusType.cellContent:\n focusRowOnly = focusedRow instanceof TableGroupRow;\n break;\n default:\n break;\n }\n const focusOptions = { preventScroll: !allowScroll };\n if (focusRowOnly) {\n this.focusElement(focusedRow, focusOptions);\n return true;\n }\n this.focusRowElement(focusedRow, focusOptions);\n return true;\n }\n\n private focusRowElement(\n row: TableRow | TableGroupRow,\n focusOptions?: FocusOptions\n ): void {\n const rowElements = row.getFocusableElements();\n let focusableElement: HTMLElement | undefined;\n switch (this.focusType) {\n case TableFocusType.rowSelectionCheckbox:\n focusableElement = rowElements.selectionCheckbox;\n break;\n case TableFocusType.cell: {\n focusableElement = rowElements.cells[this.columnIndex]!.cell;\n break;\n }\n case TableFocusType.cellActionMenu: {\n const actionMenuButton = rowElements.cells[this.columnIndex]?.cell.actionMenuButton;\n if (actionMenuButton) {\n focusableElement = actionMenuButton;\n this.setActionMenuButtonFocused(actionMenuButton, true);\n }\n break;\n }\n case TableFocusType.cellContent: {\n focusableElement = rowElements.cells[this.columnIndex]?.cell.cellView\n .tabbableChildren[this.cellContentIndex];\n break;\n }\n default:\n break;\n }\n if (focusableElement) {\n this.focusElement(focusableElement, focusOptions);\n }\n }\n\n private focusHeaderElement(): boolean {\n const headerElements = this.getTableHeaderFocusableElements();\n let focusableElement: HTMLElement | undefined;\n switch (this.focusType) {\n case TableFocusType.headerActions:\n focusableElement = headerElements.headerActions[this.headerActionIndex];\n break;\n case TableFocusType.columnHeader:\n focusableElement = headerElements.columnHeaders[this.columnIndex];\n break;\n default:\n break;\n }\n if (focusableElement) {\n this.focusElement(focusableElement);\n return true;\n }\n return false;\n }\n\n private getCurrentRowVisibleIndex(): number {\n return this.table.rowElements.findIndex(\n row => row.resolvedRowIndex === this.rowIndex\n );\n }\n\n private getTableHeaderFocusableElements(): TableHeaderFocusableElements {\n const headerActions: HTMLElement[] = [];\n if (\n this.table.selectionCheckbox?.getRootNode()\n === this.table.shadowRoot\n ) {\n headerActions.push(this.table.selectionCheckbox);\n }\n\n if (\n this.table.showCollapseAll\n && this.table.collapseAllButton?.getRootNode()\n === this.table.shadowRoot\n ) {\n headerActions.push(this.table.collapseAllButton);\n }\n\n const columnHeaders: HTMLElement[] = [];\n if (this.canFocusColumnHeaders()) {\n this.table.columnHeadersContainer\n .querySelectorAll(tableHeaderTag)\n .forEach(header => columnHeaders.push(header));\n }\n\n return { headerActions, columnHeaders };\n }\n\n private canFocusColumnHeaders(): boolean {\n return (\n this.table.columns.find(\n c => !c.columnInternals.sortingDisabled\n ) !== undefined\n );\n }\n\n private getCurrentRow(): TableRow | TableGroupRow | undefined {\n return this.table.rowElements[this.getCurrentRowVisibleIndex()];\n }\n\n private isRowExpanded(\n row: TableRow | TableGroupRow | undefined\n ): boolean | undefined {\n if (\n (row instanceof TableRow && row.isParentRow)\n || row instanceof TableGroupRow\n ) {\n return row.expanded;\n }\n return undefined;\n }\n\n private toggleRowExpanded(row: TableRow | TableGroupRow): void {\n if (row instanceof TableGroupRow) {\n row.onGroupExpandToggle();\n } else {\n row.onRowExpandToggle();\n }\n this.focusRowElement(row);\n }\n\n private getContainingRow(\n start: Element | undefined | null\n ): TableRow | TableGroupRow | undefined {\n return this.getContainingElement(start, e => this.isResolvedRowType(e));\n }\n\n private getContainingCell(\n start: Element | undefined | null\n ): TableCell | undefined {\n return this.getContainingElement(start, e => e instanceof TableCell);\n }\n\n private getContainingElement<TElement>(\n start: Element | undefined | null,\n isElementMatch: (element: Element) => boolean\n ): TElement | undefined {\n let possibleMatch = start;\n while (possibleMatch && possibleMatch !== this.table) {\n if (isElementMatch(possibleMatch)) {\n return possibleMatch as TElement;\n }\n possibleMatch = possibleMatch.parentElement\n ?? (possibleMatch.parentNode as ShadowRoot)?.host;\n }\n\n return undefined;\n }\n\n private isInTable(start: Element | null): boolean {\n let possibleMatch = start;\n while (possibleMatch && possibleMatch !== this.table) {\n possibleMatch = possibleMatch.parentElement\n ?? (possibleMatch.parentNode as ShadowRoot)?.host;\n }\n\n return possibleMatch === this.table;\n }\n\n private getActiveElement(): HTMLElement | null {\n let activeElement = document.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n // In some cases, the active element may be a sub-part of a control (example: MenuButton -> ToggleButton -> a div with tabindex=0). Stop at the outer control boundary, so that\n // we can more simply check equality against the elements of getTableHeaderFocusableElements() / row.getFocusableElements().\n // (For rows/cells/cell views, we do need to recurse into them, to get to the appropriate focused controls though)\n if (\n activeElement instanceof FoundationElement\n && !this.isResolvedRowType(activeElement)\n && !(activeElement instanceof TableCell)\n && !(activeElement instanceof TableCellView)\n ) {\n break;\n }\n }\n\n return activeElement as HTMLElement;\n }\n\n private focusFirstInteractiveElementInCurrentCell(\n rowElements?: TableRowFocusableElements\n ): boolean {\n if (!rowElements) {\n return false;\n }\n return (\n this.trySetCellContentFocus(rowElements, 0)\n || this.trySetCellActionMenuFocus(rowElements)\n );\n }\n\n private hasRowOrCellFocusType(): boolean {\n switch (this.focusType) {\n case TableFocusType.cell:\n case TableFocusType.cellActionMenu:\n case TableFocusType.cellContent:\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n return true;\n default:\n return false;\n }\n }\n\n private hasHeaderFocusType(): boolean {\n switch (this.focusType) {\n case TableFocusType.headerActions:\n case TableFocusType.columnHeader:\n return true;\n default:\n return false;\n }\n }\n\n private trySetRowSelectionCheckboxFocus(\n rowElements: TableRowFocusableElements | undefined\n ): boolean {\n if (rowElements?.selectionCheckbox) {\n this.focusType = TableFocusType.rowSelectionCheckbox;\n this.focusCurrentRow(true);\n return true;\n }\n return false;\n }\n\n private trySetColumnHeaderFocus(\n headerElements: TableHeaderFocusableElements,\n columnIndex: number\n ): boolean {\n if (\n columnIndex >= 0\n && columnIndex < headerElements.columnHeaders.length\n ) {\n this.focusType = TableFocusType.columnHeader;\n this.columnIndex = columnIndex;\n this.focusHeaderElement();\n return true;\n }\n return false;\n }\n\n private trySetHeaderActionFocus(\n headerElements: TableHeaderFocusableElements,\n headerActionIndex: number\n ): boolean {\n if (\n headerActionIndex >= 0\n && headerActionIndex < headerElements.headerActions.length\n ) {\n this.focusType = TableFocusType.headerActions;\n this.headerActionIndex = headerActionIndex;\n this.focusHeaderElement();\n return true;\n }\n return false;\n }\n\n private trySetCellFocus(\n rowElements: TableRowFocusableElements | undefined,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n if (!rowElements) {\n return false;\n }\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (newColumnIndex >= 0 && newColumnIndex < rowElements.cells.length) {\n this.focusType = TableFocusType.cell;\n this.setRowCellFocusState(newColumnIndex, newRowIndex, true);\n return true;\n }\n\n return false;\n }\n\n private trySetCellContentFocus(\n rowElements: TableRowFocusableElements | undefined,\n cellContentIndex: number,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n if (!rowElements) {\n return false;\n }\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (\n newColumnIndex >= 0\n && newColumnIndex < rowElements.cells.length\n && cellContentIndex >= 0\n && cellContentIndex\n < rowElements.cells[newColumnIndex]!.cell.cellView\n .tabbableChildren.length\n ) {\n this.setCellContentFocusState(\n cellContentIndex,\n newRowIndex,\n newColumnIndex,\n true\n );\n return true;\n }\n\n return false;\n }\n\n private trySetCellActionMenuFocus(\n rowElements: TableRowFocusableElements,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (\n newColumnIndex >= 0\n && newColumnIndex < rowElements.cells.length\n && rowElements.cells[newColumnIndex]!.actionMenuButton\n ) {\n this.setCellActionMenuFocusState(newRowIndex, newColumnIndex, true);\n return true;\n }\n\n return false;\n }\n\n private setCellActionMenuFocusState(\n rowIndex: number,\n columnIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cellActionMenu;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setCellContentFocusState(\n cellContentIndex: number,\n rowIndex: number,\n columnIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cellContent;\n this.cellContentIndex = cellContentIndex;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setRowFocusState(rowIndex?: number): void {\n this.focusType = TableFocusType.row;\n if (rowIndex !== undefined) {\n this.rowIndex = rowIndex;\n }\n }\n\n private setCellFocusState(\n columnIndex: number,\n rowIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cell;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setRowCellFocusState(\n columnIndex: number,\n rowIndex: number,\n focusElement: boolean\n ): void {\n this.rowIndex = rowIndex;\n this.columnIndex = columnIndex;\n if (focusElement) {\n this.focusCurrentRow(true);\n }\n }\n\n private isResolvedRowType(row: unknown): row is TableRow | TableGroupRow {\n return row instanceof TableRow || row instanceof TableGroupRow;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"keyboard-navigation-manager.js","sourceRoot":"","sources":["../../../../src/table/models/keyboard-navigation-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Notifier, type Subscriber, Observable } from '@ni/fast-element';\nimport {\n keyArrowDown,\n keyArrowLeft,\n keyArrowRight,\n keyArrowUp,\n keyEnd,\n keyEnter,\n keyEscape,\n keyFunction2,\n keyHome,\n keyPageDown,\n keyPageUp,\n keySpace,\n keyTab\n} from '@ni/fast-web-utilities';\nimport { FoundationElement } from '@ni/fast-foundation';\nimport type { ScrollToOptions } from '@tanstack/virtual-core';\nimport type { Table } from '..';\nimport { TableFocusType } from '../types';\nimport type {\n TableActionMenuToggleEventDetail,\n TableHeaderFocusableElements,\n TableRowFocusableElements,\n TableRecord\n} from '../types';\nimport type { Virtualizer } from './virtualizer';\nimport { TableGroupRow } from '../components/group-row';\nimport { TableRow } from '../components/row';\nimport { TableCell } from '../components/cell';\nimport type { MenuButton } from '../../menu-button';\nimport { tableHeaderTag } from '../components/header';\nimport { TableCellView } from '../../table-column/base/cell-view';\n\ninterface TableFocusState {\n focusType: TableFocusType;\n headerActionIndex?: number;\n rowIndex?: number;\n columnIndex?: number;\n cellContentIndex?: number;\n}\n\n/**\n * Manages the keyboard navigation and focus within the table.\n * @internal\n */\nexport class KeyboardNavigationManager<\n TData extends TableRecord\n> implements Subscriber {\n private focusType: TableFocusType = TableFocusType.none;\n private headerActionIndex = -1;\n private rowIndex = -1;\n private cellContentIndex = -1;\n private columnIndex = -1;\n private focusWithinTable = false;\n private isCurrentlyFocusingElement = false;\n private focusedViaPointer = false;\n private readonly tableNotifier: Notifier;\n private readonly virtualizerNotifier: Notifier;\n private visibleRowNotifiers: Notifier[] = [];\n private get inNavigationMode(): boolean {\n return (\n this.focusType !== TableFocusType.cellActionMenu\n && this.focusType !== TableFocusType.cellContent\n );\n }\n\n public constructor(\n private readonly table: Table<TData>,\n private readonly virtualizer: Virtualizer<TData>\n ) {\n this.tableNotifier = Observable.getNotifier(this.table);\n this.tableNotifier.subscribe(this, 'rowElements');\n this.virtualizerNotifier = Observable.getNotifier(this.virtualizer);\n this.virtualizerNotifier.subscribe(this, 'visibleItems');\n }\n\n public resetFocusState(): void {\n this.focusType = TableFocusType.none;\n const activeElement = this.getActiveElement();\n if (activeElement && this.isInTable(activeElement)) {\n this.setDefaultFocus();\n }\n }\n\n public get hasActiveRowOrCellFocus(): boolean {\n return this.focusWithinTable && this.hasRowOrCellFocusType();\n }\n\n public connect(): void {\n this.table.addEventListener(\n 'keydown',\n this.onCaptureKeyDown as EventListener,\n { capture: true }\n );\n this.table.addEventListener('keydown', this.onKeyDown as EventListener);\n this.table.addEventListener(\n 'pointerdown',\n this.onPointerDown as EventListener\n );\n this.table.addEventListener(\n 'pointerup',\n this.onPointerUpOrCancel as EventListener\n );\n this.table.addEventListener(\n 'pointercancel',\n this.onPointerUpOrCancel as EventListener\n );\n this.table.addEventListener(\n 'focusin',\n this.onTableFocusIn as EventListener\n );\n this.table.addEventListener(\n 'focusout',\n this.onTableFocusOut as EventListener\n );\n this.table.viewport.addEventListener('keydown', this.onViewportKeyDown);\n this.table.viewport.addEventListener(\n 'cell-action-menu-blur',\n this.onCellActionMenuBlur as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-view-focus-in',\n this.onCellViewFocusIn as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-focus-in',\n this.onCellFocusIn as EventListener\n );\n this.table.viewport.addEventListener(\n 'cell-blur',\n this.onCellBlur as EventListener\n );\n }\n\n public disconnect(): void {\n this.table.removeEventListener(\n 'keydown',\n this.onCaptureKeyDown as EventListener,\n { capture: true }\n );\n this.table.removeEventListener(\n 'keydown',\n this.onKeyDown as EventListener\n );\n this.table.removeEventListener(\n 'pointerdown',\n this.onPointerDown as EventListener\n );\n this.table.removeEventListener(\n 'pointerup',\n this.onPointerUpOrCancel as EventListener\n );\n this.table.removeEventListener(\n 'pointercancel',\n this.onPointerUpOrCancel as EventListener\n );\n this.table.removeEventListener(\n 'focusin',\n this.onTableFocusIn as EventListener\n );\n this.table.removeEventListener(\n 'focusout',\n this.onTableFocusOut as EventListener\n );\n this.table.viewport.removeEventListener(\n 'keydown',\n this.onViewportKeyDown\n );\n this.table.viewport.removeEventListener(\n 'cell-action-menu-blur',\n this.onCellActionMenuBlur as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-view-focus-in',\n this.onCellViewFocusIn as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-focus-in',\n this.onCellFocusIn as EventListener\n );\n this.table.viewport.removeEventListener(\n 'cell-blur',\n this.onCellBlur as EventListener\n );\n }\n\n public handleChange(source: unknown, args: unknown): void {\n let focusRowAndCell = false;\n if (source === this.virtualizer && args === 'visibleItems') {\n focusRowAndCell = true;\n } else if (source === this.table && args === 'rowElements') {\n for (const notifier of this.visibleRowNotifiers) {\n notifier.unsubscribe(this);\n }\n this.visibleRowNotifiers = [];\n for (const visibleRow of this.table.rowElements) {\n const rowNotifier = Observable.getNotifier(visibleRow);\n rowNotifier.subscribe(this, 'resolvedRowIndex');\n this.visibleRowNotifiers.push(rowNotifier);\n if (visibleRow.resolvedRowIndex === this.rowIndex) {\n focusRowAndCell = true;\n }\n }\n } else if (\n args === 'resolvedRowIndex'\n && this.isResolvedRowType(source)\n ) {\n if (source.resolvedRowIndex === this.rowIndex) {\n focusRowAndCell = true;\n }\n }\n\n if (focusRowAndCell) {\n // We want open action menus to be closed, and focused interactive cell content blurred, on scroll. We also don't want to\n // refocus the interactive cell content after the scroll, as the element no longer represents the same table data at that\n // point. So in both those cases, we focus the cell here. This also lets us maintain what row/ cell the user had focused\n // previously.\n if (\n this.focusType === TableFocusType.cellActionMenu\n || this.focusType === TableFocusType.cellContent\n ) {\n this.setCellFocusState(this.columnIndex, this.rowIndex, false);\n }\n if (this.inNavigationMode && this.hasRowOrCellFocusType()) {\n if (this.rowIndex > this.table.tableData.length - 1) {\n // Focused row index no longer valid, coerce to 1st row if possible\n if (this.table.tableData.length > 0) {\n this.rowIndex = 0;\n } else {\n if (this.focusWithinTable) {\n this.setDefaultFocus();\n } else {\n this.focusType = TableFocusType.none;\n }\n return;\n }\n }\n if (this.focusWithinTable) {\n this.focusCurrentRow(false);\n }\n }\n }\n }\n\n public onRowFocusIn(event: FocusEvent): void {\n if (this.isCurrentlyFocusingElement) {\n return;\n }\n const row = event.target;\n if (this.isResolvedRowType(row)) {\n if (this.rowIndex !== row.resolvedRowIndex) {\n // If user focuses a row some other way (e.g. mouse), update our focus state so future keyboard nav\n // will start from that row\n this.setRowFocusState(row.resolvedRowIndex);\n }\n }\n }\n\n public onRowBlur(event: FocusEvent): void {\n const row = event.target;\n if (this.isResolvedRowType(row)) {\n this.setElementFocusable(row, false);\n }\n }\n\n public onRowActionMenuToggle(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n const isOpen = event.detail.newState;\n if (isOpen) {\n const row = event.target as TableRow;\n const columnIndex = this.table.visibleColumns.findIndex(\n column => column.columnId === event.detail.columnId\n );\n this.setCellActionMenuFocusState(\n row.resolvedRowIndex!,\n columnIndex,\n false\n );\n }\n }\n\n private readonly onTableFocusIn = (event: FocusEvent): void => {\n this.focusWithinTable = true;\n this.updateFocusStateFromActiveElement();\n\n // Sets initial focus on the appropriate table content\n const actionMenuOpen = this.table.openActionMenuRecordId !== undefined;\n if (!actionMenuOpen) {\n if (this.focusType === TableFocusType.none) {\n this.focusSomethingOtherThanTheTable();\n } else if (event.target === this.table) {\n // restore focus to last focused element\n if (this.hasRowOrCellFocusType() && this.rowIndexIsValid(this.rowIndex)) {\n this.scrollToAndFocusRow(this.rowIndex);\n } else if (this.hasHeaderFocusType()) {\n this.focusHeaderElement();\n } else {\n // should only get here if focusType was row/cell, but rowIndex was invalid\n this.focusSomethingOtherThanTheTable();\n }\n }\n }\n this.focusedViaPointer = false;\n };\n\n private focusSomethingOtherThanTheTable(): void {\n this.setDefaultFocus();\n if (this.focusType === TableFocusType.none) {\n // nothing within the table to focus\n this.table.blur();\n }\n }\n\n private readonly onTableFocusOut = (): void => {\n this.focusWithinTable = false;\n };\n\n private readonly onCellActionMenuBlur = (\n event: CustomEvent<TableCell>\n ): void => {\n event.stopPropagation();\n const cell = event.detail;\n if (cell.actionMenuButton) {\n // Ensure that action menu buttons get hidden when no longer focused\n this.setActionMenuButtonFocused(cell.actionMenuButton, false);\n }\n };\n\n private readonly onCellViewFocusIn = (\n event: CustomEvent<TableCell>\n ): void => {\n event.stopPropagation();\n this.updateFocusStateFromActiveElement();\n };\n\n private readonly onCellFocusIn = (event: CustomEvent<TableCell>): void => {\n event.stopPropagation();\n const cell = event.detail;\n const row = this.updateFocusStateFromActiveElement();\n if (row) {\n if (\n this.hasRowOrCellFocusType()\n && this.rowIndex !== row.resolvedRowIndex\n ) {\n this.setRowFocusState(row.resolvedRowIndex);\n }\n }\n\n // Currently, clicking a non-interactive cell only updates the focus state to that row, it\n // doesn't focus the cell. If we revisit this, we most likely need to set the cells to tabindex=-1\n // upfront too, so their focusing behavior is consistent whether they've been previously keyboard\n // focused or not.\n if (\n this.focusType === TableFocusType.row\n && this.getActiveElement() === cell\n ) {\n this.focusCurrentRow(false);\n }\n };\n\n private readonly onCellBlur = (event: CustomEvent<TableCell>): void => {\n event.stopPropagation();\n const cell = event.detail;\n this.setElementFocusable(cell, false);\n };\n\n private readonly onCaptureKeyDown = (event: KeyboardEvent): void => {\n let handled = false;\n if (event.key === keyTab) {\n handled = this.onTabPressed(event.shiftKey);\n } else if (this.inNavigationMode) {\n switch (event.key) {\n case keyArrowLeft:\n handled = this.onLeftArrowPressed();\n break;\n case keyArrowRight:\n handled = this.onRightArrowPressed();\n break;\n case keyArrowUp:\n handled = this.onUpArrowPressed();\n break;\n case keyArrowDown:\n handled = this.onDownArrowPressed();\n break;\n case keyPageUp:\n handled = this.onPageUpPressed();\n break;\n case keyPageDown:\n handled = this.onPageDownPressed();\n break;\n case keyHome:\n handled = this.onHomePressed(event.ctrlKey);\n break;\n case keyEnd:\n handled = this.onEndPressed(event.ctrlKey);\n break;\n case keyEnter:\n handled = this.onEnterPressed(event.ctrlKey);\n break;\n case keySpace:\n handled = this.onSpacePressed(event.shiftKey);\n break;\n case keyFunction2:\n handled = this.onF2Pressed();\n break;\n default:\n break;\n }\n }\n if (handled) {\n event.preventDefault();\n }\n };\n\n private readonly onKeyDown = (event: KeyboardEvent): void => {\n if (!this.inNavigationMode && !event.defaultPrevented) {\n if (event.key === keyEscape || event.key === keyFunction2) {\n const row = this.getCurrentRow();\n if (row) {\n this.trySetCellFocus(row.getFocusableElements());\n }\n }\n }\n };\n\n private readonly onPointerDown = (): void => {\n this.focusedViaPointer = true;\n };\n\n private readonly onPointerUpOrCancel = (): void => {\n this.focusedViaPointer = false;\n };\n\n private readonly onViewportKeyDown = (event: KeyboardEvent): void => {\n let handleEvent = !this.inNavigationMode\n && (event.key === keyArrowUp || event.key === keyArrowDown);\n switch (event.key) {\n case keyPageUp:\n case keyPageDown:\n case keyHome:\n case keyEnd:\n handleEvent = true;\n break;\n default:\n break;\n }\n if (handleEvent) {\n // Swallow key presses that would cause table scrolling, independently of keyboard navigation\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n private onEnterPressed(ctrlKey: boolean): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n }\n if (this.focusType === TableFocusType.row) {\n if (row instanceof TableGroupRow) {\n this.toggleRowExpanded(row);\n return true;\n }\n }\n if (this.focusType === TableFocusType.cell) {\n if (ctrlKey) {\n const cell = rowElements?.cells[this.columnIndex];\n if (cell?.actionMenuButton && !cell.actionMenuButton.open) {\n cell.actionMenuButton.toggleButton!.control.click();\n return true;\n }\n }\n return this.focusFirstInteractiveElementInCurrentCell(rowElements);\n }\n return false;\n }\n\n private onF2Pressed(): boolean {\n if (this.focusType === TableFocusType.cell) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return this.focusFirstInteractiveElementInCurrentCell(rowElements);\n }\n return false;\n }\n\n private onSpacePressed(shiftKey: boolean): boolean {\n if (\n this.focusType === TableFocusType.row\n || this.focusType === TableFocusType.cell\n ) {\n if (this.focusType === TableFocusType.row || shiftKey) {\n const row = this.getCurrentRow();\n if (row instanceof TableRow && row.selectable) {\n row.onSelectionChange(row.selected, !row.selected);\n } else if (row instanceof TableGroupRow) {\n this.toggleRowExpanded(row);\n }\n }\n // Default Space behavior scrolls down, which is redundant given the rest of our keyboard nav code, and we'd still try to focus a\n // row that you scrolled away from. So suppress default Space behavior if a row or cell is selected, regardless of if we're\n // toggling selection or not.\n return true;\n }\n return false;\n }\n\n private onLeftArrowPressed(): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n let headerElements!: TableHeaderFocusableElements;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n } else if (this.hasHeaderFocusType()) {\n headerElements = this.getTableHeaderFocusableElements();\n }\n\n switch (this.focusType) {\n case TableFocusType.headerActions:\n return this.trySetHeaderActionFocus(\n headerElements,\n this.headerActionIndex - 1\n );\n case TableFocusType.columnHeader:\n return (\n this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex - 1\n )\n || this.trySetHeaderActionFocus(\n headerElements,\n headerElements.headerActions.length - 1\n )\n );\n case TableFocusType.row:\n if (this.isRowExpanded(row) === true) {\n this.toggleRowExpanded(row!);\n return true;\n }\n return false;\n case TableFocusType.rowSelectionCheckbox:\n this.setRowFocusState();\n return this.focusCurrentRow(true);\n case TableFocusType.cell:\n if (\n !this.trySetCellFocus(rowElements, this.columnIndex - 1)\n && !this.trySetRowSelectionCheckboxFocus(rowElements)\n ) {\n this.setRowFocusState();\n this.focusCurrentRow(true);\n }\n return true;\n default:\n break;\n }\n\n return false;\n }\n\n private onRightArrowPressed(): boolean {\n let row: TableRow | TableGroupRow | undefined;\n let rowElements: TableRowFocusableElements | undefined;\n let headerElements!: TableHeaderFocusableElements;\n if (this.hasRowOrCellFocusType()) {\n row = this.getCurrentRow();\n rowElements = row?.getFocusableElements();\n } else if (this.hasHeaderFocusType()) {\n headerElements = this.getTableHeaderFocusableElements();\n }\n\n switch (this.focusType) {\n case TableFocusType.headerActions:\n return (\n this.trySetHeaderActionFocus(\n headerElements,\n this.headerActionIndex + 1\n ) || this.trySetColumnHeaderFocus(headerElements, 0)\n );\n case TableFocusType.columnHeader:\n return this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex + 1\n );\n case TableFocusType.row:\n if (this.isRowExpanded(row) === false) {\n this.toggleRowExpanded(row!);\n return true;\n }\n return (\n this.trySetRowSelectionCheckboxFocus(rowElements)\n || this.trySetCellFocus(rowElements, 0)\n );\n case TableFocusType.rowSelectionCheckbox:\n return this.trySetCellFocus(rowElements, 0);\n case TableFocusType.cell:\n return this.trySetCellFocus(rowElements, this.columnIndex + 1);\n default:\n break;\n }\n\n return false;\n }\n\n private onUpArrowPressed(): boolean {\n this.onMoveUp(1);\n // Always prevent default - prevents page scroll, and FireFox changing focus if focus is at table extents\n return true;\n }\n\n private onPageUpPressed(): boolean {\n return this.onMoveUp(this.virtualizer.pageSize);\n }\n\n private onHomePressed(ctrlKey: boolean): boolean {\n if (this.handleHomeEndWithinRow(ctrlKey)) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return (\n this.trySetRowSelectionCheckboxFocus(rowElements)\n || this.trySetCellFocus(rowElements, 0)\n );\n }\n\n return this.onMoveUp(0, 0);\n }\n\n private onDownArrowPressed(): boolean {\n this.onMoveDown(1);\n // Always prevent default - prevents page scroll, and FireFox changing focus if focus is at table extents\n return true;\n }\n\n private onPageDownPressed(): boolean {\n return this.onMoveDown(this.virtualizer.pageSize);\n }\n\n private onEndPressed(ctrlKey: boolean): boolean {\n if (this.handleHomeEndWithinRow(ctrlKey)) {\n const row = this.getCurrentRow();\n const rowElements = row?.getFocusableElements();\n return this.trySetCellFocus(\n rowElements,\n this.table.visibleColumns.length - 1\n );\n }\n\n return this.onMoveDown(0, this.table.tableData.length - 1);\n }\n\n private handleHomeEndWithinRow(ctrlKey: boolean): boolean {\n return (\n (this.focusType === TableFocusType.cell\n || this.focusType === TableFocusType.rowSelectionCheckbox)\n && !ctrlKey\n );\n }\n\n private onTabPressed(shiftKeyPressed: boolean): boolean {\n const activeElement = this.getActiveElement();\n if (activeElement === null || activeElement === this.table) {\n return false;\n }\n const nextFocusState = this.hasRowOrCellFocusType()\n ? this.getNextRowTabStop(shiftKeyPressed)\n : this.getNextHeaderTabStop(shiftKeyPressed);\n if (nextFocusState) {\n this.focusType = nextFocusState.focusType;\n this.rowIndex = nextFocusState.rowIndex ?? this.rowIndex;\n this.columnIndex = nextFocusState.columnIndex ?? this.columnIndex;\n this.headerActionIndex = nextFocusState.headerActionIndex ?? this.headerActionIndex;\n this.cellContentIndex = nextFocusState.cellContentIndex ?? this.cellContentIndex;\n if (this.hasRowOrCellFocusType()) {\n this.focusCurrentRow(!this.focusedViaPointer);\n } else {\n this.focusHeaderElement();\n }\n return true;\n }\n this.blurAfterLastTab(activeElement);\n return false;\n }\n\n private getNextRowTabStop(\n shiftKeyPressed: boolean\n ): TableFocusState | undefined {\n const row = this.getCurrentRow();\n if (row === undefined) {\n return undefined;\n }\n let startIndex = -1;\n const focusStates = [];\n const rowElements = row.getFocusableElements();\n if (rowElements.selectionCheckbox) {\n focusStates.push({\n focusType: TableFocusType.rowSelectionCheckbox\n });\n if (this.focusType === TableFocusType.rowSelectionCheckbox) {\n startIndex = 0;\n }\n }\n let cellIndex = 0;\n while (cellIndex < rowElements.cells.length) {\n const firstCellTabbableIndex = focusStates.length;\n const cellInfo = rowElements.cells[cellIndex]!;\n const cellViewTabbableChildren = cellInfo.cell.cellView.tabbableChildren;\n for (let i = 0; i < cellViewTabbableChildren.length; i++) {\n focusStates.push({\n focusType: TableFocusType.cellContent,\n columnIndex: cellIndex,\n cellContentIndex: i\n });\n if (\n this.focusType === TableFocusType.cellContent\n && this.columnIndex === cellIndex\n && this.cellContentIndex === i\n ) {\n startIndex = focusStates.length - 1;\n }\n }\n if (cellInfo.actionMenuButton) {\n focusStates.push({\n focusType: TableFocusType.cellActionMenu,\n columnIndex: cellIndex\n });\n if (\n this.focusType === TableFocusType.cellActionMenu\n && this.columnIndex === cellIndex\n ) {\n startIndex = focusStates.length - 1;\n }\n }\n const lastCellTabbableIndex = focusStates.length - 1;\n if (\n this.focusType === TableFocusType.cell\n && this.columnIndex === cellIndex\n ) {\n startIndex = shiftKeyPressed\n ? lastCellTabbableIndex + 1\n : firstCellTabbableIndex - 1;\n }\n cellIndex += 1;\n }\n if (this.focusType === TableFocusType.row) {\n startIndex = shiftKeyPressed ? focusStates.length : -1;\n }\n const direction = shiftKeyPressed ? -1 : 1;\n return focusStates[startIndex + direction];\n }\n\n private getNextHeaderTabStop(\n shiftKeyPressed: boolean\n ): TableFocusState | undefined {\n let startIndex = -1;\n const focusStates = [];\n const headerTabbableElements = this.getTableHeaderFocusableElements().headerActions;\n for (let i = 0; i < headerTabbableElements.length; i++) {\n focusStates.push({\n focusType: TableFocusType.headerActions,\n headerActionIndex: i\n });\n }\n if (this.focusType === TableFocusType.headerActions) {\n startIndex = this.headerActionIndex;\n } else {\n // TableFocusType.columnHeader\n startIndex = focusStates.length;\n }\n const direction = shiftKeyPressed ? -1 : 1;\n return focusStates[startIndex + direction];\n }\n\n private blurAfterLastTab(activeElement: HTMLElement): void {\n // In order to get the desired browser-provided Tab/Shift-Tab behavior of focusing the\n // element before/after the table, the table shouldn't have tabIndex=0 when this event\n // handling ends. However it needs to be tabIndex=0 so we can re-focus the table the next time\n // it's tabbed to, so set tabIndex back to 0 after a rAF.\n // Note: In Chrome this is only needed for Shift-Tab, but in Firefox both Tab and Shift-Tab need this\n // to work as expected.\n this.table.tabIndex = -1;\n window.requestAnimationFrame(() => {\n this.table.tabIndex = 0;\n });\n\n // Don't explicitly call blur() on activeElement (causes unexpected behavior on Safari / Mac Firefox)\n this.setElementFocusable(activeElement, false);\n }\n\n private onMoveUp(rowDelta: number, newRowIndex?: number): boolean {\n const coerceRowIndex = rowDelta > 1;\n switch (this.focusType) {\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n case TableFocusType.cell: {\n const scrollOptions: ScrollToOptions = {};\n let rowIndex = this.rowIndex;\n if (newRowIndex !== undefined) {\n rowIndex = newRowIndex;\n }\n rowIndex -= rowDelta;\n if (coerceRowIndex && rowIndex < 0) {\n rowIndex = 0;\n }\n if (rowDelta > 1) {\n scrollOptions.align = 'start';\n }\n\n if (rowIndex < this.rowIndex && rowIndex >= 0) {\n return this.scrollToAndFocusRow(rowIndex, scrollOptions);\n }\n if (rowIndex === -1) {\n const headerElements = this.getTableHeaderFocusableElements();\n if (\n this.focusType === TableFocusType.row\n || this.focusType === TableFocusType.rowSelectionCheckbox\n ) {\n return (\n this.trySetHeaderActionFocus(headerElements, 0)\n || this.trySetColumnHeaderFocus(headerElements, 0)\n );\n }\n return this.trySetColumnHeaderFocus(\n headerElements,\n this.columnIndex\n );\n }\n return false;\n }\n default:\n break;\n }\n\n return false;\n }\n\n private onMoveDown(rowDelta: number, newRowIndex?: number): boolean {\n const coerceRowIndex = rowDelta > 1;\n switch (this.focusType) {\n case TableFocusType.headerActions: {\n this.setRowFocusState(0);\n return this.scrollToAndFocusRow(0);\n }\n case TableFocusType.columnHeader: {\n this.setCellFocusState(this.columnIndex, 0, false);\n return this.scrollToAndFocusRow(0);\n }\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n case TableFocusType.cell: {\n const scrollOptions: ScrollToOptions = {};\n let rowIndex = this.rowIndex;\n if (newRowIndex !== undefined) {\n rowIndex = newRowIndex;\n }\n rowIndex += rowDelta;\n if (coerceRowIndex && rowIndex >= this.table.tableData.length) {\n rowIndex = this.table.tableData.length - 1;\n }\n if (rowDelta > 1) {\n scrollOptions.align = 'end';\n }\n if (\n rowIndex > this.rowIndex\n && rowIndex < this.table.tableData.length\n ) {\n return this.scrollToAndFocusRow(rowIndex, scrollOptions);\n }\n return false;\n }\n default:\n break;\n }\n\n return false;\n }\n\n private updateFocusStateFromActiveElement(): TableRow | TableGroupRow | undefined {\n // If the user is interacting with the table with non-keyboard methods (like mouse), we need to\n // update our focus state based on the current active/focused element\n const { activeElement, row, cell } = this.getActiveElementCellAndRow();\n if (!cell) {\n return row;\n }\n\n const columnIndex = this.table.visibleColumns.indexOf(cell.column!);\n\n if (cell.actionMenuButton === activeElement) {\n this.setCellActionMenuFocusState(\n row!.resolvedRowIndex!,\n columnIndex,\n false\n );\n } else {\n const contentIndex = cell.cellView.tabbableChildren.indexOf(activeElement!);\n if (contentIndex > -1) {\n this.setCellContentFocusState(\n contentIndex,\n row!.resolvedRowIndex!,\n columnIndex,\n false\n );\n }\n }\n return row;\n }\n\n private getActiveElementCellAndRow(): { activeElement?: HTMLElement, row?: TableRow | TableGroupRow, cell?: TableCell } {\n const activeElement = this.getActiveElement();\n if (!activeElement) {\n return {};\n }\n\n const row = this.getContainingRow(activeElement);\n if (!row) {\n return { activeElement };\n }\n\n if (row instanceof TableGroupRow) {\n return { activeElement, row };\n }\n\n const cell = this.getContainingCell(activeElement);\n return { activeElement, row, cell };\n }\n\n private focusElement(\n element: HTMLElement,\n focusOptions?: FocusOptions\n ): void {\n const previousActiveElement = this.getActiveElement();\n if (previousActiveElement !== element) {\n this.setElementFocusable(element, true);\n this.isCurrentlyFocusingElement = true;\n element.focus(focusOptions);\n this.isCurrentlyFocusingElement = false;\n if (\n previousActiveElement\n && this.isInTable(previousActiveElement)\n ) {\n this.setElementFocusable(previousActiveElement, false);\n }\n }\n }\n\n private setElementFocusable(\n element: HTMLElement,\n focusable: boolean\n ): void {\n if (element === this.table) {\n return;\n }\n\n element.tabIndex = focusable ? 0 : -1;\n }\n\n private setActionMenuButtonFocused(\n menuButton: MenuButton,\n focused: boolean\n ): void {\n // The action MenuButton needs to be visible in order to be focused, so this CSS class styling\n // handles that (see cell/styles.ts).\n if (focused) {\n menuButton.classList.add('cell-action-menu-focused');\n } else {\n menuButton.classList.remove('cell-action-menu-focused');\n }\n }\n\n private setDefaultFocus(): void {\n const headerElements = this.getTableHeaderFocusableElements();\n if (\n !this.trySetHeaderActionFocus(headerElements, 0)\n && !this.trySetColumnHeaderFocus(headerElements, 0)\n && !this.scrollToAndFocusRow(0)\n ) {\n this.focusType = TableFocusType.none;\n }\n }\n\n private scrollToAndFocusRow(\n totalRowIndex: number,\n scrollOptions?: ScrollToOptions\n ): boolean {\n if (!this.rowIndexIsValid(totalRowIndex)) {\n return false;\n }\n if (!this.hasRowOrCellFocusType()) {\n this.setRowFocusState();\n }\n this.rowIndex = totalRowIndex;\n this.virtualizer.scrollToIndex(totalRowIndex, scrollOptions);\n this.focusCurrentRow(!this.focusedViaPointer);\n return true;\n }\n\n private rowIndexIsValid(rowIndex: number): boolean {\n return rowIndex >= 0 && rowIndex < this.table.tableData.length;\n }\n\n private focusCurrentRow(allowScroll: boolean): boolean {\n const visibleRowIndex = this.getCurrentRowVisibleIndex();\n if (visibleRowIndex < 0) {\n return false;\n }\n const focusedRow = this.table.rowElements[visibleRowIndex]!;\n\n let focusRowOnly = false;\n switch (this.focusType) {\n case TableFocusType.row:\n focusRowOnly = true;\n break;\n case TableFocusType.cell:\n case TableFocusType.cellActionMenu:\n case TableFocusType.cellContent:\n focusRowOnly = focusedRow instanceof TableGroupRow;\n break;\n default:\n break;\n }\n const focusOptions = { preventScroll: !allowScroll };\n if (focusRowOnly) {\n this.focusElement(focusedRow, focusOptions);\n return true;\n }\n this.focusRowElement(focusedRow, focusOptions);\n return true;\n }\n\n private focusRowElement(\n row: TableRow | TableGroupRow,\n focusOptions?: FocusOptions\n ): void {\n const rowElements = row.getFocusableElements();\n let focusableElement: HTMLElement | undefined;\n switch (this.focusType) {\n case TableFocusType.rowSelectionCheckbox:\n focusableElement = rowElements.selectionCheckbox;\n break;\n case TableFocusType.cell: {\n focusableElement = rowElements.cells[this.columnIndex]!.cell;\n break;\n }\n case TableFocusType.cellActionMenu: {\n const actionMenuButton = rowElements.cells[this.columnIndex]?.cell.actionMenuButton;\n if (actionMenuButton) {\n focusableElement = actionMenuButton;\n this.setActionMenuButtonFocused(actionMenuButton, true);\n }\n break;\n }\n case TableFocusType.cellContent: {\n focusableElement = rowElements.cells[this.columnIndex]?.cell.cellView\n .tabbableChildren[this.cellContentIndex];\n break;\n }\n default:\n break;\n }\n if (focusableElement) {\n this.focusElement(focusableElement, focusOptions);\n }\n }\n\n private focusHeaderElement(): boolean {\n const headerElements = this.getTableHeaderFocusableElements();\n let focusableElement: HTMLElement | undefined;\n switch (this.focusType) {\n case TableFocusType.headerActions:\n focusableElement = headerElements.headerActions[this.headerActionIndex];\n break;\n case TableFocusType.columnHeader:\n focusableElement = headerElements.columnHeaders[this.columnIndex];\n break;\n default:\n break;\n }\n if (focusableElement) {\n this.focusElement(focusableElement, { preventScroll: this.focusedViaPointer });\n return true;\n }\n return false;\n }\n\n private getCurrentRowVisibleIndex(): number {\n return this.table.rowElements.findIndex(\n row => row.resolvedRowIndex === this.rowIndex\n );\n }\n\n private getTableHeaderFocusableElements(): TableHeaderFocusableElements {\n const headerActions: HTMLElement[] = [];\n if (\n this.table.selectionCheckbox?.getRootNode()\n === this.table.shadowRoot\n ) {\n headerActions.push(this.table.selectionCheckbox);\n }\n\n if (\n this.table.showCollapseAll\n && this.table.collapseAllButton?.getRootNode()\n === this.table.shadowRoot\n ) {\n headerActions.push(this.table.collapseAllButton);\n }\n\n const columnHeaders: HTMLElement[] = [];\n if (this.canFocusColumnHeaders()) {\n this.table.columnHeadersContainer\n .querySelectorAll(tableHeaderTag)\n .forEach(header => columnHeaders.push(header));\n }\n\n return { headerActions, columnHeaders };\n }\n\n private canFocusColumnHeaders(): boolean {\n return (\n this.table.columns.find(\n c => !c.columnInternals.sortingDisabled\n ) !== undefined\n );\n }\n\n private getCurrentRow(): TableRow | TableGroupRow | undefined {\n return this.table.rowElements[this.getCurrentRowVisibleIndex()];\n }\n\n private isRowExpanded(\n row: TableRow | TableGroupRow | undefined\n ): boolean | undefined {\n if (\n (row instanceof TableRow && row.isParentRow)\n || row instanceof TableGroupRow\n ) {\n return row.expanded;\n }\n return undefined;\n }\n\n private toggleRowExpanded(row: TableRow | TableGroupRow): void {\n if (row instanceof TableGroupRow) {\n row.onGroupExpandToggle();\n } else {\n row.onRowExpandToggle();\n }\n this.focusRowElement(row);\n }\n\n private getContainingRow(\n start: Element | undefined | null\n ): TableRow | TableGroupRow | undefined {\n return this.getContainingElement(start, e => this.isResolvedRowType(e));\n }\n\n private getContainingCell(\n start: Element | undefined | null\n ): TableCell | undefined {\n return this.getContainingElement(start, e => e instanceof TableCell);\n }\n\n private getContainingElement<TElement>(\n start: Element | undefined | null,\n isElementMatch: (element: Element) => boolean\n ): TElement | undefined {\n let possibleMatch = start;\n while (possibleMatch && possibleMatch !== this.table) {\n if (isElementMatch(possibleMatch)) {\n return possibleMatch as TElement;\n }\n possibleMatch = possibleMatch.parentElement\n ?? (possibleMatch.parentNode as ShadowRoot)?.host;\n }\n\n return undefined;\n }\n\n private isInTable(start: Element | null): boolean {\n let possibleMatch = start;\n while (possibleMatch && possibleMatch !== this.table) {\n possibleMatch = possibleMatch.parentElement\n ?? (possibleMatch.parentNode as ShadowRoot)?.host;\n }\n\n return possibleMatch === this.table;\n }\n\n private getActiveElement(): HTMLElement | null {\n let activeElement = document.activeElement;\n while (activeElement?.shadowRoot?.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n // In some cases, the active element may be a sub-part of a control (example: MenuButton -> ToggleButton -> a div with tabindex=0). Stop at the outer control boundary, so that\n // we can more simply check equality against the elements of getTableHeaderFocusableElements() / row.getFocusableElements().\n // (For rows/cells/cell views, we do need to recurse into them, to get to the appropriate focused controls though)\n if (\n activeElement instanceof FoundationElement\n && !this.isResolvedRowType(activeElement)\n && !(activeElement instanceof TableCell)\n && !(activeElement instanceof TableCellView)\n ) {\n break;\n }\n }\n\n return activeElement as HTMLElement;\n }\n\n private focusFirstInteractiveElementInCurrentCell(\n rowElements?: TableRowFocusableElements\n ): boolean {\n if (!rowElements) {\n return false;\n }\n return (\n this.trySetCellContentFocus(rowElements, 0)\n || this.trySetCellActionMenuFocus(rowElements)\n );\n }\n\n private hasRowOrCellFocusType(): boolean {\n switch (this.focusType) {\n case TableFocusType.cell:\n case TableFocusType.cellActionMenu:\n case TableFocusType.cellContent:\n case TableFocusType.row:\n case TableFocusType.rowSelectionCheckbox:\n return true;\n default:\n return false;\n }\n }\n\n private hasHeaderFocusType(): boolean {\n switch (this.focusType) {\n case TableFocusType.headerActions:\n case TableFocusType.columnHeader:\n return true;\n default:\n return false;\n }\n }\n\n private trySetRowSelectionCheckboxFocus(\n rowElements: TableRowFocusableElements | undefined\n ): boolean {\n if (rowElements?.selectionCheckbox) {\n this.focusType = TableFocusType.rowSelectionCheckbox;\n this.focusCurrentRow(!this.focusedViaPointer);\n return true;\n }\n return false;\n }\n\n private trySetColumnHeaderFocus(\n headerElements: TableHeaderFocusableElements,\n columnIndex: number\n ): boolean {\n if (\n columnIndex >= 0\n && columnIndex < headerElements.columnHeaders.length\n ) {\n this.focusType = TableFocusType.columnHeader;\n this.columnIndex = columnIndex;\n this.focusHeaderElement();\n return true;\n }\n return false;\n }\n\n private trySetHeaderActionFocus(\n headerElements: TableHeaderFocusableElements,\n headerActionIndex: number\n ): boolean {\n if (\n headerActionIndex >= 0\n && headerActionIndex < headerElements.headerActions.length\n ) {\n this.focusType = TableFocusType.headerActions;\n this.headerActionIndex = headerActionIndex;\n this.focusHeaderElement();\n return true;\n }\n return false;\n }\n\n private trySetCellFocus(\n rowElements: TableRowFocusableElements | undefined,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n if (!rowElements) {\n return false;\n }\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (newColumnIndex >= 0 && newColumnIndex < rowElements.cells.length) {\n this.focusType = TableFocusType.cell;\n this.setRowCellFocusState(newColumnIndex, newRowIndex, true);\n return true;\n }\n\n return false;\n }\n\n private trySetCellContentFocus(\n rowElements: TableRowFocusableElements | undefined,\n cellContentIndex: number,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n if (!rowElements) {\n return false;\n }\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (\n newColumnIndex >= 0\n && newColumnIndex < rowElements.cells.length\n && cellContentIndex >= 0\n && cellContentIndex\n < rowElements.cells[newColumnIndex]!.cell.cellView\n .tabbableChildren.length\n ) {\n this.setCellContentFocusState(\n cellContentIndex,\n newRowIndex,\n newColumnIndex,\n true\n );\n return true;\n }\n\n return false;\n }\n\n private trySetCellActionMenuFocus(\n rowElements: TableRowFocusableElements,\n columnIndex?: number,\n rowIndex?: number\n ): boolean {\n const newColumnIndex = columnIndex ?? this.columnIndex;\n const newRowIndex = rowIndex ?? this.rowIndex;\n\n if (\n newColumnIndex >= 0\n && newColumnIndex < rowElements.cells.length\n && rowElements.cells[newColumnIndex]!.actionMenuButton\n ) {\n this.setCellActionMenuFocusState(newRowIndex, newColumnIndex, true);\n return true;\n }\n\n return false;\n }\n\n private setCellActionMenuFocusState(\n rowIndex: number,\n columnIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cellActionMenu;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setCellContentFocusState(\n cellContentIndex: number,\n rowIndex: number,\n columnIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cellContent;\n this.cellContentIndex = cellContentIndex;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setRowFocusState(rowIndex?: number): void {\n this.focusType = TableFocusType.row;\n if (rowIndex !== undefined) {\n this.rowIndex = rowIndex;\n }\n }\n\n private setCellFocusState(\n columnIndex: number,\n rowIndex: number,\n focusElement: boolean\n ): void {\n this.focusType = TableFocusType.cell;\n this.setRowCellFocusState(columnIndex, rowIndex, focusElement);\n }\n\n private setRowCellFocusState(\n columnIndex: number,\n rowIndex: number,\n focusElement: boolean\n ): void {\n this.rowIndex = rowIndex;\n this.columnIndex = columnIndex;\n if (focusElement) {\n this.focusCurrentRow(!this.focusedViaPointer);\n }\n }\n\n private isResolvedRowType(row: unknown): row is TableRow | TableGroupRow {\n return row instanceof TableRow || row instanceof TableGroupRow;\n }\n}\n"]}
|
|
@@ -248,6 +248,24 @@ export const comments = {
|
|
|
248
248
|
calendarEventFillBlockedColor: 'Background fill to indicate the occupied slots in calendar resource rows',
|
|
249
249
|
calendarGrabHandleBackgroundColor: 'Background fill color for the editable calendar event grab handle',
|
|
250
250
|
calendarGridBorderColor: 'Border color for the calendar grid',
|
|
251
|
-
calendarGroupHeaderBackgroundColor: 'Background color for the calendar resource group header'
|
|
251
|
+
calendarGroupHeaderBackgroundColor: 'Background color for the calendar resource group header',
|
|
252
|
+
calendarEventBackgroundJobColor: 'Background color for job calendar events',
|
|
253
|
+
calendarEventBackgroundHoverJobColor: 'Color while hovering job calendar events',
|
|
254
|
+
calendarEventBorderJobColor: 'Border color for job calendar events',
|
|
255
|
+
calendarEventJobFontColor: 'Font color for job calendar events',
|
|
256
|
+
calendarEventBackgroundMaintenanceColor: 'Background color for maintenance calendar events',
|
|
257
|
+
calendarEventBackgroundHoverMaintenanceColor: 'Color while hovering maintenance calendar events',
|
|
258
|
+
calendarEventBorderMaintenanceColor: 'Border color for maintenance calendar events',
|
|
259
|
+
calendarEventBackgroundCalibrationColor: 'Background color for calibration calendar events',
|
|
260
|
+
calendarEventBackgroundHoverCalibrationColor: 'Color while hovering calibration calendar events',
|
|
261
|
+
calendarEventBorderCalibrationColor: 'Border color for calibration calendar events',
|
|
262
|
+
calendarEventBackgroundReservationColor: 'Background color for reservation calendar events',
|
|
263
|
+
calendarEventBackgroundHoverReservationColor: 'Color while hovering reservation calendar events',
|
|
264
|
+
calendarEventBorderReservationColor: 'Border color for reservation calendar events',
|
|
265
|
+
calendarEventBackgroundTransportOrderColor: 'Background color for transport order calendar events',
|
|
266
|
+
calendarEventBackgroundHoverTransportOrderColor: 'Color while hovering transport order calendar events',
|
|
267
|
+
calendarEventBorderTransportOrderColor: 'Border color for transport order calendar events',
|
|
268
|
+
calendarEventBackgroundAggregateAvailabilityColor: 'Background color for aggregate availability calendar events',
|
|
269
|
+
calendarEventBorderAggregateAvailabilityColor: 'Border color for aggregate availability calendar events'
|
|
252
270
|
};
|
|
253
271
|
//# sourceMappingURL=design-token-comments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-token-comments.js","sourceRoot":"","sources":["../../../src/theme-provider/design-token-comments.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as TokensNamespace from './design-tokens';\n\ntype TokenName = keyof typeof TokensNamespace;\n\nexport const comments: { readonly [key in TokenName]: string } = {\n actionRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n applicationBackgroundColor: 'Primary background color for the application',\n dividerBackgroundColor: 'Divider background color',\n headerBackgroundColor: 'Background color for application headers',\n sectionBackgroundColor: 'Background color for sections',\n sectionBackgroundImage: 'Gradient background image for sections.',\n buttonFillPrimaryColor:\n 'Control fill color for \"primary\" appearance-variant buttons',\n buttonPrimaryFontColor:\n 'Font color for \"primary\" appearance-variant buttons',\n buttonFillAccentColor:\n 'Control fill color for \"accent\" appearance-variant buttons',\n buttonAccentBlockFontColor:\n 'Font color for \"accent\" appearance-variant block buttons',\n buttonAccentOutlineFontColor:\n 'Font color for \"accent\" appearance-variant outline buttons',\n buttonBorderAccentOutlineColor:\n 'Border color for \"accent\" appearance-variant outline buttons',\n fillSelectedColor: 'Control fill color when a control is selected',\n fillSelectedRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n fillHoverSelectedColor:\n 'Control fill color when hovering a selected control',\n fillHoverColor: 'Control fill color when hovering component',\n fillHoverRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n fillDownColor: 'Control fill color when mousedown event occurs',\n borderColor: 'Standard control outline or border color',\n borderRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n failColor: 'Used to highlight errors or invalid input',\n warningColor:\n 'Used to highlight invalid input or for icons to indicate that a process errored or failed',\n passColor:\n 'Used to highlight a correct state or the successful completion of a process',\n informationColor:\n 'Used to highlight information, which provides more details on the item',\n borderHoverColor: 'Border color when hovering component',\n iconColor: 'Equivalent to the font color for icons',\n modalBackdropColor: 'Color of background overlay behind modal dialog boxes',\n popupBorderColor: 'Border color for menus and dialog boxes',\n cardBorderColor: 'Border color for cards',\n tagFillColor: 'Background fill color for tags, chips, or pills',\n controlHeight:\n 'Standard layout height for all controls. Add \"labelHeight\" for labels on top.',\n controlSlimHeight:\n 'Height of controls that are somewhat shorter than standard height.',\n smallPadding: 'Fixed 4px size ramp token for component layout',\n mediumPadding: 'Fixed 8px size ramp token for component layout',\n standardPadding: 'Fixed 16px size ramp token for component layout',\n largePadding: 'Fixed 24px size ramp token for component layout',\n labelHeight:\n 'Standard label height for components. Set the label font rather than explicitly setting the height for a label.',\n borderWidth: 'Standard border width for most components',\n dividerWidth: 'Width of dividers between panes of an application',\n iconSize: 'Standard layout height for all icons',\n groupHeaderTextTransform: 'CSS text-transform string to use for headers',\n drawerWidth: 'TODO: delete when able',\n dialogSmallWidth:\n 'Standard width for small dialogs like a confirmation dialog.',\n dialogSmallHeight:\n 'Standard height for small dialogs like a confirmation dialog.',\n dialogSmallMaxHeight:\n 'Standard maximum height for small dialogs like a confirmation dialog.',\n dialogLargeWidth: 'Standard width for large dialogs.',\n dialogLargeHeight: 'Standard height for large dialogs.',\n dialogLargeMaxHeight: 'Standard maximum height for large dialogs.',\n menuMinWidth: 'Standard menu min width for menu popup.',\n bannerGapSize: 'Space between stacked banners',\n spinnerSmallHeight: 'Small height (16px) for a spinner component',\n spinnerMediumHeight: 'Medium height (32px) for a spinner component',\n spinnerLargeHeight: 'Large height (64px) for a spinner component',\n tableFitRowsHeight:\n 'The height of the table when all rows are visible. It is set automatically to the correct value within the scope of each table.',\n smallDelay:\n 'Elements with small transition areas, such as icons and selection controls, have short durations.',\n mediumDelay:\n 'Elements with larger transition areas, such as bottom sheets and expanding chips, have slightly longer durations.',\n largeDelay:\n 'Animated elements that traverse a large portion of the screen have the longest durations.',\n headlinePlus1Font: 'Font shorthand for the \"Headline_2\" base token',\n headlinePlus1FontColor: 'Font color for the \"Headline_2\" base token',\n headlinePlus1DisabledFontColor:\n 'Disabled font color for the \"Headline_2\" base token',\n headlinePlus1FontFamily: 'Font family for the \"Headline_2\" base token',\n headlinePlus1FontSize: 'Font size for the \"Headline_2\" base token',\n headlinePlus1FontWeight: 'Font weight for the \"Headline_2\" base token',\n headlinePlus1FontLineHeight:\n 'Font line height for the \"Headline_2\" base token',\n headlineFont: 'Font shorthand for the \"Headline_1\" base token',\n headlineFontColor: 'Font color for the \"Headline_1\" base token',\n headlineDisabledFontColor:\n 'Disabled font color for the \"Headline_1\" base token',\n headlineFontFamily: 'Font family for the \"Headline_1\" base token',\n headlineFontSize: 'Font size for the \"Headline_1\" base token',\n headlineFontWeight: 'Font weight for the \"Headline_1\" base token',\n headlineFontLineHeight: 'Font line height for the \"Headline_1\" base token',\n tableHeaderFont: 'Font shorthand for the \"Grid_Header\" base token',\n tableHeaderFontColor: 'Font color for the \"Grid_Header\" base token',\n tableHeaderDisabledFontColor:\n 'Disabled font color for the \"Grid_Header\" base token',\n tableHeaderFontFamily: 'Font family for the \"Grid_Header\" base token',\n tableHeaderFontSize: 'Font size for the \"Grid_Header\" base token',\n tableHeaderFontWeight: 'Font weight for the \"Grid_Header\" base token',\n tableHeaderFontLineHeight:\n 'Font line height for the \"Grid_Header\" base token',\n titlePlus2Font: 'Font shorthand for the \"Title_3\" base token',\n titlePlus2FontColor: 'Font color for the \"Title_3\" base token',\n titlePlus2DisabledFontColor:\n 'Disabled font color for the \"Title_3\" base token',\n titlePlus2FontFamily: 'Font family for the \"Title_3\" base token',\n titlePlus2FontSize: 'Font size for the \"Title_3\" base token',\n titlePlus2FontWeight: 'Font weight for the \"Title_3\" base token',\n titlePlus2FontLineHeight: 'Font line height for the \"Title_3\" base token',\n titlePlus1Font: 'Font shorthand for the \"Title_2\" base token',\n titlePlus1FontColor: 'Font color for the \"Title_2\" base token',\n titlePlus1DisabledFontColor:\n 'Disabled font color for the \"Title_2\" base token',\n titlePlus1FontFamily: 'Font family for the \"Title_2\" base token',\n titlePlus1FontSize: 'Font size for the \"Title_2\" base token',\n titlePlus1FontWeight: 'Font weight for the \"Title_2\" base token',\n titlePlus1FontLineHeight: 'Font line height for the \"Title_2\" base token',\n titleFont: 'Font shorthand for the \"Title_1\" base token',\n titleFontColor: 'Font color for the \"Title_1\" base token',\n titleDisabledFontColor: 'Disabled font color for the \"Title_1\" base token',\n titleFontFamily: 'Font family for the \"Title_1\" base token',\n titleFontSize: 'Font size for the \"Title_1\" base token',\n titleFontWeight: 'Font weight for the \"Title_1\" base token',\n titleFontLineHeight: 'Font line height for the \"Title_1\" base token',\n subtitlePlus1Font: 'Font shorthand for the \"Subtitle_2\" base token',\n subtitlePlus1FontColor: 'Font color for the \"Subtitle_2\" base token',\n subtitlePlus1DisabledFontColor:\n 'Disabled font color for the \"Subtitle_2\" base token',\n subtitlePlus1FontFamily: 'Font family for the \"Subtitle_2\" base token',\n subtitlePlus1FontSize: 'Font size for the \"Subitle_2\" base token',\n subtitlePlus1FontWeight: 'Font weight for the \"Subtitle_2\" base token',\n subtitlePlus1FontLineHeight:\n 'Font line height for the \"Subtitle_2\" base token',\n subtitleFont: 'Font shorthand for the \"Subtitle_1\" base token',\n subtitleFontColor: 'Font color for the \"Subtitle_1\" base token',\n subtitleDisabledFontColor:\n 'Disabled font color for the \"Subtitle_1\" base token',\n subtitleFontFamily: 'Font family for the \"Subtitle_1\" base token',\n subtitleFontSize: 'Font size for the \"Subitle_1\" base token',\n subtitleFontWeight: 'Font weight for the \"Subtitle_1\" base token',\n subtitleFontLineHeight: 'Font line height for the \"Subtitle_1\" base token',\n linkFont: 'Font shorthand for links',\n linkFontColor: 'Font color for links',\n linkDisabledFontColor: 'Disabled font color for links',\n linkFontFamily: 'Font family for links',\n linkFontSize: 'Font size for links',\n linkFontWeight: 'Font weight for links',\n linkFontLineHeight: 'Font line height for links',\n linkActiveFont: 'Font shorthand for active links',\n linkActiveFontColor: 'Font color for active links',\n linkActiveDisabledFontColor: 'Disabled font color for active links',\n linkActiveFontFamily: 'Font family for active links',\n linkActiveFontSize: 'Font size for active links',\n linkActiveFontWeight: 'Font weight for active links',\n linkActiveFontLineHeight: 'Font line height for active links',\n linkProminentFont: 'Font shorthand for prominent links',\n linkProminentFontColor: 'Font color for prominent links',\n linkProminentDisabledFontColor: 'Disabled font color for prominent links',\n linkProminentFontFamily: 'Font family for prominent links',\n linkProminentFontSize: 'Font size for prominent links',\n linkProminentFontWeight: 'Font weight for prominent links',\n linkProminentFontLineHeight: 'Font line height for prominent links',\n linkActiveProminentFont: 'Font shorthand for active prominent links',\n linkActiveProminentFontColor: 'Font color for active prominent links',\n linkActiveProminentDisabledFontColor:\n 'Disabled font color for active prominent links',\n linkActiveProminentFontFamily: 'Font family for active prominent links',\n linkActiveProminentFontSize: 'Font size for active prominent links',\n linkActiveProminentFontWeight: 'Font weight for active prominent links',\n linkActiveProminentFontLineHeight:\n 'Font line height for active prominent links',\n placeholderFont: 'Font shorthand for the \"Placeholder\" base token',\n placeholderFontColor: 'Font color for the \"Placeholder\" base token',\n placeholderDisabledFontColor:\n 'Disabled font color for the \"Placeholder\" base token',\n placeholderFontFamily: 'Font family for the \"Placeholder\" base token',\n placeholderFontSize: 'Font size for the \"Placeholder\" base token',\n placeholderFontWeight: 'Font weight for the \"Placeholder\" base token',\n placeholderFontLineHeight:\n 'Font line height for the \"Placeholder\" base token',\n bodyFont: 'Font shorthand for the \"Body\" base token',\n bodyFontColor: 'Font color for the \"Body\" base token',\n bodyDisabledFontColor: 'Disabled font color for the \"Body\" base token',\n bodyFontFamily: 'Font family for the \"Body\" base token',\n bodyFontSize: 'Font size for the \"Body\" base token',\n bodyFontWeight: 'Font weight for the \"Body\" base token',\n bodyFontLineHeight: 'Font line height for the \"Body\" base token',\n bodyEmphasizedFont: 'Font shorthand for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontColor: 'Font color for the \"BodyEmphasized\" base token',\n bodyEmphasizedDisabledFontColor:\n 'Disabled font color for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontFamily: 'Font family for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontSize: 'Font size for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontWeight: 'Font weight for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontLineHeight:\n 'Font line height for the \"BodyEmphasized\" base token',\n bodyPlus1Font: 'Font shorthand for the \"Body_2\" base token',\n bodyPlus1FontColor: 'Font color for the \"Body_2\" base token',\n bodyPlus1DisabledFontColor:\n 'Disabled font color for the \"Body_2\" base token',\n bodyPlus1FontFamily: 'Font family for the \"Body_2\" base token',\n bodyPlus1FontSize: 'Font size for the \"Body_2\" base token',\n bodyPlus1FontWeight: 'Font weight for the \"Body_2\" base token',\n bodyPlus1FontLineHeight: 'Font line height for the \"Body_2\" base token',\n bodyPlus1EmphasizedFont:\n 'Font shorthand for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontColor:\n 'Font color for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedDisabledFontColor:\n 'Disabled font color for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontFamily:\n 'Font family for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontSize:\n 'Font size for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontWeight:\n 'Font weight for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontLineHeight:\n 'Font line height for the \"BodyEmphasized_2\" base token',\n groupHeaderFont: 'Font shorthand for the \"Group_Header_1\" base token',\n groupHeaderFontColor: 'Font color for the \"Group_Header_1\" base token',\n groupHeaderDisabledFontColor:\n 'Disabled font color for the\"Group_Header_1\" base token',\n groupHeaderFontFamily: 'Font family for the \"Group_Header_1\" base token',\n groupHeaderFontSize: 'Font size for the \"Group_Header_1\" base token',\n groupHeaderFontWeight: 'Font weight for the \"Group_Header_1\" base token',\n groupHeaderFontLineHeight:\n 'Font line height for the \"Group_Header_1\" base token',\n controlLabelFont: 'Font shorthand for the \"Control_Label_1\" base token',\n controlLabelFontColor: 'Font color for the \"Control_Label_1\" base token',\n controlLabelDisabledFontColor:\n 'Disabled font color for the \"Control_Label_1\" base token',\n controlLabelFontFamily: 'Font family for the \"Control_Label_1\" base token',\n controlLabelFontSize: 'Font size for the \"Control_Label_1\" base token',\n controlLabelFontWeight: 'Font weight for the \"Control_Label_1\" base token',\n controlLabelFontLineHeight:\n 'Font line height for the \"Control_Label_1\" base token',\n buttonLabelFont: 'Font shorthand for the \"Button_Label_1\" base token',\n buttonLabelFontColor: 'Font color for the \"Button_Label_1\" base token',\n buttonLabelDisabledFontColor:\n 'Disabled font color for the \"Button_Label_1\" base token',\n buttonLabelFontFamily: 'Font family for the \"Button_Label_1\" base token',\n buttonLabelFontSize: 'Font size for the \"Button_Label_1\" base token',\n buttonLabelFontWeight: 'Font weight for the \"Button_Label_1\" base token',\n buttonLabelFontLineHeight:\n 'Font line height for the \"Button_Label_1\" base token',\n tooltipCaptionFont: 'Font shorthand for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontColor: 'Font color for the \"Tooltip_Caption\" base token',\n tooltipCaptionDisabledFontColor:\n 'Disabled font color for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontFamily:\n 'Font family for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontSize: 'Font size for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontWeight:\n 'Font weight for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontLineHeight:\n 'Font line height for the \"Tooltip_Caption\" base token',\n tooltipBackgroundColor: 'Default background color for tooltips',\n errorTextFont: 'Font shorthand for the \"Error_LightUi\" base token',\n errorTextFontColor: 'Font color for the \"Error_LightUi\" base token',\n errorTextDisabledFontColor:\n 'Disabled font color for the \"Error_LightUi\" base token',\n errorTextFontFamily: 'Font family for the \"Error_LightUi\" base token',\n errorTextFontSize: 'Font size for the \"Error_LightUi\" base token',\n errorTextFontWeight: 'Font weight for the \"Error_LightUi\" base token',\n errorTextFontLineHeight:\n 'Font line height for the \"Error_LightUi\" base token',\n tableRowBorderColor: 'Color for the border of rows in the table',\n elevation1BoxShadow:\n 'The box shadow for elevation 1. Used for component hover states.',\n elevation2BoxShadow:\n 'The box shadow for elevation 2. Used for components such as menus, banners, tooltips, error notifications, and scrolling.',\n elevation3BoxShadow:\n 'The box shadow for elevation 3. Used for components such as dialogs, overlays, and pop-ups.',\n graphGridlineColor: 'Gridline color for graphs',\n graphTrace1Color: 'Color for the first graph trace',\n graphTrace2Color: 'Color for the second graph trace',\n graphTrace3Color: 'Color for the third graph trace',\n graphTrace4Color: 'Color for the fourth graph trace',\n graphTrace5Color: 'Color for the fifth graph trace',\n graphTrace6Color: 'Color for the sixth graph trace',\n graphTrace7Color: 'Color for the seventh graph trace',\n graphTrace8Color: 'Color for the eighth graph trace',\n mentionFont: 'Font shorthand for mention views',\n mentionFontColor: 'Font color for mention views',\n mentionDisabledFontColor: 'Disabled font color for mention views',\n mentionFontFamily: 'Font family for mention views',\n mentionFontSize: 'Font size for mention views',\n mentionFontWeight: 'Font weight for mention views',\n mentionFontLineHeight: 'Font line height for mention views',\n calendarEventBackgroundStaticColor:\n 'Background color for static calendar events',\n calendarEventBackgroundDynamicColor:\n 'Background color for dynamic calendar events',\n calendarEventBackgroundTransientColor:\n 'Background color for transient calendar events',\n calendarEventBorderStaticColor: 'Border color for static calendar events',\n calendarEventBorderTransientColor:\n 'Border color for transient calendar events',\n calendarEventStaticFontColor: 'Font color for static calendar events',\n calendarEventDynamicFontColor: 'Font color for dynamic calendar events',\n calendarEventTransientFontColor: 'Font color for transient calendar events',\n calendarEventBackgroundHoverStaticColor:\n 'Color while hovering static calendar events',\n calendarEventBackgroundHoverDynamicColor:\n 'Color while hovering dynamic calendar events',\n calendarEventBackgroundHoverTransientColor:\n 'Color while hovering transient calendar events',\n calendarEventOuterBorderHighlightedColor:\n 'Outer border color for calendar events when highlighted',\n calendarRowBackgroundSelectedColor:\n 'Background color while calendar resource is selected/highlighted',\n calendarRowBackgroundConflictColor:\n 'Background color for the calendar resource when its events are in conflict',\n calendarEventFillBlockedColor:\n 'Background fill to indicate the occupied slots in calendar resource rows',\n calendarGrabHandleBackgroundColor:\n 'Background fill color for the editable calendar event grab handle',\n calendarGridBorderColor: 'Border color for the calendar grid',\n calendarGroupHeaderBackgroundColor:\n 'Background color for the calendar resource group header'\n};\n"]}
|
|
1
|
+
{"version":3,"file":"design-token-comments.js","sourceRoot":"","sources":["../../../src/theme-provider/design-token-comments.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as TokensNamespace from './design-tokens';\n\ntype TokenName = keyof typeof TokensNamespace;\n\nexport const comments: { readonly [key in TokenName]: string } = {\n actionRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n applicationBackgroundColor: 'Primary background color for the application',\n dividerBackgroundColor: 'Divider background color',\n headerBackgroundColor: 'Background color for application headers',\n sectionBackgroundColor: 'Background color for sections',\n sectionBackgroundImage: 'Gradient background image for sections.',\n buttonFillPrimaryColor:\n 'Control fill color for \"primary\" appearance-variant buttons',\n buttonPrimaryFontColor:\n 'Font color for \"primary\" appearance-variant buttons',\n buttonFillAccentColor:\n 'Control fill color for \"accent\" appearance-variant buttons',\n buttonAccentBlockFontColor:\n 'Font color for \"accent\" appearance-variant block buttons',\n buttonAccentOutlineFontColor:\n 'Font color for \"accent\" appearance-variant outline buttons',\n buttonBorderAccentOutlineColor:\n 'Border color for \"accent\" appearance-variant outline buttons',\n fillSelectedColor: 'Control fill color when a control is selected',\n fillSelectedRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n fillHoverSelectedColor:\n 'Control fill color when hovering a selected control',\n fillHoverColor: 'Control fill color when hovering component',\n fillHoverRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n fillDownColor: 'Control fill color when mousedown event occurs',\n borderColor: 'Standard control outline or border color',\n borderRgbPartialColor:\n 'DEPRECATED: *-partial tokens are used with rgba() to set color transparency in component stylesheets',\n failColor: 'Used to highlight errors or invalid input',\n warningColor:\n 'Used to highlight invalid input or for icons to indicate that a process errored or failed',\n passColor:\n 'Used to highlight a correct state or the successful completion of a process',\n informationColor:\n 'Used to highlight information, which provides more details on the item',\n borderHoverColor: 'Border color when hovering component',\n iconColor: 'Equivalent to the font color for icons',\n modalBackdropColor: 'Color of background overlay behind modal dialog boxes',\n popupBorderColor: 'Border color for menus and dialog boxes',\n cardBorderColor: 'Border color for cards',\n tagFillColor: 'Background fill color for tags, chips, or pills',\n controlHeight:\n 'Standard layout height for all controls. Add \"labelHeight\" for labels on top.',\n controlSlimHeight:\n 'Height of controls that are somewhat shorter than standard height.',\n smallPadding: 'Fixed 4px size ramp token for component layout',\n mediumPadding: 'Fixed 8px size ramp token for component layout',\n standardPadding: 'Fixed 16px size ramp token for component layout',\n largePadding: 'Fixed 24px size ramp token for component layout',\n labelHeight:\n 'Standard label height for components. Set the label font rather than explicitly setting the height for a label.',\n borderWidth: 'Standard border width for most components',\n dividerWidth: 'Width of dividers between panes of an application',\n iconSize: 'Standard layout height for all icons',\n groupHeaderTextTransform: 'CSS text-transform string to use for headers',\n drawerWidth: 'TODO: delete when able',\n dialogSmallWidth:\n 'Standard width for small dialogs like a confirmation dialog.',\n dialogSmallHeight:\n 'Standard height for small dialogs like a confirmation dialog.',\n dialogSmallMaxHeight:\n 'Standard maximum height for small dialogs like a confirmation dialog.',\n dialogLargeWidth: 'Standard width for large dialogs.',\n dialogLargeHeight: 'Standard height for large dialogs.',\n dialogLargeMaxHeight: 'Standard maximum height for large dialogs.',\n menuMinWidth: 'Standard menu min width for menu popup.',\n bannerGapSize: 'Space between stacked banners',\n spinnerSmallHeight: 'Small height (16px) for a spinner component',\n spinnerMediumHeight: 'Medium height (32px) for a spinner component',\n spinnerLargeHeight: 'Large height (64px) for a spinner component',\n tableFitRowsHeight:\n 'The height of the table when all rows are visible. It is set automatically to the correct value within the scope of each table.',\n smallDelay:\n 'Elements with small transition areas, such as icons and selection controls, have short durations.',\n mediumDelay:\n 'Elements with larger transition areas, such as bottom sheets and expanding chips, have slightly longer durations.',\n largeDelay:\n 'Animated elements that traverse a large portion of the screen have the longest durations.',\n headlinePlus1Font: 'Font shorthand for the \"Headline_2\" base token',\n headlinePlus1FontColor: 'Font color for the \"Headline_2\" base token',\n headlinePlus1DisabledFontColor:\n 'Disabled font color for the \"Headline_2\" base token',\n headlinePlus1FontFamily: 'Font family for the \"Headline_2\" base token',\n headlinePlus1FontSize: 'Font size for the \"Headline_2\" base token',\n headlinePlus1FontWeight: 'Font weight for the \"Headline_2\" base token',\n headlinePlus1FontLineHeight:\n 'Font line height for the \"Headline_2\" base token',\n headlineFont: 'Font shorthand for the \"Headline_1\" base token',\n headlineFontColor: 'Font color for the \"Headline_1\" base token',\n headlineDisabledFontColor:\n 'Disabled font color for the \"Headline_1\" base token',\n headlineFontFamily: 'Font family for the \"Headline_1\" base token',\n headlineFontSize: 'Font size for the \"Headline_1\" base token',\n headlineFontWeight: 'Font weight for the \"Headline_1\" base token',\n headlineFontLineHeight: 'Font line height for the \"Headline_1\" base token',\n tableHeaderFont: 'Font shorthand for the \"Grid_Header\" base token',\n tableHeaderFontColor: 'Font color for the \"Grid_Header\" base token',\n tableHeaderDisabledFontColor:\n 'Disabled font color for the \"Grid_Header\" base token',\n tableHeaderFontFamily: 'Font family for the \"Grid_Header\" base token',\n tableHeaderFontSize: 'Font size for the \"Grid_Header\" base token',\n tableHeaderFontWeight: 'Font weight for the \"Grid_Header\" base token',\n tableHeaderFontLineHeight:\n 'Font line height for the \"Grid_Header\" base token',\n titlePlus2Font: 'Font shorthand for the \"Title_3\" base token',\n titlePlus2FontColor: 'Font color for the \"Title_3\" base token',\n titlePlus2DisabledFontColor:\n 'Disabled font color for the \"Title_3\" base token',\n titlePlus2FontFamily: 'Font family for the \"Title_3\" base token',\n titlePlus2FontSize: 'Font size for the \"Title_3\" base token',\n titlePlus2FontWeight: 'Font weight for the \"Title_3\" base token',\n titlePlus2FontLineHeight: 'Font line height for the \"Title_3\" base token',\n titlePlus1Font: 'Font shorthand for the \"Title_2\" base token',\n titlePlus1FontColor: 'Font color for the \"Title_2\" base token',\n titlePlus1DisabledFontColor:\n 'Disabled font color for the \"Title_2\" base token',\n titlePlus1FontFamily: 'Font family for the \"Title_2\" base token',\n titlePlus1FontSize: 'Font size for the \"Title_2\" base token',\n titlePlus1FontWeight: 'Font weight for the \"Title_2\" base token',\n titlePlus1FontLineHeight: 'Font line height for the \"Title_2\" base token',\n titleFont: 'Font shorthand for the \"Title_1\" base token',\n titleFontColor: 'Font color for the \"Title_1\" base token',\n titleDisabledFontColor: 'Disabled font color for the \"Title_1\" base token',\n titleFontFamily: 'Font family for the \"Title_1\" base token',\n titleFontSize: 'Font size for the \"Title_1\" base token',\n titleFontWeight: 'Font weight for the \"Title_1\" base token',\n titleFontLineHeight: 'Font line height for the \"Title_1\" base token',\n subtitlePlus1Font: 'Font shorthand for the \"Subtitle_2\" base token',\n subtitlePlus1FontColor: 'Font color for the \"Subtitle_2\" base token',\n subtitlePlus1DisabledFontColor:\n 'Disabled font color for the \"Subtitle_2\" base token',\n subtitlePlus1FontFamily: 'Font family for the \"Subtitle_2\" base token',\n subtitlePlus1FontSize: 'Font size for the \"Subitle_2\" base token',\n subtitlePlus1FontWeight: 'Font weight for the \"Subtitle_2\" base token',\n subtitlePlus1FontLineHeight:\n 'Font line height for the \"Subtitle_2\" base token',\n subtitleFont: 'Font shorthand for the \"Subtitle_1\" base token',\n subtitleFontColor: 'Font color for the \"Subtitle_1\" base token',\n subtitleDisabledFontColor:\n 'Disabled font color for the \"Subtitle_1\" base token',\n subtitleFontFamily: 'Font family for the \"Subtitle_1\" base token',\n subtitleFontSize: 'Font size for the \"Subitle_1\" base token',\n subtitleFontWeight: 'Font weight for the \"Subtitle_1\" base token',\n subtitleFontLineHeight: 'Font line height for the \"Subtitle_1\" base token',\n linkFont: 'Font shorthand for links',\n linkFontColor: 'Font color for links',\n linkDisabledFontColor: 'Disabled font color for links',\n linkFontFamily: 'Font family for links',\n linkFontSize: 'Font size for links',\n linkFontWeight: 'Font weight for links',\n linkFontLineHeight: 'Font line height for links',\n linkActiveFont: 'Font shorthand for active links',\n linkActiveFontColor: 'Font color for active links',\n linkActiveDisabledFontColor: 'Disabled font color for active links',\n linkActiveFontFamily: 'Font family for active links',\n linkActiveFontSize: 'Font size for active links',\n linkActiveFontWeight: 'Font weight for active links',\n linkActiveFontLineHeight: 'Font line height for active links',\n linkProminentFont: 'Font shorthand for prominent links',\n linkProminentFontColor: 'Font color for prominent links',\n linkProminentDisabledFontColor: 'Disabled font color for prominent links',\n linkProminentFontFamily: 'Font family for prominent links',\n linkProminentFontSize: 'Font size for prominent links',\n linkProminentFontWeight: 'Font weight for prominent links',\n linkProminentFontLineHeight: 'Font line height for prominent links',\n linkActiveProminentFont: 'Font shorthand for active prominent links',\n linkActiveProminentFontColor: 'Font color for active prominent links',\n linkActiveProminentDisabledFontColor:\n 'Disabled font color for active prominent links',\n linkActiveProminentFontFamily: 'Font family for active prominent links',\n linkActiveProminentFontSize: 'Font size for active prominent links',\n linkActiveProminentFontWeight: 'Font weight for active prominent links',\n linkActiveProminentFontLineHeight:\n 'Font line height for active prominent links',\n placeholderFont: 'Font shorthand for the \"Placeholder\" base token',\n placeholderFontColor: 'Font color for the \"Placeholder\" base token',\n placeholderDisabledFontColor:\n 'Disabled font color for the \"Placeholder\" base token',\n placeholderFontFamily: 'Font family for the \"Placeholder\" base token',\n placeholderFontSize: 'Font size for the \"Placeholder\" base token',\n placeholderFontWeight: 'Font weight for the \"Placeholder\" base token',\n placeholderFontLineHeight:\n 'Font line height for the \"Placeholder\" base token',\n bodyFont: 'Font shorthand for the \"Body\" base token',\n bodyFontColor: 'Font color for the \"Body\" base token',\n bodyDisabledFontColor: 'Disabled font color for the \"Body\" base token',\n bodyFontFamily: 'Font family for the \"Body\" base token',\n bodyFontSize: 'Font size for the \"Body\" base token',\n bodyFontWeight: 'Font weight for the \"Body\" base token',\n bodyFontLineHeight: 'Font line height for the \"Body\" base token',\n bodyEmphasizedFont: 'Font shorthand for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontColor: 'Font color for the \"BodyEmphasized\" base token',\n bodyEmphasizedDisabledFontColor:\n 'Disabled font color for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontFamily: 'Font family for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontSize: 'Font size for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontWeight: 'Font weight for the \"BodyEmphasized\" base token',\n bodyEmphasizedFontLineHeight:\n 'Font line height for the \"BodyEmphasized\" base token',\n bodyPlus1Font: 'Font shorthand for the \"Body_2\" base token',\n bodyPlus1FontColor: 'Font color for the \"Body_2\" base token',\n bodyPlus1DisabledFontColor:\n 'Disabled font color for the \"Body_2\" base token',\n bodyPlus1FontFamily: 'Font family for the \"Body_2\" base token',\n bodyPlus1FontSize: 'Font size for the \"Body_2\" base token',\n bodyPlus1FontWeight: 'Font weight for the \"Body_2\" base token',\n bodyPlus1FontLineHeight: 'Font line height for the \"Body_2\" base token',\n bodyPlus1EmphasizedFont:\n 'Font shorthand for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontColor:\n 'Font color for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedDisabledFontColor:\n 'Disabled font color for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontFamily:\n 'Font family for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontSize:\n 'Font size for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontWeight:\n 'Font weight for the \"BodyEmphasized_2\" base token',\n bodyPlus1EmphasizedFontLineHeight:\n 'Font line height for the \"BodyEmphasized_2\" base token',\n groupHeaderFont: 'Font shorthand for the \"Group_Header_1\" base token',\n groupHeaderFontColor: 'Font color for the \"Group_Header_1\" base token',\n groupHeaderDisabledFontColor:\n 'Disabled font color for the\"Group_Header_1\" base token',\n groupHeaderFontFamily: 'Font family for the \"Group_Header_1\" base token',\n groupHeaderFontSize: 'Font size for the \"Group_Header_1\" base token',\n groupHeaderFontWeight: 'Font weight for the \"Group_Header_1\" base token',\n groupHeaderFontLineHeight:\n 'Font line height for the \"Group_Header_1\" base token',\n controlLabelFont: 'Font shorthand for the \"Control_Label_1\" base token',\n controlLabelFontColor: 'Font color for the \"Control_Label_1\" base token',\n controlLabelDisabledFontColor:\n 'Disabled font color for the \"Control_Label_1\" base token',\n controlLabelFontFamily: 'Font family for the \"Control_Label_1\" base token',\n controlLabelFontSize: 'Font size for the \"Control_Label_1\" base token',\n controlLabelFontWeight: 'Font weight for the \"Control_Label_1\" base token',\n controlLabelFontLineHeight:\n 'Font line height for the \"Control_Label_1\" base token',\n buttonLabelFont: 'Font shorthand for the \"Button_Label_1\" base token',\n buttonLabelFontColor: 'Font color for the \"Button_Label_1\" base token',\n buttonLabelDisabledFontColor:\n 'Disabled font color for the \"Button_Label_1\" base token',\n buttonLabelFontFamily: 'Font family for the \"Button_Label_1\" base token',\n buttonLabelFontSize: 'Font size for the \"Button_Label_1\" base token',\n buttonLabelFontWeight: 'Font weight for the \"Button_Label_1\" base token',\n buttonLabelFontLineHeight:\n 'Font line height for the \"Button_Label_1\" base token',\n tooltipCaptionFont: 'Font shorthand for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontColor: 'Font color for the \"Tooltip_Caption\" base token',\n tooltipCaptionDisabledFontColor:\n 'Disabled font color for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontFamily:\n 'Font family for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontSize: 'Font size for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontWeight:\n 'Font weight for the \"Tooltip_Caption\" base token',\n tooltipCaptionFontLineHeight:\n 'Font line height for the \"Tooltip_Caption\" base token',\n tooltipBackgroundColor: 'Default background color for tooltips',\n errorTextFont: 'Font shorthand for the \"Error_LightUi\" base token',\n errorTextFontColor: 'Font color for the \"Error_LightUi\" base token',\n errorTextDisabledFontColor:\n 'Disabled font color for the \"Error_LightUi\" base token',\n errorTextFontFamily: 'Font family for the \"Error_LightUi\" base token',\n errorTextFontSize: 'Font size for the \"Error_LightUi\" base token',\n errorTextFontWeight: 'Font weight for the \"Error_LightUi\" base token',\n errorTextFontLineHeight:\n 'Font line height for the \"Error_LightUi\" base token',\n tableRowBorderColor: 'Color for the border of rows in the table',\n elevation1BoxShadow:\n 'The box shadow for elevation 1. Used for component hover states.',\n elevation2BoxShadow:\n 'The box shadow for elevation 2. Used for components such as menus, banners, tooltips, error notifications, and scrolling.',\n elevation3BoxShadow:\n 'The box shadow for elevation 3. Used for components such as dialogs, overlays, and pop-ups.',\n graphGridlineColor: 'Gridline color for graphs',\n graphTrace1Color: 'Color for the first graph trace',\n graphTrace2Color: 'Color for the second graph trace',\n graphTrace3Color: 'Color for the third graph trace',\n graphTrace4Color: 'Color for the fourth graph trace',\n graphTrace5Color: 'Color for the fifth graph trace',\n graphTrace6Color: 'Color for the sixth graph trace',\n graphTrace7Color: 'Color for the seventh graph trace',\n graphTrace8Color: 'Color for the eighth graph trace',\n mentionFont: 'Font shorthand for mention views',\n mentionFontColor: 'Font color for mention views',\n mentionDisabledFontColor: 'Disabled font color for mention views',\n mentionFontFamily: 'Font family for mention views',\n mentionFontSize: 'Font size for mention views',\n mentionFontWeight: 'Font weight for mention views',\n mentionFontLineHeight: 'Font line height for mention views',\n calendarEventBackgroundStaticColor:\n 'Background color for static calendar events',\n calendarEventBackgroundDynamicColor:\n 'Background color for dynamic calendar events',\n calendarEventBackgroundTransientColor:\n 'Background color for transient calendar events',\n calendarEventBorderStaticColor: 'Border color for static calendar events',\n calendarEventBorderTransientColor:\n 'Border color for transient calendar events',\n calendarEventStaticFontColor: 'Font color for static calendar events',\n calendarEventDynamicFontColor: 'Font color for dynamic calendar events',\n calendarEventTransientFontColor: 'Font color for transient calendar events',\n calendarEventBackgroundHoverStaticColor:\n 'Color while hovering static calendar events',\n calendarEventBackgroundHoverDynamicColor:\n 'Color while hovering dynamic calendar events',\n calendarEventBackgroundHoverTransientColor:\n 'Color while hovering transient calendar events',\n calendarEventOuterBorderHighlightedColor:\n 'Outer border color for calendar events when highlighted',\n calendarRowBackgroundSelectedColor:\n 'Background color while calendar resource is selected/highlighted',\n calendarRowBackgroundConflictColor:\n 'Background color for the calendar resource when its events are in conflict',\n calendarEventFillBlockedColor:\n 'Background fill to indicate the occupied slots in calendar resource rows',\n calendarGrabHandleBackgroundColor:\n 'Background fill color for the editable calendar event grab handle',\n calendarGridBorderColor: 'Border color for the calendar grid',\n calendarGroupHeaderBackgroundColor:\n 'Background color for the calendar resource group header',\n calendarEventBackgroundJobColor:\n 'Background color for job calendar events',\n calendarEventBackgroundHoverJobColor:\n 'Color while hovering job calendar events',\n calendarEventBorderJobColor: 'Border color for job calendar events',\n calendarEventJobFontColor: 'Font color for job calendar events',\n calendarEventBackgroundMaintenanceColor:\n 'Background color for maintenance calendar events',\n calendarEventBackgroundHoverMaintenanceColor:\n 'Color while hovering maintenance calendar events',\n calendarEventBorderMaintenanceColor: 'Border color for maintenance calendar events',\n calendarEventBackgroundCalibrationColor:\n 'Background color for calibration calendar events',\n calendarEventBackgroundHoverCalibrationColor:\n 'Color while hovering calibration calendar events',\n calendarEventBorderCalibrationColor: 'Border color for calibration calendar events',\n calendarEventBackgroundReservationColor:\n 'Background color for reservation calendar events',\n calendarEventBackgroundHoverReservationColor:\n 'Color while hovering reservation calendar events',\n calendarEventBorderReservationColor: 'Border color for reservation calendar events',\n calendarEventBackgroundTransportOrderColor:\n 'Background color for transport order calendar events',\n calendarEventBackgroundHoverTransportOrderColor:\n 'Color while hovering transport order calendar events',\n calendarEventBorderTransportOrderColor: 'Border color for transport order calendar events',\n calendarEventBackgroundAggregateAvailabilityColor:\n 'Background color for aggregate availability calendar events',\n calendarEventBorderAggregateAvailabilityColor: 'Border color for aggregate availability calendar events'\n};\n"]}
|