Table of Contents
- Introduction
- Local Development
- Props
- Peer Dependencies
- Events
- Testing
pie-button
pie-button
is a Web Component built using the Lit library. It offers a simple and accessible button component for web applications.
This component can be easily integrated into various frontend frameworks and customized through a set of properties.
Local development
Install the dependencies. Note that this, and the following commands below, should be run from the root of the monorepo:
yarn
To build the pie-button
package, run the following command:
yarn build --filter=pie-button
If you'd like to develop using the component storybook, then you should build the component in watch
mode, and run storybook in a separate terminal tab:
yarn watch --filter=pie-button
yarn dev --filter=pie-storybook
Importing the component
import { PieButton } from '@justeattakeaway/pie-button';
import { PieButton } from '@justeattakeaway/pie-button/dist/react';
Peer Dependencies
Note
Before using @justeattakeaway/pie-button
, please make sure you have the following peer dependencies installed in your project:
react
(for integration with React apps only)
Props
Property | Type | Default | Description |
---|
size | String | medium | Size of the button, one of sizes – xsmall , small-expressive , small-productive , medium , large |
type | String | submit | Type of the button, one of types – submit , button , reset , menu |
variant | String | primary | Variant of the button, one of variants – primary , secondary , outline , ghost , destructive , destructive-ghost , inverse , ghost-inverse or outline-inverse |
disabled | Boolean | false | If true , disables the button. |
isFullWidth | Boolean | false | If true , sets the button width to 100% of its container. |
isLoading | Boolean | false | If true , displays a loading indicator inside the button. |
iconPlacement | String | leading | Icon placements of the icon slot, if provided, one of iconPlacements - leading , trailing |
In your markup or JSX, you can then use these to set the properties for the pie-button
component:
<pie-button size='medium' type='button' variant='primary'>Click me!</pie-button>
<PieButton size='medium' type='button' variant='primary'>Click me!</PieButton>
Slots
Slot | Description |
---|
Default slot | The default slot is used to pass text into the button component. |
icon | Used to pass in an icon to the button component. The icon placement can be controlled via the iconPlacement prop and we recommend using pie-icons-webc for defining this icon, but this can also accept an SVG icon. |
Using pie-icons-webc
with pie-button
icon slot
We recommend using pie-icons-webc
when using the icon
slot. Here is an example of how you would do this:
<pie-button>
<icon-plus-circle slot="icon"></icon-plus-circle>
Search
</pie-button>
Events
This component does not use any custom event handlers. In order to add event listening to this component, you can treat it like a native HTML element in your application.
For example, to add a click handler in various templates:
HTML
<pie-button onclick="e => console.log(e)">Click me!</pie-button>
Vue templates (using Nuxt 3)
<pie-button @click="handleClick">Click me!</pie-button>
React templates (using Next 13)
<PieButton onClick={handleClick}>increment</PieButton>
Testing
Browser tests
To run the browser tests, run the following command from the root of the monorepo:
yarn test:browsers --filter=pie-button
Visual tests
To run the visual regression tests, run the following command from the root of the monorepo:
yarn test:visual --filter=pie-button
Note: To run these locally, you will need to ensure that any environment variables required are set up on your machine to mirror those on CI (such as Percy tokens). How you achieve this will differ between operating systems.
Setup via bash
export PERCY_TOKEN_PIE_BUTTON=abcde
Setup via package.json
Under scripts test:visual
replace the environment variable with the below:
PERCY_TOKEN_PIE_BUTTON=abcde