diff --git a/src/core/packages/chrome/browser-internal/src/ui/project/breadcrumbs.tsx b/src/core/packages/chrome/browser-internal/src/ui/project/breadcrumbs.tsx index c9794c31ee4fc..4fe527e91d311 100644 --- a/src/core/packages/chrome/browser-internal/src/ui/project/breadcrumbs.tsx +++ b/src/core/packages/chrome/browser-internal/src/ui/project/breadcrumbs.tsx @@ -12,6 +12,7 @@ import classNames from 'classnames'; import React from 'react'; import useObservable from 'react-use/lib/useObservable'; import type { Observable } from 'rxjs'; +import { i18n } from '@kbn/i18n'; import type { ChromeBreadcrumb } from '@kbn/core-chrome-browser'; interface Props { @@ -48,6 +49,9 @@ export function Breadcrumbs({ breadcrumbs$ }: Props) { {isSpaceReduced && ( - + diff --git a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx index 4d48eb88d84c4..853c46fbd9edb 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx @@ -54,26 +54,24 @@ export function QueryHistoryAction({ isHistoryOpen: boolean; isSpaceReduced?: boolean; }) { + const toggleHistoryLabel = isHistoryOpen + ? i18n.translate('esqlEditor.query.hideQueriesLabel', { + defaultMessage: 'Hide recent queries', + }) + : i18n.translate('esqlEditor.query.showQueriesLabel', { + defaultMessage: 'Show recent queries', + }); + return ( <> {isSpaceReduced && ( - + @@ -91,13 +89,7 @@ export function QueryHistoryAction({ iconType="clockCounter" data-test-subj="ESQLEditor-toggle-query-history-button" > - {isHistoryOpen - ? i18n.translate('esqlEditor.query.hideQueriesLabel', { - defaultMessage: 'Hide recent queries', - }) - : i18n.translate('esqlEditor.query.showQueriesLabel', { - defaultMessage: 'Show recent queries', - })} + {toggleHistoryLabel} )} diff --git a/src/platform/packages/shared/cloud/connection_details/components/fancy_select/fancy_select.tsx b/src/platform/packages/shared/cloud/connection_details/components/fancy_select/fancy_select.tsx index 517fec87e32c3..794ef83d87619 100644 --- a/src/platform/packages/shared/cloud/connection_details/components/fancy_select/fancy_select.tsx +++ b/src/platform/packages/shared/cloud/connection_details/components/fancy_select/fancy_select.tsx @@ -8,6 +8,7 @@ */ import * as React from 'react'; +import { i18n } from '@kbn/i18n'; import { EuiSuperSelect, EuiText, EuiFlexGroup, EuiFlexItem, EuiIcon } from '@elastic/eui'; import type { FancySelectOption } from './types'; @@ -20,6 +21,12 @@ export interface FancySelectProps { export const FancySelect: React.FC = ({ value, options, onChange }) => { return ( ({ value: option.id, diff --git a/src/platform/packages/shared/cloud/connection_details/tabs/endpoints_tab/rows/cloud_id_row/label.tsx b/src/platform/packages/shared/cloud/connection_details/tabs/endpoints_tab/rows/cloud_id_row/label.tsx index e47e2a9a3b3bf..5ee4b52547ef6 100644 --- a/src/platform/packages/shared/cloud/connection_details/tabs/endpoints_tab/rows/cloud_id_row/label.tsx +++ b/src/platform/packages/shared/cloud/connection_details/tabs/endpoints_tab/rows/cloud_id_row/label.tsx @@ -45,6 +45,12 @@ export const Label: React.FC<{ learnMoreUrl?: string }> = ({ learnMoreUrl }) => onClick={() => { setIsPopoverOpen((x) => !x); }} + aria-label={i18n.translate( + 'cloud.connectionDetails.tab.endpoints.cloudIdField.helpButtonAriaLabel', + { + defaultMessage: 'Cloud ID help', + } + )} /> } isOpen={isPopoverOpen} diff --git a/src/platform/packages/shared/cloud/deployment_details/deployment_details_cloudid_input.tsx b/src/platform/packages/shared/cloud/deployment_details/deployment_details_cloudid_input.tsx index 3074bfc69d9a0..ce49e89f4a17c 100644 --- a/src/platform/packages/shared/cloud/deployment_details/deployment_details_cloudid_input.tsx +++ b/src/platform/packages/shared/cloud/deployment_details/deployment_details_cloudid_input.tsx @@ -50,6 +50,9 @@ const Label: FC<{ learnMoreUrl: string }> = ({ learnMoreUrl }) => { onClick={() => { setIsPopoverOpen(true); }} + aria-label={i18n.translate('cloud.deploymentDetails.cloudIdHelpButton.ariaLabel', { + defaultMessage: 'Show Cloud ID help', + })} /> } isOpen={isPopoverOpen} @@ -89,7 +92,15 @@ export const DeploymentDetailsCloudIdInput: FC<{ cloudId: string; learnMoreUrl: {(copy) => ( - + )} diff --git a/src/platform/packages/shared/dashboards/dashboards-selector/components/dashboards_selector.tsx b/src/platform/packages/shared/dashboards/dashboards-selector/components/dashboards_selector.tsx index eec612040fce7..35d6b78d7096f 100644 --- a/src/platform/packages/shared/dashboards/dashboards-selector/components/dashboards_selector.tsx +++ b/src/platform/packages/shared/dashboards/dashboards-selector/components/dashboards_selector.tsx @@ -6,6 +6,7 @@ * your election, the "Elastic License 2.0", the "GNU Affero General Public * License v3.0 only", or the "Server Side Public License, v 1". */ +import { i18n } from '@kbn/i18n'; import type { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; import type { EuiComboBoxOptionOption } from '@elastic/eui'; import { EuiComboBox } from '@elastic/eui'; @@ -145,6 +146,12 @@ export function DashboardsSelector({ options={dashboardList} selectedOptions={selectedDashboards} placeholder={placeholder} + aria-label={ + placeholder ?? + i18n.translate('dashboardsSelector.comboBox.ariaLabel', { + defaultMessage: 'Dashboards', + }) + } onChange={internalOnChange} onFocus={handleComboBoxFocus} onSearchChange={onSearchChange} diff --git a/src/platform/packages/shared/dashboards/dashboards-selector/tsconfig.json b/src/platform/packages/shared/dashboards/dashboards-selector/tsconfig.json index 7e075bff5b11a..6d17ed920a819 100644 --- a/src/platform/packages/shared/dashboards/dashboards-selector/tsconfig.json +++ b/src/platform/packages/shared/dashboards/dashboards-selector/tsconfig.json @@ -19,5 +19,6 @@ "@kbn/content-management-plugin", "@kbn/content-management-utils", "@kbn/core", + "@kbn/i18n", ] } diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/icon_select.tsx b/src/platform/packages/shared/kbn-visualization-ui-components/components/icon_select.tsx index 7bb88be2d2b91..df324b79241c7 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/icon_select.tsx +++ b/src/platform/packages/shared/kbn-visualization-ui-components/components/icon_select.tsx @@ -23,6 +23,10 @@ export type IconSet = Array<{ shouldRotate?: boolean; }>; +const iconDecorationLabel = i18n.translate('visualizationUiComponents.iconSelect.label', { + defaultMessage: 'Icon decoration', +}); + const IconView = (props: { value?: string; label: string; icon?: IconType }) => { if (!props.value) return null; return ( @@ -68,6 +72,7 @@ export function IconSelect({ singleSelection={{ asPlainText: true }} renderOption={IconView} compressed + aria-label={iconDecorationLabel} prepend={ hasIcon(selectedIcon.value) ? ( @@ -89,13 +94,7 @@ export function IconSelectSetting({ defaultIcon?: string; }) { return ( - + {i18n.RECURRING_SCHEDULE_FORM_TIMEZONE} diff --git a/src/platform/packages/shared/response-ops/rule_form/src/rule_actions/rule_actions_alerts_filter_timeframe.tsx b/src/platform/packages/shared/response-ops/rule_form/src/rule_actions/rule_actions_alerts_filter_timeframe.tsx index db5024b77aa11..d9b4336af3d75 100644 --- a/src/platform/packages/shared/response-ops/rule_form/src/rule_actions/rule_actions_alerts_filter_timeframe.tsx +++ b/src/platform/packages/shared/response-ops/rule_form/src/rule_actions/rule_actions_alerts_filter_timeframe.tsx @@ -155,6 +155,10 @@ export const RuleActionsAlertsFilterTimeframe: React.FC timeframe.hours.start.split(':').map(Number), [timeframe]); const [endH, endM] = useMemo(() => timeframe.hours.end.split(':').map(Number), [timeframe]); + const timezoneLabel = i18n.translate( + 'responseOpsRuleForm.ruleForm.ruleActionsAlertsFilterTimeframeTimezoneLabel', + { defaultMessage: 'Timezone' } + ); return ( <> @@ -219,10 +223,8 @@ export const RuleActionsAlertsFilterTimeframe: React.FC { {showSelectActionGroup && ( + {ACTION_GROUP_RUN_WHEN} } data-test-subj="ruleActionsSettingsSelectActionGroup" fullWidth id={`addNewActionConnectorActionGroup-${action.actionTypeId}`} + aria-labelledby={`addNewActionConnectorActionGroupLabel-${action.actionTypeId}`} options={actionGroups.map(({ id: value, name }) => ({ value, ['data-test-subj']: `addNewActionConnectorActionGroup-${value}`, diff --git a/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/components/pagination.tsx b/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/components/pagination.tsx index 32f2b9c0f0dbc..103757341141f 100644 --- a/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/components/pagination.tsx +++ b/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/components/pagination.tsx @@ -14,6 +14,8 @@ import useObservable from 'react-use/lib/useObservable'; import { useBehaviorSubject } from '@kbn/shared-ux-file-util'; import { useFilePickerContext } from '../context'; +import { i18nTexts } from '../i18n_texts'; + export const Pagination: FunctionComponent = () => { const { state } = useFilePickerContext(); const page = useBehaviorSubject(state.currentPage$); @@ -29,6 +31,7 @@ export const Pagination: FunctionComponent = () => { onPageClick={isUploading ? () => {} : state.setPage} pageCount={pageCount} activePage={page} + aria-label={i18nTexts.filesPagination} /> ); }; diff --git a/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/i18n_texts.ts b/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/i18n_texts.ts index ff5ada2a66ecb..313a6db93a8c5 100644 --- a/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/i18n_texts.ts +++ b/src/platform/packages/shared/shared-ux/file/file_picker/impl/src/i18n_texts.ts @@ -60,6 +60,9 @@ export const i18nTexts = { cancel: i18n.translate('sharedUXPackages.filePicker.cancel', { defaultMessage: 'Cancel', }), + filesPagination: i18n.translate('sharedUXPackages.filePicker.paginationControls.ariaLabel', { + defaultMessage: 'Files pagination', + }), deleteFileQuestion: (fileName: string) => i18n.translate('sharedUXPackages.filePicker.deleteFileQuestion', { defaultMessage: 'Are you sure you want to delete "{fileName}"?', diff --git a/src/platform/plugins/private/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap b/src/platform/plugins/private/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap index c9942230390ef..2872e52f065e8 100644 --- a/src/platform/plugins/private/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap +++ b/src/platform/plugins/private/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap @@ -63,6 +63,7 @@ exports[`Apply and Cancel change btns enabled when there are changes 1`] = ` aria-expanded="false" aria-haspopup="listbox" aria-invalid="false" + aria-label="Select..." autocomplete="off" class="euiComboBox__input emotion-euiComboBoxInput" data-test-subj="comboBoxSearchInput" @@ -227,6 +228,7 @@ exports[`Clear btns enabled when there are values 1`] = ` aria-expanded="false" aria-haspopup="listbox" aria-invalid="false" + aria-label="Select..." autocomplete="off" class="euiComboBox__input emotion-euiComboBoxInput" data-test-subj="comboBoxSearchInput" @@ -392,6 +394,7 @@ exports[`Renders list control 1`] = ` aria-expanded="false" aria-haspopup="listbox" aria-invalid="false" + aria-label="Select..." autocomplete="off" class="euiComboBox__input emotion-euiComboBoxInput" data-test-subj="comboBoxSearchInput" diff --git a/src/platform/plugins/private/input_control_vis/public/components/vis/list_control.tsx b/src/platform/plugins/private/input_control_vis/public/components/vis/list_control.tsx index 1c34b058e39c8..59a2466ead62b 100644 --- a/src/platform/plugins/private/input_control_vis/public/components/vis/list_control.tsx +++ b/src/platform/plugins/private/input_control_vis/public/components/vis/list_control.tsx @@ -137,12 +137,15 @@ class ListControlUi extends PureComponent ( iconType="popout" href={getDocLinks().links.aggs.date_histogram} target="_blank" + aria-label={i18n.translate( + 'visTypeVega.deprecatedHistogramIntervalInfo.dateHistogramDocAriaLabel', + { defaultMessage: 'Open date histogram documentation' } + )} /> ), }} diff --git a/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx index 4beeb3dd29b98..c37714c2db465 100644 --- a/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx +++ b/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx @@ -283,6 +283,9 @@ export const SettingsEditor = (props: Props) => { inputDisplay: host, }))} valueOfSelected={selectedHost || (availableHosts.length > 0 ? availableHosts[0] : '')} + aria-label={i18n.translate('console.settingsPage.elasticsearchHostLabel', { + defaultMessage: 'Elasticsearch host', + })} onChange={(value) => setSelectedHost(value)} /> @@ -381,6 +384,9 @@ export const SettingsEditor = (props: Props) => { compressed options={intervalOptions} valueOfSelected={pollInterval.toString()} + aria-label={i18n.translate('console.settingsPage.refreshingDataLabel', { + defaultMessage: 'Refresh frequency', + })} onChange={onPollingIntervalChange} /> diff --git a/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap b/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap index 403dce51c972a..8fec78c40e631 100644 --- a/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap +++ b/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap @@ -195,6 +195,7 @@ exports[`IndicesList should change per page 1`] = ` > @@ -686,6 +687,7 @@ exports[`IndicesList updating props should render all new indices 1`] = ` > diff --git a/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx b/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx index cc311c72667eb..b5c0b08a4eb85 100644 --- a/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx +++ b/src/platform/plugins/shared/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx @@ -25,6 +25,7 @@ import { EuiPopover, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { Pager } from '@elastic/eui'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -131,7 +132,14 @@ export class IndicesList extends React.Component 1 ? ( - + ) : null; diff --git a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx index 2cf0260c05cdf..de00cc71ec7f2 100644 --- a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx +++ b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx @@ -49,12 +49,14 @@ export const ColorRow = ({ const { range, regex, boolean, text, background } = color; const getInputByFieldType = () => { - if (fieldType === 'boolean') + if (fieldType === 'boolean') { + const booleanLabel = i18n.translate('indexPatternFieldEditor.color.booleanLabel', { + defaultMessage: 'Boolean', + }); return ( ); - if (fieldType === 'string') + } + if (fieldType === 'string') { + const patternLabel = i18n.translate('indexPatternFieldEditor.color.patternLabel', { + defaultMessage: 'Pattern', + }); return ( { @@ -89,11 +94,14 @@ export const ColorRow = ({ }} /> ); + } + const rangeLabel = i18n.translate('indexPatternFieldEditor.color.rangeLabel', { + defaultMessage: 'Range', + }); return ( { diff --git a/src/platform/plugins/shared/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx b/src/platform/plugins/shared/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx index 433dac4f2069f..b9d6aab4348ee 100644 --- a/src/platform/plugins/shared/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx +++ b/src/platform/plugins/shared/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx @@ -29,6 +29,9 @@ interface Props { export function ShardFailureFlyout({ failures, onClose }: Props) { const flyoutTitleId = useGeneratedHtmlId(); + const backButtonLabel = i18n.translate('inspector.requests.clusters.shards.backButtonLabel', { + defaultMessage: 'Back', + }); return (

- + {i18n.translate('inspector.requests.clusters.shards.flyoutTitle', { defaultMessage: '{failedShardCount} failed {failedShardCount, plural, one {shard} other {shards}}', @@ -56,9 +59,7 @@ export function ShardFailureFlyout({ failures, onClose }: Props) { - {i18n.translate('inspector.requests.clusters.shards.backButtonLabel', { - defaultMessage: 'Back', - })} + {backButtonLabel} diff --git a/src/platform/plugins/shared/inspector/public/views/requests/components/request_selector.tsx b/src/platform/plugins/shared/inspector/public/views/requests/components/request_selector.tsx index 9a3e029dd631f..70d68dd2495a9 100644 --- a/src/platform/plugins/shared/inspector/public/views/requests/components/request_selector.tsx +++ b/src/platform/plugins/shared/inspector/public/views/requests/components/request_selector.tsx @@ -63,16 +63,20 @@ export class RequestSelector extends Component { value: item.id, }; }); + const requestLabel = i18n.translate('inspector.requests.requestLabel', { + defaultMessage: 'Request', + }); return ( this.onIndexChanged(id, e)} diff --git a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx index 5d6c72bb91bf0..d6405d2789af6 100644 --- a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx +++ b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx @@ -42,6 +42,10 @@ export const OverwriteModal = ({ conflict, onFinish, allowedTypes }: OverwriteMo const [destinationId, setDestinationId] = useState(initialDestinationId); if (error.type === 'ambiguous_conflict') { + const selectControlLabel = i18n.translate( + 'savedObjectsManagement.objectsTable.overwriteModal.selectControlLabel', + { defaultMessage: 'Object ID' } + ); const selectProps = { options: error.destinations.map((destination) => { const header = destination.title ?? `${type} [id=${destination.id}]`; @@ -76,10 +80,8 @@ export const OverwriteModal = ({ conflict, onFinish, allowedTypes }: OverwriteMo options={selectProps.options} valueOfSelected={destinationId} onChange={selectProps.onChange} - prepend={i18n.translate( - 'savedObjectsManagement.objectsTable.overwriteModal.selectControlLabel', - { defaultMessage: 'Object ID' } - )} + prepend={selectControlLabel} + aria-label={selectControlLabel} hasDividers fullWidth compressed diff --git a/src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_flyout/doc_viewer_flyout.tsx b/src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_flyout/doc_viewer_flyout.tsx index 8594c6448dae0..b6ac455558c73 100644 --- a/src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_flyout/doc_viewer_flyout.tsx +++ b/src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_flyout/doc_viewer_flyout.tsx @@ -305,7 +305,7 @@ export function UnifiedDocViewerFlyout({ setCurrentPageNumber(activePage)} compressed + aria-label={i18n.translate( + 'unifiedSearch.search.searchBar.savedQueryPaginationAriaLabel', + { + defaultMessage: 'Saved queries pagination', + } + )} /> @@ -612,30 +618,27 @@ const ListTitle = ({ queryBarMenuRef }: { queryBarMenuRef: RefObject().services; const canEditSavedObjects = application.capabilities.savedObjectsManagement.edit; + const tooltipContent = i18n.translate( + 'unifiedSearch.search.searchBar.savedQueryPopoverManageLabel', + { + defaultMessage: 'Manage queries', + } + ); + return ( + ) diff --git a/src/platform/plugins/shared/vis_types/timeseries/public/application/components/aggs/field_select/field_select_item.tsx b/src/platform/plugins/shared/vis_types/timeseries/public/application/components/aggs/field_select/field_select_item.tsx index 5a83727fad37c..78a4ff3457f41 100644 --- a/src/platform/plugins/shared/vis_types/timeseries/public/application/components/aggs/field_select/field_select_item.tsx +++ b/src/platform/plugins/shared/vis_types/timeseries/public/application/components/aggs/field_select/field_select_item.tsx @@ -50,6 +50,7 @@ export function FieldSelectItem({ { collectionActions.handleChange(this.props, { ...model, ...part }); }; const htmlId = htmlIdGenerator(model.id); + const metricSelectId = htmlId('ifMetricIs'); + const metricLabelId = htmlId('ifMetricIsLabel'); const selectedOperatorOption = operatorOptions.find( (option) => model.operator === option.value ); @@ -216,7 +218,7 @@ class ColorRulesUI extends Component { {secondary} - + { should render and match a snapshot 1`] = ` ); } diff --git a/src/platform/plugins/shared/vis_types/timeseries/public/application/components/panel_config/markdown.tsx b/src/platform/plugins/shared/vis_types/timeseries/public/application/components/panel_config/markdown.tsx index 8561331241eba..4a16c048459ee 100644 --- a/src/platform/plugins/shared/vis_types/timeseries/public/application/components/panel_config/markdown.tsx +++ b/src/platform/plugins/shared/vis_types/timeseries/public/application/components/panel_config/markdown.tsx @@ -87,6 +87,8 @@ export class MarkdownPanelConfig extends Component< const selectedAlignOption = alignOptions.find((option) => { return model.markdown_vertical_align === option.value; }); + const verticalAlignmentSelectId = htmlId('valign'); + const verticalAlignmentLabelId = htmlId('valignLabel'); let view; if (selectedTab === PANEL_CONFIG_TABS.MARKDOWN) { view = ( @@ -229,7 +231,7 @@ export class MarkdownPanelConfig extends Component< - + model.tooltip_mode === option.value ); + const tooltipModeId = htmlId('tooltipMode'); + const tooltipModeLabelId = `${tooltipModeId}Label`; + const legendPositionId = htmlId('legendPos'); + const legendPositionLabelId = `${legendPositionId}Label`; let view; if (selectedTab === PANEL_CONFIG_TABS.DATA) { @@ -370,7 +374,7 @@ export class TimeseriesPanelConfig extends Component< - + - + ); }; diff --git a/x-pack/examples/alerting_example/public/alert_types/astros.tsx b/x-pack/examples/alerting_example/public/alert_types/astros.tsx index 0ef9b606f313c..a1520b7b4453f 100644 --- a/x-pack/examples/alerting_example/public/alert_types/astros.tsx +++ b/x-pack/examples/alerting_example/public/alert_types/astros.tsx @@ -177,6 +177,12 @@ export const PeopleinSpaceExpression: React.FunctionComponentWhen the People in { setRuleParams('craft', event.target.value); @@ -226,6 +232,12 @@ export const PeopleinSpaceExpression: React.FunctionComponent { setRuleParams('op', event.target.value); diff --git a/x-pack/examples/alerting_example/public/components/page.tsx b/x-pack/examples/alerting_example/public/components/page.tsx index bd5448172ffab..9bee0c7838129 100644 --- a/x-pack/examples/alerting_example/public/components/page.tsx +++ b/x-pack/examples/alerting_example/public/components/page.tsx @@ -6,6 +6,7 @@ */ import React from 'react'; +import { i18n } from '@kbn/i18n'; import type { RouteComponentProps } from 'react-router-dom'; import { withRouter } from 'react-router-dom'; @@ -52,7 +53,13 @@ export const Page = withRouter(({ title, crumb, children, isHome = false, histor - + {children} diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx b/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx index 365ca3618a842..a7bd055df86b8 100644 --- a/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx @@ -11,6 +11,7 @@ import type { InlineEditLensEmbeddableContext, } from '@kbn/lens-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; +import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { EuiFlexGroup, @@ -139,6 +140,9 @@ export const LensChart = (props: { { props?.setPanelActive?.(props.isESQL ? 1 : 2); if (triggerOptions) { diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json b/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json index 104bfbeeacd7e..75e88f1c8efe3 100644 --- a/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json +++ b/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json @@ -22,5 +22,6 @@ "@kbn/lens-embeddable-utils", "@kbn/ui-theme", "@kbn/react-kibana-context-render", + "@kbn/i18n", ] } diff --git a/x-pack/examples/triggers_actions_ui_example/public/components/page.tsx b/x-pack/examples/triggers_actions_ui_example/public/components/page.tsx index d464549d5d8d4..32d232dfe57ff 100644 --- a/x-pack/examples/triggers_actions_ui_example/public/components/page.tsx +++ b/x-pack/examples/triggers_actions_ui_example/public/components/page.tsx @@ -6,6 +6,7 @@ */ import React from 'react'; +import { i18n } from '@kbn/i18n'; import { useHistory } from 'react-router-dom'; import { EuiPageTemplate, EuiTitle, EuiBreadcrumbs } from '@elastic/eui'; @@ -45,7 +46,13 @@ export const Page: React.FC = (props) => {

{title}

- + {children} diff --git a/x-pack/platform/packages/shared/ingest-pipelines/src/components/pipeline_structure_tree/pipeline_structure_tree.tsx b/x-pack/platform/packages/shared/ingest-pipelines/src/components/pipeline_structure_tree/pipeline_structure_tree.tsx index 682692a9e1164..958052ff3cdf6 100644 --- a/x-pack/platform/packages/shared/ingest-pipelines/src/components/pipeline_structure_tree/pipeline_structure_tree.tsx +++ b/x-pack/platform/packages/shared/ingest-pipelines/src/components/pipeline_structure_tree/pipeline_structure_tree.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiTreeView, useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { PipelineTreeNode } from './types'; import { createTreeNodesFromPipelines } from './create_tree_nodes'; @@ -63,7 +64,14 @@ export const PipelineStructureTree = React.memo(
)} - + ); diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/knowledge_base/select_model_and_install_knowledge_base.tsx b/x-pack/platform/packages/shared/kbn-ai-assistant/src/knowledge_base/select_model_and_install_knowledge_base.tsx index c1c6062a4bd58..dce787151bafe 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/knowledge_base/select_model_and_install_knowledge_base.tsx +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/knowledge_base/select_model_and_install_knowledge_base.tsx @@ -150,6 +150,9 @@ export function SelectModelAndInstallKnowledgeBase({ onChange={(value) => setSelectedInferenceId(value)} disabled={isInstalling} data-test-subj="observabilityAiAssistantKnowledgeBaseModelDropdown" + aria-label={i18n.translate('xpack.aiAssistant.knowledgeBase.modelSelectAriaLabel', { + defaultMessage: 'Default language model', + })} />
diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx index f57ba850dc1f8..9de89813b768d 100644 --- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx @@ -60,6 +60,12 @@ export const SetupKnowledgeBaseButton: React.FC = React.memo(({ display, iconType="refresh" onClick={onInstallKnowledgeBase} size="xs" + aria-label={i18n.translate( + 'xpack.elasticAssistant.knowledgeBase.installKnowledgeBaseButton', + { + defaultMessage: 'Setup Knowledge Base', + } + )} css={css` margin-left: 8px; `} diff --git a/x-pack/platform/packages/shared/kbn-search-index-documents/components/document_list.tsx b/x-pack/platform/packages/shared/kbn-search-index-documents/components/document_list.tsx index 01a03e758bd00..db63e6ec755db 100644 --- a/x-pack/platform/packages/shared/kbn-search-index-documents/components/document_list.tsx +++ b/x-pack/platform/packages/shared/kbn-search-index-documents/components/document_list.tsx @@ -124,7 +124,7 @@ export const DocumentList: React.FC = ({ aria-label={i18n.translate( 'xpack.searchIndexDocuments.documentList.paginationAriaLabel', { - defaultMessage: 'Pagination for document list', + defaultMessage: 'Document lists pagination', } )} pageCount={pageCount} diff --git a/x-pack/platform/packages/shared/kbn-search-index-documents/components/documents_list.test.tsx b/x-pack/platform/packages/shared/kbn-search-index-documents/components/documents_list.test.tsx index 880c843dbaea5..ad57023e230f0 100644 --- a/x-pack/platform/packages/shared/kbn-search-index-documents/components/documents_list.test.tsx +++ b/x-pack/platform/packages/shared/kbn-search-index-documents/components/documents_list.test.tsx @@ -32,7 +32,7 @@ describe('DocumentList', () => { ); expect(container.querySelector('[data-testId="search-index-documents-result"]')).toBeNull(); - expect(container.querySelector('[aria-label="Pagination for document list"]')).not.toBeNull(); + expect(container.querySelector('[aria-label="Document lists pagination"]')).not.toBeNull(); }); test('renders documents when results when there is data and mappings', () => { const values = { diff --git a/x-pack/platform/packages/shared/kbn-search-index-documents/components/result/editable_result.tsx b/x-pack/platform/packages/shared/kbn-search-index-documents/components/result/editable_result.tsx index 755480ff6db49..5a9059817fc5d 100644 --- a/x-pack/platform/packages/shared/kbn-search-index-documents/components/result/editable_result.tsx +++ b/x-pack/platform/packages/shared/kbn-search-index-documents/components/result/editable_result.tsx @@ -56,6 +56,12 @@ export const EditableResult: React.FC = ({ const [isExpanded, setIsExpanded] = React.useState(false); const [documentId, setDocumentId] = React.useState(initialDocId); const [index, setIndex] = React.useState(initialIndex); + const selectIndexPlaceholder = i18n.translate( + 'xpack.sharedKbnSearchIndexDocuments.editableResult.selectIndexPlaceholder', + { + defaultMessage: 'Select index', + } + ); return ( @@ -86,12 +92,8 @@ export const EditableResult: React.FC = ({ ({ label: i, value: 'index' }))} isClearable={false} @@ -128,7 +130,21 @@ export const EditableResult: React.FC = ({ size="xs" iconType={isExpanded ? 'fold' : 'unfold'} color="primary" - aria-label={isExpanded ? 'Collapse fields' : 'Expand fields'} + aria-label={ + isExpanded + ? i18n.translate( + 'xpack.sharedKbnSearchIndexDocuments.editableResult.collapseFieldsButtonAriaLabel', + { + defaultMessage: 'Collapse fields', + } + ) + : i18n.translate( + 'xpack.sharedKbnSearchIndexDocuments.editableResult.expandFieldsButtonAriaLabel', + { + defaultMessage: 'Expand fields', + } + ) + } onClick={() => { if (onExpand && !isExpanded) { onExpand(); @@ -143,7 +159,12 @@ export const EditableResult: React.FC = ({ iconType="trash" color="danger" onClick={onDeleteDocument} - aria-label="Delete document" + aria-label={i18n.translate( + 'xpack.sharedKbnSearchIndexDocuments.editableResult.deleteDocumentButtonAriaLabel', + { + defaultMessage: 'Delete document', + } + )} data-test-subj="editableResultDeleteButton" /> diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/error/components/error/error.tsx b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/error/components/error/error.tsx index 843e42fd55183..1db4ac46f5fe6 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/error/components/error/error.tsx +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/error/components/error/error.tsx @@ -34,7 +34,14 @@ export const Error: FC = ({ payload, onClose }) => { const message = payload.error?.message; const CloseIconButton = () => ( - + ); return ( diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/component/dropdown_filter.tsx b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/component/dropdown_filter.tsx index b550864ca936e..715ca5f0a827f 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/component/dropdown_filter.tsx +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/component/dropdown_filter.tsx @@ -81,6 +81,9 @@ export const DropdownFilter: FunctionComponent = ({ options={dropdownOptions} fullWidth compressed + aria-label={i18n.translate('xpack.canvas.renderer.dropdownFilter.selectAriaLabel', { + defaultMessage: 'Dropdown filter', + })} /> ); diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/index.js b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/index.js index 14ae4db1cb127..b6a9e4d62b8d4 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/index.js +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/index.js @@ -7,6 +7,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import PropTypes from 'prop-types'; +import { i18n } from '@kbn/i18n'; import { EuiSelect, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { sortBy } from 'lodash'; import { getType } from '@kbn/interpreter'; @@ -139,6 +140,9 @@ const DatacolumnArgInput = ({ options={[firstColumnOption, ...options]} value={mathValue.column} onChange={onChangeColumn} + aria-label={i18n.translate('xpack.canvas.datacolumn.columnSelectAriaLabel', { + defaultMessage: 'Column', + })} />
diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/simple_math_function.js b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/simple_math_function.js index 5fd859a789d85..8f9ff159a50a3 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/simple_math_function.js +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/datacolumn/simple_math_function.js @@ -7,6 +7,7 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { i18n } from '@kbn/i18n'; import { EuiSelect } from '@elastic/eui'; import { ArgumentStrings } from '../../../../i18n'; @@ -29,7 +30,17 @@ export const SimpleMathFunction = ({ onChange, value, onlymath }) => { options.unshift({ text: strings.getOptionValue(), value: '' }); } - return ; + return ( + + ); }; SimpleMathFunction.propTypes = { diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/filter_group.js b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/filter_group.js index 46afba1643a82..5640760f4b66c 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/filter_group.js +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/filter_group.js @@ -16,6 +16,7 @@ import { EuiFlexGroup, EuiFlexItem, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { templateFromReactComponent } from '../../../public/lib/template_from_react_component'; import { ArgumentStrings } from '../../../i18n'; @@ -81,6 +82,9 @@ const FilterGroupInput = ({ onValueChange, argValue, argId, filterGroups }) => { value={argValue || ''} options={choices} onChange={handleSelectGroup} + aria-label={i18n.translate('xpack.canvas.filterGroup.select.ariaLabel', { + defaultMessage: 'Filter group', + })} /> setAddMode(!addMode)} flush="left"> diff --git a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/vis_dimension.tsx b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/vis_dimension.tsx index 2a1db1ff4f9af..a61495559f921 100644 --- a/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/vis_dimension.tsx +++ b/x-pack/platform/plugins/private/canvas/canvas_plugin_src/uis/arguments/vis_dimension.tsx @@ -8,6 +8,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import type { EuiSelectProps } from '@elastic/eui'; import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSelect } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { DatatableColumn, ExpressionAstExpression } from '@kbn/expressions-plugin/common'; import { templateFromReactComponent } from '../../../public/lib/template_from_react_component'; import { ArgumentStrings } from '../../../i18n'; @@ -77,7 +78,18 @@ const VisDimensionArgInput: React.FC = ({ return ( - + {confirm && ( diff --git a/x-pack/platform/plugins/private/canvas/public/components/datatable/datatable.tsx b/x-pack/platform/plugins/private/canvas/public/components/datatable/datatable.tsx index 0525f6d6aa23d..391d55590e178 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/datatable/datatable.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/datatable/datatable.tsx @@ -8,6 +8,7 @@ import type { FC } from 'react'; import React from 'react'; import PropTypes from 'prop-types'; +import { i18n } from '@kbn/i18n'; import { EuiIcon, EuiPagination } from '@elastic/eui'; import moment from 'moment'; import { Paginate } from '../paginate'; @@ -102,7 +103,14 @@ export const Datatable: FC = ({ {paginate && (
- +
)} diff --git a/x-pack/platform/plugins/private/canvas/public/components/es_data_view_select/es_data_view_select.component.tsx b/x-pack/platform/plugins/private/canvas/public/components/es_data_view_select/es_data_view_select.component.tsx index 9da7092559390..126726da062d8 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/es_data_view_select/es_data_view_select.component.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/es_data_view_select/es_data_view_select.component.tsx @@ -8,6 +8,7 @@ import type { FocusEventHandler } from 'react'; import React from 'react'; import { EuiComboBox } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { DataViewListItem } from '@kbn/data-views-plugin/common'; export interface ESDataViewSelectProps { @@ -62,6 +63,9 @@ export const ESDataViewSelect: React.FunctionComponent = onCreateOption={(input) => onChange(input || defaultOption.value)} compressed data-test-subj="canvasDataViewSelect" + aria-label={i18n.translate('xpack.canvas.esDataViewSelect.comboBoxAriaLabel', { + defaultMessage: 'Data view', + })} /> ); }; diff --git a/x-pack/platform/plugins/private/canvas/public/components/es_field_select/es_field_select.tsx b/x-pack/platform/plugins/private/canvas/public/components/es_field_select/es_field_select.tsx index 50ecce2d564d5..ed0633f2d472c 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/es_field_select/es_field_select.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/es_field_select/es_field_select.tsx @@ -7,6 +7,7 @@ import type { FocusEventHandler } from 'react'; import React from 'react'; +import { i18n } from '@kbn/i18n'; import { EuiComboBox } from '@elastic/eui'; export interface ESFieldSelectProps { @@ -43,6 +44,9 @@ export const ESFieldSelect: React.FunctionComponent = ({ singleSelection={{ asPlainText: true }} isClearable={false} compressed + aria-label={i18n.translate('xpack.canvas.esFieldSelect.fieldComboBox.ariaLabel', { + defaultMessage: 'Field', + })} /> ); }; diff --git a/x-pack/platform/plugins/private/canvas/public/components/es_fields_select/es_fields_select.component.tsx b/x-pack/platform/plugins/private/canvas/public/components/es_fields_select/es_fields_select.component.tsx index e010afd4c02b7..0868c386875b4 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/es_fields_select/es_fields_select.component.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/es_fields_select/es_fields_select.component.tsx @@ -7,6 +7,7 @@ import type { FocusEventHandler } from 'react'; import React from 'react'; +import { i18n } from '@kbn/i18n'; import { EuiComboBox } from '@elastic/eui'; export interface ESFieldsSelectProps { @@ -37,6 +38,9 @@ export const ESFieldsSelect: React.FunctionComponent = ({ onFocus={onFocus} onBlur={onBlur} compressed + aria-label={i18n.translate('xpack.canvas.esFieldsSelect.comboBoxAriaLabel', { + defaultMessage: 'Elasticsearch fields', + })} /> ); }; diff --git a/x-pack/platform/plugins/private/canvas/public/components/font_picker/font_picker.tsx b/x-pack/platform/plugins/private/canvas/public/components/font_picker/font_picker.tsx index 51e40fc626e0c..35ee166f95464 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/font_picker/font_picker.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/font_picker/font_picker.tsx @@ -9,6 +9,7 @@ import type { FC } from 'react'; import React from 'react'; import PropTypes from 'prop-types'; import { EuiSuperSelect } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { FontValue } from '../../../common/lib/fonts'; import { fonts } from '../../../common/lib/fonts'; @@ -42,6 +43,9 @@ export const FontPicker: FC = ({ value, onSelect }) => { }))} valueOfSelected={value} onChange={(newValue: DisplayedFont['value']) => onSelect && onSelect(newValue)} + aria-label={i18n.translate('xpack.canvas.fontPicker.fontFamilyAriaLabel', { + defaultMessage: 'Font family', + })} /> ); }; diff --git a/x-pack/platform/plugins/private/canvas/public/components/format_select/format_select.tsx b/x-pack/platform/plugins/private/canvas/public/components/format_select/format_select.tsx index b7bc238d737fc..69936850e5815 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/format_select/format_select.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/format_select/format_select.tsx @@ -9,6 +9,7 @@ import type { ChangeEvent } from 'react'; import React, { Fragment, PureComponent } from 'react'; import PropTypes from 'prop-types'; import { EuiSelect, EuiSpacer, EuiFieldText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; interface Props { /** The ID of the argument form */ @@ -74,6 +75,9 @@ export class FormatSelect extends PureComponent { id={argId} value={isCustomFormat ? 'custom' : argValue} options={this._options} + aria-label={i18n.translate('xpack.canvas.formatSelect.select.ariaLabel', { + defaultMessage: 'Format options', + })} onChange={this._handleSelectChange} /> {isCustomFormat && ( diff --git a/x-pack/platform/plugins/private/canvas/public/components/text_style_picker/text_style_picker.tsx b/x-pack/platform/plugins/private/canvas/public/components/text_style_picker/text_style_picker.tsx index 9fe6d49faf3da..977490567c563 100644 --- a/x-pack/platform/plugins/private/canvas/public/components/text_style_picker/text_style_picker.tsx +++ b/x-pack/platform/plugins/private/canvas/public/components/text_style_picker/text_style_picker.tsx @@ -37,6 +37,10 @@ const strings = { i18n.translate('xpack.canvas.textStylePicker.fontColorLabel', { defaultMessage: 'Font Color', }), + getFontSizeLabel: () => + i18n.translate('xpack.canvas.textStylePicker.fontSizeLabel', { + defaultMessage: 'Size', + }), getStyleBoldOption: () => i18n.translate('xpack.canvas.textStylePicker.styleBoldOption', { defaultMessage: 'Bold', @@ -177,7 +181,8 @@ export const TextStylePicker: FC = ({ value={size} onChange={(e) => doChange('size', Number(e.target.value))} options={fontSizes.map((fontSize) => ({ text: String(fontSize), value: fontSize }))} - prepend="Size" + prepend={strings.getFontSizeLabel()} + aria-label={strings.getFontSizeLabel()} />
diff --git a/x-pack/platform/plugins/private/graph/public/components/control_panel/drill_down_icon_links.tsx b/x-pack/platform/plugins/private/graph/public/components/control_panel/drill_down_icon_links.tsx index 26d469297eec7..4371c57eac90d 100644 --- a/x-pack/platform/plugins/private/graph/public/components/control_panel/drill_down_icon_links.tsx +++ b/x-pack/platform/plugins/private/graph/public/components/control_panel/drill_down_icon_links.tsx @@ -41,12 +41,13 @@ export const DrillDownIconLinks = ({ return ( - + : ''} size="xs" isDisabled={hasNodes} onClick={onUrlTemplateClick} + aria-label={cur.description} /> diff --git a/x-pack/platform/plugins/private/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap b/x-pack/platform/plugins/private/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap index 0ef4d2608fbef..560673c018f87 100644 --- a/x-pack/platform/plugins/private/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap +++ b/x-pack/platform/plugins/private/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap @@ -173,6 +173,7 @@ Default value: 1024mb (1g)" this.handleMaxByteUnitChange(e.target.value)} options={PIPELINE_EDITOR.UNITS} value={this.state.maxBytesUnit} + aria-label={i18n.translate( + 'xpack.logstash.pipelineEditor.queueMaxBytesUnitsAriaLabel', + { + defaultMessage: 'Queue max bytes units', + } + )} /> { } )} onChange={({ target }) => onChangePipelineHash(target.value)} + aria-label={i18n.translate( + 'xpack.monitoring.logstashNavigation.pipelineVersionSelectLabel', + { + defaultMessage: 'Pipeline version', + } + )} /> diff --git a/x-pack/platform/plugins/private/translations/translations/de-DE.json b/x-pack/platform/plugins/private/translations/translations/de-DE.json index fbfdec3d70b5f..d6d2d2cab4353 100644 --- a/x-pack/platform/plugins/private/translations/translations/de-DE.json +++ b/x-pack/platform/plugins/private/translations/translations/de-DE.json @@ -40341,7 +40341,6 @@ "xpack.slo.sloGroupConfiguration.statusLabel": "Status", "xpack.slo.sloGroupConfiguration.tagsLabel": "Tags", "xpack.slo.sLOGroupingValueSelector.copyButton.label": "Wert in die Zwischenablage kopieren", - "xpack.slo.sLOGroupingValueSelector.copyButton.noValueLabel": "Wählen Sie einen Wert aus, bevor", "xpack.slo.sLOGroupingValueSelector.placeholder": "Wählen Sie einen Gruppenwert aus", "xpack.slo.sloIndicatorTypeBadge.clickToFilter": "Klicken Sie, um nach {indicatorType} SLOs zu filtern", "xpack.slo.sloIndicatorTypeBadge.exploreInApm": "{service}-Details anzeigen", diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index e948b28b9510e..508fe7d93ab28 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -40614,7 +40614,6 @@ "xpack.slo.sloGroupConfiguration.statusLabel": "Statut", "xpack.slo.sloGroupConfiguration.tagsLabel": "Balises", "xpack.slo.sLOGroupingValueSelector.copyButton.label": "Copier la valeur sur le presse-papiers", - "xpack.slo.sLOGroupingValueSelector.copyButton.noValueLabel": "Sélectionner une valeur avant", "xpack.slo.sLOGroupingValueSelector.placeholder": "Sélectionner une valeur de groupe", "xpack.slo.sloIndicatorTypeBadge.clickToFilter": "Cliquer pour filtrer par SLO {indicatorType}", "xpack.slo.sloIndicatorTypeBadge.exploreInApm": "Voir les détails de {service}", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index e05354920ca86..9c69bb947a53e 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -40660,7 +40660,6 @@ "xpack.slo.sloGroupConfiguration.statusLabel": "ステータス", "xpack.slo.sloGroupConfiguration.tagsLabel": "タグ", "xpack.slo.sLOGroupingValueSelector.copyButton.label": "値をクリップボードにコピー", - "xpack.slo.sLOGroupingValueSelector.copyButton.noValueLabel": "前の値を選択", "xpack.slo.sLOGroupingValueSelector.placeholder": "グループ値を選択", "xpack.slo.sloIndicatorTypeBadge.clickToFilter": "クリックすると、{indicatorType} SLOでフィルタリングします", "xpack.slo.sloIndicatorTypeBadge.exploreInApm": "{service}詳細を表示", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index 296278f4df3aa..bd6cdc7d1cb89 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -40647,7 +40647,6 @@ "xpack.slo.sloGroupConfiguration.statusLabel": "状态", "xpack.slo.sloGroupConfiguration.tagsLabel": "标签", "xpack.slo.sLOGroupingValueSelector.copyButton.label": "将值复制到剪贴板", - "xpack.slo.sLOGroupingValueSelector.copyButton.noValueLabel": "选择之前的值", "xpack.slo.sLOGroupingValueSelector.placeholder": "选择分组值", "xpack.slo.sloIndicatorTypeBadge.clickToFilter": "单击以按 {indicatorType} SLO 筛选", "xpack.slo.sloIndicatorTypeBadge.exploreInApm": "查看 {service} 详情", diff --git a/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx index 3aa8f92283986..69b215f7ddbdd 100644 --- a/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx +++ b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx @@ -27,6 +27,12 @@ export const EmailActionFields: React.FunctionComponent = ({ }) => { const { to, subject, body } = action; const toOptions = to ? to.map((label) => ({ label })) : []; + const toEmailAddressLabel = i18n.translate( + 'xpack.watcher.sections.watchEdit.threshold.emailAction.recipientTextFieldLabel', + { + defaultMessage: 'To email address', + } + ); return ( @@ -36,16 +42,12 @@ export const EmailActionFields: React.FunctionComponent = ({ fullWidth errors={errors} isShowingErrors={hasErrors && to !== undefined} - label={i18n.translate( - 'xpack.watcher.sections.watchEdit.threshold.emailAction.recipientTextFieldLabel', - { - defaultMessage: 'To email address', - } - )} + label={toEmailAddressLabel} > { diff --git a/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx index bf1db047a86dd..9d37eef59802e 100644 --- a/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx +++ b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx @@ -502,6 +502,12 @@ export const ThresholdWatchEdit = ({ pageTitle }: { pageTitle: string }) => { { setWatchProperty('aggType', e.target.value); setAggTypePopoverOpen(false); @@ -652,6 +658,12 @@ export const ThresholdWatchEdit = ({ pageTitle }: { pageTitle: string }) => { { setWatchProperty('termSize', null); setWatchProperty('termField', null); @@ -757,6 +769,12 @@ export const ThresholdWatchEdit = ({ pageTitle }: { pageTitle: string }) => { { setWatchProperty('thresholdComparator', e.target.value); }} @@ -864,6 +882,12 @@ export const ThresholdWatchEdit = ({ pageTitle }: { pageTitle: string }) => { { setWatchProperty('timeWindowUnit', e.target.value); }} diff --git a/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/charts_grid.tsx b/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/charts_grid.tsx index 1396feabdca5b..3409ad978daec 100644 --- a/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/charts_grid.tsx +++ b/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/charts_grid.tsx @@ -6,6 +6,7 @@ */ import React, { type FC, useMemo, useState, useEffect, useRef, useCallback } from 'react'; +import { i18n } from '@kbn/i18n'; import { EuiBadge, EuiDescriptionList, @@ -204,6 +205,9 @@ export const ChartsGridContainer: FC = ({ changePoints: changeP pageCount={pagination.pageCount} activePage={pagination.activePage} onPageClick={pagination.updatePagination} + aria-label={i18n.translate('xpack.aiops.changePointDetection.paginationAriaLabel', { + defaultMessage: 'Change point detection charts pagination', + })} /> diff --git a/x-pack/platform/plugins/shared/content_connectors/public/components/search_index/access_control_index_selector/access_control_index_selector.tsx b/x-pack/platform/plugins/shared/content_connectors/public/components/search_index/access_control_index_selector/access_control_index_selector.tsx index a859c56ed3ce1..b62f0e142930f 100644 --- a/x-pack/platform/plugins/shared/content_connectors/public/components/search_index/access_control_index_selector/access_control_index_selector.tsx +++ b/x-pack/platform/plugins/shared/content_connectors/public/components/search_index/access_control_index_selector/access_control_index_selector.tsx @@ -75,6 +75,12 @@ export const AccessControlIndexSelector: React.FC = ({ fullWidth={fullWidth} valueOfSelected={valueOfSelected} onChange={onChange} + aria-label={i18n.translate( + 'xpack.contentConnectors.content.searchIndex.documents.selector.indexType.ariaLabel', + { + defaultMessage: 'Index type', + } + )} prepend={ indexSelectorOptions.some((option) => option.error) ? ( diff --git a/x-pack/platform/plugins/shared/dataset_quality/public/components/dataset_quality_details/quality_issue_flyout/degraded_field/possible_mitigations/manual/pipeline_link.tsx b/x-pack/platform/plugins/shared/dataset_quality/public/components/dataset_quality_details/quality_issue_flyout/degraded_field/possible_mitigations/manual/pipeline_link.tsx index 1e1f721e13839..418e9f5d9e865 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/public/components/dataset_quality_details/quality_issue_flyout/degraded_field/possible_mitigations/manual/pipeline_link.tsx +++ b/x-pack/platform/plugins/shared/dataset_quality/public/components/dataset_quality_details/quality_issue_flyout/degraded_field/possible_mitigations/manual/pipeline_link.tsx @@ -92,6 +92,7 @@ export function CreateEditPipelineLink({ iconType="copy" data-test-subj="datasetQualityManualMitigationsPipelineNameCopyButton" onClick={onClickHandler} + aria-label={manualMitigationCustomPipelineCopyPipelineNameAriaText} /> } readOnly={true} diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/components/fleet_server_hosts_form.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/components/fleet_server_hosts_form.tsx index 1920e42551bcc..975c7d9d08508 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/components/fleet_server_hosts_form.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/components/fleet_server_hosts_form.tsx @@ -10,6 +10,7 @@ import { EuiIcon, EuiSpacer, EuiSuperSelect } from '@elastic/eui'; import { EuiText } from '@elastic/eui'; import type { EuiTheme } from '@kbn/kibana-react-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; import { useTheme } from 'styled-components'; import type { FleetServerHost } from '../../../types'; @@ -62,6 +63,9 @@ export const FleetServerHostSelect: React.FunctionComponent diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/form_settings/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/form_settings/index.tsx index 54e77fa70a2dd..74836644ddce3 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/form_settings/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/form_settings/index.tsx @@ -78,6 +78,12 @@ settingComponentRegistry.set(ZodFirstPartyTypeKind.ZodEnum, ({ disabled, ...sett fullWidth disabled={disabled} onChange={handleChange} + aria-label={ + settingsConfig.title ?? + i18n.translate('xpack.fleet.configuredSettings.selectOptionsAriaLabel', { + defaultMessage: 'Settings options', + }) + } options={ settingsConfig.options ? settingsConfig.options diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/debug/components/health_check_panel.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/debug/components/health_check_panel.tsx index b60734769542a..6aa8e7de53a49 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/debug/components/health_check_panel.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/debug/components/health_check_panel.tsx @@ -16,6 +16,7 @@ import { EuiHealth, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { useQuery } from '@tanstack/react-query'; @@ -115,6 +116,12 @@ export const HealthCheckPanel: React.FunctionComponent = () => { { const isDeleteVisible = !downloadSource.is_default && hasAllSettingsPrivileges; + const deleteDownloadSourceLabel = i18n.translate( + 'xpack.fleet.settings.downloadSourceSection.deleteButtonTitle', + { + defaultMessage: 'Delete', + } + ); + const editDownloadSourceLabel = i18n.translate( + 'xpack.fleet.settings.downloadSourceSection.editButtonTitle', + { + defaultMessage: 'Edit', + } + ); return ( {isDeleteVisible && ( deleteDownloadSource(downloadSource)} - title={i18n.translate( - 'xpack.fleet.settings.downloadSourceSection.deleteButtonTitle', - { - defaultMessage: 'Delete', - } - )} + title={deleteDownloadSourceLabel} data-test-subj="editDownloadSourceTable.delete.btn" /> )} diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx index ecf0092fc8b84..9bb7d37a851a6 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx @@ -75,35 +75,42 @@ export const FleetProxiesTable: React.FunctionComponent width: '68px', render: (fleetProxy: FleetProxy) => { const isDeleteVisible = authz.fleet.allSettings && !fleetProxy.is_preconfigured; + const deleteButtonLabel = i18n.translate( + 'xpack.fleet.settings.fleetProxiesTable.deleteButtonTitle', + { + defaultMessage: 'Delete', + } + ); + const editButtonLabel = i18n.translate( + 'xpack.fleet.settings.fleetProxiesTable.editButtonTitle', + { + defaultMessage: 'Edit', + } + ); return ( {isDeleteVisible && ( deleteFleetProxy(fleetProxy)} - title={i18n.translate( - 'xpack.fleet.settings.fleetProxiesTable.deleteButtonTitle', - { - defaultMessage: 'Delete', - } - )} + title={deleteButtonLabel} data-test-subj="fleetProxiesTable.delete.btn" /> )} diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx index c17bab5ade57f..66be604203cf4 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx @@ -126,6 +126,12 @@ export const FleetServerHostsTable: React.FunctionComponent )} @@ -143,6 +149,12 @@ export const FleetServerHostsTable: React.FunctionComponent diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx index f039dc6354181..40757e165be9c 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx @@ -161,6 +161,12 @@ export const OutputsTable: React.FunctionComponent = ({ title={i18n.translate('xpack.fleet.settings.outputSection.deleteButtonTitle', { defaultMessage: 'Delete', })} + aria-label={i18n.translate( + 'xpack.fleet.settings.outputSection.deleteButtonTitle', + { + defaultMessage: 'Delete', + } + )} /> )} @@ -172,6 +178,9 @@ export const OutputsTable: React.FunctionComponent = ({ title={i18n.translate('xpack.fleet.settings.outputSection.editButtonTitle', { defaultMessage: 'Edit', })} + aria-label={i18n.translate('xpack.fleet.settings.outputSection.editButtonTitle', { + defaultMessage: 'Edit', + })} data-test-subj="editOutputBtn" /> diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx index a631252438a6c..c5e3f54b00f1f 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/index.tsx @@ -530,6 +530,7 @@ export function Detail() { prepend={versionLabel} options={versionOptions} value={packageInfo.version} + aria-label={versionLabel} onChange={(event) => onVersionChange(event.target.value, packageInfo.name) } diff --git a/x-pack/platform/plugins/shared/fleet/public/components/agent_enrollment_flyout/advanced_agent_authentication_settings.tsx b/x-pack/platform/plugins/shared/fleet/public/components/agent_enrollment_flyout/advanced_agent_authentication_settings.tsx index 3c3cb66b04ffa..e4dc27f3f9b3b 100644 --- a/x-pack/platform/plugins/shared/fleet/public/components/agent_enrollment_flyout/advanced_agent_authentication_settings.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/components/agent_enrollment_flyout/advanced_agent_authentication_settings.tsx @@ -212,6 +212,12 @@ export const AdvancedAgentAuthenticationSettings: FunctionComponent = ({ /> } + aria-label={i18n.translate( + 'xpack.fleet.enrollmentStepAgentPolicy.enrollmentTokenSelectLabel', + { + defaultMessage: 'Enrollment token', + } + )} onChange={(e) => { onKeyChange(e.target.value); }} diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/formatting/duration_input.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/formatting/duration_input.tsx index adeb49e3091ae..aeadf78b85c0a 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/formatting/duration_input.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/formatting/duration_input.tsx @@ -84,6 +84,9 @@ export const DurationRowInputs = ({ singleSelection={{ asPlainText: true }} data-test-subj={testSubjStart} compressed + aria-label={i18n.translate('xpack.lens.indexPattern.duration.convertFromAriaLabel', { + defaultMessage: 'Convert from unit', + })} /> ); diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx index 1d14db5a6ad89..479005b6c5b15 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx @@ -224,6 +224,11 @@ export const ReferenceEditor = (props: ReferenceEditorProps) => { ); const ParamEditor = selectedOperationDefinition?.paramEditor; + const functionPlaceholder = + functionLabel || + i18n.translate('xpack.lens.indexPattern.referenceFunctionPlaceholder', { + defaultMessage: 'Sub-function', + }); return (
@@ -246,16 +251,12 @@ export const ReferenceEditor = (props: ReferenceEditorProps) => { compressed isClearable={false} data-test-subj="indexPattern-reference-function" - placeholder={ - functionLabel || - i18n.translate('xpack.lens.indexPattern.referenceFunctionPlaceholder', { - defaultMessage: 'Sub-function', - }) - } + placeholder={functionPlaceholder} options={functionOptions} isInvalid={showOperationInvalid || showSelectionFunctionInvalid} selectedOptions={selectedOption} singleSelection={{ asPlainText: true }} + aria-label={functionPlaceholder} onChange={(choices: Array>) => { if (choices.length === 0) { return onDeleteColumn(); diff --git a/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_errors.tsx b/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_errors.tsx index 253cbe51cfbd4..30431d185797b 100644 --- a/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_errors.tsx +++ b/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_errors.tsx @@ -14,6 +14,7 @@ import { EuiSpacer, EuiText, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { UserMessage } from '../../../types'; import { getLongMessage } from '../../../user_messages_utils'; @@ -43,6 +44,9 @@ export function WorkspaceErrors({ errors, title, onRender }: Props) { pageCount={errors.length} activePage={activePage} onPageClick={setActivePage} + aria-label={i18n.translate('xpack.lens.workspaceErrors.pagination.ariaLabel', { + defaultMessage: 'Workspace errors pagination', + })} /> diff --git a/x-pack/platform/plugins/shared/lens/public/visualizations/legacy_metric/metric_config_panel/size_options.tsx b/x-pack/platform/plugins/shared/lens/public/visualizations/legacy_metric/metric_config_panel/size_options.tsx index bb2427d328725..75e4c6e89799f 100644 --- a/x-pack/platform/plugins/shared/lens/public/visualizations/legacy_metric/metric_config_panel/size_options.tsx +++ b/x-pack/platform/plugins/shared/lens/public/visualizations/legacy_metric/metric_config_panel/size_options.tsx @@ -72,6 +72,9 @@ export const SizeOptions: React.FC = ({ state, setState }) = iconType="plus" onClick={() => changeSize(1)} isDisabled={currSizeIndex === titleSizes.length - 1} + aria-label={i18n.translate('xpack.lens.legacyMetric.sizeOptions.increaseSizeAriaLabel', { + defaultMessage: 'Increase title size', + })} /> } prepend={ @@ -79,6 +82,9 @@ export const SizeOptions: React.FC = ({ state, setState }) = iconType="minus" onClick={() => changeSize(-1)} isDisabled={currSizeIndex === 0} + aria-label={i18n.translate('xpack.lens.legacyMetric.sizeOptions.decreaseSizeAriaLabel', { + defaultMessage: 'Decrease title size', + })} /> } data-test-subj="lnsLegacyMetricSizeSelect" @@ -97,6 +103,9 @@ export const SizeOptions: React.FC = ({ state, setState }) = itemLayoutAlign="top" hasDividers fullWidth + aria-label={i18n.translate('xpack.lens.legacyMetric.sizeOptions.titleSizeAriaLabel', { + defaultMessage: 'Title size', + })} /> ); }; diff --git a/x-pack/platform/plugins/shared/maps/public/classes/sources/mvt_single_layer_vector_source/__snapshots__/mvt_field_config_editor.test.tsx.snap b/x-pack/platform/plugins/shared/maps/public/classes/sources/mvt_single_layer_vector_source/__snapshots__/mvt_field_config_editor.test.tsx.snap index b8f7af8b3844e..3d1dad8ac46ad 100644 --- a/x-pack/platform/plugins/shared/maps/public/classes/sources/mvt_single_layer_vector_source/__snapshots__/mvt_field_config_editor.test.tsx.snap +++ b/x-pack/platform/plugins/shared/maps/public/classes/sources/mvt_single_layer_vector_source/__snapshots__/mvt_field_config_editor.test.tsx.snap @@ -18,6 +18,7 @@ exports[`should render error for dupes 1`] = ` { options={FIELD_TYPE_OPTIONS} valueOfSelected={mvtFieldConfig.type} onChange={(value) => onChange(value)} + aria-label={i18n.translate('xpack.maps.mvtSource.fieldTypeSelectAriaLabel', { + defaultMessage: 'Field type', + })} compressed /> ); diff --git a/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/stop_input.tsx b/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/stop_input.tsx index 0b87754c6862b..3158ed2ca674f 100644 --- a/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/stop_input.tsx +++ b/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/stop_input.tsx @@ -8,6 +8,7 @@ import _ from 'lodash'; import type { ChangeEvent } from 'react'; import React, { Component } from 'react'; +import { i18n } from '@kbn/i18n'; import type { EuiComboBoxOptionOption } from '@elastic/eui'; import { EuiComboBox, EuiFieldText } from '@elastic/eui'; import { SINGLE_SELECTION_AS_TEXT_PROPS } from '../../../../../common/constants'; @@ -144,6 +145,9 @@ export class StopInput extends Component { onFocus={this._onFocus} data-test-subj={this.props.dataTestSubj} compressed + aria-label={i18n.translate('xpack.maps.stopInput.valueComboBoxAriaLabel', { + defaultMessage: 'Stop value', + })} /> ); } diff --git a/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/symbol/__snapshots__/icon_map_select.test.tsx.snap b/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/symbol/__snapshots__/icon_map_select.test.tsx.snap index 324e4d9dbd453..1442385e91234 100644 --- a/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/symbol/__snapshots__/icon_map_select.test.tsx.snap +++ b/x-pack/platform/plugins/shared/maps/public/classes/styles/vector/components/symbol/__snapshots__/icon_map_select.test.tsx.snap @@ -32,6 +32,7 @@ exports[`Should not render icon map select when isCustomOnly 1`] = ` exports[`Should render custom stops input when useCustomIconMap 1`] = ` { valueOfSelected={valueOfSelected} hasDividers={true} compressed + aria-label={i18n.translate('xpack.maps.styles.icon.iconPaletteSelectAriaLabel', { + defaultMessage: 'Icon palette', + })} /> diff --git a/x-pack/platform/plugins/shared/maps/public/connected_components/mb_map/tooltip_control/features_tooltip/__snapshots__/footer.test.tsx.snap b/x-pack/platform/plugins/shared/maps/public/connected_components/mb_map/tooltip_control/features_tooltip/__snapshots__/footer.test.tsx.snap index de90617a18f80..7fec92b6dacfa 100644 --- a/x-pack/platform/plugins/shared/maps/public/connected_components/mb_map/tooltip_control/features_tooltip/__snapshots__/footer.test.tsx.snap +++ b/x-pack/platform/plugins/shared/maps/public/connected_components/mb_map/tooltip_control/features_tooltip/__snapshots__/footer.test.tsx.snap @@ -15,6 +15,7 @@ exports[`Footer multiple features, multiple layers: locked should show paginatio > { activePage={pageNumber} onPageClick={this._onPageChange} compressed + aria-label={i18n.translate('xpack.maps.tooltip.paginationLabel', { + defaultMessage: 'Tooltip results pagination', + })} /> ); diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/items_grid/items_grid_pagination.js b/x-pack/platform/plugins/shared/ml/public/application/components/items_grid/items_grid_pagination.js index c95b1db622ff8..9a434f0d556d0 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/items_grid/items_grid_pagination.js +++ b/x-pack/platform/plugins/shared/ml/public/application/components/items_grid/items_grid_pagination.js @@ -21,6 +21,7 @@ import { EuiPagination, EuiPopover, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -121,6 +122,9 @@ export class ItemsGridPagination extends Component { pageCount={pageCount} activePage={activePage} onPageClick={this.onPageClick} + aria-label={i18n.translate('xpack.ml.itemsGrid.pagination.ariaLabel', { + defaultMessage: 'Items grid pagination', + })} /> diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/ml_entity_selector/ml_entity_selector.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/ml_entity_selector/ml_entity_selector.tsx index ebafb61cebd71..dbb9ad79a0e15 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/ml_entity_selector/ml_entity_selector.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/ml_entity_selector/ml_entity_selector.tsx @@ -213,6 +213,9 @@ export const MlEntitySelector: FC = ({ fullWidth data-test-subj={`mlEntitySelector_${isLoading ? 'loading' : 'loaded'}`} isInvalid={false} + aria-label={i18n.translate('xpack.ml.mlEntitySelector.comboBoxAriaLabel', { + defaultMessage: 'Machine learning entities', + })} /> ); }; diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/rule_editor/condition_expression.js b/x-pack/platform/plugins/shared/ml/public/application/components/rule_editor/condition_expression.js index 578e2db19534f..c4b630b2b86a2 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/rule_editor/condition_expression.js +++ b/x-pack/platform/plugins/shared/ml/public/application/components/rule_editor/condition_expression.js @@ -109,6 +109,12 @@ export class ConditionExpression extends Component {
@@ -107,6 +114,12 @@ export class ScopeExpression extends Component { onChange={this.onChangeFilterId} data-test-subj="mlScopeFilterIdSelect" options={getFilterListOptions(filterListIds)} + aria-label={i18n.translate( + 'xpack.ml.ruleEditor.scopeExpression.filterListSelectAriaLabel', + { + defaultMessage: 'Filter list', + } + )} /> diff --git a/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx b/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx index 99b55874aaf9f..0d7e6d0a0a1dc 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx @@ -116,6 +116,12 @@ export const ClassificationDecisionPath: FC = ( options={options} valueOfSelected={currentClass} onChange={setCurrentClass} + aria-label={i18n.translate( + 'xpack.ml.dataframe.analytics.explorationResults.classificationDecisionPathClassNameTitle', + { + defaultMessage: 'Class name', + } + )} /> )} { aria-label={i18n.translate( 'xpack.ml.explorer.alertsPanel.summary.paginationAreaLabel', { - defaultMessage: 'Pagination for alerting rules summary', + defaultMessage: 'Alerting rules pagination', } )} pageCount={Math.ceil(sortedAlertsByRule.length / PAGE_SIZE)} diff --git a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/common/components/job_groups_input.tsx b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/common/components/job_groups_input.tsx index 87e53568c538a..baef6e7cdaada 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/common/components/job_groups_input.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/common/components/job_groups_input.tsx @@ -62,15 +62,18 @@ export const JobGroupsInput: FC = memo( onChangeCallback([...selectedOptions, newGroup]); } + const jobGroupSelectLabel = i18n.translate( + 'xpack.ml.newJob.wizard.jobDetailsStep.jobGroupSelect.placeholder', + { + defaultMessage: 'Select or create groups', + } + ); + return ( = ({ node, type, height }) => { selectedOptions={selectedOptions ?? []} onChange={setSelectedOptions} data-test-subj="mlJobTreeMapComboBox" + aria-label={i18n.translate('xpack.ml.memoryUsage.treeMap.typeFilterAriaLabel', { + defaultMessage: 'Job or model type', + })} /> diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx b/x-pack/platform/plugins/shared/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx index eb9ecbb61022a..ecf64b713f3aa 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx @@ -87,6 +87,12 @@ export function ConnectorSelectorBase(props: ConnectorSelectorBaseProps) { > ({ diff --git a/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx index 05f006652895a..fdc2c1b25df68 100644 --- a/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx @@ -261,6 +261,9 @@ const PackQueriesStatusTableComponent: React.FC = ( data-test-subj={`toggleIcon-${item.id}`} onClick={getHandleErrorsToggle(item)} iconType={itemIdToExpandedRowMap[item.id] ? 'arrowUp' : 'arrowDown'} + aria-label={i18n.translate('xpack.osquery.pack.queriesTable.toggleResultsAriaLabel', { + defaultMessage: 'Toggle results', + })} /> ) : ( <> @@ -299,7 +302,13 @@ const PackQueriesStatusTableComponent: React.FC = ( }, { render: (item: { action_id: string }) => ( - + ), }, ]; diff --git a/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx index c76108912fa70..9439662211515 100644 --- a/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx @@ -494,6 +494,9 @@ const ErrorsColumnResults: React.FC = ({ isDisabled={!errorsData?.total} onClick={handleErrorsToggle} iconType={expanded ? 'arrowUp' : 'arrowDown'} + aria-label={i18n.translate('xpack.osquery.pack.queriesTable.errorsAriaLabel', { + defaultMessage: 'Error details', + })} /> diff --git a/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx index 2a96f964a7b21..bc5c663569bcc 100644 --- a/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx @@ -131,12 +131,13 @@ const PacksTableComponent = () => { }); return ( - + ); diff --git a/x-pack/platform/plugins/shared/security/public/management/role_combo_box/role_combo_box.test.tsx b/x-pack/platform/plugins/shared/security/public/management/role_combo_box/role_combo_box.test.tsx index f841fbca7d55a..11172e1c6e71a 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_combo_box/role_combo_box.test.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_combo_box/role_combo_box.test.tsx @@ -55,6 +55,7 @@ describe('RoleComboBox', () => { expect(wrapper).toMatchInlineSnapshot(` { return acc; }, {}); + const roleComboBoxPlaceholder = + props.placeholder || + i18n.translate('xpack.security.management.users.roleComboBox.placeholder', { + defaultMessage: 'Select roles', + }); + return ( { }} isClearable={false} isDisabled={props.readOnly} + aria-label={i18n.translate( + 'xpack.security.management.editRoleMapping.roleTemplate.typeComboBoxAriaLabel', + { + defaultMessage: 'Role template', + } + )} /> ); }; diff --git a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/kibana/simple_privilege_section/privilege_selector.tsx b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/kibana/simple_privilege_section/privilege_selector.tsx index 403a9026923f2..a04a2138e2ed0 100644 --- a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/kibana/simple_privilege_section/privilege_selector.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/kibana/simple_privilege_section/privilege_selector.tsx @@ -9,6 +9,7 @@ import { EuiSelect } from '@elastic/eui'; import type { ChangeEvent } from 'react'; import React, { Component } from 'react'; +import { i18n } from '@kbn/i18n'; import { constants } from '@kbn/security-ui-components'; interface Props { @@ -49,6 +50,9 @@ export class PrivilegeSelector extends Component { onChange={this.onChange} disabled={disabled} compressed={compressed} + aria-label={i18n.translate('xpack.security.privilegeSelector.select.ariaLabel', { + defaultMessage: 'Privilege', + })} /> ); } diff --git a/x-pack/platform/plugins/shared/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx b/x-pack/platform/plugins/shared/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx index 186c61092b3ee..37f2cd60b5c2c 100644 --- a/x-pack/platform/plugins/shared/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx @@ -59,6 +59,10 @@ export const SpaceCopyResultDetails = (props: Props) => { const { destinationMap, onDestinationMapChange, summarizedCopyResult } = props; const { objects } = summarizedCopyResult; const { euiTheme } = useEuiTheme(); + const objectIdLabel = i18n.translate( + 'xpack.spaces.management.copyToSpace.copyDetail.selectControlLabel', + { defaultMessage: 'Object ID' } + ); return (
{ options={selectProps.options} valueOfSelected={destinationMap.get(`${type}:${id}`)} onChange={selectProps.onChange} - prepend={i18n.translate( - 'xpack.spaces.management.copyToSpace.copyDetail.selectControlLabel', - { defaultMessage: 'Object ID' } - )} + prepend={objectIdLabel} + aria-label={objectIdLabel} hasDividers fullWidth compressed diff --git a/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/geo_containment/rule_form/single_field_select.tsx b/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/geo_containment/rule_form/single_field_select.tsx index 1f2df65fc32aa..6b38f87e26ed8 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/geo_containment/rule_form/single_field_select.tsx +++ b/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/geo_containment/rule_form/single_field_select.tsx @@ -76,6 +76,7 @@ export function SingleFieldSelect({ isInvalid, placeholder, value, onChange, fie renderOption={renderOption} isClearable={false} placeholder={placeholder} + aria-label={placeholder} /> ); } diff --git a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/severity_filter.tsx b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/severity_filter.tsx index 6ffa4331de37a..b5ced2c0bbe76 100644 --- a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/severity_filter.tsx +++ b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/severity_filter.tsx @@ -10,6 +10,7 @@ import type { EuiSuperSelectOption } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiSuperSelect, useEuiTheme } from '@elastic/eui'; import * as i18n from './translations'; +import { CASE_SEVERITY_ARIA_LABEL } from './translations'; export enum CaseSeverity { LOW = 'low', @@ -72,6 +73,7 @@ export const SeverityFilter: React.FC = ({ selectedSeverity, onSeverityCh valueOfSelected={selectedSeverity} onChange={onSeverityChange} data-test-subj="case-severity-selection" + aria-label={CASE_SEVERITY_ARIA_LABEL} /> ); }; diff --git a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/status_filter.tsx b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/status_filter.tsx index b3c4f8c9c4c09..4bb07789b918d 100644 --- a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/status_filter.tsx +++ b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/status_filter.tsx @@ -61,6 +61,7 @@ export const StatusFilter: React.FC = ({ selectedStatus, onStatusChanged onChange={onStatusChanged} data-test-subj="case-status-filter" fullWidth={true} + aria-label={i18n.CASE_STATUS_ARIA_LABEL} /> ); }; diff --git a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/translations.ts b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/translations.ts index 5653fe4adc851..a70fdae45b379 100644 --- a/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/translations.ts +++ b/x-pack/platform/plugins/shared/stack_connectors/public/connector_types/cases_webhook/translations.ts @@ -517,3 +517,17 @@ export const STATUS_IN_PROGRESS = i18n.translate( defaultMessage: 'In progress', } ); + +export const CASE_STATUS_ARIA_LABEL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.statusFilter.optionsAriaLabel', + { + defaultMessage: 'Case status', + } +); + +export const CASE_SEVERITY_ARIA_LABEL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.severityFilter.optionsAriaLabel', + { + defaultMessage: 'Case severity', + } +); diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/schema_editor/flyout/field_form_format.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/schema_editor/flyout/field_form_format.tsx index d72b7b792433f..4090de1e32c08 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/schema_editor/flyout/field_form_format.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/schema_editor/flyout/field_form_format.tsx @@ -52,13 +52,16 @@ export const FieldFormFormat = ({ value, onChange }: FieldFormFormatProps) => { } }; + const placeholderText = i18n.translate( + 'xpack.streams.schemaEditor.fieldFormatSelector.placeholderText', + { defaultMessage: 'Select or type the field format...' } + ); + return ( ); }; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/for_the_last.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/for_the_last.tsx index d175d4084dd84..3368cf10ce46d 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/for_the_last.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/for_the_last.tsx @@ -125,6 +125,12 @@ export const ForLastExpression = ({ onChangeWindowUnit(e.target.value); }} options={getTimeOptions(timeWindowSize ?? 1)} + aria-label={i18n.translate( + 'xpack.triggersActionsUI.common.expressionItems.forTheLast.timeWindowUnitAriaLabel', + { + defaultMessage: 'Time unit', + } + )} /> diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/group_by_over.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/group_by_over.tsx index 11d8e8a60ed88..b590ed39d7aa9 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/group_by_over.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/group_by_over.tsx @@ -191,6 +191,12 @@ export const GroupByExpression = ({ value, }; })} + aria-label={i18n.translate( + 'xpack.triggersActionsUI.common.expressionItems.groupByType.groupBySelectAriaLabel', + { + defaultMessage: 'Group by', + } + )} /> diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/threshold.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/threshold.tsx index d0ebb89a2d120..aaa0553e0c718 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/threshold.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/threshold.tsx @@ -138,6 +138,10 @@ export const ThresholdExpression = ({ options={Object.values(comparators).map(({ text, value }) => { return { text, value }; })} + aria-label={i18n.translate( + 'xpack.triggersActionsUI.common.expressionItems.threshold.comparatorAriaLabel', + { defaultMessage: 'Threshold comparator' } + )} /> {Array.from(Array(numRequiredThresholds)).map((_notUsed, i) => { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/when.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/when.tsx index c3f620a281b9b..de979c96f58e8 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/when.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/common/expression_items/when.tsx @@ -82,6 +82,12 @@ export const WhenExpression = ({ id="aggTypeField" value={aggType} fullWidth + aria-label={i18n.translate( + 'xpack.triggersActionsUI.common.expressionItems.threshold.aggTypeSelectAriaLabel', + { + defaultMessage: 'Aggregation type', + } + )} onChange={(e) => { onChangeSelectedAggType(e.target.value); setAggTypePopoverOpen(false); diff --git a/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/anomaly_rule_type/select_anomaly_severity.tsx b/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/anomaly_rule_type/select_anomaly_severity.tsx index 3ea2146acdd24..00c669ed9a3e9 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/anomaly_rule_type/select_anomaly_severity.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/anomaly_rule_type/select_anomaly_severity.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; import { EuiHealth, EuiSpacer, EuiSuperSelect, EuiText } from '@elastic/eui'; import { getSeverityColor } from '../../../../../common/anomaly_detection'; import type { AnomalyAlertSeverityType } from '../../../../../common/rules/apm_rule_types'; @@ -31,6 +32,9 @@ export function SelectAnomalySeverity({ onChange, value }: Props) { ({ value: option.type, inputDisplay: , diff --git a/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx index 2b4f0c4e354c6..5430add05f648 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/alerting/rule_types/transaction_duration_rule_type/index.tsx @@ -223,6 +223,12 @@ export function TransactionDurationRuleType(props: Props) { })} > { diff --git a/x-pack/solutions/observability/plugins/apm/public/components/alerting/ui_components/alert_details_app_section/transaction_type_select.tsx b/x-pack/solutions/observability/plugins/apm/public/components/alerting/ui_components/alert_details_app_section/transaction_type_select.tsx index 638917da9a8c4..454aaab5e9c6a 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/alerting/ui_components/alert_details_app_section/transaction_type_select.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/alerting/ui_components/alert_details_app_section/transaction_type_select.tsx @@ -18,18 +18,23 @@ export function TransactionTypeSelect({ onChange: (transactionType: string) => void; }) { const options = transactionTypes.map((t) => ({ text: t, value: t })); + const transactionTypeLabel = i18n.translate( + 'xpack.apm.alertingVisualizations.transactionType.prepend', + { + defaultMessage: 'Transaction Type', + } + ); return ( onChange(event.target.value)} options={options} value={transactionType} + aria-label={transactionTypeLabel} /> ); } diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/error_group_details/error_sampler/error_sample_detail.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/error_group_details/error_sampler/error_sample_detail.tsx index 4b7aa52f6bf5c..19b5b1118dbe4 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/error_group_details/error_sampler/error_sample_detail.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/error_group_details/error_sampler/error_sample_detail.tsx @@ -189,6 +189,9 @@ export function ErrorSampleDetails({ pageCount={errorSampleIds.length} activePage={sampleActivePage} onPageClick={goToSample} + aria-label={i18n.translate('xpack.apm.errorSampleDetails.paginationAriaLabel', { + defaultMessage: 'Error sample pages', + })} compressed /> )} diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_errors_and_crashes_treemap/treemap_select.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_errors_and_crashes_treemap/treemap_select.tsx index b2bb06a58095d..8303478878d68 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_errors_and_crashes_treemap/treemap_select.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_errors_and_crashes_treemap/treemap_select.tsx @@ -93,6 +93,9 @@ export function TreemapSelect({ onChange={onChange} itemLayoutAlign="top" hasDividers + aria-label={i18n.translate('xpack.apm.transactionOverview.treemap.select.ariaLabel', { + defaultMessage: 'Treemap', + })} /> diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_most_affected/treemap_select.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_most_affected/treemap_select.tsx index fc72a32cc1263..d6318ac40fd13 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_most_affected/treemap_select.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_most_affected/treemap_select.tsx @@ -97,6 +97,12 @@ export function TreemapSelect({ onChange={onChange} itemLayoutAlign="top" hasDividers + aria-label={i18n.translate( + 'xpack.apm.mobile.errorOverview.treemap.dropdown.ariaLabel', + { + defaultMessage: 'Treemap', + } + )} /> diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_treemap/treemap_select.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_treemap/treemap_select.tsx index b1b3d6bf2e5b2..9a96433482923 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_treemap/treemap_select.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/charts/mobile_treemap/treemap_select.tsx @@ -96,6 +96,9 @@ export function TreemapSelect({ onChange={onChange} itemLayoutAlign="top" hasDividers + aria-label={i18n.translate('xpack.apm.transactionOverview.treemap.select.ariaLabel', { + defaultMessage: 'Treemap', + })} /> diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/filters/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/filters/index.tsx index 117cac851f0f7..437b714558283 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/filters/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/filters/index.tsx @@ -122,6 +122,7 @@ export function MobileFilters() { fullWidth isLoading={status === FETCH_STATUS.LOADING} prepend={label} + aria-label={label} options={toSelectOptions(selectOptions)} value={filters?.[key]} onChange={(e) => { diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map_select.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map_select.tsx index 68922e48ac5a2..1a21f3b94f4a7 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map_select.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map_select.tsx @@ -88,6 +88,9 @@ export function EmbeddedMapSelect({ onChange={onChange} itemLayoutAlign="top" hasDividers + aria-label={i18n.translate('xpack.apm.serviceOverview.embeddedMap.dropdown.ariaLabel', { + defaultMessage: 'Map', + })} /> ); diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx index 7a7e2c6934995..a807bb728f89d 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx @@ -76,6 +76,12 @@ export function SaveDashboardModal({ ); const isEditMode = !!currentDashboard?.id; + const selectDashboardLabel = i18n.translate( + 'xpack.apm.serviceDashboards.selectDashboard.placeholder', + { + defaultMessage: 'Select dashboard', + } + ); const options = allAvailableDashboards?.map((dashboardItem) => ({ label: dashboardItem.attributes.title, @@ -167,9 +173,8 @@ export function SaveDashboardModal({ (); + const selectDashboardPlaceholder = i18n.translate( + 'xpack.apm.serviceDashboards.selectDashboard.placeholder', + { + defaultMessage: 'Select dashboard', + } + ); + useMount(() => { if (!currentDashboardId) { history.push({ @@ -65,9 +72,8 @@ export function DashboardSelector({ { @@ -105,6 +110,7 @@ export function IndexLifecyclePhaseSelect() { hasDividers style={{ minWidth: 200 }} data-test-subj="storageExplorerLifecyclePhaseSelect" + aria-label={indexLifecyclePhaseLabel} /> ); } diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx index 3618a26d04e08..87d129a348600 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx @@ -104,6 +104,12 @@ export function TraceSearchBox({ query, onQueryChange, onQueryCommit, loading }: }); }} options={options} + aria-label={i18n.translate( + 'xpack.apm.traceSearchBox.queryLanguageSelectAriaLabel', + { + defaultMessage: 'Query language', + } + )} /> diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx index 3f3f9e0c58b47..fd11d93262724 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx @@ -128,6 +128,12 @@ export function WaterfallWithSummary({ activePage={samplePageIndex} onPageClick={goToSample} compressed + aria-label={i18n.translate( + 'xpack.apm.transactionDetails.traceSamplePaginationLabel', + { + defaultMessage: 'Trace sample pages', + } + )} /> )} diff --git a/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/discovery_rule.tsx b/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/discovery_rule.tsx index 8eb868b83611b..3e274ded13acc 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/discovery_rule.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/discovery_rule.tsx @@ -102,6 +102,10 @@ export function DiscoveryRule({ data-test-subj="apmDiscoveryRuleButton" iconType="pencil" color="primary" + aria-label={i18n.translate( + 'xpack.apm.fleetIntegration.apmAgent.discoveryRule.editButtonAriaLabel', + { defaultMessage: 'Edit rule' } + )} onClick={() => { onEdit(id); }} @@ -112,6 +116,10 @@ export function DiscoveryRule({ data-test-subj="apmDiscoveryRuleButton" iconType="trash" color="danger" + aria-label={i18n.translate( + 'xpack.apm.fleetIntegration.apmAgent.discoveryRule.deleteButtonAriaLabel', + { defaultMessage: 'Delete rule' } + )} onClick={() => { onDelete(id); }} diff --git a/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/edit_discovery_rule.tsx b/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/edit_discovery_rule.tsx index d2e968fbd897f..cbb53a626768c 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/edit_discovery_rule.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/fleet_integration/apm_agents/runtime_attachment/edit_discovery_rule.tsx @@ -48,19 +48,22 @@ export function EditDiscoveryRule({ onSubmit, operationTypes, }: Props) { + const operationLabel = i18n.translate( + 'xpack.apm.fleetIntegration.apmAgent.editDisacoveryRule.operation', + { defaultMessage: 'Operation' } + ); + return ( ({ text: item.operation.label, diff --git a/x-pack/solutions/observability/plugins/apm/public/components/shared/try_it_button/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/shared/try_it_button/index.tsx index 03e0e15b51372..58563604b1774 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/shared/try_it_button/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/shared/try_it_button/index.tsx @@ -76,7 +76,7 @@ export function TryItButton({ iconType="info" aria-label={i18n.translate( 'xpack.apm.tryItButton.euiButtonIcon.tryItHelperButtonLabel', - { defaultMessage: 'Try it helper button' } + { defaultMessage: 'Try it help' } )} onClick={togglePopover} /> @@ -170,10 +170,11 @@ export function TryItButton({ function HideThisButton() { return ( - + { setShowFastFilterTryCallout(false); }} diff --git a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx index cb3a1aa40672a..9a924e22cde5e 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx @@ -122,6 +122,9 @@ export function Breakdowns({ seriesConfig, seriesId, series }: Props) { onChange={(value) => onOptionChange(value)} data-test-subj={'seriesBreakdown'} disabled={differentSeriesHasBreakdown} + aria-label={i18n.translate('xpack.exploratoryView.breakDownFilter.selectAriaLabel', { + defaultMessage: 'Breakdown', + })} /> ); } diff --git a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx index 2801effe601eb..5c74a9e256ccd 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx @@ -47,6 +47,7 @@ export function LabelsBreakdown({ series, seriesId }: Props) { selectedOptions={labelFieldOptions?.filter((labelField) => labelField.label === breakdown)} options={labelFieldOptions} placeholder={CHOOSE_BREAKDOWN_FIELD} + aria-label={CHOOSE_BREAKDOWN_FIELD} onChange={(value) => { setSeries(seriesId, { ...series, diff --git a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx index 072768753f708..efe84e2f4e124 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx @@ -127,6 +127,9 @@ export function OperationTypeComponent({ valueOfSelected={operationType} options={options} onChange={onChange} + aria-label={i18n.translate('xpack.exploratoryView.expView.operationTypeSelect.ariaLabel', { + defaultMessage: 'Operation type', + })} /> ); } diff --git a/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx b/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx index 8353ae86ddf02..e97d0e3b6e866 100644 --- a/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion.tsx @@ -208,6 +208,7 @@ export const Criterion: React.FC = ({ fullWidth isClearable={false} singleSelection={{ asPlainText: true }} + aria-label={criterionFieldTitle} options={fieldOptions} selectedOptions={selectedField} onChange={handleFieldChange} @@ -272,6 +273,12 @@ export const Criterion: React.FC = ({ updateCriterion(idx, { comparator: e.target.value as Comparator }) } options={compatibleComparatorOptions} + aria-label={i18n.translate( + 'xpack.infra.logs.alertFlyout.comparatorSelectAriaLabel', + { + defaultMessage: 'Comparison', + } + )} /> diff --git a/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx b/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx index 2f9d653a940b2..7db88cf74162f 100644 --- a/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/alerting/log_threshold/components/expression_editor/type_switcher.tsx @@ -93,6 +93,12 @@ export const TypeSwitcher: React.FC = ({ criteria, updateType }) => { value={thresholdType} onChange={(e) => updateType(thresholdType === 'ratio' ? 'count' : 'ratio')} options={getOptions()} + aria-label={i18n.translate( + 'xpack.infra.logs.alertFlyout.thresholdTypeSelect.ariaLabel', + { + defaultMessage: 'Threshold type', + } + )} /> diff --git a/x-pack/solutions/observability/plugins/infra/public/alerting/metric_threshold/components/custom_equation/metric_row_controls.tsx b/x-pack/solutions/observability/plugins/infra/public/alerting/metric_threshold/components/custom_equation/metric_row_controls.tsx index 6145a0dbec9bc..624c6080f0b6b 100644 --- a/x-pack/solutions/observability/plugins/infra/public/alerting/metric_threshold/components/custom_equation/metric_row_controls.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/alerting/metric_threshold/components/custom_equation/metric_row_controls.tsx @@ -22,6 +22,7 @@ export const MetricRowControls = ({ onDelete, disableDelete }: MetricRowControlP iconType="trash" color="danger" style={{ marginBottom: '0.2em' }} + aria-label={DELETE_LABEL} onClick={onDelete} disabled={disableDelete} title={DELETE_LABEL} diff --git a/x-pack/solutions/observability/plugins/infra/public/components/asset_details/asset_details.stories.tsx b/x-pack/solutions/observability/plugins/infra/public/components/asset_details/asset_details.stories.tsx index ca83c83968140..9ce7be70a4266 100644 --- a/x-pack/solutions/observability/plugins/infra/public/components/asset_details/asset_details.stories.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/components/asset_details/asset_details.stories.tsx @@ -6,6 +6,7 @@ */ import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; import { EuiButton, EuiCallOut, EuiSelect, EuiSpacer } from '@elastic/eui'; import type { Meta, StoryFn } from '@storybook/react'; import { MemoryRouter } from 'react-router-dom'; @@ -73,6 +74,9 @@ const FlyoutTemplate: StoryFn = (args) => { text: id, value: id, }))} + aria-label={i18n.translate('xpack.infra.assetDetails.flyout.tabSelectAriaLabel', { + defaultMessage: 'Asset details tabs', + })} /> {!parentAlert && ( - + diff --git a/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx index a2da1b70b7fca..d552c849f8521 100644 --- a/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx @@ -229,6 +229,9 @@ export function HeaderActions({ onClick={() => { setSnoozeModalOpen(true); }} + aria-label={i18n.translate('xpack.observability.ruleDetails.snoozeButtonAriaLabel', { + defaultMessage: 'Manage rule snooze', + })} /> diff --git a/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx index 6cafcafaf44a2..1982ef6f1cb6a 100644 --- a/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx +++ b/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx @@ -164,6 +164,10 @@ export function AddDataPanel({ data-test-subj="AddDataPanelDismissButton" iconType="cross" onClick={onDismiss} + aria-label={i18n.translate( + 'xpack.observabilityShared.addDataPabel.dismissButtonAriaLabel', + { defaultMessage: 'Dismiss panel' } + )} /> )} diff --git a/x-pack/solutions/observability/plugins/observability_shared/public/components/field_value_suggestions/field_value_combobox.tsx b/x-pack/solutions/observability/plugins/observability_shared/public/components/field_value_suggestions/field_value_combobox.tsx index 6a9edc7d91ce5..1b04008dc4494 100644 --- a/x-pack/solutions/observability/plugins/observability_shared/public/components/field_value_suggestions/field_value_combobox.tsx +++ b/x-pack/solutions/observability/plugins/observability_shared/public/components/field_value_suggestions/field_value_combobox.tsx @@ -61,18 +61,21 @@ export function FieldValueCombobox({ onSelectionChange(selectedValuesN.map(({ label: lbl }) => lbl)); }; + const searchFieldPlaceholder = i18n.translate( + 'xpack.observabilityShared.fieldValueSelection.placeholder.search', + { + defaultMessage: 'Search {label}', + values: { label }, + } + ); + const comboBox = ( { setQuery(searchVal); diff --git a/x-pack/solutions/observability/plugins/profiling/public/views/storage_explorer/index_lifecycle_phase_select.tsx b/x-pack/solutions/observability/plugins/profiling/public/views/storage_explorer/index_lifecycle_phase_select.tsx index 05fd8868ed14a..3231a5aaaba9f 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/views/storage_explorer/index_lifecycle_phase_select.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/views/storage_explorer/index_lifecycle_phase_select.tsx @@ -19,6 +19,13 @@ export function IndexLifecyclePhaseSelect() { const { query } = useProfilingParams('/storage-explorer'); const { indexLifecyclePhase } = query; + const indexLifecyclePhaseLabel = i18n.translate( + 'xpack.profiling.storageExplorer.indexLifecyclePhase.label', + { + defaultMessage: 'Index lifecycle phase', + } + ); + const options = [ { value: IndexLifecyclePhaseSelectOption.All, @@ -97,9 +104,8 @@ export function IndexLifecyclePhaseSelect() { return ( { diff --git a/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx index c224fbb6d7bee..7fbac9eafe59c 100644 --- a/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx @@ -27,6 +27,9 @@ export function ErrorBudgetActions({ setDashboardAttachmentReady }: Props) { data-test-subj="o11yErrorBudgetActionsButton" iconType={'boxesHorizontal'} onClick={() => setIsActionsPopoverOpen(!isActionsPopoverOpen)} + aria-label={i18n.translate('xpack.slo.item.actions.openMenuAriaLabel', { + defaultMessage: 'Error budget actions context menu', + })} /> ); return ( diff --git a/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx index 0009696481585..527318df66ddd 100644 --- a/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx @@ -56,6 +56,10 @@ export function SLOGroupingValueSelector({ slo, groupingKey, value }: Props) { } }, [data]); + const selectGroupValueLabel = i18n.translate('xpack.slo.sLOGroupingValueSelector.placeholder', { + defaultMessage: 'Select a group value', + }); + const onChange = (selected: Array>) => { const newValue = selected[0].value; if (!newValue) return; @@ -68,6 +72,12 @@ export function SLOGroupingValueSelector({ slo, groupingKey, value }: Props) { search: urlSearchParams.toString(), }); }; + const copySLOGroupingValueAriaLabel = i18n.translate( + 'xpack.slo.sLOGroupingValueSelector.copyButton.label', + { + defaultMessage: 'Copy SLO Grouping Value', + } + ); return ( @@ -87,12 +97,7 @@ export function SLOGroupingValueSelector({ slo, groupingKey, value }: Props) { color="text" iconType="copyClipboard" onClick={copy} - aria-label={i18n.translate( - 'xpack.slo.sLOGroupingValueSelector.copyButton.label', - { - defaultMessage: 'Copy value to clipboard', - } - )} + aria-label={copySLOGroupingValueAriaLabel} /> )} @@ -102,10 +107,7 @@ export function SLOGroupingValueSelector({ slo, groupingKey, value }: Props) { color="text" disabled={true} iconType="copyClipboard" - aria-label={i18n.translate( - 'xpack.slo.sLOGroupingValueSelector.copyButton.noValueLabel', - { defaultMessage: 'Select a value before' } - )} + aria-label={copySLOGroupingValueAriaLabel} /> ) } @@ -113,9 +115,8 @@ export function SLOGroupingValueSelector({ slo, groupingKey, value }: Props) { options={options} isLoading={isLoading} isDisabled={isError || !isAvailable} - placeholder={i18n.translate('xpack.slo.sLOGroupingValueSelector.placeholder', { - defaultMessage: 'Select a group value', - })} + aria-label={selectGroupValueLabel} + placeholder={selectGroupValueLabel} selectedOptions={currentValue ? [toField(currentValue)] : []} onChange={onChange} truncationProps={{ diff --git a/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx index 3addac06ba509..ea8ae1737ed41 100644 --- a/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx @@ -129,6 +129,10 @@ export function SLOInspect({ slo, disabled }: Props) { iconType="link" data-test-subj="o11ySLOInspectDetailsButton" href={http?.basePath.prepend('/app/management/data/transform')} + aria-label={i18n.translate( + 'xpack.slo.sLOInspect.viewRollupTransformButtonAriaLabel', + { defaultMessage: 'View rollup transform' } + )} /> } /> @@ -146,6 +150,10 @@ export function SLOInspect({ slo, disabled }: Props) { iconType="link" data-test-subj="o11ySLOInspectDetailsButton" href={http?.basePath.prepend('/app/management/data/transform')} + aria-label={i18n.translate( + 'xpack.slo.sLOInspect.viewSummaryTransformButtonAriaLabel', + { defaultMessage: 'View summary transform' } + )} /> } /> @@ -162,6 +170,10 @@ export function SLOInspect({ slo, disabled }: Props) { iconType="link" data-test-subj="o11ySLOInspectDetailsButton" href={rollUpPipelineUrl} + aria-label={i18n.translate( + 'xpack.slo.sLOInspect.viewRollupPipelineButtonAriaLabel', + { defaultMessage: 'View rollup ingest pipeline' } + )} /> } json={inspectSloData.rollUpPipeline} @@ -179,6 +191,10 @@ export function SLOInspect({ slo, disabled }: Props) { iconType="link" data-test-subj="o11ySLOInspectDetailsButton" href={summaryPipelineUrl} + aria-label={i18n.translate( + 'xpack.slo.sLOInspect.viewSummaryPipelineButtonAriaLabel', + { defaultMessage: 'View summary ingest pipeline' } + )} /> } json={inspectSloData.summaryPipeline} diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx index b835e4836d207..b3f99cb399295 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx @@ -31,6 +31,7 @@ export const ViewDocument = ({ ping }: { ping: Ping }) => { data-test-subj="syntheticsViewDocumentButton" iconType="inspect" title={INSPECT_DOCUMENT(formattedTimestamp)} + aria-label={INSPECT_DOCUMENT(formattedTimestamp)} onClick={(evt: MouseEvent) => { evt.stopPropagation(); setIsFlyoutVisible(true); diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/maintenance_windows/maintenance_windows.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/maintenance_windows/maintenance_windows.tsx index e5ba48673f13c..d09f4dc1e14e2 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/maintenance_windows/maintenance_windows.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/maintenance_windows/maintenance_windows.tsx @@ -30,11 +30,17 @@ export const MaintenanceWindowsField = ({ label: option.title, })) ?? []; + const maintenanceWindowsPlaceholder = i18n.translate( + 'xpack.synthetics.monitorConfig.maintenanceWindows.placeholder', + { + defaultMessage: 'Select maintenance windows', + } + ); + return ( - placeholder={i18n.translate('xpack.synthetics.monitorConfig.maintenanceWindows.placeholder', { - defaultMessage: 'Select maintenance windows', - })} + placeholder={maintenanceWindowsPlaceholder} + aria-label={maintenanceWindowsPlaceholder} options={options} onChange={(newValue) => { onChange(newValue.map((option) => option.value as string)); diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx index f496965b66158..0096f15a5582d 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx @@ -132,6 +132,9 @@ export const SelectSeverity: FC = ({ onChange, value }) => { valueOfSelected={severity.display} onChange={onSeverityChange} data-test-subj={'anomalySeveritySelect'} + aria-label={i18n.translate('xpack.uptime.controls.selectSeverity.ariaLabel', { + defaultMessage: 'Anomaly severity', + })} /> ); }; diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx index 24d830d319176..ab7e0c1b93238 100644 --- a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx @@ -171,6 +171,7 @@ export const StepsList = ({ href={`${basePath}/app/uptime/journey/${item.monitor.check_group}/step/${item.synthetics?.step?.index}`} target="_blank" iconType="visArea" + aria-label={VIEW_PERFORMANCE} /> ) : ( onOptionChange(value)} data-test-subj={dataTestSubj} + aria-label={i18n.translate('xpack.ux.breakdownFilter.ariaLabel', { + defaultMessage: 'Breakdown filter', + })} /> ); } diff --git a/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx index bc3f55738abfb..a65cd532e83bb 100644 --- a/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx +++ b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx @@ -82,14 +82,15 @@ export function EnvironmentFilter({ const minWidth = 200; const options = getOptions(environments); + const environmentLabel = i18n.translate('xpack.ux.filter.environment.label', { + defaultMessage: 'Environment', + }); return ( { @@ -97,6 +98,7 @@ export function EnvironmentFilter({ }} isLoading={loading} style={{ minWidth }} + aria-label={environmentLabel} /> ); } diff --git a/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx index 57bd4a51729e6..368a71fb70146 100644 --- a/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx +++ b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx @@ -64,13 +64,16 @@ function ServiceNameFilter({ loading, serviceNames }: Props) { } }, [serviceNames, selectedServiceName, updateServiceName, loading]); + const webApplicationLabel = i18n.translate('xpack.ux.localFilters.titles.webApplication', { + defaultMessage: 'Web application', + }); + return ( onChange(evt.target.value)} /> diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/components/generated_config_fields.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/components/generated_config_fields.tsx index ba5e0fa0d1cd6..59f5767abd31d 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/components/generated_config_fields.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/components/generated_config_fields.tsx @@ -111,6 +111,10 @@ export const GeneratedConfigFields: React.FC = ({ const showApiKeyInfoForSelfManagedConnector = !connector.is_native; const showApiKeyBanner = showApiKeyInfoForSelfManagedConnector && apiKey?.encoded; + const refreshApiKeyAriaLabel = i18n.translate( + 'xpack.enterpriseSearch.connectorDeployment.refreshAPIKey', + { defaultMessage: 'Refresh API key' } + ); return ( <> @@ -269,10 +273,7 @@ export const GeneratedConfigFields: React.FC = ({ isLoading={isGenerateLoading} onClick={refreshButtonClick} disabled={!connector.index_name} - aria-label={i18n.translate( - 'xpack.enterpriseSearch.connectorDeployment.refreshAPIKey', - { defaultMessage: 'Refresh an Elasticsearch API key' } - )} + aria-label={refreshApiKeyAriaLabel} /> )} @@ -303,10 +304,7 @@ export const GeneratedConfigFields: React.FC = ({ isLoading={isGenerateLoading} onClick={refreshButtonClick} disabled={!connector.index_name} - aria-label={i18n.translate( - 'xpack.enterpriseSearch.connectorDeployment.generateAPIKey', - { defaultMessage: 'Generate an Elasticsearch API key' } - )} + aria-label={refreshApiKeyAriaLabel} /> ) diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/access_control_index_selector/access_control_index_selector.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/access_control_index_selector/access_control_index_selector.tsx index e02741638f863..73142ad8483d1 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/access_control_index_selector/access_control_index_selector.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/access_control_index_selector/access_control_index_selector.tsx @@ -72,6 +72,10 @@ export const AccessControlIndexSelector: React.FC = ({ }) => { return ( = ({ { value: PlaygroundPageMode.Search, text: 'Search' }, ]} value={pageMode} + aria-label={i18n.translate('xpack.searchPlayground.header.pageModeSelectAriaLabel', { + defaultMessage: 'Page mode', + })} onChange={(e) => onSelectPageModeChange(e.target.value as PlaygroundPageMode)} /> )} diff --git a/x-pack/solutions/search/plugins/search_playground/public/components/saved_playground/saved_playground_header.tsx b/x-pack/solutions/search/plugins/search_playground/public/components/saved_playground/saved_playground_header.tsx index 9027a8024a4df..30a5caced17ff 100644 --- a/x-pack/solutions/search/plugins/search_playground/public/components/saved_playground/saved_playground_header.tsx +++ b/x-pack/solutions/search/plugins/search_playground/public/components/saved_playground/saved_playground_header.tsx @@ -100,6 +100,9 @@ export const SavedPlaygroundHeader: React.FC = ({ ]} value={pageMode} onChange={(e) => onSelectPageModeChange(e.target.value as PlaygroundPageMode)} + aria-label={i18n.translate('xpack.searchPlayground.header.pageModeSelectAriaLabel', { + defaultMessage: 'Page mode', + })} /> )} {hasChanges ? ( diff --git a/x-pack/solutions/search/plugins/search_playground/public/components/view_code/view_code_flyout.tsx b/x-pack/solutions/search/plugins/search_playground/public/components/view_code/view_code_flyout.tsx index d60d78604ba18..f8571361799c1 100644 --- a/x-pack/solutions/search/plugins/search_playground/public/components/view_code/view_code_flyout.tsx +++ b/x-pack/solutions/search/plugins/search_playground/public/components/view_code/view_code_flyout.tsx @@ -18,6 +18,7 @@ import { EuiButtonEmpty, useGeneratedHtmlId, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import React, { useEffect, useState } from 'react'; import { useFormContext } from 'react-hook-form'; @@ -128,6 +129,12 @@ export const ViewCodeFlyout: React.FC = ({ onClose, selecte ]} onChange={handleLanguageChange} value={selectedLanguage} + aria-label={i18n.translate( + 'xpack.searchPlayground.viewCode.languageSelect.ariaLabel', + { + defaultMessage: 'Code language', + } + )} /> diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/connectors_table.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/connectors_table.tsx index 1b71bf693287f..06c3d51414e4e 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/connectors_table.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/connectors_table.tsx @@ -242,6 +242,12 @@ export const ConnectorsTable: React.FC = () => { data-test-subj="serverlessSearchConnectorsTableSelect" onChange={(e) => setFilter(e.currentTarget.value as Filter)} options={filterOptions} + aria-label={i18n.translate( + 'xpack.serverlessSearch.connectorsTable.filterSelect.ariaLabel', + { + defaultMessage: 'Filter', + } + )} /> diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index 0b03a274adaf3..3dca2eb59f765 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -70,23 +70,28 @@ const AccountDropDown = ({ selectedAccount: string; setSelectedAccount: (value: string) => void; options: Array<{ value: string; label: string }>; -}) => ( - o.value === selectedAccount)} - onChange={(selectedOption) => { - setSelectedAccount(selectedOption[0].value || DEFAULT_ACCOUNT); - }} - /> -); +}) => { + const accountsLabel = i18n.translate( + 'xpack.csp.vulnerabilityDashboard.trendGraphChart.accountsDropDown.prepend.accountsTitle', + { defaultMessage: 'Accounts' } + ); + + return ( + o.value === selectedAccount)} + onChange={(selectedOption) => { + setSelectedAccount(selectedOption[0].value || DEFAULT_ACCOUNT); + }} + /> + ); +}; const getUniqueCloudAccountsOptions = ( vulnTrends: VulnStatsTrend[] diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx index 6d8b5688c1412..c4687e624c969 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx @@ -231,6 +231,12 @@ export const MisconfigurationFindingsDetailsTable = memo( width: `${linkWidth}`, render: (rule: CspBenchmarkRuleMetadata, finding: MisconfigurationFindingDetailFields) => ( { uiMetricService.trackUiMetric( diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx index 037b3d3497a07..a3860d47ddbab 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx @@ -258,6 +258,12 @@ export const VulnerabilitiesFindingsDetailsTable = memo( openPreviewPanel(previewPanelProps); }} + aria-label={i18n.translate( + 'xpack.securitySolution.flyout.left.insights.vulnerability.table.previewDetailsButtonAriaLabel', + { + defaultMessage: 'Preview vulnerability details', + } + )} /> ), }, diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx index b5c9f31a49ab8..6f178582890ed 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx @@ -47,6 +47,7 @@ export const SelectInterval: React.FC<{ options={OPTIONS} value={interval} onChange={onChangeCb} + aria-label={i18n.INTERVAL} /> ); }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx index 982a28a70fc1b..bfbb78f87697d 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx @@ -7,6 +7,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiFormRow, EuiFlexGroup, EuiFlexItem, EuiToolTip, EuiSuperSelect } from '@elastic/eui'; +import { i18n as i18nTranslate } from '@kbn/i18n'; import { css } from '@emotion/react'; import { EsFieldSelector } from '@kbn/securitysolution-autocomplete'; @@ -107,6 +108,12 @@ export const EntryItem: React.FC = ({ options={options} valueOfSelected={entry.negate ? 'DOES_NOT_MATCH' : 'MATCHES'} onChange={(value) => handleMatchChange(value === 'DOES_NOT_MATCH')} + aria-label={i18nTranslate.translate( + 'xpack.securitySolution.threatMapping.entryItem.matchOperatorAriaLabel', + { + defaultMessage: 'Match operator', + } + )} /> ); diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring/components/privileged_user_activity/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring/components/privileged_user_activity/index.tsx index b9346686e36ea..abb56ea07a01c 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring/components/privileged_user_activity/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring/components/privileged_user_activity/index.tsx @@ -57,6 +57,9 @@ export const UserActivityPrivilegedUsersPanel: React.FC<{ const { getLensAttributes, columns, generateVisualizationQuery, generateTableQuery } = usePrivilegedUserActivityParams(selectedToggleOption, sourcererDataView); const stackByOptions = useStackByOptions(selectedToggleOption); + const stackByLabel = i18n.translate('xpack.securitySolution.genericDashboard.stackBy.label', { + defaultMessage: 'Stack by', + }); const setSelectedChartOptionCallback = useCallback( (value: string) => { setSelectedStackByOption(value ?? stackByOptions[0].value); @@ -117,12 +120,11 @@ export const UserActivityPrivilegedUsersPanel: React.FC<{ )} diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring_onboarding/components/sample_dashboard/sample_dashboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring_onboarding/components/sample_dashboard/sample_dashboard.tsx index 4f5618422a025..88bc0c316d186 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring_onboarding/components/sample_dashboard/sample_dashboard.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/privileged_user_monitoring_onboarding/components/sample_dashboard/sample_dashboard.tsx @@ -47,6 +47,10 @@ const PrivilegedUserMonitoringSampleDashboardComponent = () => { defaultStackByOption.value ); + const stackByLabel = i18n.translate('xpack.securitySolution.genericDashboard.stackBy.label', { + defaultMessage: 'Stack by', + }); + const title = ( {