diff --git a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts index 37db64fbe..4d3b9752f 100644 --- a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts +++ b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts @@ -44,6 +44,7 @@ export const warningRules = [ // rules that will run before other rules (move to deprecated?) export const setupRules = [ "applicationLauncher-deprecated", + "chip-deprecated", "contextSelector-update-deprecatedPath", "dropdown-update-deprecatedPath", "datalist-remove-selectableRow", diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.md b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.md new file mode 100644 index 000000000..3e556d68b --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.md @@ -0,0 +1,17 @@ +### chip-deprecated [(#)](https://github.com/patternfly/patternfly-react/pull/10049) + +Chip has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Label instead. + +#### Examples + +In: + +```jsx +%inputExample% +``` + +Out: + +```jsx +%outputExample% +``` diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.test.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.test.ts new file mode 100644 index 000000000..605426cee --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.test.ts @@ -0,0 +1,22 @@ +const ruleTester = require('../../ruletester'); +import * as rule from './chip-deprecated'; + +ruleTester.run('chip-deprecated', rule, { + valid: [ + { + code: `import { Chip } from '@someOtherPackage';`, + }, + ], + invalid: [ + { + code: `import { Chip } from '@patternfly/react-core';`, + output: `import {\n\tChip\n} from '@patternfly/react-core/deprecated';`, + errors: [ + { + message: `Chip has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Label instead.`, + type: 'ImportDeclaration', + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.ts new file mode 100644 index 000000000..27cfae451 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chip-deprecated.ts @@ -0,0 +1,20 @@ +import { moveSpecifiers } from '../../helpers'; + +// https://github.com/patternfly/patternfly-react/pull/10049 + +const specifiersToMove = ['Chip', 'ChipGroup']; + +const fromPackage = '@patternfly/react-core'; +const toPackage = '@patternfly/react-core/deprecated'; +const messageAfterImportNameChange = + 'been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Label instead.'; + +module.exports = { + meta: { fixable: 'code' }, + create: moveSpecifiers( + specifiersToMove, + fromPackage, + toPackage, + messageAfterImportNameChange + ), +}; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedInput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedInput.tsx new file mode 100644 index 000000000..16002ca03 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedInput.tsx @@ -0,0 +1 @@ +import { Chip } from '@patternfly/react-core'; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedOutput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedOutput.tsx new file mode 100644 index 000000000..295ea3f2b --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/chipDeprecated/chipDeprecatedOutput.tsx @@ -0,0 +1 @@ +import { Chip } from '@patternfly/react-core/deprecated';