Skip to content

Commit c2a1808

Browse files
committed
Clean up integration of interactors and storybook inspector
1 parent aff3331 commit c2a1808

File tree

8 files changed

+23
-106
lines changed

8 files changed

+23
-106
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = {
22
stories: ["../stories/**/*.stories.@(md|ts)x"],
3-
addons: ["@storybook/addon-postcss", "@storybook/addon-essentials"],
4-
features: { previewCsfV3: true },
3+
addons: ["@storybook/addon-postcss", "@storybook/addon-essentials", '@storybook/addon-interactions'],
4+
features: { previewCsfV3: true, interactionsDebugger: true },
55
core: { builder: "webpack5" },
66
typescript: { reactDocgen: false },
77
};
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
1+
import Events from "@storybook/core-events";
2+
import { addons } from "@storybook/addons";
13
import { instrument } from "@storybook/instrumenter";
2-
import { addInteractionWrapper, globals, setInteractorScope } from "@interactors/globals";
4+
import { addInteractionWrapper } from "@interactors/globals";
35

46
// NOTE: Dummy call to initialize instrumenter. See: https://github.com/storybookjs/storybook/blob/next/lib/instrumenter/src/instrumenter.ts#L512
57
instrument({});
68

79
let isRoot = true;
810

9-
addInteractionWrapper((interaction, next) => {
11+
addInteractionWrapper((perform, interaction) => {
1012
if (!isRoot) {
11-
return next;
13+
return perform;
1214
}
1315
return async () => {
16+
const channel = addons.getChannel();
1417
const cancel = (event) => {
1518
if (!event.newPhase || event.newPhase == "aborted" || event.newPhase == "errored") {
16-
__STORYBOOK_ADDONS_CHANNEL__.off("forceRemount", cancel);
17-
__STORYBOOK_ADDONS_CHANNEL__.off("storyRenderPhaseChanged", cancel);
18-
interaction.catchHalt();
19+
channel.off(Events.FORCE_REMOUNT, cancel);
20+
channel.off(Events.STORY_RENDER_PHASE_CHANGED, cancel);
1921
interaction.halt();
2022
isRoot = true;
2123
}
2224
};
23-
__STORYBOOK_ADDONS_CHANNEL__.on("forceRemount", cancel);
24-
__STORYBOOK_ADDONS_CHANNEL__.on("storyRenderPhaseChanged", cancel);
25+
channel.on(Events.FORCE_REMOUNT, cancel);
26+
channel.on(Events.STORY_RENDER_PHASE_CHANGED, cancel);
2527
try {
2628
return await global.window.__STORYBOOK_ADDON_INTERACTIONS_INSTRUMENTER__.track(
27-
interaction.options.code(),
28-
next,
29+
interaction.code(),
30+
perform,
2931
[],
30-
{
31-
intercept: () => !(isRoot = false),
32-
}
32+
{ intercept: () => !(isRoot = false) }
3333
);
3434
} finally {
3535
isRoot = true;
36-
__STORYBOOK_ADDONS_CHANNEL__.off("forceRemount", cancel);
37-
__STORYBOOK_ADDONS_CHANNEL__.off("storyRenderPhaseChanged", cancel);
36+
channel.off(Events.FORCE_REMOUNT, cancel);
37+
channel.off(Events.STORY_RENDER_PHASE_CHANGED, cancel);
3838
}
3939
};
4040
});

packages/material-ui/src/body.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { HTML } from "@interactors/html";
33
export const Body = HTML.extend<HTMLBodyElement>("Body")
44
.selector("body")
55
.actions({
6-
click: ({ perform }) =>
6+
click: async ({ perform }) =>
77
perform((element) => {
88
if (document.activeElement && "blur" in document.activeElement) {
99
(document.activeElement as HTMLElement).blur();

packages/material-ui/src/bottom-navigation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const BottomNavigationAction = createInteractor<HTMLButtonElement>("MUIBottomNav
77
let label = element.querySelector('[class*="MuiBottomNavigationAction-label"]');
88
return isHTMLElement(label) ? innerText(label) : "";
99
})
10-
.actions({ click: ({ perform }) => perform((element) => click(element)) });
10+
.actions({ click: async ({ perform }) => perform((element) => click(element)) });
1111

1212
const BottomNavigationInteractor = createInteractor<HTMLElement>("MUIBottomNavigation")
1313
.selector('[class*="MuiBottomNavigation-root"]')
@@ -18,7 +18,7 @@ const BottomNavigationInteractor = createInteractor<HTMLElement>("MUIBottomNavig
1818
},
1919
})
2020
.actions({
21-
navigate: (interactor, value: string) => interactor.find(BottomNavigationAction(value)).click(),
21+
navigate: async (interactor, value: string) => interactor.find(BottomNavigationAction(value)).click(),
2222
});
2323

2424
/**

packages/material-ui/src/date-field.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const DateFieldInteractor = TextField.extend<HTMLInputElement>("DateField")
88
timestamp: (element) => element.valueAsNumber,
99
})
1010
.actions({
11-
fillIn: ({ perform }, value: string | Date) =>
11+
fillIn: async ({ perform }, value: string | Date) =>
1212
perform((element) => {
1313
setValue(element, typeof value == "string" ? value : value.toISOString().replace(/T.*$/, ""));
1414
dispatchChange(element);

packages/material-ui/src/datetime-field.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const DateTimeFieldInteractor = TextField.extend<HTMLInputElement>("DateTimeFiel
55
.selector('input[type="datetime-local"]')
66
.filters({ timestamp: (element) => element.valueAsNumber })
77
.actions({
8-
fillIn: ({ perform }, value: string | Date) =>
8+
fillIn: async ({ perform }, value: string | Date) =>
99
perform((element) => {
1010
setValue(element, typeof value == "string" ? value : value.toISOString().replace(/Z$/, ""));
1111
dispatchChange(element);

packages/material-ui/src/dialog.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const DialogInteractor = HTML.extend("MUIDialog")
1111
return isHTMLElement(titleElement) ? innerText(titleElement) : "";
1212
})
1313
.actions({
14-
close: ({ perform }) =>
14+
close: async ({ perform }) =>
1515
perform((element) => {
1616
let backdrop = element.querySelector('[class*="MuiBackdrop-root"]');
1717
if (isHTMLElement(backdrop)) click(backdrop);

0 commit comments

Comments
 (0)