From 5f04042555dd8a9b97c22755a4b0e05695b965f3 Mon Sep 17 00:00:00 2001 From: MisakaKumomi <447f.misaka@outlook.com> Date: Tue, 8 Feb 2022 19:36:42 +0800 Subject: [PATCH 1/4] feat: option for rule 'no-inline-styles' --- lib/rules/no-inline-styles.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/rules/no-inline-styles.js b/lib/rules/no-inline-styles.js index 752f618..3ebeb12 100644 --- a/lib/rules/no-inline-styles.js +++ b/lib/rules/no-inline-styles.js @@ -12,13 +12,15 @@ const styleSheet = require('../util/stylesheet'); const { StyleSheets } = styleSheet; const { astHelpers } = styleSheet; -const create = Components.detect((context) => { +module.exports = Components.detect((context) => { + const options = context.options[0] || {}; const styleSheets = new StyleSheets(); function reportInlineStyles(inlineStyles) { if (inlineStyles) { inlineStyles.forEach((style) => { if (style) { + if (options.allowStylePropertiesLessThan && Object.keys(style.expression).length < options.allowStylePropertiesLessThan) return; const expression = util.inspect(style.expression); context.report({ node: style.node, @@ -42,9 +44,13 @@ const create = Components.detect((context) => { }; }); -module.exports = { - meta: { - schema: [], - }, - create, -}; +module.exports.schema = [ + { + type: 'object', + properties: { + allowStylePropertiesLessThan: { + type: 'number', + }, + }, + } +]; From 245793c8c2d28093763e44ea554410a8010cce9e Mon Sep 17 00:00:00 2001 From: MisakaKumomi <447f.misaka@outlook.com> Date: Tue, 8 Feb 2022 19:39:37 +0800 Subject: [PATCH 2/4] docs: option for rule 'no-inline-styles' --- docs/rules/no-inline-styles.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/rules/no-inline-styles.md b/docs/rules/no-inline-styles.md index e8addf6..0e4b574 100644 --- a/docs/rules/no-inline-styles.md +++ b/docs/rules/no-inline-styles.md @@ -50,3 +50,9 @@ const Welcome = React.createClass({ } }); ``` + +#### This rule has an object option: + +- "allowStylePropertiesLessThan" – allow style properties count less than a specific number. for e.g. `2` will allow `{fontSize: 15}` but not `{fontSize: 15, fontColor: 'white'}` + + From 48683da651f961dd935db8bbfa5c6ce20229283d Mon Sep 17 00:00:00 2001 From: MisakaKumomi <447f.misaka@outlook.com> Date: Tue, 8 Feb 2022 19:49:32 +0800 Subject: [PATCH 3/4] fix: code style --- lib/rules/no-inline-styles.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/rules/no-inline-styles.js b/lib/rules/no-inline-styles.js index 3ebeb12..b83d416 100644 --- a/lib/rules/no-inline-styles.js +++ b/lib/rules/no-inline-styles.js @@ -20,7 +20,9 @@ module.exports = Components.detect((context) => { if (inlineStyles) { inlineStyles.forEach((style) => { if (style) { - if (options.allowStylePropertiesLessThan && Object.keys(style.expression).length < options.allowStylePropertiesLessThan) return; + const lengthLimit = options.allowStylePropertiesLessThan + if (lengthLimit && Object.keys(style.expression).length < lengthLimit) + return; const expression = util.inspect(style.expression); context.report({ node: style.node, @@ -52,5 +54,5 @@ module.exports.schema = [ type: 'number', }, }, - } + }, ]; From 6f24ae9e2a38765ce2d4ac5c0465a03ea1d1d1a9 Mon Sep 17 00:00:00 2001 From: MisakaKumomi <447f.misaka@outlook.com> Date: Wed, 9 Feb 2022 10:10:36 +0800 Subject: [PATCH 4/4] fix: eslint problem --- lib/rules/no-inline-styles.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/rules/no-inline-styles.js b/lib/rules/no-inline-styles.js index b83d416..12a82e9 100644 --- a/lib/rules/no-inline-styles.js +++ b/lib/rules/no-inline-styles.js @@ -20,9 +20,8 @@ module.exports = Components.detect((context) => { if (inlineStyles) { inlineStyles.forEach((style) => { if (style) { - const lengthLimit = options.allowStylePropertiesLessThan - if (lengthLimit && Object.keys(style.expression).length < lengthLimit) - return; + const lengthLimit = options.allowStylePropertiesLessThan; + if (lengthLimit && Object.keys(style.expression).length < lengthLimit) return; const expression = util.inspect(style.expression); context.report({ node: style.node,