From acde034a1dcfd04aad5abe450e39bed3bbc37cb0 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Fri, 13 Oct 2023 20:22:19 +0530 Subject: [PATCH] Replaced eslint rule twenty/no-spread-props to react/jsx-props-no-spreading (#1976) * Replaced eslint rule twenty/no-spread-props to react/jsx-props-no-spreading * Disable props spread on external libraries --------- Co-authored-by: Charles Bochet --- front/.eslintrc.js | 6 +++- .../components/SpreadsheetImportProvider.tsx | 1 + .../UploadStep/components/DropZone.tsx | 10 ++++-- .../ui/board/components/EntityBoardCard.tsx | 2 ++ .../ui/board/components/EntityBoardColumn.tsx | 2 ++ .../components/DraggableItem.tsx | 30 ++++++++-------- .../components/DraggableList.tsx | 6 +++- .../eslint-plugin-twenty-ts/dist/index.js | 1 - .../dist/src/rules/no-spread-props.js | 31 ---------------- .../dist/src/tests/no-spread-props.spec.js | 34 ------------------ packages/eslint-plugin-twenty/index.ts | 1 - .../src/rules/no-spread-props.ts | 36 ------------------- .../src/tests/no-spread-props.spec.ts | 35 ------------------ 13 files changed, 38 insertions(+), 157 deletions(-) delete mode 100644 packages/eslint-plugin-twenty-ts/dist/src/rules/no-spread-props.js delete mode 100644 packages/eslint-plugin-twenty-ts/dist/src/tests/no-spread-props.spec.js delete mode 100644 packages/eslint-plugin-twenty/src/rules/no-spread-props.ts delete mode 100644 packages/eslint-plugin-twenty/src/tests/no-spread-props.spec.ts diff --git a/front/.eslintrc.js b/front/.eslintrc.js index 916a9c765..a4780acb6 100644 --- a/front/.eslintrc.js +++ b/front/.eslintrc.js @@ -68,7 +68,6 @@ module.exports = { 'simple-import-sort/exports': 'error', 'twenty/effect-components': 'error', 'twenty/no-hardcoded-colors': 'error', - 'twenty/no-spread-props': 'error', 'twenty/matching-state-variable': 'error', 'twenty/component-props-naming': 'error', 'twenty/sort-css-properties-alphabetically': 'error', @@ -76,6 +75,11 @@ module.exports = { 'func-style':['error', 'declaration', { 'allowArrowFunctions': true }], "@typescript-eslint/no-unused-vars": "off", "no-unused-vars": "off", + "react/jsx-props-no-spreading": [ + "error", { + "explicitSpread": "ignore", + } + ], "react-hooks/exhaustive-deps": [ "warn", { "additionalHooks": "useRecoilCallback" diff --git a/front/src/modules/spreadsheet-import/provider/components/SpreadsheetImportProvider.tsx b/front/src/modules/spreadsheet-import/provider/components/SpreadsheetImportProvider.tsx index ccfa3e3bc..5c5b7a137 100644 --- a/front/src/modules/spreadsheet-import/provider/components/SpreadsheetImportProvider.tsx +++ b/front/src/modules/spreadsheet-import/provider/components/SpreadsheetImportProvider.tsx @@ -28,6 +28,7 @@ export const SpreadsheetImportProvider = ( )} diff --git a/front/src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx b/front/src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx index 67c376580..a2768d114 100644 --- a/front/src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx +++ b/front/src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx @@ -125,9 +125,15 @@ export const DropZone = ({ onContinue, isLoading }: DropZoneProps) => { }); return ( - + {isDragActive && } - + {isDragActive ? ( Drop file here... ) : loading || isLoading ? ( diff --git a/front/src/modules/ui/board/components/EntityBoardCard.tsx b/front/src/modules/ui/board/components/EntityBoardCard.tsx index 92a671bca..0153473e0 100644 --- a/front/src/modules/ui/board/components/EntityBoardCard.tsx +++ b/front/src/modules/ui/board/components/EntityBoardCard.tsx @@ -36,7 +36,9 @@ export const EntityBoardCard = ({ {(draggableProvided) => (
{children} @@ -105,6 +106,7 @@ export const EntityBoardColumn = ({ {(draggableProvided) => (
diff --git a/front/src/modules/ui/draggable-list/components/DraggableItem.tsx b/front/src/modules/ui/draggable-list/components/DraggableItem.tsx index 664872e4f..c5e8e3a32 100644 --- a/front/src/modules/ui/draggable-list/components/DraggableItem.tsx +++ b/front/src/modules/ui/draggable-list/components/DraggableItem.tsx @@ -29,22 +29,22 @@ export const DraggableItem = ({ return (
{itemComponent}
diff --git a/front/src/modules/ui/draggable-list/components/DraggableList.tsx b/front/src/modules/ui/draggable-list/components/DraggableList.tsx index 6f6d4572e..000d1156b 100644 --- a/front/src/modules/ui/draggable-list/components/DraggableList.tsx +++ b/front/src/modules/ui/draggable-list/components/DraggableList.tsx @@ -26,7 +26,11 @@ export const DraggableList = ({ {(provided) => ( -
+
{draggableItems} {provided.placeholder}
diff --git a/packages/eslint-plugin-twenty-ts/dist/index.js b/packages/eslint-plugin-twenty-ts/dist/index.js index 2fd0edf8b..d98d50f36 100644 --- a/packages/eslint-plugin-twenty-ts/dist/index.js +++ b/packages/eslint-plugin-twenty-ts/dist/index.js @@ -4,7 +4,6 @@ module.exports = { rules: { "effect-components": require("./src/rules/effect-components"), "no-hardcoded-colors": require("./src/rules/no-hardcoded-colors"), - "no-spread-props": require('./src/rules/no-spread-props'), "matching-state-variable": require("./src/rules/matching-state-variable"), "sort-css-properties-alphabetically": require("./src/rules/sort-css-properties-alphabetically"), "styled-components-prefixed-with-styled": require("./src/rules/styled-components-prefixed-with-styled"), diff --git a/packages/eslint-plugin-twenty-ts/dist/src/rules/no-spread-props.js b/packages/eslint-plugin-twenty-ts/dist/src/rules/no-spread-props.js deleted file mode 100644 index e54def9ec..000000000 --- a/packages/eslint-plugin-twenty-ts/dist/src/rules/no-spread-props.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = require("@typescript-eslint/utils"); -const createRule = utils_1.ESLintUtils.RuleCreator(() => "https://docs.twenty.com/contributor/frontend/style-guide#no-single-variable-prop-spreading-in-jsx-elements"); -const noSpreadPropsRule = createRule({ - create: (context) => ({ - JSXSpreadAttribute: (node) => { - if (node.argument.type === "Identifier") { - context.report({ - node, - messageId: "noSpreadProps", - }); - } - }, - }), - name: "no-spread-props", - meta: { - docs: { - description: "Disallow passing props as {...props} in React components.", - }, - messages: { - noSpreadProps: `Single variable prop spreading is disallowed in JSX elements.\nPrefer explicitly listing out all props or using an object expression like so: \`{...{ prop1, prop2 }}\`.\nSee https://docs.twenty.com/contributor/frontend/style-guide#no-single-variable-prop-spreading-in-jsx-elements for more information.`, - }, - type: "suggestion", - schema: [], - fixable: "code", - }, - defaultOptions: [], -}); -module.exports = noSpreadPropsRule; -exports.default = noSpreadPropsRule; diff --git a/packages/eslint-plugin-twenty-ts/dist/src/tests/no-spread-props.spec.js b/packages/eslint-plugin-twenty-ts/dist/src/tests/no-spread-props.spec.js deleted file mode 100644 index a07a5014c..000000000 --- a/packages/eslint-plugin-twenty-ts/dist/src/tests/no-spread-props.spec.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const rule_tester_1 = require("@typescript-eslint/rule-tester"); -const no_spread_props_1 = __importDefault(require("../rules/no-spread-props")); -const ruleTester = new rule_tester_1.RuleTester({ - parser: "@typescript-eslint/parser", - parserOptions: { - project: "./tsconfig.json", - tsconfigRootDir: __dirname, - ecmaFeatures: { - jsx: true, - }, - }, - }); -ruleTester.run("no-spread-props", no_spread_props_1.default, { - valid: [ - { - code: "", - }, - ], - invalid: [ - { - code: "", - errors: [ - { - messageId: "noSpreadProps", - }, - ], - }, - ], -}); diff --git a/packages/eslint-plugin-twenty/index.ts b/packages/eslint-plugin-twenty/index.ts index 2ea148937..20a91daf4 100644 --- a/packages/eslint-plugin-twenty/index.ts +++ b/packages/eslint-plugin-twenty/index.ts @@ -2,7 +2,6 @@ module.exports = { rules: { "effect-components": require("./src/rules/effect-components"), "no-hardcoded-colors": require("./src/rules/no-hardcoded-colors"), - "no-spread-props": require("./src/rules/no-spread-props"), "matching-state-variable": require("./src/rules/matching-state-variable"), "sort-css-properties-alphabetically": require("./src/rules/sort-css-properties-alphabetically"), "styled-components-prefixed-with-styled": require("./src/rules/styled-components-prefixed-with-styled"), diff --git a/packages/eslint-plugin-twenty/src/rules/no-spread-props.ts b/packages/eslint-plugin-twenty/src/rules/no-spread-props.ts deleted file mode 100644 index 614e2cdfe..000000000 --- a/packages/eslint-plugin-twenty/src/rules/no-spread-props.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ESLintUtils } from "@typescript-eslint/utils"; - -const createRule = ESLintUtils.RuleCreator( - () => - "https://docs.twenty.com/contributor/frontend/style-guide#no-single-variable-prop-spreading-in-jsx-elements", -); - -const noSpreadPropsRule = createRule({ - create: (context) => ({ - JSXSpreadAttribute: (node) => { - if (node.argument.type === "Identifier") { - context.report({ - node, - messageId: "noSpreadProps", - }); - } - }, - }), - name: "no-spread-props", - meta: { - docs: { - description: "Disallow passing props as {...props} in React components.", - }, - messages: { - noSpreadProps: `Single variable prop spreading is disallowed in JSX elements.\nPrefer explicitly listing out all props or using an object expression like so: \`{...{ prop1, prop2 }}\`.\nSee https://docs.twenty.com/contributor/frontend/style-guide#no-single-variable-prop-spreading-in-jsx-elements for more information.`, - }, - type: "suggestion", - schema: [], - fixable: "code", - }, - defaultOptions: [], -}); - -module.exports = noSpreadPropsRule; - -export default noSpreadPropsRule; diff --git a/packages/eslint-plugin-twenty/src/tests/no-spread-props.spec.ts b/packages/eslint-plugin-twenty/src/tests/no-spread-props.spec.ts deleted file mode 100644 index f20ff8f1e..000000000 --- a/packages/eslint-plugin-twenty/src/tests/no-spread-props.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { RuleTester } from "@typescript-eslint/rule-tester"; - -import noSpreadPropsRule from "../rules/no-spread-props"; - -const ruleTester = new RuleTester({ - parser: "@typescript-eslint/parser", - parserOptions: { - project: "./tsconfig.json", - tsconfigRootDir: __dirname, - ecmaFeatures: { - jsx: true, - }, - }, -}); - -ruleTester.run("no-spread-props", noSpreadPropsRule, { - valid: [ - { - code: "", - }, - { - code: "", - }, - ], - invalid: [ - { - code: "", - errors: [ - { - messageId: "noSpreadProps", - }, - ], - }, - ], -});