From 142111c49b7c4b47a737a18b03fe8df4137aef2f Mon Sep 17 00:00:00 2001 From: Victor Date: Sat, 30 Dec 2023 00:37:22 -0500 Subject: [PATCH] edit weight page cover image input functional and presentable --- .../src/api/weights/UpdateWeight.ts | 1 + .../components/common/Checkbox/Checkbox.tsx | 2 +- .../common/FileDetails/FileDetails.tsx | 13 +- .../common/ImageInput/ImageInput.scss | 5 + .../common/ImageInput/ImageInput.tsx | 19 +- .../common/TempTextArea/TempTextArea.tsx | 16 ++ .../components/common/TempTextArea/index.tsx | 1 + .../src/components/common/index.tsx | 12 +- .../InferenceJobsList/InferenceJobsList.scss | 85 +++------ .../layout/InferenceJobsList/JobItem.tsx | 56 ++---- .../src/components/svg/AniX/AniX.tsx | 26 +++ .../src/components/svg/AniX/index.ts | 1 + .../{common => svg}/Check/Check.tsx | 0 .../components/{common => svg}/Check/index.ts | 0 .../svg/DashedCircle/DashedCircle.tsx | 23 +++ .../src/components/svg/DashedCircle/index.ts | 1 + .../svg/WorkIndicator/WorkIndicator.scss | 28 +++ .../svg/WorkIndicator/WorkIndicator.tsx | 19 ++ .../src/components/svg/WorkIndicator/index.ts | 1 + .../fakeyou.com/src/components/svg/index.ts | 11 ++ .../src/components/svg/sharedSVGProps.ts | 1 + .../hooks/useWeightFetch/useWeightFetch.tsx | 28 ++- .../fakeyou.com/src/scss/breakpoints.scss | 2 + .../pages/face_animator/FaceAnimator.scss | 4 +- .../v2/view/pages/weight/WeightEditPage.scss | 88 +++++++++ .../v2/view/pages/weight/WeightEditPage.tsx | 169 ++++++++++-------- 26 files changed, 411 insertions(+), 201 deletions(-) create mode 100644 packages/fakeyou.com/src/components/common/TempTextArea/TempTextArea.tsx create mode 100644 packages/fakeyou.com/src/components/common/TempTextArea/index.tsx create mode 100644 packages/fakeyou.com/src/components/svg/AniX/AniX.tsx create mode 100644 packages/fakeyou.com/src/components/svg/AniX/index.ts rename packages/fakeyou.com/src/components/{common => svg}/Check/Check.tsx (100%) rename packages/fakeyou.com/src/components/{common => svg}/Check/index.ts (100%) create mode 100644 packages/fakeyou.com/src/components/svg/DashedCircle/DashedCircle.tsx create mode 100644 packages/fakeyou.com/src/components/svg/DashedCircle/index.ts create mode 100644 packages/fakeyou.com/src/components/svg/WorkIndicator/WorkIndicator.scss create mode 100644 packages/fakeyou.com/src/components/svg/WorkIndicator/WorkIndicator.tsx create mode 100644 packages/fakeyou.com/src/components/svg/WorkIndicator/index.ts create mode 100644 packages/fakeyou.com/src/components/svg/index.ts create mode 100644 packages/fakeyou.com/src/components/svg/sharedSVGProps.ts create mode 100644 packages/fakeyou.com/src/scss/breakpoints.scss create mode 100644 packages/fakeyou.com/src/v2/view/pages/weight/WeightEditPage.scss diff --git a/packages/components/src/api/weights/UpdateWeight.ts b/packages/components/src/api/weights/UpdateWeight.ts index bbf91f2841..d73e3c3721 100644 --- a/packages/components/src/api/weights/UpdateWeight.ts +++ b/packages/components/src/api/weights/UpdateWeight.ts @@ -1,6 +1,7 @@ import MakeRequest from "../MakeRequest"; export interface UpdateWeightRequest { + cover_image_media_file_token: string; description_markdown: string, description_rendered_html: string, title: string, diff --git a/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx b/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx index 8f3d0b2176..489c2b8ea8 100644 --- a/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx +++ b/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { a, useSpring } from "@react-spring/web"; -import { Check } from "components/common"; +import { Check } from "components/svg"; import { useHover, useId } from "hooks"; import makeClass from "resources/makeClass"; import "./Checkbox.scss"; diff --git a/packages/fakeyou.com/src/components/common/FileDetails/FileDetails.tsx b/packages/fakeyou.com/src/components/common/FileDetails/FileDetails.tsx index e809eaad34..c34069d5d5 100644 --- a/packages/fakeyou.com/src/components/common/FileDetails/FileDetails.tsx +++ b/packages/fakeyou.com/src/components/common/FileDetails/FileDetails.tsx @@ -1,16 +1,18 @@ import React from 'react'; +import { a, useSpring } from '@react-spring/web'; import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome"; import { faTrash } from "@fortawesome/pro-solid-svg-icons"; import "./FileDetails.scss"; interface Props { clear?: (file?: any) => void; + disabled?: boolean; file?: any; hideClearDetails?: boolean; icon?: any; } -export default function FileDetails({ clear = () => {}, file, hideClearDetails, icon }: Props) { +export default function FileDetails({ clear = () => {}, disabled, file, hideClearDetails, icon }: Props) { const fileSize = file && file.size >= 1024 * 1024 ? (file.size / 1024 / 1024).toFixed(2) + " MB" @@ -18,7 +20,12 @@ export default function FileDetails({ clear = () => {}, file, hideClearDetails, ? `${Math.floor(file.size / 1024)} KB` : null; - return
+ const style = useSpring({ + config: { mass: 1, tension: 120, friction: 14 }, + opacity: disabled ? 0 : 1 + }); + + return { icon && }
@@ -32,5 +39,5 @@ export default function FileDetails({ clear = () => {}, file, hideClearDetails, { !hideClearDetails && } -
; + ; }; diff --git a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss index c6a2169d5d..2927e32f40 100644 --- a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss +++ b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss @@ -42,6 +42,11 @@ border-radius: 0; } + .placeholder-icon { + height: 10rem; + opacity: .15; + } + .image-placeholder { // background-color: red; fill: $secondary; diff --git a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.tsx b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.tsx index 162ef96370..85051f2e54 100644 --- a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.tsx +++ b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.tsx @@ -2,18 +2,23 @@ import React, { useState } from "react"; import { a, useSpring } from '@react-spring/web'; import { FileDetails, FileWrapper, FileLabel } from "components/common"; import { faImagePortrait } from "@fortawesome/pro-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; import "./ImageInput.scss"; const fileTypes = ["JPG", "GIF", "PNG"]; interface Props { blob?: string; + children?: any; clear?: (file?: any) => void; + disabled: boolean; file?: any; hideActions?: boolean; hideClearDetails?: boolean; inputProps?: any; onRest?: () => void; + placeholderIcon?: IconDefinition; success?: boolean; submit?: () => void; working?: boolean; @@ -22,7 +27,7 @@ interface Props { const n = () => {}; -export default function ImageInput({ blob = "", clear = n, file, hideActions, hideClearDetails, inputProps, onRest = n, success = false, submit = n, working = false, ...rest }: Props) { +export default function ImageInput({ blob = "", children, clear = n, disabled, file, hideActions, hideClearDetails, inputProps, onRest = n, placeholderIcon, success = false, submit = n, working = false, ...rest }: Props) { const [loaded,loadedSet] = useState(); const onLoad = () => loadedSet(1); const style = useSpring({ @@ -31,15 +36,17 @@ export default function ImageInput({ blob = "", clear = n, file, hideActions, hi opacity: loaded ? 1 : 0 }); - return + return
{ file ? <> - + + { children } : <> - - - + { placeholderIcon ? : + + + }
{ !file && }
diff --git a/packages/fakeyou.com/src/components/common/TempTextArea/TempTextArea.tsx b/packages/fakeyou.com/src/components/common/TempTextArea/TempTextArea.tsx new file mode 100644 index 0000000000..34dac2cac4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/TempTextArea/TempTextArea.tsx @@ -0,0 +1,16 @@ +import React from "react"; + +interface TextAreaProps + extends React.TextareaHTMLAttributes { + label?: string; + textArea?: boolean; +} + +export default function TempTextArea({ label, textArea, ...rest }: TextAreaProps) { + return <> + { label && } +
+