From 6a4d191b95cdf2eb92c281cfa51a99faa919a520 Mon Sep 17 00:00:00 2001 From: Mathieu Suen Date: Thu, 25 Aug 2022 10:40:04 +0200 Subject: [PATCH] SONAR-16789, SONAR-16965 Group of checkboxes is missing
--- .../activity-graph/AddGraphMetricPopup.tsx | 3 +- .../AddGraphMetricPopup-test.tsx.snap | 9 +- .../main/js/components/common/MultiSelect.tsx | 75 +++--- .../common/__tests__/MultiSelect-test.tsx | 5 +- .../__snapshots__/MultiSelect-test.tsx.snap | 238 ++++++++++-------- .../main/js/components/tags/TagsSelector.tsx | 1 + .../__snapshots__/TagsSelector-test.tsx.snap | 2 + .../resources/org/sonar/l10n/core.properties | 2 + 8 files changed, 183 insertions(+), 152 deletions(-) diff --git a/server/sonar-web/src/main/js/components/activity-graph/AddGraphMetricPopup.tsx b/server/sonar-web/src/main/js/components/activity-graph/AddGraphMetricPopup.tsx index 6b0b8d23552..5e7f78e6e44 100644 --- a/server/sonar-web/src/main/js/components/activity-graph/AddGraphMetricPopup.tsx +++ b/server/sonar-web/src/main/js/components/activity-graph/AddGraphMetricPopup.tsx @@ -69,10 +69,11 @@ export default function AddGraphMetricPopup({ elements={elements} filterSelected={props.filterSelected} footerNode={footerNode} + legend={translate('project_activity.graphs.custom.select_metric')} onSearch={props.onSearch} onSelect={(item: string) => elements.includes(item) && props.onSelect(item)} onUnselect={props.onUnselect} - placeholder={translate('search.search_for_tags')} + placeholder={translate('search.search_for_metrics')} renderLabel={props.renderLabel} selectedElements={props.selectedElements} /> diff --git a/server/sonar-web/src/main/js/components/activity-graph/__tests__/__snapshots__/AddGraphMetricPopup-test.tsx.snap b/server/sonar-web/src/main/js/components/activity-graph/__tests__/__snapshots__/AddGraphMetricPopup-test.tsx.snap index f914a1314a5..3070ede9761 100644 --- a/server/sonar-web/src/main/js/components/activity-graph/__tests__/__snapshots__/AddGraphMetricPopup-test.tsx.snap +++ b/server/sonar-web/src/main/js/components/activity-graph/__tests__/__snapshots__/AddGraphMetricPopup-test.tsx.snap @@ -10,11 +10,12 @@ exports[`should render correctly 1`] = ` elements={Array []} filterSelected={[MockFunction]} footerNode="" + legend="project_activity.graphs.custom.select_metric" listSize={0} onSearch={[MockFunction]} onSelect={[Function]} onUnselect={[MockFunction]} - placeholder="search.search_for_tags" + placeholder="search.search_for_metrics" renderLabel={[Function]} selectedElements={Array []} validateSearchInput={[Function]} @@ -39,11 +40,12 @@ exports[`should render correctly whith 6+ selected elements 1`] = ` project_activity.graphs.custom.add_metric_info } + legend="project_activity.graphs.custom.select_metric" listSize={0} onSearch={[MockFunction]} onSelect={[Function]} onUnselect={[MockFunction]} - placeholder="search.search_for_tags" + placeholder="search.search_for_metrics" renderLabel={[Function]} selectedElements={ Array [ @@ -77,11 +79,12 @@ exports[`should render correctly with type filter 1`] = ` project_activity.graphs.custom.type_x_message.metric.type.filter1, metric.type.filter2 } + legend="project_activity.graphs.custom.select_metric" listSize={0} onSearch={[MockFunction]} onSelect={[Function]} onUnselect={[MockFunction]} - placeholder="search.search_for_tags" + placeholder="search.search_for_metrics" renderLabel={[Function]} selectedElements={Array []} validateSearchInput={[Function]} diff --git a/server/sonar-web/src/main/js/components/common/MultiSelect.tsx b/server/sonar-web/src/main/js/components/common/MultiSelect.tsx index 942721bf728..703df7b833f 100644 --- a/server/sonar-web/src/main/js/components/common/MultiSelect.tsx +++ b/server/sonar-web/src/main/js/components/common/MultiSelect.tsx @@ -29,6 +29,7 @@ import MultiSelectOption from './MultiSelectOption'; export interface MultiSelectProps { allowNewElements?: boolean; allowSelection?: boolean; + legend: string; elements: string[]; // eslint-disable-next-line react/no-unused-prop-types filterSelected?: (query: string, selectedElements: string[]) => string[]; @@ -258,7 +259,7 @@ export default class MultiSelect extends React.PureComponent -
    - {selectedElements.length > 0 && - selectedElements.map(element => ( +
    +
      + {selectedElements.length > 0 && + selectedElements.map(element => ( + + ))} + {unselectedElements.length > 0 && + unselectedElements.map(element => ( + + ))} + {showNewElement && ( - ))} - {unselectedElements.length > 0 && - unselectedElements.map(element => ( - - ))} - {showNewElement && ( - - )} - {!showNewElement && selectedElements.length < 1 && unselectedElements.length < 1 && ( -
    • {translateWithParameters('no_results_for_x', query)}
    • - )} -
    + )} + {!showNewElement && selectedElements.length < 1 && unselectedElements.length < 1 && ( +
  • {translateWithParameters('no_results_for_x', query)}
  • + )} +
+
{footerNode} ); diff --git a/server/sonar-web/src/main/js/components/common/__tests__/MultiSelect-test.tsx b/server/sonar-web/src/main/js/components/common/__tests__/MultiSelect-test.tsx index a963bdf5449..a2e5c946cbd 100644 --- a/server/sonar-web/src/main/js/components/common/__tests__/MultiSelect-test.tsx +++ b/server/sonar-web/src/main/js/components/common/__tests__/MultiSelect-test.tsx @@ -55,7 +55,9 @@ it('should render with the focus inside the search input', () => { */ const container = document.createElement('div'); document.body.appendChild(container); - const multiselect = mount(, { attachTo: container }); + const multiselect = mount(, { + attachTo: container + }); expect(multiselect.find('input').getDOMNode()).toBe(document.activeElement); @@ -94,6 +96,7 @@ function shallowRender(overrides: Partial = {}) { Promise.resolve()} onSelect={jest.fn()} onUnselect={jest.fn()} diff --git a/server/sonar-web/src/main/js/components/common/__tests__/__snapshots__/MultiSelect-test.tsx.snap b/server/sonar-web/src/main/js/components/common/__tests__/__snapshots__/MultiSelect-test.tsx.snap index bd2ca89e1dc..2ec8d126534 100644 --- a/server/sonar-web/src/main/js/components/common/__tests__/__snapshots__/MultiSelect-test.tsx.snap +++ b/server/sonar-web/src/main/js/components/common/__tests__/__snapshots__/MultiSelect-test.tsx.snap @@ -16,19 +16,23 @@ exports[`should render multiselect with selected elements 1`] = ` value="" /> -
    - -
+
    + +
+ `; @@ -48,37 +52,41 @@ exports[`should render multiselect with selected elements 2`] = ` value="" /> -
    - - - -
+
    + + + +
+ `; @@ -98,37 +106,41 @@ exports[`should render multiselect with selected elements 3`] = ` value="" /> -
    - - - -
+
    + + + +
+ `; @@ -148,45 +160,49 @@ exports[`should render multiselect with selected elements 4`] = ` value="test" /> -
    - - - - -
+
    + + + + +
+ `; diff --git a/server/sonar-web/src/main/js/components/tags/TagsSelector.tsx b/server/sonar-web/src/main/js/components/tags/TagsSelector.tsx index c93aa947e5b..06129867761 100644 --- a/server/sonar-web/src/main/js/components/tags/TagsSelector.tsx +++ b/server/sonar-web/src/main/js/components/tags/TagsSelector.tsx @@ -36,6 +36,7 @@ export default function TagsSelector(props: Props) {