diff --git a/.eslintignore b/.eslintignore index 8da4651306..6b3786a50f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,7 @@ **/build/** **/dist/** testApp/** +packages/strapi-plugin-users-permissions/admin/** +packages/strapi-plugin-upload/admin/** +packages/strapi-generate-plugin/files/admin/src/** .eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js index c31e0466f0..48ff3dbae8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,10 +4,9 @@ module.exports = { 'eslint:recommended', 'plugin:react/recommended', 'plugin:redux-saga/recommended', - 'prettier', ], - plugins: ['react', 'redux-saga', 'react-hooks', 'import'], + plugins: ['react', 'redux-saga', 'react-hooks', 'import', 'jsx-a11y'], env: { browser: true, commonjs: true, @@ -54,9 +53,87 @@ module.exports = { overrides: [ { files: ['packages/**/admin/src/**/**/*.js'], + extends: ['airbnb'], rules: { - 'no-nested-ternary': ['error'], + 'arrow-body-style': 0, + 'arrow-parens': 0, + camelcase: 0, + 'comma-dangle': 0, + 'consistent-return': [ + 2, + { + treatUndefinedAsUnspecified: true, + }, + ], + indent: [ + 2, + 2, + { + flatTernaryExpressions: false, + SwitchCase: 1, + ignoredNodes: [ + 'ConditionalExpression', + "VariableDeclarator[kind='const']", + ], + }, + ], + 'func-names': ['error', 'never'], + 'function-paren-newline': 0, + 'implicit-arrow-linebreak': 0, + 'import/no-extraneous-dependencies': 0, + 'import/no-named-as-default': 0, 'import/order': 2, + 'jsx-a11y/click-events-have-key-events': 1, + 'max-len': [ + 2, + { + code: 120, + ignoreComments: true, + ignoreUrls: true, + ignoreTrailingComments: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }, + ], + 'newline-before-return': 2, + 'no-confusing-arrow': 0, + 'no-else-return': 1, + 'no-nested-ternary': ['error'], + 'no-return-assign': 0, + 'no-param-reassign': 0, + 'no-shadow': 0, + 'no-underscore-dangle': 0, + 'no-use-before-define': [ + 'error', + { functions: false, classes: false, variables: false }, + ], + 'object-curly-newline': [2, { multiline: true, consistent: true }], + 'operator-linebreak': 0, + 'padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: '*', next: 'if' }, + { blankLine: 'any', prev: 'block-like', next: 'if' }, + ], + 'prefer-arrow-callback': 0, + 'prefer-const': 0, + 'prefer-destructuring': 0, + 'prefer-object-spread': 0, + 'prefer-spread': 0, + 'space-before-function-paren': [ + 'error', + { + anonymous: 'never', + named: 'never', + asyncArrow: 'always', + }, + ], + 'react/destructuring-assignment': 0, + 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }], + 'react/forbid-prop-types': 0, + 'react/jsx-props-no-spreading': 0, + 'react/jsx-one-expression-per-line': 0, + 'react/state-in-constructor': 0, + 'react/static-property-placement': 0, }, }, ], diff --git a/codecov.yml b/codecov.yml index e88701a0a6..332f82cc63 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,2 +1,4 @@ comment: - branch: master + branches: + - master + - develop diff --git a/examples/getstarted/api/restaurant/models/Restaurant.settings.json b/examples/getstarted/api/restaurant/models/Restaurant.settings.json index b4f027a6cf..84e2144f5e 100755 --- a/examples/getstarted/api/restaurant/models/Restaurant.settings.json +++ b/examples/getstarted/api/restaurant/models/Restaurant.settings.json @@ -81,10 +81,10 @@ "dz": { "type": "dynamiczone", "components": [ - "default.closingperiod", - "default.dish", "default.openingtimes", - "default.restaurantservice" + "default.restaurantservice", + "default.closingperiod", + "default.dish" ] } } diff --git a/package.json b/package.json index 4fbf56343a..9730062a54 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,11 @@ "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.12.1", "eslint": "^6.3.0", + "eslint-config-airbnb": "^18.0.1", + "eslint-config-airbnb-base": "^14.0.0", "eslint-config-prettier": "^6.2.0", "eslint-plugin-import": "^2.19.1", + "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-react": "^7.14.0", "eslint-plugin-react-hooks": "^2.0.0", "eslint-plugin-redux-saga": "^1.1.0", @@ -38,6 +41,7 @@ "build": "lerna run --stream build --no-private", "lint": "npm-run-all -p lint:code", "lint:code": "eslint .", + "lint:fix": "eslint --fix .", "lint:other": "npm run prettier:other -- --check", "format": "npm-run-all -p format:*", "format:code": "npm run prettier:code -- --write", diff --git a/packages/strapi-admin/admin/src/app.js b/packages/strapi-admin/admin/src/app.js index f4184a17fd..ffd6a5d61e 100644 --- a/packages/strapi-admin/admin/src/app.js +++ b/packages/strapi-admin/admin/src/app.js @@ -5,6 +5,8 @@ // * Entry point of the application // */ +/* eslint-disable */ + import '@babel/polyfill'; import 'sanitize.css/sanitize.css'; diff --git a/packages/strapi-admin/admin/src/components/EmptyList/index.js b/packages/strapi-admin/admin/src/components/EmptyList/index.js index 4aa4174aa2..c4b5093f5e 100644 --- a/packages/strapi-admin/admin/src/components/EmptyList/index.js +++ b/packages/strapi-admin/admin/src/components/EmptyList/index.js @@ -11,16 +11,17 @@ import Wrapper from './Wrapper'; function EmptyList() { const { formatMessage } = useGlobalContext(); + return ( -

{formatMessage({ id: `Settings.webhooks.list.empty.title` })}

-

{formatMessage({ id: `Settings.webhooks.list.empty.description` })}

+

{formatMessage({ id: 'Settings.webhooks.list.empty.title' })}

+

{formatMessage({ id: 'Settings.webhooks.list.empty.description' })}

- {formatMessage({ id: `Settings.webhooks.list.empty.link` })} + {formatMessage({ id: 'Settings.webhooks.list.empty.link' })}
); diff --git a/packages/strapi-admin/admin/src/components/EventInput/index.js b/packages/strapi-admin/admin/src/components/EventInput/index.js index 19fd3d41f7..c11192f06a 100644 --- a/packages/strapi-admin/admin/src/components/EventInput/index.js +++ b/packages/strapi-admin/admin/src/components/EventInput/index.js @@ -7,9 +7,9 @@ import EventRow from './EventRow'; const EventInput = ({ onChange, name: inputName, value: inputValue }) => { const headersName = [ - `Settings.webhooks.events.create`, - `Settings.webhooks.events.edit`, - `Settings.webhooks.events.delete`, + 'Settings.webhooks.events.create', + 'Settings.webhooks.events.edit', + 'Settings.webhooks.events.delete', ]; const events = { @@ -22,6 +22,7 @@ const EventInput = ({ onChange, name: inputName, value: inputValue }) => { const formatValue = inputValue.reduce((acc, curr) => { const key = curr.split('.')[0]; + if (!acc[key]) { acc[key] = []; } @@ -32,6 +33,7 @@ const EventInput = ({ onChange, name: inputName, value: inputValue }) => { const handleChange = ({ target: { name, value } }) => { let set = new Set(inputValue); + if (value) { set.add(name); } else { @@ -42,14 +44,15 @@ const EventInput = ({ onChange, name: inputName, value: inputValue }) => { const handleChangeAll = ({ target: { name, value } }) => { let set = new Set(inputValue); + if (value) { - events[name].map(event => { + events[name].forEach(event => { if (!disabledEvents.includes(event)) { set.add(event); } }); } else { - events[name].map(event => set.delete(event)); + events[name].forEach(event => set.delete(event)); } onChange({ target: { name: inputName, value: Array.from(set) } }); }; @@ -59,7 +62,7 @@ const EventInput = ({ onChange, name: inputName, value: inputValue }) => { - + ); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js index c8c911d43d..e54e7aa06e 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js @@ -5,6 +5,8 @@ import useListView from '../../hooks/useListView'; import CustomInputCheckbox from '../CustomInputCheckbox'; import { Arrow, Thead } from './styledComponents'; +/* eslint-disable jsx-a11y/control-has-associated-label */ + function TableHeader({ headers, isBulkable }) { const { data, @@ -67,7 +69,7 @@ function TableHeader({ headers, isBulkable }) { ); })} - + ); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/index.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/index.js index 303dc61b47..8fbf7f54ce 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/index.js @@ -94,7 +94,6 @@ CustomTable.defaultProps = { data: [], headers: [], isBulkable: true, - slug: '', }; CustomTable.propTypes = { @@ -108,7 +107,6 @@ CustomTable.propTypes = { push: PropTypes.func.isRequired, }).isRequired, isBulkable: PropTypes.bool, - slug: PropTypes.string, }; export default withRouter(memo(CustomTable)); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/styledComponents.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/styledComponents.js index e40ce1511e..cf9b43168a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/styledComponents.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/styledComponents.js @@ -1,3 +1,5 @@ +/* eslint-disable */ + import styled, { css } from 'styled-components'; const Table = styled.table` diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DisplayedFieldsDropdown/MenuDropdown.js b/packages/strapi-plugin-content-manager/admin/src/components/DisplayedFieldsDropdown/MenuDropdown.js index bb145b0a75..e0001d8bdc 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DisplayedFieldsDropdown/MenuDropdown.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DisplayedFieldsDropdown/MenuDropdown.js @@ -17,6 +17,8 @@ const MenuDropdown = styled(DropdownMenu)` border-top-right-radius: 0; `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/GrabWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/GrabWrapper.js index 567a6531ca..41db156b7a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/GrabWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/GrabWrapper.js @@ -1,3 +1,5 @@ +/* eslint-disable */ + import styled, { css } from 'styled-components'; import getColor from './utils/getColor'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/NameWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/NameWrapper.js index bcfc5a33bc..52e522d756 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/NameWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/NameWrapper.js @@ -20,6 +20,8 @@ const NameWrapper = styled.div` color: #007eff; `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/RemoveWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/RemoveWrapper.js index 34c0dd5ceb..2f1616ed30 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/RemoveWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/RemoveWrapper.js @@ -30,6 +30,8 @@ const RemoveWrapper = styled.div` } `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/SubWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/SubWrapper.js index d002a768a0..6905d2321b 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/SubWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/SubWrapper.js @@ -1,3 +1,5 @@ +/* eslint-disable */ + import styled from 'styled-components'; import getColor from './utils/getColor'; import getHeight from './utils/getHeight'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/Wrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/Wrapper.js index 904870510d..52bce8f63f 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/Wrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/Wrapper.js @@ -1,3 +1,5 @@ +/* eslint-disable */ + import styled, { css } from 'styled-components'; import PropTypes from 'prop-types'; import getColor from './utils/getColor'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/index.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/index.js index 89e3a5e112..f44707e579 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/index.js @@ -14,6 +14,7 @@ import SubWrapper from './SubWrapper'; import Wrapper from './Wrapper'; import Close from './Close'; +/* eslint-disable */ const DraggedField = forwardRef( ( { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/utils/getColor.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/utils/getColor.js index 0916744c73..a3a0805497 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/utils/getColor.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedField/utils/getColor.js @@ -1,11 +1,12 @@ const getColor = (isOverRemove, isSelected, isOverEditBlock) => { if (isOverRemove) { return '#ffa784'; - } else if (isSelected || isOverEditBlock) { - return '#aed4fb'; - } else { - return '#e9eaeb'; } + if (isSelected || isOverEditBlock) { + return '#aed4fb'; + } + + return '#e9eaeb'; }; export default getColor; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DraggedFieldWithPreview/index.js b/packages/strapi-plugin-content-manager/admin/src/components/DraggedFieldWithPreview/index.js index d55fa09a93..81b6166bb0 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DraggedFieldWithPreview/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DraggedFieldWithPreview/index.js @@ -8,6 +8,8 @@ import DynamicZoneWrapper from './DynamicZoneWrapper'; import Wrapper from './Wrapper'; import DynamicComponent from './DynamicComponent'; +/* eslint-disable react/no-array-index-key */ + const DraggedFieldWithPreview = forwardRef( ( { @@ -136,7 +138,7 @@ const DraggedFieldWithPreview = forwardRef( withLongerHeight={higherFields.includes( fieldType )} - > + /> ); })} diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DynamicComponentCard/index.js b/packages/strapi-plugin-content-manager/admin/src/components/DynamicComponentCard/index.js index bf0aa429de..d4a13538c5 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DynamicComponentCard/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DynamicComponentCard/index.js @@ -19,7 +19,7 @@ const DynamicComponentCard = ({ onClick(componentUid); }} > - diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/Button.js b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/Button.js index 31f0d246c8..99cc45639a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/Button.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/Button.js @@ -22,6 +22,8 @@ const Button = styled(PlusButton)` } `; } + + return ''; }} &.isOpen { transform: rotate(-45deg); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js index f0577783f5..dbc6b332cb 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js @@ -17,6 +17,8 @@ import Label from './Label'; import RoundCTA from './RoundCTA'; import Wrapper from './Wrapper'; +/* eslint-disable react/no-array-index-key */ + const DynamicZone = ({ max, min, name }) => { const [isOpen, setIsOpen] = useState(false); const { @@ -117,7 +119,7 @@ const DynamicZone = ({ max, min, name }) => { removeComponentFromDynamicZone(name, index)} > - + { icon={getDynamicComponentInfos(componentUid).icon} label="" name={`${name}.${index}`} - isFromDynamicZone={true} + isFromDynamicZone /> ); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/Wrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/Wrapper.js index b704c8d273..afd492cb3b 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/Wrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/Wrapper.js @@ -12,6 +12,8 @@ const Wrapper = styled.div` background-color: #fff; `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/index.js index 05348f8b10..1dbc61c02a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FieldComponent/index.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-cycle */ import React from 'react'; import PropTypes from 'prop-types'; import { get, size } from 'lodash'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/Item.js b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/Item.js index 65e680b511..5e31a446a6 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/Item.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/Item.js @@ -85,8 +85,6 @@ const Item = ({ item.rowIndex = targetRow; item.itemIndex = hoverIndex; - - return; }, drop(item, monitor) { if (!dropRef.current) { @@ -122,6 +120,7 @@ const Item = ({ item.itemIndex = hoverIndex + 1; item.rowIndex = targetRow; + return; } @@ -136,8 +135,6 @@ const Item = ({ item.itemIndex = hoverIndex; item.rowIndex = targetRow; - - return; }, collect: monitor => ({ canDrop: monitor.canDrop(), diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/components.js b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/components.js index e93b2455b4..fa31ed3831 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/components.js @@ -5,4 +5,4 @@ const Wrapper = styled.div` margin-bottom: 6px; `; -export { Wrapper }; +export default Wrapper; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/index.js index 07877c02d7..f64f860b4b 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FieldsReorder/index.js @@ -6,7 +6,7 @@ import useLayoutDnd from '../../hooks/useLayoutDnd'; import Add from '../AddDropdown'; import SortWrapper from '../SortWrapper'; -import { Wrapper } from './components'; +import Wrapper from './components'; import Item from './Item'; const FieldsReorder = ({ className }) => { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/components.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/components.js index 5194551269..e18cea32a5 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/components.js @@ -48,6 +48,8 @@ const Div = styled.div` ? 'margin-top .3s ease-out, margin-bottom .2s ease-out' : 'margin .3s ease-in'; } + + return ''; }}; `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/index.js index a4b62625bb..4ddf256bcc 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/index.js @@ -153,6 +153,7 @@ function FilterPicker({ }} type={get(schema, ['attributes', filter.name, 'type'], '')} showAddButton={key === modifiedData.length - 1} + // eslint-disable-next-line react/no-array-index-key key={key} /> ))} @@ -180,8 +181,7 @@ FilterPicker.propTypes = { isOpen: PropTypes.bool, location: PropTypes.shape({ search: PropTypes.string.isRequired, - }), - + }).isRequired, name: PropTypes.string, onSubmit: PropTypes.func.isRequired, toggleFilterPickerState: PropTypes.func.isRequired, diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/reducer.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/reducer.js index 5ac49fe907..deb1b70575 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/reducer.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterPicker/reducer.js @@ -21,6 +21,7 @@ function reducer(state, action) { if (action.value && action.value._isAMomentObject === true) { return moment(action.value, 'YYYY-MM-DD HH:mm:ss').format(); } + return action.value; }) .updateIn(['modifiedData', index, 'value'], value => { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/Input.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/Input.js index ea87f470f5..4459ef0506 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/Input.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/Input.js @@ -48,7 +48,7 @@ function Input({ type, ...rest }) { const styles = type === 'boolean' ? { minWidth: '100px', maxWidth: '200px' } : style; const wrapperStyle = - type == 'boolean' || + type === 'boolean' || ['date', 'timestamp', 'time', 'datetime'].includes(type) ? { marginRight: '20px' } : { marginRight: '10px' }; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/components.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/components.js index 20c4427090..74ad959159 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterPickerOption/components.js @@ -1,5 +1,7 @@ import styled from 'styled-components'; +/* eslint-disable */ + const Wrapper = styled.div` min-height: 38px; border-left: ${props => props.borderLeft && '3px solid #007EFF'}; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FormTitle/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FormTitle/index.js index 8766be9c9d..b1f46b72a0 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FormTitle/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FormTitle/index.js @@ -3,14 +3,14 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; const FormTitle = ({ description, title }) => ( - + <> {!!title && } {!!description && ( {msg =>

{msg}

}
)} -
+ ); FormTitle.propTypes = { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/InputCheckbox/components.js b/packages/strapi-plugin-content-manager/admin/src/components/InputCheckbox/components.js index efdfcd443b..fe1169a3db 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/InputCheckbox/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/InputCheckbox/components.js @@ -58,6 +58,8 @@ const Label = styled.label` } `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js b/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js index 4d145f538a..150fe02fd3 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js @@ -24,6 +24,8 @@ const stringify = JSON.stringify; const DEFAULT_THEME = '3024-night'; class InputJSON extends React.Component { + timer = null; + constructor(props) { super(props); this.editor = React.createRef(); @@ -88,7 +90,7 @@ class InputJSON extends React.Component { let content = this.getContentAtLine(line); if (content === '{') { - line = line + 1; + line += 1; content = this.getContentAtLine(line); } const chEnd = content.length; @@ -101,8 +103,6 @@ class InputJSON extends React.Component { this.setState({ markedText }); }; - timer = null; - handleBlur = ({ target }) => { const { name, onBlur } = this.props; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/index.js b/packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/index.js index 0880795c66..2cec1deac7 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/index.js @@ -17,7 +17,6 @@ import Wrapper from './Wrapper'; class InputJSONWithErrors extends React.Component { handleChange = e => { - this.setState({ errors: [] }); this.props.onChange(e); }; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/NonRepeatableComponent/index.js b/packages/strapi-plugin-content-manager/admin/src/components/NonRepeatableComponent/index.js index 9a3f5b5c23..56a3a9cb1b 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/NonRepeatableComponent/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/NonRepeatableComponent/index.js @@ -1,3 +1,6 @@ +/* eslint-disable react/no-array-index-key */ +/* eslint-disable import/no-cycle */ + import React from 'react'; import PropTypes from 'prop-types'; import { get } from 'lodash'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/PopupForm/index.js b/packages/strapi-plugin-content-manager/admin/src/components/PopupForm/index.js index 68f905cbe7..bc1056970c 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/PopupForm/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/PopupForm/index.js @@ -33,6 +33,7 @@ const PopupForm = ({ return type; }; + return ( diff --git a/packages/strapi-plugin-content-manager/admin/src/components/PreviewCarret/components.js b/packages/strapi-plugin-content-manager/admin/src/components/PreviewCarret/components.js index d824bb237a..a6f0972f72 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/PreviewCarret/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/PreviewCarret/components.js @@ -14,6 +14,8 @@ const Wrapper = styled.div` padding: 0; `; } + + return ''; }} border-radius: 2px; > div { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/AddFieldButton.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/AddFieldButton.js index 15052ead19..4479a77301 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/AddFieldButton.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/AddFieldButton.js @@ -21,6 +21,8 @@ const Button = styled.button` border-radius: 2px; `; } + + return ''; }} ${({ hasMinError }) => { @@ -30,6 +32,8 @@ const Button = styled.button` border-top-color: rgba(227, 233, 243, 0.75); `; } + + return ''; }} color: #007eff; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/Banner.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/Banner.js index 53f41251e3..29ca56ff07 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/Banner.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/Banner.js @@ -8,6 +8,8 @@ import PreviewCarret from '../PreviewCarret'; import BannerWrapper from './BannerWrapper'; import CarretTop from './CarretTop'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ + const Banner = forwardRef( ( { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/BannerWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/BannerWrapper.js index 0a703baebd..52e173fd52 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/BannerWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/BannerWrapper.js @@ -1,5 +1,7 @@ import styled from 'styled-components'; +/* eslint-disable */ + const BannerWrapper = styled.button` display: flex; height: 36px; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/DraggedItem.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/DraggedItem.js index 8831082a9f..d940c9291d 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/DraggedItem.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/DraggedItem.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-cycle */ import React, { useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; import { get } from 'lodash'; @@ -12,6 +13,8 @@ import FieldComponent from '../FieldComponent'; import Banner from './Banner'; import FormWrapper from './FormWrapper'; +/* eslint-disable react/no-array-index-key */ + // Issues: // https://github.com/react-dnd/react-dnd/issues/1368 // https://github.com/frontend-collective/react-sortable-tree/issues/490 @@ -89,6 +92,7 @@ const DraggedItem = ({ const clientOffset = monitor.getClientOffset(); // Get pixels to the top const hoverClientY = clientOffset.y - hoverBoundingRect.top; + // Only perform the move when the mouse has crossed half of the items height // When dragging downwards, only move when the cursor is below 50% // When dragging upwards, only move when the cursor is above 50% @@ -109,8 +113,6 @@ const DraggedItem = ({ // but it's good here for the sake of performance // to avoid expensive index searches. item.originalPath = hoverPath; - - return; }, }); const [{ isDragging }, drag, preview] = useDrag({ diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/EmptyComponent.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/EmptyComponent.js index e57e676d6f..01ced822ac 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/EmptyComponent.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/EmptyComponent.js @@ -12,8 +12,10 @@ const EmptyComponent = styled.div` ${({ hasMinError }) => { if (hasMinError) { - return `border-color: #FAA684`; + return 'border-color: #FAA684'; } + + return ''; }} > p { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/FormWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/FormWrapper.js index e31e2409e3..2bf6a10b59 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/FormWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/FormWrapper.js @@ -1,5 +1,7 @@ import styled from 'styled-components'; +/* eslint-disable indent */ + const FormWrapper = styled.div` padding-top: 24px; padding-left: 20px; @@ -9,11 +11,12 @@ const FormWrapper = styled.div` ${({ hasErrors, isOpen }) => { if (hasErrors) { return '#ffa784'; - } else if (isOpen) { - return '#AED4FB'; - } else { - return 'rgba(227, 233, 243, 0.75)'; } + if (isOpen) { + return '#AED4FB'; + } + + return 'rgba(227, 233, 243, 0.75)'; }}; `; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js index 2c12b8d5eb..7a23c813e8 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-cycle */ import React, { useReducer } from 'react'; import { useDrop } from 'react-dnd'; import PropTypes from 'prop-types'; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Search/index.js b/packages/strapi-plugin-content-manager/admin/src/components/Search/index.js index 0a958ff2c5..4ec43d9a70 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Search/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Search/index.js @@ -12,11 +12,14 @@ import Cross from '../../icons/Cross'; import Filter from '../../icons/Filter'; import SearchIcon from '../../icons/Search'; import { Wrapper, Infos, Clear } from './components'; + const WAIT = 400; class Search extends React.Component { state = { value: this.props.initValue }; + timer = null; + componentDidUpdate(prevProps) { const { model, value } = this.props; @@ -28,8 +31,6 @@ class Search extends React.Component { } } - timer = null; - resetState = () => this.setState({ value: '' }); handleChange = ({ target }) => { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/Relation.js b/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/Relation.js index 58187e2260..88e0aee724 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/Relation.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/Relation.js @@ -7,6 +7,8 @@ import { FormattedMessage } from 'react-intl'; import pluginId from '../../pluginId'; import IconRemove from '../../assets/images/icon_remove.svg'; +/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ + const Relation = ({ data, mainField, onRemove, to }) => { return ( <> diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/index.js index 7d344d97a1..64eeb02e51 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SelectMany/index.js @@ -64,6 +64,7 @@ function SelectMany({ if (!isEmpty(value)) { const isSelected = value.findIndex(item => item.id === candidate.value.id) !== -1; + if (isSelected) { return false; } diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SelectWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SelectWrapper/index.js index bb23afb7a5..e308fe7806 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SelectWrapper/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SelectWrapper/index.js @@ -59,7 +59,7 @@ function SelectWrapper({ const data = await request(requestUrl, { method: 'GET', - params: params, + params, signal, }); @@ -82,6 +82,7 @@ function SelectWrapper({ if (objIndex === -1) { return true; } + return ( prevState.findIndex(el => el.value.id === obj.value.id) === index ); @@ -130,6 +131,7 @@ function SelectWrapper({ if (prevState._q === inputValue) { return prevState; } + return { ...prevState, _q: inputValue }; }); } @@ -220,7 +222,6 @@ SelectWrapper.defaultProps = { editable: true, description: '', label: '', - plugin: '', placeholder: '', }; @@ -231,7 +232,6 @@ SelectWrapper.propTypes = { mainField: PropTypes.string.isRequired, name: PropTypes.string.isRequired, placeholder: PropTypes.string, - plugin: PropTypes.string, relationType: PropTypes.string.isRequired, targetModel: PropTypes.string.isRequired, }; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js index cc139f8a03..6b2b168fe4 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js @@ -51,7 +51,7 @@ const SettingsViewWrapper = ({ id: `${pluginId}.popUpWarning.button.cancel`, }), type: 'button', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), style: { fontWeight: 600, paddingLeft: 15, @@ -64,7 +64,7 @@ const SettingsViewWrapper = ({ id: `${pluginId}.containers.Edit.submit`, }), type: 'submit', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), style: { minWidth: 150, fontWeight: 600, diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SortableList/Item.js b/packages/strapi-plugin-content-manager/admin/src/components/SortableList/Item.js index 0a37af7b20..d0b8233398 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SortableList/Item.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SortableList/Item.js @@ -29,6 +29,7 @@ const Item = ({ index, move, name, removeItem }) => { } const dragIndex = item.index; const hoverIndex = index; + // Don't replace items with themselves if (dragIndex === hoverIndex) { return; @@ -42,6 +43,7 @@ const Item = ({ index, move, name, removeItem }) => { const clientOffset = monitor.getClientOffset(); // Get pixels to the top const hoverClientY = clientOffset.y - hoverBoundingRect.top; + // Only perform the move when the mouse has crossed half of the items height // When dragging downwards, only move when the cursor is below 50% // When dragging upwards, only move when the cursor is above 50% diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/EditorWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/EditorWrapper.js index e284a97028..949b8ba9b8 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/EditorWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/EditorWrapper.js @@ -1,5 +1,5 @@ import styled, { css } from 'styled-components'; - +/* eslint-disable */ const EditorWrapper = styled.div` ${({ isFullscreen }) => { if (isFullscreen) { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/PreviewWysiwygWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/PreviewWysiwygWrapper.js index 0da1afcb66..3745f9bd65 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/PreviewWysiwygWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/PreviewWysiwygWrapper.js @@ -1,5 +1,7 @@ import styled, { css } from 'styled-components'; +/* eslint-disable */ + const PreviewWysiwygWrapper = styled.div` max-height: 555px; min-height: 294px; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/SelectWrapper.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/SelectWrapper.js index 84d6dd02fc..88fb07b88c 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/SelectWrapper.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/SelectWrapper.js @@ -1,5 +1,7 @@ import styled, { css } from 'styled-components'; +/* eslint-disable */ + const SelectWrapper = styled.div` min-width: ${({ isFullScreen }) => (isFullScreen ? '161px' : '115px')} margin-left: 15px; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/index.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/index.js index 33c866278a..578d36d789 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/index.js @@ -45,8 +45,8 @@ import { } from './utils'; import EditorWrapper from './EditorWrapper'; -/* eslint-disable react/jsx-handler-names */ -/* eslint-disable react/sort-comp */ +/* eslint-disable */ + class Wysiwyg extends React.Component { constructor(props) { super(props); diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewWysiwyg.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewWysiwyg.js index e3edcb35b5..0153392633 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewWysiwyg.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewWysiwyg.js @@ -33,6 +33,9 @@ import Link from './link'; import Video from './video'; /* eslint-disable react/no-unused-state */ +/* eslint-disable no-new */ +/* eslint-disable consistent-return */ +/* eslint-disable react/sort-comp */ function getBlockStyle(block) { switch (block.getType()) { case 'blockquote': @@ -91,6 +94,7 @@ const wrapBlockSpec = blockSpec => { // stringify meta data and insert it as text content of temp HTML element. We will later extract // and parse it. tempEl.innerText = JSON.stringify(blockSpec); + return tempEl; }; @@ -99,6 +103,7 @@ const replaceElement = (oldEl, newEl) => { return; } const parentNode = oldEl.parentNode; + return parentNode.replaceChild(newEl, oldEl); }; @@ -120,6 +125,7 @@ const createContentBlock = (blockData = {}) => { if (inlineStyles || entityData) { let entityKey; + if (entityData) { const { type, mutability, data } = entityData; entityKey = Entity.create(type, mutability, data); @@ -133,6 +139,7 @@ const createContentBlock = (blockData = {}) => { ); blockSpec.characterList = List(Repeat(charData, text.length)); } + return new ContentBlock(blockSpec); }; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/strategies.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/strategies.js index 0ccd95d584..382416e074 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/strategies.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/strategies.js @@ -3,13 +3,18 @@ function findLinkEntities(contentBlock, callback, contentState) { contentBlock.findEntityRanges(character => { const entityKey = character.getEntity(); - return entityKey !== null && contentState.getEntity(entityKey).getType() === 'LINK'; + + return ( + entityKey !== null && + contentState.getEntity(entityKey).getType() === 'LINK' + ); }, callback); } function findAtomicEntities(contentBlock, callback, contentState) { contentBlock.findEntityRanges(character => { const entityKey = character.getEntity(); + return entityKey !== null && contentBlock.getType() === 'atomic'; }, callback); } @@ -18,7 +23,11 @@ function findImageEntities(contentBlock, callback, contentState) { contentBlock.findEntityRanges(character => { const entityKey = character.getEntity(); - return entityKey !== null && contentState.getEntity(entityKey).getType() === 'IMAGE' && !isVideoType(contentState.getEntity(entityKey).getData().src); + return ( + entityKey !== null && + contentState.getEntity(entityKey).getType() === 'IMAGE' && + !isVideoType(contentState.getEntity(entityKey).getData().src) + ); }, callback); } @@ -26,10 +35,19 @@ function findVideoEntities(contentBlock, cb, contentState) { contentBlock.findEntityRanges(character => { const entityKey = character.getEntity(); - return entityKey !== null && contentState.getEntity(entityKey).getType() === 'IMAGE' && isVideoType(contentState.getEntity(entityKey).getData().src); + return ( + entityKey !== null && + contentState.getEntity(entityKey).getType() === 'IMAGE' && + isVideoType(contentState.getEntity(entityKey).getData().src) + ); }, cb); } -const isVideoType = (fileName) => /\.(mp4|mpg|mpeg|mov|avi)$/i.test(fileName); +const isVideoType = fileName => /\.(mp4|mpg|mpeg|mov|avi)$/i.test(fileName); -export { findAtomicEntities, findLinkEntities, findImageEntities, findVideoEntities }; +export { + findAtomicEntities, + findLinkEntities, + findImageEntities, + findVideoEntities, +}; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/utils.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/utils.js index 1ed5a91c0b..0f8b3ac224 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/utils.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/utils.js @@ -23,7 +23,6 @@ export function getNextBlocksList(editorState, startKey) { .concat([createNewBlock()]); } - export function updateSelection(selection, blocks, offset) { return selection.merge({ anchorKey: blocks.get(0).getKey(), @@ -39,6 +38,7 @@ export function getSelectedBlocksList(editorState) { const startKey = selectionState.getStartKey(); const endKey = selectionState.getEndKey(); const blockMap = contentState.getBlockMap(); + return blockMap .toSeq() .skipUntil((_, k) => k === startKey) @@ -56,19 +56,15 @@ export function onTab(editorState) { newContentState = Modifier.insertText( contentState, selection, - DEFAULT_INDENTATION, + DEFAULT_INDENTATION ); } else { newContentState = Modifier.replaceText( contentState, selection, - DEFAULT_INDENTATION, + DEFAULT_INDENTATION ); } - return EditorState.push( - editorState, - newContentState, - 'insert-characters' - ); + return EditorState.push(editorState, newContentState, 'insert-characters'); } diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/video.js b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/video.js index 5e31bedd97..c00d153eae 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/video.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/video.js @@ -7,6 +7,8 @@ import React from 'react'; import PropTypes from 'prop-types'; +/* eslint-disable jsx-a11y/media-has-caption */ + const Video = props => { const { height, src, width } = props.contentState .getEntity(props.entityKey) diff --git a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/index.js b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/index.js index 018924b7a6..26add895b5 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/index.js @@ -9,6 +9,10 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Span, Wrapper } from './components'; +/* eslint-disable jsx-a11y/label-has-associated-control */ +/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ +/* eslint-disable jsx-a11y/no-static-element-interactions */ + const WysiwygBottomControls = ({ isPreviewMode, onChange, onClick }) => { const browse = ( diff --git a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/StyledButton.js b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/StyledButton.js index ca4ce1eb6f..3ec2beeb2f 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/StyledButton.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/StyledButton.js @@ -36,6 +36,8 @@ const Button = styled.button` cursor: not-allowed; `; } + + return ''; }} > svg { diff --git a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/index.js b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/index.js index 84fa2aa9a9..d4d806e901 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/index.js @@ -15,6 +15,7 @@ import { Error } from '@buffetjs/core'; import Wysiwyg from '../Wysiwyg'; import Wrapper from './Wrapper'; +// eslint-disable-next-line react/prefer-stateless-function class WysiwygWithErrors extends React.Component { render() { const { @@ -114,6 +115,7 @@ WysiwygWithErrors.defaultProps = { style: {}, tabIndex: '0', validations: {}, + value: null, }; WysiwygWithErrors.propTypes = { diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/index.js index a4490869b9..e903b8525d 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/index.js @@ -463,16 +463,13 @@ const EditSettingsView = ({ }; EditSettingsView.defaultProps = { - deleteAllLayouts: () => {}, slug: null, }; EditSettingsView.propTypes = { - components: PropTypes.array.isRequired, - models: PropTypes.array.isRequired, - currentEnvironment: PropTypes.string, + currentEnvironment: PropTypes.string.isRequired, deleteLayout: PropTypes.func.isRequired, - deleteLayouts: PropTypes.func, + deleteLayouts: PropTypes.func.isRequired, componentsAndModelsMainPossibleMainFields: PropTypes.object.isRequired, history: PropTypes.shape({ push: PropTypes.func, @@ -480,7 +477,7 @@ EditSettingsView.propTypes = { location: PropTypes.shape({ search: PropTypes.string.isRequired, }).isRequired, - plugins: PropTypes.object, + plugins: PropTypes.object.isRequired, slug: PropTypes.string, }; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/reducer.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/reducer.js index 668a843206..8a1e74ba9f 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/reducer.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditSettingsView/reducer.js @@ -104,7 +104,7 @@ const reducer = (state, action) => { // Delete the entire row if length is one or if lenght is equal to 2 and the second element is the hidden div used to make the dnd exp smoother if ( row.size === 1 || - (row.size == 2 && row.getIn([1, 'name']) === '_TEMP_') + (row.size === 2 && row.getIn([1, 'name']) === '_TEMP_') ) { newState = state.updateIn(layoutPathEdit, list => list.delete(action.rowIndex) diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js index d98c4609a1..99ea1892c6 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js @@ -37,12 +37,14 @@ const Header = () => { ); const isCreatingEntry = id === 'create'; + /* eslint-disable indent */ const headerTitle = isCreatingEntry ? formatMessage({ id: `${pluginId}.containers.Edit.pluginHeader.title.new`, }) : templateObject({ mainField: currentContentTypeMainField }, initialData) .mainField; + /* eslint-enable indent */ const getHeaderActions = () => { const headerActions = [ diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js index 70b61600de..f43e27e95b 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js @@ -26,6 +26,8 @@ import { LinkWrapper, SubWrapper } from './components'; import init from './init'; import reducer, { initialState } from './reducer'; +/* eslint-disable react/no-array-index-key */ + const EditView = ({ components, currentEnvironment, @@ -274,7 +276,7 @@ const EditView = ({ }} icon="layout" key={`${pluginId}.link`} - url={`ctm-configurations/edit-settings/content-types`} + url="ctm-configurations/edit-settings/content-types" onClick={() => { // emitEvent('willEditContentTypeLayoutFromEditView'); }} diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/createAttributesLayout.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/createAttributesLayout.js index 8dab03f62e..e9349598e4 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/createAttributesLayout.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/createAttributesLayout.js @@ -1,5 +1,7 @@ import { get, isEmpty } from 'lodash'; +/* eslint-disable no-restricted-syntax */ + const createAttributesLayout = (currentLayout, attributes) => { const getType = name => get(attributes, [name, 'type'], ''); let currentRowIndex = 0; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/formatData.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/formatData.js index f6904897d8..345d193caf 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/formatData.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/formatData.js @@ -1,5 +1,7 @@ import { get, isArray, isEmpty, isObject } from 'lodash'; +/* eslint-disable indent */ + export const cleanData = (retrievedData, ctLayout, groupLayouts) => { const getType = (schema, attrName) => get(schema, ['attributes', attrName, 'type'], ''); @@ -112,11 +114,12 @@ export const getMediaAttributes = (ctLayout, groupLayouts) => { export const helperCleanData = (value, key) => { if (isArray(value)) { return value.map(obj => (obj[key] ? obj[key] : obj)); - } else if (isObject(value)) { - return value[key]; - } else { - return value; } + if (isObject(value)) { + return value[key]; + } + + return value; }; export const mapDataKeysToFilesToUpload = (filesMap, data) => { @@ -135,6 +138,7 @@ export const mapDataKeysToFilesToUpload = (filesMap, data) => { }; const getFileToUpload = path => { const file = get(data, [...path, 0], ''); + if (file instanceof File) { return [file]; } diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js index c3cb9cd836..6c9961498d 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js @@ -78,6 +78,7 @@ const EditViewDataManagerProvider = ({ get(allLayoutData, ['components', current, 'schema', 'attributes'], {}), allLayoutData.components ); + return acc; }, {}); const contentTypeDataStructure = createDefaultForm( @@ -176,6 +177,7 @@ const EditViewDataManagerProvider = ({ if (dzName !== modifiedDZName) { acc[current] = errors[current]; } + return acc; }, {}); } diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/cleanData.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/cleanData.js index 922ea6c740..a17840599e 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/cleanData.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/cleanData.js @@ -1,5 +1,7 @@ import { get, isArray, isObject } from 'lodash'; +/* eslint-disable indent */ + const cleanData = (retrievedData, currentSchema, componentsSchema) => { const getType = (schema, attrName) => get(schema, ['attributes', attrName, 'type'], ''); @@ -90,11 +92,12 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => { export const helperCleanData = (value, key) => { if (isArray(value)) { return value.map(obj => (obj[key] ? obj[key] : obj)); - } else if (isObject(value)) { - return value[key]; - } else { - return value; } + if (isObject(value)) { + return value[key]; + } + + return value; }; export default cleanData; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/createDefaultForm.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/createDefaultForm.js index 10cc0303e4..317bcc8ffc 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/createDefaultForm.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/createDefaultForm.js @@ -42,7 +42,7 @@ const createDefaultForm = (attributes, allComponentsSchema) => { if (min && repeatable === true && required) { acc[current] = []; - for (let i = 0; i < min; i++) { + for (let i = 0; i < min; i += 1) { acc[current].push(currentComponentDefaultForm); } } diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js index 42e5c5bb2a..fb608887b7 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js @@ -25,6 +25,7 @@ yup.addMethod(yup.array, 'notEmptyMin', function(min) { if (isEmpty(value)) { return true; } + return value.length >= min; }); }); @@ -65,6 +66,7 @@ const createYupSchema = (model, { components }) => { return yup.object().shape( Object.keys(attributes).reduce((acc, current) => { const attribute = attributes[current]; + if ( attribute.type !== 'relation' && attribute.type !== 'component' && @@ -118,24 +120,23 @@ const createYupSchema = (model, { components }) => { acc[current] = componentSchema; - return acc; - } else { - const componentSchema = yup.lazy(obj => { - if (obj !== undefined) { - return attribute.required === true - ? componentFieldSchema.defined() - : componentFieldSchema.nullable(); - } - - return attribute.required === true - ? yup.object().defined() - : yup.object().nullable(); - }); - - acc[current] = componentSchema; - return acc; } + const componentSchema = yup.lazy(obj => { + if (obj !== undefined) { + return attribute.required === true + ? componentFieldSchema.defined() + : componentFieldSchema.nullable(); + } + + return attribute.required === true + ? yup.object().defined() + : yup.object().nullable(); + }); + + acc[current] = componentSchema; + + return acc; } if (attribute.type === 'dynamiczone') { @@ -156,6 +157,7 @@ const createYupSchema = (model, { components }) => { .required(errorsTrads.required); } } else { + // eslint-disable-next-line no-lonely-if if (min) { dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min); } @@ -203,6 +205,7 @@ const createYupSchemaAttribute = (type, validations) => { try { JSON.parse(value); + return true; } catch (err) { return false; @@ -232,6 +235,7 @@ const createYupSchemaAttribute = (type, validations) => { Object.keys(validations).forEach(validation => { const validationValue = validations[validation]; + if ( !!validationValue || ((!isBoolean(validationValue) && diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/LayoutDndProvider/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/LayoutDndProvider/index.js index 2eaf8c435b..9c80e9af3e 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/LayoutDndProvider/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/LayoutDndProvider/index.js @@ -46,7 +46,6 @@ LayoutDndProvider.defaultProps = { buttonData: [], goTo: () => {}, layout: [], - isDraggingSibling: true, metadatas: {}, moveItem: () => {}, moveRow: () => {}, @@ -55,7 +54,6 @@ LayoutDndProvider.defaultProps = { removeField: () => {}, selectedItemName: null, setEditFieldToSelect: () => {}, - setIsDraggingSibling: () => {}, }; LayoutDndProvider.propTypes = { diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/Label.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/Label.js index 3cf61a32bf..d7e1739eed 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/Label.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/Label.js @@ -27,6 +27,7 @@ const Label = ({ } const dragIndex = item.index; const hoverIndex = index; + // Don't replace items with themselves if (dragIndex === hoverIndex) { return; @@ -73,7 +74,6 @@ const Label = ({ Label.defaultProps = { index: 0, label: '', - move: () => {}, selectedItem: '', }; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/index.js index 64e4b792be..e072107766 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListSettingsView/index.js @@ -334,7 +334,6 @@ ListSettingsView.propTypes = { location: PropTypes.shape({ search: PropTypes.string.isRequired, }).isRequired, - models: PropTypes.array.isRequired, slug: PropTypes.string.isRequired, }; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js index 22a6da9a73..913efa4661 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js @@ -40,6 +40,8 @@ import reducer from './reducer'; import saga from './saga'; import makeSelectListView from './selectors'; +/* eslint-disable react/no-array-index-key */ + function ListView({ count, data, @@ -419,12 +421,12 @@ ListView.propTypes = { location: PropTypes.shape({ pathname: PropTypes.string.isRequired, search: PropTypes.string.isRequired, - }), + }).isRequired, models: PropTypes.array.isRequired, getData: PropTypes.func.isRequired, history: PropTypes.shape({ push: PropTypes.func.isRequired, - }), + }).isRequired, onChangeBulk: PropTypes.func.isRequired, onChangeBulkSelectall: PropTypes.func.isRequired, onChangeListLabels: PropTypes.func.isRequired, diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/saga.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/saga.js index 08ca20b3f2..df1c1e2463 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/saga.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/saga.js @@ -34,6 +34,7 @@ export function* getData({ uid, params }) { const key = curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`; acc.push(`${key}=${curr.value}`); + return acc; }, []); diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/Main/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/Main/index.js index 1532a9f467..47a551a8fd 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/Main/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/Main/index.js @@ -12,10 +12,6 @@ import { DndProvider } from 'react-dnd'; import HTML5Backend from 'react-dnd-html5-backend'; import pluginId from '../../pluginId'; import DragLayer from '../../components/DragLayer'; - -const EditSettingsView = lazy(() => import('../EditSettingsView')); -const RecursivePath = lazy(() => import('../RecursivePath')); - import { deleteLayout, deleteLayouts, @@ -27,6 +23,9 @@ import reducer from './reducer'; import saga from './saga'; import makeSelectMain from './selectors'; +const EditSettingsView = lazy(() => import('../EditSettingsView')); +const RecursivePath = lazy(() => import('../RecursivePath')); + function Main({ deleteLayout, deleteLayouts, @@ -122,15 +121,15 @@ Main.propTypes = { global: PropTypes.shape({ currentEnvironment: PropTypes.string.isRequired, plugins: PropTypes.object, - }), + }).isRequired, components: PropTypes.array.isRequired, componentsAndModelsMainPossibleMainFields: PropTypes.object.isRequired, - isLoading: PropTypes.bool, + isLoading: PropTypes.bool.isRequired, layouts: PropTypes.object.isRequired, location: PropTypes.shape({ pathname: PropTypes.string.isRequired, search: PropTypes.string, - }), + }).isRequired, models: PropTypes.array.isRequired, resetProps: PropTypes.func.isRequired, }; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/Main/reducer.js b/packages/strapi-plugin-content-manager/admin/src/containers/Main/reducer.js index fa7c362b02..d031a1426f 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/Main/reducer.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/Main/reducer.js @@ -50,6 +50,7 @@ function mainReducer(state = initialState, action) { if (value) { return list.push(name); } + return list.filter(l => l !== name); } ); diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/RecursivePath/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/RecursivePath/index.js index 001b41a9f3..deea85b569 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/RecursivePath/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/RecursivePath/index.js @@ -1,6 +1,7 @@ import React, { Suspense, lazy } from 'react'; import { Switch, Route, useRouteMatch, useParams } from 'react-router-dom'; import { LoadingIndicatorPage } from 'strapi-helper-plugin'; + const EditView = lazy(() => import('../EditView')); const EditSettingsView = lazy(() => import('../EditSettingsView')); const ListView = lazy(() => import('../ListView')); diff --git a/packages/strapi-plugin-content-manager/admin/src/utils/layout.js b/packages/strapi-plugin-content-manager/admin/src/utils/layout.js index 8b207c0e3f..b4d1fcf1eb 100644 --- a/packages/strapi-plugin-content-manager/admin/src/utils/layout.js +++ b/packages/strapi-plugin-content-manager/admin/src/utils/layout.js @@ -56,6 +56,7 @@ const formatLayout = arr => { if (row.rowContent.length === 1) { return row.rowContent[0].name !== '_TEMP_'; } + return true; }); }; diff --git a/packages/strapi-plugin-content-manager/admin/src/utils/search.js b/packages/strapi-plugin-content-manager/admin/src/utils/search.js index ed1439a353..4eec687067 100644 --- a/packages/strapi-plugin-content-manager/admin/src/utils/search.js +++ b/packages/strapi-plugin-content-manager/admin/src/utils/search.js @@ -63,6 +63,7 @@ const generateSearchFromFilters = filters => { const key = curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`; acc.push(`${key}=${curr.value}`); + return acc; }, []) .join('&'); diff --git a/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditSettingViewButton.js b/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditSettingViewButton.js index 95a7155838..a338688a42 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditSettingViewButton.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditSettingViewButton.js @@ -64,7 +64,7 @@ function EditViewButton(props) { outline: 0, fontWeight: 600, }} - > + /> ); } diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/BooleanBox/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/BooleanBox/index.js index eb03bbf4a7..ec024988b3 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/BooleanBox/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/BooleanBox/index.js @@ -25,7 +25,7 @@ const BooleanBox = ({ label, name, onChange, options, value }) => { onChange={onChange} type="radio" value={option.value} - > + /> ); })} {options.map(option => { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentCard/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentCard/index.js index 6b18e5bd1f..3377fb2d99 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentCard/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentCard/index.js @@ -13,6 +13,8 @@ import useDataManager from '../../hooks/useDataManager'; import Wrapper from './Wrapper'; import Close from './Close'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ + function ComponentCard({ component, dzName, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Cell.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Cell.js index 576ed90108..5c01ef2e1e 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Cell.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Cell.js @@ -25,6 +25,8 @@ const Cell = styled.div` } `; } + + return ''; }} > svg { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js index 5f3d74b10f..35893c77ff 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js @@ -2,6 +2,8 @@ import styled from 'styled-components'; import { colors } from '@buffetjs/styles'; import PropTypes from 'prop-types'; +/* eslint-disable indent */ + const Wrapper = styled.div` min-height: 199px; margin-top: -2px; @@ -16,6 +18,8 @@ const Wrapper = styled.div` border-radius: 2px; `; } + + return ''; }} &:focus, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js index 0bf265042a..1291434043 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js @@ -9,6 +9,8 @@ import Search from './Search'; import SearchWrapper from './SearchWrapper'; import Wrapper from './Wrapper'; +/* eslint-disable jsx-a11y/control-has-associated-label */ + const ComponentIconPicker = ({ error, isCreating, @@ -78,7 +80,7 @@ const ComponentIconPicker = ({ ) : ( - +
{headersName.map(header => { return ( @@ -89,15 +92,12 @@ const EventInput = ({ onChange, name: inputName, value: inputValue }) => { ); }; -EventInput.defaultProps = { - onBlur: () => {}, -}; +EventInput.defaultProps = {}; EventInput.propTypes = { name: PropTypes.string.isRequired, - onBlur: PropTypes.func, onChange: PropTypes.func.isRequired, - value: PropTypes.array, + value: PropTypes.array.isRequired, }; export default EventInput; diff --git a/packages/strapi-admin/admin/src/components/HeadersInput/index.js b/packages/strapi-admin/admin/src/components/HeadersInput/index.js index 6478860619..af117dd574 100644 --- a/packages/strapi-admin/admin/src/components/HeadersInput/index.js +++ b/packages/strapi-admin/admin/src/components/HeadersInput/index.js @@ -11,8 +11,10 @@ import getBorderColor from './utils/getBorderColor'; import keys from './keys'; import Wrapper from './Wrapper'; +/* eslint-disable react/no-array-index-key */ + const HeadersInput = ({ errors, name, onClick, onChange, onRemove, value }) => { - const formatOption = value => ({ value: value, label: value }); + const formatOption = value => ({ value, label: value }); const options = keys.map(key => formatOption(key)); const handleChangeKey = (selected, name) => { diff --git a/packages/strapi-admin/admin/src/components/HeadersInput/utils/getBorderColor.js b/packages/strapi-admin/admin/src/components/HeadersInput/utils/getBorderColor.js index 501c24e682..b032e59a04 100644 --- a/packages/strapi-admin/admin/src/components/HeadersInput/utils/getBorderColor.js +++ b/packages/strapi-admin/admin/src/components/HeadersInput/utils/getBorderColor.js @@ -5,6 +5,7 @@ const getBorderColor = ({ isFocused = false, hasError = false }) => { if (hasError) { return '#F64D0A'; } + return '#E3E9F3'; }; diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js index 004148090d..48d653fb98 100644 --- a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js @@ -7,12 +7,10 @@ import React from 'react'; import { defineMessages, FormattedMessage } from 'react-intl'; import { PropTypes } from 'prop-types'; - import LeftMenuLink from '../LeftMenuLink'; - import Wrapper from './Wrapper'; - import messages from './messages.json'; + defineMessages(messages); function LeftMenuFooter({ version, ...rest }) { diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js b/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js index 2e3d3ec320..93e2c086d0 100644 --- a/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js @@ -13,6 +13,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import en from '../../translations/en.json'; import Li from './Li'; +/* eslint-disable */ + function LeftMenuLink(props) { const isLinkActive = startsWith( props.location.pathname.replace('/admin', '').concat('/'), diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js b/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js index b49328a2e9..c19cbcc2a4 100644 --- a/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js @@ -8,11 +8,12 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { get, snakeCase, isEmpty, map, sortBy } from 'lodash'; - import LeftMenuLink from '../LeftMenuLink'; import Wrapper from './Wrapper'; import messages from './messages.json'; +/* eslint-disable */ + function LeftMenuLinkContainer({ plugins, ...rest }) { // Generate the list of sections const pluginsSections = Object.keys(plugins).reduce((acc, current) => { diff --git a/packages/strapi-admin/admin/src/components/ListPlugins/index.js b/packages/strapi-admin/admin/src/components/ListPlugins/index.js index 4c2a14a705..1ada5aef60 100644 --- a/packages/strapi-admin/admin/src/components/ListPlugins/index.js +++ b/packages/strapi-admin/admin/src/components/ListPlugins/index.js @@ -15,6 +15,8 @@ import { Button } from 'strapi-helper-plugin'; import Row from '../Row'; import Wrapper from './Wrapper'; +/* eslint-disable react/prefer-stateless-function */ + class ListPlugins extends React.Component { render() { const listSize = size(this.props.plugins); diff --git a/packages/strapi-admin/admin/src/components/ListRow/index.js b/packages/strapi-admin/admin/src/components/ListRow/index.js index a0f56f48e9..5422f47a9a 100644 --- a/packages/strapi-admin/admin/src/components/ListRow/index.js +++ b/packages/strapi-admin/admin/src/components/ListRow/index.js @@ -55,12 +55,16 @@ function ListRow({

{url}

-
e.stopPropagation()}> +
e.stopPropagation()} + role="button" + aria-hidden="true" + > onEnabledChange(value, id)} - > + />
diff --git a/packages/strapi-admin/admin/src/components/Notification/index.js b/packages/strapi-admin/admin/src/components/Notification/index.js index 36c00e7cd5..43a89d7075 100644 --- a/packages/strapi-admin/admin/src/components/Notification/index.js +++ b/packages/strapi-admin/admin/src/components/Notification/index.js @@ -3,7 +3,7 @@ * Notification * */ - +/* eslint-disable */ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; diff --git a/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js b/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js index 83cdb4fd85..48bbe62241 100644 --- a/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js +++ b/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js @@ -11,6 +11,8 @@ import { CSSTransition } from 'react-transition-group'; import Notification from '../Notification'; import Wrapper from './Wrapper'; +/* eslint-disable */ + const NotificationsContainer = ({ notifications, onHideNotification }) => { if (notifications.length === 0) { return false; diff --git a/packages/strapi-admin/admin/src/components/OnboardingVideo/index.js b/packages/strapi-admin/admin/src/components/OnboardingVideo/index.js index 5865ff3770..ddbf89da97 100644 --- a/packages/strapi-admin/admin/src/components/OnboardingVideo/index.js +++ b/packages/strapi-admin/admin/src/components/OnboardingVideo/index.js @@ -13,6 +13,8 @@ import { Player } from 'video-react'; import 'video-react/dist/video-react.css'; import Li from './Li'; +/* eslint-disable */ + class OnboardingVideo extends React.Component { componentDidMount() { this.hiddenPlayer.current.subscribeToStateChange(this.handleChangeState); diff --git a/packages/strapi-admin/admin/src/components/Row/index.js b/packages/strapi-admin/admin/src/components/Row/index.js index aee786026e..4db6d43cde 100644 --- a/packages/strapi-admin/admin/src/components/Row/index.js +++ b/packages/strapi-admin/admin/src/components/Row/index.js @@ -22,6 +22,8 @@ import Content from './Content'; const PLUGINS_WITH_CONFIG = ['email', 'upload']; +/* eslint-disable */ + class Row extends React.Component { static contextType = GlobalContext; state = { showModal: false }; diff --git a/packages/strapi-admin/admin/src/components/Switch/index.js b/packages/strapi-admin/admin/src/components/Switch/index.js index 9b64df599f..b819e2464f 100644 --- a/packages/strapi-admin/admin/src/components/Switch/index.js +++ b/packages/strapi-admin/admin/src/components/Switch/index.js @@ -20,12 +20,11 @@ function Switch({ name, value, onChange }) { checked={value} name={name} onChange={({ target: { checked } }) => - onChange({ target: { name, value: checked } }) - } + onChange({ target: { name, value: checked } })} />
-
-
+
+

{value diff --git a/packages/strapi-admin/admin/src/containers/Admin/index.js b/packages/strapi-admin/admin/src/containers/Admin/index.js index 52488cec69..49e79040a4 100644 --- a/packages/strapi-admin/admin/src/containers/Admin/index.js +++ b/packages/strapi-admin/admin/src/containers/Admin/index.js @@ -52,6 +52,14 @@ import Content from './Content'; export class Admin extends React.Component { // eslint-disable-line react/prefer-stateless-function + helpers = { + updatePlugin: this.props.updatePlugin, + }; + + componentDidMount() { + this.props.emitEvent('didAccessAuthenticatedAdministration'); + } + shouldComponentUpdate(prevProps) { return !isEmpty(difference(prevProps, this.props)); } @@ -70,10 +78,6 @@ export class Admin extends React.Component { this.props.setAppError(); } - componentDidMount() { - this.props.emitEvent('didAccessAuthenticatedAdministration'); - } - hasApluginNotReady = props => { const { global: { plugins }, @@ -84,10 +88,6 @@ export class Admin extends React.Component { ); }; - helpers = { - updatePlugin: this.props.updatePlugin, - }; - /** * Display the app loader until the app is ready * @returns {Boolean} @@ -135,10 +135,10 @@ export class Admin extends React.Component { // We need the admin data in order to make the initializers work if (this.showLoader()) { return ( - + <> {this.renderInitializers()} - + ); } @@ -202,6 +202,12 @@ export class Admin extends React.Component { } } +Admin.defaultProps = { + intl: { + formatMessage: () => {}, + }, +}; + Admin.propTypes = { admin: PropTypes.shape({ appError: PropTypes.bool, diff --git a/packages/strapi-admin/admin/src/containers/App/index.js b/packages/strapi-admin/admin/src/containers/App/index.js index b71b31099c..f7d718c78e 100644 --- a/packages/strapi-admin/admin/src/containers/App/index.js +++ b/packages/strapi-admin/admin/src/containers/App/index.js @@ -23,6 +23,7 @@ import GlobalStyle from '../../components/GlobalStyle'; import Admin from '../Admin'; import AuthPage from '../AuthPage'; import NotFoundPage from '../NotFoundPage'; +// eslint-disable-next-line import/no-cycle import NotificationProvider from '../NotificationProvider'; import PrivateRoute from '../PrivateRoute'; import Theme from '../Theme'; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/Input.js b/packages/strapi-admin/admin/src/containers/AuthPage/Input.js index 01436b1f76..3fb9218024 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/Input.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/Input.js @@ -6,6 +6,8 @@ import { get } from 'lodash'; import { InputsIndex as Inputs } from 'strapi-helper-plugin'; import CustomLabel from './CustomLabel'; +/* eslint-disable */ + const Input = ({ autoFocus, customBootstrapClass, diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/index.js b/packages/strapi-admin/admin/src/containers/AuthPage/index.js index c6cb9dda09..f1d3bb8e37 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/index.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/index.js @@ -1,8 +1,7 @@ import React, { memo, useEffect, useReducer, useRef } from 'react'; import PropTypes from 'prop-types'; -import { get, isEmpty, omit, set } from 'lodash'; +import { get, isEmpty, omit, set, upperFirst } from 'lodash'; import { FormattedMessage } from 'react-intl'; -import { upperFirst } from 'lodash'; import { Link, Redirect } from 'react-router-dom'; import { auth, @@ -267,12 +266,12 @@ AuthPage.propTypes = { hasAdminUser: PropTypes.bool.isRequired, location: PropTypes.shape({ search: PropTypes.string.isRequired, - }), + }).isRequired, match: PropTypes.shape({ params: PropTypes.shape({ authType: PropTypes.string, - }), - }), + }).isRequired, + }).isRequired, }; export default memo(AuthPage); diff --git a/packages/strapi-admin/admin/src/containers/HomePage/SocialLink.js b/packages/strapi-admin/admin/src/containers/HomePage/SocialLink.js index a0bf993694..caa4aac58e 100644 --- a/packages/strapi-admin/admin/src/containers/HomePage/SocialLink.js +++ b/packages/strapi-admin/admin/src/containers/HomePage/SocialLink.js @@ -38,7 +38,7 @@ const SocialLink = ({ link, name }) => { return ( - + {name} {name} diff --git a/packages/strapi-admin/admin/src/containers/HomePage/components.js b/packages/strapi-admin/admin/src/containers/HomePage/components.js index b7f1c52732..4db546003f 100644 --- a/packages/strapi-admin/admin/src/containers/HomePage/components.js +++ b/packages/strapi-admin/admin/src/containers/HomePage/components.js @@ -1,3 +1,4 @@ +/* eslint-disable */ import styled, { css } from 'styled-components'; const Block = styled.div` diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js index 779eed0a12..101d6a17c2 100644 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js @@ -4,9 +4,9 @@ * */ -import { - CHANGE_LOCALE, -} from './constants'; +/* eslint-disable */ + +import { CHANGE_LOCALE } from './constants'; export function changeLocale(languageLocale) { return { diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js index 7d2f42564e..8d2bd0d621 100644 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js @@ -4,4 +4,5 @@ * */ +/* eslint-disable */ export const CHANGE_LOCALE = 'app/LanguageToggle/CHANGE_LOCALE'; diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js index 7c618ad0fe..c6c6d4e4d5 100644 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js @@ -14,13 +14,14 @@ import { IntlProvider } from 'react-intl'; import { defaultsDeep } from 'lodash'; import { selectLocale } from './selectors'; +// eslint-disable-next-line react/prefer-stateless-function export class LanguageProvider extends React.Component { - // eslint-disable-line react/prefer-stateless-function render() { const messages = defaultsDeep( this.props.messages[this.props.locale], - this.props.messages.en, + this.props.messages.en ); + return ( ({ locale }), + locale => ({ locale }) ); function mapDispatchToProps(dispatch) { @@ -52,5 +53,5 @@ function mapDispatchToProps(dispatch) { export default connect( mapStateToProps, - mapDispatchToProps, + mapDispatchToProps )(LanguageProvider); diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/reducer.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/reducer.js index a4d5415029..a2f71a09d8 100644 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/reducer.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/reducer.js @@ -9,11 +9,10 @@ import { get, includes, split } from 'lodash'; // Import supported languages from the translations folder import trads from '../../translations'; +import { CHANGE_LOCALE } from './constants'; const languages = Object.keys(trads); -import { CHANGE_LOCALE } from './constants'; - // Define a key to store and get user preferences in local storage. const localStorageKey = 'strapi-admin-language'; @@ -24,6 +23,7 @@ const userLanguage = window.navigator.userLanguage; let foundLanguage = includes(languages, userLanguage) && userLanguage; + if (!foundLanguage) { // Split user language in a correct format. const userLanguageShort = get(split(userLanguage, '-'), '0'); diff --git a/packages/strapi-admin/admin/src/containers/ListPluginsPage/index.js b/packages/strapi-admin/admin/src/containers/ListPluginsPage/index.js index e8df101591..7e809901ad 100644 --- a/packages/strapi-admin/admin/src/containers/ListPluginsPage/index.js +++ b/packages/strapi-admin/admin/src/containers/ListPluginsPage/index.js @@ -86,7 +86,7 @@ export class ListPluginsPage extends React.Component { ListPluginsPage.propTypes = { global: PropTypes.shape({ currentEnvironment: PropTypes.string.isRequired, - }), + }).isRequired, getPlugins: PropTypes.func.isRequired, history: PropTypes.object.isRequired, intl: PropTypes.shape({ diff --git a/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js b/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js index f3c68a755b..bb189ebc2c 100644 --- a/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js +++ b/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js @@ -7,6 +7,8 @@ import { deletePluginSucceeded, getPluginsSucceeded } from './actions'; import { GET_PLUGINS, ON_DELETE_PLUGIN_CONFIRM } from './constants'; import { makeSelectPluginToDelete } from './selectors'; +/* eslint-disable */ + export function* deletePlugin() { try { const plugin = yield select(makeSelectPluginToDelete()); diff --git a/packages/strapi-admin/admin/src/containers/LocaleToggle/actions.js b/packages/strapi-admin/admin/src/containers/LocaleToggle/actions.js index ee29597f01..18a19ab581 100644 --- a/packages/strapi-admin/admin/src/containers/LocaleToggle/actions.js +++ b/packages/strapi-admin/admin/src/containers/LocaleToggle/actions.js @@ -1,12 +1,9 @@ /** - * + * * LocaleToggle actions */ -import { - RESET_DEFAULT_CLASSNAME, - SET_CUSTOM_CLASSNAME, -} from './constants'; +import { RESET_DEFAULT_CLASSNAME, SET_CUSTOM_CLASSNAME } from './constants'; export function resetLocaleDefaultClassName() { return { diff --git a/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/selectors.test.js b/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/selectors.test.js index 171b32af32..1472f967b0 100644 --- a/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/selectors.test.js +++ b/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/selectors.test.js @@ -11,7 +11,7 @@ describe(' selectors', () => { const mockedState = fromJS({ localeToggle: state, }); - + expect(selectLocaleToggle()(mockedState)).toEqual(state); }); }); @@ -29,5 +29,3 @@ describe(' selectors', () => { }); }); }); - - diff --git a/packages/strapi-admin/admin/src/containers/Marketplace/index.js b/packages/strapi-admin/admin/src/containers/Marketplace/index.js index 426df44df9..4b5bf4632b 100644 --- a/packages/strapi-admin/admin/src/containers/Marketplace/index.js +++ b/packages/strapi-admin/admin/src/containers/Marketplace/index.js @@ -118,7 +118,7 @@ Marketplace.propTypes = { global: PropTypes.shape({ autoReload: PropTypes.bool.isRequired, currentEnvironment: PropTypes.string.isRequired, - }), + }).isRequired, history: PropTypes.object.isRequired, installedPlugins: PropTypes.array.isRequired, intl: PropTypes.shape({ diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js index f831c03159..88bcced5e4 100644 --- a/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js +++ b/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js @@ -4,6 +4,7 @@ * */ +/* eslint-disable import/no-cycle */ import { dispatch } from '../../app'; import { SHOW_NOTIFICATION, HIDE_NOTIFICATION } from './constants'; diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js index 38d243f67d..42e391a4f4 100644 --- a/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js +++ b/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js @@ -4,16 +4,16 @@ * */ +/* eslint-disable */ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; - import NotificationsContainer from '../../components/NotificationsContainer'; import { selectNotifications } from './selectors'; import { hideNotification } from './actions'; -export class NotificationProvider extends React.Component { // eslint-disable-line react/prefer-stateless-function +export class NotificationProvider extends React.Component { render() { return ( { + onHideNotification: id => { dispatch(hideNotification(id)); }, dispatch, }; } -export default connect(mapStateToProps, mapDispatchToProps)(NotificationProvider); +export default connect( + mapStateToProps, + mapDispatchToProps +)(NotificationProvider); diff --git a/packages/strapi-admin/admin/src/containers/Onboarding/Wrapper.js b/packages/strapi-admin/admin/src/containers/Onboarding/Wrapper.js index e5577ed905..61febdc32b 100644 --- a/packages/strapi-admin/admin/src/containers/Onboarding/Wrapper.js +++ b/packages/strapi-admin/admin/src/containers/Onboarding/Wrapper.js @@ -1,5 +1,36 @@ import styled, { keyframes } from 'styled-components'; +const fadeIn = keyframes` +0% { + width: auto; + height: auto; + opacity: 0; +} + +5% { + opacity: 0; +} + +100% { + opacity: 1; +} +`; +const fadeOut = keyframes` +0% { + opacity: 1; +} + +60% { + opacity: 0; +} + +100% { + opacity: 0; + width: 0; + height: 0; +} +`; + const Wrapper = styled.div` position: fixed; right: 15px; @@ -93,35 +124,4 @@ const Wrapper = styled.div` } `; -const fadeIn = keyframes` -0% { - width: auto; - height: auto; - opacity: 0; -} - -5% { - opacity: 0; -} - -100% { - opacity: 1; -} -`; -const fadeOut = keyframes` -0% { - opacity: 1; -} - -60% { - opacity: 0; -} - -100% { - opacity: 0; - width: 0; - height: 0; -} -`; - export default Wrapper; diff --git a/packages/strapi-admin/admin/src/containers/Onboarding/index.js b/packages/strapi-admin/admin/src/containers/Onboarding/index.js index 29bfac719a..efd37b3d6e 100644 --- a/packages/strapi-admin/admin/src/containers/Onboarding/index.js +++ b/packages/strapi-admin/admin/src/containers/Onboarding/index.js @@ -27,9 +27,9 @@ import makeSelectOnboarding from './selectors'; import reducer from './reducer'; import saga from './saga'; -export class Onboarding extends React.Component { - static contextType = GlobalContext; +/* eslint-disable react/no-array-index-key */ +export class Onboarding extends React.Component { state = { showVideos: false }; componentDidMount() { @@ -92,6 +92,8 @@ export class Onboarding extends React.Component { this.props.setVideoEnd(index, true); }; + static contextType = GlobalContext; + render() { const { videos, onClick, setVideoDuration } = this.props; const { showVideos } = this.state; @@ -144,6 +146,7 @@ export class Onboarding extends React.Component {