Storybook/fix modal docs (#24150)

* Convert modal

* Storybook: Add mdx for Modal

* Storybook: Add mdx for ConfirmModal

Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
(cherry picked from commit 89ee84a909)
This commit is contained in:
Alex Khomenko
2020-05-07 14:59:21 +02:00
committed by Arve Knudsen
parent 11a4a8c40f
commit 413cc7c5a8
7 changed files with 45 additions and 7 deletions
@@ -0,0 +1,10 @@
import { Meta, Story, Preview, Props } from '@storybook/addon-docs/blocks';
import { ConfirmModal } from './ConfirmModal';
<Meta title="MDX|ConfirmModal" component={ConfirmModal} />
# ConfirmModal
Used to request user for action confirmation, e.g. deleting items. Triggers provided 'onConfirm' callback.
<Props of={ConfirmModal} />
@@ -3,6 +3,7 @@ import { text, boolean, select } from '@storybook/addon-knobs';
import { action } from '@storybook/addon-actions';
import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
import { ConfirmModal } from './ConfirmModal';
import mdx from './ConfirmModal.mdx';
const getKnobs = () => {
return {
@@ -27,6 +28,11 @@ export default {
title: 'Overlays/ConfirmModal',
component: ConfirmModal,
decorators: [withCenteredStory],
parameters: {
docs: {
page: mdx,
},
},
};
export const basic = () => {
@@ -7,8 +7,6 @@ import { stylesFactory, ThemeContext } from '../../themes';
import { GrafanaTheme } from '@grafana/data';
import { HorizontalGroup } from '..';
const defaultIcon: IconName = 'exclamation-triangle';
export interface Props {
isOpen: boolean;
title: string;
@@ -26,7 +24,7 @@ export const ConfirmModal: FC<Props> = ({
body,
confirmText,
dismissText = 'Cancel',
icon,
icon = 'exclamation-triangle',
onConfirm,
onDismiss,
}) => {
@@ -34,7 +32,7 @@ export const ConfirmModal: FC<Props> = ({
const styles = getStyles(theme);
return (
<Modal className={styles.modal} title={title} icon={icon || defaultIcon} isOpen={isOpen} onDismiss={onDismiss}>
<Modal className={styles.modal} title={title} icon={icon} isOpen={isOpen} onDismiss={onDismiss}>
<div className={styles.modalContent}>
<div className={styles.modalText}>{body}</div>
<HorizontalGroup justify="center">
@@ -0,0 +1,17 @@
import { Meta, Story, Preview, Props } from '@storybook/addon-docs/blocks';
import { Modal } from './Modal';
import { ModalTabsHeader } from './ModalTabsHeader';
<Meta title="MDX|Modal" component={Modal} />
# Modal
Generic Modal component
<Props of={Modal} />
# ModalTabsHeader
Custom header element with tabs
<Props of={ModalTabsHeader} />
@@ -7,6 +7,7 @@ import { Modal } from './Modal';
import { Icon } from '../Icon/Icon';
import { ModalTabsHeader } from './ModalTabsHeader';
import { TabContent } from '../Tabs/TabContent';
import mdx from './Modal.mdx';
const getKnobs = () => {
return {
@@ -30,6 +31,11 @@ export default {
title: 'Overlays/Modal',
component: Modal,
decorators: [withCenteredStory],
parameters: {
docs: {
page: mdx,
},
},
};
export const basic = () => {
@@ -10,13 +10,14 @@ import { IconButton } from '../IconButton/IconButton';
export interface Props extends Themeable {
icon?: IconName;
/** Title for the modal or custom header element */
title: string | JSX.Element;
className?: string;
isOpen?: boolean;
onDismiss?: () => void;
// If not set will call onDismiss if that is set.
/** If not set will call onDismiss if that is set. */
onClickBackdrop?: () => void;
}
@@ -16,9 +16,9 @@ const ModalsContext = React.createContext<ModalsContextState>({
interface ModalsProviderProps {
children: React.ReactNode;
/** Set default component to render as modal. Usefull when rendering modals from Angular */
/** Set default component to render as modal. Useful when rendering modals from Angular */
component?: React.ComponentType<any> | null;
/** Set default component props. Usefull when rendering modals from Angular */
/** Set default component props. Useful when rendering modals from Angular */
props?: any;
}