// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React, { useState } from 'react'; import Flex from '../Flex'; import FormField from '../FormField'; import RadioGroup from '../RadioGroup'; import Modal from './'; import ModalHeader from './ModalHeader'; import ModalBody from './ModalBody'; import ModalButton from './ModalButton'; import ModalButtonGroup from './ModalButtonGroup'; import PrimaryButton from '../Button/PrimaryButton'; import Heading from '../Heading'; export default { title: 'UI Components/Modal', component: Modal, excludeStories: ['ModalDemo'], }; const options = [ { value: 'personal', label: 'My personal meeting ID: 1111-22-1111', }, { value: 'new', label: 'Generate a new ID', }, ]; const TestRadioGroup: React.FC> = (props) => { const [value, setValue] = useState('personal'); const handleChange = (evt: any) => { setValue(evt.target.value); }; return ( ); }; const commonHiddenArgTypes = { onClose: { table: { disable: true } }, rootId: { table: { disable: true } }, dismissible: { table: { disable: true } }, }; export const BasicModal = (args) => { const [showModal, setShowModal] = useState(false); const toggleModal = () => setShowModal(!showModal); return (
Modal basic example {showModal && (

Start this meeting with your personal meeting ID or generate a new, unique and private meeting ID.

alert('I will close the modal next')} variant="primary" label="submit" closesModal />, , ]} secondaryButtons={ alert("I won't close the modal")} variant="secondary" label="another action" /> } />
)}
); }; BasicModal.argTypes = { size: { control: 'select', options: ['md', 'lg', 'fullscreen'] }, ...commonHiddenArgTypes, }; BasicModal.args = { size: 'md', }; BasicModal.story = 'Basic Modal'; export const ScrollableModal = (args) => { const [showModal, setShowModal] = useState(false); const toggleModal = () => setShowModal(!showModal); return (
Modal with scrollable content {showModal && (

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse urna eros, vestibulum quis gravida quis, tempus in sapien. Sed aliquet velit lectus, ac tempus dui iaculis ac. Morbi ullamcorper laoreet magna ac commodo. Aenean pharetra nulla sapien, nec interdum dolor semper quis. Ut posuere libero at scelerisque iaculis. Phasellus eu arcu ullamcorper, ultrices turpis id, pretium tellus. Integer accumsan ultrices semper. Maecenas eu scelerisque metus, nec pulvinar odio. Nunc imperdiet efficitur vehicula. Curabitur laoreet ut tellus quis sagittis. Nulla auctor vitae felis quis convallis. Nunc hendrerit imperdiet elit at auctor. Integer condimentum euismod orci vitae venenatis. Proin maximus in sem vitae auctor. Aliquam egestas, lorem vel volutpat pharetra, dolor felis malesuada lorem, vitae fermentum eros erat tempor lacus.

Duis tempus sagittis consectetur. Aliquam ut ante eu elit laoreet condimentum. Pellentesque nunc leo, egestas a porttitor sed, euismod tempor neque. Aenean a est eu mauris elementum venenatis. Cras sit amet ex pellentesque augue suscipit dignissim. Donec tempor lacinia orci non elementum. Fusce quis elit est. Nullam magna tortor, dapibus quis maximus varius, dapibus a nunc. Proin eget magna posuere justo ullamcorper posuere sit amet at quam. Donec lacinia libero vel tellus efficitur, vitae posuere enim porta. Suspendisse vitae tellus vitae tellus semper cursus ornare in nunc. Mauris molestie velit eu malesuada pellentesque.

Vivamus nisi justo, sagittis eu dolor vel, pretium placerat dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam condimentum nisi velit, id pellentesque quam facilisis dapibus. Donec orci est, faucibus at dapibus sit amet, hendrerit vitae libero. Quisque sed pellentesque diam. Fusce vitae imperdiet nisi, a elementum ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla pharetra nunc, sed ornare urna congue a.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse urna eros, vestibulum quis gravida quis, tempus in sapien. Sed aliquet velit lectus, ac tempus dui iaculis ac. Morbi ullamcorper laoreet magna ac commodo. Aenean pharetra nulla sapien, nec interdum dolor semper quis. Ut posuere libero at scelerisque iaculis. Phasellus eu arcu ullamcorper, ultrices turpis id, pretium tellus. Integer accumsan ultrices semper. Maecenas eu scelerisque metus, nec pulvinar odio. Nunc imperdiet efficitur vehicula. Curabitur laoreet ut tellus quis sagittis. Nulla auctor vitae felis quis convallis. Nunc hendrerit imperdiet elit at auctor. Integer condimentum euismod orci vitae venenatis. Proin maximus in sem vitae auctor. Aliquam egestas, lorem vel volutpat pharetra, dolor felis malesuada lorem, vitae fermentum eros erat tempor lacus.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse urna eros, vestibulum quis gravida quis, tempus in sapien. Sed aliquet velit lectus, ac tempus dui iaculis ac. Morbi ullamcorper laoreet magna ac commodo. Aenean pharetra nulla sapien, nec interdum dolor semper quis. Ut posuere libero at scelerisque iaculis. Phasellus eu arcu ullamcorper, ultrices turpis id, pretium tellus. Integer accumsan ultrices semper. Maecenas eu scelerisque metus, nec pulvinar odio. Nunc imperdiet efficitur vehicula. Curabitur laoreet ut tellus quis sagittis. Nulla auctor vitae felis quis convallis. Nunc hendrerit imperdiet elit at auctor. Integer condimentum euismod orci vitae venenatis. Proin maximus in sem vitae auctor. Aliquam egestas, lorem vel volutpat pharetra, dolor felis malesuada lorem, vitae fermentum eros erat tempor lacus.

Duis tempus sagittis consectetur. Aliquam ut ante eu elit laoreet condimentum. Pellentesque nunc leo, egestas a porttitor sed, euismod tempor neque. Aenean a est eu mauris elementum venenatis. Cras sit amet ex pellentesque augue suscipit dignissim. Donec tempor lacinia orci non elementum. Fusce quis elit est. Nullam magna tortor, dapibus quis maximus varius, dapibus a nunc. Proin eget magna posuere justo ullamcorper posuere sit amet at quam. Donec lacinia libero vel tellus efficitur, vitae posuere enim porta. Suspendisse vitae tellus vitae tellus semper cursus ornare in nunc. Mauris molestie velit eu malesuada pellentesque.

Vivamus nisi justo, sagittis eu dolor vel, pretium placerat dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam condimentum nisi velit, id pellentesque quam facilisis dapibus. Donec orci est, faucibus at dapibus sit amet, hendrerit vitae libero. Quisque sed pellentesque diam. Fusce vitae imperdiet nisi, a elementum ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla pharetra nunc, sed ornare urna congue a.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse urna eros, vestibulum quis gravida quis, tempus in sapien. Sed aliquet velit lectus, ac tempus dui iaculis ac. Morbi ullamcorper laoreet magna ac commodo. Aenean pharetra nulla sapien, nec interdum dolor semper quis. Ut posuere libero at scelerisque iaculis. Phasellus eu arcu ullamcorper, ultrices turpis id, pretium tellus. Integer accumsan ultrices semper. Maecenas eu scelerisque metus, nec pulvinar odio. Nunc imperdiet efficitur vehicula. Curabitur laoreet ut tellus quis sagittis. Nulla auctor vitae felis quis convallis. Nunc hendrerit imperdiet elit at auctor. Integer condimentum euismod orci vitae venenatis. Proin maximus in sem vitae auctor. Aliquam egestas, lorem vel volutpat pharetra, dolor felis malesuada lorem, vitae fermentum eros erat tempor lacus.

, , ]} />
)}
); }; ScrollableModal.argTypes = { size: { control: 'select', options: ['md', 'lg', 'fullscreen'] }, ...commonHiddenArgTypes, }; ScrollableModal.args = { size: 'md', }; ScrollableModal.story = { name: 'Scrollable Modal', }; export const PersistentModal = (args) => { const [showModal, setShowModal] = useState(false); const toggleModal = () => setShowModal(!showModal); return (
Persistent Modal Example {showModal && (

Vivamus nisi justo, sagittis eu dolor vel, pretium placerat dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam condimentum nisi velit, id pellentesque quam facilisis dapibus. Donec orci est, faucibus at dapibus sit amet, hendrerit vitae libero. Quisque sed pellentesque diam. Fusce vitae imperdiet nisi, a elementum ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla pharetra nunc, sed ornare urna congue a.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse urna eros, vestibulum quis gravida quis, tempus in sapien. Sed aliquet velit lectus, ac tempus dui iaculis ac. Morbi ullamcorper laoreet magna ac commodo. Aenean pharetra nulla sapien, nec interdum dolor semper quis. Ut posuere libero at scelerisque iaculis. Phasellus eu arcu ullamcorper, ultrices turpis id, pretium tellus. Integer accumsan ultrices semper. Maecenas eu scelerisque metus, nec pulvinar odio. Nunc imperdiet efficitur vehicula. Curabitur laoreet ut tellus quis sagittis. Nulla auctor vitae felis quis convallis. Nunc hendrerit imperdiet elit at auctor. Integer condimentum euismod orci vitae venenatis. Proin maximus in sem vitae auctor. Aliquam egestas, lorem vel volutpat pharetra, dolor felis malesuada lorem, vitae fermentum eros erat tempor lacus.

)}
); }; PersistentModal.argTypes = { size: { control: 'select', options: ['md', 'lg', 'fullscreen'] }, ...commonHiddenArgTypes, }; PersistentModal.args = { size: 'md', }; PersistentModal.story = 'Persistent Modal'; export const ModalDemo = () => { const [isOpen, setIsOpen] = useState(false); return ( <> setIsOpen(true)} /> {isOpen && ( setIsOpen(false)} rootId="modal-root">

This is information presented in a modal

{}} label="submit" variant="primary" />, ]} secondaryButtons={[ {}} label="More info" variant="secondary" />, ]} />
)} ); };