1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 09:57:02 +01:00
metamask-extension/ui/components/component-library/modal-header
Garrett Bear 66292330fe
Feat/18890/button ts update (#20492)
* button to TS migration

working demo

style props

broken mapping - need switch

working types file

working types

fix dependent imports of Button

variant mapping

working types

fix lint

fix test

fix ButtonSize issue on QuizContent

box fix

test if this works

fix button being used on QuizContent

fix button_variant import

readme fix

* fix button import

* fix primary button as anchor hover

* deprecated

* button to TS migration

fix lint

fix test

* fix rebase issue

* fix rebase issue

* lint fix
2023-08-28 14:42:00 -07:00
..
__snapshots__ migration of HeaderBase to use TS Box version (#20250) 2023-08-01 17:36:55 -07:00
index.ts Adding ModalHeader component and updating PopoverHeader stories (#18311) 2023-04-25 14:27:54 -07:00
modal-header.stories.tsx Feat/18890/button ts update (#20492) 2023-08-28 14:42:00 -07:00
modal-header.test.tsx Adding ModalHeader component and updating PopoverHeader stories (#18311) 2023-04-25 14:27:54 -07:00
modal-header.tsx Update Text import paths: component library/ (#19987) 2023-07-17 14:00:16 -07:00
modal-header.types.ts migration of button icon to use TS box version (#20227) 2023-08-03 12:23:47 -07:00
README.mdx Feat/18890/button ts update (#20492) 2023-08-28 14:42:00 -07:00

import { Story, Canvas, ArgsTable } from '@storybook/addon-docs';
import { ModalHeader } from './modal-header';

# ModalHeader

`ModalHeader` handles the title, close button and back button for all Modal components. It is built on top of the [HeaderBase](/docs/components-componentlibrary-headerbase--default-story) component

<Canvas>
  <Story id="components-componentlibrary-modalheader--default-story" />
</Canvas>

## Props

The `ModalHeader` accepts all props below as well as all [Box](/docs/ui-components-ui-box-box-stories-js--default-story#props) component props

<ArgsTable of={ModalHeader} />

### Children

The title of the `ModalHeader` component. Passing a `string` will render the content inside of a `Text` component. Passing any other type will render the content as is.

<Canvas>
  <Story id="components-componentlibrary-modalheader--children" />
</Canvas>

```jsx
import {
  TextVariant,
  TextAlign,
  DISPLAY,
  FLEX_DIRECTION,
  AlignItems,
  JustifyContent,
} from '../../../helpers/constants/design-system';

import { ModalHeader,  AvatarAccount, Text } from '../../component-library';

<ModalHeader {...args} marginBottom={4}>
  Children as string
</ModalHeader>
<ModalHeader
  {...args}
  childrenWrapperProps={{
    display: DISPLAY.FLEX,
    flexDirection: FLEX_DIRECTION.COLUMN,
    alignItems: AlignItems.center,
    justifyContent: JustifyContent.center,
  }}
>
  <AvatarAccount address="0x1234" />
  <Text variant={TextVariant.headingSm} textAlign={TextAlign.Center}>
    Custom header using multiple components
  </Text>
</ModalHeader>
```

### onBack

Use the onClick handler `onBack` prop to render the `ButtonIcon` back button in the startAccessory position.

Use the `backButtonProps` prop to pass additional props to the `ButtonIcon` back button.

<Canvas>
  <Story id="components-componentlibrary-modalheader--on-back" />
</Canvas>

```jsx
import { ModalHeader } from '../../component-library';

<ModalHeader onBack={() => console.log('Back button click')}>
  OnBack Demo
</ModalHeader>;
```

### onClose

Use the onClick handler `onClose` prop to render the `ButtonIcon` back button in the endAccessory position.

Use the `backButtonProps` prop to pass additional props to the `ButtonIcon` back button.

<Canvas>
  <Story id="components-componentlibrary-modalheader--on-close" />
</Canvas>

```jsx
import { ModalHeader } from '../../component-library';

<ModalHeader onClose={() => console.log('Back button click')}>
  OnClose Demo
</ModalHeader>;
```

### startAccessory

Use the `startAccessory` prop to render a component in the startAccessory position. This will override the default back `ButtonIcon`.

<Canvas>
  <Story id="components-componentlibrary-modalheader--start-accessory" />
</Canvas>

```jsx
import { ModalHeader, Button, ButtonSize } from '../../component-library';

<ModalHeader startAccessory={<Button size={ButtonSize.Sm}>Demo</Button>}>
  StartAccessory
</ModalHeader>;
```

### endAccessory

Use the `endAccessory` prop to render a component in the endAccessory position. This will override the default close `ButtonIcon`.

<Canvas>
  <Story id="components-componentlibrary-modalheader--end-accessory" />
</Canvas>

```jsx
import { ModalHeader, Button, ButtonSize } from '../../component-library';

<ModalHeader endAccessory={<Button size={ButtonSize.Sm}>Demo</Button>}>
  EndAccessory
</ModalHeader>;
```