PriceAdjustments
These talons provide logic for components that may adjust the total price in a shopping cart.
Functions
- useCouponCode(props) ⇒ CouponCodeTalonProps
- This talon contains the logic for a coupon code form component. It performs effects and returns props data for rendering the component. - This talon performs the following effects: - Fetch all coupons associated with the cart
- Manage the updating state of the cart while a coupon is being applied or removed
 
- useShippingForm(props) ⇒ ShippingFormTalonProps
- Contains logic for a shipping form component. It performs effects and returns props data related to rendering a shipping address form. - This talon performs the following effects: - Manage the updating state of the cart while the mutation for setting the shipping address is in flight
 
- useShippingMethods(props) ⇒ ShippingMethodsTalonProps
- Contains logic for a shipping method selector component. It performs effect and returns props data used to render that component. - This talon performs the following effects: - Set the shipping form visibility value based on the shipping methods associated with the cart
 
- useShippingRadios(props) ⇒ ShippingRadiosTalonProps
- Contains logic for a component that renders a radio selector for shipping. It performs effects and returns props data used for rendering that component. - This talon performs the following effects: - Sets the value of the shipping method to a default value if there is no current method selected
- Manage the updating state of the cart while a shipping method is being applied
 
Typedefs
- CouponCodeMutations : Object
- GraphQL mutations for a cart's coupon code. This is a type used by the useCouponCode talon. 
- CouponCodeQueries : Object
- GraphQL queries for a cart's coupon code. This is a type used by the useCouponCode talon. 
- CouponCodeTalonProps : Object
- Object type returned by the useCouponCode talon. It provides props data to use when rendering a coupon code component. 
- SelectShippingFields : Object
- Values for the select input fields on the shipping form. This is a prop used by the useShippingForm talon. 
- ShippingFormMutations : Object
- GraphQL mutations for the shipping form. This is a type used by the useShippingForm talon. 
- ShippingFormQueries : Object
- GraphQL queries for the shipping form. This is a type used by the useShippingForm talon. 
- ShippingFormTalonProps : Object
- Object type returned by the useShippingForm talon. It provides props data to use when rendering a shipping form component. 
- ShippingMethodsQueries : Object
- GraphQL queries for shipping methods. This is a type used in the useShippingMethods talon. 
- ShippingMethodsTalonProps : Object
- Object type returned by the useShippingMethods talon. It provides prop data to use when rendering shipping methods. 
- ShippingRadiosMutations : Object
- GraphQL mutations for a shipping radio selector component. This is a type used by the useShippingRadios talon. 
- ShippingRadiosTalonProps : Object
- Object type returned by the useShippingRadios talon. It provides data to use when rendering a radio selector for shipping methods. 
This talon contains the logic for a coupon code form component. It performs effects and returns props data for rendering the component.
This talon performs the following effects:
- Fetch all coupons associated with the cart
- Manage the updating state of the cart while a coupon is being applied or removed
Returns: Parameters
| Name | Type | Description | 
|---|---|---|
| props | Object | |
| props.setIsCartUpdating | function | Callback function for setting the update state for the cart. | 
| props.mutations | GraphQL mutations for a cart's coupon code. | |
| props.queries | GraphQL queries for a cart's coupon code. | 
Example (Importing into your project)
Copied to your clipboardimport { useCouponCode } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/CouponCode/useCouponCode';
Contains logic for a shipping form component. It performs effects and returns props data related to rendering a shipping address form.
This talon performs the following effects:
- Manage the updating state of the cart while the mutation for setting the shipping address is in flight
Returns: Parameters
| Name | Type | Description | 
|---|---|---|
| props | Object | |
| props.selectedValues | The values from the select input fields in the shipping form | |
| props.setIsCartUpdating | function | Callback function for setting the update state for the cart. | 
| props.mutations | GraphQL mutations for the shipping form. | |
| props.queries | GraphQL queries for the shipping form. | 
Example (Importing into your project)
Copied to your clipboardimport { useShippingForm } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingForm';
Contains logic for a shipping method selector component. It performs effect and returns props data used to render that component.
This talon performs the following effects:
- Set the shipping form visibility value based on the shipping methods associated with the cart
Returns: Parameters
| Name | Type | Description | 
|---|---|---|
| props | Object | |
| props.queries | GraphQL queries for shipping methods | 
Example (Importing into your project)
Copied to your clipboardimport { useShippingMethods } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingMethods';
Contains logic for a component that renders a radio selector for shipping. It performs effects and returns props data used for rendering that component.
This talon performs the following effects:
- Sets the value of the shipping method to a default value if there is no current method selected
- Manage the updating state of the cart while a shipping method is being applied
Returns: Parameters
| Name | Type | Description | 
|---|---|---|
| props | Object | |
| props.setIsCartUpdating | function | Function for setting the updating state of the shopping cart | 
| props.selectedShippingMethod | String | A serialized string of  ${carrier-code}|${method-code}, eg.usps|priority. | 
| props.shippingMethods | Array.<Object> | An array of available shipping methods | 
| props.mutations | GraphQL mutations for a shipping radio selector component. | 
Example (Importing into your project)
Copied to your clipboardimport { useShippingRadios } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingRadios';
GraphQL mutations for a cart's coupon code. This is a type used by the useCouponCode talon.
See: CouponCode.js
for the queries used Venia
Properties
| Name | Type | Description | 
|---|---|---|
| applyCouponMutation | GraphQLAST | Mutation for applying a coupon code to a cart. | 
| removeCouponMutation | GraphQLAST | Mutation for removing a coupon code from a cart. | 
GraphQL queries for a cart's coupon code. This is a type used by the useCouponCode talon.
See: CouponCode.js
for the queries used Venia
Properties
| Name | Type | Description | 
|---|---|---|
| getAppliedCouponsQuery | GraphQLAST | Query to fetch the currently applied coupons for a cart. | 
Object type returned by the useCouponCode talon. It provides props data to use when rendering a coupon code component.
Properties
| Name | Type | Description | 
|---|---|---|
| applyingCoupon | boolean | True if a coupon is currently being applied. False otherwise. | 
| data | Object | Data returned from the  getAppliedCouponsQuery. | 
| errorMessage | String | If GraphQL error occurs, this value is set. | 
| fetchError | Object | The error data object returned by a GraphQL query. | 
| handleApplyCoupon | function | Function to call for handling the application of a coupon code to a cart. | 
| handleApplyCouponOnEnter | function | Function to call for handling the application of a coupon code to a cart on enter key Press. | 
| handleRemoveCoupon | function | Function to call for handling the removal of a coupon code from a cart | 
| handleRemoveCouponOnEnter | function | Function to call for handling the removal of a coupon code from a cart on enter key press. | 
| removingCoupon | boolean | True if a coupon code is currently being removed. False otherwise. | 
Values for the select input fields on the shipping form. This is a prop used by the useShippingForm talon.
Properties
| Name | Type | Description | 
|---|---|---|
| country | String | Country shipping destination | 
| region | String | Country's region shipping destination | 
| zip | String | Country's zip code shipping destination | 
GraphQL mutations for the shipping form. This is a type used by the useShippingForm talon.
See: shippingForm.js
for the query used in Venia
Properties
| Name | Type | Description | 
|---|---|---|
| setShippingAddressMutation | GraphQLAST | Mutation for setting the shipping address on a cart | 
GraphQL queries for the shipping form. This is a type used by the useShippingForm talon.
See: shippingMethods.gql.js
for the query used in Venia
Properties
| Name | Type | Description | 
|---|---|---|
| shippingMethodsQuery | GraphQLAST | Query for getting data about available shipping methods | 
Object type returned by the useShippingForm talon. It provides props data to use when rendering a shipping form component.
Properties
| Name | Type | Description | 
|---|---|---|
| formErrors | Array.<Error> | A list of form errors | 
| handleOnSubmit | function | Callback function to handle form submissions | 
| handleOnSubmitKeyPress | function | Callback function to handle form submissions on enter key | 
| handleZipChange | function | Callback function to handle a zip code change | 
| isSetShippingLoading | boolean | True if the cart shipping information is being set. False otherwise. | 
GraphQL queries for shipping methods. This is a type used in the useShippingMethods talon.
See: shippingMethods.gql.js
for the queries used in Venia
Properties
| Name | Type | Description | 
|---|---|---|
| getShippingMethodsQuery | GraphQLAST | Query to get the available shipping methods. | 
Object type returned by the useShippingMethods talon. It provides prop data to use when rendering shipping methods.
Properties
| Name | Type | Description | 
|---|---|---|
| hasMethods | number | Provides the number of shipping methods available. Can be used as a boolean value since having no shipping methods would return 0. | 
| isShowingForm | boolean | True if the form should be shown. False otherwise. | 
| selectedShippingFields | Values for the select input fields on the shipping form | |
| selectedShippingMethod | String | A serialized string of  ${carrier-code}|${method-code}, eg.usps|priority. | 
| shippingMethods | Array.<Object> | A list of available shipping methods based on the primary shipping address | 
| showForm | function | A function that sets the  isShowingFormvalue to true. | 
| showFormOnEnter | function | A function that sets the  isShowingFormvalue to true. | 
GraphQL mutations for a shipping radio selector component. This is a type used by the useShippingRadios talon.
Properties
| Name | Type | Description | 
|---|---|---|
| setShippingMethodMutation | GraphQLAST | Mutation for setting the shipping method on a cart. | 
Object type returned by the useShippingRadios talon. It provides data to use when rendering a radio selector for shipping methods.
Properties
| Name | Type | Description | 
|---|---|---|
| formattedShippingMethods | Object | Shipping method data that has been formatted. | 
| handleShippingSelection | function | Callback function for handling shipping selection form updates. | 
Source Code: pwa-studio/packages/peregrine/lib/talons/CartPage/PriceAdjustments/CouponCode/useCouponCode.js
Examples
useCouponCode()
Copied to your clipboardimport React from 'react'import { useCouponCode } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/CouponCode/useCouponCode';import {GET_APPLIED_COUPONS,APPLY_COUPON_MUTATION,REMOVE_COUPON_MUTATION} from './myCouponCodeQueries'const MyCouponCode = props => {const talonProps = useCouponCode({setIsCartUpdating: props.setIsCartUpdating,mutations: {applyCouponMutation: APPLY_COUPON_MUTATION,removeCouponMutation: REMOVE_COUPON_MUTATION},queries: {getAppliedCouponsQuery: GET_APPLIED_COUPONS}});const {applyingCoupon,data,errorMessage,fetchError,handleApplyCoupon,handleRemoveCoupon,removingCoupon} = talonProps;if (!data) {return null;}if (fetchError) {return 'Something went wrong. Refresh and try again.';}return (// JSX for rendering a Coupon Code form and applied codes using props from the talon)}export default MyCouponCode
Shipping Methods
Copied to your clipboardimport React from 'react';import { useShippingMethods } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingMethods';import { useShippingForm } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingForm';import { useShippingRadios } from '@magento/peregrine/lib/talons/CartPage/PriceAdjustments/ShippingMethods/useShippingRadios';import { GET_SHIPPING_METHODS, SET_SHIPPING_ADDRESS_MUTATION, SET_SHIPPING_METHOD_MUTATION } from './myShippingMethods.gql';const MyShippingMethods = props => {const { setIsCartUpdating } = props;const shippingMethodsProps = useShippingMethods({queries: GET_SHIPPING_METHODS});const {hasMethods,isShowingForm,selectedShippingFields,selectedShippingMethod,shippingMethods,showForm} = shippingMethodsProps;const shippingFormProps = useShippingForm({selectedValues: selectedShippingFields,setIsCartUpdating,mutations: {setShippingAddressMutation: SET_SHIPPING_ADDRESS_MUTATION},queries: {shippingMethodsQuery: GET_SHIPPING_METHODS}});const {formErrors,handleOnSubmit,handleZipChange,isSetShippingLoading} = shippingFormProps;const shippingRadioProps = useShippingRadios({setIsCartUpdating,selectedShippingMethod,shippingMethods,mutations: {setShippingMethodMutation: SET_SHIPPING_METHOD_MUTATION}});const {formattedShippingMethods,handleShippingSelection} = shippingRadioProps;return (// JSX for rendering shipping methods form using props from the shipping methods talons)}export default MyShippingMethods



