eslint-plugin-smarthr
Advanced tools
Comparing version 0.3.27 to 0.4.0
@@ -5,2 +5,18 @@ # Changelog | ||
## [0.4.0](https://github.com/kufu/eslint-plugin-smarthr/compare/v0.3.27...v0.4.0) (2024-02-05) | ||
### ⚠ BREAKING CHANGES | ||
* 利用者がいなくなったsmarthr/redundant-nameを削除する (#111) | ||
### Features | ||
* a11y-input-in-form-controlでlabelが設定されている可能性が高いRadio, Checkboxの複数形コンポーネントを正しく判定できるようにする ([#112](https://github.com/kufu/eslint-plugin-smarthr/issues/112)) ([77ee8f4](https://github.com/kufu/eslint-plugin-smarthr/commit/77ee8f4cac883eb0a198875305a416f0172a584e)) | ||
### Bug Fixes | ||
* 利用者がいなくなったsmarthr/redundant-nameを削除する ([#111](https://github.com/kufu/eslint-plugin-smarthr/issues/111)) ([2bc1011](https://github.com/kufu/eslint-plugin-smarthr/commit/2bc10118cc0a18366300c3816f091060d2a0677d)) | ||
### [0.3.27](https://github.com/kufu/eslint-plugin-smarthr/compare/v0.3.26...v0.3.27) (2024-01-28) | ||
@@ -7,0 +23,0 @@ |
{ | ||
"name": "eslint-plugin-smarthr", | ||
"version": "0.3.27", | ||
"version": "0.4.0", | ||
"author": "SmartHR", | ||
@@ -25,3 +25,2 @@ "license": "MIT", | ||
"dependencies": { | ||
"inflected": "^2.1.0", | ||
"json5": "^2.2.0" | ||
@@ -28,0 +27,0 @@ }, |
@@ -23,3 +23,2 @@ # eslint-plugin-smarthr | ||
- [prohibit-path-within-template-literal](https://github.com/kufu/eslint-plugin-smarthr/tree/main/rules/prohibit-path-within-template-literal) | ||
- [redundant-name](https://github.com/kufu/eslint-plugin-smarthr/tree/main/rules/redundant-name) | ||
- [require-barrel-import](https://github.com/kufu/eslint-plugin-smarthr/tree/main/rules/require-barrel-import) | ||
@@ -26,0 +25,0 @@ - [require-declaration](https://github.com/kufu/eslint-plugin-smarthr/tree/main/rules/require-declaration) |
@@ -5,4 +5,7 @@ const { generateTagFormatter } = require('../../libs/format_styled_components') | ||
'RadioButton$': '(RadioButton)$', | ||
'RadioButtons$': '(RadioButtons)$', | ||
'RadioButtonPanel$': '(RadioButtonPanel)$', | ||
'RadioButtonPanels$': '(RadioButtonPanels)$', | ||
'Check(B|b)ox$': '(CheckBox)$', | ||
'Check(B|b)ox(e)?s$': '(CheckBoxes)$', | ||
} | ||
@@ -47,5 +50,5 @@ const EXPECTED_INPUT_NAMES = { | ||
const INPUT_REGEX = /(i|I)nput$/ | ||
const RADIO_BUTTONS_REGEX = /RadioButton(Panel)?$/ | ||
const CHECKBOX_REGEX = /Check(B|b)ox?$/ | ||
const SELECT_REGEX = /(S|s)elect?$/ | ||
const RADIO_BUTTONS_REGEX = /RadioButton(Panel)?(s)?$/ | ||
const CHECKBOX_REGEX = /Check(B|b)ox(s|es)?$/ | ||
const SELECT_REGEX = /(S|s)elect(s)?$/ | ||
const FROM_CONTROLS_REGEX = new RegExp(`(${Object.keys(EXPECTED_FORM_CONTROL_NAMES).join('|')})`) | ||
@@ -59,2 +62,3 @@ const FORM_CONTROL_REGEX = /(Form(Control|Group))$/ | ||
const AS_REGEX = /^(as|forwardedAs)$/ | ||
const SUFFIX_S_REGEX = /s$/ | ||
@@ -138,2 +142,4 @@ const IGNORE_INPUT_CHECK_PARENT_TYPE = /^(Program|ExportNamedDeclaration)$/ | ||
} | ||
const isPreMultiple = isAdditionalMultiInput || isFormControlInput && nodeName.match(SUFFIX_S_REGEX) | ||
const isRadio = (isPureInput && isTypeRadio) || nodeName.match(RADIO_BUTTONS_REGEX); | ||
@@ -161,3 +167,3 @@ const isCheckbox = !isRadio && (isPureInput && isTypeCheck || nodeName.match(CHECKBOX_REGEX)); | ||
const isMultiInput = isAdditionalMultiInput || hit || isInMap | ||
const isMultiInput = isPreMultiple || hit || isInMap | ||
const matcherFormControl = name.match(FORM_CONTROL_REGEX) | ||
@@ -164,0 +170,0 @@ |
@@ -18,3 +18,3 @@ const rule = require('../rules/a11y-input-in-form-control') | ||
- ${name}が入力要素とラベル・タイトル・説明など含む概念を表示するコンポーネントの場合、コンポーネント名を/((FormGroup)$|(FormControl)$|((F|^f)ieldset)$)/とマッチするように修正してください | ||
- ${name}が入力要素自体を表現するコンポーネントの一部である場合、ルートとなるコンポーネントの名称を/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtonPanel$|Check(B|b)ox$)/とマッチするように修正してください | ||
- ${name}が入力要素自体を表現するコンポーネントの一部である場合、ルートとなるコンポーネントの名称を/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtons$|RadioButtonPanel$|RadioButtonPanels$|Check(B|b)ox$|Check(B|b)ox(e)?s$)/とマッチするように修正してください | ||
- 上記のいずれの方法も適切ではない場合、${name}のtitle属性に "どんな値を入力すれば良いのか" の説明を設定してください | ||
@@ -25,3 +25,3 @@ - 例: <${name} title="姓を全角カタカナのみで入力してください" />` | ||
- ${name}が入力要素とラベル・タイトル・説明など含む概念を表示するコンポーネントの場合、コンポーネント名を/((FormGroup)$|(FormControl)$|((F|^f)ieldset)$)/とマッチするように修正してください | ||
- ${name}が入力要素自体を表現するコンポーネントの一部である場合、ルートとなるコンポーネントの名称を/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtonPanel$|Check(B|b)ox$)/とマッチするように修正してください | ||
- ${name}が入力要素自体を表現するコンポーネントの一部である場合、ルートとなるコンポーネントの名称を/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtons$|RadioButtonPanel$|RadioButtonPanels$|Check(B|b)ox$|Check(B|b)ox(e)?s$)/とマッチするように修正してください | ||
- 上記のいずれの方法も適切ではない場合、${name}のtitle属性に "どんな値を選択すれば良いのか" の説明を設定してください | ||
@@ -47,3 +47,3 @@ - 例: <${name} title="検索対象を選択してください" />` | ||
- smarthr-ui/FormControl、smarthr-ui/FormGroup はlabel要素を内包しています | ||
- 方法3: ${name} がRadioButton、もしくはCheckboxを表すコンポーネントの場合、名称を/(RadioButton$|RadioButtonPanel$|Check(B|b)ox$)/にマッチするものに変更してください | ||
- 方法3: ${name} がRadioButton、もしくはCheckboxを表すコンポーネントの場合、名称を/(RadioButton$|RadioButtons$|RadioButtonPanel$|RadioButtonPanels$|Check(B|b)ox$|Check(B|b)ox(e)?s$)/にマッチするものに変更してください | ||
- smarthr-ui/RadioButton、smarthr-ui/RadioButtonPanel、smarthr-ui/Checkbox はlabel要素を内包しています | ||
@@ -58,3 +58,3 @@ - 方法4: HogeFieldset が smarthr-ui/Fieldset、もしくはそれを拡張しているコンポーネントではない場合、名称を /Fieldset$/ にマッチしないものに変更してください | ||
- smarthr-ui/FormControl、smarthr-ui/FormGroup はlabel要素を内包しています | ||
- 方法3: ${name} がRadioButton、もしくはCheckboxを表すコンポーネントの場合、名称を/(RadioButton$|RadioButtonPanel$|Check(B|b)ox$)/にマッチするものに変更してください | ||
- 方法3: ${name} がRadioButton、もしくはCheckboxを表すコンポーネントの場合、名称を/(RadioButton$|RadioButtons$|RadioButtonPanel$|RadioButtonPanels$|Check(B|b)ox$|Check(B|b)ox(e)?s$)/にマッチするものに変更してください | ||
- smarthr-ui/RadioButton、smarthr-ui/RadioButtonPanel、smarthr-ui/Checkbox はlabel要素を内包しています | ||
@@ -83,3 +83,3 @@ - 方法4: HogeFieldset が smarthr-ui/Fieldset、もしくはそれを拡張しているコンポーネントではない場合、名称を /Fieldset$/ にマッチしないものに変更してください | ||
const requireMultiInputInFormControlWithRoleGroup = () => `HogeFormControl内に入力要素が2個以上存在しないため、'role=\"group\"'を削除してください。'role=\"group\"'は複数の入力要素を一つのグループとして扱うための属性です。 | ||
- HogeFormControl内に2つ以上の入力要素が存在する場合、入力要素を含むコンポーネント名全てを/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtonPanel$|Check(B|b)ox$)/、もしくは/((FormGroup)$|(FormControl)$|((F|^f)ieldset)$)/にマッチする名称に変更してください` | ||
- HogeFormControl内に2つ以上の入力要素が存在する場合、入力要素を含むコンポーネント名全てを/((I|^i)nput$|SearchInput$|(T|^t)extarea$|(S|^s)elect$|InputFile$|Combo(b|B)ox$|DatePicker$|RadioButton$|RadioButtons$|RadioButtonPanel$|RadioButtonPanels$|Check(B|b)ox$|Check(B|b)ox(e)?s$)/、もしくは/((FormGroup)$|(FormControl)$|((F|^f)ieldset)$)/にマッチする名称に変更してください` | ||
@@ -137,2 +137,6 @@ ruleTester.run('a11y-input-in-form-control', rule, { | ||
{ code: '<HogeTextarea title="any" />' }, | ||
{ code: '<Fieldset><HogeRadioButtons /></Fieldset>' }, | ||
{ code: '<Fieldset><HogeRadioButtonPanels /></Fieldset>' }, | ||
{ code: '<Fieldset><HogeCheckBoxs /></Fieldset>' }, | ||
{ code: '<Fieldset><HogeCheckBoxes /></Fieldset>' }, | ||
], | ||
@@ -178,3 +182,6 @@ invalid: [ | ||
{ code: '<HogeFormControl role="group"><HogeInput /></HogeFormControl>', errors: [ { message: requireMultiInputInFormControlWithRoleGroup() } ] }, | ||
{ code: '<HogeFormControl><HogeRadioButtons /></HogeFormControl>', errors: [ { message: invalidRadioInFormControl('HogeRadioButtons') } ] }, | ||
{ code: '<HogeFormControl><HogeCheckBoxs /></HogeFormControl>', errors: [ { message: invalidMultiInputsInFormControl() } ] }, | ||
{ code: '<HogeFormControl><HogeCheckBoxes /></HogeFormControl>', errors: [ { message: invalidMultiInputsInFormControl() } ] }, | ||
] | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2
320477
81
4736
28
- Removedinflected@^2.1.0
- Removedinflected@2.1.0(transitive)