From 48a5ece7dfdc225101a03a8435537babd23a024c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Mon, 1 Jun 2020 17:16:33 +0200 Subject: [PATCH] Add modal to Storybook [MAILPOET-2777] --- .storybook/preview.js | 2 +- assets/js/src/common/modal/_stories/modal.tsx | 87 +++++++++++++++++++ assets/js/src/common/modal/header.tsx | 2 +- 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 assets/js/src/common/modal/_stories/modal.tsx diff --git a/.storybook/preview.js b/.storybook/preview.js index ec5bfb53ee..fa81b9d678 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -5,4 +5,4 @@ import '../assets/dist/css/mailpoet-plugin.css'; import '../assets/dist/css/mailpoet-form-editor.css'; addDecorator(withPerformance); -addDecorator(story =>
{story()}
); +addDecorator(story =>
{story()}
); diff --git a/assets/js/src/common/modal/_stories/modal.tsx b/assets/js/src/common/modal/_stories/modal.tsx new file mode 100644 index 0000000000..2ff829e4a9 --- /dev/null +++ b/assets/js/src/common/modal/_stories/modal.tsx @@ -0,0 +1,87 @@ +import React, { useState } from 'react'; +import Button from '../../button/button'; +import Modal from '../modal'; +import Heading from '../../typography/heading/heading'; + +const shortContent = ( + <> +

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

+

Morbi libero sapien, tristique sollicitudin lobortis id, viverra id libero.

+

Mauris dolor felis, sagittis at, luctus sed, aliquam non, tellus.

+ +); + +const longContent = ( + <> +

{'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '.repeat(20)}

+

{'Morbi libero sapien, tristique sollicitudin lobortis id, viverra id libero. '.repeat(20)}

+

{'Mauris dolor felis, sagittis at, luctus sed, aliquam non, tellus. '.repeat(20)}

+

{'Vivamus ac leo pretium faucibus.'.repeat(20)}

+

{'Etiam dui sem, fermentum vitae, sagittis id, malesuada in, quam. '.repeat(20)}

+

{'Duis sapien nunc, commodo et, interdum suscipit, sollicitudin et, dolor. '.repeat(20)}

+

{'Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. '.repeat(20)}

+

{'Cras pede libero, dapibus nec, pretium sit amet, tempor quis. '.repeat(20)}

+ +); + +export default { + title: 'Modal', + component: Modal, +}; + +const ModalWrapper = ({ + buttonCaption, + title = 'Modal title', + isDismissible = true, + content = shortContent, + fullScreen = false, +}) => { + const [showModal, setShowModal] = useState(false); + return ( +

+ + {showModal && ( + setShowModal(false)} + isDismissible={isDismissible} + fullScreen={fullScreen} + > + {content} + + ) } +

+ ); +}; + +export const Modals = () => ( + <> + Modal with short text + + + + + +
+ + Modal with long text + + + + + +
+ + Full-screen modal + + + + + +); diff --git a/assets/js/src/common/modal/header.tsx b/assets/js/src/common/modal/header.tsx index 9295ffe6d7..f082730c7e 100644 --- a/assets/js/src/common/modal/header.tsx +++ b/assets/js/src/common/modal/header.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Heading from 'common/typography/heading/heading'; +import Heading from '../typography/heading/heading'; type Props = { title: string,