Skip to content

Conversation

@tsullivan
Copy link
Member

@tsullivan tsullivan commented Nov 8, 2016

This PR fixes the navLink generated from a plugin spec object to include the linkToLastSubUrl setting. Without this, the linkToLastSubUrl is always undefined, which by default is treated as if the setting was true.

Scenario:

  1. Create a plugin with a boolean set to false for uiExports.app.linkToLastSubUrl:
    export default function myPluginIndex(kibana) {
      return new kibana.Plugin({
        require: ['kibana', 'elasticsearch'],
        id: 'myPlugin',
        publicDir: resolve(__dirname, 'public'),
        uiExports: {
          app: {
            title: 'My Plugin',
            order: 200,
            description: 'Test Plugin Setup',
            icon: 'plugins/myPlugin/myPlugin.svg',
            main: 'plugins/myPlugin/myPlugin',
            linkToLastSubUrl: false // this one is the relevant field for this bug
          }
        },
        config: function (Joi) {
          // ...
        }
      });
    }
  2. Expect that the linkToLastSubUrl setting will be set to false for this app plugin's navLink
  3. Find that the linkToLastSubUrl field of the navLink is enabled as if the setting was true.

@tsullivan tsullivan added bug Fixes for quality problems that affect the customer experience v5.1.0 v6.0.0 labels Nov 8, 2016
@tsullivan
Copy link
Member Author

Note that the toJSON method doesn't appear to be used anywhere, not even in unit tests: https://github.com/elastic/kibana/pull/9011/files#diff-d79d2eb3a74f8afdf08d74679f0094eeR67

@cjcenizal
Copy link
Contributor

Just needs some tests, and then I can give a 👍 !

@tsullivan tsullivan force-pushed the fix/ui-app-linkToLastUrl branch from ec33a27 to ec03175 Compare November 15, 2016 20:32
@tsullivan
Copy link
Member Author

@cjcenizal added some tests for src/ui/ui_app

@tsullivan tsullivan force-pushed the fix/ui-app-linkToLastUrl branch from ec03175 to 5da3b9b Compare November 18, 2016 22:40
@tsullivan
Copy link
Member Author

@cjcenizal I made some updates to the test to analyze each field in the output objects in a better way, as you suggested.

@tsullivan tsullivan force-pushed the fix/ui-app-linkToLastUrl branch from 5da3b9b to f72e45a Compare November 18, 2016 22:42
Copy link
Contributor

@cjcenizal cjcenizal left a comment

Choose a reason for hiding this comment

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

Awesome work! I have some suggestions, but will leave it up to you to decide whether or not to implement them.

expect(isUndefined(newApp.icon)).to.be(true);

expect('linkToLastSubUrl' in newApp).to.be(true);
expect(isUndefined(newApp.linkToLastSubUrl)).to.be(true);
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we make these assert against undefined instead?

expect(newApp.linkToLastSubUrl).to.be(undefined);

I think this will improve the messages we see in the terminal. As the tests currently are, they will say something like "expected true but got false", which won't give you any insight into what the actual value of the property was. If we change it, the message will be something like "expected undefined but got 'value'".

Copy link
Member Author

Choose a reason for hiding this comment

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

I deliberately didn't do that because it wouldn't actually assure anything. In JS, a field that was never set on an object evaluates to undefined

> const fooObj = {};
undefined
> fooObj.bar === undefined
true

The in operator was the only way I know of to test that a field has actually been set:

> 'bar' in fooObj
false
> fooObj.bar = 1;
1
> 'bar' in fooObj
true

Copy link
Contributor

@cjcenizal cjcenizal Nov 22, 2016

Choose a reason for hiding this comment

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

In the docs they give an example making an assertion that something is undefined:

expect(window.r).to.be(undefined);

I think all that matters in this case is that the default values of various properties is undefined when they're undefined by the spec argument. It doesn't matter whether the internal implementation is something like

this.main = this.spec.main;

or

if (this.spec.main) {
  this.main = this.spec.main;
}


it('copies field values from spec', () => {
// test that the fields exist, but have undefined value
expect(newApp.main).to.be('main.js');
Copy link
Contributor

Choose a reason for hiding this comment

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

Small suggestion, but we can make these tests a bit less brittle by asserting against a reference to the spec here, e.g.

expect(newApp.main).to.be(spec.main);

});

describe('getInjectedVars', () => {
it('noop function by default', () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Another small suggestion, but I like to make sure the message in the terminal forms a grammatically-correct sentence, e.g. by changing this to 'is noop function by default', we will get the message:

UiApp constructor getInjectedVars is noop function by default

vs

UiApp constructor getInjectedVars noop function by default

});
});

describe('hidden and listed', () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

When I was reading these tests, I was having a hard time figuring out how these two properties interacted. After I read the source, I saw that listed was dependent on hidden, and that hidden was cast to a boolean values.

I think this structure makes that relationship a little clearer. What do you think?

    describe('hidden', () => {
      describe('is cast to boolean value', () => {
        it('when undefined', () => {
          const spec = {
            id: 'uiapp-test',
          };
          const newApp = new UiApp(uiExports, spec);
          expect(newApp.hidden).to.be(false);
        });

        it('when null', () => {
          const spec = {
            id: 'uiapp-test',
            hidden: null,
          };
          const newApp = new UiApp(uiExports, spec);
          expect(newApp.hidden).to.be(false);
        });
      });
    });

    describe('listed', () => {
      it('when null defaults to the opposite value of hidden, when hidden is true', () => {
        const spec = {
          id: 'uiapp-test',
          hidden: true,
          listed: null,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(false);
      });

      it('when null defaults to the opposite value of hidden, when hidden is false', () => {
        const spec = {
          id: 'uiapp-test',
          hidden: false,
          listed: null,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(true);
      });

      it('when undefined defaults to the opposite value of hidden, when hidden is false', () => {
        const spec = {
          id: 'uiapp-test',
          hidden: false,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(true);
      });

      it('when undefined defaults to the opposite value of hidden, when hidden is true', () => {
        const spec = {
          id: 'uiapp-test',
          hidden: true,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(false);
      });

      it('when true is set to true', () => {
        const spec = {
          id: 'uiapp-test',
          listed: true,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(true);
      });

      it('when false is set to false', () => {
        const spec = {
          id: 'uiapp-test',
          listed: false,
        };
        const newApp = new UiApp(uiExports, spec);
        expect(newApp.listed).to.be(false);
      });
    });

@epixa epixa added v5.2.0 and removed v5.1.0 labels Nov 30, 2016
@tsullivan
Copy link
Member Author

I don't need this feature in the foreseeable future, so I'm going to close this.

@tsullivan tsullivan closed this Jan 30, 2017
@tsullivan tsullivan changed the title Allow plugin app to specify linkToLastUrl Allow plugins to turn off the “link to last URL” navigation helper Jul 21, 2017
acstll added a commit 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 <elasticmachine@users.noreply.github.com>
Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
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 <elasticmachine@users.noreply.github.com>
Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
nickpeihl pushed a commit to nickpeihl/kibana that referenced this pull request Oct 23, 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 <elasticmachine@users.noreply.github.com>
Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Oct 27, 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 <elasticmachine@users.noreply.github.com>
Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Fixes for quality problems that affect the customer experience v6.0.0-rc1 v6.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants