mirror of
https://github.com/storybookjs/storybook.git
synced 2025-03-19 05:02:40 +08:00
Merge branch 'master' into no-unsafe-methods
This commit is contained in:
commit
a81564dbeb
@ -102,7 +102,6 @@ export default class BackgroundPanel extends Component {
|
||||
|
||||
this.channel.on('background-unset', () => {
|
||||
this.setState({ backgrounds: [] });
|
||||
api.setQueryParams({ background: null });
|
||||
this.updateIframe('none');
|
||||
});
|
||||
}
|
||||
|
@ -54,12 +54,12 @@ describe('Background Panel', () => {
|
||||
expect(mockedApi.getQueryParam).toBeCalledWith('background');
|
||||
});
|
||||
|
||||
it('should unset the query string', () => {
|
||||
it('should not unset the query string', () => {
|
||||
const SpiedChannel = new EventEmitter();
|
||||
mount(<BackgroundPanel channel={SpiedChannel} api={mockedApi} />);
|
||||
SpiedChannel.emit('background-unset', []);
|
||||
|
||||
expect(mockedApi.setQueryParams).toBeCalledWith({ background: null });
|
||||
expect(mockedApi.setQueryParams).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should accept colors through channel and render the correct swatches with a default swatch', () => {
|
||||
|
@ -23,6 +23,8 @@ const styles = {
|
||||
rangeLabel: {
|
||||
paddingLeft: 5,
|
||||
paddingRight: 5,
|
||||
fontSize: 12,
|
||||
whiteSpace: 'nowrap',
|
||||
},
|
||||
rangeWrapper: {
|
||||
display: 'flex',
|
||||
|
@ -3,10 +3,10 @@ import addons from '@storybook/addons';
|
||||
import marked from 'marked';
|
||||
import { WithNotes as ReactWithNotes } from './react';
|
||||
|
||||
export const withMarkdownNotes = text => {
|
||||
export const withMarkdownNotes = (text, options) => {
|
||||
const channel = addons.getChannel();
|
||||
|
||||
return getStory => context => {
|
||||
marked.setOptions({ ...marked.defaults, options });
|
||||
// send the notes to the channel before the story is rendered
|
||||
channel.emit('storybook/notes/add_notes', marked(text));
|
||||
return getStory(context);
|
||||
|
@ -33,6 +33,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -42,6 +43,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -34,6 +34,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -43,6 +44,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -33,6 +33,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -42,6 +43,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -32,6 +32,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -41,6 +42,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -34,6 +34,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -43,6 +44,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -33,6 +33,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -42,6 +43,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -66,7 +66,7 @@
|
||||
"webpack": "^4.4.1",
|
||||
"webpack-dev-middleware": "^3.1.0",
|
||||
"webpack-hot-middleware": "^2.21.2",
|
||||
"ws": "^4.1.0"
|
||||
"ws": "^5.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"react-native": "^0.52.2"
|
||||
|
7
app/react-native/src/server/index.js
vendored
7
app/react-native/src/server/index.js
vendored
@ -24,13 +24,6 @@ export default class Server {
|
||||
}
|
||||
}
|
||||
|
||||
// see https://github.com/websockets/ws/issues/1256#issuecomment-364988689
|
||||
socket.on('error', err => {
|
||||
// Ignore network errors like `ECONNRESET`, `EPIPE`, etc.
|
||||
if (err.errno) return;
|
||||
throw err;
|
||||
});
|
||||
|
||||
socket.on('message', data => {
|
||||
this.wsServer.clients.forEach(c => {
|
||||
if (!this.options.manualId || (socket.pairedId && socket.pairedId === c.pairedId)) {
|
||||
|
@ -33,6 +33,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -42,6 +43,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -32,6 +32,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -41,6 +42,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -33,6 +33,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -42,6 +43,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -32,6 +32,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
chunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
managerHead: getManagerHeadHtml(configDir),
|
||||
version,
|
||||
@ -41,6 +42,7 @@ export default function(configDir) {
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'iframe.html',
|
||||
excludeChunks: ['manager'],
|
||||
chunksSortMode: 'none',
|
||||
data: {
|
||||
previewHead: getPreviewHeadHtml(configDir),
|
||||
},
|
||||
|
@ -34,6 +34,36 @@ exports[`Storyshots Addons|Links.Link Second 1`] = `
|
||||
</a>
|
||||
`;
|
||||
|
||||
exports[`Storyshots Addons|Links.Scroll position First 1`] = `
|
||||
Array [
|
||||
<div
|
||||
style="margin-bottom:100vh"
|
||||
>
|
||||
Scroll down to see the link
|
||||
</div>,
|
||||
<a
|
||||
href="/"
|
||||
>
|
||||
Go to Second
|
||||
</a>,
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`Storyshots Addons|Links.Scroll position Second 1`] = `
|
||||
Array [
|
||||
<div
|
||||
style="margin-bottom:100vh"
|
||||
>
|
||||
Scroll down to see the link
|
||||
</div>,
|
||||
<a
|
||||
href="/"
|
||||
>
|
||||
Go to First
|
||||
</a>,
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`Storyshots Addons|Links.Select First 1`] = `
|
||||
<a
|
||||
href="/"
|
||||
|
@ -34,3 +34,13 @@ storiesOf('Addons|Links.Href', module).add('log', () => {
|
||||
|
||||
return <span>See action logger</span>;
|
||||
});
|
||||
|
||||
storiesOf('Addons|Links.Scroll position', module)
|
||||
.addDecorator(story => (
|
||||
<React.Fragment>
|
||||
<div style={{ marginBottom: '100vh' }}>Scroll down to see the link</div>
|
||||
{story()}
|
||||
</React.Fragment>
|
||||
))
|
||||
.add('First', () => <LinkTo story="Second">Go to Second</LinkTo>)
|
||||
.add('Second', () => <LinkTo story="First">Go to First</LinkTo>);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import { navigator, window } from 'global';
|
||||
import { navigator, window, document } from 'global';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
|
||||
@ -52,10 +52,20 @@ export default function start(render, { decorateStory } = {}) {
|
||||
const { clearDecorators } = clientApi;
|
||||
const configApi = new ConfigApi({ clearDecorators, ...context });
|
||||
|
||||
let prevKind;
|
||||
let prevStory;
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
const { selectedKind, selectedStory } = reduxStore.getState();
|
||||
if (selectedKind !== prevKind || selectedStory !== prevStory) {
|
||||
// Scroll to top of the page when changing story
|
||||
document.documentElement.scrollTop = 0;
|
||||
prevKind = selectedKind;
|
||||
prevStory = selectedStory;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -17297,12 +17297,11 @@ ws@^3.0.0, ws@~3.3.1:
|
||||
safe-buffer "~5.1.0"
|
||||
ultron "~1.1.0"
|
||||
|
||||
ws@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
|
||||
ws@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-5.1.0.tgz#ad7f95a65c625d47c24f2b8e5928018cf965e2a6"
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
x-is-function@^1.0.4:
|
||||
version "1.0.4"
|
||||
|
Loading…
x
Reference in New Issue
Block a user