Allow extensions to extend Cart Item Name in Cart and Checkout. (https://github.com/woocommerce/woocommerce-blocks/pull/3807)
* Add validation function * Prefix validateElementOrString with __experimental * Update experimental docs * Typo * Update JS docs * Use an object for applyCheckoutFilter args * Args doesn't need to be an object * Wrap validation function execution in a try/catch block * Only accept strings for the totalLabel filter * Change applyCheckoutFilter signature * Add validation function * Add Product name filter * rebase * update second filter call Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
This commit is contained in:
parent
03551edae8
commit
d107dc89a9
|
@ -6,6 +6,7 @@ import Label from '@woocommerce/base-components/label';
|
||||||
import ProductPrice from '@woocommerce/base-components/product-price';
|
import ProductPrice from '@woocommerce/base-components/product-price';
|
||||||
import ProductName from '@woocommerce/base-components/product-name';
|
import ProductName from '@woocommerce/base-components/product-name';
|
||||||
import { getCurrency } from '@woocommerce/price-format';
|
import { getCurrency } from '@woocommerce/price-format';
|
||||||
|
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import Dinero from 'dinero.js';
|
import Dinero from 'dinero.js';
|
||||||
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
||||||
|
@ -23,7 +24,7 @@ const OrderSummaryItem = ( { cartItem } ) => {
|
||||||
images,
|
images,
|
||||||
low_stock_remaining: lowStockRemaining = null,
|
low_stock_remaining: lowStockRemaining = null,
|
||||||
show_backorder_badge: showBackorderBadge = false,
|
show_backorder_badge: showBackorderBadge = false,
|
||||||
name,
|
name: initialName,
|
||||||
permalink,
|
permalink,
|
||||||
prices,
|
prices,
|
||||||
quantity,
|
quantity,
|
||||||
|
@ -31,8 +32,19 @@ const OrderSummaryItem = ( { cartItem } ) => {
|
||||||
description: fullDescription,
|
description: fullDescription,
|
||||||
item_data: itemData = [],
|
item_data: itemData = [],
|
||||||
variation,
|
variation,
|
||||||
|
extensions,
|
||||||
} = cartItem;
|
} = cartItem;
|
||||||
|
|
||||||
|
const name = __experimentalApplyCheckoutFilter( {
|
||||||
|
filterName: 'itemName',
|
||||||
|
defaultValue: initialName,
|
||||||
|
arg: {
|
||||||
|
extensions,
|
||||||
|
context: 'summary',
|
||||||
|
},
|
||||||
|
validation: ( value ) => typeof value === 'string',
|
||||||
|
} );
|
||||||
|
|
||||||
const currency = getCurrency( prices );
|
const currency = getCurrency( prices );
|
||||||
const regularPriceSingle = Dinero( {
|
const regularPriceSingle = Dinero( {
|
||||||
amount: parseInt( prices.raw_prices.regular_price, 10 ),
|
amount: parseInt( prices.raw_prices.regular_price, 10 ),
|
||||||
|
|
|
@ -16,6 +16,7 @@ import {
|
||||||
ProductSaleBadge,
|
ProductSaleBadge,
|
||||||
} from '@woocommerce/base-components/cart-checkout';
|
} from '@woocommerce/base-components/cart-checkout';
|
||||||
import { getCurrency } from '@woocommerce/price-format';
|
import { getCurrency } from '@woocommerce/price-format';
|
||||||
|
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
||||||
import Dinero from 'dinero.js';
|
import Dinero from 'dinero.js';
|
||||||
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
import { __experimentalApplyCheckoutFilter } from '@woocommerce/blocks-checkout';
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ const getAmountFromRawPrice = ( priceObject, currency ) => {
|
||||||
*/
|
*/
|
||||||
const CartLineItemRow = ( { lineItem = {} } ) => {
|
const CartLineItemRow = ( { lineItem = {} } ) => {
|
||||||
const {
|
const {
|
||||||
name = '',
|
name: initialName = '',
|
||||||
catalog_visibility: catalogVisibility = '',
|
catalog_visibility: catalogVisibility = '',
|
||||||
short_description: shortDescription = '',
|
short_description: shortDescription = '',
|
||||||
description: fullDescription = '',
|
description: fullDescription = '',
|
||||||
|
@ -72,6 +73,7 @@ const CartLineItemRow = ( { lineItem = {} } ) => {
|
||||||
sale_price: '0',
|
sale_price: '0',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
extensions,
|
||||||
} = lineItem;
|
} = lineItem;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -81,6 +83,15 @@ const CartLineItemRow = ( { lineItem = {} } ) => {
|
||||||
isPendingDelete,
|
isPendingDelete,
|
||||||
} = useStoreCartItemQuantity( lineItem );
|
} = useStoreCartItemQuantity( lineItem );
|
||||||
|
|
||||||
|
const name = __experimentalApplyCheckoutFilter( {
|
||||||
|
filterName: 'itemName',
|
||||||
|
defaultValue: initialName,
|
||||||
|
arg: {
|
||||||
|
extensions,
|
||||||
|
context: 'cart',
|
||||||
|
},
|
||||||
|
validation: ( value ) => typeof value === 'string',
|
||||||
|
} );
|
||||||
const currency = getCurrency( prices );
|
const currency = getCurrency( prices );
|
||||||
const regularAmountSingle = Dinero( {
|
const regularAmountSingle = Dinero( {
|
||||||
amount: parseInt( prices.raw_prices.regular_price, 10 ),
|
amount: parseInt( prices.raw_prices.regular_price, 10 ),
|
||||||
|
|
Loading…
Reference in New Issue