aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps
diff options
context:
space:
mode:
authorJeremy Davis <jeremy.davis@sonarsource.com>2022-08-03 17:20:57 +0200
committersonartech <sonartech@sonarsource.com>2022-08-05 20:03:27 +0000
commitd3c1acdaf4666e9d8f00e31d619b574f336244f0 (patch)
tree3e0d215b28b09f8f2316817c3f2eeb5633f95f7f /server/sonar-web/src/main/js/apps
parentc92a1586c459a2e351cec20cdf40b474f56a94c3 (diff)
downloadsonarqube-d3c1acdaf4666e9d8f00e31d619b574f336244f0.tar.gz
sonarqube-d3c1acdaf4666e9d8f00e31d619b574f336244f0.zip
SONAR-16731 [891586] [891587] Form elements must have labels
Diffstat (limited to 'server/sonar-web/src/main/js/apps')
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/__snapshots__/PageSidebar-test.tsx.snap239
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx42
3 files changed, 24 insertions, 259 deletions
diff --git a/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx b/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
index c9dbb8d8d0b..a5ba9ec507b 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
@@ -60,7 +60,7 @@ export default function PageSidebar(props: PageSidebarProps) {
const facetProps = { onQueryChange, maxFacetValue };
return (
- <div>
+ <div className="huge-spacer-bottom huge-padded-bottom">
<FavoriteFilter />
<div className="projects-facets-header clearfix">
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/__snapshots__/PageSidebar-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/components/__tests__/__snapshots__/PageSidebar-test.tsx.snap
deleted file mode 100644
index b76b6259156..00000000000
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/__snapshots__/PageSidebar-test.tsx.snap
+++ /dev/null
@@ -1,239 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`should render \`leak\` view correctly 1`] = `
-<div>
- <withRouter(withCurrentUserContext(FavoriteFilter)) />
- <div
- className="projects-facets-header clearfix"
- >
- <h2
- className="h3"
- >
- filters
- </h2>
- </div>
- <QualityGateFilter
- onQueryChange={[MockFunction]}
- />
- <NewReliabilityFilter
- onQueryChange={[MockFunction]}
- />
- <NewSecurityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityReviewFilter
- className="leak-facet-box"
- onQueryChange={[MockFunction]}
- property="new_security_review"
- />
- <NewMaintainabilityFilter
- onQueryChange={[MockFunction]}
- />
- <NewCoverageFilter
- onQueryChange={[MockFunction]}
- />
- <NewDuplicationsFilter
- onQueryChange={[MockFunction]}
- />
- <NewLinesFilter
- onQueryChange={[MockFunction]}
- />
- <withLanguagesContext(LanguagesFilter)
- onQueryChange={[MockFunction]}
- query={
- Object {
- "view": "leak",
- }
- }
- />
- <QualifierFilter
- onQueryChange={[MockFunction]}
- />
- <TagsFilter
- onQueryChange={[MockFunction]}
- query={
- Object {
- "view": "leak",
- }
- }
- />
-</div>
-`;
-
-exports[`should render \`leak\` view correctly with no applications 1`] = `
-<div>
- <withRouter(withCurrentUserContext(FavoriteFilter)) />
- <div
- className="projects-facets-header clearfix"
- >
- <h2
- className="h3"
- >
- filters
- </h2>
- </div>
- <QualityGateFilter
- onQueryChange={[MockFunction]}
- />
- <NewReliabilityFilter
- onQueryChange={[MockFunction]}
- />
- <NewSecurityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityReviewFilter
- className="leak-facet-box"
- onQueryChange={[MockFunction]}
- property="new_security_review"
- />
- <NewMaintainabilityFilter
- onQueryChange={[MockFunction]}
- />
- <NewCoverageFilter
- onQueryChange={[MockFunction]}
- />
- <NewDuplicationsFilter
- onQueryChange={[MockFunction]}
- />
- <NewLinesFilter
- onQueryChange={[MockFunction]}
- />
- <withLanguagesContext(LanguagesFilter)
- onQueryChange={[MockFunction]}
- query={
- Object {
- "view": "leak",
- }
- }
- />
- <TagsFilter
- onQueryChange={[MockFunction]}
- query={
- Object {
- "view": "leak",
- }
- }
- />
-</div>
-`;
-
-exports[`should render correctly 1`] = `
-<div>
- <withRouter(withCurrentUserContext(FavoriteFilter)) />
- <div
- className="projects-facets-header clearfix"
- >
- <ClearAll
- onClearAll={[MockFunction]}
- />
- <h2
- className="h3"
- >
- filters
- </h2>
- </div>
- <QualityGateFilter
- onQueryChange={[MockFunction]}
- />
- <ReliabilityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityReviewFilter
- onQueryChange={[MockFunction]}
- />
- <MaintainabilityFilter
- onQueryChange={[MockFunction]}
- />
- <CoverageFilter
- onQueryChange={[MockFunction]}
- />
- <DuplicationsFilter
- onQueryChange={[MockFunction]}
- />
- <SizeFilter
- onQueryChange={[MockFunction]}
- value="3"
- />
- <withLanguagesContext(LanguagesFilter)
- onQueryChange={[MockFunction]}
- query={
- Object {
- "size": "3",
- }
- }
- />
- <QualifierFilter
- onQueryChange={[MockFunction]}
- />
- <TagsFilter
- onQueryChange={[MockFunction]}
- query={
- Object {
- "size": "3",
- }
- }
- />
-</div>
-`;
-
-exports[`should render correctly with no applications 1`] = `
-<div>
- <withRouter(withCurrentUserContext(FavoriteFilter)) />
- <div
- className="projects-facets-header clearfix"
- >
- <ClearAll
- onClearAll={[MockFunction]}
- />
- <h2
- className="h3"
- >
- filters
- </h2>
- </div>
- <QualityGateFilter
- onQueryChange={[MockFunction]}
- />
- <ReliabilityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityFilter
- onQueryChange={[MockFunction]}
- />
- <SecurityReviewFilter
- onQueryChange={[MockFunction]}
- />
- <MaintainabilityFilter
- onQueryChange={[MockFunction]}
- />
- <CoverageFilter
- onQueryChange={[MockFunction]}
- />
- <DuplicationsFilter
- onQueryChange={[MockFunction]}
- />
- <SizeFilter
- onQueryChange={[MockFunction]}
- value="3"
- />
- <withLanguagesContext(LanguagesFilter)
- onQueryChange={[MockFunction]}
- query={
- Object {
- "size": "3",
- }
- }
- />
- <TagsFilter
- onQueryChange={[MockFunction]}
- query={
- Object {
- "size": "3",
- }
- }
- />
-</div>
-`;
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
index cc9baa67013..b523c8a1edb 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
@@ -32,25 +32,29 @@ interface Props {
query: Dict<any>;
}
-export default class SearchableFilterFooter extends React.PureComponent<Props> {
- handleOptionChange = ({ value }: { value: string }) => {
- const urlOptions = (this.props.query[this.props.property] || []).concat(value).join(',');
- this.props.onQueryChange({ [this.props.property]: urlOptions });
+export default function SearchableFilterFooter(props: Props) {
+ const { property, query } = props;
+
+ const handleOptionChange = ({ value }: { value: string }) => {
+ if (value) {
+ const urlOptions = (query[property] || []).concat(value).join(',');
+ props.onQueryChange({ [property]: urlOptions });
+ }
};
- render() {
- return (
- <div className="search-navigator-facet-footer projects-facet-footer">
- <Select
- className="input-super-large"
- isLoading={this.props.isLoading}
- onChange={this.handleOptionChange}
- onInputChange={this.props.onInputChange}
- onMenuOpen={this.props.onOpen}
- options={this.props.options}
- placeholder={translate('search_verb')}
- />
- </div>
- );
- }
+ return (
+ <div className="search-navigator-facet-footer projects-facet-footer">
+ <Select
+ aria-label={translate('projects.facets.search', property)}
+ className="input-super-large"
+ controlShouldRenderValue={false}
+ isLoading={props.isLoading}
+ onChange={handleOptionChange}
+ onInputChange={props.onInputChange}
+ onMenuOpen={props.onOpen}
+ options={props.options}
+ placeholder={translate('search_verb')}
+ />
+ </div>
+ );
}