ProductListing
These talons provide logic for components that render products in a shopping cart and forms that update the quantity or configuration for each product.
Functions
- useProductListing(props) ⇒
ProductListingTalonProps
This talon contains logic for a component that renders a list of products for a cart. It performs effects and returns prop data to render the component on a cart page.
This talon performs the following effects:
- Fetch product listing data associated with the cart
- Log any GraphQL errors to the console
- useProduct(props) ⇒
ProductTalonProps
This talon contains logic for a product component used in a product listing component. It performs effects and returns prop data for that component.
This talon performs the following effects:
- Manage the updating state of the cart while a product is being updated or removed
- useEditModal() ⇒
EditModalTalonProps
This talon contains logic for a product edit modal used on a cart page. It returns prop data for rendering an interactive modal component.
- deriveOptionSelectionsFromProduct(props) ⇒
ProductFormTalonProps
This talon contains logic for a product edit form. It performs effects and returns data for rendering the component inside a modal container.
This talon performs the following effects:
- Manage the updating state of the cart while form data is being saved
- Set the variant price on a product depending on the product's options
Typedefs
- ProductListingQueries :
Object
GraphQL queries for getting product listing data. This is a type used in the useProductListing talon.
- ProductListingTalonProps :
Object
Object type returned by the useProductListing talon. It provides props data for a component that renders a product list.
- ProductMutations :
Object
GraphQL mutations for a product in a cart. This is a type used by the useProduct talon.
- ProductTalonProps :
Object
Object type returned by the useProduct talon. It provides prop data for rendering a product component on a cart page.
- ProductItem :
Object
Data about a product item in the cart. This type is used in the ProductTalonProps type returned by the useProduct talon.
- QuantityTalonProps :
Object
Object type returned by the useQuantityStepper talon. It provides props data for a quantity UI component.
- EditModalTalonProps :
Object
Object type returned by the useEditModal talon. It provides props data for rendering an edit modal component.
- ProductFormTalonProps :
Object
Object type returned by the useProductForm talon. It provides props data for a product form UI component inside a modal.
This talon contains logic for a component that renders a list of products for a cart. It performs effects and returns prop data to render the component on a cart page.
This talon performs the following effects:
- Fetch product listing data associated with the cart
- Log any GraphQL errors to the console
Returns:
Parameters
Name | Type | Description |
---|---|---|
props | Object | |
props.queries | GraphQL queries for getting product listing data. |
Example (Importing into your project)
Copied to your clipboardimport { useProductListing } from '@magento/peregrine/lib/talons/CartPage/ProductListing/useProductListing';
This talon contains logic for a product component used in a product listing component. It performs effects and returns prop data for that component.
This talon performs the following effects:
- Manage the updating state of the cart while a product is being updated or removed
Returns:
Parameters
Name | Type | Description |
---|---|---|
props | Object | |
props.item | Product item data | |
props.operations | GraphQL mutations for a product in a cart | |
props.setActiveEditItem | function | Function for setting the actively editing item |
props.setIsCartUpdating | function | Function for setting the updating state of the cart |
Example (Importing into your project)
Copied to your clipboardimport { useProduct } from '@magento/peregrine/lib/talons/CartPage/ProductListing/useProduct';
This talon contains logic for a product edit modal used on a cart page. It returns prop data for rendering an interactive modal component.
Returns:
Example (Importing into your project)
Copied to your clipboardimport { useEditModal } from '@magento/peregrine/lib/talons/CartPage/ProductListing/EditModal/useEditModal';
This talon contains logic for a product edit form. It performs effects and returns data for rendering the component inside a modal container.
This talon performs the following effects:
- Manage the updating state of the cart while form data is being saved
- Set the variant price on a product depending on the product's options
Returns:
Parameters
Name | Type | Description |
---|---|---|
props | Object | |
props.cartItem | Object | The cart item to configure on the form |
props.getConfigurableOptionsQuery | GraphQLDocument | GraphQL query to get the configurable options for a product. |
props.setIsCartUpdating | function | Function for setting the updating state for the shopping cart. |
props.setVariantPrice | function | Function for setting the variant price on a product. |
props.updateConfigurableOptionsMutation | GraphQLDocument | GraphQL mutation for updating the configurable options for a product. |
props.updateQuantityMutation | GraphQLDocument | GraphQL mutation for updating the quantity of a product in a cart. |
props.setActiveEditItem | function | Function for setting the actively editing item. |
Example (Importing into your project)
Copied to your clipboardimport { useProductForm } from '@magento/peregrine/lib/talons/CartPage/ProductListing/EditModal/useProductForm';
GraphQL queries for getting product listing data. This is a type used in the useProductListing talon.
See: productListingFragments.js
for the queries used in Venia
Properties
Name | Type | Description |
---|---|---|
getProductListingQuery | GraphQLDocument | Query to get the product list for a cart |
Object type returned by the useProductListing talon. It provides props data for a component that renders a product list.
Properties
Name | Type | Description |
---|---|---|
activeEditItem | Object | The product item currently being edited |
isLoading | boolean | True if the query to get the product listing is still in progress. False otherwise. |
error | Error | null | An array of graphql errors |
items | Array.<Object> | A list of products in a cart |
setActiveEditItem | function | Function for setting the current item to edit |
GraphQL mutations for a product in a cart. This is a type used by the useProduct talon.
See: product.js
to see the mutations used in Venia
Properties
Name | Type | Description |
---|---|---|
removeItemMutation | GraphQLDocument | Mutation for removing an item in a cart |
updateItemQuantityMutation | GraphQLDocument | Mutation for updating the item quantity in a cart |
Object type returned by the useProduct talon. It provides prop data for rendering a product component on a cart page.
Properties
Name | Type | Description |
---|---|---|
errorMessage | String | Error message from an operation perfored on a cart product. |
handleEditItem | function | Function to use for handling when a product is modified. |
handleRemoveFromCart | function | Function to use for handling the removal of a cart product. |
handleUpdateItemQuantity | function | Function to use for handling updates to the product quantity in a cart. |
isEditable | boolean | True if a cart product is editable. False otherwise. |
product | Cart product data |
Data about a product item in the cart. This type is used in the ProductTalonProps type returned by the useProduct talon.
Properties
Name | Type | Description |
---|---|---|
currency | String | The currency associated with the cart product |
image | String | The url for the cart product image |
name | String | The name of the product |
options | Array.<Object> | A list of configurable option objects |
quantity | number | The quantity associated with the cart product |
unitPrice | number | The product's unit price |
urlKey | String | The product's url key |
urlSuffix | String | The product's url suffix |
Object type returned by the useQuantityStepper talon. It provides props data for a quantity UI component.
Properties
Name | Type | Description |
---|---|---|
isDecrementDisabled | boolean | True if decrementing should be disabled |
isIncrementDisabled | boolean | True if incrementing should be disabled |
handleBlur | function | Callback function for handling a blur event on a component |
handleDecrement | function | Callback function for handling a quantity decrement event |
handleIncrement | function | Callback function for handling an increment event |
maskInput | function | Function for masking a value when decimal values are allowed |
Object type returned by the useEditModal talon. It provides props data for rendering an edit modal component.
Properties
Name | Type | Description |
---|---|---|
setVariantPrice | function | Function for setting a product's variant price. |
variantPrice | Object | The variant price for a product. See Money object. |
Object type returned by the useProductForm talon. It provides props data for a product form UI component inside a modal.
Properties
Name | Type | Description |
---|---|---|
configItem | Object | Cart item to configure |
errors | Array.<Error> | An array of form errors resulting from a configuration or quantity value |
handleOptionSelection | function | A callback function handling an option selection event |
handleSubmit | function | A callback function for handling form submission |
isLoading | boolean | True if the form is loading data. False otherwise. |
isSaving | boolean | True if the form is saving data. False otherwise. |
isDialogOpen | boolean | True if the form is visible. False otherwise. |
handleClose | function | A callback function for handling form closing |
configurableThumbnailSource | String | A string indicating which thumbnail should be used for configurable products |
Source Code: pwa-studio/packages/peregrine/lib/talons/CartPage/ProductListing/useProductListing.js
Examples
useProductListing()
Copied to your clipboardimport React from 'react';import { useProductListing } from '@magento/peregrine/lib/talons/CartPage/ProductListing/useProductListing';import { GET_PRODUCT_LISTING } from './myProductListing.gql';const MyProductListing = props => {const { setIsCartUpdating } = props;const talonProps = useProductListing({queries: {getProductListing: GET_PRODUCT_LISTING}});const { activeEditItem, isLoading, items, setActiveEditItem } = talonProps;if (isLoading) {return <div>Loading...</div>;}return (// JSX that renders the list of products in a cart using the talon props)}export default MyProductListing;