Skip to content

Commit

Permalink
Add function to generate unique shadow slugs by finding max suffix an…
Browse files Browse the repository at this point in the history
…d incrementing it
  • Loading branch information
amitraj2203 committed May 26, 2024
1 parent 278810c commit 11d9964
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions packages/edit-site/src/components/global-styles/shadows-panel.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,34 @@ export default function ShadowsPanel() {
);
}

export function getNameAndSlugForShadow( shadows, slugPrefix = 'shadow-' ) {
const nameRegex = new RegExp( `^${ slugPrefix }([\\d]+)$` );
const position = shadows.reduce( ( previousValue, currentValue ) => {
if ( typeof currentValue?.slug === 'string' ) {
const matches = currentValue?.slug.match( nameRegex );
if ( matches ) {
const id = parseInt( matches[ 1 ], 10 );
if ( id >= previousValue ) {
return id + 1;
}
}
}
return previousValue;
}, 1 );

return {
name: `Shadow ${ position }`,
slug: `${ slugPrefix }${ position }`,
};
}

function ShadowList( { label, shadows, category, canCreate, onCreate } ) {
const handleAddShadow = () => {
const { name, slug } = getNameAndSlugForShadow( shadows );
onCreate( {
name: `Shadow ${ shadows.length + 1 }`,
name,
shadow: defaultShadow,
slug: `shadow-${ shadows.length + 1 }`,
slug,
} );
};

Expand Down

0 comments on commit 11d9964

Please sign in to comment.