UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

96 lines (95 loc) 3.42 kB
import * as React from 'react'; import { BaseComponent } from '../../common/BaseComponent'; import { IColumn, DetailsListLayoutMode } from './DetailsList.Props'; import { FocusZone } from '../../FocusZone'; import { ISelection, SelectionMode } from '../../utilities/selection/interfaces'; import './DetailsHeader.scss'; export interface IDetailsHeaderProps extends React.Props<DetailsHeader> { columns: IColumn[]; selection: ISelection; selectionMode: SelectionMode; layoutMode: DetailsListLayoutMode; onColumnIsSizingChanged?: (column: IColumn, isSizing: boolean) => void; onColumnResized?: (column: IColumn, newWidth: number) => void; onColumnAutoResized?: (column: IColumn, columnIndex: number) => void; onColumnClick?: (ev: React.MouseEvent<HTMLElement>, column: IColumn) => void; onColumnContextMenu?: (column: IColumn, ev: Event) => void; groupNestingDepth?: number; isAllCollapsed?: boolean; onToggleCollapseAll?: (isAllCollapsed: boolean) => void; /** ariaLabel for the entire header */ ariaLabel?: string; /** ariaLabel for the header checkbox that selects or deselects everything */ ariaLabelForSelectAllCheckbox?: string; selectAllVisibility?: SelectAllVisibility; } export declare enum SelectAllVisibility { none = 0, hidden = 1, visible = 2, } export interface IDetailsHeaderState { columnResizeDetails?: IColumnResizeDetails; isAllSelected?: boolean; isSizing?: boolean; groupNestingDepth?: number; isAllCollapsed?: boolean; } export interface IColumnResizeDetails { columnIndex: number; originX: number; columnMinWidth: number; } export declare class DetailsHeader extends BaseComponent<IDetailsHeaderProps, IDetailsHeaderState> { static defaultProps: { isSelectAllVisible: SelectAllVisibility; }; refs: { [key: string]: React.ReactInstance; root: HTMLElement; focusZone: FocusZone; }; constructor(props: IDetailsHeaderProps); componentDidMount(): void; componentWillReceiveProps(newProps: any): void; render(): JSX.Element; /** Set focus to the active thing in the focus area. */ focus(): boolean; /** * double click on the column sizer will auto ajust column width * to fit the longest content among current rendered rows. * * @private * @param {number} columnIndex (index of the column user double clicked) * @param {React.MouseEvent} ev (mouse double click event) */ private _onSizerDoubleClick(columnIndex, ev); /** * Called when the select all toggle is clicked. */ private _onSelectAllClicked(); /** * mouse move event handler in the header * it will set isSizing state to true when user clicked on the sizer and move the mouse. * * @private * @param {React.MouseEvent} ev (mouse move event) */ private _onMove(ev); /** * mouse up event handler in the header * clear the resize related state. * This is to ensure we can catch double click event * * @private * @param {React.MouseEvent} ev (mouse up event) */ private _onUp(ev); private _onSizerDown(ev); private _onSelectionChanged(); private _onSizerMove(ev); private _onSizerUp(); private _onColumnClick(column, ev); private _onColumnContextMenu(column, ev); private _onToggleCollapseAll(); }