From 8ed6f6186a87c65a5f0e84dceef72729510f5108 Mon Sep 17 00:00:00 2001 From: Eric Olkowski Date: Mon, 26 Feb 2024 14:42:50 -0500 Subject: [PATCH] feat(Menu): updated markup for MenuItemAction --- .../src/ruleCustomization.ts | 1 + .../jumpLinksItem-warn-markup-change.ts | 2 +- .../menuItemAction-warn-update-markup.md | 3 ++ .../menuItemAction-warn-update-markup.test.ts | 22 ++++++++++++ .../menuItemAction-warn-update-markup.ts | 35 +++++++++++++++++++ .../menuItemActionWarnUpdateMarkupInput.tsx | 1 + .../menuItemActionWarnUpdateMarkupOutput.tsx | 1 + 7 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.md create mode 100644 packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.test.ts create mode 100644 packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.ts create mode 100644 packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupInput.tsx create mode 100644 packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupOutput.tsx diff --git a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts index 0174768ef..af40b5c19 100644 --- a/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts +++ b/packages/eslint-plugin-pf-codemods/src/ruleCustomization.ts @@ -18,6 +18,7 @@ export const warningRules = [ "horizontalSubnav-warn-ariaLabel", "jumpLinksItem-warn-markup-change", "label-warn-truncated-default", + "menuItemAction-warn-update-markup", "nav-warn-flyouts-now-inline", "overflowMenu-warn-updated-dropdownItem", "pageSection-warn-variantClasses-applied", diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/jumpLinksItemWarnMarkupChange/jumpLinksItem-warn-markup-change.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/jumpLinksItemWarnMarkupChange/jumpLinksItem-warn-markup-change.ts index b1552c455..24d43d55e 100644 --- a/packages/eslint-plugin-pf-codemods/src/rules/v6/jumpLinksItemWarnMarkupChange/jumpLinksItem-warn-markup-change.ts +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/jumpLinksItemWarnMarkupChange/jumpLinksItem-warn-markup-change.ts @@ -1,6 +1,6 @@ import { getFromPackage } from "../../helpers"; import { Rule } from "eslint"; -import { ImportDeclaration, ImportSpecifier } from "estree-jsx"; +import { ImportDeclaration } from "estree-jsx"; // https://github.com/patternfly/patternfly-react/pull/10027 module.exports = { diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.md b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.md new file mode 100644 index 000000000..12458eb81 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.md @@ -0,0 +1,3 @@ +### menuItemAction-warn-update-markup [(#10089)](https://github.com/patternfly/patternfly-react/pull/10089) + +The markup for MenuItemAction has been updated. It now uses our Button component internally, has a wrapper around the action button, and no longer renders an icon wrapper inside the action button. diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.test.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.test.ts new file mode 100644 index 000000000..8eac31ac8 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.test.ts @@ -0,0 +1,22 @@ +const ruleTester = require("../../ruletester"); +import * as rule from "./menuItemAction-warn-update-markup"; + +ruleTester.run("menuItemAction-warn-update-markup", rule, { + valid: [ + { + code: `import { MenuItemAction } from '@someOtherPackage';`, + }, + ], + invalid: [ + { + code: `import { MenuItemAction } from '@patternfly/react-core';`, + output: `import { MenuItemAction } from '@patternfly/react-core';`, + errors: [ + { + message: `The markup for MenuItemAction has been updated. It now uses our Button component internally, has a wrapper around the action button, and no longer renders an icon wrapper inside the action button.`, + type: "ImportDeclaration", + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.ts new file mode 100644 index 000000000..77cefa556 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemAction-warn-update-markup.ts @@ -0,0 +1,35 @@ +import { getFromPackage } from "../../helpers"; +import { Rule } from "eslint"; +import { ImportDeclaration } from "estree-jsx"; + +// https://github.com/patternfly/patternfly-react/pull/10089 +module.exports = { + meta: {}, + create: function (context: Rule.RuleContext) { + const { imports } = getFromPackage(context, "@patternfly/react-core"); + + const menuItemActionImport = imports.find( + (specifier) => specifier.imported.name === "MenuItemAction" + ); + + return !menuItemActionImport + ? {} + : { + ImportDeclaration(node: ImportDeclaration) { + if ( + node.specifiers.find( + (specifier) => + specifier.type === "ImportSpecifier" && + specifier.imported.name === menuItemActionImport.imported.name + ) + ) { + context.report({ + node, + message: + "The markup for MenuItemAction has been updated. It now uses our Button component internally, has a wrapper around the action button, and no longer renders an icon wrapper inside the action button.", + }); + } + }, + }; + }, +}; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupInput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupInput.tsx new file mode 100644 index 000000000..231a54e5a --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupInput.tsx @@ -0,0 +1 @@ +import { MenuItemAction } from "@patternfly/react-core"; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupOutput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupOutput.tsx new file mode 100644 index 000000000..231a54e5a --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/menuItemActionWarnUpdateMarkup/menuItemActionWarnUpdateMarkupOutput.tsx @@ -0,0 +1 @@ +import { MenuItemAction } from "@patternfly/react-core";