@storybook/cli 6.5.0-alpha.5 → 6.5.0-alpha.50

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 (141) hide show
  1. package/bin/index.js +1 -0
  2. package/dist/cjs/add.js +1 -1
  3. package/dist/cjs/automigrate/types.js +5 -1
  4. package/dist/cjs/babel-config.js +1 -1
  5. package/dist/cjs/detect.js +2 -2
  6. package/dist/cjs/extract.js +7 -2
  7. package/dist/cjs/frameworks/angular/Header.stories.ts +8 -3
  8. package/dist/cjs/frameworks/angular/Page.stories.ts +12 -10
  9. package/dist/cjs/frameworks/angular/header.component.ts +30 -19
  10. package/dist/cjs/frameworks/angular/page.component.ts +13 -27
  11. package/dist/cjs/frameworks/common/header.css +6 -0
  12. package/dist/cjs/frameworks/react/js/Header.jsx +6 -1
  13. package/dist/cjs/frameworks/react/js/Header.stories.jsx +7 -1
  14. package/dist/cjs/frameworks/react/js/Page.jsx +61 -63
  15. package/dist/cjs/frameworks/react/js/Page.stories.jsx +12 -9
  16. package/dist/cjs/frameworks/react/ts/Header.stories.tsx +7 -1
  17. package/dist/cjs/frameworks/react/ts/Header.tsx +11 -2
  18. package/dist/cjs/frameworks/react/ts/Page.stories.tsx +12 -9
  19. package/dist/cjs/frameworks/react/ts/Page.tsx +66 -60
  20. package/dist/cjs/frameworks/svelte/Button.stories.js +51 -0
  21. package/dist/cjs/frameworks/svelte/Header.stories.js +29 -0
  22. package/dist/cjs/frameworks/svelte/Page.stories.js +29 -0
  23. package/dist/cjs/frameworks/web-components/js/Page.js +2 -2
  24. package/dist/cjs/frameworks/web-components/ts/Page.ts +2 -2
  25. package/dist/cjs/generators/ANGULAR/angular-helpers.js +5 -5
  26. package/dist/cjs/generators/ANGULAR/index.js +1 -1
  27. package/dist/cjs/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  28. package/dist/cjs/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  29. package/dist/cjs/generators/REACT_SCRIPTS/index.js +9 -1
  30. package/dist/cjs/generators/SVELTE/index.js +0 -1
  31. package/dist/cjs/generators/WEB-COMPONENTS/index.js +3 -1
  32. package/dist/cjs/generators/baseGenerator.js +9 -1
  33. package/dist/cjs/generators/configure.js +3 -1
  34. package/dist/cjs/helpers.js +9 -8
  35. package/dist/cjs/initiate.js +4 -1
  36. package/dist/cjs/js-package-manager/JsPackageManager.js +2 -2
  37. package/dist/cjs/project_types.js +1 -1
  38. package/dist/cjs/repro-generators/configs.js +20 -8
  39. package/dist/cjs/repro-generators/scripts.js +25 -14
  40. package/dist/cjs/repro.js +3 -2
  41. package/dist/cjs/typings.d.ts +3 -0
  42. package/dist/cjs/upgrade.js +3 -1
  43. package/dist/cjs/versions.js +66 -0
  44. package/dist/cjs/window.d.js +5 -1
  45. package/dist/esm/add.js +1 -1
  46. package/dist/esm/automigrate/types.js +5 -1
  47. package/dist/esm/babel-config.js +1 -1
  48. package/dist/esm/detect.js +2 -2
  49. package/dist/esm/extract.js +7 -2
  50. package/dist/esm/frameworks/angular/Header.stories.ts +8 -3
  51. package/dist/esm/frameworks/angular/Page.stories.ts +12 -10
  52. package/dist/esm/frameworks/angular/header.component.ts +30 -19
  53. package/dist/esm/frameworks/angular/page.component.ts +13 -27
  54. package/dist/esm/frameworks/common/header.css +6 -0
  55. package/dist/esm/frameworks/react/js/Header.jsx +6 -1
  56. package/dist/esm/frameworks/react/js/Header.stories.jsx +7 -1
  57. package/dist/esm/frameworks/react/js/Page.jsx +61 -63
  58. package/dist/esm/frameworks/react/js/Page.stories.jsx +12 -9
  59. package/dist/esm/frameworks/react/ts/Header.stories.tsx +7 -1
  60. package/dist/esm/frameworks/react/ts/Header.tsx +11 -2
  61. package/dist/esm/frameworks/react/ts/Page.stories.tsx +12 -9
  62. package/dist/esm/frameworks/react/ts/Page.tsx +66 -60
  63. package/dist/esm/frameworks/svelte/Button.stories.js +51 -0
  64. package/dist/esm/frameworks/svelte/Header.stories.js +29 -0
  65. package/dist/esm/frameworks/svelte/Page.stories.js +29 -0
  66. package/dist/esm/frameworks/web-components/js/Page.js +2 -2
  67. package/dist/esm/frameworks/web-components/ts/Page.ts +2 -2
  68. package/dist/esm/generators/ANGULAR/angular-helpers.js +5 -5
  69. package/dist/esm/generators/ANGULAR/index.js +1 -1
  70. package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  71. package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  72. package/dist/esm/generators/REACT_SCRIPTS/index.js +9 -1
  73. package/dist/esm/generators/SVELTE/index.js +0 -1
  74. package/dist/esm/generators/WEB-COMPONENTS/index.js +3 -1
  75. package/dist/esm/generators/baseGenerator.js +9 -1
  76. package/dist/esm/generators/configure.js +3 -1
  77. package/dist/esm/helpers.js +9 -8
  78. package/dist/esm/initiate.js +4 -1
  79. package/dist/esm/js-package-manager/JsPackageManager.js +2 -2
  80. package/dist/esm/project_types.js +1 -1
  81. package/dist/esm/repro-generators/configs.js +20 -8
  82. package/dist/esm/repro-generators/scripts.js +25 -14
  83. package/dist/esm/repro.js +3 -2
  84. package/dist/esm/typings.d.ts +3 -0
  85. package/dist/esm/upgrade.js +3 -1
  86. package/dist/esm/versions.js +66 -0
  87. package/dist/esm/window.d.js +5 -1
  88. package/dist/modern/add.js +1 -1
  89. package/dist/modern/automigrate/types.js +5 -1
  90. package/dist/modern/babel-config.js +1 -1
  91. package/dist/modern/detect.js +2 -2
  92. package/dist/modern/extract.js +7 -2
  93. package/dist/modern/frameworks/common/header.css +6 -0
  94. package/dist/modern/frameworks/react/js/Header.jsx +6 -1
  95. package/dist/modern/frameworks/react/js/Header.stories.jsx +7 -1
  96. package/dist/modern/frameworks/react/js/Page.jsx +61 -63
  97. package/dist/modern/frameworks/react/js/Page.stories.jsx +12 -9
  98. package/dist/modern/frameworks/svelte/Button.stories.js +51 -0
  99. package/dist/modern/frameworks/svelte/Header.stories.js +29 -0
  100. package/dist/modern/frameworks/svelte/Page.stories.js +29 -0
  101. package/dist/modern/frameworks/web-components/js/Page.js +2 -2
  102. package/dist/modern/generators/ANGULAR/angular-helpers.js +5 -5
  103. package/dist/modern/generators/ANGULAR/index.js +1 -1
  104. package/dist/modern/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  105. package/dist/modern/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  106. package/dist/modern/generators/REACT_SCRIPTS/index.js +9 -1
  107. package/dist/modern/generators/SVELTE/index.js +0 -1
  108. package/dist/modern/generators/WEB-COMPONENTS/index.js +3 -1
  109. package/dist/modern/generators/baseGenerator.js +9 -1
  110. package/dist/modern/generators/configure.js +3 -1
  111. package/dist/modern/helpers.js +9 -8
  112. package/dist/modern/initiate.js +4 -1
  113. package/dist/modern/js-package-manager/JsPackageManager.js +2 -2
  114. package/dist/modern/project_types.js +1 -1
  115. package/dist/modern/repro-generators/configs.js +20 -8
  116. package/dist/modern/repro-generators/scripts.js +25 -14
  117. package/dist/modern/repro.js +3 -2
  118. package/dist/modern/typings.d.ts +3 -0
  119. package/dist/modern/upgrade.js +3 -1
  120. package/dist/modern/versions.js +66 -0
  121. package/dist/modern/window.d.js +5 -1
  122. package/dist/ts3.4/repro-generators/configs.d.ts +2 -0
  123. package/dist/ts3.4/versions.d.ts +59 -0
  124. package/dist/ts3.9/repro-generators/configs.d.ts +2 -0
  125. package/dist/ts3.9/versions.d.ts +59 -0
  126. package/package.json +11 -12
  127. package/dist/cjs/frameworks/svelte/Button.stories.svelte +0 -57
  128. package/dist/cjs/frameworks/svelte/Header.stories.svelte +0 -32
  129. package/dist/cjs/frameworks/svelte/Page.stories.svelte +0 -32
  130. package/dist/cjs/typings.d.js +0 -1
  131. package/dist/cjs/versions.json +0 -59
  132. package/dist/esm/frameworks/svelte/Button.stories.svelte +0 -57
  133. package/dist/esm/frameworks/svelte/Header.stories.svelte +0 -32
  134. package/dist/esm/frameworks/svelte/Page.stories.svelte +0 -32
  135. package/dist/esm/typings.d.js +0 -1
  136. package/dist/esm/versions.json +0 -59
  137. package/dist/modern/frameworks/svelte/Button.stories.svelte +0 -57
  138. package/dist/modern/frameworks/svelte/Header.stories.svelte +0 -32
  139. package/dist/modern/frameworks/svelte/Page.stories.svelte +0 -32
  140. package/dist/modern/typings.d.js +0 -1
  141. package/dist/modern/versions.json +0 -59
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAndInit = exports.exec = void 0;
6
+ exports.exec = exports.createAndInit = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -15,6 +15,10 @@ var _shelljs = _interopRequireDefault(require("shelljs"));
15
15
 
