From 7c1bb5e452c2e52554aa8f97b07bc1763e8da9ee Mon Sep 17 00:00:00 2001 From: BFlat Date: Sat, 13 Jul 2024 00:18:35 +0700 Subject: [PATCH] default cinematic, hide options/negative prompt under dropdown (#613) --- packages/fakeyou.com/package.json | 1 + .../DropdownOptions/DropdownOptions.tsx | 53 +++++ .../common/DropdownOptions/index.ts | 1 + .../src/components/common/index.tsx | 2 + .../v2/view/pages/style-video/StyleVideo.tsx | 186 ++++++++++-------- yarn.lock | 20 ++ 6 files changed, 185 insertions(+), 78 deletions(-) create mode 100644 packages/fakeyou.com/src/components/common/DropdownOptions/DropdownOptions.tsx create mode 100644 packages/fakeyou.com/src/components/common/DropdownOptions/index.ts diff --git a/packages/fakeyou.com/package.json b/packages/fakeyou.com/package.json index 9fcef14b16..b1d98a7299 100644 --- a/packages/fakeyou.com/package.json +++ b/packages/fakeyou.com/package.json @@ -79,6 +79,7 @@ "react-share": "^4.4.1", "react-twitch-embed": "^3.0.1", "react-typeform-embed": "^1.0.8", + "react-use-measure": "^2.1.1", "react-wavesurfer.js": "^0.0.8", "sass": "^1.57.1", "swiper": "^11.0.5", diff --git a/packages/fakeyou.com/src/components/common/DropdownOptions/DropdownOptions.tsx b/packages/fakeyou.com/src/components/common/DropdownOptions/DropdownOptions.tsx new file mode 100644 index 0000000000..d7af167741 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/DropdownOptions/DropdownOptions.tsx @@ -0,0 +1,53 @@ +import React, { useState, useRef } from "react"; +import { useSpring, animated, easings } from "@react-spring/web"; +import useMeasure from "react-use-measure"; +import Button from "../Button"; +import { faChevronDown, faChevronUp } from "@fortawesome/pro-solid-svg-icons"; + +interface DropdownOptionsProps { + title?: string; + closeTitle?: string; + children: React.ReactNode; +} + +export const DropdownOptions: React.FC = ({ + title = "Show Advanced Options", + closeTitle = "Hide Advanced Options", + children, +}) => { + const [isOpen, setIsOpen] = useState(false); + const [ref, { height: viewHeight }] = useMeasure(); + const previousHeightRef = useRef(0); + + const toggleDropdown = () => setIsOpen(!isOpen); + + const animationProps = useSpring({ + height: isOpen ? viewHeight : 0, + opacity: isOpen ? 1 : 0, + config: { duration: 200, easing: easings.easeInOutQuad }, + onRest: () => { + if (isOpen) { + previousHeightRef.current = viewHeight; + } + }, + }); + + return ( + <> + +
+ {children} +
+
+