Skip to content

Commit 5e31dfd

Browse files
committed
VPR-104 fix(a11y): CTS followup — contrast, banners, broken forms
- Replace hardcoded blue (#1E88E5) with var(--q-secondary) in LevelSelect for WCAG AA contrast compliance (~7.4:1) - Replace non-existent q-label with div in ManageDomains - Fix Promise.resolve → Promise.all in ManageCompetencies load() and add null guard for failed hierarchy API - Migrate q-banner to StatusBanner in AssessmentEpa/AssessmentEpaEdit - Fix ManageRoles 400 error: initialize role with roleId: 0 to satisfy required int on RoleDto - Fix ManageMilestones 400 error: add missing competencyCount to bundle payload
1 parent a1b7a20 commit 5e31dfd

7 files changed

Lines changed: 28 additions & 38 deletions

File tree

VueApp/src/CTS/components/LevelSelect.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,14 @@ getLevels()
143143

144144
<style scoped>
145145
div.levelSelection button {
146-
border: 1px solid rgb(30 136 229);
147-
color: rgb(30 136 229);
146+
border: 1px solid var(--q-secondary);
147+
color: var(--q-secondary);
148148
width: 100%;
149149
margin-bottom: 0.2rem;
150150
}
151151
152152
div.levelSelection button.selectedLevel {
153-
background-color: rgb(30 136 229);
153+
background-color: var(--q-secondary);
154154
color: white;
155155
}
156156

VueApp/src/CTS/pages/AssessmentEpa.vue

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { Epa } from "@/CTS/types"
66
import StudentSelect from "@/components/StudentSelect.vue"
77
import ServiceSelectBox from "@/CTS/components/ServiceSelect.vue"
88
import LevelSelect from "@/CTS/components/LevelSelect.vue"
9+
import StatusBanner from "@/components/StatusBanner.vue"
910
1011
//epas
1112
const epas = ref([]) as Ref<Epa[]>
@@ -123,21 +124,13 @@ watch(selectedStudentId, () => {
123124
</div>
124125
</div>
125126

126-
<q-banner
127-
inline-actions
128-
rounded
127+
<StatusBanner
129128
v-if="success"
130-
class="bg-green text-white q-mb-md"
129+
type="success"
130+
dismissible
131131
>
132132
EPA Saved
133-
<template #action>
134-
<q-btn
135-
flat
136-
label="Dismiss"
137-
@click="success = false"
138-
></q-btn>
139-
</template>
140-
</q-banner>
133+
</StatusBanner>
141134

142135
<div v-if="serviceId != null && epa?.epaId">
143136
<div class="row justify-between items-center q-mb-lg">

VueApp/src/CTS/pages/AssessmentEpaEdit.vue

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useRoute, useRouter } from "vue-router"
55
import { useFetch } from "@/composables/ViperFetch"
66
import { useDateFunctions } from "@/composables/DateFunctions"
77
import LevelSelect from "@/CTS/components/LevelSelect.vue"
8+
import StatusBanner from "@/components/StatusBanner.vue"
89
910
const { formatDateForDateInput } = useDateFunctions()
1011
const route = useRoute()
@@ -73,21 +74,13 @@ getStudentEpa()
7374
class="col"
7475
v-show="studentEpa.encounterId"
7576
>
76-
<q-banner
77-
inline-actions
78-
rounded
77+
<StatusBanner
7978
v-if="success"
80-
class="bg-green text-white q-mb-md"
79+
type="success"
80+
dismissible
8181
>
8282
EPA Saved
83-
<template #action>
84-
<q-btn
85-
flat
86-
label="Dismiss"
87-
@click="success = false"
88-
></q-btn>
89-
</template>
90-
</q-banner>
83+
</StatusBanner>
9184
<div class="row justify-between items-end q-mb-lg">
9285
<div class="col-12 col-md-6 col-lg-5">
9386
<h2 class="epa">{{ studentEpa.epaName }}</h2>

VueApp/src/CTS/pages/ManageCompetencies.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,15 @@ const showDescriptions = ref(false)
3131
const tree = ref(null) as Ref<any>
3232
3333
async function load() {
34-
Promise.resolve([
34+
const [, , hierarchyResult] = await Promise.all([
3535
get(apiUrl + "cts/domains").then((r) => (domains.value = r.result)),
3636
get(apiUrl + "cts/competencies").then((r) => (competencies.value = r.result)),
37+
get(apiUrl + "cts/competencies/hierarchy"),
3738
])
38-
await get(apiUrl + "cts/competencies/hierarchy").then((r) => (competencyHierachy.value = r.result))
39-
treeNodes.value = competencyHierachy.value.map(createTreeNode)
39+
if (hierarchyResult?.result) {
40+
competencyHierachy.value = hierarchyResult.result
41+
treeNodes.value = competencyHierachy.value.map(createTreeNode)
42+
}
4043
loaded.value = true
4144
}
4245

VueApp/src/CTS/pages/ManageDomains.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ getDomains()
6666
method="post"
6767
@submit="save"
6868
>
69-
<q-label class="row items-center">
69+
<div class="row items-center">
7070
<span class="col col-md-2 col-lg-1">Domain:</span>
7171
<q-input
7272
outlined
@@ -78,8 +78,8 @@ getDomains()
7878
maxlength="250"
7979
class="col col-md-5 col-lg-3"
8080
/>
81-
</q-label>
82-
<q-label class="row items-center">
81+
</div>
82+
<div class="row items-center">
8383
<span class="col col-md-2 col-lg-1">Order:</span>
8484
<q-input
8585
outlined
@@ -90,8 +90,8 @@ getDomains()
9090
step="1"
9191
class="col col-1"
9292
/>
93-
</q-label>
94-
<q-label class="row items-start">
93+
</div>
94+
<div class="row items-start">
9595
<span class="col col-md-2 col-lg-1 q-pt-sm">Description:</span>
9696
<q-input
9797
outlined
@@ -101,7 +101,7 @@ getDomains()
101101
v-model="domain.description"
102102
class="col col-md-5 col-lg-3"
103103
></q-input>
104-
</q-label>
104+
</div>
105105
<div class="row q-mt-sm">
106106
<q-btn
107107
type="submit"

VueApp/src/CTS/pages/ManageMilestones.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ async function createMilestone() {
7474
clinical: false,
7575
milestone: true,
7676
name: "Milestone " + comp.number + " " + comp.name,
77+
competencyCount: 0,
7778
roles: [],
7879
}
7980
let r = await post(apiUrl + "cts/bundles/", bundle)

VueApp/src/CTS/pages/ManageRoles.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const $q = useQuasar()
88
const { get, post, put, del } = useFetch()
99
1010
const apiUrl = inject("apiURL")
11-
const role = ref({}) as Ref<any>
11+
const role = ref({ roleId: 0, name: "" }) as Ref<any>
1212
const roles = ref([]) as Ref<any[]>
1313
1414
async function load() {
@@ -40,7 +40,7 @@ function removeRole() {
4040
}
4141
4242
function clearRole() {
43-
role.value = {}
43+
role.value = { roleId: 0, name: "" }
4444
}
4545
4646
load()

0 commit comments

Comments
 (0)