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 ( - + {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-admin/admin/src/containers/Onboarding/reducer.js b/packages/strapi-admin/admin/src/containers/Onboarding/reducer.js index 06e15ff8ec..4257d7456a 100644 --- a/packages/strapi-admin/admin/src/containers/Onboarding/reducer.js +++ b/packages/strapi-admin/admin/src/containers/Onboarding/reducer.js @@ -5,7 +5,15 @@ */ import { fromJS } from 'immutable'; -import { GET_VIDEOS_SUCCEEDED, SHOULD_OPEN_MODAL, ON_CLICK, SET_VIDEOS_DURATION, UPDATE_VIDEO_START_TIME, SET_VIDEO_END, REMOVE_VIDEOS } from './constants'; +import { + GET_VIDEOS_SUCCEEDED, + SHOULD_OPEN_MODAL, + ON_CLICK, + SET_VIDEOS_DURATION, + UPDATE_VIDEO_START_TIME, + SET_VIDEO_END, + REMOVE_VIDEOS, +} from './constants'; const initialState = fromJS({ videos: fromJS([]), @@ -20,7 +28,6 @@ function onboardingReducer(state = initialState, action) { case ON_CLICK: return state.updateIn(['videos'], list => { return list.reduce((acc, current, index) => { - if (index === action.index) { return acc.updateIn([index, 'isOpen'], v => !v); } @@ -29,13 +36,14 @@ function onboardingReducer(state = initialState, action) { }, list); }); case SET_VIDEOS_DURATION: - return state.updateIn(['videos', action.index, 'duration'], () => action.duration); + return state.updateIn( + ['videos', action.index, 'duration'], + () => action.duration + ); case UPDATE_VIDEO_START_TIME: { - const storedVideos = JSON.parse(localStorage.getItem('videos')); const videos = state.updateIn(['videos'], list => { return list.reduce((acc, current, index) => { - if (index === action.index) { storedVideos[index].startTime = action.startTime; return acc.updateIn([index, 'startTime'], () => action.startTime); @@ -52,8 +60,8 @@ function onboardingReducer(state = initialState, action) { return videos; } case SET_VIDEO_END: { - const storedVideos = JSON.parse(localStorage.getItem('videos')); + storedVideos[action.index].end = action.end; localStorage.setItem('videos', JSON.stringify(storedVideos)); diff --git a/packages/strapi-admin/admin/src/containers/PrivateRoute/index.js b/packages/strapi-admin/admin/src/containers/PrivateRoute/index.js index 3d8786d06c..43718d0d85 100644 --- a/packages/strapi-admin/admin/src/containers/PrivateRoute/index.js +++ b/packages/strapi-admin/admin/src/containers/PrivateRoute/index.js @@ -10,9 +10,10 @@ import React, { memo } from 'react'; import { Redirect, Route } from 'react-router-dom'; import PropTypes from 'prop-types'; - import { auth } from 'strapi-helper-plugin'; +/* eslint-disable react/jsx-curly-newline */ + const PrivateRoute = ({ component: Component, path, ...rest }) => ( invariant( - isString(key) && !isEmpty(key), - '(app/utils...) injectSaga: Expected `key` to be a non empty string' -); +const checkKey = key => + invariant( + isString(key) && !isEmpty(key), + '(app/utils...) injectSaga: Expected `key` to be a non empty string' + ); -const checkDescriptor = (descriptor) => { +const checkDescriptor = descriptor => { const shape = { saga: isFunction, - mode: (mode) => isString(mode) && allowedModes.includes(mode), + mode: mode => isString(mode) && allowedModes.includes(mode), }; invariant( conformsTo(descriptor, shape), @@ -33,7 +32,10 @@ export function injectSagaFactory(store, isValid) { return function injectSaga(key, descriptor = {}, args) { if (!isValid) checkStore(store); - const newDescriptor = { ...descriptor, mode: descriptor.mode || RESTART_ON_REMOUNT }; + const newDescriptor = { + ...descriptor, + mode: descriptor.mode || RESTART_ON_REMOUNT, + }; const { saga, mode } = newDescriptor; checkKey(key); @@ -50,8 +52,14 @@ export function injectSagaFactory(store, isValid) { } } - if (!hasSaga || (hasSaga && mode !== DAEMON && mode !== ONCE_TILL_UNMOUNT)) { - store.injectedSagas[key] = { ...newDescriptor, task: store.runSaga(saga, args) }; // eslint-disable-line no-param-reassign + if ( + !hasSaga || + (hasSaga && mode !== DAEMON && mode !== ONCE_TILL_UNMOUNT) + ) { + store.injectedSagas[key] = { + ...newDescriptor, + task: store.runSaga(saga, args), + }; // eslint-disable-line no-param-reassign } }; } diff --git a/packages/strapi-plugin-content-manager/admin/src/components/AddDropdown/components.js b/packages/strapi-plugin-content-manager/admin/src/components/AddDropdown/components.js index 860637aa24..97c7234f7e 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/AddDropdown/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/AddDropdown/components.js @@ -1,4 +1,5 @@ import styled, { css } from 'styled-components'; +/* eslint-disable */ const Wrapper = styled.div` margin-left: 29px; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomInputCheckbox/components.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomInputCheckbox/components.js index 85a6e31876..2edd9cfbca 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/CustomInputCheckbox/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomInputCheckbox/components.js @@ -1,4 +1,5 @@ import styled, { css } from 'styled-components'; +/* eslint-disable */ const Label = styled.label` cursor: pointer; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js index 3249be5dc4..c597d3b81a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js @@ -10,6 +10,8 @@ import MediaPreviewList from '../MediaPreviewList'; import { ActionContainer, Truncate, Truncated } from './styledComponents'; import DATE_FORMATS from './DATE_FORMATS'; +/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ + const dateToUtcTime = date => moment.parseZone(date).utc(); const getDisplayedValue = (type, value, name) => { @@ -104,9 +106,7 @@ function Row({ goTo, isBulkable, row, headers }) { {memoizedDisplayedValue(header.name)} ) : ( - + )} ); 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/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/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 = ({ ) : ( - + { @@ -137,6 +139,10 @@ const ComponentIconPicker = ({ ); }; +ComponentIconPicker.defaultProps = { + error: null, +}; + ComponentIconPicker.propTypes = { error: PropTypes.string, isCreating: PropTypes.bool.isRequired, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentList/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentList/index.js index 9ffdedae3c..e17adeec3f 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentList/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentList/index.js @@ -3,7 +3,7 @@ * ComponentList * */ - +/* eslint-disable import/no-cycle */ import React from 'react'; import { get } from 'lodash'; import PropTypes from 'prop-types'; @@ -58,6 +58,8 @@ ComponentList.defaultProps = { component: null, customRowComponent: null, dzName: null, + firstLoopComponentName: null, + firstLoopComponentUid: null, isFromDynamicZone: false, isNestedInDZComponent: false, }; @@ -71,7 +73,6 @@ ComponentList.propTypes = { isFromDynamicZone: PropTypes.bool, isNestedInDZComponent: PropTypes.bool, mainTypeName: PropTypes.string.isRequired, - targetUid: PropTypes.string.isRequired, }; export default ComponentList; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MenuList.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MenuList.js index 3115ba72a3..e0594a0d63 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MenuList.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MenuList.js @@ -7,6 +7,9 @@ import useQuery from '../../hooks/useQuery'; import Category from './Category'; import Ul from './Ul'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ +/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ + const MenuList = ({ selectProps: { isAddingAComponentToAnotherComponent, @@ -110,7 +113,7 @@ MenuList.propTypes = { onClickOption: PropTypes.func.isRequired, refState: PropTypes.object, value: PropTypes.object, - }).isRequired, + }), }; export default MenuList; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MultipleMenuList.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MultipleMenuList.js index 08852222fb..c1cfcd6c10 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MultipleMenuList.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentSelect/MultipleMenuList.js @@ -14,6 +14,8 @@ import Ul from './Ul'; import hasSubArray from './utils/hasSubArray'; import hasSomeSubArray from './utils/HasSomeSubArray'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ + const MultipleMenuList = ({ selectProps: { name, addComponentsToDynamicZone, inputValue, value }, ...rest @@ -271,7 +273,7 @@ MultipleMenuList.propTypes = { name: PropTypes.string.isRequired, refState: PropTypes.object, value: PropTypes.object, - }).isRequired, + }), }; export default MultipleMenuList; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/CustomLink/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/CustomLink/index.js index 85b61ec140..b41ad59798 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/CustomLink/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/CustomLink/index.js @@ -7,7 +7,7 @@ import StyledCustomLink from './StyledCustomLink'; const CustomLink = ({ disabled, id, onClick }) => ( - + {id && } diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js index 6a98fae993..33600536fb 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js @@ -4,6 +4,7 @@ * */ +/* eslint-disable import/no-cycle */ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; @@ -28,7 +29,9 @@ function DynamicZoneList({ const [activeTab, setActiveTab] = useState('0'); const toggle = tab => { - if (activeTab !== tab) setActiveTab(tab); + if (activeTab !== tab) { + setActiveTab(tab); + } }; const handleClickAdd = () => { @@ -74,8 +77,8 @@ function DynamicZoneList({ {components.map((component, index) => { const props = { - customRowComponent: customRowComponent, - component: component, + customRowComponent, + component, }; return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js index f2081c976e..0d41e46f32 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js @@ -11,6 +11,8 @@ const Wrapper = styled.div` z-index: 99; `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js index 2f69aaf644..652519a9ed 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js @@ -4,6 +4,7 @@ * */ +/* eslint-disable import/no-cycle */ import React from 'react'; import PropTypes from 'prop-types'; import { get } from 'lodash'; @@ -18,6 +19,8 @@ import ComponentList from '../ComponentList'; import { ListButton } from '../ListButton'; import Wrapper from './List'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ + function List({ className, customRowComponent, @@ -149,6 +152,7 @@ function List({ ); }; + /* eslint-disable indent */ const addButtonProps = { icon: !isSub ? : false, color: 'primary', @@ -161,6 +165,7 @@ function List({ : null, onClick: onClickAddField, }; + /* eslint-enable indent */ if (!targetUid) { return null; @@ -219,10 +224,8 @@ function List({ })} - {isMain && isInDevelopmentMode && ( - - )} - {!isMain && } + {isMain && isInDevelopmentMode && } + {!isMain && } {isSub && ( @@ -236,7 +239,6 @@ function List({ } List.defaultProps = { - addField: () => {}, addComponentToDZ: () => {}, className: null, customRowComponent: null, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js index a872be065e..2e0ad30cbb 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js @@ -4,6 +4,7 @@ import { ListHeaderButton } from '../ListButton'; import Title from './Title'; import Wrapper from './Wrapper'; +/* eslint-disable react/jsx-one-expression-per-line */ function ListHeader({ actions, title }) { return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js index 9cbc6f2687..5ca247418e 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js @@ -5,9 +5,10 @@ */ import styled from 'styled-components'; - import { colors } from 'strapi-helper-plugin'; +/* eslint-disable indent */ + const Wrapper = styled.tr` background-color: transparent; p { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js index c0057d0fb3..c9ab80cf2a 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js @@ -289,7 +289,6 @@ ListRow.defaultProps = { isNestedInDZComponent: false, nature: null, onClick: () => {}, - onClickDelete: () => {}, plugin: null, repeatable: false, secondLoopComponentName: null, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js index 6f6cf23877..dce8577417 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import UpperFirst from '../UpperFirst'; import ComponentInfosWrapper from './ComponentInfosWrapper'; +/* eslint-disable react/jsx-one-expression-per-line */ + const ComponentInfos = ({ category, name }) => { return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js index e6af105937..6fefef4676 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js @@ -7,6 +7,8 @@ import Menu from './Menu'; import Toggle from './Toggle'; import Wrapper from './Wrapper'; +/* eslint-disable react/no-array-index-key */ + const DropdownInfos = ({ headers, shouldDisplaySecondHeader }) => { const [dropdownOpen, setDropdownOpen] = useState(false); diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js index 9c7ebd08b5..d34ff04624 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js @@ -11,6 +11,8 @@ import Icon from './Icon'; import IconWrapper from './IconWrapper'; import DropdownInfos from './DropdownInfos'; +/* eslint-disable react/no-array-index-key */ + const ModalHeader = ({ headerId, headers }) => { const shouldDisplayDropDown = headers.length > 3; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js index 5c8cfe0185..f2e74babfc 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js @@ -30,17 +30,17 @@ const RelationFormNaturePicker = ({ target, }) => { const { contentTypes } = useDataManager(); + const ctRelations = [ + 'oneWay', + 'oneToOne', + 'oneToMany', + 'manyToOne', + 'manyToMany', + 'manyWay', + ]; + const componentRelations = ['oneWay', 'manyWay']; const relationsType = - naturePickerType === 'contentType' - ? [ - 'oneWay', - 'oneToOne', - 'oneToMany', - 'manyToOne', - 'manyToMany', - 'manyWay', - ] - : ['oneWay', 'manyWay']; + naturePickerType === 'contentType' ? ctRelations : componentRelations; const areDisplayedNamesInverted = nature === 'manyToOne'; const targetLabel = get(contentTypes, [target, 'schema', 'name'], 'unknown'); @@ -88,7 +88,8 @@ const RelationFormNaturePicker = ({ {truncate(leftDisplayedValue, { length: 24 })} - + + {truncate(rightDisplayedValue, { length: 24 })} diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js deleted file mode 100644 index b0d431854e..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js +++ /dev/null @@ -1,53 +0,0 @@ -import styled from 'styled-components'; - -import { colors } from 'strapi-helper-plugin'; - -const StyledRelationNaturePicker = styled.div` - position: relative; - width: 100%; - .nature-container { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: fit-content; - &::before { - content: ''; - position: absolute; - top: 2.2rem; - height: 1px; - width: 100%; - background-color: ${colors.relations.border}; - z-index: 0; - } - .nature-buttons { - position: relative; - width: fit-content; - display: block; - margin: 0 auto; - z-index: 1; - } - .nature-txt { - padding: 0 1rem; - font-size: 1.3rem; - text-align: center; - margin-top: 6px; - margin-bottom: 2px; - span { - &:first-of-type, - &:nth-of-type(3) { - text-transform: capitalize; - } - &:nth-of-type(2) { - color: ${colors.relations.border}; - } - } - } - img { - margin: 0 1.5rem; - cursor: pointer; - } - } -`; - -export default StyledRelationNaturePicker; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js deleted file mode 100644 index 1507e363f3..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js +++ /dev/null @@ -1,78 +0,0 @@ -import React, { memo } from 'react'; -import PropTypes from 'prop-types'; -import { truncate } from 'lodash'; -import { FormattedMessage } from 'react-intl'; -import pluralize from 'pluralize'; - -import pluginId from '../../pluginId'; - -import oneWay from '../../assets/images/one_way.svg'; -import oneWaySelected from '../../assets/images/one_way_selected.svg'; -import manyWay from '../../assets/images/many_way.svg'; -import manyWaySelected from '../../assets/images/many_way_selected.svg'; - -import StyledRelationNaturePicker from './StyledRelationNaturePicker'; - -const assets = { - oneWay: { - icon: oneWay, - iconSelected: oneWaySelected, - }, - manyWay: { - icon: manyWay, - iconSelected: manyWaySelected, - }, -}; - -const RelationNaturePicker = ({ featureName, onClick, nature, target }) => { - const { leftName, rightName } = { - leftName: featureName, - rightName: pluralize(target, ['manyWay'].includes(nature) ? 2 : 1), - }; - - return ( - - - - {Object.keys(assets).map(iconName => { - const src = - iconName === nature - ? assets[iconName].iconSelected - : assets[iconName].icon; - return ( - onClick(iconName, featureName)} - src={src} - alt={iconName} - /> - ); - })} - - - {truncate(leftName, { length: 24 })} - - - {truncate(rightName, { length: 24 })} - - - - ); -}; - -RelationNaturePicker.defaultProps = { - featureName: '', - nature: 'oneWay', - onClick: () => {}, - target: '', -}; - -RelationNaturePicker.propTypes = { - featureName: PropTypes.string, - nature: PropTypes.string, - onClick: PropTypes.func, - target: PropTypes.string, -}; - -export default memo(RelationNaturePicker); -export { RelationNaturePicker }; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js deleted file mode 100644 index 1d2ecb039a..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; - -import { shallow } from 'enzyme'; - -import { RelationNaturePicker } from '../index'; - -describe('', () => { - it('should not crash', () => { - shallow(); - }); - - it('should use the defaultProps', () => { - const { - defaultProps: { onClick }, - } = RelationNaturePicker; - - expect(onClick).toBeDefined(); - expect(onClick()).toBe(undefined); - }); - - it('should pass the correct data', () => { - const props = { - featureName: 'test', - onClick: jest.fn(), - }; - - const wrapper = shallow(); - const img = wrapper.find('img').at(0); - - img.simulate('click'); - - expect(props.onClick).toHaveBeenCalledWith('oneWay', 'test'); - }); - - it('should handle the hint correctly for the oneWay', () => { - const props = { - featureName: 'test', - nature: 'oneWay', - target: 'othertest', - }; - - const wrapper = shallow(); - - const span = wrapper.find('span').at(0); - const span1 = wrapper.find('span').at(1); - - expect(span.text()).toBe('test'); - expect(span1.text()).toBe('othertest'); - }); - - it('should handle the hint correctly for the ', () => { - const props = { - featureName: 'test', - nature: 'manyWay', - target: 'othertest', - }; - - const wrapper = shallow(); - - const span = wrapper.find('span').at(0); - const span1 = wrapper.find('span').at(1); - - expect(span.text()).toBe('test'); - expect(span1.text()).toBe('othertests'); - }); -}); diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js index 6f95335811..3e8d179cfd 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js @@ -1,4 +1,5 @@ import styled from 'styled-components'; +/* eslint-disable indent */ const Td = styled.td` &::before { @@ -9,6 +10,7 @@ const Td = styled.td` top: -7px; left: 45px; color: transparent; + ${({ isFromDynamicZone, isChildOfDynamicZone }) => { if (isChildOfDynamicZone) { return ` @@ -19,12 +21,12 @@ const Td = styled.td` if (isFromDynamicZone) { return ` - background-color: #AED4FB !important; + background-color: #AED4FB !important; `; } return ` - background-color: #f3f4f4 !important; + background-color: #f3f4f4 !important; `; }} diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js index 1e245126a4..87f63e2da7 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js @@ -112,7 +112,7 @@ const DataManagerProvider = ({ allIcons, children }) => { useEffect(() => { // We need to set the modifiedData after the data has been retrieved - //and also on pathname change + // and also on pathname change if (!isLoading) { setModifiedData(); } @@ -216,7 +216,7 @@ const DataManagerProvider = ({ allIcons, children }) => { const requestURL = `/${pluginId}/component-categories/${categoryUid}`; const userConfirm = window.confirm( formatMessage({ - id: getTrad(`popUpWarning.bodyMessage.category.delete`), + id: getTrad('popUpWarning.bodyMessage.category.delete'), }) ); // Close the modal diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js index 3daf815e4d..a32a2fdeaa 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js @@ -41,6 +41,9 @@ import init from './init'; import reducer, { initialState } from './reducer'; import CustomButton from './CustomButton'; +/* eslint-disable indent */ +/* eslint-disable react/no-array-index-key */ + const FormModal = () => { const [state, setState] = useState(INITIAL_STATE_DATA); const [reducerState, dispatch] = useReducer(reducer, initialState, init); @@ -403,6 +406,8 @@ const FormModal = () => { } else { // The user is either in the addComponentToDynamicZone modal or // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component + + // eslint-disable-next-line no-lonely-if if (isInFirstComponentStep && isCreatingComponentFromAView) { schema = forms.component.schema( Object.keys(components), @@ -511,6 +516,7 @@ const FormModal = () => { name === 'createComponent' || name === 'repeatable') ) { + // eslint-disable-next-line no-unneeded-ternary val = value === 'false' ? false : true; // The boolean default accepts 3 different values @@ -713,7 +719,8 @@ const FormModal = () => { return; // Adding an existing component - } else { + } + // eslint-disable-next-line no-lonely-if if (isInFirstComponentStep) { // Navigate the user to step 2 const nextSearchObj = { @@ -748,7 +755,7 @@ const FormModal = () => { // Here we are in step 2 // The step 2 is also use to edit an attribute that is a component - } else { + } addAttribute( modifiedData, state.forTarget, @@ -776,8 +783,8 @@ const FormModal = () => { push({ search: makeSearch(nextSearch, shouldContinue) }); // We don't need to end the loop here we want the reducer to be reinitialised - } - } + + // Logic for creating a component without clicking on the link in // the left menu // We need to separate the logic otherwise the component would be created @@ -818,7 +825,7 @@ const FormModal = () => { return; // Step 2 of creating a component (which is setting the attribute name in the parent's schema) - } else { + } // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field const { category, type, ...rest } = componentToCreate; // Create a the component temp UID @@ -870,7 +877,7 @@ const FormModal = () => { ), }); return; - } + // The modal is addComponentToDynamicZone } else { // The modal is addComponentToDynamicZone @@ -980,8 +987,6 @@ const FormModal = () => { if (state.forTarget === 'contentType') { emitEvent('didSelectContentTypeFieldSettings'); - - return; } }; @@ -1001,7 +1006,7 @@ const FormModal = () => { ((state.attributeType === 'component' || state.modalType === 'addComponentToDynamicZone') && get(modifiedData, ['createComponent'], null) === false) || - state.modalType == 'editCategory' + state.modalType === 'editCategory' ); }; @@ -1159,22 +1164,16 @@ const FormModal = () => { // The spacer type is used mainly to align the icon picker... if (input.type === 'spacer') { - return ( - - ); + return ; } // The spacer type is used mainly to align the icon picker... if (input.type === 'spacer-small') { - return ( - - ); + return ; } if (input.type === 'spacer-medium') { - return ( - - ); + return ; } // This type is used in the addComponentToDynamicZone modal when selecting the option add an existing component diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js index 95bd0cb814..cfcf3a2bf9 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js @@ -15,6 +15,9 @@ import { } from './attributesRegexes'; import RESERVED_NAMES from './reservedNames'; +/* eslint-disable indent */ +/* eslint-disable prefer-arrow-callback */ + yup.addMethod(yup.mixed, 'defined', function() { return this.test( 'defined', @@ -173,9 +176,8 @@ const forms = { .when('max', (max, schema) => { if (max) { return schema.max(max, getTrad('error.validation.minSupMax')); - } else { - return schema; } + return schema; }) .nullable(); }), @@ -194,9 +196,8 @@ const forms = { maxLength, getTrad('error.validation.minSupMax') ); - } else { - return schema; } + return schema; }) .nullable(), }; @@ -257,9 +258,8 @@ const forms = { getTrad('error.validation.minSupMax'), max ); - } else { - return schema; } + return schema; }), max: yup @@ -370,13 +370,12 @@ const forms = { return { items: componentForm.advanced('componentToCreate.'), }; - } else { + } const requiredItem = [[fields.required]]; return { items: data.repeatable ? [...dynamiczoneItems] : requiredItem, }; - } } const items = defaultItems.slice(); @@ -427,7 +426,7 @@ const forms = { options: [ {msg => {msg}} , @@ -575,17 +574,17 @@ const forms = { options: [ { headerId: getTrad( - `form.attribute.component.option.repeatable` + 'form.attribute.component.option.repeatable' ), descriptionId: getTrad( - `form.attribute.component.option.repeatable.description` + 'form.attribute.component.option.repeatable.description' ), value: true, }, { - headerId: getTrad(`form.attribute.component.option.single`), + headerId: getTrad('form.attribute.component.option.single'), descriptionId: getTrad( - `form.attribute.component.option.single.description` + 'form.attribute.component.option.single.description' ), value: false, }, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js index dd249ac176..a31dc74ffd 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js @@ -1,3 +1,5 @@ +/* eslint-disable no-confusing-arrow */ + const shouldPluralizeName = nature => ['manyToMany', 'oneToMany', 'manyWay'].includes(nature) ? 2 : 1; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js index d9cf928c2a..e6a9f18dad 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js @@ -10,16 +10,16 @@ const fields = { size: 12, options: [ { - headerId: getTrad(`form.attribute.component.option.create`), + headerId: getTrad('form.attribute.component.option.create'), descriptionId: getTrad( - `form.attribute.component.option.create.description` + 'form.attribute.component.option.create.description' ), value: true, }, { - headerId: getTrad(`form.attribute.component.option.reuse-existing`), + headerId: getTrad('form.attribute.component.option.reuse-existing'), descriptionId: getTrad( - `form.attribute.component.option.reuse-existing.description` + 'form.attribute.component.option.reuse-existing.description' ), value: false, }, @@ -43,7 +43,7 @@ const fields = { name: 'max', type: 'customCheckboxWithChildren', label: { - id: getTrad(`form.attribute.item.maximum`), + id: getTrad('form.attribute.item.maximum'), }, validations: {}, }, @@ -52,7 +52,7 @@ const fields = { name: 'min', type: 'customCheckboxWithChildren', label: { - id: getTrad(`form.attribute.item.minimum`), + id: getTrad('form.attribute.item.minimum'), }, validations: {}, }, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js index 9a8bcc4016..3d236db5a4 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js @@ -16,6 +16,8 @@ import useDataManager from '../../hooks/useDataManager'; import makeSearch from '../../utils/makeSearch'; import Wrapper from './Wrapper'; +/* eslint-disable indent */ + const displayNotificationCTNotSaved = () => { strapi.notification.info(`${pluginId}.notification.info.creating.notSaved`); }; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js index 1c6072d54d..fff8bc7ece 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js @@ -24,6 +24,8 @@ import ListHeader from '../../components/ListHeader'; import LeftMenu from '../LeftMenu'; import Wrapper from './Wrapper'; +/* eslint-disable indent */ + const ListView = () => { const { initialData, @@ -165,11 +167,12 @@ const ListView = () => { null ); - return description - ? description - : formatMessage({ - id: `${pluginId}.modelPage.contentHeader.emptyDescription.description`, - }); + return ( + description || + formatMessage({ + id: `${pluginId}.modelPage.contentHeader.emptyDescription.description`, + }) + ); }; const wait = async () => { @@ -191,7 +194,7 @@ const ListView = () => { id: `${pluginId}.form.button.cancel`, }), type: 'button', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), }, { className: 'button-submit', @@ -201,7 +204,7 @@ const ListView = () => { id: `${pluginId}.form.button.save`, }), type: 'submit', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), }, ] : [], @@ -335,7 +338,7 @@ const ListView = () => { mainTypeName={currentDataName} editTarget={forTarget} isMain - > + /> diff --git a/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js b/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js index aaa8c16326..054bca697e 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js @@ -3,14 +3,16 @@ import PropTypes from 'prop-types'; const ManyToMany = ({ isSelected, ...rest }) => { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#1C5DE7', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#1C5DE7', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } + return ( diff --git a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js index 531454f1dc..3a7b389261 100755 --- a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js +++ b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js @@ -43,8 +43,6 @@ import reducer from './reducer'; import saga from './saga'; export class HomePage extends React.Component { - static contextType = GlobalContext; - componentDidMount() { this.props.getDocInfos(); } @@ -134,6 +132,8 @@ export class HomePage extends React.Component { ); }; + static contextType = GlobalContext; + render() { const { docVersions, diff --git a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js index 4181cfd078..9d199802d4 100755 --- a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js +++ b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js @@ -14,6 +14,8 @@ import { makeSelectForm, } from './selectors'; +/* eslint-disable consistent-return */ + function* getData() { try { const response = yield call(request, '/documentation/getInfos', { diff --git a/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js b/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js index 7f49b6b102..dfc8433225 100755 --- a/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js +++ b/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js @@ -1,14 +1,13 @@ import { startsWith } from 'lodash'; -const openWithNewTab = (path) => { +const openWithNewTab = path => { const url = (() => { if (startsWith(path, '/')) { return `${strapi.backendURL}${path}`; - } else if (startsWith(path, 'https') || startsWith(path, 'http')) { + } if (startsWith(path, 'https') || startsWith(path, 'http')) { return path; - } else { - return `${strapi.backendURL}/${path}`; } + return `${strapi.backendURL}/${path}`; })(); window.open(url, '_blank'); @@ -16,4 +15,4 @@ const openWithNewTab = (path) => { return window.focus(); }; -export default openWithNewTab; \ No newline at end of file +export default openWithNewTab; diff --git a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js index b060abc74c..0ce4330bad 100644 --- a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js +++ b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js @@ -28,7 +28,22 @@ import saga from './saga'; import selectConfigPage from './selectors'; class ConfigPage extends React.Component { - static contextType = GlobalContext; + pluginHeaderActions = [ + { + color: 'cancel', + label: this.context.formatMessage({ id: 'app.components.Button.cancel' }), + onClick: this.props.onCancel, + type: 'button', + key: 'button-cancel', + }, + { + color: 'success', + label: this.context.formatMessage({ id: 'app.components.Button.save' }), + onClick: this.handleSubmit, + type: 'submit', + key: 'button-submit', + }, + ]; componentDidMount() { this.getSettings(this.props); @@ -107,22 +122,7 @@ class ConfigPage extends React.Component { return this.props.submit(); }; - pluginHeaderActions = [ - { - color: 'cancel', - label: this.context.formatMessage({ id: 'app.components.Button.cancel' }), - onClick: this.props.onCancel, - type: 'button', - key: 'button-cancel', - }, - { - color: 'success', - label: this.context.formatMessage({ id: 'app.components.Button.save' }), - onClick: this.handleSubmit, - type: 'submit', - key: 'button-submit', - }, - ]; + static contextType = GlobalContext; render() { const { formatMessage } = this.context;
{msg}
{id && } diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js index 6a98fae993..33600536fb 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/DynamicZoneList/index.js @@ -4,6 +4,7 @@ * */ +/* eslint-disable import/no-cycle */ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; @@ -28,7 +29,9 @@ function DynamicZoneList({ const [activeTab, setActiveTab] = useState('0'); const toggle = tab => { - if (activeTab !== tab) setActiveTab(tab); + if (activeTab !== tab) { + setActiveTab(tab); + } }; const handleClickAdd = () => { @@ -74,8 +77,8 @@ function DynamicZoneList({ {components.map((component, index) => { const props = { - customRowComponent: customRowComponent, - component: component, + customRowComponent, + component, }; return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js index f2081c976e..0d41e46f32 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/HeaderNavLink/Wrapper.js @@ -11,6 +11,8 @@ const Wrapper = styled.div` z-index: 99; `; } + + return ''; }} `; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js index 2f69aaf644..652519a9ed 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/List/index.js @@ -4,6 +4,7 @@ * */ +/* eslint-disable import/no-cycle */ import React from 'react'; import PropTypes from 'prop-types'; import { get } from 'lodash'; @@ -18,6 +19,8 @@ import ComponentList from '../ComponentList'; import { ListButton } from '../ListButton'; import Wrapper from './List'; +/* eslint-disable jsx-a11y/no-static-element-interactions */ + function List({ className, customRowComponent, @@ -149,6 +152,7 @@ function List({ ); }; + /* eslint-disable indent */ const addButtonProps = { icon: !isSub ? : false, color: 'primary', @@ -161,6 +165,7 @@ function List({ : null, onClick: onClickAddField, }; + /* eslint-enable indent */ if (!targetUid) { return null; @@ -219,10 +224,8 @@ function List({ })} - {isMain && isInDevelopmentMode && ( - - )} - {!isMain && } + {isMain && isInDevelopmentMode && } + {!isMain && } {isSub && ( @@ -236,7 +239,6 @@ function List({ } List.defaultProps = { - addField: () => {}, addComponentToDZ: () => {}, className: null, customRowComponent: null, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js index a872be065e..2e0ad30cbb 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListHeader/index.js @@ -4,6 +4,7 @@ import { ListHeaderButton } from '../ListButton'; import Title from './Title'; import Wrapper from './Wrapper'; +/* eslint-disable react/jsx-one-expression-per-line */ function ListHeader({ actions, title }) { return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js index 9cbc6f2687..5ca247418e 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/Wrapper.js @@ -5,9 +5,10 @@ */ import styled from 'styled-components'; - import { colors } from 'strapi-helper-plugin'; +/* eslint-disable indent */ + const Wrapper = styled.tr` background-color: transparent; p { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js index c0057d0fb3..c9ab80cf2a 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ListRow/index.js @@ -289,7 +289,6 @@ ListRow.defaultProps = { isNestedInDZComponent: false, nature: null, onClick: () => {}, - onClickDelete: () => {}, plugin: null, repeatable: false, secondLoopComponentName: null, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js index 6f6cf23877..dce8577417 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/ComponentInfos.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import UpperFirst from '../UpperFirst'; import ComponentInfosWrapper from './ComponentInfosWrapper'; +/* eslint-disable react/jsx-one-expression-per-line */ + const ComponentInfos = ({ category, name }) => { return ( diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js index e6af105937..6fefef4676 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/DropdownInfos.js @@ -7,6 +7,8 @@ import Menu from './Menu'; import Toggle from './Toggle'; import Wrapper from './Wrapper'; +/* eslint-disable react/no-array-index-key */ + const DropdownInfos = ({ headers, shouldDisplaySecondHeader }) => { const [dropdownOpen, setDropdownOpen] = useState(false); diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js index 9c7ebd08b5..d34ff04624 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ModalHeader/index.js @@ -11,6 +11,8 @@ import Icon from './Icon'; import IconWrapper from './IconWrapper'; import DropdownInfos from './DropdownInfos'; +/* eslint-disable react/no-array-index-key */ + const ModalHeader = ({ headerId, headers }) => { const shouldDisplayDropDown = headers.length > 3; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js index 5c8cfe0185..f2e74babfc 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationFormNaturePicker/index.js @@ -30,17 +30,17 @@ const RelationFormNaturePicker = ({ target, }) => { const { contentTypes } = useDataManager(); + const ctRelations = [ + 'oneWay', + 'oneToOne', + 'oneToMany', + 'manyToOne', + 'manyToMany', + 'manyWay', + ]; + const componentRelations = ['oneWay', 'manyWay']; const relationsType = - naturePickerType === 'contentType' - ? [ - 'oneWay', - 'oneToOne', - 'oneToMany', - 'manyToOne', - 'manyToMany', - 'manyWay', - ] - : ['oneWay', 'manyWay']; + naturePickerType === 'contentType' ? ctRelations : componentRelations; const areDisplayedNamesInverted = nature === 'manyToOne'; const targetLabel = get(contentTypes, [target, 'schema', 'name'], 'unknown'); @@ -88,7 +88,8 @@ const RelationFormNaturePicker = ({ {truncate(leftDisplayedValue, { length: 24 })} - + + {truncate(rightDisplayedValue, { length: 24 })} diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js deleted file mode 100644 index b0d431854e..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/StyledRelationNaturePicker.js +++ /dev/null @@ -1,53 +0,0 @@ -import styled from 'styled-components'; - -import { colors } from 'strapi-helper-plugin'; - -const StyledRelationNaturePicker = styled.div` - position: relative; - width: 100%; - .nature-container { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: fit-content; - &::before { - content: ''; - position: absolute; - top: 2.2rem; - height: 1px; - width: 100%; - background-color: ${colors.relations.border}; - z-index: 0; - } - .nature-buttons { - position: relative; - width: fit-content; - display: block; - margin: 0 auto; - z-index: 1; - } - .nature-txt { - padding: 0 1rem; - font-size: 1.3rem; - text-align: center; - margin-top: 6px; - margin-bottom: 2px; - span { - &:first-of-type, - &:nth-of-type(3) { - text-transform: capitalize; - } - &:nth-of-type(2) { - color: ${colors.relations.border}; - } - } - } - img { - margin: 0 1.5rem; - cursor: pointer; - } - } -`; - -export default StyledRelationNaturePicker; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js deleted file mode 100644 index 1507e363f3..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/index.js +++ /dev/null @@ -1,78 +0,0 @@ -import React, { memo } from 'react'; -import PropTypes from 'prop-types'; -import { truncate } from 'lodash'; -import { FormattedMessage } from 'react-intl'; -import pluralize from 'pluralize'; - -import pluginId from '../../pluginId'; - -import oneWay from '../../assets/images/one_way.svg'; -import oneWaySelected from '../../assets/images/one_way_selected.svg'; -import manyWay from '../../assets/images/many_way.svg'; -import manyWaySelected from '../../assets/images/many_way_selected.svg'; - -import StyledRelationNaturePicker from './StyledRelationNaturePicker'; - -const assets = { - oneWay: { - icon: oneWay, - iconSelected: oneWaySelected, - }, - manyWay: { - icon: manyWay, - iconSelected: manyWaySelected, - }, -}; - -const RelationNaturePicker = ({ featureName, onClick, nature, target }) => { - const { leftName, rightName } = { - leftName: featureName, - rightName: pluralize(target, ['manyWay'].includes(nature) ? 2 : 1), - }; - - return ( - - - - {Object.keys(assets).map(iconName => { - const src = - iconName === nature - ? assets[iconName].iconSelected - : assets[iconName].icon; - return ( - onClick(iconName, featureName)} - src={src} - alt={iconName} - /> - ); - })} - - - {truncate(leftName, { length: 24 })} - - - {truncate(rightName, { length: 24 })} - - - - ); -}; - -RelationNaturePicker.defaultProps = { - featureName: '', - nature: 'oneWay', - onClick: () => {}, - target: '', -}; - -RelationNaturePicker.propTypes = { - featureName: PropTypes.string, - nature: PropTypes.string, - onClick: PropTypes.func, - target: PropTypes.string, -}; - -export default memo(RelationNaturePicker); -export { RelationNaturePicker }; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js b/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js deleted file mode 100644 index 1d2ecb039a..0000000000 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/RelationNaturePicker/tests/index.test.js +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; - -import { shallow } from 'enzyme'; - -import { RelationNaturePicker } from '../index'; - -describe('', () => { - it('should not crash', () => { - shallow(); - }); - - it('should use the defaultProps', () => { - const { - defaultProps: { onClick }, - } = RelationNaturePicker; - - expect(onClick).toBeDefined(); - expect(onClick()).toBe(undefined); - }); - - it('should pass the correct data', () => { - const props = { - featureName: 'test', - onClick: jest.fn(), - }; - - const wrapper = shallow(); - const img = wrapper.find('img').at(0); - - img.simulate('click'); - - expect(props.onClick).toHaveBeenCalledWith('oneWay', 'test'); - }); - - it('should handle the hint correctly for the oneWay', () => { - const props = { - featureName: 'test', - nature: 'oneWay', - target: 'othertest', - }; - - const wrapper = shallow(); - - const span = wrapper.find('span').at(0); - const span1 = wrapper.find('span').at(1); - - expect(span.text()).toBe('test'); - expect(span1.text()).toBe('othertest'); - }); - - it('should handle the hint correctly for the ', () => { - const props = { - featureName: 'test', - nature: 'manyWay', - target: 'othertest', - }; - - const wrapper = shallow(); - - const span = wrapper.find('span').at(0); - const span1 = wrapper.find('span').at(1); - - expect(span.text()).toBe('test'); - expect(span1.text()).toBe('othertests'); - }); -}); diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js index 6f95335811..3e8d179cfd 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/Td/index.js @@ -1,4 +1,5 @@ import styled from 'styled-components'; +/* eslint-disable indent */ const Td = styled.td` &::before { @@ -9,6 +10,7 @@ const Td = styled.td` top: -7px; left: 45px; color: transparent; + ${({ isFromDynamicZone, isChildOfDynamicZone }) => { if (isChildOfDynamicZone) { return ` @@ -19,12 +21,12 @@ const Td = styled.td` if (isFromDynamicZone) { return ` - background-color: #AED4FB !important; + background-color: #AED4FB !important; `; } return ` - background-color: #f3f4f4 !important; + background-color: #f3f4f4 !important; `; }} diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js index 1e245126a4..87f63e2da7 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js @@ -112,7 +112,7 @@ const DataManagerProvider = ({ allIcons, children }) => { useEffect(() => { // We need to set the modifiedData after the data has been retrieved - //and also on pathname change + // and also on pathname change if (!isLoading) { setModifiedData(); } @@ -216,7 +216,7 @@ const DataManagerProvider = ({ allIcons, children }) => { const requestURL = `/${pluginId}/component-categories/${categoryUid}`; const userConfirm = window.confirm( formatMessage({ - id: getTrad(`popUpWarning.bodyMessage.category.delete`), + id: getTrad('popUpWarning.bodyMessage.category.delete'), }) ); // Close the modal diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js index 3daf815e4d..a32a2fdeaa 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/index.js @@ -41,6 +41,9 @@ import init from './init'; import reducer, { initialState } from './reducer'; import CustomButton from './CustomButton'; +/* eslint-disable indent */ +/* eslint-disable react/no-array-index-key */ + const FormModal = () => { const [state, setState] = useState(INITIAL_STATE_DATA); const [reducerState, dispatch] = useReducer(reducer, initialState, init); @@ -403,6 +406,8 @@ const FormModal = () => { } else { // The user is either in the addComponentToDynamicZone modal or // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component + + // eslint-disable-next-line no-lonely-if if (isInFirstComponentStep && isCreatingComponentFromAView) { schema = forms.component.schema( Object.keys(components), @@ -511,6 +516,7 @@ const FormModal = () => { name === 'createComponent' || name === 'repeatable') ) { + // eslint-disable-next-line no-unneeded-ternary val = value === 'false' ? false : true; // The boolean default accepts 3 different values @@ -713,7 +719,8 @@ const FormModal = () => { return; // Adding an existing component - } else { + } + // eslint-disable-next-line no-lonely-if if (isInFirstComponentStep) { // Navigate the user to step 2 const nextSearchObj = { @@ -748,7 +755,7 @@ const FormModal = () => { // Here we are in step 2 // The step 2 is also use to edit an attribute that is a component - } else { + } addAttribute( modifiedData, state.forTarget, @@ -776,8 +783,8 @@ const FormModal = () => { push({ search: makeSearch(nextSearch, shouldContinue) }); // We don't need to end the loop here we want the reducer to be reinitialised - } - } + + // Logic for creating a component without clicking on the link in // the left menu // We need to separate the logic otherwise the component would be created @@ -818,7 +825,7 @@ const FormModal = () => { return; // Step 2 of creating a component (which is setting the attribute name in the parent's schema) - } else { + } // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field const { category, type, ...rest } = componentToCreate; // Create a the component temp UID @@ -870,7 +877,7 @@ const FormModal = () => { ), }); return; - } + // The modal is addComponentToDynamicZone } else { // The modal is addComponentToDynamicZone @@ -980,8 +987,6 @@ const FormModal = () => { if (state.forTarget === 'contentType') { emitEvent('didSelectContentTypeFieldSettings'); - - return; } }; @@ -1001,7 +1006,7 @@ const FormModal = () => { ((state.attributeType === 'component' || state.modalType === 'addComponentToDynamicZone') && get(modifiedData, ['createComponent'], null) === false) || - state.modalType == 'editCategory' + state.modalType === 'editCategory' ); }; @@ -1159,22 +1164,16 @@ const FormModal = () => { // The spacer type is used mainly to align the icon picker... if (input.type === 'spacer') { - return ( - - ); + return ; } // The spacer type is used mainly to align the icon picker... if (input.type === 'spacer-small') { - return ( - - ); + return ; } if (input.type === 'spacer-medium') { - return ( - - ); + return ; } // This type is used in the addComponentToDynamicZone modal when selecting the option add an existing component diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js index 95bd0cb814..cfcf3a2bf9 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/forms.js @@ -15,6 +15,9 @@ import { } from './attributesRegexes'; import RESERVED_NAMES from './reservedNames'; +/* eslint-disable indent */ +/* eslint-disable prefer-arrow-callback */ + yup.addMethod(yup.mixed, 'defined', function() { return this.test( 'defined', @@ -173,9 +176,8 @@ const forms = { .when('max', (max, schema) => { if (max) { return schema.max(max, getTrad('error.validation.minSupMax')); - } else { - return schema; } + return schema; }) .nullable(); }), @@ -194,9 +196,8 @@ const forms = { maxLength, getTrad('error.validation.minSupMax') ); - } else { - return schema; } + return schema; }) .nullable(), }; @@ -257,9 +258,8 @@ const forms = { getTrad('error.validation.minSupMax'), max ); - } else { - return schema; } + return schema; }), max: yup @@ -370,13 +370,12 @@ const forms = { return { items: componentForm.advanced('componentToCreate.'), }; - } else { + } const requiredItem = [[fields.required]]; return { items: data.repeatable ? [...dynamiczoneItems] : requiredItem, }; - } } const items = defaultItems.slice(); @@ -427,7 +426,7 @@ const forms = { options: [ {msg => {msg}} , @@ -575,17 +574,17 @@ const forms = { options: [ { headerId: getTrad( - `form.attribute.component.option.repeatable` + 'form.attribute.component.option.repeatable' ), descriptionId: getTrad( - `form.attribute.component.option.repeatable.description` + 'form.attribute.component.option.repeatable.description' ), value: true, }, { - headerId: getTrad(`form.attribute.component.option.single`), + headerId: getTrad('form.attribute.component.option.single'), descriptionId: getTrad( - `form.attribute.component.option.single.description` + 'form.attribute.component.option.single.description' ), value: false, }, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js index dd249ac176..a31dc74ffd 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/relations.js @@ -1,3 +1,5 @@ +/* eslint-disable no-confusing-arrow */ + const shouldPluralizeName = nature => ['manyToMany', 'oneToMany', 'manyWay'].includes(nature) ? 2 : 1; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js index d9cf928c2a..e6a9f18dad 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/FormModal/utils/staticFields.js @@ -10,16 +10,16 @@ const fields = { size: 12, options: [ { - headerId: getTrad(`form.attribute.component.option.create`), + headerId: getTrad('form.attribute.component.option.create'), descriptionId: getTrad( - `form.attribute.component.option.create.description` + 'form.attribute.component.option.create.description' ), value: true, }, { - headerId: getTrad(`form.attribute.component.option.reuse-existing`), + headerId: getTrad('form.attribute.component.option.reuse-existing'), descriptionId: getTrad( - `form.attribute.component.option.reuse-existing.description` + 'form.attribute.component.option.reuse-existing.description' ), value: false, }, @@ -43,7 +43,7 @@ const fields = { name: 'max', type: 'customCheckboxWithChildren', label: { - id: getTrad(`form.attribute.item.maximum`), + id: getTrad('form.attribute.item.maximum'), }, validations: {}, }, @@ -52,7 +52,7 @@ const fields = { name: 'min', type: 'customCheckboxWithChildren', label: { - id: getTrad(`form.attribute.item.minimum`), + id: getTrad('form.attribute.item.minimum'), }, validations: {}, }, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js index 9a8bcc4016..3d236db5a4 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/LeftMenu/index.js @@ -16,6 +16,8 @@ import useDataManager from '../../hooks/useDataManager'; import makeSearch from '../../utils/makeSearch'; import Wrapper from './Wrapper'; +/* eslint-disable indent */ + const displayNotificationCTNotSaved = () => { strapi.notification.info(`${pluginId}.notification.info.creating.notSaved`); }; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js index 1c6072d54d..fff8bc7ece 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/ListView/index.js @@ -24,6 +24,8 @@ import ListHeader from '../../components/ListHeader'; import LeftMenu from '../LeftMenu'; import Wrapper from './Wrapper'; +/* eslint-disable indent */ + const ListView = () => { const { initialData, @@ -165,11 +167,12 @@ const ListView = () => { null ); - return description - ? description - : formatMessage({ - id: `${pluginId}.modelPage.contentHeader.emptyDescription.description`, - }); + return ( + description || + formatMessage({ + id: `${pluginId}.modelPage.contentHeader.emptyDescription.description`, + }) + ); }; const wait = async () => { @@ -191,7 +194,7 @@ const ListView = () => { id: `${pluginId}.form.button.cancel`, }), type: 'button', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), }, { className: 'button-submit', @@ -201,7 +204,7 @@ const ListView = () => { id: `${pluginId}.form.button.save`, }), type: 'submit', - disabled: isEqual(modifiedData, initialData) ? true : false, + disabled: isEqual(modifiedData, initialData), }, ] : [], @@ -335,7 +338,7 @@ const ListView = () => { mainTypeName={currentDataName} editTarget={forTarget} isMain - > + /> diff --git a/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js b/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js index aaa8c16326..054bca697e 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/icons/ManyToMany.js @@ -3,14 +3,16 @@ import PropTypes from 'prop-types'; const ManyToMany = ({ isSelected, ...rest }) => { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#1C5DE7', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#1C5DE7', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } return ( { const stroke = isSelected ? '#1C5DE7' : '#919BAE'; - const rectProps = isSelected - ? { - stroke: '#1C5DE7', - } - : { - strokeOpacity: '.1', - stroke: '#101622', - }; + let rectProps = { + strokeOpacity: '.1', + stroke: '#101622', + }; + + if (isSelected) { + rectProps = { + stroke: '#1C5DE7', + }; + } + return ( diff --git a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js index 531454f1dc..3a7b389261 100755 --- a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js +++ b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js @@ -43,8 +43,6 @@ import reducer from './reducer'; import saga from './saga'; export class HomePage extends React.Component { - static contextType = GlobalContext; - componentDidMount() { this.props.getDocInfos(); } @@ -134,6 +132,8 @@ export class HomePage extends React.Component { ); }; + static contextType = GlobalContext; + render() { const { docVersions, diff --git a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js index 4181cfd078..9d199802d4 100755 --- a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js +++ b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/saga.js @@ -14,6 +14,8 @@ import { makeSelectForm, } from './selectors'; +/* eslint-disable consistent-return */ + function* getData() { try { const response = yield call(request, '/documentation/getInfos', { diff --git a/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js b/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js index 7f49b6b102..dfc8433225 100755 --- a/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js +++ b/packages/strapi-plugin-documentation/admin/src/utils/openWithNewTab.js @@ -1,14 +1,13 @@ import { startsWith } from 'lodash'; -const openWithNewTab = (path) => { +const openWithNewTab = path => { const url = (() => { if (startsWith(path, '/')) { return `${strapi.backendURL}${path}`; - } else if (startsWith(path, 'https') || startsWith(path, 'http')) { + } if (startsWith(path, 'https') || startsWith(path, 'http')) { return path; - } else { - return `${strapi.backendURL}/${path}`; } + return `${strapi.backendURL}/${path}`; })(); window.open(url, '_blank'); @@ -16,4 +15,4 @@ const openWithNewTab = (path) => { return window.focus(); }; -export default openWithNewTab; \ No newline at end of file +export default openWithNewTab; diff --git a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js index b060abc74c..0ce4330bad 100644 --- a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js +++ b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/index.js @@ -28,7 +28,22 @@ import saga from './saga'; import selectConfigPage from './selectors'; class ConfigPage extends React.Component { - static contextType = GlobalContext; + pluginHeaderActions = [ + { + color: 'cancel', + label: this.context.formatMessage({ id: 'app.components.Button.cancel' }), + onClick: this.props.onCancel, + type: 'button', + key: 'button-cancel', + }, + { + color: 'success', + label: this.context.formatMessage({ id: 'app.components.Button.save' }), + onClick: this.handleSubmit, + type: 'submit', + key: 'button-submit', + }, + ]; componentDidMount() { this.getSettings(this.props); @@ -107,22 +122,7 @@ class ConfigPage extends React.Component { return this.props.submit(); }; - pluginHeaderActions = [ - { - color: 'cancel', - label: this.context.formatMessage({ id: 'app.components.Button.cancel' }), - onClick: this.props.onCancel, - type: 'button', - key: 'button-cancel', - }, - { - color: 'success', - label: this.context.formatMessage({ id: 'app.components.Button.save' }), - onClick: this.handleSubmit, - type: 'submit', - key: 'button-submit', - }, - ]; + static contextType = GlobalContext; render() { const { formatMessage } = this.context;