@storybook/cli 6.5.0-alpha.9 → 6.5.0-beta.0

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.
Files changed (186) hide show
  1. package/bin/index.js +1 -0
  2. package/dist/cjs/add.js +3 -3
  3. package/dist/cjs/automigrate/fixes/builder-vite.js +122 -0
  4. package/dist/cjs/automigrate/fixes/index.js +3 -1
  5. package/dist/cjs/automigrate/types.js +5 -1
  6. package/dist/cjs/babel-config.js +1 -1
  7. package/dist/cjs/detect.js +53 -2
  8. package/dist/cjs/extract.js +7 -2
  9. package/dist/cjs/frameworks/angular/Header.stories.ts +8 -3
  10. package/dist/cjs/frameworks/angular/Page.stories.ts +12 -10
  11. package/dist/cjs/frameworks/angular/header.component.ts +30 -19
  12. package/dist/cjs/frameworks/angular/page.component.ts +13 -27
  13. package/dist/cjs/frameworks/common/header.css +6 -0
  14. package/dist/cjs/frameworks/preact/Header.jsx +6 -1
  15. package/dist/cjs/frameworks/preact/Header.stories.jsx +7 -1
  16. package/dist/cjs/frameworks/preact/Page.jsx +62 -63
  17. package/dist/cjs/frameworks/preact/Page.stories.jsx +12 -9
  18. package/dist/cjs/frameworks/react/js/Header.jsx +6 -1
  19. package/dist/cjs/frameworks/react/js/Header.stories.jsx +7 -1
  20. package/dist/cjs/frameworks/react/js/Page.jsx +61 -63
  21. package/dist/cjs/frameworks/react/js/Page.stories.jsx +12 -9
  22. package/dist/cjs/frameworks/react/ts/Header.stories.tsx +7 -1
  23. package/dist/cjs/frameworks/react/ts/Header.tsx +11 -2
  24. package/dist/cjs/frameworks/react/ts/Page.stories.tsx +12 -9
  25. package/dist/cjs/frameworks/react/ts/Page.tsx +66 -60
  26. package/dist/cjs/frameworks/svelte/Button.stories.js +51 -0
  27. package/dist/cjs/frameworks/svelte/Header.stories.js +35 -0
  28. package/dist/cjs/frameworks/svelte/Header.svelte +3 -0
  29. package/dist/cjs/frameworks/svelte/Page.stories.js +27 -0
  30. package/dist/cjs/frameworks/svelte/Page.svelte +2 -16
  31. package/dist/cjs/frameworks/vue3/Header.stories.js +7 -1
  32. package/dist/cjs/frameworks/vue3/Header.vue +1 -0
  33. package/dist/cjs/frameworks/vue3/Page.stories.js +16 -17
  34. package/dist/cjs/frameworks/vue3/Page.vue +18 -8
  35. package/dist/cjs/frameworks/web-components/js/Page.js +2 -2
  36. package/dist/cjs/frameworks/web-components/ts/Page.ts +2 -2
  37. package/dist/cjs/generators/ANGULAR/angular-helpers.js +5 -5
  38. package/dist/cjs/generators/ANGULAR/index.js +1 -1
  39. package/dist/cjs/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  40. package/dist/cjs/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  41. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  42. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  43. package/dist/cjs/generators/REACT_SCRIPTS/index.js +9 -1
  44. package/dist/cjs/generators/SVELTE/index.js +0 -1
  45. package/dist/cjs/generators/baseGenerator.js +38 -4
  46. package/dist/cjs/generators/configure.js +3 -1
  47. package/dist/cjs/helpers.js +9 -8
  48. package/dist/cjs/initiate.js +27 -24
  49. package/dist/cjs/js-package-manager/JsPackageManager.js +2 -2
  50. package/dist/cjs/project_types.js +2 -1
  51. package/dist/cjs/repro-generators/configs.js +51 -8
  52. package/dist/cjs/repro-generators/scripts.js +46 -14
  53. package/dist/cjs/repro.js +3 -2
  54. package/dist/cjs/typings.d.ts +3 -0
  55. package/dist/cjs/upgrade.js +4 -2
  56. package/dist/cjs/versions.js +66 -0
  57. package/dist/cjs/window.d.js +5 -1
  58. package/dist/esm/add.js +3 -3
  59. package/dist/esm/automigrate/fixes/builder-vite.js +122 -0
  60. package/dist/esm/automigrate/fixes/index.js +3 -1
  61. package/dist/esm/automigrate/types.js +5 -1
  62. package/dist/esm/babel-config.js +1 -1
  63. package/dist/esm/detect.js +53 -2
  64. package/dist/esm/extract.js +7 -2
  65. package/dist/esm/frameworks/angular/Header.stories.ts +8 -3
  66. package/dist/esm/frameworks/angular/Page.stories.ts +12 -10
  67. package/dist/esm/frameworks/angular/header.component.ts +30 -19
  68. package/dist/esm/frameworks/angular/page.component.ts +13 -27
  69. package/dist/esm/frameworks/common/header.css +6 -0
  70. package/dist/esm/frameworks/preact/Header.jsx +6 -1
  71. package/dist/esm/frameworks/preact/Header.stories.jsx +7 -1
  72. package/dist/esm/frameworks/preact/Page.jsx +62 -63
  73. package/dist/esm/frameworks/preact/Page.stories.jsx +12 -9
  74. package/dist/esm/frameworks/react/js/Header.jsx +6 -1
  75. package/dist/esm/frameworks/react/js/Header.stories.jsx +7 -1
  76. package/dist/esm/frameworks/react/js/Page.jsx +61 -63
  77. package/dist/esm/frameworks/react/js/Page.stories.jsx +12 -9
  78. package/dist/esm/frameworks/react/ts/Header.stories.tsx +7 -1
  79. package/dist/esm/frameworks/react/ts/Header.tsx +11 -2
  80. package/dist/esm/frameworks/react/ts/Page.stories.tsx +12 -9
  81. package/dist/esm/frameworks/react/ts/Page.tsx +66 -60
  82. package/dist/esm/frameworks/svelte/Button.stories.js +51 -0
  83. package/dist/esm/frameworks/svelte/Header.stories.js +35 -0
  84. package/dist/esm/frameworks/svelte/Header.svelte +3 -0
  85. package/dist/esm/frameworks/svelte/Page.stories.js +27 -0
  86. package/dist/esm/frameworks/svelte/Page.svelte +2 -16
  87. package/dist/esm/frameworks/vue3/Header.stories.js +7 -1
  88. package/dist/esm/frameworks/vue3/Header.vue +1 -0
  89. package/dist/esm/frameworks/vue3/Page.stories.js +16 -17
  90. package/dist/esm/frameworks/vue3/Page.vue +18 -8
  91. package/dist/esm/frameworks/web-components/js/Page.js +2 -2
  92. package/dist/esm/frameworks/web-components/ts/Page.ts +2 -2
  93. package/dist/esm/generators/ANGULAR/angular-helpers.js +5 -5
  94. package/dist/esm/generators/ANGULAR/index.js +1 -1
  95. package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  96. package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  97. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  98. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  99. package/dist/esm/generators/REACT_SCRIPTS/index.js +9 -1
  100. package/dist/esm/generators/SVELTE/index.js +0 -1
  101. package/dist/esm/generators/baseGenerator.js +38 -4
  102. package/dist/esm/generators/configure.js +3 -1
  103. package/dist/esm/helpers.js +9 -8
  104. package/dist/esm/initiate.js +27 -24
  105. package/dist/esm/js-package-manager/JsPackageManager.js +2 -2
  106. package/dist/esm/project_types.js +2 -1
  107. package/dist/esm/repro-generators/configs.js +51 -8
  108. package/dist/esm/repro-generators/scripts.js +46 -14
  109. package/dist/esm/repro.js +3 -2
  110. package/dist/esm/typings.d.ts +3 -0
  111. package/dist/esm/upgrade.js +4 -2
  112. package/dist/esm/versions.js +66 -0
  113. package/dist/esm/window.d.js +5 -1
  114. package/dist/modern/add.js +3 -3
  115. package/dist/modern/automigrate/fixes/builder-vite.js +122 -0
  116. package/dist/modern/automigrate/fixes/index.js +3 -1
  117. package/dist/modern/automigrate/types.js +5 -1
  118. package/dist/modern/babel-config.js +1 -1
  119. package/dist/modern/detect.js +53 -2
  120. package/dist/modern/extract.js +7 -2
  121. package/dist/modern/frameworks/common/header.css +6 -0
  122. package/dist/modern/frameworks/preact/Header.jsx +6 -1
  123. package/dist/modern/frameworks/preact/Header.stories.jsx +7 -1
  124. package/dist/modern/frameworks/preact/Page.jsx +62 -63
  125. package/dist/modern/frameworks/preact/Page.stories.jsx +12 -9
  126. package/dist/modern/frameworks/react/js/Header.jsx +6 -1
  127. package/dist/modern/frameworks/react/js/Header.stories.jsx +7 -1
  128. package/dist/modern/frameworks/react/js/Page.jsx +61 -63
  129. package/dist/modern/frameworks/react/js/Page.stories.jsx +12 -9
  130. package/dist/modern/frameworks/svelte/Button.stories.js +51 -0
  131. package/dist/modern/frameworks/svelte/Header.stories.js +35 -0
  132. package/dist/modern/frameworks/svelte/Header.svelte +3 -0
  133. package/dist/modern/frameworks/svelte/Page.stories.js +27 -0
  134. package/dist/modern/frameworks/svelte/Page.svelte +2 -16
  135. package/dist/modern/frameworks/vue3/Header.stories.js +7 -1
  136. package/dist/modern/frameworks/vue3/Header.vue +1 -0
  137. package/dist/modern/frameworks/vue3/Page.stories.js +16 -17
  138. package/dist/modern/frameworks/vue3/Page.vue +18 -8
  139. package/dist/modern/frameworks/web-components/js/Page.js +2 -2
  140. package/dist/modern/generators/ANGULAR/angular-helpers.js +5 -5
  141. package/dist/modern/generators/ANGULAR/index.js +1 -1
  142. package/dist/modern/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  143. package/dist/modern/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  144. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  145. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  146. package/dist/modern/generators/REACT_SCRIPTS/index.js +9 -1
  147. package/dist/modern/generators/SVELTE/index.js +0 -1
  148. package/dist/modern/generators/baseGenerator.js +38 -4
  149. package/dist/modern/generators/configure.js +3 -1
  150. package/dist/modern/helpers.js +9 -8
  151. package/dist/modern/initiate.js +27 -24
  152. package/dist/modern/js-package-manager/JsPackageManager.js +2 -2
  153. package/dist/modern/project_types.js +2 -1
  154. package/dist/modern/repro-generators/configs.js +51 -8
  155. package/dist/modern/repro-generators/scripts.js +46 -14
  156. package/dist/modern/repro.js +3 -2
  157. package/dist/modern/typings.d.ts +3 -0
  158. package/dist/modern/upgrade.js +4 -2
  159. package/dist/modern/versions.js +66 -0
  160. package/dist/modern/window.d.js +5 -1
  161. package/dist/ts3.4/automigrate/fixes/builder-vite.d.ts +19 -0
  162. package/dist/ts3.4/detect.d.ts +9 -2
  163. package/dist/ts3.4/project_types.d.ts +2 -1
  164. package/dist/ts3.4/repro-generators/configs.d.ts +8 -0
  165. package/dist/ts3.4/versions.d.ts +59 -0
  166. package/dist/ts3.9/automigrate/fixes/builder-vite.d.ts +19 -0
  167. package/dist/ts3.9/detect.d.ts +9 -2
  168. package/dist/ts3.9/project_types.d.ts +2 -1
  169. package/dist/ts3.9/repro-generators/configs.d.ts +9 -1
  170. package/dist/ts3.9/versions.d.ts +59 -0
  171. package/package.json +11 -12
  172. package/dist/cjs/frameworks/svelte/Button.stories.svelte +0 -57
  173. package/dist/cjs/frameworks/svelte/Header.stories.svelte +0 -32
  174. package/dist/cjs/frameworks/svelte/Page.stories.svelte +0 -32
  175. package/dist/cjs/typings.d.js +0 -1
  176. package/dist/cjs/versions.json +0 -59
  177. package/dist/esm/frameworks/svelte/Button.stories.svelte +0 -57
  178. package/dist/esm/frameworks/svelte/Header.stories.svelte +0 -32
  179. package/dist/esm/frameworks/svelte/Page.stories.svelte +0 -32
  180. package/dist/esm/typings.d.js +0 -1
  181. package/dist/esm/versions.json +0 -59
  182. package/dist/modern/frameworks/svelte/Button.stories.svelte +0 -57
  183. package/dist/modern/frameworks/svelte/Header.stories.svelte +0 -32
  184. package/dist/modern/frameworks/svelte/Page.stories.svelte +0 -32
  185. package/dist/modern/typings.d.js +0 -1
  186. package/dist/modern/versions.json +0 -59
