@fluentui/react
Version:
Reusable React components for building web experiences.
102 lines (101 loc) • 3.08 kB
TypeScript
import * as React from 'react';
import type { IStyle, ITheme } from '../../Styling';
import type { IRefObject, IStyleFunctionOrObject } from '../../Utilities';
export interface IButtonGrid {
}
export interface IButtonGridProps extends React.TableHTMLAttributes<HTMLTableElement>, React.RefAttributes<HTMLElement> {
/**
* Gets the component ref.
*/
componentRef?: IRefObject<IButtonGrid>;
/**
* Items to display in a ButtonGrid with the specified number of columns
*/
items: any[];
/**
* The number of columns
*/
columnCount: number;
/**
* Custom renderer for the individual items
*/
onRenderItem: (item: any, index: number) => JSX.Element;
/**
* Whether focus should cycle back to the beginning once the user navigates past the end (and vice versa).
* Only relevant if `doNotContainWithinFocusZone` is not true.
*/
shouldFocusCircularNavigate?: boolean;
/**
* If false (the default), the ButtonGrid is contained inside a FocusZone.
* If true, a FocusZone is not used.
* @default false
*/
doNotContainWithinFocusZone?: boolean;
/**
* Class name for the FocusZone container for the ButtonGrid.
* @deprecated Use `styles.focusedContainer` to define styling for the focus zone container
*/
containerClassName?: string;
/**
* Handler for when focus leaves the ButtonGrid.
*/
onBlur?: () => void;
/**
* If true, uses radiogroup semantics for the ButtonGrid.
* This should be set to true for single-row grids, for two reasons:
* 1. Radios are a more simple and understandable control,
* and a better fit for a single-dimensional selection control
* 2. Multiple browsers use heuristics to strip table and grid roles from single-row tables with no column headers.
*/
isSemanticRadio?: boolean;
/**
* Position this ButtonGrid is in the parent set (index in a parent menu, for example)
*/
ariaPosInSet?: number;
/**
* @deprecated Use `ariaPosInSet`
*/
positionInSet?: number;
/**
* Size of the parent set (size of parent menu, for example)
*/
ariaSetSize?: number;
/**
* @deprecated Use `ariaSetSize`
*/
setSize?: number;
/**
* Theme to apply to the component.
*/
theme?: ITheme;
/**
* Optional styles for the component.
*/
styles?: IStyleFunctionOrObject<IButtonGridStyleProps, IButtonGridStyles>;
}
/**
* Properties required to build the styles for the ButtonGrid component.
*/
export interface IButtonGridStyleProps {
/**
* Theme to apply to the ButtonGrid
*/
theme: ITheme;
}
/**
* Styles for the ButtonGrid Component.
*/
export interface IButtonGridStyles {
/**
* Style for the table container of a ButtonGrid.
*/
root: IStyle;
/**
* Style for the table cells of the ButtonGrid.
*/
tableCell: IStyle;
/**
* Style for the FocusZone container for the ButtonGrid.
*/
focusedContainer?: IStyle;
}