UNPKG

baseui

Version:

A React Component library implementing the Base design language

164 lines (163 loc) • 8.02 kB
import type * as React from 'react'; import type { Override } from '../helpers/overrides'; export type LabelPlacement = 'left' | 'right'; export type CheckboxOverrides = { Checkmark?: Override; CheckmarkContainer?: Override; Label?: Override; Root?: Override; Input?: Override; }; export type DefaultProps = { overrides?: any; children?: React.ReactNode; checked: boolean; disabled: boolean; error: boolean; autoFocus: boolean; isIndeterminate: boolean; labelPlacement: LabelPlacement; onChange: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onMouseEnter: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onMouseLeave: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onMouseDown: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onMouseUp: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onFocus: (e: React.ChangeEvent<HTMLInputElement>) => unknown; onBlur: (e: React.ChangeEvent<HTMLInputElement>) => unknown; containsInteractiveElement?: boolean; }; export type CheckboxProps = { /** Id of element which contains a related caption */ 'aria-describedby'?: string; /** Id of element which contains a related error message */ 'aria-errormessage'?: string; /** Passed to the input element aria-label attribute. */ ariaLabel?: string; 'aria-label'?: string; /** Ids of element which this checkbox controls, may be useful when there is a master checkbox controlling multiple child checkboxes - https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-controls */ 'aria-controls'?: string; /** Component or String value for label of checkbox. */ children?: React.ReactNode; /** Indicates if this checkbox children contain an interactive element (prevents the label from moving focus from the child element to the radio button) */ containsInteractiveElement?: boolean; overrides?: CheckboxOverrides; /** Check or uncheck the control. */ checked?: boolean; /** Disable the checkbox from being changed. */ disabled?: boolean; /** Marks the checkbox as required. */ required?: boolean; /** Renders checkbox in errored state. */ error?: boolean; /** Used to get a ref to the input element. Useful for programmatically focusing the input */ inputRef?: React.RefObject<HTMLInputElement>; /** Focus the checkbox on initial render. */ autoFocus?: boolean; /** Passed to the input element id attribute */ id?: string; /** Passed to the input element name attribute */ name?: string; /** Passed to the input element value attribute */ value?: string; /** Indicates a 'half' state for the checkmark. In this case, `checked` is ignored. */ isIndeterminate?: boolean; /** How to position the label relative to the checkbox itself. */ labelPlacement?: LabelPlacement; /** Text to display in native OS tooltip on long hover. */ title?: string | null; /** Handler for change events on trigger element. */ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseenter events on trigger element. */ onMouseEnter?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseleave events on trigger element. */ onMouseLeave?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mousedown events on trigger element. */ onMouseDown?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseup events on trigger element. */ onMouseUp?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** handler for focus events on trigger element. */ onFocus?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** handler for blur events on trigger element. */ onBlur?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for keydown events on trigger element. */ onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; /** Handler for keyup events on trigger element. */ onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; }; export type CheckboxState = { isFocused: boolean; isFocusVisible: boolean; isHovered: boolean; isActive: boolean; }; export type CheckboxReducerState = { checked?: boolean; isIndeterminate?: boolean; }; export type StateReducer = (stateType: string, nextState: CheckboxReducerState, currentState: CheckboxReducerState, event: React.ChangeEvent<HTMLInputElement>) => CheckboxReducerState; export type StatefulContainerChildProps = { overrides?: CheckboxOverrides; /** Handler for change events on trigger element. */ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseenter events on trigger element. */ onMouseEnter?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseleave events on trigger element. */ onMouseLeave?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mousedown events on trigger element. */ onMouseDown?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseup events on trigger element. */ onMouseUp?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for focus events on trigger element. */ onFocus?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for blur events on trigger element. */ onBlur?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for keydown events on trigger element. */ onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; /** Handler for keyup events on trigger element. */ onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; /** Focus the checkbox on initial render. */ autoFocus?: boolean; } & CheckboxReducerState; export type StatefulContainerProps = { overrides?: CheckboxOverrides; /** Component or String value for label of checkbox. */ children?: (a: StatefulContainerChildProps) => React.ReactNode; /** Defines the components initial state value */ initialState?: CheckboxReducerState; /** A state change handler. Used to override default state transitions. */ stateReducer?: StateReducer; /** Handler for change events on trigger element. */ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseenter events on trigger element. */ onMouseEnter?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseleave events on trigger element. */ onMouseLeave?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mousedown events on trigger element. */ onMouseDown?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for mouseup events on trigger element. */ onMouseUp?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for focus events on trigger element. */ onFocus?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for blur events on trigger element. */ onBlur?: (e: React.ChangeEvent<HTMLInputElement>) => unknown; /** Handler for keydown events on trigger element. */ onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; /** Handler for keyup events on trigger element. */ onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown; /** Focus the checkbox on initial render. */ autoFocus?: boolean; }; export type StatefulCheckboxProps = Omit<StatefulContainerProps, 'children'> & Omit<CheckboxProps, 'value' | keyof DefaultProps> & Partial<DefaultProps>; export type SharedStyleProps = { $isFocused: boolean; $isFocusVisible: boolean; $isHovered: boolean; $isActive: boolean; $error: boolean; $checked: boolean; $isIndeterminate: boolean; $required: boolean; $disabled: boolean; $value: string; $labelPlacement?: LabelPlacement; };