diff --git a/Makefile b/Makefile
index ddc77cdb2..6b5ccd3fb 100644
--- a/Makefile
+++ b/Makefile
@@ -131,6 +131,10 @@ test-js: .build/deps-build-node.ok
.PHONY: test
test: lint test-go test-js
+.PHONY: format-js
+format-js:
+ cd ui && ./node_modules/.bin/prettier --write 'src/**/*.js'
+
.PHONY: show-version
show-version:
@echo $(VERSION)
diff --git a/ui/.eslintrc.yaml b/ui/.eslintrc.yaml
index 674b63b28..a4f884188 100644
--- a/ui/.eslintrc.yaml
+++ b/ui/.eslintrc.yaml
@@ -1,2 +1,3 @@
extends:
- react-app
+ - plugin:prettier/recommended
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 1f26d1ffd..bf43ad600 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -5888,6 +5888,15 @@
}
}
},
+ "eslint-plugin-prettier": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz",
+ "integrity": "sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
"eslint-plugin-react": {
"version": "7.14.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz",
@@ -6240,6 +6249,12 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
"fast-glob": {
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
@@ -11891,6 +11906,21 @@
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
},
+ "prettier": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
+ "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
+ "dev": true
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
+ },
"pretty-bytes": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz",
diff --git a/ui/package.json b/ui/package.json
index 8ffafe3b9..49e0c4eda 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -64,11 +64,13 @@
"diffable-html": "4.0.0",
"enzyme": "3.10.0",
"enzyme-adapter-react-16": "1.14.0",
+ "eslint-plugin-prettier": "3.1.0",
"jest-canvas-mock": "2.1.0",
"jest-date-mock": "1.0.7",
"jest-fetch-mock": "2.1.2",
"markdownlint-cli": "0.17.0",
- "node-sass": "4.12.0"
+ "node-sass": "4.12.0",
+ "prettier": "1.18.2"
},
"browserslist": [
">= 1%",
diff --git a/ui/src/Components/Labels/FilteringCounterBadge/index.js b/ui/src/Components/Labels/FilteringCounterBadge/index.js
index 0383ca360..af4d9524a 100644
--- a/ui/src/Components/Labels/FilteringCounterBadge/index.js
+++ b/ui/src/Components/Labels/FilteringCounterBadge/index.js
@@ -38,22 +38,22 @@ const FilteringCounterBadge = inject("alertStore")(
-
- this.handleClick(e)}
- >
- {counter}
-
-
+
+ this.handleClick(e)}
+ >
+ {counter}
+
+
);
}
diff --git a/ui/src/Components/Labels/FilteringCounterBadge/index.test.js b/ui/src/Components/Labels/FilteringCounterBadge/index.test.js
index 4be7cf671..11fd4b22c 100644
--- a/ui/src/Components/Labels/FilteringCounterBadge/index.test.js
+++ b/ui/src/Components/Labels/FilteringCounterBadge/index.test.js
@@ -36,7 +36,7 @@ const validateStyle = (value, themed) => {
/>
);
// opacity=>1 is set by react-reveal/Flash
- expect(tree.find("span").prop("style")).toEqual({"opacity": 1});
+ expect(tree.find("span").prop("style")).toEqual({ opacity: 1 });
};
const validateOnClick = (value, themed) => {
diff --git a/ui/src/Components/SilenceModal/SilenceMatch/MatchCounter.js b/ui/src/Components/SilenceModal/SilenceMatch/MatchCounter.js
index 87ec766ca..c68ef230d 100644
--- a/ui/src/Components/SilenceModal/SilenceMatch/MatchCounter.js
+++ b/ui/src/Components/SilenceModal/SilenceMatch/MatchCounter.js
@@ -88,9 +88,7 @@ const MatchCounter = observer(
if (this.matchedAlerts.error !== null) {
return (