@hashicorp/design-system-components
Version:
Helios Design System Components
122 lines (121 loc) • 6.51 kB
TypeScript
/**
* Copyright IBM Corp. 2021, 2025
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import { type FocusableElement } from 'tabbable';
import { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';
import type { HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableScope, HdsAdvancedTableExpandState, HdsAdvancedTableColumnReorderSide, HdsAdvancedTableNormalizedColumn, HdsAdvancedTableThSortOrderLabels, HdsAdvancedTableThSortOrder } from './types.ts';
import type { HdsCompositeSignature } from '../composite/index';
import type { HdsAdvancedTableThButtonSortSignature } from './th-button-sort';
import type { HdsAdvancedTableSignature } from './index';
import type Owner from '@ember/owner';
export declare const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[];
export declare const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;
export interface HdsAdvancedTableThSignature {
Args: {
align?: HdsAdvancedTableHorizontalAlignment;
column?: HdsAdvancedTableNormalizedColumn;
colspan?: number;
compositeItem?: HdsCompositeSignature['Blocks']['default'][0]['item'];
isCompositeItemDisabled?: boolean;
depth?: number;
draggedColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;
firstColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
firstNonStickyColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
hasExpandAllButton?: boolean;
hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];
hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];
hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];
hasStickyFirstColumn?: HdsAdvancedTableSignature['Args']['hasStickyFirstColumn'];
isExpandable?: boolean;
isExpanded?: HdsAdvancedTableExpandState;
isStickyColumn?: boolean;
isStickyColumnPinned?: boolean;
lastColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
newLabel?: string;
parentId?: string;
reorderHoveredColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;
rowspan?: number;
scope?: HdsAdvancedTableScope;
siblingColumnKeys?: {
previous?: HdsAdvancedTableNormalizedColumn['key'];
next?: HdsAdvancedTableNormalizedColumn['key'];
};
draggedColumnSiblingColumnKeys?: {
previous?: HdsAdvancedTableNormalizedColumn['key'];
next?: HdsAdvancedTableNormalizedColumn['key'];
};
sortOrder?: HdsAdvancedTableThSortOrder;
tableHeight?: number;
tooltip?: string;
didInsertExpandButton?: (button: HTMLButtonElement) => void;
onApplyTransientWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
onClickSort?: HdsAdvancedTableThButtonSortSignature['Args']['onClick'];
onClickToggle?: () => void;
onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];
onGetAppliedWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn['width'];
onGetColumnByKey?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn | undefined;
onMoveColumnToTerminalPosition?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], position: 'start' | 'end') => void;
onPinFirstColumn?: () => void;
onReorderDrop?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], side: HdsAdvancedTableColumnReorderSide) => void;
onResetTransientColumnWidths?: () => void;
onRestoreColumnWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
onSetDraggedColumnKey?: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
onSetReorderHoveredColumnKey?: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
onSetTransientColumnWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], width: `${number}px`) => void;
onSetTransientColumnWidths?: (options: {
roundValues?: boolean;
}) => void;
onStepColumn?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], step: number) => void;
onUpdateResizeDebt?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], delta: number) => void;
willDestroyExpandButton?: (button: HTMLButtonElement) => void;
};
Blocks: {
default?: [];
};
Element: HTMLDivElement;
}
export default class HdsAdvancedTableTh extends Component<HdsAdvancedTableThSignature> {
private _labelId;
private _element;
private _shouldTrapFocus;
private _reorderHandleElement?;
private _resizeHandleElement?;
constructor(owner: Owner, args: HdsAdvancedTableThSignature['Args']);
get isSortable(): boolean;
get isFirstColumn(): boolean;
get isFirstNonStickyColumn(): boolean;
get isLastColumn(): boolean;
get tableHasColumnBeingDragged(): boolean;
get isColumnBeingDragged(): boolean;
get scope(): HdsAdvancedTableScope;
get role(): string;
get ariaSort(): HdsAdvancedTableThSortOrderLabels;
get align(): HdsAdvancedTableHorizontalAlignment;
get rowspan(): string;
get colspan(): string | undefined;
get paddingLeft(): string | undefined;
get classNames(): string;
get showDropTarget(): boolean;
get showResizeHandle(): boolean;
onFocusTrapDeactivate(): void;
enableFocusTrap(): void;
getInitialFocus(): FocusableElement | undefined;
focusReorderHandle(): void;
applyTransientWidth(columnKey: HdsAdvancedTableNormalizedColumn['key']): void;
resetTransientColumnWidths(): void;
getAppliedWidth(columnKey: HdsAdvancedTableNormalizedColumn['key']): HdsAdvancedTableNormalizedColumn['width'] | undefined;
getColumnByKey(columnKey: HdsAdvancedTableNormalizedColumn['key']): HdsAdvancedTableNormalizedColumn | undefined;
setDraggedColumnKey(columnKey: HdsAdvancedTableNormalizedColumn['key'] | null): void;
setTransientColumnWidth(columnKey: HdsAdvancedTableNormalizedColumn['key'], width: `${number}px`): void;
setTransientColumnWidths(options: {
roundValues?: boolean;
}): void;
stepColumn(step: number): void;
updateResizeDebt(delta: number): void;
setElement(element: HTMLDivElement): void;
private _registerReorderHandleElement;
private _registerResizeHandleElement;
private _manageExpandButton;
}