diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c88decc0..ae76f693d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Icon-only buttons announced as nothing by VoiceOver across the data grid, row inspector, editor find bar, filter bar, structure, dashboard and settings. +- Status icons that carried a result only as a symbol and a colour, silent to VoiceOver, in the AWS and app import steps and the plugin lists. - Foreign key picker rows that could only be chosen with a mouse. - No spoken sort direction on Query Plan columns. - No columns, indexes or foreign keys listed for a MySQL server that answers `information_schema` with nothing or an error. diff --git a/TablePro/Views/Connection/ImportFromAWS/AWSDiscoveryProgressStep.swift b/TablePro/Views/Connection/ImportFromAWS/AWSDiscoveryProgressStep.swift index 039cff89e..128cea058 100644 --- a/TablePro/Views/Connection/ImportFromAWS/AWSDiscoveryProgressStep.swift +++ b/TablePro/Views/Connection/ImportFromAWS/AWSDiscoveryProgressStep.swift @@ -54,15 +54,18 @@ struct AWSDiscoveryProgressStep: View { case .pending: Image(systemName: "circle.dotted") .foregroundStyle(.secondary) + .accessibilityLabel(String(localized: "Not started")) case .loading: ProgressView() .controlSize(.small) case .loaded: Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) + .accessibilityLabel(String(localized: "Done")) case .failed: Image(systemName: "exclamationmark.triangle.fill") .foregroundStyle(.orange) + .accessibilityLabel(String(localized: "Failed")) } } diff --git a/TablePro/Views/Connection/ImportFromApp/ConnectionImportPreviewList.swift b/TablePro/Views/Connection/ImportFromApp/ConnectionImportPreviewList.swift index 84626e275..6102f116f 100644 --- a/TablePro/Views/Connection/ImportFromApp/ConnectionImportPreviewList.swift +++ b/TablePro/Views/Connection/ImportFromApp/ConnectionImportPreviewList.swift @@ -100,14 +100,17 @@ struct ConnectionImportPreviewList: View { Image(systemName: "checkmark.circle.fill") .font(.callout) .foregroundStyle(.green) + .accessibilityLabel(String(localized: "Ready")) case .warnings: Image(systemName: "exclamationmark.triangle.fill") .font(.callout) .foregroundStyle(.yellow) + .accessibilityLabel(String(localized: "Warning")) case .unsupportedType: Image(systemName: "exclamationmark.triangle.fill") .font(.callout) .foregroundStyle(.orange) + .accessibilityLabel(String(localized: "Unsupported")) case .duplicate: EmptyView() } diff --git a/TablePro/Views/Connection/PluginRejectedBannerModifier.swift b/TablePro/Views/Connection/PluginRejectedBannerModifier.swift index 36ea35a20..812e3e102 100644 --- a/TablePro/Views/Connection/PluginRejectedBannerModifier.swift +++ b/TablePro/Views/Connection/PluginRejectedBannerModifier.swift @@ -87,9 +87,11 @@ struct PluginRejectedBannerModifier: ViewModifier { case .stagedPendingActivation: Image(systemName: "clock.arrow.circlepath") .foregroundStyle(.orange) + .accessibilityLabel(String(localized: "Restart to activate")) case .completed: Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) + .accessibilityLabel(String(localized: "Installed")) case .failed: updateButton(registryPlugin: registryPlugin) } diff --git a/TablePro/Views/Settings/AISettingsView.swift b/TablePro/Views/Settings/AISettingsView.swift index 8db7d67aa..55b20325a 100644 --- a/TablePro/Views/Settings/AISettingsView.swift +++ b/TablePro/Views/Settings/AISettingsView.swift @@ -172,6 +172,7 @@ struct AISettingsView: View { Image(systemName: "checkmark") .font(.caption.bold()) .foregroundStyle(Color.accentColor) + .accessibilityLabel(String(localized: "Active")) } } .frame(width: 14) diff --git a/TablePro/Views/Settings/Plugins/BrowsePluginsView.swift b/TablePro/Views/Settings/Plugins/BrowsePluginsView.swift index c811ada9f..83191761f 100644 --- a/TablePro/Views/Settings/Plugins/BrowsePluginsView.swift +++ b/TablePro/Views/Settings/Plugins/BrowsePluginsView.swift @@ -199,10 +199,12 @@ struct BrowsePluginsView: View { Image(systemName: "clock.arrow.circlepath") .foregroundStyle(.orange) .font(.caption) + .accessibilityLabel(String(localized: "Restart to activate")) case .completed: Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) .font(.caption) + .accessibilityLabel(String(localized: "Installed")) case .failed: Button("Retry") { retryOperation(for: plugin) } .controlSize(.mini)