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

Adding Font size presets UI #63057

Open
wants to merge 18 commits into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add confirm dialog to reset font size presets
  • Loading branch information
matiasbenedetto committed Jul 4, 2024
commit 7cc12604eb8cc8930759d60877f93d170ddc7d4a
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* WordPress dependencies
*/
import { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
import { __ } from '@wordpress/i18n';

function ConfirmResetFontSizesDialog( {
text,
confirmButtonText,
isOpen,
toggleOpen,
onConfirm,
} ) {
const handleConfirm = async () => {
toggleOpen();
onConfirm();
};

const handleCancel = () => {
toggleOpen();
};

return (
<ConfirmDialog
isOpen={ isOpen }
cancelButtonText={ __( 'Cancel' ) }
confirmButtonText={ confirmButtonText }
onCancel={ handleCancel }
onConfirm={ handleConfirm }
size="medium"
>
{ text }
</ConfirmDialog>
);
}

export default ConfirmResetFontSizesDialog;
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
chevronLeft,
chevronRight,
} from '@wordpress/icons';
import { useState } from '@wordpress/element';

/**
* Internal dependencies
Expand All @@ -35,6 +36,7 @@ import Subtitle from '../subtitle';
import { NavigationButtonAsItem } from '../navigation-button';
import { getNewIndexFromPresets } from '../utils';
import ScreenHeader from '../header';
import ConfirmResetFontSizesDialog from './confirm-reset-font-sizes-dialog';

function FontSizeGroup( {
label,
Expand All @@ -43,72 +45,98 @@ function FontSizeGroup( {
handleAddFontSize,
handleResetFontSizes,
} ) {
const [ isResetDialogOpen, setIsResetDialogOpen ] = useState( false );

const toggleResetDialog = () => setIsResetDialogOpen( ! isResetDialogOpen );

const resetDialogText =
origin === 'custom'
? __(
'Are you sure you want to remove all custom font size presets?'
)
: __(
'Are you sure you want to reset all font size presets to their default values?'
);

return (
<VStack spacing={ 4 }>
<HStack justify="space-between" align="center">
<Subtitle level={ 3 }>{ label }</Subtitle>
<FlexItem>
{ origin === 'custom' && (
<Button
label={ __( 'Add font size' ) }
icon={ plus }
size="small"
onClick={ handleAddFontSize }
/>
) }
{ !! handleResetFontSizes && (
<DropdownMenu
trigger={
<Button
size="small"
icon={ moreVertical }
label={ __( 'Menu' ) }
/>
}
>
<DropdownMenuItem onClick={ handleResetFontSizes }>
<DropdownMenuItemLabel>
{ origin === 'custom'
? __( 'Remove font size presets' )
: __( 'Reset font size presets' ) }
</DropdownMenuItemLabel>
</DropdownMenuItem>
</DropdownMenu>
) }
</FlexItem>
</HStack>

{ !! sizes.length && (
<ItemGroup isBordered isSeparated size="large">
{ sizes.map( ( size ) => (
<NavigationButtonAsItem
key={ size.slug }
path={ `/typography/font-sizes/${ origin }/${ size.slug }` }
>
<HStack direction="row">
<FlexItem className="edit-site-font-size__item">
{ size.name }
</FlexItem>
<FlexItem>
<HStack direction="row">
<FlexItem className="edit-site-font-size__item edit-site-font-size__item-value">
{ size.size }
</FlexItem>
<Icon
icon={
isRTL()
? chevronLeft
: chevronRight
}
/>
</HStack>
</FlexItem>
</HStack>
</NavigationButtonAsItem>
) ) }
</ItemGroup>
<>
{ isResetDialogOpen && (
<ConfirmResetFontSizesDialog
text={ resetDialogText }
confirmButtonText={
origin === 'custom' ? __( 'Remove' ) : __( 'Reset' )
}
isOpen={ isResetDialogOpen }
toggleOpen={ toggleResetDialog }
onConfirm={ handleResetFontSizes }
/>
) }
</VStack>
<VStack spacing={ 4 }>
<HStack justify="space-between" align="center">
<Subtitle level={ 3 }>{ label }</Subtitle>
<FlexItem>
{ origin === 'custom' && (
<Button
label={ __( 'Add font size' ) }
icon={ plus }
size="small"
onClick={ handleAddFontSize }
/>
) }
{ !! handleResetFontSizes && (
<DropdownMenu
trigger={
<Button
size="small"
icon={ moreVertical }
label={ __( 'Menu' ) }
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
label={ __( 'Menu' ) }
label={ __( 'Font size presets options' ) }
/>
}
>
<DropdownMenuItem onClick={ toggleResetDialog }>
<DropdownMenuItemLabel>
{ origin === 'custom'
? __( 'Remove font size presets' )
: __( 'Reset font size presets' ) }
</DropdownMenuItemLabel>
</DropdownMenuItem>
</DropdownMenu>
) }
</FlexItem>
</HStack>

{ !! sizes.length && (
<ItemGroup isBordered isSeparated size="large">
{ sizes.map( ( size ) => (
<NavigationButtonAsItem
key={ size.slug }
path={ `/typography/font-sizes/${ origin }/${ size.slug }` }
>
<HStack direction="row">
<FlexItem className="edit-site-font-size__item">
{ size.name }
</FlexItem>
<FlexItem>
<HStack direction="row">
<FlexItem className="edit-site-font-size__item edit-site-font-size__item-value">
{ size.size }
</FlexItem>
<Icon
icon={
isRTL()
? chevronLeft
: chevronRight
}
/>
</HStack>
</FlexItem>
</HStack>
</NavigationButtonAsItem>
) ) }
</ItemGroup>
) }
</VStack>
</>
);
}

Expand Down Expand Up @@ -169,6 +197,7 @@ function FontSizes() {
label={ __( 'Theme' ) }
origin="theme"
sizes={ themeFontSizes }
baseSizes={ baseThemeFontSizes }
handleAddFontSize={ handleAddFontSize }
handleResetFontSizes={
themeFontSizes !== baseThemeFontSizes
Expand All @@ -187,6 +216,7 @@ function FontSizes() {
label={ __( 'Default' ) }
origin="default"
sizes={ defaultFontSizes }
baseSizes={ baseDefaultFontSizes }
handleAddFontSize={ handleAddFontSize }
handleResetFontSizes={
defaultFontSizes !==
Expand Down
Loading