@@ -2,11 +2,12 @@ import React, { useState, useEffect } from 'react'
22import CloseIcon from '../Icons/CloseIcon'
33import DisabilityCognitiveIcon from '../Icons/DisabilityCognitiveIcon'
44import DisabilityHearingIcon from '../Icons/DisabilityHearingIcon'
5+ import DisabilityLanguageIcon from '../Icons/DisabilityLanguageIcon'
56import DisabilityMotorIcon from '../Icons/DisabilityMotorIcon'
67import DisabilityVisualIcon from '../Icons/DisabilityVisualIcon'
78import FormClarification from '../Forms/FormClarification'
89import FileForm from '../Forms/FileForm'
9- import { disabilityTypes , disabilitiesFromRule , formFromIssue , formNameFromRule } from '../../Services/Ufixit'
10+ import { disabilityTypes , disabilitiesFromRule , formFromIssue , formNameFromRule , sharedRuleDescriptions , sharedRuleSummaries } from '../../Services/Ufixit'
1011import './UfixitWidget.css'
1112
1213
@@ -31,8 +32,6 @@ export default function UfixitWidget({
3132 const [ UfixitForm , setUfixitForm ] = useState ( null )
3233 const [ formSummary , setFormSummary ] = useState ( '' )
3334 const [ formLearnMore , setFormLearnMore ] = useState ( '' )
34- const [ showClarification , setShowClarification ] = useState ( false )
35- const [ showLearnMore , setShowLearnMore ] = useState ( false )
3635 const [ disabilities , setDisabilities ] = useState ( [ ] )
3736 const [ markAsReviewed , setMarkAsReviewed ] = useState ( false )
3837
@@ -73,37 +72,53 @@ export default function UfixitWidget({
7372 setUfixitForm ( ( ) => { return FileForm } )
7473 setFormSummary ( t ( 'form.file.summary' ) )
7574 setFormLearnMore ( t ( `form.file.${ tempActiveIssue . fileData . fileType } .learn_more` ) )
76- setShowClarification ( false )
77- setShowLearnMore ( true )
7875 setDisabilities ( [ disabilityTypes . COGNITIVE , disabilityTypes . VISUAL ] )
7976 }
8077 else {
8178 setUfixitForm ( ( ) => formFromIssue ( tempActiveIssue . issueData ) )
8279 setDisabilities ( disabilitiesFromRule ( tempActiveIssue . scanRuleId ) )
8380 let tempFormName = formNameFromRule ( tempActiveIssue . scanRuleId )
84- if ( tempFormName === 'review_only' ) {
85- setShowClarification ( false )
86- let ruleSummary = t ( `rule.summary.${ tempActiveIssue . scanRuleId } ` )
87- if ( ruleSummary === `rule.summary.${ tempActiveIssue . scanRuleId } ` ) {
88- ruleSummary = formatEqualAccessMessage ( )
89- }
90- setFormSummary ( ruleSummary )
81+ let tempSummaryKey = ''
82+ let tempDescriptionKey = ''
83+
84+ // ALL complete forms should have a summary and 'learn more' description.
85+ if ( tempFormName !== 'review_only' ) {
86+ tempSummaryKey = `form.${ tempFormName } .summary`
87+ tempDescriptionKey = `form.${ tempFormName } .learn_more`
88+ }
89+ else {
90+ tempSummaryKey = `rule.summary.${ tempActiveIssue . scanRuleId } `
91+ tempDescriptionKey = `rule.desc.${ tempActiveIssue . scanRuleId } `
92+ }
93+
94+ let tempSummary = t ( tempSummaryKey )
95+ let tempDescription = t ( tempDescriptionKey )
9196
92- let ruleLearnMore = t ( `rule.desc.${ tempActiveIssue . scanRuleId } ` )
93- if ( ruleLearnMore === `rule.desc.${ tempActiveIssue . scanRuleId } ` ) {
94- setShowLearnMore ( false )
97+ // If there isn't a specific summary for this rule, it may be using a shared summary.
98+ if ( tempSummary === tempSummaryKey ) {
99+ if ( sharedRuleSummaries . hasOwnProperty ( tempActiveIssue . scanRuleId ) ) {
100+ tempSummary = t ( sharedRuleSummaries [ tempActiveIssue . scanRuleId ] )
95101 }
102+
103+ // If there STILL isn't a specific summary for this rule, check to see if there's something in the metadata from Equal Access.
104+ // THIS IS NOT TRANSLATED, so it will only work in English.
96105 else {
97- setShowLearnMore ( true )
106+ tempSummary = formatEqualAccessMessage ( )
98107 }
99- setFormLearnMore ( ruleLearnMore )
100108 }
101- else {
102- setFormSummary ( t ( `form.${ tempFormName } .summary` ) )
103- setFormLearnMore ( t ( `form.${ tempFormName } .learn_more` ) )
104- setShowClarification ( true )
105- setShowLearnMore ( true )
109+
110+ // If there isn't a specific description for this rule, it may be using a shared description.
111+ if ( tempDescription === tempDescriptionKey ) {
112+ if ( sharedRuleDescriptions . hasOwnProperty ( tempActiveIssue . scanRuleId ) ) {
113+ tempDescription = t ( sharedRuleDescriptions [ tempActiveIssue . scanRuleId ] )
114+ }
115+ else {
116+ tempDescription = ''
117+ }
106118 }
119+
120+ setFormSummary ( tempSummary )
121+ setFormLearnMore ( tempDescription )
107122 }
108123 } , [ tempActiveIssue ] )
109124
@@ -159,19 +174,17 @@ export default function UfixitWidget({
159174 < div className = "ufixit-instructions"
160175 dangerouslySetInnerHTML = { { __html : formSummary } }
161176 />
162- { showLearnMore && (
177+ { formLearnMore !== "" && (
163178 < div className = "flex-row justify-content-end mt-2" >
164179 < button className = "btn-link btn-small p-0" onClick = { ( ) => setShowLongDesc ( true ) } >
165180 < div > { t ( 'fix.button.learn_more' ) } </ div >
166181 </ button >
167182 </ div >
168183 ) }
169- { showClarification && (
170- < FormClarification
171- t = { t }
172- activeIssue = { tempActiveIssue }
173- />
174- ) }
184+ < FormClarification
185+ t = { t }
186+ activeIssue = { tempActiveIssue }
187+ />
175188 </ div >
176189
177190 < div className = "ufixit-widget-label primary mb-1" > { t ( 'fix.label.barrier_repair' ) } </ div >
@@ -217,37 +230,47 @@ export default function UfixitWidget({
217230 </ div >
218231 </ div >
219232 < div className = "ufixit-widget-dialog-content flex-column flex-grow-1" >
220- { disabilities . length > 0 && ( < div className = "dialog-indicator-container flex-row gap-2" >
221- < div className = "flex-column align-self-center flex-shrink-0" >
222- { t ( 'fix.label.affected' ) }
223- </ div >
224- < div className = "flex-row flex-wrap gap-1" >
225- { disabilities . includes ( disabilityTypes . VISUAL ) && (
226- < div className = 'indicator-container active' >
227- < DisabilityVisualIcon className = "icon-md pe-2" alt = "" />
228- < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.visual' ) } </ div >
229- </ div >
230- ) }
231- { disabilities . includes ( disabilityTypes . HEARING ) && (
232- < div className = 'indicator-container active' >
233- < DisabilityHearingIcon className = "icon-md pe-2" alt = "" />
234- < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.hearing' ) } </ div >
233+ { disabilities . length > 0 && (
234+ < div className = "dialog-indicator-background" >
235+ < div className = "dialog-indicator-container flex-row gap-2" >
236+ < div className = "flex-column align-self-center flex-shrink-0" >
237+ { t ( 'fix.label.affected' ) }
235238 </ div >
236- ) }
237- { disabilities . includes ( disabilityTypes . MOTOR ) && (
238- < div className = 'indicator-container active' >
239- < DisabilityMotorIcon className = "icon-md pe-2" alt = "" />
240- < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.motor' ) } </ div >
239+ < div className = "flex-row flex-wrap gap-1" >
240+ { disabilities . includes ( disabilityTypes . VISUAL ) && (
241+ < div className = 'indicator-container active' >
242+ < DisabilityVisualIcon className = "icon-md pe-2" alt = "" />
243+ < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.visual' ) } </ div >
244+ </ div >
245+ ) }
246+ { disabilities . includes ( disabilityTypes . HEARING ) && (
247+ < div className = 'indicator-container active' >
248+ < DisabilityHearingIcon className = "icon-md pe-2" alt = "" />
249+ < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.hearing' ) } </ div >
250+ </ div >
251+ ) }
252+ { disabilities . includes ( disabilityTypes . LANGUAGE ) && (
253+ < div className = 'indicator-container active' >
254+ < DisabilityLanguageIcon className = "icon-md pe-2" alt = "" />
255+ < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.language' ) } </ div >
256+ </ div >
257+ ) }
258+ { disabilities . includes ( disabilityTypes . MOTOR ) && (
259+ < div className = 'indicator-container active' >
260+ < DisabilityMotorIcon className = "icon-md pe-2" alt = "" />
261+ < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.motor' ) } </ div >
262+ </ div >
263+ ) }
264+ { disabilities . includes ( disabilityTypes . COGNITIVE ) && (
265+ < div className = 'indicator-container active' >
266+ < DisabilityCognitiveIcon className = "icon-md pe-2" alt = "" />
267+ < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.cognitive' ) } </ div >
268+ </ div >
269+ ) }
241270 </ div >
242- ) }
243- { disabilities . includes ( disabilityTypes . COGNITIVE ) && (
244- < div className = 'indicator-container active' >
245- < DisabilityCognitiveIcon className = "icon-md pe-2" alt = "" />
246- < div className = "flex-column align-self-center" > { t ( 'fix.label.disability.cognitive' ) } </ div >
247- </ div >
248- ) }
271+ </ div >
249272 </ div >
250- </ div > ) }
273+ ) }
251274 < div className = "flex-grow-1 flex-column ufixit-learn-container pt-3 pb-3"
252275 dangerouslySetInnerHTML = { { __html : formLearnMore } } />
253276 < div className = "flex-row justify-content-center mb-3" >
0 commit comments