Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes AI buttons in the sidebar going blank after closing the metabox #21439

Merged
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ const AIAssessmentFixesButton = ( { id, isPremium } ) => {
setButtonClass( "" );
}, [] );

// Generate a unique gradient ID for the SparklesIcon component.
const gradientId = `gradient-${ Math.random().toString( 36 ).substring( 2, 9 ) }`;

return (
<>
<IconAIFixesButton
Expand All @@ -93,7 +96,7 @@ const AIAssessmentFixesButton = ( { id, isPremium } ) => {
className={ `ai-button ${buttonClass}` }
pressed={ isButtonPressed }
>
<SparklesIcon pressed={ isButtonPressed } />
<SparklesIcon pressed={ isButtonPressed } gradientId={ gradientId } />
{
// We put the logic for the Upsell component in place.
// The Modal below is only a placeholder/mock. When we have the design for the real upsell, the modal should be replaced.
Expand Down
17 changes: 10 additions & 7 deletions packages/js/src/ai-assessment-fixes/components/sparkles-icon.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,27 @@ import propTypes from "prop-types";
/**
* The AI Assessment Fixes button icon.
* @param {boolean} pressed Whether the button is pressed.
* @param {string} gradientId The gradient ID for the icon.
* @returns {JSX.Element} The AI Assessment Fixes button icon.
*/
export const SparklesIcon = ( { pressed = false } ) => {
export const SparklesIcon = ( { pressed = false, gradientId } ) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess here it would also be better to add gradientId to the JSDoc of SparklesIcon 😺

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll commit this :D See my latest commit

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, good call! Thank you 🙏

return (
<>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M3.33284 2V4.66667M1.99951 3.33333H4.66618M3.99951 11.3333V14M2.66618 12.6667H5.33284M8.66618 2L10.19 6.57143L13.9995 8L10.19 9.42857L8.66618 14L7.14237 9.42857L3.33284 8L7.14237 6.57143L8.66618 2Z"
stroke={ pressed ? "white" : "url(#paint0_linear_1208_188)" } strokeWidth="1.33333"
d="M3.33284 2.96991V5.63658M1.99951 4.30324H4.66618M3.99951 12.3032V14.9699M2.66618 13.6366H5.33284M8.66618 2.96991L10.19 7.54134L13.9995 8.96991L10.19 10.3985L8.66618 14.9699L7.14237 10.3985L3.33284 8.96991L7.14237 7.54134L8.66618 2.96991Z"
strokeLinecap="round"
strokeLinejoin="round"
stroke={ pressed ? "white" : `url(#${gradientId})` }
strokeWidth="1.33333"
/>
<defs>
<linearGradient
id="paint0_linear_1208_188" x1="0" y1="0" x2="16" y2="16"
id={ gradientId } x1="1.99951" y1="2.96991" x2="15.3308" y2="4.69764"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#A61E69" />
<stop offset="1" stopColor="#6366F1" />
<stop offset="0%" stopColor="#A61E69" />
<stop offset="100%" stopColor="#6366F1" />
</linearGradient>
</defs>
</svg>
Expand All @@ -31,4 +33,5 @@ export const SparklesIcon = ( { pressed = false } ) => {

SparklesIcon.propTypes = {
pressed: propTypes.bool,
gradientId: propTypes.string,
};
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,11 @@ const testCases = [
name: "pressed is true",
pressed: true,
},

];

describe.each( testCases )( "SparklesIcon", ( { name, pressed } ) => {
test( `should render the SparklesIcon component when ${name}`, () => {
const { container } = render( <SparklesIcon pressed={ pressed } /> );
const { container } = render( <SparklesIcon pressed={ pressed } gradientId={ "gradient-0kdmaht" } /> );

expect( container ).toMatchSnapshot();
} );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,33 @@ exports[`SparklesIcon should render the SparklesIcon component when pressed is f
<div>
<svg
fill="none"
height="16"
viewBox="0 0 16 16"
height="17"
viewBox="0 0 16 17"
width="16"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.33284 2V4.66667M1.99951 3.33333H4.66618M3.99951 11.3333V14M2.66618 12.6667H5.33284M8.66618 2L10.19 6.57143L13.9995 8L10.19 9.42857L8.66618 14L7.14237 9.42857L3.33284 8L7.14237 6.57143L8.66618 2Z"
stroke="url(#paint0_linear_1208_188)"
d="M3.33284 2.96991V5.63658M1.99951 4.30324H4.66618M3.99951 12.3032V14.9699M2.66618 13.6366H5.33284M8.66618 2.96991L10.19 7.54134L13.9995 8.96991L10.19 10.3985L8.66618 14.9699L7.14237 10.3985L3.33284 8.96991L7.14237 7.54134L8.66618 2.96991Z"
stroke="url(#gradient-0kdmaht)"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.33333"
/>
<defs>
<lineargradient
gradientUnits="userSpaceOnUse"
id="paint0_linear_1208_188"
x1="0"
x2="16"
y1="0"
y2="16"
id="gradient-0kdmaht"
x1="1.99951"
x2="15.3308"
y1="2.96991"
y2="4.69764"
>
<stop
offset="0%"
stop-color="#A61E69"
/>
<stop
offset="1"
offset="100%"
stop-color="#6366F1"
/>
</lineargradient>
Expand All @@ -42,13 +43,13 @@ exports[`SparklesIcon should render the SparklesIcon component when pressed is t
<div>
<svg
fill="none"
height="16"
viewBox="0 0 16 16"
height="17"
viewBox="0 0 16 17"
width="16"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.33284 2V4.66667M1.99951 3.33333H4.66618M3.99951 11.3333V14M2.66618 12.6667H5.33284M8.66618 2L10.19 6.57143L13.9995 8L10.19 9.42857L8.66618 14L7.14237 9.42857L3.33284 8L7.14237 6.57143L8.66618 2Z"
d="M3.33284 2.96991V5.63658M1.99951 4.30324H4.66618M3.99951 12.3032V14.9699M2.66618 13.6366H5.33284M8.66618 2.96991L10.19 7.54134L13.9995 8.96991L10.19 10.3985L8.66618 14.9699L7.14237 10.3985L3.33284 8.96991L7.14237 7.54134L8.66618 2.96991Z"
stroke="white"
stroke-linecap="round"
stroke-linejoin="round"
Expand All @@ -57,17 +58,18 @@ exports[`SparklesIcon should render the SparklesIcon component when pressed is t
<defs>
<lineargradient
gradientUnits="userSpaceOnUse"
id="paint0_linear_1208_188"
x1="0"
x2="16"
y1="0"
y2="16"
id="gradient-0kdmaht"
x1="1.99951"
x2="15.3308"
y1="2.96991"
y2="4.69764"
>
<stop
offset="0%"
stop-color="#A61E69"
/>
<stop
offset="1"
offset="100%"
stop-color="#6366F1"
/>
</lineargradient>
Expand Down
Loading