Skip to content

Commit 9172f2f

Browse files
authored
docs(popups): allow opening popups via Storybook controls (#6898)
Fixes #6896
1 parent 3ca0458 commit 9172f2f

File tree

5 files changed

+48
-17
lines changed

5 files changed

+48
-17
lines changed

packages/main/src/webComponents/ColorPalettePopover/ColorPalettePopover.stories.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { isChromatic } from '@sb/utils.js';
22
import type { Meta, StoryObj } from '@storybook/react';
3-
import { useRef, useState } from 'react';
3+
import { useEffect, useRef, useState } from 'react';
44
import { Button } from '../Button/index.js';
55
import { ColorPaletteItem } from '../ColorPaletteItem/index.js';
66
import { ColorPalettePopover } from './index.js';
@@ -29,6 +29,11 @@ export const Default: Story = {
2929
const onButtonClick = () => {
3030
setOpen((prev) => !prev);
3131
};
32+
33+
useEffect(() => {
34+
setOpen(args.open);
35+
}, [args.open]);
36+
3237
return (
3338
<>
3439
<Button onClick={onButtonClick} ref={btnRef}>

packages/main/src/webComponents/Popover/Popover.stories.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { Meta, StoryObj } from '@storybook/react';
44
import PopoverHorizontalAlign from '@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js';
55
import PopoverPlacement from '@ui5/webcomponents/dist/types/PopoverPlacement.js';
66
import PopoverVerticalAlign from '@ui5/webcomponents/dist/types/PopoverVerticalAlign.js';
7-
import { useState } from 'react';
7+
import { useEffect, useState } from 'react';
88
import { Button } from '../Button/index.js';
99
import { List } from '../List/index.js';
1010
import { ListItemStandard } from '../ListItemStandard/index.js';
@@ -41,24 +41,29 @@ type Story = StoryObj<typeof meta>;
4141

4242
export const Default: Story = {
4343
render(args) {
44-
const [popoverIsOpen, setPopoverIsOpen] = useState(args.open);
44+
const [open, setOpen] = useState(args.open);
45+
46+
useEffect(() => {
47+
setOpen(args.open);
48+
}, [args.open]);
49+
4550
return (
4651
<>
4752
<Button
4853
id={'openPopoverBtn'}
4954
onClick={() => {
50-
setPopoverIsOpen(true);
55+
setOpen(true);
5156
}}
5257
>
5358
Open Popover
5459
</Button>
5560
<Popover
5661
{...args}
5762
onClose={() => {
58-
setPopoverIsOpen(false);
63+
setOpen(false);
5964
}}
6065
opener="openPopoverBtn"
61-
open={popoverIsOpen}
66+
open={open}
6267
/>
6368
</>
6469
);

packages/main/src/webComponents/ResponsivePopover/ResponsivePopover.stories.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Meta, StoryObj } from '@storybook/react';
33
import PopoverHorizontalAlign from '@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js';
44
import PopoverPlacement from '@ui5/webcomponents/dist/types/PopoverPlacement.js';
55
import PopoverVerticalAlign from '@ui5/webcomponents/dist/types/PopoverVerticalAlign.js';
6-
import { useState } from 'react';
6+
import { useEffect, useState } from 'react';
77
import { Button } from '../Button/index.js';
88
import { List } from '../List/index.js';
99
import { ListItemStandard } from '../ListItemStandard/index.js';
@@ -42,24 +42,29 @@ type Story = StoryObj<typeof meta>;
4242

4343
export const Default: Story = {
4444
render(args) {
45-
const [responsivePopoverIsOpen, setResponsivePopoverIsOpen] = useState(args.open);
45+
const [open, setOpen] = useState(args.open);
46+
47+
useEffect(() => {
48+
setOpen(args.open);
49+
}, [args.open]);
50+
4651
return (
4752
<>
4853
<Button
4954
id={'openResponsivePopoverBtn'}
5055
onClick={() => {
51-
setResponsivePopoverIsOpen(true);
56+
setOpen(true);
5257
}}
5358
>
5459
Open Popover
5560
</Button>
5661
<ResponsivePopover
5762
{...args}
5863
onClose={() => {
59-
setResponsivePopoverIsOpen(false);
64+
setOpen(false);
6065
}}
6166
opener="openResponsivePopoverBtn"
62-
open={responsivePopoverIsOpen}
67+
open={open}
6368
/>
6469
</>
6570
);

packages/main/src/webComponents/UserMenu/UserMenu.stories.tsx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Meta, StoryObj } from '@storybook/react';
2-
import { useRef } from 'react';
2+
import { useEffect, useRef, useState } from 'react';
33
import { Avatar } from '../Avatar/index.js';
44
import { ShellBar } from '../ShellBar/index.js';
55
import { UserMenuAccount } from '../UserMenuAccount/index.js';
@@ -13,9 +13,7 @@ const meta = {
1313
argTypes: {
1414
children: { control: { disable: true } },
1515
opener: { control: { disable: true } },
16-
accounts: { control: { disable: true } },
17-
//todo: enable again once `close` event is exposed and the story is adjusted accordingly
18-
open: { control: { disable: true } }
16+
accounts: { control: { disable: true } }
1917
},
2018
args: {
2119
accounts: (
@@ -60,6 +58,11 @@ type Story = StoryObj<typeof meta>;
6058
export const Default: Story = {
6159
render(args) {
6260
const userMenuRef = useRef<UserMenuDomRef>(null);
61+
const [open, setOpen] = useState(args.open);
62+
63+
useEffect(() => {
64+
setOpen(args.open);
65+
}, [args.open]);
6366
return (
6467
<>
6568
<ShellBar
@@ -76,9 +79,17 @@ export const Default: Story = {
7679
onProfileClick={(event) => {
7780
userMenuRef.current.opener = event.detail.targetRef;
7881
userMenuRef.current.open = true;
82+
setOpen(true);
83+
}}
84+
/>
85+
<UserMenu
86+
ref={userMenuRef}
87+
{...args}
88+
open={open}
89+
onClose={() => {
90+
setOpen(false);
7991
}}
8092
/>
81-
<UserMenu ref={userMenuRef} {...args} />
8293
</>
8394
);
8495
}

packages/main/src/webComponents/ViewSettingsDialog/ViewSettingsDialog.stories.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { isChromatic } from '@sb/utils.js';
22
import type { Meta, StoryObj } from '@storybook/react';
3-
import { useState } from 'react';
3+
import { useEffect, useState } from 'react';
44
import { Button } from '../Button/index.js';
55
import { FilterItem } from '../FilterItem/index.js';
66
import { FilterItemOption } from '../FilterItemOption/index.js';
@@ -61,6 +61,11 @@ type Story = StoryObj<typeof meta>;
6161
export const Default: Story = {
6262
render: (args) => {
6363
const [open, setOpen] = useState(args.open);
64+
65+
useEffect(() => {
66+
setOpen(args.open);
67+
}, [args.open]);
68+
6469
return (
6570
<>
6671
<Button

0 commit comments

Comments
 (0)