@hashicorp/design-system-components
Version:
Helios Design System Components
155 lines (154 loc) • 6.89 kB
TypeScript
/**
* Copyright IBM Corp. 2021, 2025
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import { TrackedSet } from 'tracked-built-ins';
import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.ts';
import HdsAdvancedTableTh from './th';
import HdsAdvancedTableTd from './td';
import type Owner from '@ember/owner';
import type { ComponentLike, WithBoundArgs } from '@glint/template';
import type { HdsAdvancedTableColumn, HdsAdvancedTableDensities, HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableOnSelectionChangeSignature, HdsAdvancedTableSortingFunction, HdsAdvancedTableThSortOrder, HdsAdvancedTableVerticalAlignment, HdsAdvancedTableExpandState, HdsAdvancedTableColumnReorderCallback, HdsAdvancedTableModel } from './types.ts';
import type { HdsAdvancedTableThSelectableSignature } from './th-selectable';
import type { HdsAdvancedTableTrSignature } from './tr';
import type { HdsFilterBarSignature } from '../filter-bar/index';
import type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base';
import type HdsIntlService from '../../../services/hds-intl.ts';
export interface YieldedHdsAdvancedTableTr<T> {
Args: {
isSelected?: boolean;
selectionKey?: string;
selectionAriaLabelSuffix?: string;
selectableColumnKey?: string;
sortBySelectedOrder?: HdsAdvancedTableThSortOrder;
onClickSortBySelected?: HdsAdvancedTableThSelectableSignature['Args']['onClickSortBySelected'];
};
Blocks: HdsAdvancedTableTrSignature<T>['Blocks'];
Element: HdsAdvancedTableTrSignature<T>['Element'];
}
export declare const DENSITIES: HdsAdvancedTableDensities[];
export declare const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;
export declare const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[];
export declare const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;
export declare const BORDER_WIDTH = 1;
export interface HdsAdvancedTableSignature<T = HdsAdvancedTableModel> {
Args: {
align?: HdsAdvancedTableHorizontalAlignment;
caption?: string;
columns: HdsAdvancedTableColumn[];
columnOrder?: string[];
density?: HdsAdvancedTableDensities;
identityKey?: string;
isSelectable?: boolean;
isStriped?: boolean;
model: T[];
reorderedMessageText?: string;
selectionAriaLabelSuffix?: string;
sortBy?: string;
selectableColumnKey?: string;
sortedMessageText?: string;
sortOrder?: HdsAdvancedTableThSortOrder;
valign?: HdsAdvancedTableVerticalAlignment;
hasReorderableColumns?: boolean;
hasResizableColumns?: boolean;
hasStickyHeader?: boolean;
hasStickyFirstColumn?: boolean;
childrenKey?: string;
maxHeight?: string;
onColumnReorder?: HdsAdvancedTableColumnReorderCallback;
onColumnResize?: (columnKey: string, newWidth?: string) => void;
onSelectionChange?: (selection: HdsAdvancedTableOnSelectionChangeSignature) => void;
onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;
};
Blocks: {
actions?: [
{
FilterBar?: ComponentLike<HdsFilterBarSignature>;
}
];
body?: [
{
Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align' | 'compositeItem' | 'isCompositeItemDisabled'>;
Tr?: ComponentLike<YieldedHdsAdvancedTableTr<T>>;
Th?: WithBoundArgs<typeof HdsAdvancedTableTh, 'compositeItem' | 'isCompositeItemDisabled' | 'depth' | 'isExpandable' | 'isExpanded' | 'isStickyColumnPinned' | 'newLabel' | 'onClickToggle' | 'parentId' | 'scope'>;
data: T;
rowIndex?: number | string;
isOpen?: HdsAdvancedTableExpandState;
}
];
emptyState?: [];
};
Element: HTMLDivElement;
}
export default class HdsAdvancedTable<T = HdsAdvancedTableModel> extends Component<HdsAdvancedTableSignature<T>> {
readonly hdsIntl: HdsIntlService;
private _selectAllCheckbox?;
private _isSelectAllCheckboxSelected?;
private _tableHeight;
private _selectableRows;
private _captionId;
private _scrollHandler;
private _dragOverHandler;
private _resizeObserver;
private _theadElement;
private _scrollWrapperElement;
scrollIndicatorDimensions: {
bottom: string;
height: string;
left: string;
right: string;
width: string;
};
isStickyColumnPinned: boolean;
isStickyHeaderPinned: boolean;
hasPinnedFirstColumn: boolean | undefined;
reorderedMessageText: string;
showScrollIndicatorLeft: boolean;
showScrollIndicatorRight: boolean;
showScrollIndicatorTop: boolean;
showScrollIndicatorBottom: boolean;
stickyColumnOffset: string;
currentSortBy?: string;
currentSortOrder: HdsAdvancedTableThSortOrder;
expandedRowIds: TrackedSet<string>;
private _setUpScrollWrapper;
private _setUpThead;
private _syncSortArgs;
constructor(owner: Owner, args: HdsAdvancedTableSignature<T>['Args']);
get childrenKey(): string;
get hasRowsWithChildren(): boolean;
get expandableRowIds(): string[];
get isAllExpanded(): boolean;
get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown>;
get isEmpty(): boolean;
get identityKey(): string | undefined;
get hasStickyFirstColumn(): boolean | undefined;
get sortedMessageText(): string;
get isSelectable(): boolean;
get isStriped(): boolean;
get density(): HdsAdvancedTableDensities;
get hasStickyHeader(): boolean;
get valign(): HdsAdvancedTableVerticalAlignment;
get classNames(): string;
get theadClassNames(): string;
asRowData: (source: Record<string, unknown>) => T;
asScope: (scope: string) => "col" | "row";
asTr: (comp: unknown) => ComponentLike<YieldedHdsAdvancedTableTr<T>>;
private _initializeExpandedRows;
private _runAssertions;
private _onColumnReorder;
onSelectionChangeCallback(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
toggleExpandAll(): void;
toggleRow(rowId: string): void;
onSelectionAllChange(): void;
onSelectionRowChange(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
didInsertSelectAllCheckbox(checkbox: HdsFormCheckboxBaseSignature['Element']): void;
willDestroySelectAllCheckbox(): void;
didInsertRowCheckbox(checkbox: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
willDestroyRowCheckbox(selectionKey?: string): void;
setSelectAllState(): void;
setSortBy(columnKey: HdsAdvancedTableColumn['key']): void;
private _updateScrollIndicators;
private _onPinFirstColumn;
}