@graphcommerce/next-ui 3.20.8 → 3.21.2

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.
@@ -0,0 +1,35 @@
1
+ import { ApolloError } from '@apollo/client'
2
+ import { Trans } from '@lingui/macro'
3
+ import Button from '../Button'
4
+ import MessageSnackbar from '../Snackbar/MessageSnackbar'
5
+ import { MessageSnackbarImplProps } from '../Snackbar/MessageSnackbarImpl'
6
+
7
+ export type ApolloErrorSnackbarProps = {
8
+ error?: ApolloError
9
+ } & Pick<MessageSnackbarImplProps, 'action' | 'onClose'>
10
+
11
+ export default function ApolloErrorSnackbar(props: ApolloErrorSnackbarProps) {
12
+ const { error, action, ...passedProps } = props
13
+
14
+ if (!error) return null
15
+ return (
16
+ <MessageSnackbar
17
+ variant='pill'
18
+ severity='error'
19
+ {...passedProps}
20
+ open={!!error}
21
+ action={
22
+ action ?? (
23
+ <Button size='medium' variant='pill' color='secondary'>
24
+ <Trans>Ok</Trans>
25
+ </Button>
26
+ )
27
+ }
28
+ >
29
+ <>
30
+ {error.graphQLErrors.map((e) => e.message)}
31
+ {error.networkError && <>Network Error: {error.networkError.message}</>}
32
+ </>
33
+ </MessageSnackbar>
34
+ )
35
+ }
@@ -0,0 +1,6 @@
1
+ export * from './ApolloErrorAlert'
2
+ export { default as ApolloErrorAlert } from './ApolloErrorAlert'
3
+ export * from './ApolloErrorFullPage'
4
+ export { default as ApolloErrorFullPage } from './ApolloErrorFullPage'
5
+ export * from './ApolloErrorSnackbar'
6
+ export { default as ApolloErrorSnackbar } from './ApolloErrorSnackbar'
@@ -4,7 +4,7 @@ import React from 'react'
4
4
 
5
5
  export type GlobalHeadProps = { name: string }
6
6
 
