@hashicorp/design-system-components
Version:
Helios Design System Components
125 lines (124 loc) • 5.67 kB
TypeScript
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type Owner from '@ember/owner';
import type { WithBoundArgs } from '@glint/template';
import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.ts';
import type { HdsAdvancedTableColumn, HdsAdvancedTableDensities, HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableOnSelectionChangeSignature, HdsAdvancedTableThSortOrder, HdsAdvancedTableVerticalAlignment, HdsAdvancedTableModel, HdsAdvancedTableExpandState, HdsAdvancedTableColumnReorderCallback } from './types.ts';
import type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';
import type HdsAdvancedTableTd from './td.ts';
import type HdsAdvancedTableTh from './th.ts';
import type HdsAdvancedTableTr from './tr.ts';
import type HdsIntlService from '../../../services/hds-intl.ts';
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 {
Args: {
align?: HdsAdvancedTableHorizontalAlignment;
caption?: string;
columns: HdsAdvancedTableColumn[];
columnOrder?: string[];
density?: HdsAdvancedTableDensities;
identityKey?: string;
isSelectable?: boolean;
isStriped?: boolean;
model: HdsAdvancedTableModel;
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: {
body?: [
{
Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;
Tr?: WithBoundArgs<typeof HdsAdvancedTableTr, 'selectionScope' | 'isLastRow' | 'isSelectable' | 'onSelectionChange' | 'didInsert' | 'willDestroy' | 'selectionAriaLabelSuffix' | 'hasStickyColumn' | 'isStickyColumnPinned' | 'isParentRow' | 'depth' | 'displayRow'>;
Th?: WithBoundArgs<typeof HdsAdvancedTableTh, 'depth' | 'isExpandable' | 'isExpanded' | 'newLabel' | 'parentId' | 'scope' | 'isStickyColumn' | 'isStickyColumnPinned' | 'onClickToggle'>;
data?: Record<string, unknown>;
rowIndex?: number | string;
isOpen?: HdsAdvancedTableExpandState;
}
];
};
Element: HTMLDivElement;
}
export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {
hdsIntl: HdsIntlService;
private _selectAllCheckbox?;
private _isSelectAllCheckboxSelected?;
private _tableHeight;
private _selectableRows;
private _captionId;
private _tableModel;
private _scrollHandler;
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;
constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']);
get identityKey(): string | undefined;
get childrenKey(): string;
get hasStickyFirstColumn(): boolean | undefined;
get hasScrollIndicator(): boolean;
get sortedMessageText(): string;
get isSelectable(): boolean;
get isStriped(): boolean;
get density(): HdsAdvancedTableDensities;
get hasStickyHeader(): boolean;
get valign(): HdsAdvancedTableVerticalAlignment;
get gridTemplateColumns(): string;
get classNames(): string;
get theadClassNames(): string;
private _registerGridElement;
private _registerThElement;
private _setUpScrollWrapper;
private _runAssertions;
private _setUpThead;
private _onColumnReorder;
onSelectionChangeCallback(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
setupTableModelData(): void;
updateTableModelColumnOrder(): 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;
private _updateScrollIndicators;
private _onPinFirstColumn;
private _isStickyColumn;
}