aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/views/center/TimelineBoard.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-07-01 20:38:28 +0800
committerGitHub <noreply@github.com>2021-07-01 20:38:28 +0800
commiteb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c (patch)
tree5afe2d654a51c8712aa30a419f6edfa19fe1a234 /FrontEnd/src/views/center/TimelineBoard.tsx
parent825aac426d87180e62530321320fbb012efbd897 (diff)
parentb456334cedad566bf2c4c66481ec928dc59eda7d (diff)
downloadtimeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.tar.gz
timeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.tar.bz2
timeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.zip
Merge pull request #649 from crupest/drop-bootstrap
Drop bootstrap!!!
Diffstat (limited to 'FrontEnd/src/views/center/TimelineBoard.tsx')
-rw-r--r--FrontEnd/src/views/center/TimelineBoard.tsx36
1 files changed, 20 insertions, 16 deletions
diff --git a/FrontEnd/src/views/center/TimelineBoard.tsx b/FrontEnd/src/views/center/TimelineBoard.tsx
index d6f6228d..8c1f5fac 100644
--- a/FrontEnd/src/views/center/TimelineBoard.tsx
+++ b/FrontEnd/src/views/center/TimelineBoard.tsx
@@ -1,7 +1,6 @@
import React from "react";
import classnames from "classnames";
import { Link } from "react-router-dom";
-import { Spinner } from "react-bootstrap";
import { HttpTimelineInfo } from "@/http/timeline";
@@ -10,6 +9,7 @@ import UserTimelineLogo from "../common/UserTimelineLogo";
import LoadFailReload from "../common/LoadFailReload";
import FlatButton from "../common/button/FlatButton";
import Card from "../common/Card";
+import Spinner from "../common/Spinner";
interface TimelineBoardItemProps {
timeline: HttpTimelineInfo;
@@ -48,16 +48,16 @@ const TimelineBoardItem: React.FC<TimelineBoardItemProps> = ({
<TimelineLogo className="icon" />
)}
<span className="title">{title}</span>
- <small className="ms-2 text-secondary">{name}</small>
+ <small className="ms-2 cru-color-secondary">{name}</small>
<span className="flex-grow-1"></span>
{actions != null ? (
<div className="right">
<i
- className="bi-trash icon-button text-danger px-2"
+ className="bi-trash icon-button cru-color-danger px-2"
onClick={actions.onDelete}
/>
<i
- className="bi-grip-vertical icon-button text-gray px-2 touch-action-none"
+ className="bi-grip-vertical icon-button px-2 touch-action-none"
onPointerDown={(e) => {
e.currentTarget.setPointerCapture(e.pointerId);
actions.onMove.start(e);
@@ -208,7 +208,8 @@ const TimelineBoardItemContainer: React.FC<TimelineBoardItemContainerProps> = ({
interface TimelineBoardUIProps {
title?: string;
- timelines: HttpTimelineInfo[] | "offline" | "loading";
+ state: "offline" | "loading" | "loaded";
+ timelines: HttpTimelineInfo[];
onReload: () => void;
className?: string;
editHandler?: {
@@ -218,7 +219,7 @@ interface TimelineBoardUIProps {
}
const TimelineBoardUI: React.FC<TimelineBoardUIProps> = (props) => {
- const { title, timelines, className, editHandler } = props;
+ const { title, state, timelines, className, editHandler } = props;
const editable = editHandler != null;
@@ -246,13 +247,13 @@ const TimelineBoardUI: React.FC<TimelineBoardUIProps> = (props) => {
))}
</div>
{(() => {
- if (timelines === "loading") {
+ if (state === "loading") {
return (
<div className="d-flex flex-grow-1 justify-content-center align-items-center">
- <Spinner variant="primary" animation="border" />
+ <Spinner />
</div>
);
- } else if (timelines === "offline") {
+ } else if (state === "offline") {
return (
<div className="d-flex flex-grow-1 justify-content-center align-items-center">
<LoadFailReload onReload={props.onReload} />
@@ -301,36 +302,39 @@ const TimelineBoard: React.FC<TimelineBoardProps> = ({
load,
editHandler,
}) => {
- const [timelines, setTimelines] = React.useState<
- HttpTimelineInfo[] | "offline" | "loading"
- >("loading");
+ const [state, setState] = React.useState<"offline" | "loading" | "loaded">(
+ "loading"
+ );
+ const [timelines, setTimelines] = React.useState<HttpTimelineInfo[]>([]);
React.useEffect(() => {
let subscribe = true;
- if (timelines === "loading") {
+ if (state === "loading") {
void load().then(
(timelines) => {
if (subscribe) {
+ setState("loaded");
setTimelines(timelines);
}
},
() => {
- setTimelines("offline");
+ setState("offline");
}
);
}
return () => {
subscribe = false;
};
- }, [load, timelines]);
+ }, [load, state]);
return (
<TimelineBoardUI
title={title}
className={className}
+ state={state}
timelines={timelines}
onReload={() => {
- setTimelines("loading");
+ setState("loaded");
}}
editHandler={
typeof timelines === "object" && editHandler != null