From 0c5c9d51c51d07aecb6f4a01586c81c824141cb2 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 2 Aug 2023 00:16:20 +0800 Subject: ... --- FrontEnd/src/pages/timeline/Timeline.tsx | 2 +- .../src/pages/timeline/TimelinePostCreateView.css | 31 +++ .../src/pages/timeline/TimelinePostCreateView.tsx | 273 +++++++++++++++++++++ FrontEnd/src/pages/timeline/TimelinePostEdit.css | 10 - FrontEnd/src/pages/timeline/TimelinePostEdit.tsx | 264 -------------------- FrontEnd/src/pages/timeline/TimelinePostView.css | 6 +- FrontEnd/src/views/common/button/LoadingButton.css | 6 +- 7 files changed, 313 insertions(+), 279 deletions(-) create mode 100644 FrontEnd/src/pages/timeline/TimelinePostCreateView.css create mode 100644 FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx delete mode 100644 FrontEnd/src/pages/timeline/TimelinePostEdit.css delete mode 100644 FrontEnd/src/pages/timeline/TimelinePostEdit.tsx diff --git a/FrontEnd/src/pages/timeline/Timeline.tsx b/FrontEnd/src/pages/timeline/Timeline.tsx index 317d602e..d05336d7 100644 --- a/FrontEnd/src/pages/timeline/Timeline.tsx +++ b/FrontEnd/src/pages/timeline/Timeline.tsx @@ -17,7 +17,7 @@ import { import { getTimelinePostUpdate$ } from "@/services/timeline"; import TimelinePostList from "./TimelinePostList"; -import TimelinePostEdit from "./TimelinePostEdit"; +import TimelinePostEdit from "./TimelinePostCreateView"; import TimelineCard from "./TimelineCard"; import "./Timeline.css"; diff --git a/FrontEnd/src/pages/timeline/TimelinePostCreateView.css b/FrontEnd/src/pages/timeline/TimelinePostCreateView.css new file mode 100644 index 00000000..d33d4bb7 --- /dev/null +++ b/FrontEnd/src/pages/timeline/TimelinePostCreateView.css @@ -0,0 +1,31 @@ +.timeline-post-create-card { + position: sticky !important; + top: 106px; + z-index: 100; + margin-right: 200px; +} + +.timeline-post-create { + display: flex; +} + +.timeline-post-create-edit-area { + flex-grow: 1; +} + +.timeline-post-create-edit-text { + width: 100%; + height: 100%; +} + +.timeline-post-create-image { + max-width: 100px; + max-height: 100px; +} + +.timeline-post-create-right-area { + display: flex; + flex-direction: column; + align-items: center; + margin-left: 1em; +} \ No newline at end of file diff --git a/FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx b/FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx new file mode 100644 index 00000000..52b6c3d3 --- /dev/null +++ b/FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx @@ -0,0 +1,273 @@ +import { useState, useEffect, ChangeEventHandler } from "react"; +import { useTranslation } from "react-i18next"; + +import { UiLogicError } from "@/common"; + +import { + getHttpTimelineClient, + HttpTimelineInfo, + HttpTimelinePostInfo, + HttpTimelinePostPostRequestData, +} from "@/http/timeline"; + +import { pushAlert } from "@/services/alert"; + +import base64 from "@/utilities/base64"; + +import BlobImage from "@/views/common/BlobImage"; +import LoadingButton from "@/views/common/button/LoadingButton"; +import PopupMenu from "@/views/common/menu/PopupMenu"; +import MarkdownPostEdit from "./MarkdownPostEdit"; +import TimelinePostCard from "./TimelinePostCard"; +import TimelinePostContainer from "./TimelinePostContainer"; +import IconButton from "@/views/common/button/IconButton"; + +import "./TimelinePostCreateView.css"; +import classNames from "classnames"; + +interface TimelinePostEditTextProps { + text: string; + disabled: boolean; + onChange: (text: string) => void; + className?: string; +} + +function TimelinePostEditText(props: TimelinePostEditTextProps) { + const { text, disabled, onChange, className } = props; + + return ( +