Skip to content

Commit 5639729

Browse files
committed
added basic front-end look
1 parent 0d1c30d commit 5639729

File tree

5 files changed

+80
-31
lines changed

5 files changed

+80
-31
lines changed

src/assets/images/savedIconBig.svg

+3
Loading

src/components/Course/Course.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
</div>
5757
<course-menu
5858
v-if="menuOpen"
59+
:courseObj="courseObj"
5960
:semesterIndex="semesterIndex"
6061
:isCompact="compact"
6162
:courseColor="courseObj.color"
@@ -292,8 +293,7 @@ export default defineComponent({
292293
display: flex;
293294
align-items: center;
294295
}
295-
296-
&-credits {
296+
port &-credits {
297297
white-space: nowrap;
298298
}
299299

src/components/Modals/CourseMenu.vue

+7-14
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,7 @@
1010
/>
1111
<span class="courseMenu-text">Save</span>
1212
</div>
13-
<!-- TODO: access the name of the course-->
14-
<save-course-modal
15-
v-if="saveCourseModalVisible"
16-
:course-name="courseName"
17-
@close-save-course-modal="toggleDisplaySaveCourseModal"
18-
/>
13+
<save-course-modal v-if="saveCourseModalVisible" :course-name="courseName" />
1914
</div>
2015
<div
2116
class="courseMenu-section"
@@ -125,7 +120,12 @@ import { coursesColorSet } from '@/assets/constants/colors';
125120
import SaveCourseModal from '@/components/Modals/SaveCourseModal.vue';
126121
127122
export default defineComponent({
123+
components: {
124+
SaveCourseModal,
125+
},
126+
128127
props: {
128+
courseObj: { type: Object as PropType<FirestoreSemesterCourse>, required: true },
129129
getCreditRange: {
130130
type: (Array as PropType<readonly number[]>) as PropType<readonly [number, number]>,
131131
required: true,
@@ -149,7 +149,7 @@ export default defineComponent({
149149
zIndexColors: 1,
150150
zIndexEditCredits: 1,
151151
saveCourseModalVisible: false,
152-
courseName: 'todo',
152+
courseName: this.courseObj.code,
153153
};
154154
},
155155
computed: {
@@ -176,7 +176,6 @@ export default defineComponent({
176176
'delete-course': () => true,
177177
'open-edit-color-modal': (color: string) => typeof color === 'string',
178178
'edit-course-credit': (credit: number) => typeof credit === 'number',
179-
'open-save-course-modal': (courseName: string) => typeof courseName === 'string',
180179
},
181180
methods: {
182181
toggleDisplaySaveCourseModal() {
@@ -252,12 +251,6 @@ export default defineComponent({
252251
}
253252
return creditArray;
254253
},
255-
openSaveCourseModal() {
256-
this.$emit('open-save-course-modal', 'todo');
257-
},
258-
},
259-
components: {
260-
SaveCourseModal,
261254
},
262255
});
263256
</script>

src/components/Modals/SaveCourseModal.vue

+64-13
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
<template>
22
<teleport-modal
3-
:title="`${courseName} Saved`"
43
content-class="content-plan"
54
right-button-text="Save"
65
@model-closed="closeCurrentModal"
76
@right-button-clicked="saveCourse"
7+
:has-custom-position="true"
88
>
9-
<div>
10-
<hr />
11-
<span> Collection </span>
12-
<div @click="addNewCollection">
13-
<img src="src\assets\images\plus.svg" alt="add new collection" />
9+
<template #title>
10+
<div class="saveCourseModal-title">
11+
<img src="src\assets\images\savedIconBig.svg" alt="big saved icon" />
12+
<h1>{{ courseName }} Saved</h1>
1413
</div>
15-
<hr />
14+
</template>
15+
<div class="saveCourseModal-header">
16+
<div class="saveCourseModal-header-line"><hr /></div>
17+
<div class="saveCourseModal-header-content">
18+
<span>Collections</span>
19+
<button class="saveCourseModal-header-addButton" @click="addNewCollection">
20+
<img src="src\assets\images\plus.svg" alt="add new collection" />
21+
</button>
22+
</div>
23+
<div class="saveCoursesModal-header-line" v-if="isdefaultCollection"><hr /></div>
1624
</div>
25+
1726
<div class="saveCourseModal-body">
1827
<!--TODO: add default view and another view when they are collections to be populated-->
19-
<div>
28+
<div class="saveCourseModal-body-content">
2029
<p>{{ collection }}</p>
2130
<!--Must find all possible collections
2231
Checkbox Style
@@ -32,11 +41,12 @@ import TeleportModal from '@/components/Modals/TeleportModal.vue';
3241
// import store from '@/store';
3342
3443
export default defineComponent({
44+
components: { TeleportModal },
3545
props: {
3646
courseName: { type: String, required: true },
3747
collection: { type: String, default: 'No collections added yet' },
48+
isdefaultCollection: { type: Boolean, default: true },
3849
},
39-
components: { TeleportModal },
4050
emits: {
4151
'close-save-course-modal': () => true,
4252
'save-course': (name: string) => typeof name === 'string',
@@ -55,16 +65,13 @@ export default defineComponent({
5565
this.$emit('open-add-collection-modal');
5666
},
5767
},
58-
data() {
59-
return { isDisabled: false };
60-
},
6168
});
6269
</script>
6370

6471
<style lang="scss">
6572
@import '@/assets/scss/_variables.scss';
6673
.content-plan {
67-
width: 20rem;
74+
width: 40rem;
6875
}
6976
7077
.modal {
@@ -75,4 +82,48 @@ export default defineComponent({
7582
display: flex;
7683
}
7784
}
85+
86+
.saveCourseModal {
87+
&-title {
88+
display: flex;
89+
justify-content: space-between;
90+
padding-top: 1rem;
91+
gap: 0.5rem;
92+
img {
93+
align-self: flex-start;
94+
}
95+
}
96+
&-header {
97+
display: flex;
98+
flex-direction: column;
99+
hr {
100+
margin-left: -6%;
101+
width: 112%;
102+
}
103+
&-content {
104+
display: flex;
105+
flex-direction: row;
106+
justify-content: space-between;
107+
color: $primaryGray;
108+
span {
109+
font-size: 13px;
110+
font-style: normal;
111+
font-weight: 900;
112+
}
113+
&-addButton {
114+
cursor: pointer;
115+
&:hover {
116+
opacity: 0.5;
117+
}
118+
}
119+
}
120+
}
121+
&-body {
122+
display: flex;
123+
flex-direction: column;
124+
justify-content: center;
125+
align-items: center;
126+
color: $darkPlaceholderGray;
127+
}
128+
}
78129
</style>

src/components/Modals/TeleportModal.vue

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
:style="customPosition"
1717
>
1818
<div v-if="!isSimpleModal" class="modal-top">
19-
<h1>{{ title }}</h1>
19+
<slot name="title">
20+
<h1>{{ title }}</h1>
21+
</slot>
2022
<button @click="close" data-cyId="modal-exit">
2123
<img class="modal-exit" src="@/assets/images/x.png" alt="x to close modal" />
2224
</button>
@@ -61,7 +63,7 @@ import store from '@/store';
6163
6264
export default defineComponent({
6365
props: {
64-
title: { type: String, default: '' },
66+
title: { type: String, required: true },
6567
contentClass: { type: String, required: true },
6668
leftButtonText: { type: String, default: '' },
6769
rightButtonText: { type: String, default: '' },

0 commit comments

Comments
 (0)