@graphcommerce/ecommerce-ui 10.0.0-canary.68 → 10.0.0-canary.72

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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @graphcommerce/ecommerce-ui
2
2
 
3
+ ## 10.0.0-canary.72
4
+
5
+ ## 10.0.0-canary.71
6
+
7
+ ## 10.0.0-canary.70
8
+
9
+ ### Major Changes
10
+
11
+ - [#2565](https://github.com/graphcommerce-org/graphcommerce/pull/2565) [`c96dfcd`](https://github.com/graphcommerce-org/graphcommerce/commit/c96dfcdca981baca387c270ad9e2b9515cdd00cc) - Updated to Apollo Client 4 ([@paales](https://github.com/paales))
12
+
13
+ ## 10.0.0-canary.69
14
+
15
+ ### Patch Changes
16
+
17
+ - [#2567](https://github.com/graphcommerce-org/graphcommerce/pull/2567) [`0af3466`](https://github.com/graphcommerce-org/graphcommerce/commit/0af34663f882ad9906dc13ae6c835c158598b945) - Fix NumberFieldElement plus button decreasing the number instead of increasing ([@paales](https://github.com/paales))
18
+
3
19
  ## 10.0.0-canary.68
4
20
 
5
21
  ### Major Changes
@@ -1,5 +1,6 @@
1
- import type { ApolloError } from '@graphcommerce/graphql'
2
1
  import { extendableComponent } from '@graphcommerce/next-ui/Styles/extendableComponent'
2
+ import type { ErrorLike } from '@apollo/client'
3
+ import { CombinedGraphQLErrors } from '@apollo/client/errors'
3
4
  import type { AlertProps, SxProps, Theme } from '@mui/material'
4
5
  import { Alert, Box } from '@mui/material'
5
6
  import { maskNetworkError } from './maskNetworkError'
@@ -7,7 +8,7 @@ import { maskNetworkError } from './maskNetworkError'
7
8
  const { classes, selectors } = extendableComponent('ApolloErrorAlert', ['root', 'alert'] as const)
8
9
 
9
10
  export type ApolloErrorAlertProps = {
10
- error?: ApolloError | null
11
+ error?: ErrorLike | null
11
12
  graphqlErrorAlertProps?: Omit<AlertProps, 'severity'>
12
13
  networkErrorAlertProps?: Omit<AlertProps, 'severity'>
13
14
  sx?: SxProps<Theme>
@@ -15,48 +16,50 @@ export type ApolloErrorAlertProps = {
15
16
  export function ApolloErrorAlert(props: ApolloErrorAlertProps) {
16
17
  const { error, graphqlErrorAlertProps, networkErrorAlertProps, sx } = props
17
18
 
19
+ if (!error) return null
20
+
21
+ // Check if this is a CombinedGraphQLErrors
22
+ const isGraphQLError = CombinedGraphQLErrors.is(error)
23
+ const graphQLErrors = isGraphQLError ? error.errors : []
24
+
18
25
  return (
19
- <>
20
- {error && (
21
- <Box key='alerts'>
22
- <Box sx={sx} className={classes.root}>
23
- {error.graphQLErrors.map((e, index) => (
24
- // eslint-disable-next-line react/no-array-index-key
25
- <Box key={index}>
26
- <div className={classes.alert}>
27
- <Alert
28
- severity='error'
29
- {...graphqlErrorAlertProps}
30
- sx={(theme) => ({
31
- borderRadius: theme.shape.borderRadius * 1,
32
- marginTop: 0.5,
33
- })}
34
- >
35
- {e.message}
36
- </Alert>
37
- </div>
38
- </Box>
39
- ))}
40
- {error.networkError && (
41
- <Box key='networkError'>
42
- <Box
43
- sx={(theme) => ({
44
- paddingTop: theme.spacings.xxs,
45
- paddingBottom: theme.spacings.xxs,
46
- })}
47
- className={classes.alert}
48
- key='networkError'
49
- >
50
- <Alert severity='error' {...networkErrorAlertProps}>
51
- {maskNetworkError(error.networkError)}
52
- </Alert>
53
- </Box>
54
- </Box>
55
- )}
26
+ <Box key='alerts'>
27
+ <Box sx={sx} className={classes.root}>
28
+ {graphQLErrors.map((e, index) => (
29
+ // eslint-disable-next-line react/no-array-index-key
30
+ <Box key={index}>
31
+ <div className={classes.alert}>
32
+ <Alert
33
+ severity='error'
34
+ {...graphqlErrorAlertProps}
35
+ sx={(theme) => ({
36
+ borderRadius: theme.shape.borderRadius * 1,
37
+ marginTop: 0.5,
38
+ })}
39
+ >
40
+ {e.message}
41
+ </Alert>
42
+ </div>
43
+ </Box>
44
+ ))}
45
+ {!isGraphQLError && error && (
46
+ <Box key='networkError'>
47
+ <Box
48
+ sx={(theme) => ({
49
+ paddingTop: theme.spacings.xxs,
50
+ paddingBottom: theme.spacings.xxs,
51
+ })}
52
+ className={classes.alert}
53
+ key='networkError'
54
+ >
55
+ <Alert severity='error' {...networkErrorAlertProps}>
56
+ {maskNetworkError(error)}
57
+ </Alert>
58
+ </Box>
56
59
  </Box>
57
- </Box>
58
- )}
59
- </>
60
+ )}
61
+ </Box>
62
+ </Box>
60
63
  )
61
64
  }
62
65
 
@@ -1,13 +1,14 @@
1
- import type { ApolloError } from '@graphcommerce/graphql'
2
1
  import type { FullPageMessageProps } from '@graphcommerce/next-ui'
3
2
  import { FullPageMessage } from '@graphcommerce/next-ui'
3
+ import type { ErrorLike } from '@apollo/client'
4
+ import { CombinedGraphQLErrors } from '@apollo/client/errors'
4
5
  import { Trans } from '@lingui/react/macro'
5
6
  import type { AlertProps } from '@mui/material'
6
7
  import { ApolloErrorAlert } from './ApolloErrorAlert'
7
8
  import { maskNetworkError } from './maskNetworkError'
8
9
 
9
10
  export type ApolloErrorFullPageProps = {
10
- error: ApolloError
11
+ error: ErrorLike
11
12
  graphqlErrorAlertProps?: Omit<AlertProps, 'severity'>
12
13
  networkErrorAlertProps?: Omit<AlertProps, 'severity'>
13
14
  } & Omit<FullPageMessageProps, 'title' | 'description'>
@@ -21,14 +22,17 @@ export function ApolloErrorFullPage(props: ApolloErrorFullPageProps) {
21
22
  ...fullPageMessageProps
22
23
  } = props
23
24
 
24
- const errorCount = (error?.graphQLErrors?.length ?? 0) + (error?.networkError ? 1 : 0)
25
+ // Check if this is a CombinedGraphQLErrors
26
+ const isGraphQLError = CombinedGraphQLErrors.is(error)
27
+ const graphQLErrors = isGraphQLError ? error.errors : []
28
+ const errorCount = graphQLErrors.length + (isGraphQLError ? 0 : 1)
25
29
 
26
30
  if (errorCount === 0) return null
27
31
 
28
32
  if (errorCount === 1) {
29
33
  return (
30
34
  <FullPageMessage
31
- title={error?.graphQLErrors?.[0]?.message ?? maskNetworkError(error.networkError)}
35
+ title={graphQLErrors[0]?.message ?? maskNetworkError(error)}
32
36
  {...fullPageMessageProps}
33
37
  >
34
38
  {children}
@@ -1,10 +1,11 @@
1
- import type { ApolloError } from '@graphcommerce/graphql'
2
1
  import type { ErrorSnackbarProps } from '@graphcommerce/next-ui'
3
2
  import { ErrorSnackbar } from '@graphcommerce/next-ui'
3
+ import type { ErrorLike } from '@apollo/client'
4
+ import { CombinedGraphQLErrors } from '@apollo/client/errors'
4
5
  import { maskNetworkError } from './maskNetworkError'
5
6
 
6
7
  export type ApolloErrorSnackbarProps = {
7
- error?: ApolloError | null
8
+ error?: ErrorLike | null
8
9
  } & Pick<ErrorSnackbarProps, 'action' | 'onClose'>
9
10
 
10
11
  export function ApolloErrorSnackbar(props: ApolloErrorSnackbarProps) {
@@ -12,11 +13,15 @@ export function ApolloErrorSnackbar(props: ApolloErrorSnackbarProps) {
12
13
 
13
14
  if (!error) return null
14
15
 
16
+ // Check if this is a CombinedGraphQLErrors
17
+ const isGraphQLError = CombinedGraphQLErrors.is(error)
18
+ const graphQLErrors = isGraphQLError ? error.errors : []
19
+
15
20
  return (
16
21
  <ErrorSnackbar variant='pill' severity='error' {...passedProps} open={!!error}>
17
22
  <>
18
- {error.graphQLErrors.map((e) => e.message).join(', ')}
19
- {maskNetworkError(error.networkError)}
23
+ {graphQLErrors.map((e) => e.message).join(', ')}
24
+ {!isGraphQLError && maskNetworkError(error)}
20
25
  </>
21
26
  </ErrorSnackbar>
22
27
  )
@@ -1,24 +1,15 @@
1
- import type { ServerError, ServerParseError } from '@graphcommerce/graphql'
1
+ import type { ErrorLike } from '@apollo/client'
2
+ import { ServerError, ServerParseError } from '@apollo/client/errors'
2
3
  import { Trans } from '@lingui/react/macro'
3
4
 
4
- function isServerError(error: Error | ServerParseError | ServerError | null): error is ServerError {
5
- return 'name' in (error as ServerError)
6
- }
7
-
8
- function isServerParseError(
9
- error: Error | ServerParseError | ServerError | null,
10
- ): error is ServerParseError {
11
- return 'bodyText' in (error as ServerParseError)
12
- }
13
-
14
- export function maskNetworkError(networkError: Error | ServerParseError | ServerError | null) {
15
- if (!networkError) return null
5
+ export function maskNetworkError(error: ErrorLike | null) {
6
+ if (!error) return null
16
7
 
17
8
  if (process.env.NODE_ENV === 'development') {
18
- console.log(networkError)
9
+ console.log(error)
19
10
  }
20
11
 
21
- if (isServerParseError(networkError) || isServerError(networkError)) {
12
+ if (ServerParseError.is(error) || ServerError.is(error)) {
22
13
  return <Trans>Something went wrong on the server, please try again later.</Trans>
23
14
  }
24
15
 
@@ -167,7 +167,7 @@ function NumberFieldElementBase(props: NumberFieldElementProps) {
167
167
  onClick={() => {
168
168
  if (valueAsNumber >= (inputProps.max ?? Infinity)) return
169
169
  // Round to nearest step with precision fix
170
- const newValue = roundToPrecision(Math.round((valueAsNumber - step) / step) * step)
170
+ const newValue = roundToPrecision(Math.round((valueAsNumber + step) / step) * step)
171
171
  onChange(newValue)
172
172
  }}
173
173
  sx={sxx(
@@ -1,10 +1,10 @@
1
- import type { QueryResult } from '@graphcommerce/graphql'
1
+ import type { ApolloClient, useQuery } from '@graphcommerce/graphql'
2
2
  import { useIsSSR } from '@graphcommerce/next-ui'
3
3
  import React from 'react'
4
4
 
5
5
  export type WaitForQueriesProps = {
6
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- waitFor: QueryResult<any, any> | boolean | (QueryResult<any, any> | boolean)[] | undefined
7
+ waitFor: useQuery.Result<any, any> | boolean | (useQuery.Result<any, any> | boolean)[] | undefined
8
8
  children: React.ReactNode
9
9
  fallback?: React.ReactNode
10
10
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@graphcommerce/ecommerce-ui",
3
3
  "homepage": "https://www.graphcommerce.org/",
4
4
  "repository": "github:graphcommerce-org/graphcommerce",
5
- "version": "10.0.0-canary.68",
5
+ "version": "10.0.0-canary.72",
6
6
  "sideEffects": false,
7
7
  "prettier": "@graphcommerce/prettier-config-pwa",
8
8
  "eslintConfig": {
@@ -12,12 +12,12 @@
12
12
  }
13
13
  },
14
14
  "peerDependencies": {
15
- "@graphcommerce/eslint-config-pwa": "^10.0.0-canary.68",
16
- "@graphcommerce/graphql": "^10.0.0-canary.68",
17
- "@graphcommerce/next-ui": "^10.0.0-canary.68",
18
- "@graphcommerce/prettier-config-pwa": "^10.0.0-canary.68",
19
- "@graphcommerce/react-hook-form": "^10.0.0-canary.68",
20
- "@graphcommerce/typescript-config-pwa": "^10.0.0-canary.68",
15
+ "@graphcommerce/eslint-config-pwa": "^10.0.0-canary.72",
16
+ "@graphcommerce/graphql": "^10.0.0-canary.72",
17
+ "@graphcommerce/next-ui": "^10.0.0-canary.72",
18
+ "@graphcommerce/prettier-config-pwa": "^10.0.0-canary.72",
19
+ "@graphcommerce/react-hook-form": "^10.0.0-canary.72",
20
+ "@graphcommerce/typescript-config-pwa": "^10.0.0-canary.72",
21
21
  "@lingui/core": "^5",
22
22
  "@lingui/macro": "^5",
23
23
  "@lingui/react": "^5",