1.0.0 • Published 3 years ago
@eteg/react-modals v1.0.0
@garden/components 
This package includes several varieties of modals within the Garden Design System.
Installation
npm install @garden/components
# Peer Dependencies - Also Required
npm install react react-dom styled-components @zendeskgarden/react-buttons @zendeskgarden/react-theming react-icons --saveUsage
import { ThemeProvider } from '@zendeskgarden/react-theming';
import { Modal } from '@garden/components';
import { useState } from 'react';
/**
* Place a `ThemeProvider` at the root of your React application
*/
const modalButtons: PropsButtonModal[] = [
{
text: 'Loading',
function: () => console.log('Loading'),
isPrimary: true,
isLoading: true
},
{
text: 'Delete',
function: () => console.log('Delete'),
isPrimary: true,
isDanger: true
},
{
text: 'Confirm',
function: () => console.log('Confirm'),
isPrimary: true
}
];
export function App() {
const [buttonsModal, setButtonsModal] = useState < boolean > false;
return (
<ThemeProvider>
<Button onClick={() => setButtonsModal(true)}>Open Buttons Modal</Button>
<Modal
modalClose={() => setButtonsModal(false)}
isOpen={buttonsModal}
title="Lorem ipsum dolor sit amet"
buttons={modalButtons}
>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis ullamcorper lacus.
Nunc tempor aliquet quam id ullamcorper. Nunc a ex velit. Etiam commodo a eros eget
posuere.
</p>
</Modal>
</ThemeProvider>
);
}Modal Component
Extends HTMLAttributes
The Modal Component applies appropriate styles based on its usage and the props provided.
| Prop name | Type | Default | Description | Required |
|---|---|---|---|---|
| modalClose | function | Function that closes the Modal | yes | |
| isOpen | boolean | If true, the modal will be opened. | yes | |
| title | string | Title that will appear in the header | yes | |
| modalWidth | string | '60%' | Modal width on Screen | no |
| alignButtons | string | 'space-between' | Distribution of buttons along the main-axis of a flex container | no |
| isScrolling | boolean | false | If true, modal body has overflow-y: scroll | no |
| modalIsDanger | boolean | false | If true, applies danger styling | no |
| maxMenuHeight | string | '150px' | Maximum height of a Select input inside the Modal body | no |
| buttons | Buttons[] | Array with the Buttons that will appear in the modal, check the section below (Modal Buttons) for the properties of each button | no |
Modal Buttons
Extends ButtonHTMLAttributes
The Modal Buttons applies appropriate styles based on its usage and the props provided.
| Prop name | Type | Default | Description | Required |
|---|---|---|---|---|
| text | string | Button Text | yes | |
| function | function | Button onClick function | yes | |
| isPrimary | boolean | false | If true, applies primary button styling | no |
| isBasic | boolean | false | If true, applies basic button styling | no |
| isDanger | boolean | false | If true, applies danger button styling | no |
| isLoading | boolean | false | If true, applies loading button styling | no |
| disabled | boolean | false | If true, disable the button and applies disabled button styling | no |
| marginButto | string | 0 | Used when the buttons are aligned left or right, to leave a space between them | no |
1.0.0
3 years ago