diff --git a/package-lock.json b/package-lock.json
index 29824a7a..b753c433 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,8 @@
"node-sass": "^6.0.0",
"polka": "next",
"sapper-environment": "^1.0.1",
- "sirv": "^1.0.0"
+ "sirv": "^1.0.0",
+ "svelte-easy-crop": "^1.0.4"
},
"devDependencies": {
"@babel/core": "^7.0.0",
@@ -5754,6 +5755,14 @@
"integrity": "sha512-DuSfie7xukV3AXlA9vFnIkit97LYNSDpKFmUBgL0RansnBrFvJoFpnsnuUW2ULfsYR1NpqZGmHAsgKQUeBf6Lg==",
"dev": true
},
+ "node_modules/svelte-easy-crop": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/svelte-easy-crop/-/svelte-easy-crop-1.0.4.tgz",
+ "integrity": "sha512-YWbayjPenBYx1b8Usbh70jXXSy/e2ggY7fYBnemefyXhnrccS6Ke4h2uBB07uGDZdwxQNZvS5ruoXwxxZQVo0g==",
+ "engines": {
+ "node": "14"
+ }
+ },
"node_modules/svelte-loading-spinners": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/svelte-loading-spinners/-/svelte-loading-spinners-0.1.7.tgz",
@@ -10987,6 +10996,11 @@
"integrity": "sha512-DuSfie7xukV3AXlA9vFnIkit97LYNSDpKFmUBgL0RansnBrFvJoFpnsnuUW2ULfsYR1NpqZGmHAsgKQUeBf6Lg==",
"dev": true
},
+ "svelte-easy-crop": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/svelte-easy-crop/-/svelte-easy-crop-1.0.4.tgz",
+ "integrity": "sha512-YWbayjPenBYx1b8Usbh70jXXSy/e2ggY7fYBnemefyXhnrccS6Ke4h2uBB07uGDZdwxQNZvS5ruoXwxxZQVo0g=="
+ },
"svelte-loading-spinners": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/svelte-loading-spinners/-/svelte-loading-spinners-0.1.7.tgz",
diff --git a/package.json b/package.json
index 99562b8a..050b0889 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,8 @@
"node-sass": "^6.0.0",
"polka": "next",
"sapper-environment": "^1.0.1",
- "sirv": "^1.0.0"
+ "sirv": "^1.0.0",
+ "svelte-easy-crop": "^1.0.4"
},
"devDependencies": {
"@babel/core": "^7.0.0",
@@ -59,4 +60,4 @@
"tslib": "^2.3.1",
"typescript": "^4.1.3"
}
-}
\ No newline at end of file
+}
diff --git a/src/components/Course/components/Lesson/Exercises/index.svelte b/src/components/Course/components/Lesson/Exercises/index.svelte
index c765696c..6105f7d0 100644
--- a/src/components/Course/components/Lesson/Exercises/index.svelte
+++ b/src/components/Course/components/Lesson/Exercises/index.svelte
@@ -1,5 +1,7 @@
+
+ ($deleteMemberModal.open = false)}
+ bind:open={$deleteMemberModal.open}
+ width="w-96"
+ modalHeading="Delete"
+>
+
+
+ Are you sure you want to delete {email}?
+
+
+
+
($deleteMemberModal.open = false)}
+ />
+
+
+
+
diff --git a/src/components/Course/components/People/InviationModal.svelte b/src/components/Course/components/People/InviationModal.svelte
index aca32549..11f8a403 100644
--- a/src/components/Course/components/People/InviationModal.svelte
+++ b/src/components/Course/components/People/InviationModal.svelte
@@ -45,7 +45,6 @@
}
addGroupMember(membersStack).then(async (membersAdded) => {
- console.log(`membersAdded`, membersAdded);
const group = await fetchGroup($course.group.id);
setCourseData(
diff --git a/src/components/Course/components/People/store.js b/src/components/Course/components/People/store.js
index 679df0ad..e12577ad 100644
--- a/src/components/Course/components/People/store.js
+++ b/src/components/Course/components/People/store.js
@@ -1,5 +1,9 @@
import { writable } from 'svelte/store';
+export const deleteMemberModal = writable({
+ open: false,
+});
+
export const invitationModal = writable({
open: false,
tutors: '',
diff --git a/src/components/Course/store.js b/src/components/Course/store.js
index 577063a1..c49a6ef9 100644
--- a/src/components/Course/store.js
+++ b/src/components/Course/store.js
@@ -24,6 +24,7 @@ export const group = writable({
id: null,
tutors: [],
students: [],
+ people: [],
});
export async function setCourseData(data, setLesson = true) {
diff --git a/src/components/Courses/components/Card/index.svelte b/src/components/Courses/components/Card/index.svelte
new file mode 100644
index 00000000..98db67ac
--- /dev/null
+++ b/src/components/Courses/components/Card/index.svelte
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+
+
diff --git a/src/components/Courses/index.svelte b/src/components/Courses/index.svelte
index 18b55f06..9962c941 100644
--- a/src/components/Courses/index.svelte
+++ b/src/components/Courses/index.svelte
@@ -1,55 +1,20 @@
-
+
{#each $courses as courseData}
-
-
-
{courseData.description}
-
-
+
+ {:else}
+
+ No Course Assigned
+
{/each}
-
-
diff --git a/src/routes/courses.svelte b/src/routes/courses.svelte
index 6cee4ec6..77735c11 100644
--- a/src/routes/courses.svelte
+++ b/src/routes/courses.svelte
@@ -134,15 +134,15 @@
Courses
-
-
+
+
($createCourseModal.open = false)}
@@ -198,13 +198,13 @@
-
+
diff --git a/src/routes/courses/[id]/people.svelte b/src/routes/courses/[id]/people.svelte
index 09b02598..a57504fd 100644
--- a/src/routes/courses/[id]/people.svelte
+++ b/src/routes/courses/[id]/people.svelte
@@ -1,5 +1,8 @@
+
@@ -57,14 +87,15 @@
>
No
- Name
- Email
- Role
+ Name
+ Email
+ Role
+
{#each people as person, index}
{index + 1}
@@ -90,6 +121,19 @@
{/if}
{ROLE_LABEL[person.role_id]}
+
+
+ {#if person.profile && person.profile.id !== $profile.id}
+ {
+ member = person;
+ $deleteMemberModal.open = true;
+ }}
+ >
+
+
+ {/if}
+
{/each}
diff --git a/src/utils/services/courses/index.js b/src/utils/services/courses/index.js
index fa4d2167..aa9da8a1 100644
--- a/src/utils/services/courses/index.js
+++ b/src/utils/services/courses/index.js
@@ -122,6 +122,10 @@ export function addGroupMember(member) {
});
}
+export function deleteGroupMember(groupMemberId) {
+ return supabase.from('groupmember').delete().match({ id: groupMemberId });
+}
+
export function fetchLesson(lessonId) {
return supabase
.from('lesson')