7
- const GlobalHead = (props: { name: string }) => {
7
+ export function GlobalHead(props: GlobalHeadProps) {
8
8
  const { name } = props
9
9
  const theme = useTheme()
10
10
 
@@ -32,5 +32,3 @@ const GlobalHead = (props: { name: string }) => {
32
32
  </Head>
33
33
  )
34
34
  }
35
-
36
- export default GlobalHead
@@ -17,7 +17,7 @@ import { responsiveVal } from '../Styles/responsiveVal'
17
17
  import SvgImageSimple from '../SvgImage/SvgImageSimple'
18
18
  import { iconMenu, iconClose } from '../icons'
19
19
  import { MenuProps } from './Menu'
20
- import useFabAnimation from './useFabAnimation'
20
+ import { useFabAnimation } from './useFabAnimation'
21
21
 
22
22
  const useStyles = makeStyles(
23
23
  (theme: Theme) => ({
@@ -17,7 +17,7 @@ export type FabMenuSecondaryItemProps = {
17
17
  icon: React.ReactNode
18
18
  }
19
19
 
20
- export default function MenuFabSecondaryItem(props: FabMenuSecondaryItemProps) {
20
+ export function MenuFabSecondaryItem(props: FabMenuSecondaryItemProps) {
21
21
  const { href, children, icon } = props
22
22
  const classes = useStyles()
23
23
 
@@ -11,9 +11,7 @@ export * from './Menu'
11
11
  export * from './MenuFab'
12
12
  export { default as MenuFab } from './MenuFab'
13
13
  export * from './MenuFabSecondaryItem'
14
- export { default as MenuFabSecondaryItem } from './MenuFabSecondaryItem'
15
14
  export * from './PlaceholderFab'
16
15
  export * from './GlobalHead'
17
- export { default as GlobalHead } from './GlobalHead'
18
- export { default as useFabAnimation } from './useFabAnimation'
19
- export { default as useFixedFabAnimation } from './useFixedFabAnimation'
16
+ export * from './useFabAnimation'
17
+ export * from './useFixedFabAnimation'
@@ -2,7 +2,7 @@ import { useMediaQuery, useTheme } from '@material-ui/core'
2
2
  import { useMotionTemplate, useTransform } from 'framer-motion'
3
3
  import { useScrollY } from '../Layout/hooks/useScrollY'
4
4
 
5
- export default function useFabAnimation() {
5
+ export function useFabAnimation() {
6
6
  const theme = useTheme()
7
7
  const isMobile = useMediaQuery(theme.breakpoints.down('sm'))
8
8
  const scrollY = useScrollY()
@@ -2,7 +2,7 @@ import { alpha, useTheme } from '@material-ui/core'
2
2
  import { useMotionTemplate, useTransform } from 'framer-motion'
3
3
  import { useScrollY } from '../Layout/hooks/useScrollY'
4
4
 
5
- export default function useFixedFabAnimation() {
5
+ export function useFixedFabAnimation() {
6
6
  const theme = useTheme()
7
7
  const scrollY = useScrollY()
8
8
  const opacity = useTransform(scrollY, [50, 60], [0, 1])
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.21.1](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.21.0...@graphcommerce/next-ui@3.21.1) (2021-12-17)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * darkMode fixes ([7d33d45](https://github.com/ho-nl/m2-pwa/commit/7d33d452ec801632565839b2fdfef0bc4959c14a))
12
+
13
+
14
+
15
+
16
+
17
+ # [3.21.0](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.20.9...@graphcommerce/next-ui@3.21.0) (2021-12-17)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * Form contained should be less spacious ([7d9557e](https://github.com/ho-nl/m2-pwa/commit/7d9557e9a75622a3dc40a3c7aab86da152d2e399))
23
+ * make sure the snackbar message is formatted correctly ([b9e1e26](https://github.com/ho-nl/m2-pwa/commit/b9e1e2623ec2aff6b623603aa38fe8d71ff59e1c))
24
+
25
+
26
+ ### Features
27
+
28
+ * added ApolloErrorSnackbar ([96bc92e](https://github.com/ho-nl/m2-pwa/commit/96bc92e24bac735b28f5f32e1154f715ddf8cd6c))
29
+
30
+
31
+
32
+
33
+
34
+ ## [3.20.9](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.20.8...@graphcommerce/next-ui@3.20.9) (2021-12-16)
35
+
36
+
37
+ ### Bug Fixes
38
+
39
+ * simplify ButtonLinkList and made more flexible ([e01cc82](https://github.com/ho-nl/m2-pwa/commit/e01cc825b87abf81d1cb8f9dc976f674b9e8e6d3))
40
+
41
+
42
+
43
+
44
+
6
45
  ## [3.20.8](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.20.7...@graphcommerce/next-ui@3.20.8) (2021-12-15)
7
46
 
8
47
 
package/Form/index.tsx CHANGED
@@ -18,10 +18,10 @@ const useStyles = makeStyles(
18
18
  background:
19
19
  theme.palette.type === 'light'
20
20
  ? darken(theme.palette.background.default, 0.03)
21
- : lighten(theme.palette.background.default, 0.2),
21
+ : lighten(theme.palette.background.default, 0.1),
22
22
  },
23
23
  contained: {
24
- padding: theme.spacings.sm,
24
+ padding: `${theme.spacings.xxs} ${theme.spacings.sm}`,
25
25
  // paddingTop: theme.spacings.md,
26
26
  overflow: 'hidden',
27
27
  borderRadius: responsiveVal(theme.shape.borderRadius * 3, theme.shape.borderRadius * 4),
@@ -11,12 +11,11 @@ import {
11
11
  } from '@graphcommerce/framer-scroller'
12
12
  import { clientSize, useMotionValueValue } from '@graphcommerce/framer-utils'
13
13
  import { Fab, makeStyles, Theme, useTheme, alpha } from '@material-ui/core'
14
- import clsx from 'clsx'
15
14
  import { m, useDomEvent, useMotionValue } from 'framer-motion'
16
15
  import React, { useEffect, useRef } from 'react'
17
- import { classesPicker } from '../..'
18
16
  import Row from '../../Row'
19
17
  import { UseStyles } from '../../Styles'
18
+ import { classesPicker } from '../../Styles/classesPicker'
20
19
  import { responsiveVal } from '../../Styles/responsiveVal'
21
20
  import SvgImageSimple from '../../SvgImage/SvgImageSimple'
22
21
  import { iconChevronLeft, iconChevronRight, iconFullscreen, iconFullscreenExit } from '../../icons'
@@ -291,6 +291,7 @@ export function LayoutOverlayBase(props: LayoutOverlayBaseProps) {
291
291
  // The scroller context shouldn't be changing, but at the moment it is.
292
292
  }, [positions, scrollerRef])
293
293
 
294
+ // When the overlay is closed by navigating away, we're closing the overlay.
294
295
  useEffect(() => {
295
296
  if (isPresent) return
296
297
 
@@ -32,20 +32,20 @@ const useStyles = makeStyles(
32
32
 
33
33
  type ButtonLinkListPropsBase = {
34
34
  title: string
35
- links: React.ReactNode
35
+ children: React.ReactNode
36
36
  containsBigLinks: boolean
37
37
  }
38
38
 
39
39
  export type ButtonLinkListProps = UseStyles<typeof useStyles> & ButtonLinkListPropsBase
40
40
 
41
- export default function ButtonLinkList(props: ButtonLinkListProps) {
42
- const { title, links } = props
41
+ export function ButtonLinkList(props: ButtonLinkListProps) {
42
+ const { title, children } = props
43
43
  const classes = useStyles(props)
44
44
 
45
45
  return (
46
46
  <Row maxWidth='md' className={classes.container}>
47
47
  <SectionContainer labelLeft={title}>
48
- <div className={classes.links}>{links}</div>
48
+ <div className={classes.links}>{children}</div>
49
49
  </SectionContainer>
50
50
  </Row>
51
51
  )
@@ -1,10 +1,11 @@
1
1
  import { makeStyles, Theme } from '@material-ui/core'
2
+ import clsx from 'clsx'
2
3
  import PageLink from 'next/link'
3
4
  import React from 'react'
4
- import Button, { ButtonProps } from '../Button'
5
- import { UseStyles } from '../Styles'
6
- import SvgImageSimple from '../SvgImage/SvgImageSimple'
7
- import { iconChevronRight } from '../icons'
5
+ import Button, { ButtonProps } from '../../Button'
6
+ import { UseStyles } from '../../Styles'
7
+ import SvgImageSimple from '../../SvgImage/SvgImageSimple'
8
+ import { iconChevronRight } from '../../icons'
8
9
 
9
10
  const useStyles = makeStyles((theme: Theme) => ({
10
11
  buttonLink: {
@@ -24,20 +25,20 @@ const useStyles = makeStyles((theme: Theme) => ({
24
25
  }))
25
26
 
26
27
  export type ButtonLinkProps = {
27
- title: string | React.ReactNode
28
+ children: React.ReactNode
28
29
  url: string
29
30
  endIcon?: React.ReactNode
30
31
  } & ButtonProps &
31
32
  UseStyles<typeof useStyles>
32
33
 
33
- export default function ButtonLink(props: ButtonLinkProps) {
34
- const { title, url, endIcon, ...buttonProps } = props
34
+ export function ButtonLinkListItem(props: ButtonLinkProps) {
35
+ const { children, url, endIcon, className, ...buttonProps } = props
35
36
  const classes = useStyles(props)
36
37
 
37
38
  return (
38
39
  <PageLink href={url} passHref>
39
- <Button {...buttonProps} className={classes.buttonLink}>
40
- <span>{title}</span>
40
+ <Button {...buttonProps} className={clsx(classes.buttonLink, className)}>
41
+ <span>{children}</span>
41
42
  {endIcon ?? <SvgImageSimple src={iconChevronRight} />}
42
43
  </Button>
43
44
  </PageLink>
@@ -0,0 +1,2 @@
1
+ export * from './ButtonLinkList'
2
+ export * from './ButtonLinkListItem'
@@ -51,10 +51,12 @@ const useStyles = makeStyles(
51
51
  gap: theme.spacings.xs,
52
52
  gridTemplate: `
53
53
  "children close"
54
- "action action"
54
+ "action action"
55
55
  `,
56
+ gridTemplateColumns: '1fr auto',
56
57
  [theme.breakpoints.up('md')]: {
57
58
  gridTemplate: `"children action close"`,
59
+ gridTemplateColumns: 'auto auto auto',
58
60
  },
59
61
  },
60
62
  children: {
package/index.ts CHANGED
@@ -6,10 +6,7 @@ export * from './Footer'
6
6
 
7
7
  export * from './AnimatedRow'
8
8
  export { default as AnimatedRow } from './AnimatedRow'
9
- export * from './ApolloError/ApolloErrorAlert'
10
- export { default as ApolloErrorAlert } from './ApolloError/ApolloErrorAlert'
11
- export * from './ApolloError/ApolloErrorFullPage'
12
- export { default as ApolloErrorFullPage } from './ApolloError/ApolloErrorFullPage'
9
+ export * from './ApolloError'
13
10
  export * from './AspectRatioContainer'
14
11
  export { default as AspectRationContainer } from './AspectRatioContainer'
15
12
  export * from './Blog/BlogContent'
@@ -27,8 +24,7 @@ export * from './Blog/BlogListItem'
27
24
  export { default as BlogListItem } from './Blog/BlogListItem'
28
25
  export * from './Button'
29
26
  export { default as Button } from './Button'
30
- export * from './ButtonLink'
31
- export { default as ButtonLink } from './ButtonLink'
27
+
32
28
  export * from './ChipMenu'
33
29
  export { default as ChipMenu } from './ChipMenu'
34
30
  export * from './ContainerWithHeader'
@@ -66,7 +62,6 @@ export * from './RenderType'
66
62
  export { default as RenderType } from './RenderType'
67
63
  export { default as Row } from './Row'
68
64
  export * from './Row/ButtonLinkList'
69
- export { default as ButtonLinkList } from './Row/ButtonLinkList'
70
65
  export { default as ColumnOne } from './Row/ColumnOne'
71
66
  export { default as ColumnOneBoxed } from './Row/ColumnOneBoxed'
72
67
  export { default as ColumnOneCentered } from './Row/ColumnOneCentered'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphcommerce/next-ui",
3
- "version": "3.20.8",
3
+ "version": "3.21.2",
4
4
  "author": "",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -10,11 +10,11 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@apollo/client": "^3.5.6",
13
- "@graphcommerce/framer-next-pages": "^2.108.3",
14
- "@graphcommerce/framer-scroller": "^1.1.8",
15
- "@graphcommerce/framer-utils": "^2.103.19",
16
- "@graphcommerce/graphql": "^2.105.8",
17
- "@graphcommerce/image": "^2.105.8",
13
+ "@graphcommerce/framer-next-pages": "^2.108.5",
14
+ "@graphcommerce/framer-scroller": "^1.1.12",
15
+ "@graphcommerce/framer-utils": "^2.103.20",
16
+ "@graphcommerce/graphql": "^2.105.10",
17
+ "@graphcommerce/image": "^2.105.9",
18
18
  "@lingui/macro": "^3.13.0",
19
19
  "@material-ui/core": "^4.12.3",
20
20
  "@material-ui/lab": "^4.0.0-alpha.60",
@@ -32,10 +32,10 @@
32
32
  "type-fest": "^2.8.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@graphcommerce/browserslist-config-pwa": "^3.0.2",
36
- "@graphcommerce/eslint-config-pwa": "^3.1.8",
37
- "@graphcommerce/prettier-config-pwa": "^3.0.4",
38
- "@graphcommerce/typescript-config-pwa": "^3.1.1",
35
+ "@graphcommerce/browserslist-config-pwa": "^3.0.3",
36
+ "@graphcommerce/eslint-config-pwa": "^3.1.9",
37
+ "@graphcommerce/prettier-config-pwa": "^3.0.5",
38
+ "@graphcommerce/typescript-config-pwa": "^3.1.2",
39
39
  "@playwright/test": "^1.17.1",
40
40
  "@types/react-is": "^17.0.3",
41
41
  "graphql-tag": "2.12.6",
@@ -52,5 +52,5 @@
52
52
  "project": "./tsconfig.json"
53
53
  }
54
54
  },
55
- "gitHead": "a69bd94ffdcca6ca9487eec1cafe9ade3fcdffa3"
55
+ "gitHead": "06b4426d199de9ec2a9d2ac86d42ab047e59e7e7"
56
56
  }