Icon Buttons
Icon buttons allow users to take actions, and make choices, with a single tap.
- Module @pmwcs/icon-button
- Import styles:
- Using CSS Loader
- import '@pmwcs/icon-button/styles';
- Or include stylesheets
- '@material/icon-button/dist/mdc.icon-button.css'
- '@pmwcs/icon/icon.css'
- '@material/ripple/dist/mdc.ripple.css'
- Using CSS Loader
- MDC Docs: https://material.io/develop/web/components/buttons/icon-buttons/
Basic Usage
IconButton
inherits from the Icon
component and can be passed icons in the same way.
<>
<IconButton icon="star" label="Rate this!" />
<IconButton icon="favorite" label="Favorite" disabled />
<IconButton
icon="images/icons/twitter.png"
aria-label="Tweet it!"
tag="a"
target="_blank"
href={`https://twitter.com/intent/tweet?text=${encodeURIComponent(
'You should definitely be using PMWCS for your next project!'
)}`}
/>
</>
Usage as a Toggle
To use as a toggle, specify an additional toggled on state using 'onIcon'.
<>
<IconButton icon="favorite_border" onIcon="favorite" />
<IconButton icon="favorite" onIcon="favorite" disabled />
</>
function Controlled() {
const [isChecked, setIsChecked] = React.useState(false);
return (
<>
<IconButton
checked={isChecked}
onClick={() => setIsChecked(!isChecked)}
onIcon="star"
icon="star_border"
/>
<IconButton
checked={isChecked}
onClick={() => setIsChecked(!isChecked)}
onIcon="images/icons/twitter.png"
icon="images/icons/facebook.png"
/>
</>
);
}
<IconButton
onIcon={
<div
style={{
background: 'red',
width: '24px',
height: '24px'
}}
/>
}
icon={
<div
style={{
background: 'green',
width: '24px',
height: '24px',
borderRadius: '50%'
}}
/>
}
/>
IconButton
An IconButton component that can also be used as a toggle.
Props
Name | Type | Description |
---|---|---|
checked |
undefined | false | true |
Controls the on / off state of the a toggleable button. |
disabled |
undefined | false | true |
Makes the button disabled |
foundationRef |
Ref<MDCIconButtonToggleFoundation> |
Advanced: A reference to the MDCFoundation. Only for Toggleable buttons. |
icon |
IconPropT |
Icon for the button |
label |
undefined | string |
Apply an aria label. |
onChange |
undefined | (evt: IconButtonOnChangeEventT) => void |
An onChange callback that receives a custom event. evt.detail = { isOn: boolean } |
onIcon |
IconPropT |
If specified, renders a toggle with this icon as the on state. |
ripple |
RipplePropT |
Adds a ripple effect to the component |
size |
"xsmall" | "small" | "medium" | "large" | "xlarge" |
A size to render the icon |
primary |
undefined | false | true |
Choose primary theme. |
secondary |
undefined | false | true |
Choose secondary theme. |
outlined |
undefined | false | true |
Make the button outlined. |