Skip to content

Commit bdb265e

Browse files
committed
fix(a11y): name every progress bar
A progressbar with values but no name announces a bare percentage — the heading beside it is visual context a screen reader does not get from the node. Eight were unnamed; each takes the wording already shown next to it, reusing the existing key where one exists rather than inventing new copy for the same string. Verified per instance rather than by proximity: an earlier check looked at a fixed window after the first <Progress> in each file, which would mis-judge files holding several.
1 parent 9b485dc commit bdb265e

9 files changed

Lines changed: 31 additions & 2 deletions

File tree

frontend/editor/public/locales/en-US/translation.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,6 +2059,7 @@ title = "Smart Renaming"
20592059

20602060
[automate]
20612061
copyToSaved = "Copy to Saved"
2062+
runProgress = "Automation progress"
20622063
desc = "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."
20632064
export = "Export"
20642065
exportForFolderScanning = "Export for Folder Scanning"
@@ -4251,6 +4252,7 @@ issues = "GitHub"
42514252

42524253
[formFill]
42534254
allSaved = "All saved"
4255+
completionProgress = "Form completion"
42544256
extractCsvError = "Failed to extract CSV"
42554257
extractXlsxError = "Failed to extract XLSX"
42564258
flattenAfterFilling = "Flatten after filling"
@@ -10832,6 +10834,7 @@ title = "Unlocked Forms Results"
1083210834

1083310835
[update]
1083410836
allReleases = "All Releases"
10837+
downloadProgress = "Download progress"
1083510838
breaking = "Breaking"
1083610839
breakingChanges = "Breaking Changes"
1083710840
breakingChangesDefault = "This version contains breaking changes."

frontend/editor/src/core/components/shared/UpdateModal.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,10 @@ const UpdateModal: React.FC<UpdateModalProps> = ({
810810
size="lg"
811811
animated
812812
radius="xl"
813+
aria-label={t(
814+
"update.downloadProgress",
815+
"Download progress",
816+
)}
813817
/>
814818
{desktopInstall.state === "installing" && (
815819
<Alert variant="light" color="blue" radius="sm" py="xs">

frontend/editor/src/core/components/shared/WorkbenchBar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ export default function WorkbenchBar({
174174
value={enforcingProgress}
175175
striped
176176
animated
177+
aria-label={t("policy.enforcingTitle", "Enforcing policy…")}
177178
/>
178179
) : (
179180
<Loader size="xs" />

frontend/editor/src/core/components/tools/automate/AutomationRun.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,11 @@ export default function AutomationRun({
183183
<Text size="sm" mb="xs">
184184
Progress: {currentStepIndex + 1}/{executionSteps.length}
185185
</Text>
186-
<Progress value={getProgress()} size="lg" />
186+
<Progress
187+
value={getProgress()}
188+
size="lg"
189+
aria-label={t("automate.runProgress", "Automation progress")}
190+
/>
187191
</div>
188192
)}
189193

frontend/editor/src/core/components/tools/pdfTextEditor/PdfTextEditorView.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,6 +1752,10 @@ const PdfTextEditorView = ({ data }: PdfTextEditorViewProps) => {
17521752
value={conversionProgress?.percent || 0}
17531753
size="lg"
17541754
radius="md"
1755+
aria-label={t(
1756+
"pdfTextEditor.converting",
1757+
"Converting PDF to editable format...",
1758+
)}
17551759
/>
17561760
</Stack>
17571761
</Card>

frontend/editor/src/core/components/viewer/ViewerShareButton.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export default function ViewerShareButton({
9494
value={enforcingProgress}
9595
striped
9696
animated
97+
aria-label={t("policy.enforcingTitle", "Enforcing policy…")}
9798
/>
9899
) : (
99100
<Loader size="xs" />

frontend/editor/src/core/pages/MobileScannerPage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1053,7 +1053,11 @@ export default function MobileScannerPage() {
10531053
<Text size="sm" mb="xs">
10541054
{t("mobileScanner.uploading", "Uploading...")}
10551055
</Text>
1056-
<Progress value={uploadProgress} animated />
1056+
<Progress
1057+
value={uploadProgress}
1058+
animated
1059+
aria-label={t("mobileScanner.uploading", "Uploading...")}
1060+
/>
10571061
</Box>
10581062
)}
10591063

frontend/editor/src/core/tools/formFill/FormFill.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,10 @@ const FormFill = (_props: BaseToolProps) => {
486486
}
487487
size={6}
488488
radius="xl"
489+
aria-label={t(
490+
"formFill.completionProgress",
491+
"Form completion",
492+
)}
489493
color={
490494
filledRequiredCount === requiredCount ? "teal" : "blue"
491495
}

frontend/editor/src/proprietary/components/shared/PolicyEnforcingOverlay.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ export function PolicyEnforcingOverlay({
101101
striped
102102
animated
103103
color={accentVar}
104+
// Without a name the bar announces a bare percentage; the
105+
// heading above it is visual context a screen reader does not
106+
// get from the progressbar node.
107+
aria-label={t("policy.enforcingTitle", "Enforcing policy…")}
104108
/>
105109
) : (
106110
<Loader size="xs" color={accentVar} />

0 commit comments

Comments
 (0)