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 9e5590e1f8..ccb70e2656 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -59,16 +59,32 @@ module.exports = { 'arrow-body-style': 0, 'arrow-parens': 0, camelcase: 0, + 'comma-dangle': 0, 'consistent-return': [ 2, { treatUndefinedAsUnspecified: true, }, ], - 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }], + 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, { @@ -80,19 +96,37 @@ module.exports = { ignoreTemplateLiterals: true, }, ], + '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, + 'prefer-arrow-callback': 0, 'prefer-const': 0, 'prefer-destructuring': 0, 'prefer-object-spread': 0, - 'react/destructuring-assignment': 1, + '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/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/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 b64807ee55..35f5db4a73 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/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/containers/Admin/index.js b/packages/strapi-admin/admin/src/containers/Admin/index.js index 9ca62b6658..c996e9a78c 100644 --- a/packages/strapi-admin/admin/src/containers/Admin/index.js +++ b/packages/strapi-admin/admin/src/containers/Admin/index.js @@ -51,6 +51,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)); } @@ -69,10 +77,6 @@ export class Admin extends React.Component { this.props.setAppError(); } - componentDidMount() { - this.props.emitEvent('didAccessAuthenticatedAdministration'); - } - hasApluginNotReady = props => { const { global: { plugins }, @@ -83,10 +87,6 @@ export class Admin extends React.Component { ); }; - helpers = { - updatePlugin: this.props.updatePlugin, - }; - /** * Display the app loader until the app is ready * @returns {Boolean} @@ -136,10 +136,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()} - + ); } @@ -200,6 +200,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..35d4e14055 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 ( - + social {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..371c708328 100644 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js @@ -14,12 +14,12 @@ 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 +52,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/index.test.js b/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/index.test.js index 646dc47981..4f5664bcc5 100644 --- a/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/index.test.js +++ b/packages/strapi-admin/admin/src/containers/LocaleToggle/tests/index.test.js @@ -89,7 +89,7 @@ describe('', () => { 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/flags/4x3/vn.svg' ); }); - + it('should return the sk flag', () => { const renderedComponent = shallow(); const { getFlagUrl } = renderedComponent.instance(); 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 { 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/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 905d5e2ced..59bc700c2b 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, { css } 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/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..7aff47dce6 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 @@ -109,8 +112,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..f2209d4527 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,10 @@ const FormWrapper = styled.div` ${({ hasErrors, isOpen }) => { if (hasErrors) { return '#ffa784'; - } else if (isOpen) { + } if (isOpen) { return '#AED4FB'; - } else { - return 'rgba(227, 233, 243, 0.75)'; } + 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/SelectWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SelectWrapper/index.js index bb23afb7a5..b09792a490 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, }); @@ -220,7 +220,6 @@ SelectWrapper.defaultProps = { editable: true, description: '', label: '', - plugin: '', placeholder: '', }; @@ -231,7 +230,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 cbe708a49f..e1ecfabb3c 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/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..08f80eefb8 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 @@ -47,6 +47,8 @@ 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..01ce483900 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': 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 381df5bbc2..d2e16d2b67 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..7bf5aafbec 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,10 @@ 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)) { + } if (isObject(value)) { return value[key]; - } else { - return value; } + return value; }; export const mapDataKeysToFilesToUpload = (filesMap, data) => { 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..7895d4ab07 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,10 @@ 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)) { + } if (isObject(value)) { return value[key]; - } else { - return value; } + 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..51d939d45c 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 @@ -119,23 +119,22 @@ const createYupSchema = (model, { components }) => { acc[current] = componentSchema; return acc; - } else { - const componentSchema = yup.lazy(obj => { - if (obj !== undefined) { - return attribute.required === true + } + const componentSchema = yup.lazy(obj => { + if (obj !== undefined) { + return attribute.required === true ? componentFieldSchema.defined() : componentFieldSchema.nullable(); - } + } - return attribute.required === true + return attribute.required === true ? yup.object().defined() : yup.object().nullable(); - }); + }); - acc[current] = componentSchema; + acc[current] = componentSchema; - return acc; - } + return acc; } if (attribute.type === 'dynamiczone') { @@ -156,6 +155,7 @@ const createYupSchema = (model, { components }) => { .required(errorsTrads.required); } } else { + // eslint-disable-next-line no-lonely-if if (min) { dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min); } 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..06f30d1568 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 @@ -73,7 +73,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 e773b3529e..93b04594e3 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/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/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-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 = ({ ) : ( - +