From 0c5c9d51c51d07aecb6f4a01586c81c824141cb2 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 2 Aug 2023 00:16:20 +0800 Subject: ... --- .../src/pages/timeline/TimelinePostCreateView.tsx | 273 +++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx (limited to 'FrontEnd/src/pages/timeline/TimelinePostCreateView.tsx') 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 ( +