Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release: Patch 8.0.10 #26933

Merged
merged 10 commits into from May 5, 2024
6 changes: 6 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,9 @@
## 8.0.10

- MDX: Don't transform `http://` links - [#26488](https://github.com/storybookjs/storybook/pull/26488), thanks @JReinhold!
- React: Support v19 in `react-dom-shim` - [#26898](https://github.com/storybookjs/storybook/pull/26898), thanks @Tobbe!
- Vite: Merge assetsInclude property with Storybook default values - [#26860](https://github.com/storybookjs/storybook/pull/26860), thanks @yuemori!

## 8.0.9

- Addon-docs: Fix MDX compilation when using `@vitejs/plugin-react-swc` with plugins - [#26837](https://github.com/storybookjs/storybook/pull/26837), thanks @JReinhold!
Expand Down
Expand Up @@ -11,6 +11,7 @@ export default {
},
parameters: {
actions: { argTypesRegex: '^on[A-Z].*' },
chromatic: { disable: true },
},
};

Expand Down
15 changes: 15 additions & 0 deletions code/builders/builder-vite/src/assetsInclude.ts
@@ -0,0 +1,15 @@
import type { InlineConfig as ViteInlineConfig } from 'vite';

export function getAssetsInclude(config: ViteInlineConfig, newPath: string[]): (string | RegExp)[] {
const { assetsInclude } = config;

if (!assetsInclude) {
return newPath;
}

if (Array.isArray(assetsInclude)) {
return [...assetsInclude, ...newPath];
} else {
return [assetsInclude, ...newPath];
}
}
3 changes: 2 additions & 1 deletion code/builders/builder-vite/src/vite-server.ts
Expand Up @@ -3,6 +3,7 @@ import type { Options } from '@storybook/types';
import { commonConfig } from './vite-config';
import { getOptimizeDeps } from './optimizeDeps';
import { sanitizeEnvVars } from './envs';
import { getAssetsInclude } from './assetsInclude';

export async function createViteServer(options: Options, devServer: Server) {
const { presets } = options;
Expand All @@ -12,7 +13,7 @@ export async function createViteServer(options: Options, devServer: Server) {
const config = {
...commonCfg,
// Needed in Vite 5: https://github.com/storybookjs/storybook/issues/25256
assetsInclude: ['/sb-preview/**'],
assetsInclude: getAssetsInclude(commonCfg, ['/sb-preview/**']),
// Set up dev server
server: {
middlewareMode: true,
Expand Down
8 changes: 4 additions & 4 deletions code/lib/react-dom-shim/src/preset.ts
Expand Up @@ -6,7 +6,7 @@ import { readFile } from 'fs/promises';
* Get react-dom version from the resolvedReact preset, which points to either
* a root react-dom dependency or the react-dom dependency shipped with addon-docs
*/
const getIsReactVersion18 = async (options: Options) => {
const getIsReactVersion18or19 = async (options: Options) => {
const { legacyRootApi } =
(await options.presets.apply<{ legacyRootApi?: boolean } | null>('frameworkOptions')) || {};

Expand All @@ -24,11 +24,11 @@ const getIsReactVersion18 = async (options: Options) => {
}

const { version } = JSON.parse(await readFile(join(reactDom, 'package.json'), 'utf-8'));
return version.startsWith('18') || version.startsWith('0.0.0');
return version.startsWith('18') || version.startsWith('19') || version.startsWith('0.0.0');
};

export const webpackFinal = async (config: any, options: Options) => {
const isReactVersion18 = await getIsReactVersion18(options);
const isReactVersion18 = await getIsReactVersion18or19(options);
if (isReactVersion18) {
return config;
}
Expand All @@ -46,7 +46,7 @@ export const webpackFinal = async (config: any, options: Options) => {
};

export const viteFinal = async (config: any, options: Options) => {
const isReactVersion18 = await getIsReactVersion18(options);
const isReactVersion18 = await getIsReactVersion18or19(options);
if (isReactVersion18) {
return config;
}
Expand Down
3 changes: 2 additions & 1 deletion code/package.json
Expand Up @@ -295,5 +295,6 @@
"Dependency Upgrades"
]
]
}
},
"deferredNextVersion": "8.0.10"
}
72 changes: 35 additions & 37 deletions code/ui/blocks/src/blocks/mdx.tsx
Expand Up @@ -96,45 +96,43 @@ export const AnchorMdx: FC<PropsWithChildren<AnchorMdxProps>> = (props) => {
const { href, target, children, ...rest } = props;
const context = useContext(DocsContext);

if (href) {
// Enable scrolling for in-page anchors.
if (href.startsWith('#')) {
return <AnchorInPage hash={href}>{children}</AnchorInPage>;
}

// Links to other pages of SB should use the base URL of the top level iframe instead of the base URL of the preview iframe.
if (target !== '_blank' && !href.startsWith('https://')) {
return (
<A
href={href}
onClick={(event: MouseEvent<HTMLAnchorElement>) => {
// Cmd/Ctrl/Shift/Alt + Click should trigger default browser behaviour. Same applies to non-left clicks
const LEFT_BUTTON = 0;
const isLeftClick =
event.button === LEFT_BUTTON &&
!event.altKey &&
!event.ctrlKey &&
!event.metaKey &&
!event.shiftKey;

if (isLeftClick) {
event.preventDefault();
// use the A element's href, which has been modified for
// local paths without a `?path=` query param prefix
navigate(context, event.currentTarget.getAttribute('href'));
}
}}
target={target}
{...rest}
>
{children}
</A>
);
}
// links to external locations don't need any modifications.
if (!href || target === '_blank' || /^https?:\/\//.test(href)) {
return <A {...props} />;
}

// External URL dont need any modification.
return <A {...props} />;
// Enable scrolling for in-page anchors.
if (href.startsWith('#')) {
return <AnchorInPage hash={href}>{children}</AnchorInPage>;
}

// Links to other pages of SB should use the base URL of the top level iframe instead of the base URL of the preview iframe.
return (
<A
href={href}
onClick={(event: MouseEvent<HTMLAnchorElement>) => {
// Cmd/Ctrl/Shift/Alt + Click should trigger default browser behaviour. Same applies to non-left clicks
const LEFT_BUTTON = 0;
const isLeftClick =
event.button === LEFT_BUTTON &&
!event.altKey &&
!event.ctrlKey &&
!event.metaKey &&
!event.shiftKey;

if (isLeftClick) {
event.preventDefault();
// use the A element's href, which has been modified for
// local paths without a `?path=` query param prefix
navigate(context, event.currentTarget.getAttribute('href'));
}
}}
target={target}
{...rest}
>
{children}
</A>
);
};

const SUPPORTED_MDX_HEADERS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;
Expand Down
10 changes: 5 additions & 5 deletions docs/get-started/vue3-webpack5.md
Expand Up @@ -74,9 +74,9 @@ First, install the framework:

<CodeSnippets
paths={[
'vue/vue-webpack5-install.npm.js.mdx',
'vue/vue-webpack5-install.pnpm.js.mdx',
'vue/vue-webpack5-install.yarn.js.mdx'
'vue/vue3-webpack5-install.npm.js.mdx',
'vue/vue3-webpack5-install.pnpm.js.mdx',
'vue/vue3-webpack5-install.yarn.js.mdx'
]}
/>

Expand Down Expand Up @@ -118,8 +118,8 @@ Finally, update your `.storybook/main.js|ts` to change the framework property:

<CodeSnippets
paths={[
'vue/vue-webpack5-add-framework.js.mdx',
'vue/vue-webpack5-add-framework.ts.mdx'
'vue/vue3-webpack5-add-framework.js.mdx',
'vue/vue3-webpack5-add-framework.ts.mdx'
]}
/>

Expand Down
2 changes: 1 addition & 1 deletion docs/snippets/angular/angular-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/angular
pnpm add --save-dev @storybook/angular
```
2 changes: 1 addition & 1 deletion docs/snippets/react/nextjs-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/nextjs
pnpm add --save-dev @storybook/nextjs
```
2 changes: 1 addition & 1 deletion docs/snippets/react/react-vite-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/react-vite
pnpm add --save-dev @storybook/react-vite
```
2 changes: 1 addition & 1 deletion docs/snippets/react/react-webpack5-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/react-webpack5
pnpm add --save-dev @storybook/react-webpack5
```
2 changes: 1 addition & 1 deletion docs/snippets/svelte/svelte-vite-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/svelte-vite
pnpm add --save-dev @storybook/svelte-vite
```
2 changes: 1 addition & 1 deletion docs/snippets/svelte/svelte-webpack5-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/svelte-webpack5
pnpm add --save-dev @storybook/svelte-webpack5
```
2 changes: 1 addition & 1 deletion docs/snippets/svelte/sveltekit-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/sveltekit
pnpm add --save-dev @storybook/sveltekit
```
2 changes: 1 addition & 1 deletion docs/snippets/vue/vue3-vite-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/vue3-vite
pnpm add --save-dev @storybook/vue3-vite
```
2 changes: 1 addition & 1 deletion docs/snippets/vue/vue3-webpack5-install.pnpm.js.mdx
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/vue3-webpack5
pnpm add --save-dev @storybook/vue3-webpack5
```
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/web-components-vite
pnpm add --save-dev @storybook/web-components-vite
```
@@ -1,3 +1,3 @@
```shell
pnpm install --save-dev @storybook/web-components-webpack5
pnpm add --save-dev @storybook/web-components-webpack5
```
2 changes: 1 addition & 1 deletion docs/versions/latest.json
@@ -1 +1 @@
{"version":"8.0.9","info":{"plain":"- Addon-docs: Fix MDX compilation when using `@vitejs/plugin-react-swc` with plugins - [#26837](https://github.com/storybookjs/storybook/pull/26837), thanks @JReinhold!\n- CSF: Fix typings for control and other properties of argTypes - [#26824](https://github.com/storybookjs/storybook/pull/26824), thanks @kasperpeulen!\n- Controls: Fix crashing when docgen extraction partially fails - [#26862](https://github.com/storybookjs/storybook/pull/26862), thanks @yannbf!\n- Doc Tools: Signature Type Error Handling - [#26774](https://github.com/storybookjs/storybook/pull/26774), thanks @ethriel3695!\n- Next.js: Move sharp into optional deps - [#26787](https://github.com/storybookjs/storybook/pull/26787), thanks @shuta13!\n- Nextjs: Support next 14.2 useParams functionality - [#26874](https://github.com/storybookjs/storybook/pull/26874), thanks @yannbf!\n- Test: Remove chai as dependency of @storybook/test - [#26852](https://github.com/storybookjs/storybook/pull/26852), thanks @kasperpeulen!\n- UI: Fix sidebar search hanging when selecting a story in touch mode - [#26807](https://github.com/storybookjs/storybook/pull/26807), thanks @JReinhold!"}}
{"version":"8.0.10","info":{"plain":"- MDX: Don't transform `http://` links - [#26488](https://github.com/storybookjs/storybook/pull/26488), thanks @JReinhold!\n- React: Support v19 in `react-dom-shim` - [#26898](https://github.com/storybookjs/storybook/pull/26898), thanks @Tobbe!\n- Vite: Merge assetsInclude property with Storybook default values - [#26860](https://github.com/storybookjs/storybook/pull/26860), thanks @yuemori!"}}
2 changes: 1 addition & 1 deletion docs/versions/next.json
@@ -1 +1 @@
{"version":"8.1.0-alpha.7","info":{"plain":"- CLI: Add --config-dir flag to add command - [#26771](https://github.com/storybookjs/storybook/pull/26771), thanks @eric-blue!\n- CLI: Add Visual Tests addon install auto-migration when upgrading to 8.0.x - [#26766](https://github.com/storybookjs/storybook/pull/26766), thanks @ndelangen!\n- Controls: Add Channels API to search for files in the project root - [#26726](https://github.com/storybookjs/storybook/pull/26726), thanks @valentinpalkovic!\n- Test: Make spies reactive so that they can be logged by addon-actions - [#26740](https://github.com/storybookjs/storybook/pull/26740), thanks @kasperpeulen!\n- Vue: Disable controls for events, slots, and expose - [#26751](https://github.com/storybookjs/storybook/pull/26751), thanks @shilman!\n- Webpack: Bump webpack-dev-middleware to patch high security issue - [#26655](https://github.com/storybookjs/storybook/pull/26655), thanks @jwilliams-met!"}}
{"version":"8.1.0-alpha.8","info":{"plain":"- Addon-actions: Fix falsy args printing as object - 22163 - [#26917](https://github.com/storybookjs/storybook/pull/26917), thanks @Fatcat560!\n- Addon-docs: Fix MDX compilation with `@vitejs/plugin-react-swc` and plugins - [#26837](https://github.com/storybookjs/storybook/pull/26837), thanks @JReinhold!\n- Automigration: Fix name of VTA addon - [#26816](https://github.com/storybookjs/storybook/pull/26816), thanks @valentinpalkovic!\n- Blocks: Add `of` prop to `Subtitle` - [#22552](https://github.com/storybookjs/storybook/pull/22552), thanks @joaonunomota!\n- Blocks: Add `of` prop to `Title` - [#23728](https://github.com/storybookjs/storybook/pull/23728), thanks @Sidnioulz!\n- CSF: Fix typings for control and other properties of argTypes - [#26824](https://github.com/storybookjs/storybook/pull/26824), thanks @kasperpeulen!\n- Controls: Added server channel to create a new story - [#26769](https://github.com/storybookjs/storybook/pull/26769), thanks @valentinpalkovic!\n- Controls: Fix crashing when docgen extraction partially fails - [#26862](https://github.com/storybookjs/storybook/pull/26862), thanks @yannbf!\n- Core: Drop unneeded `UPDATE_STORY_ARGS` which was for SSv6 - [#25993](https://github.com/storybookjs/storybook/pull/25993), thanks @tmeasday!\n- Core: Ensure that simultaneous onStoriesChanged don't clobber each other - [#26882](https://github.com/storybookjs/storybook/pull/26882), thanks @tmeasday!\n- Core: Fix filters not being applied in WebKit - [#26949](https://github.com/storybookjs/storybook/pull/26949), thanks @JReinhold!\n- Core: Implement file formatter - [#26809](https://github.com/storybookjs/storybook/pull/26809), thanks @valentinpalkovic!\n- Core: Save from controls - [#26827](https://github.com/storybookjs/storybook/pull/26827), thanks @ndelangen!\n- Dependencies: Upgrade @storybook/csf to 0.1.5 - [#26958](https://github.com/storybookjs/storybook/pull/26958), thanks @Cherry!\n- Doc Tools: Signature Type Error Handling - [#26774](https://github.com/storybookjs/storybook/pull/26774), thanks @ethriel3695!\n- Docs: Fix providerImportSource extension - [#26868](https://github.com/storybookjs/storybook/pull/26868), thanks @bashmish!\n- MDX: Don't transform `http://` links - [#26488](https://github.com/storybookjs/storybook/pull/26488), thanks @JReinhold!\n- Next.js: Move sharp into optional deps - [#26787](https://github.com/storybookjs/storybook/pull/26787), thanks @shuta13!\n- Next.js: Support v14.2 useParams functionality - [#26874](https://github.com/storybookjs/storybook/pull/26874), thanks @yannbf!\n- Nextjs: Implement next redirect and the RedirectBoundary - [#26886](https://github.com/storybookjs/storybook/pull/26886), thanks @kasperpeulen!\n- Portable Stories: Warn when rendering stories without cleaning up first - [#27008](https://github.com/storybookjs/storybook/pull/27008), thanks @JReinhold!\n- React: Support v19 in `react-dom-shim` - [#26898](https://github.com/storybookjs/storybook/pull/26898), thanks @Tobbe!\n- Revert \\\"Nextjs: Implement next redirect and the RedirectBoundary\\\" - [#27025](https://github.com/storybookjs/storybook/pull/27025), thanks @JReinhold!\n- SfC: Implement new feature to create new story files - [#26875](https://github.com/storybookjs/storybook/pull/26875), thanks @valentinpalkovic!\n- Test: Remove chai as dependency of @storybook/test - [#26852](https://github.com/storybookjs/storybook/pull/26852), thanks @kasperpeulen!\n- Test: Support module mocking with conditional subpath imports in `package.json` - [#26688](https://github.com/storybookjs/storybook/pull/26688), thanks @kasperpeulen!\n- UI: Fix not re-rendering tabs on state change - [#26899](https://github.com/storybookjs/storybook/pull/26899), thanks @lifeiscontent!\n- UI: Fix sidebar search hanging when selecting a story in touch mode - [#26807](https://github.com/storybookjs/storybook/pull/26807), thanks @JReinhold!\n- Vite: Merge assetsInclude property with Storybook default values - [#26860](https://github.com/storybookjs/storybook/pull/26860), thanks @yuemori!"}}
26 changes: 26 additions & 0 deletions scripts/tasks/sandbox-parts.ts
Expand Up @@ -533,6 +533,32 @@ export const extendMain: Task['run'] = async ({ template, sandboxDir }, { disabl

Object.entries(configToAdd).forEach(([field, value]) => mainConfig.setFieldValue([field], value));

const previewHeadCode = `
(head) => \`
\${head}
${templateConfig.previewHead || ''}
<style>
/* explicitly set monospace font stack to workaround inconsistent fonts in Chromatic */
pre, code, kbd, samp {
font-family:
ui-monospace,
Menlo,
Monaco,
"Cascadia Mono",
"Segoe UI Mono",
"Roboto Mono",
"Oxygen Mono",
"Ubuntu Monospace",
"Source Code Pro",
"Fira Mono",
"Droid Sans Mono",
"Courier New",
monospace;
}
</style>
\``;
mainConfig.setFieldNode(['previewHead'], babelParse(previewHeadCode).program.body[0].expression);

// Simulate Storybook Lite
if (disableDocs) {
const addons = mainConfig.getFieldValue(['addons']);
Expand Down
2 changes: 1 addition & 1 deletion scripts/tasks/test-runner-build.ts
Expand Up @@ -13,7 +13,7 @@ export const testRunnerBuild: Task & { port: number } = {
async run({ sandboxDir, junitFilename }, { dryRun, debug }) {
const execOptions = { cwd: sandboxDir };
const flags = [
`--url http://localhost:${this.port}`,
`--url http://127.0.0.1:${this.port}`,
'--junit',
'--maxWorkers=2',
'--failOnConsole',
Expand Down