@@ -1,5 +1,13 @@ | |||
<section class="question"> | |||
<h3> {{ text }} </h3> | |||
<div class="options"> | |||
<button *ngFor="let choice of choices" | |||
(click)="selectedChoice = choice.value" | |||
[ngClass]="{'active': selectedChoice === choice.value }"> | |||
{{ choice.text }} | |||
<ion-checkbox mode="ios" [checked]="selectedChoice === choice.value"></ion-checkbox> | |||
</button> | |||
</div> | |||
</section> |
@@ -5,4 +5,35 @@ h3 { | |||
font-weight: 500; | |||
letter-spacing: 0.5px; | |||
line-height: 1.5; | |||
} | |||
.options { | |||
margin: 30px auto; | |||
button { | |||
border: 3px solid rgba($sea-blue, 0.3); | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
height: 50px; | |||
color: white; | |||
font-size: 1.1rem; | |||
border-radius: 10px; | |||
background-color: transparent; | |||
margin: 15px 0; | |||
width: 100%; | |||
padding: 0 15px; | |||
} | |||
ion-checkbox { | |||
--background: transparent; | |||
--border-color: #2ea9f586; | |||
--border-width: 2px; | |||
--border-color-checked: var(--ion-color-primary); | |||
--background-checked: var(--ion-color-primary); | |||
--size: 25px; | |||
--checkmark-width: 2px; | |||
--checkmark-color: white; | |||
pointer-events: none; | |||
} | |||
} |
@@ -7,11 +7,13 @@ import { Component, OnInit, Input } from '@angular/core'; | |||
}) | |||
export class McqComponent implements OnInit { | |||
@Input() text: string = ''; | |||
@Input() choice: Array<{ | |||
@Input() choices: Array<{ | |||
value: string, | |||
text: string, | |||
}>; | |||
@Input() correctAnswer: number | |||
@Input() correctAnswer: number; | |||
selectedChoice: string = ''; | |||
constructor() { } | |||
@@ -19,7 +19,7 @@ | |||
<ng-container *ngIf="selectedQuestion === i"> | |||
<li *ngIf="question.type === 'MCQ'"> | |||
<app-mcq [text]="question.question" | |||
[choice]="question.choice" | |||
[choices]="question.choices" | |||
[correctAnswer]="question.correctAnswer"></app-mcq> | |||
</li> | |||
@@ -31,4 +31,11 @@ | |||
</ul> | |||
</div> | |||
<button class="next-button" (click)="nextQuestion()"> | |||
<span class="text"> Next </span> | |||
<span class="dot"></span> | |||
</button> | |||
</ion-content> |
@@ -86,4 +86,63 @@ | |||
list-style: none; | |||
padding: 0; | |||
margin: 0; | |||
} | |||
.next-button { | |||
display: block; | |||
width: 150px; | |||
border-radius: 30px; | |||
height: 60px; | |||
background-color: darken($sea-blue, 15%); | |||
color: white; | |||
font-size: 1.2rem; | |||
font-weight: 500; | |||
position: fixed; | |||
z-index: 1; | |||
bottom: 10vh; | |||
left: calc(50% - 75px); | |||
overflow: hidden; | |||
&::before { | |||
content: ''; | |||
position: absolute; | |||
left: 30px; | |||
top: 0; | |||
width: 30px; | |||
height: 30px; | |||
background-color: darken($sea-blue, 10%); | |||
border-radius: 50%; | |||
display: block; | |||
transform: scale(1.5)translateY(-5px); | |||
} | |||
&::after { | |||
content: ''; | |||
position: absolute; | |||
right: 30px; | |||
bottom: 0; | |||
width: 30px; | |||
height: 30px; | |||
background-color: darken($sea-blue, 10%); | |||
border-radius: 50%; | |||
display: block; | |||
transform: scale(2.5)translateY(5px); | |||
} | |||
.text { | |||
position: relative; | |||
z-index: 1; | |||
} | |||
.dot { | |||
position: absolute; | |||
left: 30px; | |||
bottom: 0px; | |||
width: 30px; | |||
height: 30px; | |||
background-color: darken($sea-blue, 10%); | |||
border-radius: 50%; | |||
display: block; | |||
transform: scale(0.3); | |||
} | |||
} |
@@ -13,7 +13,7 @@ export class QuizPage implements OnInit { | |||
questions: Array<{ | |||
type: 'MCQ' | 'CARD', | |||
question: string, | |||
choice?: Array<{ | |||
choices?: Array<{ | |||
value: string, | |||
text: string, | |||
}>, | |||
@@ -36,15 +36,15 @@ export class QuizPage implements OnInit { | |||
this.questions = [{ | |||
type: 'MCQ', | |||
question: faker.lorem.sentence(), | |||
choice: [{ | |||
choices: [{ | |||
value: 'A', | |||
text: 'Choice 1' | |||
}, { | |||
value: 'B', | |||
text: 'Choice 1' | |||
text: 'Choice 2' | |||
}, { | |||
value: 'B', | |||
text: 'Choice 1' | |||
value: 'C', | |||
text: 'Choice 3' | |||
}], | |||
correctAnswer: 'A', | |||
secondsAllotted: 50 | |||
@@ -56,4 +56,11 @@ export class QuizPage implements OnInit { | |||
} | |||
nextQuestion() { | |||
if (this.selectedQuestion < this.questions.length - 1) { | |||
this.selectedQuestion += 1; | |||
} | |||
} | |||
} |