Skip to content

Commit 4268c98

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 37cba30 commit 4268c98

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"
@@ -4250,6 +4251,7 @@ issues = "GitHub"
42504251

42514252
[formFill]
42524253
allSaved = "All saved"
4254+
completionProgress = "Form completion"
42534255
extractCsvError = "Failed to extract CSV"
42544256
extractXlsxError = "Failed to extract XLSX"
42554257
flattenAfterFilling = "Flatten after filling"
@@ -10866,6 +10868,7 @@ title = "Unlocked Forms Results"
1086610868

1086710869
[update]
1086810870
allReleases = "All Releases"
10871+
downloadProgress = "Download progress"
1086910872
breaking = "Breaking"
1087010873
breakingChanges = "Breaking Changes"
1087110874
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
@@ -175,6 +175,7 @@ export default function WorkbenchBar({
175175
value={enforcingProgress}
176176
striped
177177
animated
178+
aria-label={t("policy.enforcingTitle", "Enforcing policy…")}
178179
/>
179180
) : (
180181
<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
@@ -110,6 +110,10 @@ export function PolicyEnforcingOverlay({
110110
striped
111111
animated
112112
color={accentVar}
113+
// Without a name the bar announces a bare percentage; the
114+
// heading above it is visual context a screen reader does not
115+
// get from the progressbar node.
116+
aria-label={t("policy.enforcingTitle", "Enforcing policy…")}
113117
/>
114118
) : (
115119
<Loader size="xs" color={accentVar} />

0 commit comments

Comments
 (0)