16
16
  var _chalk = _interopRequireDefault(require("chalk"));
17
17
 
18
+ var _configs = require("./configs");
19
+
20
+ const _excluded = ["name", "version"];
21
+
18
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
23
 
20
24
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -36,17 +40,18 @@ const exec = async (command, options = {}, {
36
40
  silent: true
37
41
  };
38
42
 
39
- _shelljs.default.exec(command, Object.assign({}, defaultOptions, options), (code, stdout, stderr) => {
43
+ const child = _shelljs.default.exec(command, Object.assign({}, defaultOptions, options, {
44
+ async: true
45
+ }));
46
+
47
+ child.stderr.pipe(process.stderr);
48
+ child.stdout.pipe(process.stdout);
49
+ child.on('exit', code => {
40
50
  if (code === 0) {
41
51
  resolve(undefined);
42
52
  } else {
43
53
  logger.error(_chalk.default.red(`An error occurred while executing: \`${command}\``));
44
- logger.error(`Command output was:${_chalk.default.yellow(`\n${stdout}\n${stderr}`)}`);
45
-
46
- if (errorMessage) {
47
- logger.error(errorMessage);
48
- }
49
-
54
+ logger.log(errorMessage);
50
55
  reject(new Error(`command exited with code: ${code}: `));
51
56
  }
52
57
  });
@@ -57,10 +62,18 @@ exports.exec = exec;
57
62
 
58
63
  const installYarn2 = async ({
59
64
  cwd,
60
- pnp
65
+ pnp,
66
+ name
61
67
  }) => {
62
- const command = [`yarn set version berry`, `yarn config set enableGlobalCache true`, `yarn config set nodeLinker ${pnp ? 'pnp' : 'node-modules'}`].join(' && ');
63
- await exec(command, {
68
+ const command = [`yarn set version berry`, `yarn config set enableGlobalCache true`, `yarn config set nodeLinker ${pnp ? 'pnp' : 'node-modules'}`]; // FIXME: Some dependencies used by CRA aren't listed in its package.json
69
+ // Next line is a hack to remove as soon as CRA will have added these missing deps
70
+ // for details see https://github.com/facebook/create-react-app/pull/11751
71
+
72
+ if ([_configs.cra.name, _configs.cra_typescript.name].includes(name)) {
73
+ command.push(`yarn config set packageExtensions --json '{ "babel-preset-react-app@10.0.x": { "dependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.16.0" } } }'`);
74
+ }
75
+
76
+ await exec(command.join(' && '), {
64
77
  cwd
65
78
  }, {
66
79
  startMessage: `🧶 Installing Yarn 2`,
@@ -182,7 +195,7 @@ const createAndInit = async (cwd, _ref, {
182
195
  name,
183
196
  version
184
197
  } = _ref,
185
- rest = _objectWithoutPropertiesLoose(_ref, ["name", "version"]);
198
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
186
199
 
187
200
  const options = Object.assign({
188
201
  name,
@@ -196,8 +209,6 @@ const createAndInit = async (cwd, _ref, {
196
209
  logger.log();
197
210
  logger.info(`🏃 Starting for ${name} ${version}`);
198
211
  logger.log();
199
- logger.debug(options);
200
- logger.log();
201
212
  await doTask(generate, Object.assign({}, options, {
202
213
  cwd: options.creationPath
203
214
  }));
package/dist/cjs/repro.js CHANGED
@@ -25,9 +25,9 @@ var _scripts = require("./repro-generators/scripts");
25
25
 
26
26
  var configs = _interopRequireWildcard(require("./repro-generators/configs"));
27
27
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
28
+ 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); }
29
29
 
30
- 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; }
30
+ 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; }
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
@@ -169,6 +169,7 @@ const repro = async ({
169
169
  }));
170
170
  } catch (error) {
171
171
  logger.error('🚨 Failed to create repro');
172
+ throw new Error(error);
172
173
  }
173
174
  };
174
175
 
@@ -0,0 +1,3 @@
1
+ declare module '@storybook/codemod';
2
+ declare module 'envinfo';
3
+ declare module '@storybook/semver';
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.upgrade = exports.addExtraFlags = exports.checkVersionConsistency = exports.isCorePackage = exports.getStorybookVersion = void 0;
6
+ exports.upgrade = exports.isCorePackage = exports.getStorybookVersion = exports.checkVersionConsistency = exports.addExtraFlags = void 0;
7
+
8
+ require("core-js/modules/es.array.sort.js");
7
9
 
8
10
  require("core-js/modules/es.promise.js");
9
11
 
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ // auto generated file, do not edit
8
+ var _default = {
9
+ "@storybook/addon-a11y": "6.5.0-alpha.50",
10
+ "@storybook/addon-actions": "6.5.0-alpha.50",
11
+ "@storybook/addon-backgrounds": "6.5.0-alpha.50",
12
+ "@storybook/addon-controls": "6.5.0-alpha.50",
13
+ "@storybook/addon-docs": "6.5.0-alpha.50",
14
+ "@storybook/addon-essentials": "6.5.0-alpha.50",
15
+ "@storybook/addon-interactions": "6.5.0-alpha.50",
16
+ "@storybook/addon-jest": "6.5.0-alpha.50",
17
+ "@storybook/addon-links": "6.5.0-alpha.50",
18
+ "@storybook/addon-measure": "6.5.0-alpha.50",
19
+ "@storybook/addon-outline": "6.5.0-alpha.50",
20
+ "@storybook/addon-storyshots": "6.5.0-alpha.50",
21
+ "@storybook/addon-storyshots-puppeteer": "6.5.0-alpha.50",
22
+ "@storybook/addon-storysource": "6.5.0-alpha.50",
23
+ "@storybook/addon-toolbars": "6.5.0-alpha.50",
24
+ "@storybook/addon-viewport": "6.5.0-alpha.50",
25
+ "@storybook/addons": "6.5.0-alpha.50",
26
+ "@storybook/angular": "6.5.0-alpha.50",
27
+ "@storybook/api": "6.5.0-alpha.50",
28
+ "@storybook/builder-webpack4": "6.5.0-alpha.50",
29
+ "@storybook/builder-webpack5": "6.5.0-alpha.50",
30
+ "@storybook/channel-postmessage": "6.5.0-alpha.50",
31
+ "@storybook/channel-websocket": "6.5.0-alpha.50",
32
+ "@storybook/channels": "6.5.0-alpha.50",
33
+ "@storybook/cli": "6.5.0-alpha.50",
34
+ "@storybook/client-api": "6.5.0-alpha.50",
35
+ "@storybook/client-logger": "6.5.0-alpha.50",
36
+ "@storybook/codemod": "6.5.0-alpha.50",
37
+ "@storybook/components": "6.5.0-alpha.50",
38
+ "@storybook/core": "6.5.0-alpha.50",
39
+ "@storybook/core-client": "6.5.0-alpha.50",
40
+ "@storybook/core-common": "6.5.0-alpha.50",
41
+ "@storybook/core-events": "6.5.0-alpha.50",
42
+ "@storybook/core-server": "6.5.0-alpha.50",
43
+ "@storybook/csf-tools": "6.5.0-alpha.50",
44
+ "@storybook/docs-tools": "6.5.0-alpha.50",
45
+ "@storybook/ember": "6.5.0-alpha.50",
46
+ "@storybook/html": "6.5.0-alpha.50",
47
+ "@storybook/instrumenter": "6.5.0-alpha.50",
48
+ "@storybook/manager-webpack4": "6.5.0-alpha.50",
49
+ "@storybook/manager-webpack5": "6.5.0-alpha.50",
50
+ "@storybook/node-logger": "6.5.0-alpha.50",
51
+ "@storybook/postinstall": "6.5.0-alpha.50",
52
+ "@storybook/preact": "6.5.0-alpha.50",
53
+ "@storybook/preview-web": "6.5.0-alpha.50",
54
+ "@storybook/react": "6.5.0-alpha.50",
55
+ "@storybook/router": "6.5.0-alpha.50",
56
+ "@storybook/server": "6.5.0-alpha.50",
57
+ "@storybook/source-loader": "6.5.0-alpha.50",
58
+ "@storybook/store": "6.5.0-alpha.50",
59
+ "@storybook/svelte": "6.5.0-alpha.50",
60
+ "@storybook/theming": "6.5.0-alpha.50",
61
+ "@storybook/ui": "6.5.0-alpha.50",
62
+ "@storybook/vue": "6.5.0-alpha.50",
63
+ "@storybook/vue3": "6.5.0-alpha.50",
64
+ "@storybook/web-components": "6.5.0-alpha.50"
65
+ };
66
+ exports.default = _default;
@@ -1 +1,5 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/dist/esm/add.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.add = add;
7
- exports.addStorybookAddonToFile = exports.getPackageArg = exports.getInstalledStorybookVersion = exports.getPackageName = exports.storybookAddonScope = void 0;
7
+ exports.storybookAddonScope = exports.getPackageName = exports.getPackageArg = exports.getInstalledStorybookVersion = exports.addStorybookAddonToFile = void 0;
8
8
 
9
9
  require("core-js/modules/es.promise.js");
10
10
 
@@ -1 +1,5 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.generateStorybookBabelConfig = exports.generateStorybookBabelConfigInCWD = void 0;
6
+ exports.generateStorybookBabelConfigInCWD = exports.generateStorybookBabelConfig = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.detect = detect;
6
7
  exports.detectFrameworkPreset = detectFrameworkPreset;
7
- exports.isStorybookInstalled = isStorybookInstalled;
8
8
  exports.detectLanguage = detectLanguage;
9
- exports.detect = detect;
9
+ exports.isStorybookInstalled = isStorybookInstalled;
10
10
 
11
11
  var _path = _interopRequireDefault(require("path"));
12
12
 
@@ -24,8 +24,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
24
24
  const read = async url => {
25
25
  const browser = await usePuppeteerBrowser();
26
26
  const page = await browser.newPage();
27
- await page.goto(url);
28
- await page.waitForFunction('window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract()');
27
+ await page.goto(url); // we don't know whether we are running against a new or old storybook
28
+ // FIXME: add tests for both
29
+
30
+ await page.waitForFunction(`
31
+ (window.__STORYBOOK_PREVIEW__ && window.__STORYBOOK_PREVIEW__.extract && window.__STORYBOOK_PREVIEW__.extract()) ||
32
+ (window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract())
33
+ `);
29
34
  const data = JSON.parse(await page.evaluate(async () => {
30
35
  // eslint-disable-next-line no-undef
31
36
  return JSON.stringify(window.__STORYBOOK_STORY_STORE__.getStoriesJsonData(), null, 2);
@@ -1,7 +1,6 @@
1
1
  import { moduleMetadata } from '@storybook/angular';
2
2
  import { CommonModule } from '@angular/common';
3
- // also exported from '@storybook/angular' if you can deal with breaking changes in 6.1
4
- import { Story, Meta } from '@storybook/angular/types-6-0';
3
+ import type { Story, Meta } from '@storybook/angular';
5
4
 
6
5
  import Button from './button.component';
7
6
  import Header from './header.component';
@@ -15,6 +14,10 @@ export default {
15
14
  imports: [CommonModule],
16
15
  }),
17
16
  ],
17
+ parameters: {
18
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
19
+ layout: 'fullscreen',
20
+ },
18
21
  } as Meta;
19
22
 
20
23
  const Template: Story<Header> = (args: Header) => ({
@@ -23,7 +26,9 @@ const Template: Story<Header> = (args: Header) => ({
23
26
 
24
27
  export const LoggedIn = Template.bind({});
25
28
  LoggedIn.args = {
26
- user: {},
29
+ user: {
30
+ name: 'Jane Doe',
31
+ },
27
32
  };
28
33
 
29
34
  export const LoggedOut = Template.bind({});
@@ -1,15 +1,18 @@
1
1
  import { moduleMetadata, Story, Meta } from '@storybook/angular';
2
+ import { within, userEvent } from '@storybook/testing-library';
2
3
  import { CommonModule } from '@angular/common';
3
4
 
4
5
  import Button from './button.component';
5
6
  import Header from './header.component';
6
7
  import Page from './page.component';
7
8
 
8
- import * as HeaderStories from './Header.stories';
9
-
10
9
  export default {
11
10
  title: 'Example/Page',
12
11
  component: Page,
12
+ parameters: {
13
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
14
+ layout: 'fullscreen',
15
+ },
13
16
  decorators: [
14
17
  moduleMetadata({
15
18
  declarations: [Button, Header],
@@ -22,13 +25,12 @@ const Template: Story<Page> = (args: Page) => ({
22
25
  props: args,
23
26
  });
24
27
 
25
- export const LoggedIn = Template.bind({});
26
- LoggedIn.args = {
27
- // More on composing args: https://storybook.js.org/docs/angular/writing-stories/args#args-composition
28
- ...HeaderStories.LoggedIn.args,
29
- };
30
-
31
28
  export const LoggedOut = Template.bind({});
32
- LoggedOut.args = {
33
- ...HeaderStories.LoggedOut.args,
29
+
30
+ // More on interaction testing: https://storybook.js.org/docs/angular/writing-tests/interaction-testing
31
+ export const LoggedIn = Template.bind({});
32
+ LoggedIn.play = async ({ canvasElement }) => {
33
+ const canvas = within(canvasElement);
34
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
35
+ await userEvent.click(loginButton);
34
36
  };
@@ -25,25 +25,36 @@ import { User } from './User';
25
25
  <h1>Acme</h1>
26
26
  </div>
27
27
  <div>
28
- <storybook-button
29
- *ngIf="user"
30
- size="small"
31
- (onClick)="onLogout.emit($event)"
32
- label="Log out"
33
- ></storybook-button>
34
- <storybook-button
35
- *ngIf="!user"
36
- size="small"
37
- (onClick)="onLogin.emit($event)"
38
- label="Log in"
39
- ></storybook-button>
40
- <storybook-button
41
- *ngIf="!user"
42
- primary
43
- size="small"
44
- (onClick)="onCreateAccount.emit($event)"
45
- label="Sign up"
46
- ></storybook-button>
28
+ <div *ngIf="user">
29
+ <span class="welcome">
30
+ Welcome, <b>{{ user.name }}</b
31
+ >!
32
+ </span>
33
+ <storybook-button
34
+ *ngIf="user"
35
+ size="small"
36
+ (onClick)="onLogout.emit($event)"
37
+ label="Log out"
38
+ ></storybook-button>
39
+ </div>
40
+ <div *ngIf="!user">
41
+ <storybook-button
42
+ *ngIf="!user"
43
+ size="small"
44
+ class="margin-left"
45
+ (onClick)="onLogin.emit($event)"
46
+ label="Log in"
47
+ ></storybook-button>
48
+ <storybook-button
49
+ *ngIf="!user"
50
+ primary
51
+ size="small"
52
+ primary="true"
53
+ class="margin-left"
54
+ (onClick)="onCreateAccount.emit($event)"
55
+ label="Sign up"
56
+ ></storybook-button>
57
+ </div>
47
58
  </div>
48
59
  </div>
49
60
  </header>`,
@@ -1,4 +1,4 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component } from '@angular/core';
2
2
  import { User } from './User';
3
3
 
4
4
  @Component({
@@ -6,9 +6,9 @@ import { User } from './User';
6
6
  template: `<article>
7
7
  <storybook-header
8
8
  [user]="user"
9
- (onLogout)="onLogout.emit($event)"
10
- (onLogin)="onLogin.emit($event)"
11
- (onCreateAccount)="onCreateAccount.emit($event)"
9
+ (onLogout)="doLogout()"
10
+ (onLogin)="doLogin()"
11
+ (onCreateAccount)="doCreateAccount()"
12
12
  ></storybook-header>
13
13
  <section>
14
14
  <h2>Pages in Storybook</h2>
@@ -61,31 +61,17 @@ import { User } from './User';
61
61
  styleUrls: ['./page.css'],
62
62
  })
63
63
  export default class PageComponent {
64
- @Input()
65
64
  user: User | null = null;
66
65
 
67
- @Output()
68
- onLogin = new EventEmitter<Event>();
66
+ doLogout() {
67
+ this.user = null;
68
+ }
69
69
 
70
- @Output()
71
- onLogout = new EventEmitter<Event>();
70
+ doLogin() {
71
+ this.user = { name: 'Jane Doe' };
72
+ }
72
73
 
73
- @Output()
74
- onCreateAccount = new EventEmitter<Event>();
74
+ doCreateAccount() {
75
+ this.user = { name: 'Jane Doe' };
76
+ }
75
77
  }
76
-
77
- // export const Page = ({ user, onLogin, onLogout, onCreateAccount }) => (
78
- // <article>
79
- // <Header user={user} onLogin={onLogin} onLogout={onLogout} onCreateAccount={onCreateAccount} />
80
-
81
- // );
82
- // Page.propTypes = {
83
- // user: PropTypes.shape({}),
84
- // onLogin: PropTypes.func.isRequired,
85
- // onLogout: PropTypes.func.isRequired,
86
- // onCreateAccount: PropTypes.func.isRequired,
87
- // };
88
-
89
- // Page.defaultProps = {
90
- // user: null,
91
- // };
@@ -24,3 +24,9 @@ h1 {
24
24
  button + button {
25
25
  margin-left: 10px;
26
26
  }
27
+
28
+ .welcome {
29
+ color: #333;
30
+ font-size: 14px;
31
+ margin-right: 10px;
32
+ }
@@ -28,7 +28,12 @@ export const Header = ({ user, onLogin, onLogout, onCreateAccount }) => (
28
28
  </div>
29
29
  <div>
30
30
  {user ? (
31
- <Button size="small" onClick={onLogout} label="Log out" />
31
+ <>
32
+ <span className="welcome">
33
+ Welcome, <b>{user.name}</b>!
34
+ </span>
35
+ <Button size="small" onClick={onLogout} label="Log out" />
36
+ </>
32
37
  ) : (
33
38
  <>
34
39
  <Button size="small" onClick={onLogin} label="Log in" />
@@ -5,13 +5,19 @@ import { Header } from './Header';
5
5
  export default {
6
6
  title: 'Example/Header',
7
7
  component: Header,
8
+ parameters: {
9
+ // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
10
+ layout: 'fullscreen',
11
+ },
8
12
  };
9
13
 
10
14
  const Template = (args) => <Header {...args} />;
11
15
 
12
16
  export const LoggedIn = Template.bind({});
13
17
  LoggedIn.args = {
14
- user: {},
18
+ user: {
19
+ name: 'Jane Doe',
20
+ },
15
21
  };
16
22
 
17
23
  export const LoggedOut = Template.bind({});
@@ -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
  };