From 09d32aa0a60edd29fc2ee03d3174b225335df6fb Mon Sep 17 00:00:00 2001 From: "artur.filippovskii" Date: Wed, 7 Jan 2026 14:08:23 +0200 Subject: [PATCH 1/8] feat: implement using size prop for sheet component --- src/Sheet/README.md | 14 +++++++++++++- src/Sheet/Sheet.test.jsx | 18 ++++++++++++++++++ src/Sheet/__snapshots__/Sheet.test.jsx.snap | 6 +++--- src/Sheet/index.jsx | 12 +++++++++++- src/Sheet/index.scss | 18 +++++++++++++++++- 5 files changed, 62 insertions(+), 6 deletions(-) diff --git a/src/Sheet/README.md b/src/Sheet/README.md index c7c99bf183..ea0cc01433 100644 --- a/src/Sheet/README.md +++ b/src/Sheet/README.md @@ -19,10 +19,12 @@ notes: | () => { const [blocking, setBlocking] = useState(false); const [dark, setDark] = useState(false); - const [position, setPosition] = useState('bottom'); + const [position, setPosition] = useState('right'); + const [size, setSize] = useState('md'); const [show, setShow] = useState(false); const positions = ['left', 'right', 'top', 'bottom']; + const sizes = ['sm', 'md', 'lg']; return ( <> @@ -35,6 +37,15 @@ notes: | {position} ))}
+ + {sizes.map(s => ( + {s} + ))} +
{' '} @@ -47,6 +58,7 @@ notes: | ', () => { expect(sheetElement).toHaveClass('pgn__sheet-component'); expect(sheetElement).toHaveClass(sheetClass); }); + + it('renders with correct size classes', () => { + const { container: containerSm } = render(); + const sheetSm = containerSm.querySelector('.pgn__sheet-component'); + + expect(sheetSm).toHaveClass('pgn__sheet-sm'); + expect(sheetSm).not.toHaveClass('pgn__sheet-md'); + + const { container: containerLg } = render(); + const sheetLg = containerLg.querySelector('.pgn__sheet-component'); + expect(sheetLg).toHaveClass('pgn__sheet-lg'); + }); + + it('renders default size (md) when no size is provided', () => { + const { container } = render(); + const sheet = container.querySelector('.pgn__sheet-component'); + expect(sheet).toHaveClass('pgn__sheet-md'); + }); }); }); diff --git a/src/Sheet/__snapshots__/Sheet.test.jsx.snap b/src/Sheet/__snapshots__/Sheet.test.jsx.snap index 214d14e086..d9825ea898 100644 --- a/src/Sheet/__snapshots__/Sheet.test.jsx.snap +++ b/src/Sheet/__snapshots__/Sheet.test.jsx.snap @@ -23,7 +23,7 @@ exports[` snapshots blocking, left snapshot 1`] = `
snapshots dark, right snapshot 1`] = `
snapshots default args snapshot: bottom, show, light 1`] = `
{}, variant: VARIANTS.light, diff --git a/src/Sheet/index.scss b/src/Sheet/index.scss index 1420578d55..03d203c290 100644 --- a/src/Sheet/index.scss +++ b/src/Sheet/index.scss @@ -81,8 +81,24 @@ &.left, &.right { - max-width: 272px; height: 100%; top: 0; + width: 100%; + + &.pgn__sheet-sm { + max-width: 272px; + } + + &.pgn__sheet-md { + max-width: 500px; + } + + &.pgn__sheet-lg { + max-width: 800px; + } + + @media (--pgn-size-breakpoint-max-width-xs) { + max-width: 100vw !important; + } } } From fd8a86d3134abd037228114e1fc2f1dd11377ce2 Mon Sep 17 00:00:00 2001 From: "artur.filippovskii" Date: Thu, 8 Jan 2026 10:51:40 +0200 Subject: [PATCH 2/8] fix: space fixes --- src/Sheet/README.md | 24 ++++++++++++------------ src/Sheet/index.scss | 10 +++++----- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Sheet/README.md b/src/Sheet/README.md index ea0cc01433..1ae9a111ba 100644 --- a/src/Sheet/README.md +++ b/src/Sheet/README.md @@ -20,11 +20,11 @@ notes: | const [blocking, setBlocking] = useState(false); const [dark, setDark] = useState(false); const [position, setPosition] = useState('right'); - const [size, setSize] = useState('md'); + const [size, setSize] = useState('md'); const [show, setShow] = useState(false); const positions = ['left', 'right', 'top', 'bottom']; - const sizes = ['sm', 'md', 'lg']; + const sizes = ['sm', 'md', 'lg']; return ( <> @@ -37,15 +37,15 @@ notes: | {position} ))}
- - {sizes.map(s => ( - {s} - ))} -
+ + {sizes.map(s => ( + {s} + ))} +
{' '} @@ -58,7 +58,7 @@ notes: | Date: Mon, 12 Jan 2026 14:49:17 +0200 Subject: [PATCH 3/8] fix: some refactor after review --- src/Sheet/README.md | 2 +- src/Sheet/Sheet.test.jsx | 6 +++--- src/Sheet/index.jsx | 2 +- src/Sheet/index.scss | 10 +++------- tokens/src/core/components/Sheet.json | 8 ++++++++ 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Sheet/README.md b/src/Sheet/README.md index 1ae9a111ba..1c1828da82 100644 --- a/src/Sheet/README.md +++ b/src/Sheet/README.md @@ -19,7 +19,7 @@ notes: | () => { const [blocking, setBlocking] = useState(false); const [dark, setDark] = useState(false); - const [position, setPosition] = useState('right'); + const [position, setPosition] = useState('bottom'); const [size, setSize] = useState('md'); const [show, setShow] = useState(false); diff --git a/src/Sheet/Sheet.test.jsx b/src/Sheet/Sheet.test.jsx index bb1da7caf5..aac1968888 100644 --- a/src/Sheet/Sheet.test.jsx +++ b/src/Sheet/Sheet.test.jsx @@ -1,6 +1,6 @@ import React from 'react'; import renderer from 'react-test-renderer'; -import { render } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import Sheet, { POSITIONS, VARIANTS } from '.'; @@ -127,8 +127,8 @@ describe('', () => { }); it('renders default size (md) when no size is provided', () => { - const { container } = render(); - const sheet = container.querySelector('.pgn__sheet-component'); + render(); + const sheet = screen.getByRole('alert'); expect(sheet).toHaveClass('pgn__sheet-md'); }); }); diff --git a/src/Sheet/index.jsx b/src/Sheet/index.jsx index 16d1e808cc..aa59425cb6 100644 --- a/src/Sheet/index.jsx +++ b/src/Sheet/index.jsx @@ -102,7 +102,7 @@ Sheet.propTypes = { POSITIONS.top, POSITIONS.bottom, ]), - /** A string designation sheet's size */ + /** ize of sheet to render */ size: PropTypes.oneOf([SIZES.sm, SIZES.md, SIZES.lg]), /** Boolean used to control whether the Sheet shows. */ show: PropTypes.bool, diff --git a/src/Sheet/index.scss b/src/Sheet/index.scss index b1b0508cea..a3cb2bfca1 100644 --- a/src/Sheet/index.scss +++ b/src/Sheet/index.scss @@ -86,19 +86,15 @@ width: 100%; &.pgn__sheet-sm { - max-width: 272px; + max-width: var(--pgn-size-sheet-sm); } &.pgn__sheet-md { - max-width: 500px; + max-width: var(--pgn-size-sheet-md); } &.pgn__sheet-lg { - max-width: 800px; - } - - @media (--pgn-size-breakpoint-max-width-xs) { - max-width: 100vw !important; + max-width: var(--pgn-size-sheet-lg); } } } diff --git a/tokens/src/core/components/Sheet.json b/tokens/src/core/components/Sheet.json index 12f8cb0c1b..f51fd3523c 100644 --- a/tokens/src/core/components/Sheet.json +++ b/tokens/src/core/components/Sheet.json @@ -7,5 +7,13 @@ "main": { "source": "$zindex-sheet", "$value": "1032" } } } + }, + "size": { + "$type": "dimension", + "sheet": { + "sm": { "value": "400px" }, + "md": { "value": "500px" }, + "lg": { "value": "800px" } + } } } From 642553e0672436361bee88c4cd619cd14b18b7ed Mon Sep 17 00:00:00 2001 From: "artur.filippovskii" Date: Mon, 12 Jan 2026 15:00:53 +0200 Subject: [PATCH 4/8] fix: best practice for test --- src/Sheet/Sheet.test.jsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Sheet/Sheet.test.jsx b/src/Sheet/Sheet.test.jsx index aac1968888..36930be53b 100644 --- a/src/Sheet/Sheet.test.jsx +++ b/src/Sheet/Sheet.test.jsx @@ -115,14 +115,16 @@ describe('', () => { }); it('renders with correct size classes', () => { - const { container: containerSm } = render(); - const sheetSm = containerSm.querySelector('.pgn__sheet-component'); + const { unmount } = render(); + const sheetSm = screen.getByRole('alert'); expect(sheetSm).toHaveClass('pgn__sheet-sm'); - expect(sheetSm).not.toHaveClass('pgn__sheet-md'); - const { container: containerLg } = render(); - const sheetLg = containerLg.querySelector('.pgn__sheet-component'); + unmount(); + + render(); + const sheetLg = screen.getByRole('alert'); + expect(sheetLg).toHaveClass('pgn__sheet-lg'); }); From 730ddb35fe2fc44781c5d294a2dc32bc1903124c Mon Sep 17 00:00:00 2001 From: "artur.filippovskii" Date: Tue, 13 Jan 2026 11:14:58 +0200 Subject: [PATCH 5/8] fix: some fixed after review --- src/Sheet/README.md | 4 ++-- src/Sheet/index.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Sheet/README.md b/src/Sheet/README.md index 1c1828da82..88b89fc401 100644 --- a/src/Sheet/README.md +++ b/src/Sheet/README.md @@ -42,8 +42,8 @@ notes: | onSelect={setSize} title={`Size: ${size}`} > - {sizes.map(s => ( - {s} + {sizes.map((size) => ( + {size} ))}