Skip to content

Conversation

smith
Copy link
Contributor

@smith smith commented Sep 23, 2025

Summary

When the user settings request reduced motion, the EUI progress component does not respect this setting. Fix this by only animating it when reduced motion is not requested.

Why are we making this change?

The prefers-reduced-motion media feature detects whether a user has requested reduced animations. The can be because of vestibular disorders, or maybe they just prefer not to see the page light up like a slot machine every time you request more data.

Screenshots #

CleanShot 2025-09-25 at 21 45 00

Impact to users

  • If no preference for reduced motion: No change
  • If prefers reduced motion: Shows a static bar instead of a moving one

QA

Remove or strikethrough items that do not apply to your PR.

General checklist

  • Browser QA
    • Checked in both light and dark modes
    • Checked in both MacOS and Windows high contrast modes
    • Checked in mobile
    • Checked in Chrome, Safari, Edge, and Firefox
    • Checked for accessibility including keyboard-only and screenreader modes
  • Docs site QA
  • Code quality checklist
  • Release checklist
    • A changelog entry exists and is marked appropriately.
    • If applicable, added the breaking change issue label (and filled out the breaking change checklist)
  • Designer checklist
    • If applicable, file an issue to update EUI's Figma library with any corresponding UI changes. (This is an internal repo, if you are external to Elastic, ask a maintainer to submit this request)

@smith smith marked this pull request as ready for review September 23, 2025 18:40
@smith smith requested a review from a team as a code owner September 23, 2025 18:40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @smith could we drop this change? 😄 It will conflict with our changelog CI check: #9041

What's the reason for this change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I had a note about this that I meant to add to the PR description but didn't get saved: When you follow the link from GitHub to the action, then see the output, and click on the link, GitHub automatically includes the trailing ".", so you end up at a 404 page.

I can remove this change if you need me to.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good catch! I think you could drop it and it can be updated on: #9041

Copy link
Contributor

@weronikaolejniczak weronikaolejniczak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a fantastic change, thank you for contributing, @smith! 🙌🏻

If the progress bar is in indeterminate state, there still should be some loading indication, right? @alexwizp @bhavyarm

@alexwizp
Copy link
Contributor

I vote in case of prefers-reduced-motion: reduce have something like instead of just a 100% green line

image

@smith
Copy link
Contributor Author

smith commented Sep 25, 2025

I vote in case of prefers-reduced-motion: reduce have something like instead of just a 100% green line

@alexwizp what percentage are you showing there?

@alexwizp
Copy link
Contributor

I see that as 21%

image

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

Copy link
Contributor

@weronikaolejniczak weronikaolejniczak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@smith I love the striped version 👍🏻 it gives a sense of motion without actual motion, and it doesn't look like determinate loading. Thank you for cleaning up the code! 🟢 From my side it's good to go but I'd love to hear what @JoseLuisGJ @ek-so have to say. If we can proceed with this.

@ek-so
Copy link
Contributor

ek-so commented Sep 26, 2025

Hey @weronikaolejniczak @smith thank you! Just to be clear: we propose to have no animation at all, just a striped static line, right? (I'm asking because on the screenshot I see that there's first an animation, and only then the stripe appears).

I'm generally ok with this. And then we should probably apply the same approach to the spinner, i.e. make it a static picture that looks like it's spinning (for example like this, approximately).

@weronikaolejniczak
Copy link
Contributor

weronikaolejniczak commented Sep 26, 2025

@ek-so that's right, Kate! On the gif Nathan is toggling between the "Reduce motion" preference to show that it works. That's why it changes from an animation to the stripes and back.

As for the spinner, could you create a design ticket for this with how it should look like? 🙏🏻

