diff --git a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts index c876b161..5ff02007 100644 --- a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts +++ b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts @@ -68,6 +68,7 @@ export const setupRules = [ "pageHeader-deprecated", "select-deprecated", "table-update-deprecatedPath", + "tile-deprecated", "wizard-update-deprecatedPath", ]; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.md b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.md new file mode 100644 index 00000000..f0cddd77 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.md @@ -0,0 +1,17 @@ +### tile-deprecated [(#10821)](https://github.com/patternfly/patternfly-react/pull/10821) + +Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead. There is a new Card example on our documentation showcasing how to set up a Card as a Tile. + +#### Examples + +In: + +```jsx +%inputExample% +``` + +Out: + +```jsx +%outputExample% +``` diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.test.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.test.ts new file mode 100644 index 00000000..c090dd63 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.test.ts @@ -0,0 +1,62 @@ +const ruleTester = require('../../ruletester'); +import * as rule from './tile-deprecated'; + +ruleTester.run('tile-deprecated', rule, { + valid: [ + { + code: `import { Tile } from '@someOtherPackage';`, + }, + ], + invalid: [ + { + code: `import { Tile } from '@patternfly/react-core';`, + output: `import {\n\tTile\n} from '@patternfly/react-core/deprecated';`, + errors: [ + { + message: `Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead.`, + type: 'ImportDeclaration', + }, + ], + }, + { + code: `import { Tile as CustomTile } from '@patternfly/react-core';`, + output: `import {\n\tTile as CustomTile\n} from '@patternfly/react-core/deprecated';`, + errors: [ + { + message: `Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead.`, + type: 'ImportDeclaration', + }, + ], + }, + { + code: `import { Tile } from '@patternfly/react-core/dist/esm/components/Tile/index.js';`, + output: `import {\n\tTile\n} from '@patternfly/react-core/dist/esm/deprecated/components/Tile/index.js';`, + errors: [ + { + message: `Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead.`, + type: 'ImportDeclaration', + }, + ], + }, + { + code: `import { Tile } from '@patternfly/react-core/dist/js/components/Tile/index.js';`, + output: `import {\n\tTile\n} from '@patternfly/react-core/deprecated';`, + errors: [ + { + message: `Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead.`, + type: 'ImportDeclaration', + }, + ], + }, + { + code: `import { Tile } from '@patternfly/react-core/dist/dynamic/components/Tile/index.js';`, + output: `import {\n\tTile\n} from '@patternfly/react-core/deprecated';`, + errors: [ + { + message: `Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead.`, + type: 'ImportDeclaration', + }, + ], + }, + ], +}); \ No newline at end of file diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.ts new file mode 100644 index 00000000..281ab678 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tile-deprecated.ts @@ -0,0 +1,20 @@ +import { moveSpecifiers } from '../../helpers'; + +// https://github.com/patternfly/patternfly-react/pull/10821 + +const specifiersToMove = ['Tile']; + +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 Card instead.'; + +module.exports = { + meta: { fixable: 'code' }, + create: moveSpecifiers( + specifiersToMove, + fromPackage, + toPackage, + messageAfterImportNameChange + ), +}; \ No newline at end of file diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedInput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedInput.tsx new file mode 100644 index 00000000..dac62bf0 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedInput.tsx @@ -0,0 +1 @@ +import { Tile } from "@patternfly/react-core"; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedOutput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedOutput.tsx new file mode 100644 index 00000000..cbb5f0cc --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/tileDeprecated/tileDeprecatedOutput.tsx @@ -0,0 +1 @@ +import { Tile } from "@patternfly/react-core/deprecated";