|
@@ -1,19 +1,22 @@
|
|
import s from './Spoiler.module.css';
|
|
import s from './Spoiler.module.css';
|
|
|
|
+import { useState } from 'react';
|
|
|
|
|
|
interface ISpoilerProps {
|
|
interface ISpoilerProps {
|
|
header?: React.ReactNode;
|
|
header?: React.ReactNode;
|
|
- open?: boolean;
|
|
|
|
children?: React.ReactNode;
|
|
children?: React.ReactNode;
|
|
}
|
|
}
|
|
|
|
|
|
-const Spoiler = ({ header, open, children }: ISpoilerProps) => {
|
|
|
|
- return open ? (
|
|
|
|
|
|
+const Spoiler = ({ header, children }: ISpoilerProps) => {
|
|
|
|
+ const [open, setOpen] = useState(false);
|
|
|
|
+ const handleOpen = () => setOpen(!open);
|
|
|
|
+ return (
|
|
<div className={s.spoilerWrapper}>
|
|
<div className={s.spoilerWrapper}>
|
|
{header && header}
|
|
{header && header}
|
|
- <h2>This is hidden content in Spoiler component</h2>
|
|
|
|
- {children && children}
|
|
|
|
|
|
+ <button onClick={handleOpen}>{open ? 'Click Hide' : 'Click Show'}</button>
|
|
|
|
+ {open && <h2>This is hidden content in Spoiler component</h2>}
|
|
|
|
+ {open && children && children}
|
|
</div>
|
|
</div>
|
|
- ) : null;
|
|
|
|
|
|
+ );
|
|
};
|
|
};
|
|
|
|
|
|
export default Spoiler;
|
|
export default Spoiler;
|