LogicButton
A LogicButton displays an operator within a boolean logic sequence.
| install | yarn add @react-spectrum/button |
|---|---|
| version | 3.0.0-rc.2 |
| usage | import {LogicButton} from '@react-spectrum/button' |
Example#
<LogicButton variant="and">And</LogicButton>Content#
LogicButtons must have a variant and optionally can have a label. A visible label can be provided by passing children.
<LogicButton variant="or">Or</LogicButton>Internationalization#
In order to internationalize a LogicButton, a localized string should be passed to the children or aria-label prop.
Events#
LogicButton supports user interactions via mouse, keyboard, and touch. You can handle all of these via the onPress prop.
The following example uses an onPress handler to update the variant.
function Example() {
let [variant setVariant] = ReactuseState('or');
return (
<LogicButton variant=variant onPress=() => setVariant(variant === 'or' ? 'and' : 'or')>variant</LogicButton>
);
}Props#
| Name | Type | Default | Description |
variant | 'and' | 'or' | — | The type of boolean sequence to be represented by the LogicButton. |
type | 'button' | 'submit' | 'reset' | "button" | The behavior of the button when used in an HTML form. |
isDisabled | boolean | — | Whether the button is disabled |
elementType | string | JSXElementConstructor<any> | "button" | The HTML element or React element used to render the button, e.g. "div", "a", or RouterLink. |
children | ReactNode | — | The content to display in the button. |
href | string | — | A URL to link to if elementType="a". |
target | string | — | The target window for the link. |
autoFocus | boolean | — | Whether the element should receive focus on render |
UNSAFE_className | string | — | The className to apply to the element. Do not use unless completely necessary as it may break component styling. |
UNSAFE_style | CSSProperties | — | The inline styles to apply to the element. Do not use unless completely necessary as it may break component styling. |
Events
| Name | Type | Default | Description |
onPress | (e: PressEvent) => void | — | Handler that is called when the press is released over the target. |
onPressStart | (e: PressEvent) => void | — | Handler that is called when a press interaction starts. |
onPressEnd | (e: PressEvent) => void | — | Handler that is called when a press interation ends, either over the target or when the pointer leaves the target. |
onPressChange | (isPressed: boolean) => void | — | Handler that is called when the press state changes. |
onPressUp | (e: PressEvent) => void | — | Handler that is called when a press is released over the target, regardless of whether it started on the target or not. |
onFocus | (e: FocusEvent) => void | — | Handler that is called when the element receives focus. |
onBlur | (e: FocusEvent) => void | — | Handler that is called when the element loses focus. |
onFocusChange | (isFocused: boolean) => void | — | Handler that is called when the element's focus status changes. |
onKeyDown | (e: KeyboardEvent) => void | — | Handler that is called when a key is pressed. |
onKeyUp | (e: KeyboardEvent) => void | — | Handler that is called when a key is released. |
Layout
| Name | Type | Default | Description |
flex | string | number | boolean | — | |
flexGrow | number | — | |
flexShrink | number | — | |
flexBasis | number | string | — | |
alignSelf | 'auto'
| 'normal'
| 'start'
| 'end'
| 'flex-start'
| 'flex-end'
| 'self-start'
| 'self-end'
| 'center'
| 'stretch' | — | |
justifySelf | 'auto'
| 'normal'
| 'start'
| 'end'
| 'flex-start'
| 'flex-end'
| 'self-start'
| 'self-end'
| 'center'
| 'left'
| 'right'
| 'stretch' | — | |
flexOrder | number | — | |
gridArea | string | — | |
gridColumn | string | — | |
gridRow | string | — | |
gridColumnStart | string | — | |
gridColumnEnd | string | — | |
gridRowStart | string | — | |
gridRowEnd | string | — |
Spacing
| Name | Type | Default | Description |
margin | DimensionValue | — | |
marginTop | DimensionValue | — | |
marginLeft | DimensionValue | — | |
marginRight | DimensionValue | — | |
marginBottom | DimensionValue | — | |
marginStart | DimensionValue | — | |
marginEnd | DimensionValue | — | |
marginX | DimensionValue | — | |
marginY | DimensionValue | — |
Sizing
| Name | Type | Default | Description |
width | DimensionValue | — | |
minWidth | DimensionValue | — | |
maxWidth | DimensionValue | — | |
height | DimensionValue | — | |
minHeight | DimensionValue | — | |
maxHeight | DimensionValue | — |
Positioning
| Name | Type | Default | Description |
position | 'static'
| 'relative'
| 'absolute'
| 'fixed'
| 'sticky' | — | |
top | DimensionValue | — | |
bottom | DimensionValue | — | |
left | DimensionValue | — | |
right | DimensionValue | — | |
start | DimensionValue | — | |
end | DimensionValue | — | |
zIndex | number | — | |
isHidden | boolean | — |
Accessibility
| Name | Type | Default | Description |
id | string | — | The element's unique identifier. |
tabIndex | number | — | Indicates whether an element is focusable, allows or prevents them from being sequentially focusable, and determines their relative ordering for sequential focus navigation. |
aria-expanded | boolean | — | Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. |
aria-haspopup | boolean
| 'menu'
| 'listbox'
| 'tree'
| 'grid'
| 'dialog' | — | Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. |
aria-controls | string | — | Identifies the element (or elements) whose contents or presence are controlled by the current element. |
aria-pressed | boolean | — | Indicates the current "pressed" state of toggle buttons. |
aria-label | string | — | Defines a string value that labels the current element. |
aria-labelledby | string | — | Identifies the element (or elements) that labels the current element. |
aria-describedby | string | — | Identifies the element (or elements) that describes the object. |
aria-details | string | — | Identifies the element (or elements) that provide a detailed, extended description for the object. |
Visual options#
Variant#
<LogicButton variant="or" marginRight="20px">Or</LogicButton>
<LogicButton variant="and">And</LogicButton>Disabled#
<LogicButton variant="or" isDisabled>Or</LogicButton>