Skip to content

Commit c34064b

Browse files
committed
UIFC-476-add-eslint-rules
1 parent 3b8ea18 commit c34064b

64 files changed

Lines changed: 13629 additions & 243 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintrc

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,98 @@
11
{
2-
"extends": "@folio/eslint-config-stripes",
3-
"parser": "@babel/eslint-parser",
2+
"root": true,
43
"env": {
54
"jest": true
65
},
6+
"extends": [
7+
"@folio/eslint-config-stripes",
8+
"plugin:testing-library/react",
9+
"plugin:jest-dom/recommended"
10+
],
11+
"parser": "@babel/eslint-parser",
12+
"plugins": [
13+
"canonical"
14+
],
715
"rules": {
8-
"implicit-arrow-linebreak": "off",
16+
"array-bracket-newline": ["error", { "multiline": true }],
17+
"canonical/export-specifier-newline": "error",
18+
"canonical/import-specifier-newline": "error",
19+
"comma-dangle": [
20+
"error",
21+
{
22+
"arrays": "always-multiline",
23+
"objects": "always-multiline",
24+
"imports": "always-multiline",
25+
"exports": "always-multiline",
26+
"functions": "never"
27+
}
28+
],
29+
"import/order": [
30+
"error",
31+
{
32+
"groups": [["builtin", "external"], "internal", ["parent", "sibling", "index"]],
33+
"newlines-between": "always",
34+
"pathGroups": [
35+
{
36+
"pattern": "@folio/**",
37+
"group": "internal",
38+
"position": "after"
39+
}
40+
],
41+
"pathGroupsExcludedImportTypes": ["builtin"],
42+
"alphabetize": {
43+
"order": "asc",
44+
"caseInsensitive": true
45+
}
46+
}
47+
],
48+
"key-spacing": [
49+
"error",
50+
{
51+
"beforeColon": false,
52+
"afterColon": true,
53+
"mode": "strict"
54+
}
55+
],
56+
"max-len": ["warn", { "code": 120 }],
57+
"newline-per-chained-call": ["warn", { "ignoreChainWithDepth": 2 }],
58+
"no-multiple-empty-lines": "error",
59+
"object-curly-newline": [
60+
"error",
61+
{
62+
"ImportDeclaration": { "multiline": true, "minProperties": 2 },
63+
"ExportDeclaration": { "multiline": true, "minProperties": 2 }
64+
}
65+
],
66+
"padding-line-between-statements": [
67+
"error",
68+
{ "blankLine": "always", "prev": "block-like", "next": "*" },
69+
{ "blankLine": "always", "prev": "*", "next": "block-like" }
70+
],
71+
"quote-props": ["error", "as-needed"],
972
"react/forbid-prop-types": [
1073
// rule was removed from eslint-config-stripes in v8.0.0
1174
"warn",
1275
{
1376
"forbid": ["any", "array"]
1477
}
15-
]
78+
],
79+
"react/jsx-sort-props": "error",
80+
"react/sort-prop-types": "error",
81+
"sort-imports": ["error", { "ignoreCase": true, "ignoreDeclarationSort": true }],
82+
"testing-library/no-await-sync-events": [
83+
"error",
84+
{ "eventModules": ["fire-event"] }
85+
],
86+
"testing-library/no-node-access": "off",
87+
"testing-library/no-render-in-lifecycle": [
88+
"error",
89+
{ "allowTestingFrameworkSetupHook": "beforeEach" }
90+
],
91+
"testing-library/prefer-user-event": "warn"
92+
},
93+
"settings": {
94+
"react": {
95+
"version": "detect"
96+
}
1697
}
1798
}

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* Use generic hook form stripes-leipzig-components ([UIFC-437](https://folio-org.atlassian.net/browse/UIFC-437))
1010
* Fix FileUploaderField value type inconsistency ([UIFC-465](https://folio-org.atlassian.net/browse/UIFC-465))
1111
* Include mod-settings global permissions ([UIFC-459](https://folio-org.atlassian.net/browse/UIFC-459))
12+
* Add eslint rules ([UIFC-476](https://folio-org.atlassian.net/browse/UIFC-476))
1213

1314
## [8.1.0](https://github.com/folio-org/ui-finc-select/tree/v8.1.0) (2025-08-21)
1415
* Address code duplications ([UIFC-342](https://folio-org.atlassian.net/browse/UIFC-342))

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path');
22
const config = require('@folio/jest-config-stripes');
33

4-
const esModules = ['@folio', '@k-int', 'ky', 'uuid'].join('|');
4+
const esModules = ['@folio', 'ky', 'uuid'].join('|');
55

66
module.exports = {
77
...config,

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
"@folio/stripes-core": "^11.0.0",
2626
"@folio/stripes-final-form": "^9.0.0",
2727
"@folio/stripes-smart-components": "^10.0.0",
28-
"eslint": "^7.32.0",
28+
"eslint-plugin-canonical": "^4.0.0",
29+
"eslint-plugin-jest-dom": "^4.0.0",
30+
"eslint-plugin-testing-library": "^6.0.0",
2931
"history": "^5.0.0",
3032
"react": "^18.2.0",
3133
"react-dom": "^18.2.0",

src/components/DataOptions/type.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export default [
22
{ value: 'Whitelist' },
3-
{ value: 'Blacklist' }
3+
{ value: 'Blacklist' },
44
];

src/components/Filters/Collections/CollectionsForm.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import PropTypes from 'prop-types';
2-
import { FormattedMessage } from 'react-intl';
32
import { FieldArray } from 'react-final-form-arrays';
3+
import { FormattedMessage } from 'react-intl';
44

55
import { Accordion } from '@folio/stripes/components';
66

@@ -51,7 +51,7 @@ CollectionsForm.propTypes = {
5151
form: PropTypes.shape({
5252
mutators: PropTypes.shape({
5353
setCollection: PropTypes.func,
54-
})
54+
}),
5555
}),
5656
onToggle: PropTypes.func,
5757
};

src/components/Filters/Collections/CollectionsView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import PropTypes from 'prop-types';
21
import { get } from 'lodash';
2+
import PropTypes from 'prop-types';
33

44
import FindCollections from './FindCollections/FindCollections';
55

src/components/Filters/Collections/FindCollections/FindCollections.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ const FindCollections = ({
99
isEditable,
1010
selectRecords,
1111
}) => {
12-
const searchLabel = isEditable ? <FormattedMessage id="ui-finc-select.plugin.buttonLabel.collection.add" /> : <FormattedMessage id="ui-finc-select.plugin.buttonLabel.collection.view" />;
12+
const searchLabel = isEditable ?
13+
<FormattedMessage id="ui-finc-select.plugin.buttonLabel.collection.add" /> :
14+
<FormattedMessage id="ui-finc-select.plugin.buttonLabel.collection.view" />;
1315

1416
return (
1517
<Pluggable

src/components/Filters/FilterFile/FilterFileForm.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { FormattedMessage } from 'react-intl';
44
import { Accordion } from '@folio/stripes/components';
55
import { useStripes } from '@folio/stripes/core';
66

7-
import DocumentsFieldArray from './UploadFile/DocumentsFieldArray';
87
import fetchWithDefaultOptions from '../../DisplayUtils/fetchWithDefaultOptions';
8+
import DocumentsFieldArray from './UploadFile/DocumentsFieldArray';
99

1010
const FilterFileForm = ({
1111
accordionId,

src/components/Filters/FilterFile/FilterFileForm.test.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
import { MemoryRouter } from 'react-router-dom';
2-
import { Form } from 'react-final-form';
31
import arrayMutators from 'final-form-arrays';
2+
import { Form } from 'react-final-form';
3+
import { MemoryRouter } from 'react-router-dom';
44

5-
import { screen, waitFor } from '@folio/jest-config-stripes/testing-library/react';
5+
import {
6+
screen,
7+
waitFor,
8+
} from '@folio/jest-config-stripes/testing-library/react';
69
import userEvent from '@folio/jest-config-stripes/testing-library/user-event';
7-
import { StripesContext, useStripes } from '@folio/stripes/core';
10+
import {
11+
StripesContext,
12+
useStripes,
13+
} from '@folio/stripes/core';
814

915
import renderWithIntlConfiguration from '../../../../test/jest/helpers/renderWithIntlConfiguration';
10-
import FilterFileForm from './FilterFileForm';
1116
import fetchWithDefaultOptions from '../../DisplayUtils/fetchWithDefaultOptions';
17+
import FilterFileForm from './FilterFileForm';
1218

1319
const onToggle = jest.fn();
1420
const onSubmit = jest.fn();
@@ -27,8 +33,8 @@ const renderFilterFileForm = (stripes) => {
2733
<StripesContext.Provider value={stripes}>
2834
<MemoryRouter>
2935
<Form
30-
onSubmit={onSubmit}
3136
mutators={arrayMutators}
37+
onSubmit={onSubmit}
3238
render={() => (
3339
<FilterFileForm
3440
accordionId="accordionId"

0 commit comments

Comments
 (0)