@kvaser/canking-api
Version:
CanKing API to communicate with the CanKing service using Node.js.
144 lines (143 loc) • 4.66 kB
TypeScript
/**
* This module includes a toolbar UI control.
*
* To be able to use these controls the CanKingDataProvider component must be present in the
* component tree above your component. Normally the CanKingDataProvider is added
* at the root of the component tree.
*
* @packageDocumentation
*/
import React from 'react';
import { Variant } from '@mui/material/styles/createTypography';
import { DropdownButtonChildrenProps } from './DropdownButton';
/**
* Properties of a Label component displayed by the toolbar.
*/
export interface LabelProps {
/** The label text. */
text: string;
/** The label variant. */
variant?: Variant;
}
/**
* Properties of a ToggleButton component displayed by the toolbar.
*/
export interface ToggleButtonProps {
/** The value represented by this toggle button. */
value: string;
/** An icon that will be displayed in this button. */
icon: React.ReactNode;
/** The button size. */
size?: 'small' | 'medium' | 'large' | number;
/** A tooltip of this button. */
tooltip?: string;
/** Aria label. */
ariaLabel?: string;
/** Set to true to disable this button. */
disabled?: boolean;
}
/**
* Properties of a ToggleButtonGroup component displayed by the toolbar.
*/
export interface ToggleButtonGroupProps {
/** Value of the selected buttons in this group. */
value: string[];
/**
* Callback that will be called when any button in this group has been selected/deselected.
* @param value The new value.
*/
onChange: (value: string[]) => void;
/** The buttons in this group. */
buttons: ToggleButtonProps[];
/** Size of the buttons in this group. */
size?: 'small' | 'medium' | 'large';
/** Set to true if only one of the buttons can be selected at the time. */
exclusive?: boolean;
/** Aria label. */
ariaLabel?: string;
/** Orientation of this group. */
orientation?: 'vertical' | 'horizontal';
}
/**
* Properties of a Button component displayed by the toolbar.
*/
export interface ButtonProps {
/**
* Callback that will be called when this button has been clicked.
*/
onClick: () => void;
/** Icon to be displayed in this button. */
icon?: React.ReactNode;
/** Text to be displayed in this button. */
text?: string;
/** Size of this button. */
size?: 'small' | 'medium' | 'large' | number;
/** The button variant. */
variant?: 'text' | 'contained' | 'outlined';
/** The button color. */
color?: 'inherit' | 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';
/** A tooltip of this button. */
tooltip?: string;
/** Aria label. */
ariaLabel?: string;
/** Set to true to disable this button. */
disabled?: boolean;
/** Chidren to be displayed in this button if this button should be a {@link DropdownButton} */
children?: React.ReactElement<DropdownButtonChildrenProps>;
}
/**
* Properties of a ButtonGroup component displayed by the toolbar.
*/
export interface ButtonGroupProps {
/** The buttons in this group. */
buttons: ButtonProps[];
/** Size of the buttons in this group. */
size?: 'small' | 'medium' | 'large';
/** Aria label. */
ariaLabel?: string;
/** Orientation of this group. */
orientation?: 'vertical' | 'horizontal';
}
/**
* A toolbar item. Could be one of its properties.
*/
export interface toolbarItem {
/** A label. */
label?: LabelProps;
/** A toggle button group. */
toggleButtonGroup?: ToggleButtonGroupProps;
/** A button. */
button?: ButtonProps;
/** A button group. */
buttonGroup?: ButtonGroupProps;
/** A custom node. */
other?: React.ReactNode;
}
/**
* Properties of a ToolbarControl component.
*/
export interface ToolbarControlProps {
/** The toolbar items. */
items: toolbarItem[];
/** The toolbar height. */
height?: number;
/** The toolbar width. */
width?: number;
/** How to justify the items. */
justifyContent?: 'left' | 'center' | 'right' | 'space-between';
/** The border size. */
borderSize?: number;
/** The padding. */
padding?: number;
/** The background color. */
backgroundColor?: string;
/** The orientation. */
orientation?: 'vertical' | 'horizontal';
}
/**
* Creates a toolbar control.
* @param props Component properties.
* @returns The ToolbarControl React component.
*/
declare function ToolbarControl({ items, height, width, justifyContent, borderSize, padding, backgroundColor, orientation, }: ToolbarControlProps): import("react/jsx-runtime").JSX.Element;
export default ToolbarControl;