2021-01-11 12:12:26 +00:00
|
|
|
/**
|
|
|
|
* External dependencies
|
|
|
|
*/
|
|
|
|
import { createSlotFill } from 'wordpress-components';
|
2021-01-28 14:24:01 +00:00
|
|
|
import { Children, cloneElement } from '@wordpress/element';
|
2021-01-11 12:12:26 +00:00
|
|
|
import classnames from 'classnames';
|
|
|
|
import { CURRENT_USER_IS_ADMIN } from '@woocommerce/block-settings';
|
2021-01-20 20:35:53 +00:00
|
|
|
import { useStoreCart } from '@woocommerce/base-hooks';
|
2021-01-11 12:12:26 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Internal dependencies
|
|
|
|
*/
|
|
|
|
import BlockErrorBoundary from '../error-boundary';
|
|
|
|
|
|
|
|
const slotName = '__experimentalOrderMeta';
|
|
|
|
const { Fill, Slot: OrderMetaSlot } = createSlotFill( slotName );
|
|
|
|
|
|
|
|
function ExperimentalOrderMeta( { children } ) {
|
|
|
|
return (
|
|
|
|
<Fill>
|
2021-01-20 20:35:53 +00:00
|
|
|
{ ( fillProps ) => {
|
|
|
|
return Children.map( children, ( fill ) => {
|
|
|
|
return (
|
|
|
|
<BlockErrorBoundary
|
|
|
|
renderError={
|
|
|
|
CURRENT_USER_IS_ADMIN ? null : () => null
|
|
|
|
}
|
|
|
|
>
|
|
|
|
{ cloneElement( fill, fillProps ) }
|
|
|
|
</BlockErrorBoundary>
|
|
|
|
);
|
|
|
|
} );
|
|
|
|
} }
|
2021-01-11 12:12:26 +00:00
|
|
|
</Fill>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function Slot( { className } ) {
|
2021-01-20 20:35:53 +00:00
|
|
|
// We need to pluck out receiveCart.
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
|
|
const { extensions, receiveCart, ...cart } = useStoreCart();
|
2021-01-11 12:12:26 +00:00
|
|
|
return (
|
|
|
|
<OrderMetaSlot
|
|
|
|
bubblesVirtually
|
|
|
|
className={ classnames(
|
|
|
|
className,
|
|
|
|
'wc-block-components-order-meta'
|
|
|
|
) }
|
2021-01-20 20:35:53 +00:00
|
|
|
fillProps={ { extensions, cart } }
|
2021-01-11 12:12:26 +00:00
|
|
|
/>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
ExperimentalOrderMeta.Slot = Slot;
|
|
|
|
|
|
|
|
export default ExperimentalOrderMeta;
|