2023-07-04 12:08:50 +00:00
|
|
|
/**
|
|
|
|
* External dependencies
|
|
|
|
*/
|
|
|
|
import { __ } from '@wordpress/i18n';
|
2023-08-16 09:05:53 +00:00
|
|
|
import { check, commentContent, shield } from '@wordpress/icons';
|
2023-07-04 12:08:50 +00:00
|
|
|
import { createInterpolateElement } from '@wordpress/element';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Internal dependencies
|
|
|
|
*/
|
|
|
|
import './footer.scss';
|
|
|
|
import IconWithText from '../icon-with-text/icon-with-text';
|
|
|
|
import WooIcon from '../../assets/images/woo-icon.svg';
|
2023-08-31 15:14:06 +00:00
|
|
|
import { MARKETPLACE_HOST } from '../constants';
|
2023-07-04 12:08:50 +00:00
|
|
|
|
|
|
|
const refundPolicyTitle = createInterpolateElement(
|
2023-09-19 09:39:09 +00:00
|
|
|
__( '30-day <a>money-back guarantee</a>', 'woocommerce' ),
|
2023-07-04 12:08:50 +00:00
|
|
|
{
|
|
|
|
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
2023-08-31 15:14:06 +00:00
|
|
|
a: <a href={ MARKETPLACE_HOST + '/refund-policy/' } />,
|
2023-07-04 12:08:50 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
const supportTitle = createInterpolateElement(
|
2023-08-16 09:05:53 +00:00
|
|
|
__( '<a>Get help</a> when you need it', 'woocommerce' ),
|
2023-07-04 12:08:50 +00:00
|
|
|
{
|
|
|
|
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
2023-08-31 15:14:06 +00:00
|
|
|
a: <a href={ MARKETPLACE_HOST + '/docs/' } />,
|
2023-07-04 12:08:50 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
const paymentTitle = createInterpolateElement(
|
2023-08-16 09:05:53 +00:00
|
|
|
__( '<a>Products</a> you can trust', 'woocommerce' ),
|
2023-07-04 12:08:50 +00:00
|
|
|
{
|
|
|
|
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
2023-08-31 15:14:06 +00:00
|
|
|
a: <a href={ MARKETPLACE_HOST + '/products/' } />,
|
2023-07-04 12:08:50 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
function FooterContent(): JSX.Element {
|
|
|
|
return (
|
[wccom-17942] Only showing feedback snackbar when content of in-app marketplace has finished loading. Making sure snackbar is fixed position, so it's visible wherever you are on the page.
- `ProductListContextProvider` provides `setIsLoading` function as well as `isLoading`.
- `Discover` uses these values from context, instead of keeping a loading state in itself.
- `FeedbackModal` calls `maybSetTimeout` when `isLoading` changes. If `isLoading` isn't truthy, and snackbar hasn't already rendered, it sets a timeout of 5 seconds to show it.
- Removed wrapping <WooFooterItem> from around Footer component, so it's no longer a child of the WooCommerce Admin `.woocommerce-layout__footer` footer.
- Removed the `position: relative` from `.woocommerce-layout__footer`. It needs to be `position: fixed`.
- Added FooterContent component to Footer, to allow the layout we want.
- Changed use of context. This now only has states for the selected tab and loading state.
- We use this context in `Tabs` and `Content` to keep track of which tab is selected, and set the selected tab.
- We also use it in `Discover` and `Extensions`, which both report loading state to the context. This allows us to use it to only render the snackbar when loading is complete.
- Extensions: moved `productList` and `setProductList` and logic for getting product list from the context provider to a state in this component. We don't need to share the list of products in the context.
- Renamed `ProductListContext`, `ProductListContextProvider` and `productListContextValue` to more generic `MarketplaceContext`, `MarketplaceContextProvider` and `marketplaceContextValue`.
- Renamed a constant and created constants for API paths.
- Only shows snackbar after content has loaded, and after a timeout. We set a date `marketplace_redesign_2023_last_shown_date` in local storage to ensure we only show one snackbar.
2023-08-23 15:49:36 +00:00
|
|
|
<div className="woocommerce-marketplace__footer-content">
|
2023-07-04 12:08:50 +00:00
|
|
|
<h2 className="woocommerce-marketplace__footer-title">
|
|
|
|
{ __(
|
2023-08-16 09:05:53 +00:00
|
|
|
'Hundreds of vetted products and services. Unlimited potential.',
|
2023-07-04 12:08:50 +00:00
|
|
|
'woocommerce'
|
|
|
|
) }
|
|
|
|
</h2>
|
|
|
|
<div className="woocommerce-marketplace__footer-columns">
|
|
|
|
<IconWithText
|
|
|
|
icon={ check }
|
|
|
|
title={ refundPolicyTitle }
|
|
|
|
description={ __(
|
2023-08-16 09:05:53 +00:00
|
|
|
"If you change your mind within 30 days of your purchase, we'll give you a full refund — hassle-free.",
|
2023-07-04 12:08:50 +00:00
|
|
|
'woocommerce'
|
|
|
|
) }
|
|
|
|
/>
|
|
|
|
<IconWithText
|
|
|
|
icon={ commentContent }
|
|
|
|
title={ supportTitle }
|
|
|
|
description={ __(
|
2023-08-16 09:05:53 +00:00
|
|
|
'With detailed documentation and a global support team, help is always available if you need it.',
|
2023-07-04 12:08:50 +00:00
|
|
|
'woocommerce'
|
|
|
|
) }
|
|
|
|
/>
|
|
|
|
<IconWithText
|
2023-08-16 09:05:53 +00:00
|
|
|
icon={ shield }
|
2023-07-04 12:08:50 +00:00
|
|
|
title={ paymentTitle }
|
|
|
|
description={ __(
|
2023-08-16 09:05:53 +00:00
|
|
|
'Everything in the Marketplace has been built by our own team or by our trusted partners, so you can be sure of its quality.',
|
2023-07-04 12:08:50 +00:00
|
|
|
'woocommerce'
|
|
|
|
) }
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div className="woocommerce-marketplace__footer-logo">
|
|
|
|
<img src={ WooIcon } alt="Woo Logo" aria-hidden="true" />
|
|
|
|
<span>{ __( 'Woo Marketplace', 'woocommerce' ) }</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default function Footer(): JSX.Element {
|
|
|
|
return (
|
[wccom-17942] Only showing feedback snackbar when content of in-app marketplace has finished loading. Making sure snackbar is fixed position, so it's visible wherever you are on the page.
- `ProductListContextProvider` provides `setIsLoading` function as well as `isLoading`.
- `Discover` uses these values from context, instead of keeping a loading state in itself.
- `FeedbackModal` calls `maybSetTimeout` when `isLoading` changes. If `isLoading` isn't truthy, and snackbar hasn't already rendered, it sets a timeout of 5 seconds to show it.
- Removed wrapping <WooFooterItem> from around Footer component, so it's no longer a child of the WooCommerce Admin `.woocommerce-layout__footer` footer.
- Removed the `position: relative` from `.woocommerce-layout__footer`. It needs to be `position: fixed`.
- Added FooterContent component to Footer, to allow the layout we want.
- Changed use of context. This now only has states for the selected tab and loading state.
- We use this context in `Tabs` and `Content` to keep track of which tab is selected, and set the selected tab.
- We also use it in `Discover` and `Extensions`, which both report loading state to the context. This allows us to use it to only render the snackbar when loading is complete.
- Extensions: moved `productList` and `setProductList` and logic for getting product list from the context provider to a state in this component. We don't need to share the list of products in the context.
- Renamed `ProductListContext`, `ProductListContextProvider` and `productListContextValue` to more generic `MarketplaceContext`, `MarketplaceContextProvider` and `marketplaceContextValue`.
- Renamed a constant and created constants for API paths.
- Only shows snackbar after content has loaded, and after a timeout. We set a date `marketplace_redesign_2023_last_shown_date` in local storage to ensure we only show one snackbar.
2023-08-23 15:49:36 +00:00
|
|
|
<div className="woocommerce-marketplace__footer">
|
2023-07-04 12:08:50 +00:00
|
|
|
<FooterContent />
|
[wccom-17942] Only showing feedback snackbar when content of in-app marketplace has finished loading. Making sure snackbar is fixed position, so it's visible wherever you are on the page.
- `ProductListContextProvider` provides `setIsLoading` function as well as `isLoading`.
- `Discover` uses these values from context, instead of keeping a loading state in itself.
- `FeedbackModal` calls `maybSetTimeout` when `isLoading` changes. If `isLoading` isn't truthy, and snackbar hasn't already rendered, it sets a timeout of 5 seconds to show it.
- Removed wrapping <WooFooterItem> from around Footer component, so it's no longer a child of the WooCommerce Admin `.woocommerce-layout__footer` footer.
- Removed the `position: relative` from `.woocommerce-layout__footer`. It needs to be `position: fixed`.
- Added FooterContent component to Footer, to allow the layout we want.
- Changed use of context. This now only has states for the selected tab and loading state.
- We use this context in `Tabs` and `Content` to keep track of which tab is selected, and set the selected tab.
- We also use it in `Discover` and `Extensions`, which both report loading state to the context. This allows us to use it to only render the snackbar when loading is complete.
- Extensions: moved `productList` and `setProductList` and logic for getting product list from the context provider to a state in this component. We don't need to share the list of products in the context.
- Renamed `ProductListContext`, `ProductListContextProvider` and `productListContextValue` to more generic `MarketplaceContext`, `MarketplaceContextProvider` and `marketplaceContextValue`.
- Renamed a constant and created constants for API paths.
- Only shows snackbar after content has loaded, and after a timeout. We set a date `marketplace_redesign_2023_last_shown_date` in local storage to ensure we only show one snackbar.
2023-08-23 15:49:36 +00:00
|
|
|
</div>
|
2023-07-04 12:08:50 +00:00
|
|
|
);
|
|
|
|
}
|