@graphcommerce/magento-cart-items 2.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Api/CartItem.gql.ts +14 -0
- package/Api/CartItem.graphql +34 -0
- package/Api/CartItems.gql.ts +4 -0
- package/Api/CartItems.graphql +8 -0
- package/CHANGELOG.md +119 -0
- package/CartItem/CartItem.tsx +210 -0
- package/CartItem/CartItemOptionDropdown.tsx +55 -0
- package/CartItems/CartItems.tsx +28 -0
- package/CartItems/CartItemsQuery.gql.ts +12 -0
- package/CartItems/CartItemsQuery.graphql +5 -0
- package/DeliveryLabel/DeliveryLabel.tsx +67 -0
- package/RemoveItemFromCart/RemoveItemFromCart.gql.ts +13 -0
- package/RemoveItemFromCart/RemoveItemFromCart.graphql +10 -0
- package/RemoveItemFromCart/RemoveItemFromCartFab.tsx +27 -0
- package/UpdateItemQuantity/UpdateItemQuantity.gql.ts +14 -0
- package/UpdateItemQuantity/UpdateItemQuantity.graphql +12 -0
- package/UpdateItemQuantity/UpdateItemQuantity.tsx +38 -0
- package/index.ts +20 -0
- package/package.json +41 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import * as Types from '@graphcommerce/graphql';
|
|
3
|
+
|
|
4
|
+
export type CartItem_BundleCartItem_Fragment = { uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, bundle_options: Array<Types.Maybe<{ uid: string, label: string, type: string, values: Array<Types.Maybe<{ uid: string, label: string, quantity: number, price: number }>> }>> };
|
|
5
|
+
|
|
6
|
+
export type CartItem_ConfigurableCartItem_Fragment = { uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, configurable_options: Array<Types.Maybe<{ configurable_product_option_uid: string, configurable_product_option_value_uid: string, option_label: string, value_label: string }>> };
|
|
7
|
+
|
|
8
|
+
export type CartItem_DownloadableCartItem_Fragment = { uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, links?: Types.Maybe<Array<Types.Maybe<{ uid: string, price?: Types.Maybe<number>, sample_url?: Types.Maybe<string>, title?: Types.Maybe<string> }>>>, samples?: Types.Maybe<Array<Types.Maybe<{ sample_url?: Types.Maybe<string>, sort_order?: Types.Maybe<number>, title?: Types.Maybe<string> }>>> };
|
|
9
|
+
|
|
10
|
+
export type CartItem_SimpleCartItem_Fragment = { uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> };
|
|
11
|
+
|
|
12
|
+
export type CartItem_VirtualCartItem_Fragment = { uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> };
|
|
13
|
+
|
|
14
|
+
export type CartItemFragment = CartItem_BundleCartItem_Fragment | CartItem_ConfigurableCartItem_Fragment | CartItem_DownloadableCartItem_Fragment | CartItem_SimpleCartItem_Fragment | CartItem_VirtualCartItem_Fragment;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
fragment CartItem on CartItemInterface @injectable {
|
|
2
|
+
uid
|
|
3
|
+
quantity
|
|
4
|
+
product {
|
|
5
|
+
uid
|
|
6
|
+
...ProductLink
|
|
7
|
+
name
|
|
8
|
+
url_key
|
|
9
|
+
thumbnail {
|
|
10
|
+
url
|
|
11
|
+
label
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
prices {
|
|
15
|
+
discounts {
|
|
16
|
+
amount {
|
|
17
|
+
...Money
|
|
18
|
+
}
|
|
19
|
+
label
|
|
20
|
+
}
|
|
21
|
+
price {
|
|
22
|
+
...Money
|
|
23
|
+
}
|
|
24
|
+
row_total {
|
|
25
|
+
...Money
|
|
26
|
+
}
|
|
27
|
+
row_total_including_tax {
|
|
28
|
+
...Money
|
|
29
|
+
}
|
|
30
|
+
total_item_discount {
|
|
31
|
+
...Money
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import * as Types from '@graphcommerce/graphql';
|
|
3
|
+
|
|
4
|
+
export type CartItemsFragment = { id: string, items?: Types.Maybe<Array<Types.Maybe<{ __typename: 'BundleCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, bundle_options: Array<Types.Maybe<{ uid: string, label: string, type: string, values: Array<Types.Maybe<{ uid: string, label: string, quantity: number, price: number }>> }>> } | { __typename: 'ConfigurableCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, configurable_options: Array<Types.Maybe<{ configurable_product_option_uid: string, configurable_product_option_value_uid: string, option_label: string, value_label: string }>> } | { __typename: 'DownloadableCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, links?: Types.Maybe<Array<Types.Maybe<{ uid: string, price?: Types.Maybe<number>, sample_url?: Types.Maybe<string>, title?: Types.Maybe<string> }>>>, samples?: Types.Maybe<Array<Types.Maybe<{ sample_url?: Types.Maybe<string>, sort_order?: Types.Maybe<number>, title?: Types.Maybe<string> }>>> } | { __typename: 'SimpleCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'VirtualCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, name?: Types.Maybe<string>, url_key?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> }>>> };
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [2.104.1](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.104.0...@graphcommerce/magento-cart-items@2.104.1) (2021-09-27)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @graphcommerce/magento-cart-items
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# 2.104.0 (2021-09-27)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* app shell consistency wip ([be995ca](https://github.com/ho-nl/m2-pwa/commit/be995ca5c3e383b89fea3759186d53af4790e99b))
|
|
20
|
+
* cart item image sizes ([e7c860c](https://github.com/ho-nl/m2-pwa/commit/e7c860c785e172b9275e1a00c8b51509d6b297a8))
|
|
21
|
+
* **cart:** be able to remove items from cart ([9c7f939](https://github.com/ho-nl/m2-pwa/commit/9c7f9397e9904e08014e7509d3ca63df8c062032))
|
|
22
|
+
* **cart:** display prices with taxes for specific store views ([fd25541](https://github.com/ho-nl/m2-pwa/commit/fd25541646c41111f5ea53822d244591cb08b199))
|
|
23
|
+
* **cart:** mobile styles ([aa601af](https://github.com/ho-nl/m2-pwa/commit/aa601af28ca7190ad90c33cc180fe63a28682519))
|
|
24
|
+
* display prices excl and incl tax ([0d41135](https://github.com/ho-nl/m2-pwa/commit/0d411350e4621928411c2800be6ea02c6125049a))
|
|
25
|
+
* ignore md files from triggering version updates ([4f98392](https://github.com/ho-nl/m2-pwa/commit/4f9839250b3a32d3070da5290e5efcc5e2243fba))
|
|
26
|
+
* **image:** fix build ([b730cb6](https://github.com/ho-nl/m2-pwa/commit/b730cb6ae4e50dcf2f60e2046d6acf3047caacb3))
|
|
27
|
+
* implement next-ui barrel imports ([75bea70](https://github.com/ho-nl/m2-pwa/commit/75bea703dba898f18a2a1dfa3243ebd0a4e6f0e1))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* **cart:** when a cart is not active anymore show a clear cart button ([5d04a14](https://github.com/ho-nl/m2-pwa/commit/5d04a14726c040b20b34c0b88f923aee1dff22e5))
|
|
33
|
+
* **graphql:** introduced new graphql package that holds all generated files ([a3e7aa0](https://github.com/ho-nl/m2-pwa/commit/a3e7aa05540540533b5ced9a95f1f802ecbe499f))
|
|
34
|
+
* **image:** introduced completely rewritten Image component ([e3413b3](https://github.com/ho-nl/m2-pwa/commit/e3413b3a57392d6571ea64cb8d9c8dca05ea31df))
|
|
35
|
+
* next.js 11 ([7d61407](https://github.com/ho-nl/m2-pwa/commit/7d614075a778f488045034f74be4f75b93f63c43))
|
|
36
|
+
* **playwright:** added new playwright package to enable browser testing ([6f49ec7](https://github.com/ho-nl/m2-pwa/commit/6f49ec7595563775b96ebf21c27e39da1282e8d9))
|
|
37
|
+
* renamed all packages to use [@graphcommerce](https://github.com/graphcommerce) instead of [@reachdigital](https://github.com/reachdigital) ([491e4ce](https://github.com/ho-nl/m2-pwa/commit/491e4cec9a2686472dac36b79f999257c0811ffe))
|
|
38
|
+
* **theme:** restructured fonts and applied to home and category page ([6adf5f1](https://github.com/ho-nl/m2-pwa/commit/6adf5f11321bdfbf499125f1161c5abf5a1bfe4a))
|
|
39
|
+
* upgraded to nextjs 11 ([0053beb](https://github.com/ho-nl/m2-pwa/commit/0053beb7ef597c190add7264256a0eaec35868da))
|
|
40
|
+
* useFormMutationCart and simpler imports ([012f090](https://github.com/ho-nl/m2-pwa/commit/012f090e8f54d09f35d393c61ad1e2319f5a90ff))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Reverts
|
|
44
|
+
|
|
45
|
+
* Revert "chore: upgrade @apollo/client" ([55ff24e](https://github.com/ho-nl/m2-pwa/commit/55ff24ede0e56c85b8095edadadd1ec5e0b1b8d2))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Change Log
|
|
52
|
+
|
|
53
|
+
All notable changes to this project will be documented in this file. See
|
|
54
|
+
[Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
55
|
+
|
|
56
|
+
## [2.103.11](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.103.10...@graphcommerce/magento-cart-items@2.103.11) (2021-08-27)
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
|
|
60
|
+
- app shell consistency wip
|
|
61
|
+
([be995ca](https://github.com/ho-nl/m2-pwa/commit/be995ca5c3e383b89fea3759186d53af4790e99b))
|
|
62
|
+
|
|
63
|
+
## [2.103.10](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.103.9...@graphcommerce/magento-cart-items@2.103.10) (2021-08-26)
|
|
64
|
+
|
|
65
|
+
### Bug Fixes
|
|
66
|
+
|
|
67
|
+
- **cart:** mobile styles
|
|
68
|
+
([aa601af](https://github.com/ho-nl/m2-pwa/commit/aa601af28ca7190ad90c33cc180fe63a28682519))
|
|
69
|
+
|
|
70
|
+
## [2.103.8](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.103.7...@graphcommerce/magento-cart-items@2.103.8) (2021-08-18)
|
|
71
|
+
|
|
72
|
+
### Bug Fixes
|
|
73
|
+
|
|
74
|
+
- **cart:** display prices with taxes for specific store views
|
|
75
|
+
([fd25541](https://github.com/ho-nl/m2-pwa/commit/fd25541646c41111f5ea53822d244591cb08b199))
|
|
76
|
+
- display prices excl and incl tax
|
|
77
|
+
([0d41135](https://github.com/ho-nl/m2-pwa/commit/0d411350e4621928411c2800be6ea02c6125049a))
|
|
78
|
+
|
|
79
|
+
# [2.103.0](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.102.3...@graphcommerce/magento-cart-items@2.103.0) (2021-08-12)
|
|
80
|
+
|
|
81
|
+
### Features
|
|
82
|
+
|
|
83
|
+
- upgraded to nextjs 11
|
|
84
|
+
([0053beb](https://github.com/ho-nl/m2-pwa/commit/0053beb7ef597c190add7264256a0eaec35868da))
|
|
85
|
+
|
|
86
|
+
## [2.102.2](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.102.1...@graphcommerce/magento-cart-items@2.102.2) (2021-08-09)
|
|
87
|
+
|
|
88
|
+
### Reverts
|
|
89
|
+
|
|
90
|
+
- Revert "chore: upgrade @apollo/client"
|
|
91
|
+
([55ff24e](https://github.com/ho-nl/m2-pwa/commit/55ff24ede0e56c85b8095edadadd1ec5e0b1b8d2))
|
|
92
|
+
|
|
93
|
+
# [2.102.0](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.101.6...@graphcommerce/magento-cart-items@2.102.0) (2021-08-06)
|
|
94
|
+
|
|
95
|
+
### Features
|
|
96
|
+
|
|
97
|
+
- **theme:** restructured fonts and applied to home and category page
|
|
98
|
+
([6adf5f1](https://github.com/ho-nl/m2-pwa/commit/6adf5f11321bdfbf499125f1161c5abf5a1bfe4a))
|
|
99
|
+
|
|
100
|
+
## [2.101.6](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.101.5...@graphcommerce/magento-cart-items@2.101.6) (2021-08-04)
|
|
101
|
+
|
|
102
|
+
### Bug Fixes
|
|
103
|
+
|
|
104
|
+
- cart item image sizes
|
|
105
|
+
([e7c860c](https://github.com/ho-nl/m2-pwa/commit/e7c860c785e172b9275e1a00c8b51509d6b297a8))
|
|
106
|
+
|
|
107
|
+
# [2.101.0](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.100.19...@graphcommerce/magento-cart-items@2.101.0) (2021-07-26)
|
|
108
|
+
|
|
109
|
+
### Features
|
|
110
|
+
|
|
111
|
+
- **playwright:** added new playwright package to enable browser testing
|
|
112
|
+
([6f49ec7](https://github.com/ho-nl/m2-pwa/commit/6f49ec7595563775b96ebf21c27e39da1282e8d9))
|
|
113
|
+
|
|
114
|
+
## [2.100.11](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/magento-cart-items@2.100.10...@graphcommerce/magento-cart-items@2.100.11) (2021-07-20)
|
|
115
|
+
|
|
116
|
+
### Bug Fixes
|
|
117
|
+
|
|
118
|
+
- ignore md files from triggering version updates
|
|
119
|
+
([4f98392](https://github.com/ho-nl/m2-pwa/commit/4f9839250b3a32d3070da5290e5efcc5e2243fba))
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { Badge, makeStyles, Theme, Link } from '@material-ui/core'
|
|
2
|
+
import { Image } from '@graphcommerce/image'
|
|
3
|
+
import { useDisplayInclTax } from '@graphcommerce/magento-cart'
|
|
4
|
+
import { useProductLink } from '@graphcommerce/magento-product'
|
|
5
|
+
import { Money } from '@graphcommerce/magento-store'
|
|
6
|
+
import { UseStyles, responsiveVal } from '@graphcommerce/next-ui'
|
|
7
|
+
import clsx from 'clsx'
|
|
8
|
+
import PageLink from 'next/link'
|
|
9
|
+
import React, { PropsWithChildren } from 'react'
|
|
10
|
+
import { CartItemFragment } from '../Api/CartItem.gql'
|
|
11
|
+
import DeliveryLabel from '../DeliveryLabel/DeliveryLabel'
|
|
12
|
+
import RemoveItemFromCartFab from '../RemoveItemFromCart/RemoveItemFromCartFab'
|
|
13
|
+
import UpdateItemQuantity from '../UpdateItemQuantity/UpdateItemQuantity'
|
|
14
|
+
|
|
15
|
+
const rowImageSize = responsiveVal(70, 125)
|
|
16
|
+
|
|
17
|
+
const useStyles = makeStyles(
|
|
18
|
+
(theme: Theme) => ({
|
|
19
|
+
root: {
|
|
20
|
+
display: 'grid',
|
|
21
|
+
gridTemplate: `
|
|
22
|
+
"picture itemName itemName itemName"
|
|
23
|
+
"picture itemOptions itemOptions itemOptions"
|
|
24
|
+
"picture itemPrice quantity rowPrice"
|
|
25
|
+
`,
|
|
26
|
+
gridTemplateColumns: `${rowImageSize} 1fr minmax(120px, 1fr) 1fr`,
|
|
27
|
+
columnGap: theme.spacings.sm,
|
|
28
|
+
alignItems: 'baseline',
|
|
29
|
+
...theme.typography.body1,
|
|
30
|
+
marginBottom: theme.spacings.lg,
|
|
31
|
+
marginTop: theme.spacings.md,
|
|
32
|
+
[theme.breakpoints.up('sm')]: {
|
|
33
|
+
gridTemplate: `
|
|
34
|
+
"picture itemName itemName itemName itemName"
|
|
35
|
+
"picture itemOptions itemPrice quantity rowPrice"
|
|
36
|
+
`,
|
|
37
|
+
gridTemplateColumns: `${rowImageSize} 4fr 1fr minmax(120px, 1fr) minmax(75px, 1fr)`,
|
|
38
|
+
marginBottom: theme.spacings.md,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
itemWithoutOptions: {
|
|
42
|
+
display: 'grid',
|
|
43
|
+
gridTemplate: `
|
|
44
|
+
"picture itemName itemName itemName"
|
|
45
|
+
"picture itemPrice quantity rowPrice"`,
|
|
46
|
+
alignItems: 'center',
|
|
47
|
+
gridTemplateColumns: `${rowImageSize} 1fr minmax(120px, 1fr) 1fr`,
|
|
48
|
+
[theme.breakpoints.up('sm')]: {
|
|
49
|
+
gridTemplate: `
|
|
50
|
+
"picture itemName itemPrice quantity rowPrice"
|
|
51
|
+
`,
|
|
52
|
+
gridTemplateColumns: `${rowImageSize} 4fr 1fr minmax(120px, 1fr) minmax(75px, 1fr)`,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
picture: {
|
|
56
|
+
gridArea: 'picture',
|
|
57
|
+
width: rowImageSize,
|
|
58
|
+
height: rowImageSize,
|
|
59
|
+
padding: responsiveVal(5, 10),
|
|
60
|
+
border: `1px solid rgba(0,0,0,0.15)`,
|
|
61
|
+
borderRadius: '50%',
|
|
62
|
+
alignSelf: 'center',
|
|
63
|
+
},
|
|
64
|
+
badge: {
|
|
65
|
+
'& > button': {
|
|
66
|
+
background: theme.palette.text.primary,
|
|
67
|
+
color: theme.palette.common.white,
|
|
68
|
+
transition: 'opacity .15s ease',
|
|
69
|
+
'&:hover, &:active, &:visited': {
|
|
70
|
+
background: theme.palette.text.primary,
|
|
71
|
+
opacity: 0.75,
|
|
72
|
+
},
|
|
73
|
+
'& .MuiSvgIcon-root': {
|
|
74
|
+
fontSize: 24,
|
|
75
|
+
},
|
|
76
|
+
[theme.breakpoints.down('sm')]: {
|
|
77
|
+
width: 30,
|
|
78
|
+
height: 30,
|
|
79
|
+
minHeight: 'unset',
|
|
80
|
+
'& .MuiSvgIcon-root': {
|
|
81
|
+
fontSize: 20,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
productLink: {
|
|
87
|
+
display: 'block',
|
|
88
|
+
width: '100%',
|
|
89
|
+
borderRadius: '50%',
|
|
90
|
+
overflow: 'hidden',
|
|
91
|
+
},
|
|
92
|
+
image: {
|
|
93
|
+
gridColumn: 1,
|
|
94
|
+
backgroundColor: theme.palette.background.paper,
|
|
95
|
+
objectFit: 'cover',
|
|
96
|
+
display: 'block',
|
|
97
|
+
width: '110% !important',
|
|
98
|
+
height: '110% !important',
|
|
99
|
+
marginLeft: '-5%',
|
|
100
|
+
marginTop: '-5%',
|
|
101
|
+
},
|
|
102
|
+
itemName: {
|
|
103
|
+
gridArea: 'itemName',
|
|
104
|
+
color: theme.palette.text.primary,
|
|
105
|
+
textDecoration: 'none',
|
|
106
|
+
flexWrap: 'nowrap',
|
|
107
|
+
maxWidth: 'max-content',
|
|
108
|
+
},
|
|
109
|
+
itemNameWithOptions: {
|
|
110
|
+
alignSelf: 'flex-end',
|
|
111
|
+
},
|
|
112
|
+
itemPrice: {
|
|
113
|
+
gridArea: 'itemPrice',
|
|
114
|
+
textAlign: 'left',
|
|
115
|
+
color: theme.palette.primary.mutedText,
|
|
116
|
+
alignSelf: 'center',
|
|
117
|
+
[theme.breakpoints.up('sm')]: {
|
|
118
|
+
alignSelf: 'flex-start',
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
quantity: {
|
|
122
|
+
gridArea: 'quantity',
|
|
123
|
+
justifySelf: 'center',
|
|
124
|
+
transform: 'translateY(0)',
|
|
125
|
+
[theme.breakpoints.up('sm')]: {
|
|
126
|
+
transform: 'translateY(-6px)',
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
rowPrice: {
|
|
130
|
+
gridArea: 'rowPrice',
|
|
131
|
+
textAlign: 'right',
|
|
132
|
+
alignSelf: 'center',
|
|
133
|
+
[theme.breakpoints.up('sm')]: {
|
|
134
|
+
alignSelf: 'flex-start',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
cellNoOptions: {
|
|
138
|
+
textAlign: 'left',
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
{ name: 'CartItem' },
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
export type CartItemProps = PropsWithChildren<CartItemFragment> &
|
|
145
|
+
UseStyles<typeof useStyles> & { withOptions?: boolean }
|
|
146
|
+
|
|
147
|
+
export default function CartItem(props: CartItemProps) {
|
|
148
|
+
const { product, uid, prices, quantity, children, withOptions } = props
|
|
149
|
+
const { name } = product
|
|
150
|
+
const classes = useStyles()
|
|
151
|
+
const productLink = useProductLink(product)
|
|
152
|
+
const inclTaxes = useDisplayInclTax()
|
|
153
|
+
|
|
154
|
+
return (
|
|
155
|
+
<div className={clsx(classes.root, !withOptions && classes.itemWithoutOptions)}>
|
|
156
|
+
<Badge
|
|
157
|
+
color='default'
|
|
158
|
+
badgeContent={<RemoveItemFromCartFab uid={uid} className={classes.badge} />}
|
|
159
|
+
component='div'
|
|
160
|
+
className={classes.picture}
|
|
161
|
+
overlap='circular'
|
|
162
|
+
>
|
|
163
|
+
<PageLink href={productLink}>
|
|
164
|
+
<a className={classes.productLink}>
|
|
165
|
+
{product?.thumbnail?.url && (
|
|
166
|
+
<Image
|
|
167
|
+
src={product.thumbnail.url ?? ''}
|
|
168
|
+
layout='fill'
|
|
169
|
+
alt={product.thumbnail.label ?? product.name ?? ''}
|
|
170
|
+
sizes={responsiveVal(70, 125)}
|
|
171
|
+
className={classes.image}
|
|
172
|
+
/>
|
|
173
|
+
)}
|
|
174
|
+
</a>
|
|
175
|
+
</PageLink>
|
|
176
|
+
</Badge>
|
|
177
|
+
|
|
178
|
+
<PageLink href={productLink}>
|
|
179
|
+
<Link
|
|
180
|
+
variant='h6'
|
|
181
|
+
className={clsx(classes.itemName, withOptions && classes.itemNameWithOptions)}
|
|
182
|
+
>
|
|
183
|
+
{name}
|
|
184
|
+
<DeliveryLabel />
|
|
185
|
+
</Link>
|
|
186
|
+
</PageLink>
|
|
187
|
+
|
|
188
|
+
<div className={classes.itemPrice}>
|
|
189
|
+
{inclTaxes ? (
|
|
190
|
+
<Money
|
|
191
|
+
value={(prices?.row_total_including_tax?.value ?? 0) / quantity}
|
|
192
|
+
currency={prices?.price.currency}
|
|
193
|
+
/>
|
|
194
|
+
) : (
|
|
195
|
+
<Money {...prices?.price} />
|
|
196
|
+
)}
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<div className={classes.quantity}>
|
|
200
|
+
<UpdateItemQuantity uid={uid} quantity={quantity} />
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<div className={classes.rowPrice}>
|
|
204
|
+
<Money {...(inclTaxes ? prices?.row_total_including_tax : prices?.row_total)} /> <br />
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
{children}
|
|
208
|
+
</div>
|
|
209
|
+
)
|
|
210
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { makeStyles, MenuItem, Select, SelectProps, Theme } from '@material-ui/core'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
const useStyles = makeStyles(
|
|
5
|
+
(theme: Theme) => ({
|
|
6
|
+
root: {
|
|
7
|
+
marginRight: theme.spacings.xs,
|
|
8
|
+
},
|
|
9
|
+
label: {
|
|
10
|
+
fontSize: theme.typography.fontSize,
|
|
11
|
+
letterSpacing: 1,
|
|
12
|
+
textTransform: 'uppercase',
|
|
13
|
+
fontWeight: 500,
|
|
14
|
+
color: theme.palette.secondary.mutedText,
|
|
15
|
+
},
|
|
16
|
+
select: {
|
|
17
|
+
padding: `${theme.spacings.xxs} ${theme.spacings.xxs}`,
|
|
18
|
+
border: `1px solid ${theme.palette.divider}`,
|
|
19
|
+
borderRadius: 8,
|
|
20
|
+
minWidth: 120,
|
|
21
|
+
'&:before': {
|
|
22
|
+
borderBottom: 'none',
|
|
23
|
+
},
|
|
24
|
+
'&:hover, &:active, &:focus': {
|
|
25
|
+
'&:before': {
|
|
26
|
+
borderBottom: 'none',
|
|
27
|
+
},
|
|
28
|
+
background: theme.palette.grey['100'],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
{ name: 'CartItemOptionDropdown' },
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
export type CartItemOptionDropdownProps = {
|
|
36
|
+
label: string
|
|
37
|
+
} & Pick<SelectProps, 'onChange'>
|
|
38
|
+
|
|
39
|
+
export default function CartItemOptionDropdown(props: CartItemOptionDropdownProps) {
|
|
40
|
+
const { onChange, label } = props
|
|
41
|
+
const classes = useStyles()
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<>
|
|
45
|
+
<div className={classes.root}>
|
|
46
|
+
<div className={classes.label}>{label}</div>
|
|
47
|
+
<Select value={1} onChange={onChange} className={classes.select}>
|
|
48
|
+
<MenuItem value={1}>One</MenuItem>
|
|
49
|
+
<MenuItem value={2}>Two</MenuItem>
|
|
50
|
+
<MenuItem value={3}>Three</MenuItem>
|
|
51
|
+
</Select>
|
|
52
|
+
</div>
|
|
53
|
+
</>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useCartQuery } from '@graphcommerce/magento-cart'
|
|
2
|
+
import { AnimatedRow, RenderType, TypeRenderer } from '@graphcommerce/next-ui'
|
|
3
|
+
import { AnimatePresence } from 'framer-motion'
|
|
4
|
+
import React from 'react'
|
|
5
|
+
import { CartItemsFragment } from '../Api/CartItems.gql'
|
|
6
|
+
import { CartItemsQueryDocument } from './CartItemsQuery.gql'
|
|
7
|
+
|
|
8
|
+
export type CartItemRenderer = TypeRenderer<NonNullable<NonNullable<CartItemsFragment['items']>[0]>>
|
|
9
|
+
|
|
10
|
+
export type CartProps = { renderer: CartItemRenderer }
|
|
11
|
+
|
|
12
|
+
export default function CartItems(props: CartProps) {
|
|
13
|
+
const { data } = useCartQuery(CartItemsQueryDocument)
|
|
14
|
+
const { renderer } = props
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<AnimatePresence initial={false}>
|
|
18
|
+
{data?.cart?.items?.map((item) => {
|
|
19
|
+
if (!item?.uid || !data.cart?.id) return null
|
|
20
|
+
return (
|
|
21
|
+
<AnimatedRow key={item.uid}>
|
|
22
|
+
<RenderType renderer={renderer} {...item} />
|
|
23
|
+
</AnimatedRow>
|
|
24
|
+
)
|
|
25
|
+
})}
|
|
26
|
+
</AnimatePresence>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import * as Types from '@graphcommerce/graphql';
|
|
3
|
+
|
|
4
|
+
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
5
|
+
|
|
6
|
+
export const CartItemsQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CartItemsQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cart"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"cart_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"product"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"url_key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"thumbnail"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"discounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"price"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total_including_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"total_item_discount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BundleCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"bundle_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"price"}}]}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ConfigurableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_uid"}},{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_value_uid"}},{"kind":"Field","name":{"kind":"Name","value":"option_label"}},{"kind":"Field","name":{"kind":"Name","value":"value_label"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"DownloadableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"links"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"samples"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"sort_order"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<CartItemsQuery, CartItemsQueryVariables>;
|
|
7
|
+
export type CartItemsQueryVariables = Types.Exact<{
|
|
8
|
+
cartId: Types.Scalars['String'];
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export type CartItemsQuery = { cart?: Types.Maybe<{ id: string, items?: Types.Maybe<Array<Types.Maybe<{ __typename: 'BundleCartItem', uid: string, quantity: number, bundle_options: Array<Types.Maybe<{ uid: string, label: string, type: string, values: Array<Types.Maybe<{ uid: string, label: string, quantity: number, price: number }>> }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'ConfigurableCartItem', uid: string, quantity: number, configurable_options: Array<Types.Maybe<{ configurable_product_option_uid: string, configurable_product_option_value_uid: string, option_label: string, value_label: string }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'DownloadableCartItem', uid: string, quantity: number, links?: Types.Maybe<Array<Types.Maybe<{ uid: string, price?: Types.Maybe<number>, sample_url?: Types.Maybe<string>, title?: Types.Maybe<string> }>>>, samples?: Types.Maybe<Array<Types.Maybe<{ sample_url?: Types.Maybe<string>, sort_order?: Types.Maybe<number>, title?: Types.Maybe<string> }>>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'SimpleCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'VirtualCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> }>>> }> };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { IconButton, makeStyles, Popover, Theme } from '@material-ui/core'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
const useStyles = makeStyles(
|
|
5
|
+
(theme: Theme) => ({
|
|
6
|
+
root: {
|
|
7
|
+
display: 'inline-block',
|
|
8
|
+
},
|
|
9
|
+
labelContainer: {
|
|
10
|
+
padding: 5,
|
|
11
|
+
},
|
|
12
|
+
label: {
|
|
13
|
+
borderRadius: '100%',
|
|
14
|
+
width: 10,
|
|
15
|
+
height: 10,
|
|
16
|
+
background: '#01D26A', // TODO (yvo): order statuses. green, yellow, red
|
|
17
|
+
},
|
|
18
|
+
popover: {
|
|
19
|
+
'& > .MuiPaper-root': {
|
|
20
|
+
padding: 6,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
}),
|
|
24
|
+
{ name: 'DeliveryLabel' },
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
export type DeliveryLabelProps = Record<string, unknown>
|
|
28
|
+
|
|
29
|
+
export default function DeliveryLabel(props: DeliveryLabelProps) {
|
|
30
|
+
const classes = useStyles()
|
|
31
|
+
const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null)
|
|
32
|
+
|
|
33
|
+
const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
34
|
+
setAnchorEl(event.currentTarget)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const handleClose = () => {
|
|
38
|
+
setAnchorEl(null)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const open = Boolean(anchorEl)
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<div className={classes.root}>
|
|
45
|
+
<IconButton component='button' className={classes.labelContainer} onClick={handleClick}>
|
|
46
|
+
<div className={classes.label} />
|
|
47
|
+
</IconButton>
|
|
48
|
+
<Popover
|
|
49
|
+
id={open ? 'simple-popover' : undefined}
|
|
50
|
+
open={open}
|
|
51
|
+
anchorEl={anchorEl}
|
|
52
|
+
onClose={handleClose}
|
|
53
|
+
anchorOrigin={{
|
|
54
|
+
vertical: 'bottom',
|
|
55
|
+
horizontal: 'center',
|
|
56
|
+
}}
|
|
57
|
+
transformOrigin={{
|
|
58
|
+
vertical: 'top',
|
|
59
|
+
horizontal: 'center',
|
|
60
|
+
}}
|
|
61
|
+
className={classes.popover}
|
|
62
|
+
>
|
|
63
|
+
Ordered before <b>23:00</b>, delivery <b>tomorrow</b>
|
|
64
|
+
</Popover>
|
|
65
|
+
</div>
|
|
66
|
+
)
|
|
67
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import * as Types from '@graphcommerce/graphql';
|
|
3
|
+
|
|
4
|
+
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
5
|
+
|
|
6
|
+
export const RemoveItemFromCartDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveItemFromCart"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"uid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeItemFromCart"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"cart_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"cart_item_uid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"uid"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cart"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"product"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"url_key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"thumbnail"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"discounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"price"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total_including_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"total_item_discount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BundleCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"bundle_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"price"}}]}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ConfigurableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_uid"}},{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_value_uid"}},{"kind":"Field","name":{"kind":"Name","value":"option_label"}},{"kind":"Field","name":{"kind":"Name","value":"value_label"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"DownloadableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"links"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"samples"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"sort_order"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"total_quantity"}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"grand_total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"applied_taxes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"discounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_excluding_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_including_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_with_discount_excluding_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"shipping_addresses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"selected_shipping_method"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"carrier_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_title"}},{"kind":"Field","name":{"kind":"Name","value":"carrier_title"}},{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"available_shipping_methods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"carrier_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_code"}},{"kind":"Field","name":{"kind":"Name","value":"price_incl_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"price_excl_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<RemoveItemFromCartMutation, RemoveItemFromCartMutationVariables>;
|
|
7
|
+
export type RemoveItemFromCartMutationVariables = Types.Exact<{
|
|
8
|
+
cartId: Types.Scalars['String'];
|
|
9
|
+
uid: Types.Scalars['ID'];
|
|
10
|
+
}>;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export type RemoveItemFromCartMutation = { removeItemFromCart?: Types.Maybe<{ cart: { __typename: 'Cart', id: string, total_quantity: number, items?: Types.Maybe<Array<Types.Maybe<{ __typename: 'BundleCartItem', uid: string, quantity: number, bundle_options: Array<Types.Maybe<{ uid: string, label: string, type: string, values: Array<Types.Maybe<{ uid: string, label: string, quantity: number, price: number }>> }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'ConfigurableCartItem', uid: string, quantity: number, configurable_options: Array<Types.Maybe<{ configurable_product_option_uid: string, configurable_product_option_value_uid: string, option_label: string, value_label: string }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'DownloadableCartItem', uid: string, quantity: number, links?: Types.Maybe<Array<Types.Maybe<{ uid: string, price?: Types.Maybe<number>, sample_url?: Types.Maybe<string>, title?: Types.Maybe<string> }>>>, samples?: Types.Maybe<Array<Types.Maybe<{ sample_url?: Types.Maybe<string>, sort_order?: Types.Maybe<number>, title?: Types.Maybe<string> }>>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'SimpleCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'VirtualCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> }>>>, prices?: Types.Maybe<{ __typename: 'CartPrices', grand_total?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, applied_taxes?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, subtotal_excluding_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, subtotal_including_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, subtotal_with_discount_excluding_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, shipping_addresses: Array<Types.Maybe<{ selected_shipping_method?: Types.Maybe<{ carrier_code: string, method_code: string, method_title: string, carrier_title: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>, available_shipping_methods?: Types.Maybe<Array<Types.Maybe<{ carrier_code: string, method_code?: Types.Maybe<string>, price_incl_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, price_excl_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>> }>> } }> };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Fab } from '@material-ui/core'
|
|
2
|
+
import { useFormGqlMutationCart, ApolloCartErrorAlert } from '@graphcommerce/magento-cart'
|
|
3
|
+
import { SvgImage, iconClose } from '@graphcommerce/next-ui'
|
|
4
|
+
import React from 'react'
|
|
5
|
+
import {
|
|
6
|
+
RemoveItemFromCartDocument,
|
|
7
|
+
RemoveItemFromCartMutationVariables,
|
|
8
|
+
} from './RemoveItemFromCart.gql'
|
|
9
|
+
|
|
10
|
+
export type RemoveItemFromCartProps = Omit<RemoveItemFromCartMutationVariables, 'cartId'> &
|
|
11
|
+
Omit<JSX.IntrinsicElements['form'], 'onSubmit' | 'noValidate'>
|
|
12
|
+
|
|
13
|
+
export default function RemoveItemFromCartFab(props: RemoveItemFromCartProps) {
|
|
14
|
+
const { uid, ...formProps } = props
|
|
15
|
+
const form = useFormGqlMutationCart(RemoveItemFromCartDocument, { defaultValues: { uid } })
|
|
16
|
+
const { handleSubmit, formState, error } = form
|
|
17
|
+
const submitHandler = handleSubmit(() => {})
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<form noValidate onSubmit={submitHandler} {...formProps}>
|
|
21
|
+
<Fab aria-label='Remove Product' size='small' type='submit' disabled={formState.isSubmitting}>
|
|
22
|
+
<SvgImage src={iconClose} size='small' shade='inverted' alt='close' loading='eager' />
|
|
23
|
+
</Fab>
|
|
24
|
+
<ApolloCartErrorAlert error={error} />
|
|
25
|
+
</form>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import * as Types from '@graphcommerce/graphql';
|
|
3
|
+
|
|
4
|
+
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
5
|
+
|
|
6
|
+
export const UpdateItemQuantityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateItemQuantity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"uid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"quantity"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCartItems"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"cart_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cartId"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"cart_items"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"cart_item_uid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"uid"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"quantity"},"value":{"kind":"Variable","name":{"kind":"Name","value":"quantity"}}}]}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cart"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"product"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"url_key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"thumbnail"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"discounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"price"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"row_total_including_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"total_item_discount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"BundleCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"bundle_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"price"}}]}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ConfigurableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_uid"}},{"kind":"Field","name":{"kind":"Name","value":"configurable_product_option_value_uid"}},{"kind":"Field","name":{"kind":"Name","value":"option_label"}},{"kind":"Field","name":{"kind":"Name","value":"value_label"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"DownloadableCartItem"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"links"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uid"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"samples"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sample_url"}},{"kind":"Field","name":{"kind":"Name","value":"sort_order"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"total_quantity"}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"grand_total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"applied_taxes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"discounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_excluding_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_including_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"subtotal_with_discount_excluding_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"shipping_addresses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"selected_shipping_method"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"carrier_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_title"}},{"kind":"Field","name":{"kind":"Name","value":"carrier_title"}},{"kind":"Field","name":{"kind":"Name","value":"amount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"available_shipping_methods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"carrier_code"}},{"kind":"Field","name":{"kind":"Name","value":"method_code"}},{"kind":"Field","name":{"kind":"Name","value":"price_incl_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}},{"kind":"Field","name":{"kind":"Name","value":"price_excl_tax"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<UpdateItemQuantityMutation, UpdateItemQuantityMutationVariables>;
|
|
7
|
+
export type UpdateItemQuantityMutationVariables = Types.Exact<{
|
|
8
|
+
cartId: Types.Scalars['String'];
|
|
9
|
+
uid: Types.Scalars['ID'];
|
|
10
|
+
quantity: Types.Scalars['Float'];
|
|
11
|
+
}>;
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
export type UpdateItemQuantityMutation = { updateCartItems?: Types.Maybe<{ cart: { __typename: 'Cart', id: string, total_quantity: number, items?: Types.Maybe<Array<Types.Maybe<{ __typename: 'BundleCartItem', uid: string, quantity: number, bundle_options: Array<Types.Maybe<{ uid: string, label: string, type: string, values: Array<Types.Maybe<{ uid: string, label: string, quantity: number, price: number }>> }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'ConfigurableCartItem', uid: string, quantity: number, configurable_options: Array<Types.Maybe<{ configurable_product_option_uid: string, configurable_product_option_value_uid: string, option_label: string, value_label: string }>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'DownloadableCartItem', uid: string, quantity: number, links?: Types.Maybe<Array<Types.Maybe<{ uid: string, price?: Types.Maybe<number>, sample_url?: Types.Maybe<string>, title?: Types.Maybe<string> }>>>, samples?: Types.Maybe<Array<Types.Maybe<{ sample_url?: Types.Maybe<string>, sort_order?: Types.Maybe<number>, title?: Types.Maybe<string> }>>>, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'SimpleCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> } | { __typename: 'VirtualCartItem', uid: string, quantity: number, product: { __typename: 'BundleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'ConfigurableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'DownloadableProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'GroupedProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'SimpleProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> } | { __typename: 'VirtualProduct', uid: string, url_key?: Types.Maybe<string>, name?: Types.Maybe<string>, thumbnail?: Types.Maybe<{ url?: Types.Maybe<string>, label?: Types.Maybe<string> }> }, prices?: Types.Maybe<{ discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, price: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, row_total_including_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, total_item_discount?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }> }>>>, prices?: Types.Maybe<{ __typename: 'CartPrices', grand_total?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, applied_taxes?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, discounts?: Types.Maybe<Array<Types.Maybe<{ label: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>>, subtotal_excluding_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, subtotal_including_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }>, subtotal_with_discount_excluding_tax?: Types.Maybe<{ currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }> }>, shipping_addresses: Array<Types.Maybe<{ selected_shipping_method?: Types.Maybe<{ carrier_code: string, method_code: string, method_title: string, carrier_title: string, amount: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>, available_shipping_methods?: Types.Maybe<Array<Types.Maybe<{ carrier_code: string, method_code?: Types.Maybe<string>, price_incl_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> }, price_excl_tax: { currency?: Types.Maybe<Types.CurrencyEnum>, value?: Types.Maybe<number> } }>>> }>> } }> };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
mutation UpdateItemQuantity($cartId: String!, $uid: ID!, $quantity: Float!) {
|
|
2
|
+
updateCartItems(
|
|
3
|
+
input: { cart_id: $cartId, cart_items: [{ cart_item_uid: $uid, quantity: $quantity }] }
|
|
4
|
+
) {
|
|
5
|
+
cart {
|
|
6
|
+
id
|
|
7
|
+
__typename
|
|
8
|
+
...CartItemCountChanged
|
|
9
|
+
...CartItems
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useFormGqlMutationCart, ApolloCartErrorAlert } from '@graphcommerce/magento-cart'
|
|
2
|
+
import { TextInputNumber } from '@graphcommerce/next-ui'
|
|
3
|
+
import { useFormAutoSubmit } from '@graphcommerce/react-hook-form'
|
|
4
|
+
import React from 'react'
|
|
5
|
+
import {
|
|
6
|
+
UpdateItemQuantityDocument,
|
|
7
|
+
UpdateItemQuantityMutationVariables,
|
|
8
|
+
} from './UpdateItemQuantity.gql'
|
|
9
|
+
|
|
10
|
+
export type UpdateItemQuantityProps = Omit<UpdateItemQuantityMutationVariables, 'cartId'>
|
|
11
|
+
|
|
12
|
+
export default function UpdateItemQuantity(props: UpdateItemQuantityProps) {
|
|
13
|
+
const { uid, quantity } = props
|
|
14
|
+
const form = useFormGqlMutationCart(UpdateItemQuantityDocument, {
|
|
15
|
+
defaultValues: { uid, quantity },
|
|
16
|
+
mode: 'onChange',
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const { muiRegister, required, handleSubmit, formState, error } = form
|
|
20
|
+
|
|
21
|
+
const submit = handleSubmit(() => {})
|
|
22
|
+
useFormAutoSubmit({ form, submit })
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<form noValidate onSubmit={submit}>
|
|
26
|
+
<TextInputNumber
|
|
27
|
+
size='small'
|
|
28
|
+
variant='outlined'
|
|
29
|
+
inputProps={{ min: 1 }}
|
|
30
|
+
error={!!formState.errors.quantity}
|
|
31
|
+
required={required.quantity}
|
|
32
|
+
{...muiRegister('quantity', { required: required.quantity })}
|
|
33
|
+
helperText={formState.errors.quantity?.message}
|
|
34
|
+
/>
|
|
35
|
+
<ApolloCartErrorAlert error={error} />
|
|
36
|
+
</form>
|
|
37
|
+
)
|
|
38
|
+
}
|
package/index.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './Api/CartItem.gql'
|
|
2
|
+
export * from './Api/CartItems.gql'
|
|
3
|
+
|
|
4
|
+
export * from './CartItem/CartItem'
|
|
5
|
+
export { default as CartItem } from './CartItem/CartItem'
|
|
6
|
+
|
|
7
|
+
export * from './CartItem/CartItemOptionDropdown'
|
|
8
|
+
export { default as CartItemOptionDropdown } from './CartItem/CartItemOptionDropdown'
|
|
9
|
+
|
|
10
|
+
export * from './CartItems/CartItems'
|
|
11
|
+
export { default as CartItems } from './CartItems/CartItems'
|
|
12
|
+
|
|
13
|
+
export * from './DeliveryLabel/DeliveryLabel'
|
|
14
|
+
export { default as DeliveryLabel } from './DeliveryLabel/DeliveryLabel'
|
|
15
|
+
|
|
16
|
+
export * from './RemoveItemFromCart/RemoveItemFromCartFab'
|
|
17
|
+
export { default as RemoveItemFromCartFab } from './RemoveItemFromCart/RemoveItemFromCartFab'
|
|
18
|
+
|
|
19
|
+
export * from './UpdateItemQuantity/UpdateItemQuantity'
|
|
20
|
+
export { default as UpdateItemQuantity } from './UpdateItemQuantity/UpdateItemQuantity'
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@graphcommerce/magento-cart-items",
|
|
3
|
+
"version": "2.104.1",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"prettier": "@graphcommerce/prettier-config-pwa",
|
|
6
|
+
"browserslist": [
|
|
7
|
+
"extends @graphcommerce/browserslist-config-pwa"
|
|
8
|
+
],
|
|
9
|
+
"eslintConfig": {
|
|
10
|
+
"extends": "@graphcommerce/eslint-config-pwa",
|
|
11
|
+
"parserOptions": {
|
|
12
|
+
"project": "./tsconfig.json"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@graphcommerce/browserslist-config-pwa": "^3.0.1",
|
|
17
|
+
"@graphcommerce/eslint-config-pwa": "^3.0.1",
|
|
18
|
+
"@graphcommerce/prettier-config-pwa": "^3.0.1",
|
|
19
|
+
"@graphcommerce/typescript-config-pwa": "^3.0.1",
|
|
20
|
+
"@playwright/test": "^1.14.1"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@apollo/client": "^3.3.21",
|
|
24
|
+
"@graphcommerce/graphql": "^2.103.1",
|
|
25
|
+
"@graphcommerce/image": "^2.104.1",
|
|
26
|
+
"@graphcommerce/magento-cart": "^3.0.1",
|
|
27
|
+
"@graphcommerce/magento-customer": "^3.0.1",
|
|
28
|
+
"@graphcommerce/magento-product": "^3.0.1",
|
|
29
|
+
"@graphcommerce/magento-store": "^3.0.1",
|
|
30
|
+
"@graphcommerce/next-ui": "^3.0.1",
|
|
31
|
+
"@graphcommerce/react-hook-form": "^2.102.1",
|
|
32
|
+
"@graphql-typed-document-node/core": "^3.1.0",
|
|
33
|
+
"@material-ui/core": "^4.12.3",
|
|
34
|
+
"@material-ui/lab": "^4.0.0-alpha.60",
|
|
35
|
+
"clsx": "^1.1.1",
|
|
36
|
+
"framer-motion": "^4.1.17",
|
|
37
|
+
"next": "^11.1.2",
|
|
38
|
+
"react": "^17.0.2",
|
|
39
|
+
"react-dom": "^17.0.2"
|
|
40
|
+
}
|
|
41
|
+
}
|