chore: refactor components

This commit is contained in:
swve 2023-04-08 15:54:02 +02:00
parent ca5110e4f7
commit d6289edb29
21 changed files with 13 additions and 165 deletions

View file

@ -0,0 +1,47 @@
import Link from "next/link";
import React from "react";
import { Draggable } from "react-beautiful-dnd";
import { EyeOpenIcon, Pencil2Icon } from '@radix-ui/react-icons'
import styled from "styled-components";
import { getUriWithOrg } from "@services/config/config";
function Activity(props: any) {
return (
<Draggable key={props.activity.id} draggableId={props.activity.id} index={props.index}>
{(provided) => (
<ActivityWrapper key={props.activity.id} {...provided.draggableProps} {...provided.dragHandleProps} ref={provided.innerRef}>
<p>{props.activity.name} </p>
<Link
href={getUriWithOrg(props.orgslug,"")+`/course/${props.courseid}/activity/${props.activity.id.replace("activity_", "")}`}
rel="noopener noreferrer">
&nbsp; <EyeOpenIcon/>
</Link>
<Link
href={getUriWithOrg(props.orgslug,"") +`/course/${props.courseid}/activity/${props.activity.id.replace("activity_", "")}/edit`}
rel="noopener noreferrer">
&nbsp; <Pencil2Icon/>
</Link>
</ActivityWrapper>
)}
</Draggable>
);
}
export const ActivityWrapper = styled.div`
padding: 2px;
padding-left: 17px;
list-style: none;
/* padding-left: 2px; */
background-color: #f4f4f4c5;
border-radius: 7px;
margin: 15px;
display: flex;
align-items: center;
&:hover {
background-color: #8c949c7b;
}
`;
export default Activity;

View file

@ -0,0 +1,76 @@
import React from "react";
import styled from "styled-components";
import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";
import Activity, { ActivityWrapper } from "./Activity";
function Chapter(props: any) {
return (
<Draggable key={props.info.list.chapter.id} draggableId={props.info.list.chapter.id} index={props.index}>
{(provided, snapshot) => (
<ChapterWrapper
{...provided.dragHandleProps}
{...provided.draggableProps}
ref={provided.innerRef}
// isDragging={snapshot.isDragging}
key={props.info.list.chapter.id}
>
<h3>
{props.info.list.chapter.name}{" "}
<button
onClick={() => {
props.openNewActivityModal(props.info.list.chapter.id);
}}
>
Create Activity
</button>
<button
onClick={() => {
props.deleteChapter(props.info.list.chapter.id);
}}
>
X
</button>
</h3>
<Droppable key={props.info.list.chapter.id} droppableId={props.info.list.chapter.id} type="activity">
{(provided) => (
<ActivitiesList {...provided.droppableProps} ref={provided.innerRef}>
{props.info.list.activities.map((activity: any, index: any) => (
<Activity orgslug={props.orgslug} courseid={props.courseid} key={activity.id} activity={activity} index={index}></Activity>
))}
{provided.placeholder}
</ActivitiesList>
)}
</Droppable>
</ChapterWrapper>
)}
</Draggable>
);
}
const ChapterWrapper = styled.div`
margin-bottom: 20px;
padding: 4px;
background-color: #ffffffc5;
width: 900px;
font-size: 15px;
display: block;
border-radius: 9px;
border: 1px solid rgba(255, 255, 255, 0.19);
box-shadow: 0px 13px 33px -13px rgb(0 0 0 / 12%);
transition: all 0.2s ease;
h3{
padding-left: 20px;
padding-right: 20px;
}
`;
const ActivitiesList = styled.div`
padding: 10px;
`;
export default Chapter;

View file

@ -0,0 +1,20 @@
export const initialData = {
activities: {
"activity-1": { id: "activity-1", content: "First activity" },
"activity-2": { id: "activity-2", content: "Second activity" },
"activity-3": { id: "activity-3", content: "Third activity" },
"activity-4": { id: "activity-4", content: "Fourth activity" },
"activity-5": { id: "activity-5", content: "Fifth activity" },
},
chapters: {
"chapter-1": { id: "chapter-1", name: "Chapter 1", activityIds: ["activity-1", "activity-2", "activity-3"] },
"chapter-2": { id: "chapter-2", name: "Chapter 2", activityIds: ["activity-4"] },
"chapter-3": { id: "chapter-3", name: "Chapter 3", activityIds: ["activity-5"] },
},
chapterOrder: ["chapter-1", "chapter-2", "chapter-3"],
};
export const initialData2 = {
};