diff --git a/src/shared/modal/Modal.stories.tsx b/src/shared/modal/Modal.stories.tsx index a8610b7bf..2daf2cccd 100644 --- a/src/shared/modal/Modal.stories.tsx +++ b/src/shared/modal/Modal.stories.tsx @@ -1,6 +1,7 @@ -import React, { useState } from 'react'; +import React from 'react'; import { Modal } from './Modal'; import type { Meta, StoryObj } from '@storybook/react'; +import { OpenModalByClickStory } from './OpenModalByClickStory'; const meta: Meta = { title: 'Otus/Common/Modal', @@ -23,33 +24,7 @@ export const Default: StoryObj = { }, }; -const OpenModalByClick = () => { - const [visible, setVisible] = useState(false); - const [modalText, setModalText] = useState('Hello, world!'); - - const openModal = () => { - if (!visible) { - setVisible(true); - setTimeout(() => setVisible(false), 2000); - } - }; - - return ( -
-
- setModalText(event.target.value)} /> - -
- -

{modalText}

-
-
- ); -}; - export const OpenModal: StoryObj = { name: 'Interactive modal example', - render: () => , + render: () => , }; diff --git a/src/shared/modal/Modal.tsx b/src/shared/modal/Modal.tsx index 42dcf1c67..33ffeafc8 100644 --- a/src/shared/modal/Modal.tsx +++ b/src/shared/modal/Modal.tsx @@ -4,14 +4,17 @@ import './modal.css'; interface ModalProps { visible: boolean; children: React.ReactNode; + onClose: () => void; } -export const Modal = ({ visible, children }: ModalProps): React.ReactElement => { +export const Modal = ({ visible, children, onClose }: ModalProps): React.ReactElement => { if (!visible) return null; return (
- × + + × +
{children}
diff --git a/src/shared/modal/OpenModalByClickStory.tsx b/src/shared/modal/OpenModalByClickStory.tsx new file mode 100644 index 000000000..8e68169a5 --- /dev/null +++ b/src/shared/modal/OpenModalByClickStory.tsx @@ -0,0 +1,21 @@ +import React, { useState } from 'react'; +import { Modal } from './Modal'; + +export const OpenModalByClickStory = () => { + const [visible, setVisible] = useState(false); + const [modalText, setModalText] = useState('Hello, world!'); + + return ( +
+
+ setModalText(event.target.value)} /> + +
+ setVisible(false)}> +

{modalText}

+
+
+ ); +}; diff --git a/src/shared/themetogglebutton/ThemeToggleButton.stories.tsx b/src/shared/themetogglebutton/ThemeToggleButton.stories.tsx index 1f7832154..f5d0a1367 100644 --- a/src/shared/themetogglebutton/ThemeToggleButton.stories.tsx +++ b/src/shared/themetogglebutton/ThemeToggleButton.stories.tsx @@ -1,7 +1,8 @@ import { ThemeToggleButton } from './ThemeToggleButton'; import type { Meta, StoryObj } from '@storybook/react'; -import { ThemeProvider, useTheme, Theme } from '../../theming/ThemeProvider'; +import { ThemeProvider } from '../../theming/ThemeProvider'; import React from 'react'; +import { ThemeToggleButtonStory } from './ThemeToggleButtonStory'; const meta: Meta = { title: 'Otus/Common/ThemeToggleButton', @@ -10,25 +11,6 @@ const meta: Meta = { export default meta; -const ThemeToggleButtonStory = () => { - const { theme } = useTheme(); - - return ( -
- -
- ); -}; - export const Default: StoryObj = { render: () => { return ( diff --git a/src/shared/themetogglebutton/ThemeToggleButtonStory.tsx b/src/shared/themetogglebutton/ThemeToggleButtonStory.tsx new file mode 100644 index 000000000..5a2d2955c --- /dev/null +++ b/src/shared/themetogglebutton/ThemeToggleButtonStory.tsx @@ -0,0 +1,22 @@ +import { ThemeToggleButton } from './ThemeToggleButton'; +import { useTheme, Theme } from '../../theming/ThemeProvider'; +import React from 'react'; + +export const ThemeToggleButtonStory = () => { + const { theme } = useTheme(); + + return ( +
+ +
+ ); +};