import { Colors } from '@bigcommerce/big-design-theme'; import React, { KeyboardEventHandler, ReactEventHandler, RefObject } from 'react'; import { SelectOption } from '../Select'; export type ExpandableRows = Record>; export type DisabledRows = Array; export interface WorksheetLocalization { toggleRowExpanded: string; } export interface WorksheetProps { columns: Array>; items: Item[]; expandableRows?: ExpandableRows; defaultExpandedRows?: Array; disabledRows?: DisabledRows; height?: number | string; localization?: WorksheetLocalization; minWidth?: number; onChange(items: Item[]): void; onErrors?(items: Array>): void; } export interface WorksheetError { item: Item; errors: Array; } export interface NotationConfig { color: keyof Colors; description: string; } interface CellActionConfig { transform: (value: number | string) => string; icon: React.ReactNode; } export type WorksheetColumn = WorksheetTextColumn | WorksheetNumberColumn | WorksheetCheckboxColumn | WorksheetSelectableColumn | WorksheetModalColumn; export type InternalWorksheetColumn = WorksheetTextColumn | WorksheetNumberColumn | WorksheetCheckboxColumn | WorksheetSelectableColumn | WorksheetModalColumn | WorksheetToggleColumn; interface WorksheetBaseColumn { disabled?: boolean; enabled?: boolean; hash: keyof Item; header: string; width?: string | number; tooltip?: string; validation?(value: Item[keyof Item] | ''): boolean; notation?(value: Item[keyof Item] | '', row: WorksheetItem): NotationConfig | undefined; } export interface WorksheetTextColumn extends WorksheetBaseColumn { type?: 'text'; formatting?(value: Item[keyof Item] | ''): string; action?: CellActionConfig; } export interface WorksheetNumberColumn extends WorksheetBaseColumn { type: 'number'; formatting?(value: Item[keyof Item] | ''): string; action?: CellActionConfig; } export interface WorksheetCheckboxColumn extends WorksheetBaseColumn { type: 'checkbox'; } export interface WorksheetSelectableColumn extends WorksheetBaseColumn { config: { options: Array>; }; type: 'select' | 'multiSelect'; } export interface WorksheetModalColumn extends WorksheetBaseColumn { config: { cancelActionText?: string; header?: string; render(value: Item[keyof Item], onChange: (value: Item[keyof Item]) => void): React.ReactNode; saveActionText?: string; }; formatting?(value: Item[keyof Item] | ''): string; type: 'modal'; } export interface WorksheetToggleColumn extends WorksheetBaseColumn { type: 'toggle'; } export interface Cell { columnIndex: number; disabled?: boolean; hash: keyof Item; hidden?: boolean; rowIndex: number; type: Exclude['type'], undefined>; value: Item[keyof Item] | ''; } export interface InternalTableInterface { hasExpandableRows: boolean; hasStaticWidth: boolean; minWidth?: number; onKeyDown?: KeyboardEventHandler | undefined; onKeyUp?: ReactEventHandler | undefined; tableRef: RefObject; } export type WorksheetItem = Record; export {}; //# sourceMappingURL=types.d.ts.map