mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: add assignment activity to new activity modal
This commit is contained in:
parent
47782b57bc
commit
9cf84b959d
4 changed files with 63 additions and 74 deletions
|
|
@ -87,6 +87,7 @@ function NewActivityButton(props: NewActivityButtonProps) {
|
||||||
isDialogOpen={newActivityModal}
|
isDialogOpen={newActivityModal}
|
||||||
onOpenChange={setNewActivityModal}
|
onOpenChange={setNewActivityModal}
|
||||||
minHeight="no-min"
|
minHeight="no-min"
|
||||||
|
minWidth='md'
|
||||||
addDefCloseButton={false}
|
addDefCloseButton={false}
|
||||||
dialogContent={
|
dialogContent={
|
||||||
<NewActivityModal
|
<NewActivityModal
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,13 @@ import React, { useState } from 'react'
|
||||||
import DynamicPageActivityImage from 'public/activities_types/dynamic-page-activity.png'
|
import DynamicPageActivityImage from 'public/activities_types/dynamic-page-activity.png'
|
||||||
import VideoPageActivityImage from 'public//activities_types/video-page-activity.png'
|
import VideoPageActivityImage from 'public//activities_types/video-page-activity.png'
|
||||||
import DocumentPdfPageActivityImage from 'public//activities_types/documentpdf-page-activity.png'
|
import DocumentPdfPageActivityImage from 'public//activities_types/documentpdf-page-activity.png'
|
||||||
import { styled } from '@stitches/react'
|
import AssignmentActivityImage from 'public//activities_types/assignment-page-activity.png'
|
||||||
|
|
||||||
import DynamicCanvaModal from './NewActivityModal/DynamicCanva'
|
import DynamicCanvaModal from './NewActivityModal/DynamicCanva'
|
||||||
import VideoModal from './NewActivityModal/Video'
|
import VideoModal from './NewActivityModal/Video'
|
||||||
import Image from 'next/image'
|
import Image from 'next/image'
|
||||||
import DocumentPdfModal from './NewActivityModal/DocumentPdf'
|
import DocumentPdfModal from './NewActivityModal/DocumentPdf'
|
||||||
|
import Assignment from './NewActivityModal/Assignment'
|
||||||
|
|
||||||
function NewActivityModal({
|
function NewActivityModal({
|
||||||
closeModal,
|
closeModal,
|
||||||
|
|
@ -19,43 +21,58 @@ function NewActivityModal({
|
||||||
const [selectedView, setSelectedView] = useState('home')
|
const [selectedView, setSelectedView] = useState('home')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<>
|
||||||
{selectedView === 'home' && (
|
{selectedView === 'home' && (
|
||||||
<ActivityChooserWrapper>
|
<div className="flex flex-row space-x-2 justify-start mt-2.5 w-full">
|
||||||
<ActivityOption
|
<ActivityOption
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedView('dynamic')
|
setSelectedView('dynamic')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ActivityTypeImage>
|
<div className="h-20 rounded-lg m-0.5 flex flex-col items-center justify-end text-center bg-white hover:cursor-pointer">
|
||||||
<Image alt="Dynamic Page" src={DynamicPageActivityImage}></Image>
|
<Image quality={100} alt="Dynamic Page" src={DynamicPageActivityImage}></Image>
|
||||||
</ActivityTypeImage>
|
</div>
|
||||||
<ActivityTypeTitle>Dynamic Page</ActivityTypeTitle>
|
<div className="flex text-sm h-5 font-medium text-gray-500 items-center justify-center text-center">
|
||||||
|
Dynamic Page
|
||||||
|
</div>
|
||||||
</ActivityOption>
|
</ActivityOption>
|
||||||
<ActivityOption
|
<ActivityOption
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedView('video')
|
setSelectedView('video')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ActivityTypeImage>
|
<div className="h-20 rounded-lg m-0.5 flex flex-col items-center justify-end text-center bg-white hover:cursor-pointer">
|
||||||
<Image alt="Video Page" src={VideoPageActivityImage}></Image>
|
<Image quality={100} alt="Video Page" src={VideoPageActivityImage}></Image>
|
||||||
</ActivityTypeImage>
|
</div>
|
||||||
<ActivityTypeTitle>Video Page</ActivityTypeTitle>
|
<div className="flex text-sm h-5 font-medium text-gray-500 items-center justify-center text-center">
|
||||||
|
Video
|
||||||
|
</div>
|
||||||
</ActivityOption>
|
</ActivityOption>
|
||||||
<ActivityOption
|
<ActivityOption
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSelectedView('documentpdf')
|
setSelectedView('documentpdf')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ActivityTypeImage>
|
<div className="h-20 rounded-lg m-0.5 flex flex-col items-center justify-end text-center bg-white hover:cursor-pointer">
|
||||||
<Image
|
<Image quality={100} alt="Document PDF Page" src={DocumentPdfPageActivityImage}></Image>
|
||||||
alt="Document PDF Page"
|
</div>
|
||||||
src={DocumentPdfPageActivityImage}
|
<div className="flex text-sm h-5 font-medium text-gray-500 items-center justify-center text-center">
|
||||||
></Image>
|
Document
|
||||||
</ActivityTypeImage>
|
</div>
|
||||||
<ActivityTypeTitle>PDF Document Page</ActivityTypeTitle>
|
|
||||||
</ActivityOption>
|
</ActivityOption>
|
||||||
</ActivityChooserWrapper>
|
<ActivityOption
|
||||||
|
onClick={() => {
|
||||||
|
setSelectedView('assignments')
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="h-20 rounded-lg m-0.5 flex flex-col items-center justify-end text-center bg-white hover:cursor-pointer">
|
||||||
|
<Image quality={100} alt="Assignment Page" src={AssignmentActivityImage}></Image>
|
||||||
|
</div>
|
||||||
|
<div className="flex text-sm h-5 font-medium text-gray-500 items-center justify-center text-center">
|
||||||
|
Assignments
|
||||||
|
</div>
|
||||||
|
</ActivityOption>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{selectedView === 'dynamic' && (
|
{selectedView === 'dynamic' && (
|
||||||
|
|
@ -82,63 +99,25 @@ function NewActivityModal({
|
||||||
course={course}
|
course={course}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
|
||||||
|
{selectedView === 'assignments' && (
|
||||||
|
<Assignment
|
||||||
|
submitFileActivity={submitFileActivity}
|
||||||
|
chapterId={chapterId}
|
||||||
|
course={course}
|
||||||
|
/>)
|
||||||
|
}
|
||||||
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const ActivityChooserWrapper = styled('div', {
|
const ActivityOption = ({ onClick, children }: any) => (
|
||||||
display: 'flex',
|
<div
|
||||||
flexDirection: 'row',
|
onClick={onClick}
|
||||||
justifyContent: 'start',
|
className="w-full text-center rounded-xl bg-gray-100 border-4 border-gray-100 mx-auto hover:bg-gray-200 hover:border-gray-200 transition duration-200 ease-in-out cursor-pointer"
|
||||||
marginTop: 10,
|
>
|
||||||
})
|
{children}
|
||||||
|
</div>
|
||||||
const ActivityOption = styled('div', {
|
)
|
||||||
width: '180px',
|
|
||||||
textAlign: 'center',
|
|
||||||
borderRadius: 10,
|
|
||||||
background: '#F6F6F6',
|
|
||||||
border: '4px solid #F5F5F5',
|
|
||||||
margin: 'auto',
|
|
||||||
|
|
||||||
// hover
|
|
||||||
'&:hover': {
|
|
||||||
cursor: 'pointer',
|
|
||||||
background: '#ededed',
|
|
||||||
border: '4px solid #ededed',
|
|
||||||
|
|
||||||
transition: 'background 0.2s ease-in-out, border 0.2s ease-in-out',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
const ActivityTypeImage = styled('div', {
|
|
||||||
height: 80,
|
|
||||||
borderRadius: 8,
|
|
||||||
margin: 2,
|
|
||||||
display: 'flex',
|
|
||||||
flexDirection: 'column',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'end',
|
|
||||||
textAlign: 'center',
|
|
||||||
background: '#ffffff',
|
|
||||||
|
|
||||||
// hover
|
|
||||||
'&:hover': {
|
|
||||||
cursor: 'pointer',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
const ActivityTypeTitle = styled('div', {
|
|
||||||
display: 'flex',
|
|
||||||
fontSize: 12,
|
|
||||||
height: '20px',
|
|
||||||
fontWeight: 500,
|
|
||||||
color: 'rgba(0, 0, 0, 0.38);',
|
|
||||||
|
|
||||||
// center text vertically
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
textAlign: 'center',
|
|
||||||
})
|
|
||||||
|
|
||||||
export default NewActivityModal
|
export default NewActivityModal
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
function Assignment() {
|
||||||
|
return (
|
||||||
|
<div>Assignment</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Assignment
|
||||||
BIN
apps/web/public/activities_types/assignment-page-activity.png
Normal file
BIN
apps/web/public/activities_types/assignment-page-activity.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 941 B |
Loading…
Add table
Add a link
Reference in a new issue