@graphcommerce/magento-customer 9.1.0-canary.18 → 9.1.0-canary.20

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/components/AccountAddresses/AccountAddresses.tsx +9 -4
  3. package/components/AccountDeleteForm/AccountDeleteForm.tsx +14 -4
  4. package/components/AccountLatestOrder/AccountLatestOrder.tsx +1 -2
  5. package/components/AccountOrders/AccountOrders.tsx +1 -1
  6. package/components/CancelOrder/CancelOrderForm.tsx +2 -2
  7. package/components/CancelOrder/CancelOrderFragment.graphql +5 -0
  8. package/components/ChangeNameForm/ChangeNameForm.tsx +1 -0
  9. package/components/ContactForm/ContactUsConfig.graphql +3 -0
  10. package/components/CreditMemo/CreditMemo.graphql +43 -0
  11. package/components/CreditMemo/CreditMemoCard.graphql +12 -0
  12. package/components/CreditMemo/CreditMemoCard.tsx +66 -0
  13. package/components/CreditMemo/CreditMemoDetails.tsx +94 -0
  14. package/components/CreditMemo/CreditMemoItem.graphql +26 -0
  15. package/components/CreditMemo/CreditMemoItem.tsx +125 -0
  16. package/components/CreditMemo/CreditMemoItems.tsx +78 -0
  17. package/components/CreditMemo/CreditMemoTotals.tsx +122 -0
  18. package/components/CreditMemo/index.ts +8 -0
  19. package/components/CustomerForms/CustomerAttributeField.tsx +112 -0
  20. package/components/CustomerForms/CustomerAttributeMetadata.graphql +9 -0
  21. package/components/CustomerForms/CustomerUpdateForm.tsx +65 -0
  22. package/components/CustomerForms/UseCustomerCreateForm.graphql +7 -0
  23. package/components/CustomerForms/UseCustomerUpdateForm.graphql +7 -0
  24. package/components/CustomerForms/customerAttributeFieldHelpers.ts +127 -0
  25. package/components/CustomerForms/index.ts +8 -0
  26. package/components/CustomerForms/nameFieldset.tsx +32 -0
  27. package/components/CustomerForms/useCustomerCreateForm.ts +83 -0
  28. package/components/CustomerForms/useCustomerUpdateForm.ts +122 -0
  29. package/components/GuestOrderOverview/GuestOrderOverviewForm.tsx +28 -11
  30. package/components/Invoice/Invoice.graphql +13 -0
  31. package/components/Invoice/InvoiceCard.graphql +9 -0
  32. package/components/Invoice/InvoiceCard.tsx +66 -0
  33. package/components/Invoice/InvoiceDetails.tsx +94 -0
  34. package/components/Invoice/InvoiceItem.graphql +25 -0
  35. package/components/Invoice/InvoiceItem.tsx +125 -0
  36. package/components/Invoice/InvoiceItems.tsx +72 -0
  37. package/components/Invoice/InvoiceTotal.graphql +29 -0
  38. package/components/Invoice/InvoiceTotals.tsx +110 -0
  39. package/components/Invoice/index.ts +9 -0
  40. package/components/NameFields/NameFields.tsx +33 -18
  41. package/components/Order/OrderAdditional/OrderAdditional.graphql +16 -0
  42. package/components/Order/OrderAdditional/OrderAdditional.tsx +51 -0
  43. package/components/Order/OrderCard/OrderCard.graphql +13 -0
  44. package/components/{OrderCard → Order/OrderCard}/OrderCard.tsx +22 -18
  45. package/components/{OrderCardItem → Order/OrderCard}/OrderCardItem.graphql +1 -0
  46. package/components/Order/OrderComments/OrderComments.graphql +5 -0
  47. package/components/Order/OrderComments/SalesCommentItem.graphql +4 -0
  48. package/components/Order/OrderComments/SalesComments.tsx +28 -0
  49. package/components/Order/OrderDetails/OrderAddress.graphql +17 -0
  50. package/components/Order/OrderDetails/OrderDetails.graphql +38 -0
  51. package/components/{OrderDetails → Order/OrderDetails}/OrderDetails.tsx +70 -57
  52. package/components/Order/OrderDetails/ShippingHandling.graphql +19 -0
  53. package/components/Order/OrderDetails/TaxItem.graphql +7 -0
  54. package/components/{OrderItem → Order/OrderItem}/OrderItem.graphql +13 -0
  55. package/components/Order/OrderItem/OrderItem.tsx +144 -0
  56. package/components/Order/OrderItems/OrderItems.tsx +81 -0
  57. package/components/{OrderStateLabel → Order/OrderStateLabel}/OrderStateLabel.tsx +2 -2
  58. package/components/Order/OrderTotals/OrderTotal.graphql +32 -0
  59. package/components/Order/OrderTotals/OrderTotals.graphql +7 -0
  60. package/components/{OrderDetails → Order/OrderTotals}/OrderTotals.tsx +27 -12
  61. package/components/Order/index.ts +16 -0
  62. package/components/ReorderItems/ReorderItems.tsx +1 -1
  63. package/components/Shipment/Shipment.graphql +14 -0
  64. package/components/Shipment/ShipmentCard.graphql +8 -0
  65. package/components/Shipment/ShipmentCard.tsx +71 -0
  66. package/components/Shipment/ShipmentDetails.tsx +100 -0
  67. package/components/Shipment/ShipmentItem.graphql +19 -0
  68. package/components/Shipment/ShipmentItem.tsx +117 -0
  69. package/components/Shipment/ShipmentItems.tsx +72 -0
  70. package/components/Shipment/index.ts +7 -0
  71. package/components/SignUpForm/SignUpForm.tsx +51 -46
  72. package/components/WaitForCustomer/WaitForCustomer.tsx +12 -3
  73. package/components/index.ts +5 -8
  74. package/graphql/{AccountDashboardQueryFragment.graphql → fragments/AccountDashboardQueryFragment.graphql} +8 -3
  75. package/graphql/index.ts +10 -0
  76. package/graphql/queries/CreditMemoDetailPage.graphql +14 -0
  77. package/graphql/queries/InvoiceDetailPage.graphql +14 -0
  78. package/graphql/queries/OrderDetailPage.graphql +14 -0
  79. package/graphql/queries/ShipmentDetailPage.graphql +12 -0
  80. package/hooks/CustomerInfo.graphql +3 -3
  81. package/index.ts +1 -4
  82. package/package.json +14 -14
  83. package/utils/orderState.ts +1 -2
  84. package/components/OrderCard/OrderCard.graphql +0 -29
  85. package/components/OrderDetails/OrderDetails.graphql +0 -77
  86. package/components/OrderItem/OrderItem.tsx +0 -176
  87. package/components/OrderItems/OrderItems.tsx +0 -70
  88. package/graphql/OrderDetailPage.graphql +0 -10
  89. /package/components/{OrderItems → Order/OrderItems}/OrderItems.graphql +0 -0
  90. /package/components/{OrderStateLabel → Order/OrderStateLabel}/OrderStateLabel.graphql +0 -0
  91. /package/components/{OrderStateLabel → Order/OrderStateLabel}/OrderStateLabelInline.tsx +0 -0
  92. /package/graphql/{CustomerStoreConfig.graphql → inject/CustomerStoreConfig.graphql} +0 -0
  93. /package/graphql/{AccountDashboard.graphql → queries/AccountDashboard.graphql} +0 -0
  94. /package/graphql/{AccountDashboardAddresses.graphql → queries/AccountDashboardAddresses.graphql} +0 -0
  95. /package/graphql/{AccountDashboardCustomer.graphql → queries/AccountDashboardCustomer.graphql} +0 -0
  96. /package/graphql/{AccountDashboardOrders.graphql → queries/AccountDashboardOrders.graphql} +0 -0