@weronikaolejniczak weronikaolejniczak merged commit b3a1841 into elastic:main Sep 26, 2025
5 checks passed
mgadewoll added a commit that referenced this pull request Oct 2, 2025
acstll added a commit to elastic/kibana that referenced this pull request Oct 9, 2025
- `@elastic/eui`: `v106.6.0` ⏩ `v106.7.0`
- `@elastic/eui-theme-borealis`: `v3.4.0` ⏩ `v3.5.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

---

## Changes

- replaced usages of `EuiButtonEmpty` in Discover `change_dataview` and
`EuiFilterButton` in Dashboard `options_list_control `with the newly
added `EuiFormControlButton` component to ensure cohesive form layout
styling (EUI [#9006](elastic/eui#9006))

**Discover**

| before | after |
|---|---|
| <img width="434" height="369" alt="Screenshot 2025-10-07 at 22 13 23"
src="https://github.com/user-attachments/assets/488984a0-a6a1-488e-8db5-588c84be6765"
/> | <img width="418" height="365" alt="Screenshot 2025-10-07 at 22 20
16"
src="https://github.com/user-attachments/assets/16164d3f-0b8d-4ceb-a971-a10a6d1f5aee"
/> |
| <img width="432" height="371" alt="Screenshot 2025-10-07 at 22 12 39"
src="https://github.com/user-attachments/assets/37fd32f5-6d15-459d-9e14-776a671b7fd6"
/> | <img width="423" height="372" alt="Screenshot 2025-10-07 at 22 21
16"
src="https://github.com/user-attachments/assets/846eb3f6-7d39-4c6e-9e22-42b694f9a276"
/> |

**Dashboard**

| before | after |
|---|---|
| <img width="475" height="288" alt="Screenshot 2025-10-07 at 22 13 13"
src="https://github.com/user-attachments/assets/4ff88734-18d7-456a-991d-ba491550a4dd"
/> | <img width="432" height="292" alt="Screenshot 2025-10-07 at 17 44
25"
src="https://github.com/user-attachments/assets/6e97337f-11e6-4213-a80b-5424dcb3ee38"
/> |
| <img width="475" height="289" alt="Screenshot 2025-10-07 at 22 12 51"
src="https://github.com/user-attachments/assets/dcbd1470-8bdd-453a-8fc0-20da26bc3e27"
/> | <img width="471" height="288" alt="Screenshot 2025-10-07 at 21 44
36"
src="https://github.com/user-attachments/assets/7f2c5b10-44cf-4efc-a902-dd72889b3043"
/> |


## Package updates

## [`v106.7.0`](https://github.com/elastic/eui/releases/v106.7.0)

- Updated `EuiComboBox` to properly break long strings without spaces
when `rowHeight="auto"`
([#9063](elastic/eui#9063))
- Added `data-test-subj` support to `EuiDatePicker` and
`EuiDatePickerRange` for improved testability. Propagates to main
component wrappers, inputs, clear buttons, calendar navigation, and
popover panels. ([#9042](elastic/eui#9042))
- Added `streamsClassic` and `streamsWired` icons
([#9017](elastic/eui#9017))
- Updated icons based on feedback: `boxesVertical`, `documentation`,
`error`, `export`, `filter`, `filterExclude`, `filterIgnore`,
`filterInclude`, `grab`, `grabOmnidirectional`, `grabHorizontal`,
`importAction`, `indexTemporary`, `link`, `list`,
`magnifyWithExclamation`, `magnifyWithMinus`, `magnifyWithPlus`,
`minus`, `minusInCircle`, `pencil`, `pin`, `pinFilled`, `plus`,
`plusInCircle`, `question`, `search`, `sortLeft`, `sortRight`,
`sortDown`, `sortUp`, `sortable`, `unlink`.
([#9026](elastic/eui#9026))
- Added new icon: `backgroundTask`.
([#9026](elastic/eui#9026))
- Marked icons for deprecation: `boxesHorizontal`,
`checkInCircleFilled`, `copyClipboard`, `documentEdit`, `errorFilled`,
`expandMini`, `filterInCircle`, `lettering`, `listAdd`,
`minusInCircleFilled`, `newChat`, `playFilled`, `plusInCircleFilled`,
`submodule`, `tableDensityNormal`, `warningFilled`.
([#9026](elastic/eui#9026))
- Added `workflowsApp` icon
([#9011](elastic/eui#9011))
- Added `EuiFormControlButton` component for usage as input-styled
button within `EuiFormControlLayout`
([#9006](elastic/eui#9006))
- Updated `EuiSuperDatePicker` to use `EuiFormControlButton` when a
prettified duration button is rendered
([#9006](elastic/eui#9006))

**Bug fixes**

- Fixed `EuiInMemoryTable` not firing the `search.onChange` callback
when `searchFormat` equals `text`.
([#9059](elastic/eui#9059))
- Fixed `columns` in `EuiDataGrid` not being rendered in the correct
order as defined by `columnVisibility.visibleColumns` which resulted in
unexpected updates when reordering columns
([#9030](elastic/eui#9030))

**Accessibility**

- Improved color contrast of non-interactive `EuiBreadcrumbs` items in
dark mode ([#9071](elastic/eui#9071))
- Make `EuiProgress` respect user's reduced motion setting by not
animating when in indeterminite state.
([#9054](elastic/eui#9054))

### `@elastic/eui-theme-borealis`

##
[`v3.5.0`](https://github.com/elastic/eui/blob/main/packages/eui-theme-borealis/changelogs/CHANGELOG_2025.md#v350)

- Updated color value of `textSubdued` and legacy `subduedText` in dark
mode from `#8E9FBC` to `#98A8C3`
([#9071](elastic/eui#9071))

**Bug fixes**

- Fixed values of `$euiFormBackground` and
`$euiFormBackgroundReadOnlyColor` to match JS tokens
([#9067](elastic/eui#9067))

---------

Co-authored-by: Elastic Machine <[email protected]>
Co-authored-by: Lene Gadewoll <[email protected]>
rylnd pushed a commit to rylnd/kibana that referenced this pull request Oct 17, 2025
- `@elastic/eui`: `v106.6.0` ⏩ `v106.7.0`
- `@elastic/eui-theme-borealis`: `v3.4.0` ⏩ `v3.5.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

---

## Changes

- replaced usages of `EuiButtonEmpty` in Discover `change_dataview` and
`EuiFilterButton` in Dashboard `options_list_control `with the newly
added `EuiFormControlButton` component to ensure cohesive form layout
styling (EUI [elastic#9006](elastic/eui#9006))

**Discover**

| before | after |
|---|---|
| <img width="434" height="369" alt="Screenshot 2025-10-07 at 22 13 23"
src="https://github.com/user-attachments/assets/488984a0-a6a1-488e-8db5-588c84be6765"
/> | <img width="418" height="365" alt="Screenshot 2025-10-07 at 22 20
16"
src="https://github.com/user-attachments/assets/16164d3f-0b8d-4ceb-a971-a10a6d1f5aee"
/> |
| <img width="432" height="371" alt="Screenshot 2025-10-07 at 22 12 39"
src="https://github.com/user-attachments/assets/37fd32f5-6d15-459d-9e14-776a671b7fd6"
/> | <img width="423" height="372" alt="Screenshot 2025-10-07 at 22 21
16"
src="https://github.com/user-attachments/assets/846eb3f6-7d39-4c6e-9e22-42b694f9a276"
/> |

**Dashboard**

| before | after |
|---|---|
| <img width="475" height="288" alt="Screenshot 2025-10-07 at 22 13 13"
src="https://github.com/user-attachments/assets/4ff88734-18d7-456a-991d-ba491550a4dd"
/> | <img width="432" height="292" alt="Screenshot 2025-10-07 at 17 44
25"
src="https://github.com/user-attachments/assets/6e97337f-11e6-4213-a80b-5424dcb3ee38"
/> |
| <img width="475" height="289" alt="Screenshot 2025-10-07 at 22 12 51"
src="https://github.com/user-attachments/assets/dcbd1470-8bdd-453a-8fc0-20da26bc3e27"
/> | <img width="471" height="288" alt="Screenshot 2025-10-07 at 21 44
36"
src="https://github.com/user-attachments/assets/7f2c5b10-44cf-4efc-a902-dd72889b3043"
/> |


## Package updates

## [`v106.7.0`](https://github.com/elastic/eui/releases/v106.7.0)

- Updated `EuiComboBox` to properly break long strings without spaces
when `rowHeight="auto"`
([elastic#9063](elastic/eui#9063))
- Added `data-test-subj` support to `EuiDatePicker` and
`EuiDatePickerRange` for improved testability. Propagates to main
component wrappers, inputs, clear buttons, calendar navigation, and
popover panels. ([elastic#9042](elastic/eui#9042))
- Added `streamsClassic` and `streamsWired` icons
([elastic#9017](elastic/eui#9017))
- Updated icons based on feedback: `boxesVertical`, `documentation`,
`error`, `export`, `filter`, `filterExclude`, `filterIgnore`,
`filterInclude`, `grab`, `grabOmnidirectional`, `grabHorizontal`,
`importAction`, `indexTemporary`, `link`, `list`,
`magnifyWithExclamation`, `magnifyWithMinus`, `magnifyWithPlus`,
`minus`, `minusInCircle`, `pencil`, `pin`, `pinFilled`, `plus`,
`plusInCircle`, `question`, `search`, `sortLeft`, `sortRight`,
`sortDown`, `sortUp`, `sortable`, `unlink`.
([elastic#9026](elastic/eui#9026))
- Added new icon: `backgroundTask`.
([elastic#9026](elastic/eui#9026))
- Marked icons for deprecation: `boxesHorizontal`,
`checkInCircleFilled`, `copyClipboard`, `documentEdit`, `errorFilled`,
`expandMini`, `filterInCircle`, `lettering`, `listAdd`,
`minusInCircleFilled`, `newChat`, `playFilled`, `plusInCircleFilled`,
`submodule`, `tableDensityNormal`, `warningFilled`.
([elastic#9026](elastic/eui#9026))
- Added `workflowsApp` icon
([elastic#9011](elastic/eui#9011))
- Added `EuiFormControlButton` component for usage as input-styled
button within `EuiFormControlLayout`
([elastic#9006](elastic/eui#9006))
- Updated `EuiSuperDatePicker` to use `EuiFormControlButton` when a
prettified duration button is rendered
([elastic#9006](elastic/eui#9006))

**Bug fixes**

- Fixed `EuiInMemoryTable` not firing the `search.onChange` callback
when `searchFormat` equals `text`.
([elastic#9059](elastic/eui#9059))
- Fixed `columns` in `EuiDataGrid` not being rendered in the correct
order as defined by `columnVisibility.visibleColumns` which resulted in
unexpected updates when reordering columns
([elastic#9030](elastic/eui#9030))

**Accessibility**

- Improved color contrast of non-interactive `EuiBreadcrumbs` items in
dark mode ([elastic#9071](elastic/eui#9071))
- Make `EuiProgress` respect user's reduced motion setting by not
animating when in indeterminite state.
([elastic#9054](elastic/eui#9054))

### `@elastic/eui-theme-borealis`

##
[`v3.5.0`](https://github.com/elastic/eui/blob/main/packages/eui-theme-borealis/changelogs/CHANGELOG_2025.md#v350)

- Updated color value of `textSubdued` and legacy `subduedText` in dark
mode from `#8E9FBC` to `#98A8C3`
([elastic#9071](elastic/eui#9071))

**Bug fixes**

- Fixed values of `$euiFormBackground` and
`$euiFormBackgroundReadOnlyColor` to match JS tokens
([elastic#9067](elastic/eui#9067))

---------

Co-authored-by: Elastic Machine <[email protected]>
Co-authored-by: Lene Gadewoll <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants