diff --git a/package.json b/package.json index b96e66c741761..3c19ecef9cf7c 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.6.0-canary.3", "@elastic/ems-client": "8.4.0", - "@elastic/eui": "76.0.2", + "@elastic/eui": "76.3.0", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", diff --git a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap index 69e50df7cd4b8..6763bcbcaa7fe 100644 --- a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap +++ b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap @@ -130,6 +130,7 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiDisplaySelector.lineCountLabel": "Lines per row", "euiDisplaySelector.resetButtonText": "Reset to default", "euiDisplaySelector.rowHeightLabel": "Row height", + "euiDualRange.sliderScreenReaderInstructions": "You are in a custom range slider. Use the Up and Down arrow keys to change the minimum value. Press Tab to interact with the maximum value.", "euiErrorBoundary.error": "Error", "euiFieldPassword.maskPassword": "Mask password", "euiFieldPassword.showPassword": "Show password as plain text. Note: this will visually expose your password on the screen.", @@ -271,6 +272,7 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiQuickSelect.unitLabel": "Time unit", "euiQuickSelect.valueLabel": "Time value", "euiQuickSelectPopover.buttonLabel": "Date quick select", + "euiRange.sliderScreenReaderInstructions": "You are in a custom range slider. Use the Up and Down arrow keys to change the value.", "euiRecentlyUsed.legend": "Recently used date ranges", "euiRefreshInterval.fullDescriptionOff": [Function], "euiRefreshInterval.fullDescriptionOn": [Function], @@ -289,7 +291,7 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiSelectable.noAvailableOptions": "No options available", "euiSelectable.noMatchingOptions": [Function], "euiSelectable.placeholderName": "Filter options", - "euiSelectable.screenReaderInstructions": "Use up and down arrows to move focus over options. Enter to select. Escape to collapse options.", + "euiSelectable.screenReaderInstructions": "Use the Up and Down arrow keys to move focus over options. Press Enter to select. Press Escape to collapse options.", "euiSelectable.searchResults": [Function], "euiSelectableListItem.checkedOption": "Checked option.", "euiSelectableListItem.checkedOptionInstructions": "To uncheck this option, press enter.", @@ -327,8 +329,8 @@ exports[`#start() returns \`Context\` component 1`] = ` "euiSuggest.stateUnchanged": "State: unchanged.", "euiSuggest.stateUnsaved": "State: unsaved.", "euiSuggest.stateUnsavedTooltip": "Changes have not been saved.", + "euiSuperSelect.ariaLabel": "Select listbox", "euiSuperSelect.screenReaderAnnouncement": "You are in a form selector and must select a single option. Use the Up and Down arrow keys to navigate or Escape to close.", - "euiSuperSelectControl.selectAnOption": [Function], "euiSuperUpdateButton.cannotUpdateTooltip": "Cannot update", "euiSuperUpdateButton.clickToApplyTooltip": "Click to apply", "euiSuperUpdateButton.refreshButtonLabel": "Refresh", diff --git a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx index 5a50a74cc0f19..ccbe43cc8a865 100644 --- a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx +++ b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx @@ -1475,7 +1475,7 @@ export const getEuiContextMapping = (): EuiTokensObject => { 'core.euiSelectable.screenReaderInstructions', { defaultMessage: - 'Use up and down arrows to move focus over options. Enter to select. Escape to collapse options.', + 'Use the Up and Down arrow keys to move focus over options. Press Enter to select. Press Escape to collapse options.', } ), 'euiSelectable.searchResults': ({ resultsLength }: EuiValues) => @@ -1664,11 +1664,6 @@ export const getEuiContextMapping = (): EuiTokensObject => { 'You are in a form selector and must select a single option. Use the Up and Down arrow keys to navigate or Escape to close.', } ), - 'euiSuperSelectControl.selectAnOption': ({ selectedValue }: EuiValues) => - i18n.translate('core.euiSuperSelectControl.selectAnOption', { - defaultMessage: 'Select an option: {selectedValue}, is selected', - values: { selectedValue }, - }), 'euiSuperUpdateButton.cannotUpdateTooltip': i18n.translate( 'core.euiSuperUpdateButton.cannotUpdateTooltip', { @@ -1812,5 +1807,25 @@ export const getEuiContextMapping = (): EuiTokensObject => { defaultMessage: 'Loaded {contentAriaLabel}', values: { contentAriaLabel }, }), + 'euiDualRange.sliderScreenReaderInstructions': i18n.translate( + 'core.euiDualRange.sliderScreenReaderInstructions', + { + defaultMessage: + 'You are in a custom range slider. Use the Up and Down arrow keys to change the minimum value. Press Tab to interact with the maximum value.', + description: 'Screen reader instructions for changing dual range slider values.', + } + ), + 'euiRange.sliderScreenReaderInstructions': i18n.translate( + 'core.euiRange.sliderScreenReaderInstructions', + { + defaultMessage: + 'You are in a custom range slider. Use the Up and Down arrow keys to change the value.', + description: 'Screen reader instructions for changing range slider values.', + } + ), + 'euiSuperSelect.ariaLabel': i18n.translate('core.euiSuperSelect.ariaLabel', { + defaultMessage: 'Select listbox', + description: 'Accessible label for Super Selects without a visible label.', + }), }; }; diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index dff28e30ae76b..22fcfe39c36ef 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -84,6 +84,6 @@ export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint '@elastic/ems-client@8.4.0': ['Elastic License 2.0'], - '@elastic/eui@76.0.2': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@76.3.0': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry }; diff --git a/test/tsconfig.json b/test/tsconfig.json index acdb09e216171..cd738c09ff2ab 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -4,9 +4,10 @@ "outDir": "target/types", "types": [ "node", + "cheerio", "@emotion/react/types/css-prop", "@kbn/ambient-ui-types", - "@kbn/ambient-ftr-types", + "@kbn/ambient-ftr-types" ] }, "include": [ @@ -16,13 +17,9 @@ "api_integration/apis/logstash/pipeline/fixtures/*.json", "api_integration/apis/logstash/pipelines/fixtures/*.json", "api_integration/apis/telemetry/fixtures/*.json", - "api_integration/apis/telemetry/fixtures/*.json", - ], - "exclude": [ - "target/**/*", - "*/plugins/**/*", - "plugins/**/*", + "api_integration/apis/telemetry/fixtures/*.json" ], + "exclude": ["target/**/*", "*/plugins/**/*", "plugins/**/*"], "kbn_references": [ "@kbn/core", { "path": "../src/setup_node_env/tsconfig.json" }, @@ -68,6 +65,6 @@ "@kbn/safer-lodash-set", "@kbn/utility-types", "@kbn/dev-proc-runner", - "@kbn/enterprise-search-plugin", + "@kbn/enterprise-search-plugin" ] } diff --git a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_anomaly_rule_type/select_anomaly_severity.test.tsx b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_anomaly_rule_type/select_anomaly_severity.test.tsx index 4da53c6bb2623..49a936b562495 100644 --- a/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_anomaly_rule_type/select_anomaly_severity.test.tsx +++ b/x-pack/plugins/apm/public/components/alerting/rule_types/transaction_duration_anomaly_rule_type/select_anomaly_severity.test.tsx @@ -24,7 +24,10 @@ describe('SelectAnomalySeverity', () => { />, { wrapper: Wrapper } ); - const button = (await result.findAllByText('critical'))[1]; + + // SR-only text 'Critical, is selected' + // was removed here: https://github.com/elastic/eui/pull/6630#discussion_r1123655995 + const button = await result.findByText('critical'); button.click(); diff --git a/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx b/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx index 3cd200a5ab8ac..af9666211d39a 100644 --- a/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx @@ -34,8 +34,9 @@ describe('Severity form field', () => { // default to LOW in this test configuration it('defaults to the correct value', () => { const result = appMockRender.render(); - // two items. one for the popover one for the selected field - expect(result.getAllByTestId('case-severity-filter-low').length).toBe(2); + // Popver span and ID was removed here: + // https://github.com/elastic/eui/pull/6630#discussion_r1123655995 + expect(result.getAllByTestId('case-severity-filter-low').length).toBe(1); }); it('selects the correct value when changed', async () => { diff --git a/x-pack/plugins/cases/public/components/configure_cases/connectors_dropdown.test.tsx b/x-pack/plugins/cases/public/components/configure_cases/connectors_dropdown.test.tsx index b49d7d883b269..b659e5b187520 100644 --- a/x-pack/plugins/cases/public/components/configure_cases/connectors_dropdown.test.tsx +++ b/x-pack/plugins/cases/public/components/configure_cases/connectors_dropdown.test.tsx @@ -235,7 +235,7 @@ describe('ConnectorsDropdown', () => { .find('[data-test-subj="dropdown-connectors"]') .first() .text() - .includes('My SN connector, is selected') + .includes('My SN connector') ).toBeTruthy(); }); diff --git a/x-pack/plugins/cases/public/components/create/form_context.test.tsx b/x-pack/plugins/cases/public/components/create/form_context.test.tsx index 192de92777fb6..db3e18bc172c0 100644 --- a/x-pack/plugins/cases/public/components/create/form_context.test.tsx +++ b/x-pack/plugins/cases/public/components/create/form_context.test.tsx @@ -359,8 +359,9 @@ describe('Create case', () => { await waitForFormToRender(screen); expect(screen.getByTestId('caseSeverity')).toBeTruthy(); - // there should be 2 low elements. one for the options popover and one for the displayed one. - expect(screen.getAllByTestId('case-severity-selection-low').length).toBe(2); + // ID removed for options dropdown here: + // https://github.com/elastic/eui/pull/6630#discussion_r1123657852 + expect(screen.getAllByTestId('case-severity-selection-low').length).toBe(1); await waitForComponentToUpdate(); }); diff --git a/x-pack/plugins/cases/public/components/create/severity.test.tsx b/x-pack/plugins/cases/public/components/create/severity.test.tsx index b8a5b446b89f8..629a2e24f7fb5 100644 --- a/x-pack/plugins/cases/public/components/create/severity.test.tsx +++ b/x-pack/plugins/cases/public/components/create/severity.test.tsx @@ -54,8 +54,9 @@ describe('Severity form field', () => { ); expect(result.getByTestId('caseSeverity')).toBeTruthy(); - // two items. one for the popover one for the selected field - expect(result.getAllByTestId('case-severity-selection-low').length).toBe(2); + // ID removed for options dropdown here: + // https://github.com/elastic/eui/pull/6630#discussion_r1123657852 + expect(result.getAllByTestId('case-severity-selection-low').length).toBe(1); }); it('selects the correct value when changed', async () => { diff --git a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx index 9857400ab5ade..f227ece7a8749 100644 --- a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx +++ b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx @@ -37,7 +37,7 @@ describe('SelectSeverity', () => { ); // assert initial state - expect(getAllByText('warning')).toHaveLength(2); + expect(getAllByText('warning')).toHaveLength(1); expect(queryByText('minor')).not.toBeInTheDocument(); expect(queryByText('major')).not.toBeInTheDocument(); expect(queryByText('critical')).not.toBeInTheDocument(); @@ -48,7 +48,7 @@ describe('SelectSeverity', () => { }); // assert open popover - expect(getAllByText('warning')).toHaveLength(3); + expect(getAllByText('warning')).toHaveLength(2); expect(getAllByText('minor')).toHaveLength(1); expect(getAllByText('major')).toHaveLength(1); expect(getAllByText('critical')).toHaveLength(1); @@ -63,7 +63,7 @@ describe('SelectSeverity', () => { await waitFor(() => { expect(queryByText('warning')).not.toBeInTheDocument(); expect(queryByText('minor')).not.toBeInTheDocument(); - expect(getAllByText('major')).toHaveLength(2); + expect(getAllByText('major')).toHaveLength(1); expect(queryByText('critical')).not.toBeInTheDocument(); }); }); diff --git a/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts b/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts index 5bd6d4c1222b1..52da0a786fdb6 100644 --- a/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts +++ b/x-pack/plugins/observability/e2e/journeys/step_duration.journey.ts @@ -63,7 +63,7 @@ journey('Exploratory view', async ({ page, params }) => { await page.click('[aria-label="Remove report metric"]'); await page.click('button:has-text("Select report metric")'); await page.click('button:has-text("Step duration")'); - await page.click('text=Select an option: Monitor type, is selectedMonitor type >> button'); + await page.click('button[data-test-subj="seriesBreakdown"]:has-text("Monitor type")'); await page.click('button[role="option"]:has-text("Step name")'); await page.click('.euiComboBox__inputWrap'); await page.click( diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx index f33eb3d515c15..94761f3611869 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx @@ -14,7 +14,9 @@ describe('OperationTypeSelect', function () { it('should render properly', function () { render(); - screen.getByText('Select an option: , is selected'); + // SR-only text 'Select an option: , is selected' + // was removed here: https://github.com/elastic/eui/pull/6630#discussion_r1123655995 + screen.getByRole('button'); }); it('should display selected value', function () { diff --git a/x-pack/plugins/synthetics/e2e/journeys/synthetics/management_list.journey.ts b/x-pack/plugins/synthetics/e2e/journeys/synthetics/management_list.journey.ts index f9751d37c6a41..685fe3986f23f 100644 --- a/x-pack/plugins/synthetics/e2e/journeys/synthetics/management_list.journey.ts +++ b/x-pack/plugins/synthetics/e2e/journeys/synthetics/management_list.journey.ts @@ -66,25 +66,22 @@ journey(`MonitorManagementList`, async ({ page, params }) => { await page.click('[aria-label="expands filter group for Type filter"]'); }); - step( - 'Click [aria-label="Use up and down arrows to move focus over options. Enter to select. Escape to collapse options."] >> text="Journey / Page"', - async () => { - await page.click( - '[aria-label="Use up and down arrows to move focus over options. Enter to select. Escape to collapse options."] >> text="Journey / Page"' - ); - await page.click('[aria-label="Apply the selected filters for Type"]'); - expect(page.url()).toBe(`${pageBaseUrl}?monitorTypes=%5B%22browser%22%5D`); - await page.click('[placeholder="Search by name, url, host, tag, project or location"]'); - await Promise.all([ - page.waitForNavigation({ - url: `${pageBaseUrl}?monitorTypes=%5B%22browser%22%5D&query=3`, - }), - page.fill('[placeholder="Search by name, url, host, tag, project or location"]', '3'), - ]); - await page.click('text=1-1'); - await page.waitForSelector('text=Showing 1-1 of 1 Configuration'); - } - ); + step('Click listbox option >> text="Journey / Page"', async () => { + // Refactored the aria-label in https://github.com/elastic/eui/pull/6589 + // to an aria-describedby so it would be announced on EuiSelectable focus. + await page.click('span >> text="Journey / Page"'); + await page.click('[aria-label="Apply the selected filters for Type"]'); + expect(page.url()).toBe(`${pageBaseUrl}?monitorTypes=%5B%22browser%22%5D`); + await page.click('[placeholder="Search by name, url, host, tag, project or location"]'); + await Promise.all([ + page.waitForNavigation({ + url: `${pageBaseUrl}?monitorTypes=%5B%22browser%22%5D&query=3`, + }), + page.fill('[placeholder="Search by name, url, host, tag, project or location"]', '3'), + ]); + await page.click('text=1-1'); + await page.waitForSelector('text=Showing 1-1 of 1 Configuration'); + }); step('when no results appears', async () => { await searchBarInput.click(); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 44e708898f043..c0635ec59ccf5 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -610,7 +610,6 @@ "core.euiStepStrings.simpleWarning": "L'étape {number} comporte des avertissements", "core.euiStepStrings.step": "Étape {number} : {title}", "core.euiStepStrings.warning": "L'étape {number} : {title} comporte des avertissements", - "core.euiSuperSelectControl.selectAnOption": "Choisir une option : {selectedValue} est sélectionné", "core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}", "core.euiTablePagination.rowsPerPageOption": "{rowsPerPage} lignes", "core.euiTourStepIndicator.ariaLabel": "Étape {number} {status}", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 73d7fd9092bdf..93a6762ecb76b 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -610,7 +610,6 @@ "core.euiStepStrings.simpleWarning": "ステップ{number}には警告があります", "core.euiStepStrings.step": "ステップ{number}:{title}", "core.euiStepStrings.warning": "ステップ{number}:{title}には警告があります", - "core.euiSuperSelectControl.selectAnOption": "オプションの選択:{selectedValue}件を選択済み", "core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}", "core.euiTablePagination.rowsPerPageOption": "{rowsPerPage}行", "core.euiTourStepIndicator.ariaLabel": "ステップ{number}{status}", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 82772da05a897..f4e2a62b5dd3c 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -610,7 +610,6 @@ "core.euiStepStrings.simpleWarning": "第 {number} 步有警告", "core.euiStepStrings.step": "第 {number} 步:{title}", "core.euiStepStrings.warning": "第 {number} 步:{title} 有警告", - "core.euiSuperSelectControl.selectAnOption": "选择选项:{selectedValue} 已选", "core.euiTableHeaderCell.titleTextWithDesc": "{innerText}; {description}", "core.euiTablePagination.rowsPerPageOption": "{rowsPerPage} 行", "core.euiTourStepIndicator.ariaLabel": "第 {number} 步{status}", diff --git a/yarn.lock b/yarn.lock index 809ac4d1acf6e..9f00e1ed2fb85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1543,10 +1543,10 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@76.0.2": - version "76.0.2" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-76.0.2.tgz#5b99730de10785167b4ab98fcfdb8717018343ce" - integrity sha512-HB6HyjkWQ6akYBcIWl9vGenONpymP3q8cYUui/g4DS3/WPUp8R0jV/zEryjlJ5HyJ4Vp3THDoKtCmIEVy+wZvg== +"@elastic/eui@76.3.0": + version "76.3.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-76.3.0.tgz#65ab0d106a6da4ed962454c59148a9743f61f1e4" + integrity sha512-faSemLNfRvOcNFRYk6t7f9sep8ekOawppEGs2opKiSPDBefd5JNawMzluHYpnmIJuHqlCRVjP/Ph6yWvJwWfQg== dependencies: "@types/chroma-js" "^2.0.0" "@types/lodash" "^4.14.160"