@@ -1,77 +0,0 @@
1
- fragment OrderDetails on CustomerOrder {
2
- id
3
- number
4
- order_date
5
- status
6
- invoices {
7
- id
8
- number
9
- }
10
- shipping_method
11
- shipments {
12
- id
13
- tracking {
14
- ...TrackingLink
15
- }
16
- }
17
- payment_methods {
18
- name
19
- type
20
- additional_data {
21
- name
22
- value
23
- }
24
- }
25
- billing_address {
26
- city
27
- postcode
28
- firstname
29
- lastname
30
- street
31
- country_code
32
- region_id
33
- }
34
- shipping_address {
35
- city
36
- postcode
37
- firstname
38
- lastname
39
- street
40
- country_code
41
- region_id
42
- }
43
- carrier
44
- total {
45
- subtotal {
46
- ...Money
47
- }
48
- total_shipping {
49
- ...Money
50
- }
51
- # todo
52
- # shipping_handling {}
53
- discounts {
54
- amount {
55
- ...Money
56
- }
57
- label
58
- }
59
- grand_total {
60
- ...Money
61
- }
62
-
63
- total_tax {
64
- ...Money
65
- }
66
- taxes {
67
- amount {
68
- ...Money
69
- }
70
- rate
71
- title
72
- }
73
- total_shipping {
74
- ...Money
75
- }
76
- }
77
- }
@@ -1,176 +0,0 @@
1
- import { Image } from '@graphcommerce/image'
2
- // eslint-disable-next-line import/no-extraneous-dependencies
3
- import { useProductLink } from '@graphcommerce/magento-product/hooks/useProductLink'
4
- import { Money } from '@graphcommerce/magento-store'
5
- import { extendableComponent, NextLink, responsiveVal } from '@graphcommerce/next-ui'
6
- import { Box } from '@mui/material'
7
- import type { OrderCardItemImageFragment } from '../../hooks/OrderCardItemImage.gql'
8
- import type { OrderItemFragment } from './OrderItem.gql'
9
-
10
- export type OrderItemProps = OrderItemFragment & Omit<OrderCardItemImageFragment, 'uid'>
11
-
12
- const rowImageSize = responsiveVal(70, 110)
13
-
14
- type OwnerState = { hasOptions: boolean }
15
- const componentName = 'OrderItem'
16
- const parts = [
17
- 'root',
18
- 'itemWithoutOptions',
19
- 'picture',
20
- 'pictureSpacing',
21
- 'image',
22
- 'productLink',
23
- 'itemName',
24
- 'itemNameWithOptions',
25
- 'itemPrice',
26
- 'quantity',
27
- 'rowPrice',
28
- 'optionsList',
29
- 'option',
30
- ] as const
31
- const { withState } = extendableComponent<OwnerState, typeof componentName, typeof parts>(
32
- componentName,
33
- parts,
34
- )
35
-
36
- export function OrderItem(props: OrderItemProps) {
37
- const {
38
- product_url_key,
39
- selected_options,
40
- product_sale_price,
41
- quantity_ordered,
42
- product_name,
43
- product,
44
- } = props
45
- const productLink = useProductLink({
46
- __typename: 'SimpleProduct' as const,
47
- url_key: product_url_key,
48
- })
49
-
50
- const hasOptions = Boolean(selected_options && selected_options.length >= 1)
51
-
52
- const classes = withState({ hasOptions })
53
-
54
- return (
55
- <Box
56
- className={classes.root}
57
- sx={(theme) => ({
58
- borderBottom: `1px solid ${theme.palette.divider}`,
59
- display: 'grid',
60
- gridTemplate: `
61
- "picture itemName itemName itemName"
62
- "picture itemOptions itemOptions itemOptions"
63
- "picture itemPrice quantity rowPrice"
64
- `,
65
- gridTemplateColumns: `${rowImageSize} repeat(3, 1fr)`,
66
- columnGap: theme.spacings.sm,
67
- alignItems: 'baseline',
68
- typography: 'body1',
69
- py: theme.spacings.xxs,
70
- [theme.breakpoints.up('sm')]: {
71
- gridTemplate: `
72
- "picture itemName itemName itemName itemName"
73
- "picture itemOptions itemPrice quantity rowPrice"
74
- `,
75
- gridTemplateColumns: `${rowImageSize} 4fr 1fr 1fr minmax(75px, 1fr)`,
76
- },
77
-
78
- '&:not(.hasOptions)': {
79
- display: 'grid',
80
- gridTemplate: `
81
- "picture itemName itemName itemName"
82
- "picture itemPrice quantity rowPrice"`,
83
- alignItems: 'center',
84
- gridTemplateColumns: `${rowImageSize} repeat(3, 1fr)`,
85
- [theme.breakpoints.up('sm')]: {
86
- gridTemplate: `
87
- "picture itemName itemPrice quantity rowPrice"
88
- `,
89
- gridTemplateColumns: `${rowImageSize} 4fr 1fr minmax(120px, 1fr) minmax(75px, 1fr)`,
90
- },
91
- },
92
- })}
93
- >
94
- <Box className={classes.picture} sx={{ gridArea: 'picture' }}>
95
- <Box href={productLink} component={NextLink} className={classes.productLink}>
96
- <Box className={classes.pictureSpacing}>
97
- {product?.thumbnail?.url && product.thumbnail?.label && (
98
- <Image
99
- alt={product.thumbnail?.label ?? ''}
100
- width={104}
101
- height={86}
102
- src={product.thumbnail?.url ?? ''}
103
- className={classes.image}
104
- sx={(theme) => ({
105
- backgroundColor: theme.palette.background.image,
106
- })}
107
- />
108
- )}
109
- </Box>
110
- </Box>
111
- </Box>
112
-
113
- <Box
114
- href={productLink}
115
- component={NextLink}
116
- className={classes.itemName}
117
- sx={(theme) => ({
118
- typography: 'h5',
119
- fontWeight: 500,
120
- gridArea: 'itemName',
121
- color: theme.palette.text.primary,
122
- textDecoration: 'none',
123
- flexWrap: 'nowrap',
124
- maxWidth: 'max-content',
125
- '&.hasOptions': {
126
- alignSelf: 'flex-end',
127
- },
128
- })}
129
- >
130
- {product_name}
131
- </Box>
132
-
133
- <Box
134
- className={classes.itemPrice}
135
- sx={(theme) => ({
136
- gridArea: 'itemPrice',
137
- textAlign: 'left',
138
- color: theme.palette.text.secondary,
139
- })}
140
- >
141
- <Money {...product_sale_price} />
142
- </Box>
143
-
144
- <Box
145
- className={classes.quantity}
146
- sx={{ gridArea: 'quantity', justifySelf: 'center' }}
147
- >{`${quantity_ordered}x`}</Box>
148
-
149
- <Box className={classes.rowPrice} sx={{ gridArea: 'rowPrice', textAlign: 'right' }}>
150
- <Money
151
- currency={product_sale_price.currency}
152
- value={(product_sale_price.value ?? 0) * (quantity_ordered ?? 1)}
153
- />
154
- </Box>
155
-
156
- {hasOptions && (
157
- <Box className={classes.optionsList} sx={{ gridArea: 'itemOptions', cursor: 'default' }}>
158
- {selected_options?.map((option) => (
159
- <Box
160
- key={option?.label}
161
- className={classes.option}
162
- sx={(theme) => ({
163
- color: theme.palette.grey['500'],
164
- marginRight: theme.spacings.xs,
165
- paddingBottom: '1px',
166
- display: 'inline',
167
- })}
168
- >
169
- {option?.value}
170
- </Box>
171
- ))}
172
- </Box>
173
- )}
174
- </Box>
175
- )
176
- }
@@ -1,70 +0,0 @@
1
- import { extendableComponent, SectionContainer } from '@graphcommerce/next-ui'
2
- import { Trans } from '@lingui/react'
3
- import type { SxProps, Theme } from '@mui/material'
4
- import { Box, Button } from '@mui/material'
5
- import { useState } from 'react'
6
- import { OrderItem } from '../OrderItem/OrderItem'
7
- import type { OrderItemsFragment } from './OrderItems.gql'
8
-
9
- export type OrderItemsProps = OrderItemsFragment & {
10
- sx?: SxProps<Theme>
11
- }
12
-
13
- const componentName = 'OrderItems'
14
- const parts = ['root', 'orderItemsInnerContainer', 'skeletonOrderItem', 'viewAllButton'] as const
15
- const { classes } = extendableComponent(componentName, parts)
16
-
17
- export function OrderItems(props: OrderItemsProps) {
18
- const { items, sx = [] } = props
19
- const [expanded, setExpanded] = useState<boolean>(false)
20
- const maxItemsAboveFold = 4
21
-
22
- return (
23
- <SectionContainer
24
- labelLeft={<Trans id='Ordered items' />}
25
- /* endLabel='SHIPPED'*/
26
- className={classes.root}
27
- sx={[
28
- (theme) => ({
29
- marginTop: theme.spacings.md,
30
- marginBottom: theme.spacings.sm,
31
- }),
32
- ...(Array.isArray(sx) ? sx : [sx]),
33
- ]}
34
- >
35
- <Box className={classes.orderItemsInnerContainer} sx={(theme) => ({ mb: theme.spacings.md })}>
36
- {items
37
- ?.slice(0, maxItemsAboveFold)
38
- .map((orderItem) => (
39
- <Box key={`orderItem-${orderItem?.id}`}>
40
- {orderItem && <OrderItem {...orderItem} />}
41
- </Box>
42
- ))}
43
-
44
- {expanded &&
45
- items
46
- ?.slice(maxItemsAboveFold, items?.length)
47
- .map((orderItem) => (
48
- <Box key={`orderItem-${orderItem?.id}`}>
49
- {orderItem && <OrderItem {...orderItem} />}
50
- </Box>
51
- ))}
52
- </Box>
53
-
54
- {items && maxItemsAboveFold < items?.length && (
55
- <Box
56
- className={classes.viewAllButton}
57
- sx={(theme) => ({
58
- margin: `${theme.spacings.xs} auto 0 auto`,
59
- textAlign: 'center',
60
- '& a': { padding: '8px' },
61
- })}
62
- >
63
- <Button variant='text' color='primary' onClick={() => setExpanded(!expanded)}>
64
- {expanded ? <Trans id='View less items' /> : <Trans id='View all items' />}
65
- </Button>
66
- </Box>
67
- )}
68
- </SectionContainer>
69
- )
70
- }
@@ -1,10 +0,0 @@
1
- query OrderDetailPage($orderNumber: String) {
2
- customer {
3
- orders(filter: { number: { eq: $orderNumber } }) {
4
- items {
5
- ...OrderDetails
6
- ...OrderItems
7
- }
8
- }
9
- }
10
- }