@@ -1,71 +1,69 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
 
4
3
  import { Header } from './Header';
5
4
  import './page.css';
6
5
 
7
- export const Page = ({ user, onLogin, onLogout, onCreateAccount }) => (
8
- <article>
9
- <Header user={user} onLogin={onLogin} onLogout={onLogout} onCreateAccount={onCreateAccount} />
6
+ export const Page = () => {
7
+ const [user, setUser] = React.useState();
10
8
 
11
- <section>
12
- <h2>Pages in Storybook</h2>
13
- <p>
14
- We recommend building UIs with a{' '}
15
- <a href="https://componentdriven.org" target="_blank" rel="noopener noreferrer">
16
- <strong>component-driven</strong>
17
- </a>{' '}
18
- process starting with atomic components and ending with pages.
19
- </p>
20
- <p>
21
- Render pages with mock data. This makes it easy to build and review page states without
22
- needing to navigate to them in your app. Here are some handy patterns for managing page data
23
- in Storybook:
24
- </p>
25
- <ul>
26
- <li>
27
- Use a higher-level connected component. Storybook helps you compose such data from the
28
- "args" of child component stories
29
- </li>
30
- <li>
31
- Assemble data in the page component from your services. You can mock these services out
32
- using Storybook.
33
- </li>
34
- </ul>
35
- <p>
36
- Get a guided tutorial on component-driven development at{' '}
37
- <a href="https://storybook.js.org/tutorials/" target="_blank" rel="noopener noreferrer">
38
- Storybook tutorials
39
- </a>
40
- . Read more in the{' '}
41
- <a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer">
42
- docs
43
- </a>
44
- .
45
- </p>
46
- <div className="tip-wrapper">
47
- <span className="tip">Tip</span> Adjust the width of the canvas with the{' '}
48
- <svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
49
- <g fill="none" fillRule="evenodd">
50
- <path
51
- d="M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z"
52
- id="a"
53
- fill="#999"
54
- />
55
- </g>
56
- </svg>
57
- Viewports addon in the toolbar
58
- </div>
59
- </section>
60
- </article>
61
- );
62
- Page.propTypes = {
63
- user: PropTypes.shape({}),
64
- onLogin: PropTypes.func.isRequired,
65
- onLogout: PropTypes.func.isRequired,
66
- onCreateAccount: PropTypes.func.isRequired,
67
- };
9
+ return (
10
+ <article>
11
+ <Header
12
+ user={user}
13
+ onLogin={() => setUser({ name: 'Jane Doe' })}
14
+ onLogout={() => setUser(undefined)}
15
+ onCreateAccount={() => setUser({ name: 'Jane Doe' })}
16
+ />
68
17
 
69
- Page.defaultProps = {
70
- user: null,
18
+ <section>
19
+ <h2>Pages in Storybook</h2>
20
+ <p>
21
+ We recommend building UIs with a{' '}
22
+ <a href="https://componentdriven.org" target="_blank" rel="noopener noreferrer">
23
+ <strong>component-driven</strong>
24
+ </a>{' '}
25
+ process starting with atomic components and ending with pages.
26
+ </p>
27
+ <p>
28
+ Render pages with mock data. This makes it easy to build and review page states without
29
+ needing to navigate to them in your app. Here are some handy patterns for managing page
30
+ data in Storybook:
31
+ </p>
32
+ <ul>
33
+ <li>
34
+ Use a higher-level connected component. Storybook helps you compose such data from the
35
+ "args" of child component stories
36
+ </li>
37
+ <li>
38
+ Assemble data in the page component from your services. You can mock these services out
39
+ using Storybook.
40
+ </li>
41
+ </ul>
42
+ <p>
43
+ Get a guided tutorial on component-driven development at{' '}
44
+ <a href="https://storybook.js.org/tutorials/" target="_blank" rel="noopener noreferrer">
45
+ Storybook tutorials
46
+ </a>
47
+ . Read more in the{' '}
48
+ <a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer">
49
+ docs
50
+ </a>
51
+ .
52
+ </p>
53
+ <div className="tip-wrapper">
54
+ <span className="tip">Tip</span> Adjust the width of the canvas with the{' '}
55
+ <svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
56
+ <g fill="none" fillRule="evenodd">
57
+ <path
58
+ d="M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z"
59
+ id="a"
60
+ fill="#999"
61
+ />
62
+ </g>
63
+ </svg>
64
+ Viewports addon in the toolbar
65
+ </div>
66
+ </section>
67
+ </article>
68
+ );
71
69
  };
@@ -1,22 +1,25 @@
1
1
  import React from 'react';
2
+ import { within, userEvent } from '@storybook/testing-library';
2
3
 
3
4
  import { Page } from './Page';
4
- import * as HeaderStories from './Header.stories';
5
5
 
6
6
  export default {
7
7
  title: 'Example/Page',
8
8
  component: Page,
9
+ parameters: {
10
+ // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
11
+ layout: 'fullscreen',
12
+ },
9
13
  };
10
14
 
11
15
  const Template = (args) => <Page {...args} />;
12
16
 
13
- export const LoggedIn = Template.bind({});
14
- LoggedIn.args = {
15
- // More on composing args: https://storybook.js.org/docs/react/writing-stories/args#args-composition
16
- ...HeaderStories.LoggedIn.args,
17
- };
18
-
17
+ // More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing
19
18
  export const LoggedOut = Template.bind({});
20
- LoggedOut.args = {
21
- ...HeaderStories.LoggedOut.args,
19
+
20
+ export const LoggedIn = Template.bind({});
21
+ LoggedIn.play = async ({ canvasElement }) => {
22
+ const canvas = within(canvasElement);
23
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
24
+ await userEvent.click(loginButton);
22
25
  };
@@ -0,0 +1,51 @@
1
+ import Button from './Button.svelte';
2
+
3
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
4
+ // More on argTypes: https://storybook.js.org/docs/svelte/api/argtypes
5
+ export default {
6
+ title: 'Example/Button',
7
+ component: Button,
8
+ argTypes: {
9
+ backgroundColor: { control: 'color' },
10
+ label: { control: 'text' },
11
+ onClick: { action: 'onClick' },
12
+ primary: { control: 'boolean' },
13
+ size: {
14
+ control: { type: 'select' },
15
+ options: ['small', 'medium', 'large'],
16
+ },
17
+ },
18
+ };
19
+
20
+ // More on component templates: https://storybook.js.org/docs/svelte/writing-stories/introduction#using-args
21
+ const Template = (args) => ({
22
+ Component: Button,
23
+ props: args,
24
+ on: {
25
+ click: args.onClick,
26
+ },
27
+ });
28
+
29
+ // More on args: https://storybook.js.org/docs/svelte/writing-stories/args
30
+ export const Primary = Template.bind({});
31
+ Primary.args = {
32
+ primary: true,
33
+ label: 'Button',
34
+ };
35
+
36
+ export const Secondary = Template.bind({});
37
+ Secondary.args = {
38
+ label: 'Button',
39
+ };
40
+
41
+ export const Large = Template.bind({});
42
+ Large.args = {
43
+ size: 'large',
44
+ label: 'Button',
45
+ };
46
+
47
+ export const Small = Template.bind({});
48
+ Small.args = {
49
+ size: 'small',
50
+ label: 'Button',
51
+ };
@@ -0,0 +1,35 @@
1
+ import Header from './Header.svelte';
2
+
3
+ export default {
4
+ title: 'Example/Header',
5
+ component: Header,
6
+ parameters: {
7
+ // More on Story layout: https://storybook.js.org/docs/svelte/configure/story-layout
8
+ layout: 'fullscreen',
9
+ },
10
+ argTypes: {
11
+ onLogin: { action: 'onLogin' },
12
+ onLogout: { action: 'onLogout' },
13
+ onCreateAccount: { action: 'onCreateAccount' },
14
+ },
15
+ };
16
+
17
+ const Template = (args) => ({
18
+ Component: Header,
19
+ props: args,
20
+ on: {
21
+ login: args.onLogin,
22
+ logout: args.onLogout,
23
+ createAccount: args.onCreateAccount,
24
+ },
25
+ });
26
+
27
+ export const LoggedIn = Template.bind({});
28
+ LoggedIn.args = {
29
+ user: {
30
+ name: 'Jane Doe',
31
+ },
32
+ };
33
+
34
+ export const LoggedOut = Template.bind({});
35
+ LoggedOut.args = {};
@@ -37,6 +37,9 @@
37
37
  </div>
38
38
  <div>
39
39
  {#if user}
40
+ <span class="welcome">
41
+ Welcome, <b>{user.name}</b>!
42
+ </span>
40
43
  <Button size="small" on:click={onLogout} label="Log out" />
41
44
  {/if}
42
45
  {#if !user}
@@ -0,0 +1,27 @@
1
+ import { within, userEvent } from '@storybook/testing-library';
2
+ import Page from './Page.svelte';
3
+
4
+ export default {
5
+ title: 'Example/Page',
6
+ component: Page,
7
+ parameters: {
8
+ // More on Story layout: https://storybook.js.org/docs/svelte/configure/story-layout
9
+ layout: 'fullscreen',
10
+ },
11
+ };
12
+
13
+ const Template = (args) => ({
14
+ Component: Page,
15
+ props: args,
16
+ });
17
+
18
+ export const LoggedOut = Template.bind({});
19
+ LoggedOut.args = {};
20
+
21
+ // More on interaction testing: https://storybook.js.org/docs/svelte/writing-tests/interaction-testing
22
+ export const LoggedIn = Template.bind({});
23
+ LoggedIn.play = async ({ canvasElement }) => {
24
+ const canvas = within(canvasElement);
25
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
26
+ await userEvent.click(loginButton);
27
+ };
@@ -2,25 +2,11 @@
2
2
  import './page.css';
3
3
  import Header from './Header.svelte';
4
4
 
5
- import { createEventDispatcher } from 'svelte';
6
-
7
- export let user = null;
8
-
9
- const dispatch = createEventDispatcher();
10
-
11
- function onLogin(event) {
12
- dispatch('login', event);
13
- }
14
- function onLogout(event) {
15
- dispatch('logout', event);
16
- }
17
- function onCreateAccount(event) {
18
- dispatch('createAccount', event);
19
- }
5
+ let user = null;
20
6
  </script>
21
7
 
22
8
  <article>
23
- <Header {user} on:login={onLogin} on:logout={onLogout} on:createAccount={onCreateAccount} />
9
+ <Header {user} on:login={() => user = { name: 'Jane Doe' }} on:logout={() => user = null} on:createAccount={() => user = { name: 'Jane Doe' }} />
24
10
 
25
11
  <section>
26
12
  <h2>Pages in Storybook</h2>
@@ -3,6 +3,10 @@ import MyHeader from './Header.vue';
3
3
  export default {
4
4
  title: 'Example/Header',
5
5
  component: MyHeader,
6
+ parameters: {
7
+ // More on Story layout: https://storybook.js.org/docs/vue/configure/story-layout
8
+ layout: 'fullscreen',
9
+ },
6
10
  };
7
11
 
8
12
  const Template = (args) => ({
@@ -19,7 +23,9 @@ const Template = (args) => ({
19
23
 
20
24
  export const LoggedIn = Template.bind({});
21
25
  LoggedIn.args = {
22
- user: {},
26
+ user: {
27
+ name: 'Jane Doe',
28
+ },
23
29
  };
24
30
 
25
31
  export const LoggedOut = Template.bind({});
@@ -21,6 +21,7 @@
21
21
  <h1>Acme</h1>
22
22
  </div>
23
23
  <div>
24
+ <span class="welcome" v-if="user">Welcome, <b>{{ user.name }}</b>!</span>
24
25
  <my-button size="small" @click="$emit('logout')" label="Log out" v-if="user" />
25
26
  <my-button size="small" @click="$emit('login')" label="Log in" v-if="!user" />
26
27
  <my-button primary size="small" @click="$emit('createAccount')" label="Sign up" v-if="!user" />
@@ -1,30 +1,29 @@
1
+ import { within, userEvent } from '@storybook/testing-library';
1
2
  import MyPage from './Page.vue';
2
- import * as HeaderStories from './Header.stories';
3
3
 
4
4
  export default {
5
5
  title: 'Example/Page',
6
6
  component: MyPage,
7
+ parameters: {
8
+ // More on Story layout: https://storybook.js.org/docs/vue/configure/story-layout
9
+ layout: 'fullscreen',
10
+ },
7
11
  };
8
12
 
9
- const Template = (args) => ({
13
+ const Template = () => ({
10
14
  // Components used in your story `template` are defined in the `components` object
11
15
  components: { MyPage },
12
- // The story's `args` need to be mapped into the template through the `setup()` method
13
- setup() {
14
- // Story args can be mapped to keys in the returned object
15
- return { user: args.user };
16
- },
17
- // Then, those values can be accessed directly in the template
18
- template: '<my-page :user="user" />',
19
- });
20
16
 
21
- export const LoggedIn = Template.bind({});
22
- LoggedIn.args = {
23
- // More on composing args: https://storybook.js.org/docs/vue/writing-stories/args#args-composition
24
- ...HeaderStories.LoggedIn.args,
25
- };
17
+ // Here we define the `template`
18
+ template: '<my-page />',
19
+ });
26
20
 
27
21
  export const LoggedOut = Template.bind({});
28
- LoggedOut.args = {
29
- ...HeaderStories.LoggedOut.args,
22
+
23
+ // More on interaction testing: https://storybook.js.org/docs/vue/writing-tests/interaction-testing
24
+ export const LoggedIn = Template.bind({});
25
+ LoggedIn.play = async ({ canvasElement }) => {
26
+ const canvas = within(canvasElement);
27
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
28
+ await userEvent.click(loginButton);
30
29
  };
@@ -2,9 +2,9 @@
2
2
  <article>
3
3
  <my-header
4
4
  :user="user"
5
- @login="$emit('login')"
6
- @logout="$emit('logout')"
7
- @createAccount="$emit('createAccount')"
5
+ @login="onLogin"
6
+ @logout="onLogout"
7
+ @createAccount="onCreateAccount"
8
8
  />
9
9
 
10
10
  <section>
@@ -67,12 +67,22 @@ export default {
67
67
 
68
68
  components: { MyHeader },
69
69
 
70
- props: {
71
- user: {
72
- type: Object,
73
- },
70
+ data() {
71
+ return {
72
+ user: null
73
+ }
74
74
  },
75
75
 
76
- emits: ['login', 'logout', 'createAccount'],
76
+ methods: {
77
+ onLogin() {
78
+ this.user = { name: 'Jane Doe' };
79
+ },
80
+ onLogout() {
81
+ this.user = null;
82
+ },
83
+ onCreateAccount() {
84
+ this.user = { name: 'Jane Doe' };
85
+ },
86
+ },
77
87
  };
78
88
  </script>
@@ -43,8 +43,8 @@ export const Page = ({ user, onLogin, onLogout, onCreateAccount }) => html`
43
43
  <a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer"> docs </a>
44
44
  .
45
45
  </p>
46
- <div className="tip-wrapper">
47
- <span className="tip">Tip</span> Adjust the width of the canvas with the
46
+ <div class="tip-wrapper">
47
+ <span class="tip">Tip</span> Adjust the width of the canvas with the
48
48
  <svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
49
49
  <g fill="none" fillRule="evenodd">
50
50
  <path
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getAngularAppTsConfigPath = getAngularAppTsConfigPath;
7
- exports.getAngularAppTsConfigJson = getAngularAppTsConfigJson;
8
6
  exports.editStorybookTsConfig = editStorybookTsConfig;
9
- exports.isDefaultProjectSet = isDefaultProjectSet;
7
+ exports.getAngularAppTsConfigJson = getAngularAppTsConfigJson;
8
+ exports.getAngularAppTsConfigPath = getAngularAppTsConfigPath;
10
9
  exports.getBaseTsConfigName = getBaseTsConfigName;
10
+ exports.isDefaultProjectSet = isDefaultProjectSet;
11
11
 
12
12
  require("core-js/modules/es.promise.js");
13
13
 
@@ -19,9 +19,9 @@ var _fsExtra = require("fs-extra");
19
19
 
20
20
  var _helpers = require("../../helpers");
21
21
 
22
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
23
 
24
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
 
26
26
  function getAngularAppTsConfigPath() {
27
27
  const angularJson = (0, _helpers.readFileAsJson)('angular.json', true);
@@ -56,7 +56,7 @@ const generator = async (packageManager, npmOptions, options) => {
56
56
  builder: _project_types.CoreBuilder.Webpack5
57
57
  }) : options;
58
58
  (0, _baseGenerator.baseGenerator)(packageManager, npmOptions, updatedOptions, 'angular', {
59
- extraPackages: ['@compodoc/compodoc', '@angular/elements', '@webcomponents/custom-elements'],
59
+ extraPackages: ['@compodoc/compodoc'],
60
60
  addScripts: false
61
61
  });
62
62
  (0, _helpers.copyTemplate)(__dirname);
@@ -1,9 +1,21 @@
1
1
  {
2
2
  "extends": "%SET_DURING_SB_INIT%",
3
3
  "compilerOptions": {
4
- "types": ["node"]
4
+ "types": [
5
+ "node"
6
+ ],
7
+ "allowSyntheticDefaultImports": true
5
8
  },
6
- "exclude": ["../src/test.ts", "../src/**/*.spec.ts", "../projects/**/*.spec.ts"],
7
- "include": ["../src/**/*", "../projects/**/*"],
8
- "files": ["./typings.d.ts"]
9
- }
9
+ "exclude": [
10
+ "../src/test.ts",
11
+ "../src/**/*.spec.ts",
12
+ "../projects/**/*.spec.ts"
13
+ ],
14
+ "include": [
15
+ "../src/**/*",
16
+ "../projects/**/*"
17
+ ],
18
+ "files": [
19
+ "./typings.d.ts"
20
+ ]
21
+ }
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "extends": "%SET_DURING_SB_INIT%",
3
3
  "compilerOptions": {
4
- "types": ["node"]
4
+ "types": [
5
+ "node"
6
+ ]
5
7
  },
6
- "exclude": ["../src/test.ts", "../src/**/*.spec.ts", "../projects/**/*.spec.ts"],
7
- "include": ["../src/**/*", "../projects/**/*"],
8
- "files": ["./typings.d.ts"]
9
- }
8
+ "exclude": [
9
+ "../src/test.ts",
10
+ "../src/**/*.spec.ts",
11
+ "../projects/**/*.spec.ts"
12
+ ],
13
+ "include": [
14
+ "../src/**/*",
15
+ "../projects/**/*"
16
+ ],
17
+ "files": [
18
+ "./typings.d.ts"
19
+ ]
20
+ }
@@ -1,3 +1,3 @@
1
- import '@storybook/addon-actions/register';
2
- import '@storybook/addon-links/register';
3
- import '@storybook/addon-knobs/register';
1
+ import '@storybook/addon-actions/manager';
2
+ import '@storybook/addon-links/manager';
3
+ import '@storybook/addon-knobs/manager';
@@ -1,2 +1,2 @@
1
- import '@storybook/addon-ondevice-actions/register';
2
- import '@storybook/addon-ondevice-knobs/register';
1
+ import '@storybook/addon-ondevice-actions/manager';
2
+ import '@storybook/addon-ondevice-knobs/manager';
@@ -44,7 +44,15 @@ const generator = async (packageManager, npmOptions, options) => {
44
44
  }) : options; // `@storybook/preset-create-react-app` has `@storybook/node-logger` as peerDep
45
45
 
46
46
  const extraPackages = ['@storybook/node-logger'];
47
- if (isCra5) extraPackages.push('webpack'); // preset v3 is compat with older versions of CRA, otherwise let version float
47
+
48
+ if (isCra5) {
49
+ extraPackages.push('webpack'); // Miscellaneous dependency used in `babel-preset-react-app` but not listed as dep there
50
+
51
+ extraPackages.push('babel-plugin-named-exports-order'); // Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode
52
+
53
+ extraPackages.push('prop-types');
54
+ } // preset v3 is compat with older versions of CRA, otherwise let version float
55
+
48
56
 
49
57
  const extraAddons = [`@storybook/preset-create-react-app${isCra5 ? '' : '@3'}`];
50
58
  await (0, _baseGenerator.baseGenerator)(packageManager, npmOptions, updatedOptions, 'react', {
@@ -53,7 +53,6 @@ const generator = async (packageManager, npmOptions, options) => {
53
53
 
54
54
  await (0, _baseGenerator.baseGenerator)(packageManager, npmOptions, options, 'svelte', {
55
55
  extraPackages: ['svelte', 'svelte-loader'],
56
- extraAddons: ['@storybook/addon-svelte-csf'],
57
56
  extensions: ['js', 'jsx', 'ts', 'tsx', 'svelte'],
58
57
  extraMain,
59
58
  commonJs