From da11a67c4ed468fff609cc501a260c0aa95b5c3f Mon Sep 17 00:00:00 2001
From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com>
Date: Thu, 18 Mar 2021 10:35:58 +0000
Subject: [PATCH] Grafana/ui: display all selected levels for selected value
when searching (#32030) (#32032)
* display all levels for selected values when searching if needed
* add test
(cherry picked from commit e5ca13deb66a64a4d577930ca949d49b3f77c663)
Co-authored-by: Vicky Lee <36230812+vickyyyyyyy@users.noreply.github.com>
---
.../src/components/Cascader/Cascader.test.tsx | 11 +++++++++++
.../grafana-ui/src/components/Cascader/Cascader.tsx | 4 ++--
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/packages/grafana-ui/src/components/Cascader/Cascader.test.tsx b/packages/grafana-ui/src/components/Cascader/Cascader.test.tsx
index a49c383bbc4..efbd9b2e6c2 100644
--- a/packages/grafana-ui/src/components/Cascader/Cascader.test.tsx
+++ b/packages/grafana-ui/src/components/Cascader/Cascader.test.tsx
@@ -88,6 +88,17 @@ describe('Cascader', () => {
expect(screen.getByText('First / Third')).toBeInTheDocument();
});
+ it('displays selected value with all levels when displayAllSelectedLevels is true and selecting a value from the search', () => {
+ render(
+
+ );
+
+ userEvent.type(screen.getByPlaceholderText(placeholder), 'Third');
+ userEvent.click(screen.getByText('First / Third'));
+
+ expect(screen.getByDisplayValue('First / Third')).toBeInTheDocument();
+ });
+
it('displays all levels selected with default separator when displayAllSelectedLevels is true', () => {
render(
{}} />
diff --git a/packages/grafana-ui/src/components/Cascader/Cascader.tsx b/packages/grafana-ui/src/components/Cascader/Cascader.tsx
index c3e2fcd695e..5cd45e15849 100644
--- a/packages/grafana-ui/src/components/Cascader/Cascader.tsx
+++ b/packages/grafana-ui/src/components/Cascader/Cascader.tsx
@@ -105,7 +105,7 @@ export class Cascader extends React.PureComponent
if (optionPath.indexOf(initValue) === optionPath.length - 1) {
return {
rcValue: optionPath,
- activeLabel: option.singleLabel || '',
+ activeLabel: this.props.displayAllSelectedLevels ? option.label : option.singleLabel || '',
};
}
}
@@ -132,7 +132,7 @@ export class Cascader extends React.PureComponent
onSelect = (obj: SelectableValue) => {
const valueArray = obj.value || [];
this.setState({
- activeLabel: obj.singleLabel || '',
+ activeLabel: this.props.displayAllSelectedLevels ? obj.label : obj.singleLabel || '',
rcValue: valueArray,
isSearching: false,
});