@@ -51,25 +51,56 @@ document.addEventListener('DOMContentLoaded', function () {
5151 return selectedOption ? selectedOption . value : null ;
5252 } ;
5353
54+ // Progress bar logic
55+
56+ const form = document . getElementById ( 'accessibility-quiz' ) ;
57+ const progressBar = document . querySelector ( ".quiz-progress" ) ;
58+ const progressFill = document . querySelector ( '.progress-fill' ) ;
59+ const progressText = document . querySelector ( '.progress-text' ) ;
60+ let answeredQuestions = new Set ( ) ;
61+
62+ const updateProgress = ( ) => {
63+ const totalQuestions = 6 ;
64+ const answeredCount = answeredQuestions . size ;
65+ const percentage = ( answeredCount / totalQuestions ) * 100 ;
66+
67+ progressFill . style . width = `${ percentage } %` ;
68+ progressText . textContent = `${ answeredCount } of ${ totalQuestions } questions answered` ;
69+ announcer . textContent = `${ answeredCount } of ${ totalQuestions } questions answered` ;
70+ }
71+
72+ form . querySelectorAll ( 'input[type="radio"]' ) . forEach ( ( radio ) => {
73+ radio . addEventListener ( 'change' , ( ) => {
74+ const questionName = radio . name ;
75+ answeredQuestions . add ( questionName ) ;
76+ updateProgress ( ) ;
77+ } ) ;
78+ } ) ;
79+
80+ // const createErrorMessage = () => {
81+ // const errorMessage = document.createElement("div");
82+ // errorMessage.classList.add("error-message");
83+ // errorMessage.setAttribute("aria-live", "polite");
84+ // errorMessage.textContent = "Please select an answer before proceeding.";
85+ // return errorMessage;
86+ // };
5487
5588 const createErrorMessage = ( ) => {
56- const errorMessage = document . createElement ( "div" ) ;
57- errorMessage . classList . add ( "error-message" ) ;
58- errorMessage . setAttribute ( "aria-live" , "polite" ) ;
59- errorMessage . textContent = "Please select an answer before proceeding." ;
60- return errorMessage ;
61- } ;
89+ const errorContainer = document . querySelectorAll ( '.error-container' ) [ currentIndex ] ;
90+ errorContainer . textContent = "Please select an answer before proceeding" ;
91+ }
6292
6393 const showSummary = ( ) => {
6494 let summaryCard = document . getElementById ( "summary-card" ) ;
95+ progressBar . setAttribute ( "hidden" , "true" ) ;
6596
6697 if ( ! summaryCard ) {
6798 summaryCard = document . createElement ( "fieldset" ) ;
6899 summaryCard . id = "summary-card" ;
69100 summaryCard . classList . add ( "quiz-card" ) ;
70101 summaryCard . innerHTML = `
71102 <h2>Your results:</h2>
72- <div id="summary-content"></div>
103+ <div id="summary-content" aria-live="polite" ></div>
73104 <button type="button" id="restart-btn">Restart Quiz</button>
74105 ` ;
75106 document . getElementById ( "accessibility-quiz" ) . appendChild ( summaryCard ) ;
@@ -99,15 +130,20 @@ document.addEventListener('DOMContentLoaded', function () {
99130 restartButton . addEventListener ( "click" , ( ) => {
100131 currentIndex = 0 ;
101132 userAnswers = { } ;
102-
133+
134+ progressBar . removeAttribute ( "hidden" ) ;
103135 summaryCard . classList . remove ( "active" ) ;
104136
105137 document . querySelectorAll ( 'input[type="radio"]:checked' ) . forEach ( ( radio ) => {
106138 radio . checked = false ;
107139 } ) ;
108140
141+ answeredQuestions . clear ( ) ;
142+
109143 showCard ( currentIndex ) ;
110144
145+ updateProgress ( ) ;
146+
111147 } ) ;
112148
113149 showCard ( cards . length ) ;
@@ -118,17 +154,23 @@ document.addEventListener('DOMContentLoaded', function () {
118154
119155 const currentCard = cards [ currentIndex ] ;
120156 const selectedAnswer = getSelectedAnswer ( ) ;
157+ const errorContainer = document . querySelectorAll ( '.error-container' ) [ currentIndex ] ;
121158
122159 // Check if error message already exists and remove it if it does
123- const existingError = currentCard . querySelector ( ".error-message" ) ;
124- if ( existingError ) {
125- existingError . remove ( ) ;
126- }
160+ // const existingError = currentCard.querySelector(".error-message");
161+ // if (existingError) {
162+ // existingError.remove();
163+ // }
127164
128165 // If no answer selected create an error message
166+ // if (!selectedAnswer) {
167+ // const errorMessage = createErrorMessage();
168+ // errorContainer.appendChild(errorMessage);
169+ // return;
170+ // }
171+
129172 if ( ! selectedAnswer ) {
130- const errorMessage = createErrorMessage ( ) ;
131- currentCard . appendChild ( errorMessage ) ;
173+ createErrorMessage ( ) ;
132174 return ;
133175 }
134176
0 commit comments