@graphcommerce/next-ui 3.20.5 → 3.20.9

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
@@ -3,6 +3,42 @@
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.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)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * simplify ButtonLinkList and made more flexible ([e01cc82](https://github.com/ho-nl/m2-pwa/commit/e01cc825b87abf81d1cb8f9dc976f674b9e8e6d3))
12
+
13
+
14
+
15
+
16
+
17
+ ## [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)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * could not scroll to the bottom of a left/right sheet ([b84c86e](https://github.com/ho-nl/m2-pwa/commit/b84c86efa090657fc4cd480547f576bf6d9e0709))
23
+ * scroller should not snap to off-axis while dragging and direction isn't set to both ([9118bfc](https://github.com/ho-nl/m2-pwa/commit/9118bfcb1eb9ade5f144167e47e0c26724ce832f))
24
+
25
+
26
+
27
+
28
+
29
+ ## [3.20.7](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.20.6...@graphcommerce/next-ui@3.20.7) (2021-12-13)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * header style color ([ea373be](https://github.com/ho-nl/m2-pwa/commit/ea373be9dbf609e0a719b000d27ad79d2be45f65))
35
+ * make sure we're allowed to scroll all the way down ([16ee45d](https://github.com/ho-nl/m2-pwa/commit/16ee45d8bea8072388dc1508e48704be5a84c4ec))
36
+ * overlay didn't handle portals correctly and closed the overlay ([3cef4e7](https://github.com/ho-nl/m2-pwa/commit/3cef4e73042fd836fc776dad17abcc39d7403eee))
37
+
38
+
39
+
40
+
41
+
6
42
  ## [3.20.5](https://github.com/ho-nl/m2-pwa/compare/@graphcommerce/next-ui@3.20.4...@graphcommerce/next-ui@3.20.5) (2021-12-06)
7
43
 
8
44
 
@@ -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'
@@ -16,8 +16,8 @@ const useStyles = makeStyles(
16
16
  position: 'absolute',
17
17
  left: 0,
18
18
  width: '100%',
19
- backgroundColor: theme.palette.background.default,
20
- boxShadow: theme.shadows[2],
19
+ backgroundColor: theme.palette.background.paper,
20
+ boxShadow: theme.shadows[1],
21
21
  opacity: 0,
22
22
  transition: `opacity ${time}`,
23
23
 
@@ -11,9 +11,9 @@ export function LayoutOverlay(props: LayoutOverlayProps) {
11
11
  const { children, variantSm = 'bottom', variantMd = 'right', classes } = props
12
12
 
13
13
  const scrollSnapTypeSm: ScrollSnapType =
14
- variantSm === 'left' || variantSm === 'right' ? 'both mandatory' : 'block proximity'
14
+ variantSm === 'left' || variantSm === 'right' ? 'inline mandatory' : 'block proximity'
15
15
  const scrollSnapTypeMd: ScrollSnapType =
16
- variantMd === 'left' || variantMd === 'right' ? 'both mandatory' : 'block proximity'
16
+ variantMd === 'left' || variantMd === 'right' ? 'inline mandatory' : 'block proximity'
17
17
 
18
18
  return (
19
19
  <ScrollerProvider scrollSnapTypeSm={scrollSnapTypeSm} scrollSnapTypeMd={scrollSnapTypeMd}>
@@ -28,48 +28,44 @@ const useStyles = makeStyles(
28
28
  },
29
29
  [theme.breakpoints.down('sm')]: {
30
30
  width: '100vw',
31
- borderRadius: theme.shape.borderRadius * 3,
32
31
  },
33
32
  [theme.breakpoints.up('md')]: {
34
33
  width: '100vw',
35
- borderRadius: theme.shape.borderRadius * 4,
36
34
  },
37
35
  },
38
36
  rootVariantSmLeft: {
39
37
  [theme.breakpoints.down('sm')]: {
40
- gridTemplate: `
41
- "overlay beforeOverlay"
42
- "afterOverlay afterOverlay"
43
- `,
38
+ gridTemplate: `"overlay beforeOverlay"`,
39
+ borderTopRightRadius: theme.shape.borderRadius * 3,
40
+ borderBottomRightRadius: theme.shape.borderRadius * 3,
44
41
  },
45
42
  },
46
43
  rootVariantMdLeft: {
47
44
  [theme.breakpoints.up('md')]: {
48
- gridTemplate: `
49
- "overlay beforeOverlay"
50
- "afterOverlay afterOverlay"
51
- `,
45
+ gridTemplate: `"overlay beforeOverlay"`,
46
+ borderTopRightRadius: theme.shape.borderRadius * 4,
47
+ borderBottomRightRadius: theme.shape.borderRadius * 4,
52
48
  },
53
49
  },
54
50
  rootVariantSmRight: {
55
51
  [theme.breakpoints.down('sm')]: {
56
- gridTemplate: `
57
- "beforeOverlay overlay"
58
- "afterOverlay afterOverlay"
59
- `,
52
+ gridTemplate: `"beforeOverlay overlay"`,
53
+ borderTopLeftRadius: theme.shape.borderRadius * 3,
54
+ borderBottomLeftRadius: theme.shape.borderRadius * 3,
60
55
  },
61
56
  },
62
57
  rootVariantMdRight: {
63
58
  [theme.breakpoints.up('md')]: {
64
- gridTemplate: `
65
- "beforeOverlay overlay"
66
- "afterOverlay afterOverlay"
67
- `,
59
+ gridTemplate: `"beforeOverlay overlay"`,
60
+ borderTopLeftRadius: theme.shape.borderRadius * 4,
61
+ borderBottomLeftRadius: theme.shape.borderRadius * 4,
68
62
  },
69
63
  },
70
64
  rootVariantSmBottom: {
71
65
  [theme.breakpoints.down('sm')]: {
72
- gridTemplate: `"beforeOverlay" "overlay" "afterOverlay"`,
66
+ borderTopLeftRadius: theme.shape.borderRadius * 3,
67
+ borderTopRightRadius: theme.shape.borderRadius * 3,
68
+ gridTemplate: `"beforeOverlay" "overlay"`,
73
69
  height: '100vh',
74
70
  '@supports (-webkit-touch-callout: none)': {
75
71
  height: '-webkit-fill-available',
@@ -77,15 +73,16 @@ const useStyles = makeStyles(
77
73
  },
78
74
  },
79
75
  rootVariantMdBottom: {
76
+ borderTopLeftRadius: theme.shape.borderRadius * 4,
77
+ borderTopRightRadius: theme.shape.borderRadius * 4,
80
78
  [theme.breakpoints.up('md')]: {
81
- gridTemplate: `"beforeOverlay" "overlay" "afterOverlay"`,
79
+ gridTemplate: `"beforeOverlay" "overlay"`,
82
80
  height: '100vh',
83
81
  },
84
82
  },
85
83
  beforeOverlay: {
86
84
  gridArea: 'beforeOverlay',
87
85
  scrollSnapAlign: 'start',
88
- scrollSnapStop: 'always',
89
86
  display: 'grid',
90
87
  alignContent: 'end',
91
88
  },
@@ -138,7 +135,6 @@ const useStyles = makeStyles(
138
135
  [theme.breakpoints.down('sm')]: {
139
136
  marginTop: `calc(${theme.appShell.headerHeightSm} * 0.5 * -1)`,
140
137
  paddingTop: `calc(${theme.appShell.headerHeightSm} * 0.5)`,
141
- scrollSnapStop: 'always',
142
138
  display: 'grid',
143
139
  },
144
140
  },
@@ -146,8 +142,6 @@ const useStyles = makeStyles(
146
142
  [theme.breakpoints.up('md')]: {
147
143
  marginTop: `calc(${theme.appShell.headerHeightMd} + (${theme.appShell.appBarHeightMd} - ${theme.appShell.appBarInnerHeightMd}) * 0.5)`,
148
144
  paddingTop: `calc(${theme.appShell.headerHeightMd} + (${theme.appShell.appBarHeightMd} - ${theme.appShell.appBarInnerHeightMd}) * -0.5)`,
149
- scrollSnapAlign: 'start',
150
- scrollSnapStop: 'always',
151
145
  display: 'grid',
152
146
  },
153
147
  },
@@ -156,17 +150,20 @@ const useStyles = makeStyles(
156
150
  backgroundColor: theme.palette.background.paper,
157
151
  boxShadow: theme.shadows[24],
158
152
  minWidth: 'min(800px, 90vw)',
153
+ scrollSnapAlign: 'end',
159
154
  },
160
155
  overlayPaneVariantSmBottom: {
161
156
  [theme.breakpoints.down('sm')]: {
162
157
  width: '100vw',
163
- borderRadius: theme.shape.borderRadius * 3,
158
+ borderTopLeftRadius: theme.shape.borderRadius * 3,
159
+ borderTopRightRadius: theme.shape.borderRadius * 3,
164
160
  },
165
161
  },
166
162
  overlayPaneVariantMdBottom: {
167
163
  [theme.breakpoints.up('md')]: {
168
164
  width: '100vw',
169
- borderRadius: theme.shape.borderRadius * 4,
165
+ borderTopLeftRadius: theme.shape.borderRadius * 3,
166
+ borderTopRightRadius: theme.shape.borderRadius * 3,
170
167
  },
171
168
  },
172
169
  overlayPaneVariantSmLeft: {
@@ -200,15 +197,12 @@ const useStyles = makeStyles(
200
197
  [theme.breakpoints.up('md')]: {
201
198
  paddingBottom: 1,
202
199
  minHeight: '100vh',
200
+ scrollSnapAlign: 'end',
203
201
  '@supports (-webkit-touch-callout: none)': {
204
202
  minHeight: '-webkit-fill-available',
205
203
  },
206
204
  },
207
205
  },
208
- afterOverlay: {
209
- gridArea: 'afterOverlay',
210
- scrollSnapAlign: 'start',
211
- },
212
206
  backdrop: {
213
207
  zIndex: -1,
214
208
  position: 'fixed',
@@ -343,19 +337,26 @@ export function LayoutOverlayBase(props: LayoutOverlayBaseProps) {
343
337
  ([y, openY, offsetYv]: number[]) => Math.max(0, y - openY - offsetYv + offsetPageY),
344
338
  )
345
339
 
340
+ const onClickAway = useCallback(
341
+ (event: React.MouseEvent<Document>) => {
342
+ if (event.target === document.body && event.type === 'click') return
343
+ closeOverlay()
344
+ },
345
+ [closeOverlay],
346
+ )
347
+
346
348
  return (
347
349
  <>
348
350
  <m.div {...className('backdrop')} style={{ opacity: positions.open.visible }} />
349
351
  <Scroller {...className('root')} grid={false} hideScrollbar>
350
352
  <div {...className('beforeOverlay')} />
351
353
  <div {...className('overlay')} ref={overlayRef}>
352
- <ClickAwayListener onClickAway={closeOverlay}>
354
+ <ClickAwayListener onClickAway={onClickAway}>
353
355
  <div {...className('overlayPane')}>
354
356
  <LayoutProvider scroll={scrollWithoffset}>{children}</LayoutProvider>
355
357
  </div>
356
358
  </ClickAwayListener>
357
359
  </div>
358
- <div {...className('afterOverlay')} />
359
360
  </Scroller>
360
361
  </>
361
362
  )
@@ -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'
package/index.ts CHANGED
@@ -27,8 +27,7 @@ export * from './Blog/BlogListItem'
27
27
  export { default as BlogListItem } from './Blog/BlogListItem'
28
28
  export * from './Button'
29
29
  export { default as Button } from './Button'
30
- export * from './ButtonLink'
31
- export { default as ButtonLink } from './ButtonLink'
30
+
32
31
  export * from './ChipMenu'
33
32
  export { default as ChipMenu } from './ChipMenu'
34
33
  export * from './ContainerWithHeader'
@@ -66,7 +65,6 @@ export * from './RenderType'
66
65
  export { default as RenderType } from './RenderType'
67
66
  export { default as Row } from './Row'
68
67
  export * from './Row/ButtonLinkList'
69
- export { default as ButtonLinkList } from './Row/ButtonLinkList'
70
68
  export { default as ColumnOne } from './Row/ColumnOne'
71
69
  export { default as ColumnOneBoxed } from './Row/ColumnOneBoxed'
72
70
  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.5",
3
+ "version": "3.20.9",
4
4
  "author": "",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -9,37 +9,37 @@
9
9
  "start": "next start"
10
10
  },
11
11
  "dependencies": {
12
- "@apollo/client": "^3.4.16",
13
- "@graphcommerce/framer-next-pages": "^2.108.0",
14
- "@graphcommerce/framer-scroller": "^1.1.5",
15
- "@graphcommerce/framer-utils": "^2.103.16",
16
- "@graphcommerce/graphql": "^2.105.6",
17
- "@graphcommerce/image": "^2.105.5",
18
- "@lingui/macro": "^3.12.1",
12
+ "@apollo/client": "^3.5.6",
13
+ "@graphcommerce/framer-next-pages": "^2.108.3",
14
+ "@graphcommerce/framer-scroller": "^1.1.9",
15
+ "@graphcommerce/framer-utils": "^2.103.19",
16
+ "@graphcommerce/graphql": "^2.105.8",
17
+ "@graphcommerce/image": "^2.105.8",
18
+ "@lingui/macro": "^3.13.0",
19
19
  "@material-ui/core": "^4.12.3",
20
20
  "@material-ui/lab": "^4.0.0-alpha.60",
21
21
  "@material-ui/styles": "^4.11.4",
22
22
  "clsx": "^1.1.1",
23
- "framer-motion": "^4.1.17",
24
- "graphql": "^15.6.1",
25
- "next": "^12.0.3",
23
+ "framer-motion": "^5.5.1",
24
+ "graphql": "^16.1.0",
25
+ "next": "^12.0.7",
26
26
  "react": "^17.0.2",
27
27
  "react-dom": "^17.0.2",
28
- "react-focus-lock": "^2.5.2",
28
+ "react-focus-lock": "^2.7.1",
29
29
  "react-is": "^17.0.2",
30
30
  "react-schemaorg": "^2.0.0",
31
31
  "schema-dts": "^1.0.0",
32
- "type-fest": "^2.5.1"
32
+ "type-fest": "^2.8.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@graphcommerce/browserslist-config-pwa": "^3.0.2",
36
- "@graphcommerce/eslint-config-pwa": "^3.1.6",
36
+ "@graphcommerce/eslint-config-pwa": "^3.1.8",
37
37
  "@graphcommerce/prettier-config-pwa": "^3.0.4",
38
38
  "@graphcommerce/typescript-config-pwa": "^3.1.1",
39
- "@playwright/test": "^1.16.2",
39
+ "@playwright/test": "^1.17.1",
40
40
  "@types/react-is": "^17.0.3",
41
- "graphql-tag": "2.12.5",
42
- "typescript": "^4.4.4"
41
+ "graphql-tag": "2.12.6",
42
+ "typescript": "^4.5.4"
43
43
  },
44
44
  "sideEffects": false,
45
45
  "prettier": "@graphcommerce/prettier-config-pwa",
@@ -52,5 +52,5 @@
52
52
  "project": "./tsconfig.json"
53
53
  }
54
54
  },
55
- "gitHead": "9a8007742437e8d0d88e60376c3402a46f20908d"
55
+ "gitHead": "874fc99dcc129872cd7577482ab26c5ea256a7fb"
56
56
  }