@hashicorp/design-system-components
Version:
Helios Design System Components
106 lines (105 loc) • 4.6 kB
TypeScript
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { ComponentLike } from '@glint/template';
import type Owner from '@ember/owner';
import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.ts';
import type { HdsAdvancedTableColumn, HdsAdvancedTableDensities, HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableOnSelectionChangeSignature, HdsAdvancedTableSortingFunction, HdsAdvancedTableThSortOrder, HdsAdvancedTableVerticalAlignment, HdsAdvancedTableModel, HdsAdvancedTableExpandState } from './types.ts';
import type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';
import type { HdsAdvancedTableTdSignature } from './td.ts';
import type { HdsAdvancedTableThSignature } from './th.ts';
import type { HdsAdvancedTableTrSignature } from './tr.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 interface HdsAdvancedTableSignature {
Args: {
align?: HdsAdvancedTableHorizontalAlignment;
caption?: string;
columns: HdsAdvancedTableColumn[];
density?: HdsAdvancedTableDensities;
identityKey?: string;
isSelectable?: boolean;
isStriped?: boolean;
model: HdsAdvancedTableModel;
onSelectionChange?: (selection: HdsAdvancedTableOnSelectionChangeSignature) => void;
onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;
selectionAriaLabelSuffix?: string;
sortBy?: string;
selectableColumnKey?: string;
sortedMessageText?: string;
sortOrder?: HdsAdvancedTableThSortOrder;
valign?: HdsAdvancedTableVerticalAlignment;
hasStickyHeader?: boolean;
hasStickyFirstColumn?: boolean;
childrenKey?: string;
};
Blocks: {
body?: [
{
Td?: ComponentLike<HdsAdvancedTableTdSignature>;
Tr?: ComponentLike<HdsAdvancedTableTrSignature>;
Th?: ComponentLike<HdsAdvancedTableThSignature>;
data?: Record<string, unknown>;
rowIndex?: number | string;
isOpen?: HdsAdvancedTableExpandState;
}
];
};
Element: HTMLDivElement;
}
export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {
private _sortBy;
private _sortOrder;
private _selectAllCheckbox?;
private _isSelectAllCheckboxSelected?;
private _selectableRows;
private _captionId;
private _tableModel;
private _scrollHandler;
private _resizeObserver;
private _theadElement;
scrollIndicatorDimensions: {
bottom: string;
height: string;
left: string;
right: string;
top: string;
width: string;
};
isStickyColumnPinned: boolean;
isStickyHeaderPinned: boolean;
showScrollIndicatorLeft: boolean;
showScrollIndicatorRight: boolean;
showScrollIndicatorTop: boolean;
showScrollIndicatorBottom: boolean;
stickyColumnOffset: string;
constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']);
get getSortCriteria(): string | HdsAdvancedTableSortingFunction<unknown>;
get columnWidths(): string[] | undefined;
get identityKey(): string | undefined;
get childrenKey(): string;
get hasScrollIndicator(): boolean;
get sortedMessageText(): string;
get isSelectable(): boolean;
get isStriped(): boolean;
get density(): HdsAdvancedTableDensities;
get valign(): HdsAdvancedTableVerticalAlignment;
get gridTemplateColumns(): string;
get classNames(): string;
get theadClassNames(): string;
private _setUpScrollWrapper;
private _setUpThead;
setSortBy(column: string): void;
onSelectionChangeCallback(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: 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;
}