Launch Your Store: Add status dropdown functionality (#45606)

* Add basic wp dropdown component

* use getAdminLink

* Add styling based on state

* Add changefile(s) from automation for the following project(s): woocommerce

* update store page only text

* Add better 'for now' comment

* translate links

* remove private repo link from comment

* lint

---------

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Paul Sealock 2024-03-18 22:43:02 +13:00 committed by GitHub
parent 63a0d5e57c
commit 12c1a6d206
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 89 additions and 7 deletions

View File

@ -100,7 +100,7 @@ export const Header = ( { sections, isEmbedded = false, query } ) => {
}
}, [ isEmbedded, sections, siteTitle ] );
const { isLoading, launchStatus, launchYourStoreEnabled } =
const { isLoading, launchYourStoreEnabled, comingSoon, storePagesOnly } =
useLaunchYourStore();
const showLaunchYourStoreStatus = launchYourStoreEnabled && ! isLoading;
@ -137,7 +137,10 @@ export const Header = ( { sections, isEmbedded = false, query } ) => {
</Text>
{ showLaunchYourStoreStatus && (
<LaunchYourStoreStatus status={ launchStatus } />
<LaunchYourStoreStatus
comingSoon={ comingSoon }
storePagesOnly={ storePagesOnly }
/>
) }
<WooHeaderItem.Slot fillProps={ { isEmbedded, query } } />

View File

@ -1,21 +1,76 @@
/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { Icon, moreVertical } from '@wordpress/icons';
import { Dropdown, Button, MenuGroup, MenuItem } from '@wordpress/components';
import { getAdminLink } from '@woocommerce/settings';
import classnames from 'classnames';
/**
* Internal dependencies
*/
import './style.scss';
export const LaunchYourStoreStatus = () => {
export const LaunchYourStoreStatus = ( { comingSoon, storePagesOnly } ) => {
const isComingSoon = comingSoon && comingSoon === 'yes';
const isStorePagesOnly =
isComingSoon && storePagesOnly && storePagesOnly === 'yes';
const comingSoonText = isStorePagesOnly
? __( 'Coming soon - Store pages only', 'woocommerce' )
: __( 'Coming soon', 'woocommerce' );
const liveText = __( 'Live', 'woocommerce' );
const dropdownText = isComingSoon ? comingSoonText : liveText;
return (
<div className="woocommerce-lys-status">
<div className="woocommerce-lys-status-pill-wrapper">
<div className="woocommerce-lys-status-pill">
<span>Coming soon</span>
<Dropdown
className="woocommerce-lys-status-dropdown"
focusOnMount={ true }
popoverProps={ { placement: 'bottom-start' } }
renderToggle={ ( { isOpen, onToggle } ) => (
<Button onClick={ onToggle } aria-expanded={ isOpen }>
<div
className={ classnames(
'woocommerce-lys-status-pill',
{ 'is-live': ! isComingSoon }
) }
>
<span>{ dropdownText }</span>
<Icon icon={ moreVertical } size={ 18 } />
</div>
</Button>
) }
renderContent={ () => (
<>
<MenuGroup>
<MenuItem
href={ getAdminLink(
'admin.php?page=wc-settings'
) }
>
{ __(
'Manage site visibility',
'woocommerce'
) }
</MenuItem>
{ isComingSoon && (
<MenuItem
href={ getAdminLink(
// For now, waiting on the actual link.
'admin.php?page=wc-settings'
) }
>
{ __(
'Customize "Coming soon" page',
'woocommerce'
) }
</MenuItem>
) }
</MenuGroup>
</>
) }
/>
</div>
</div>
);

View File

@ -18,4 +18,24 @@
line-height: 20px;
border-radius: 4px;
height: 24px;
&.is-live {
background-color: #e6f2e8;
color: #005c12;
&::before {
content: '';
width: 6px;
height: 6px;
border-radius: 3px;
background-color: #005c12;
margin-right: 4px;
}
}
}
.woocommerce-lys-status-dropdown .components-button {
padding: 0;
height: auto;
border-radius: 4px;
}

View File

@ -0,0 +1,4 @@
Significance: patch
Type: update
Comment: Updates unreleased component from launch your store