Pulled upstream. Resolved conflicts.

This commit is contained in:
ASeeto 2018-02-16 20:35:56 -05:00
commit 80705e9680
76 changed files with 1306 additions and 1173 deletions

View File

@ -27,7 +27,7 @@
"dependencies": {
"@storybook/components": "^3.4.0-alpha.8",
"axe-core": "^2.6.1",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"prop-types": "^15.6.0"
},
"peerDependencies": {

View File

@ -24,7 +24,7 @@
"dependencies": {
"global": "^4.3.2",
"graphiql": "^0.11.11",
"graphql": "^0.13.0",
"graphql": "^0.13.1",
"prop-types": "^15.6.0"
},
"peerDependencies": {

View File

@ -18,7 +18,7 @@
"@storybook/client-logger": "^3.4.0-alpha.8",
"@storybook/components": "^3.4.0-alpha.8",
"babel-runtime": "^6.26.0",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"global": "^4.3.2",
"marksy": "^6.0.3",
"nested-object-assign": "^1.0.1",

View File

@ -27,7 +27,7 @@
"dependencies": {
"@storybook/components": "^3.4.0-alpha.8",
"glamor": "^2.20.40",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"global": "^4.3.2",
"prop-types": "^15.6.0"
},

View File

@ -30,7 +30,7 @@
},
"devDependencies": {
"raw-loader": "^0.5.1",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"vue": "^2.5.13"
},
"peerDependencies": {

View File

@ -74,7 +74,7 @@
"request": "^2.81.0",
"rxjs": "^5.4.2",
"sass-loader": "^6.0.6",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"ts-loader": "^2.2.2",
"uglifyjs-webpack-plugin": "^1.1.7",
"url-loader": "^0.6.2",
@ -88,8 +88,8 @@
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"codelyzer": "^4.1.0",
"mock-fs": "^4.3.0",
"nodemon": "^1.14.12",
"typescript": "^2.7.1"
"nodemon": "^1.15.0",
"typescript": "^2.7.2"
},
"peerDependencies": {
"@angular/common": ">=4.0.0",

View File

@ -71,7 +71,7 @@
"react-modal": "^3.2.1",
"redux": "^3.7.2",
"request": "^2.83.0",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"uglifyjs-webpack-plugin": "^1.1.7",
"url-loader": "^0.6.2",
"util-deprecate": "^1.0.2",
@ -79,6 +79,6 @@
},
"devDependencies": {
"babel-cli": "^6.26.0",
"nodemon": "^1.14.12"
"nodemon": "^1.15.0"
}
}

View File

@ -62,7 +62,7 @@
"react-native-compat": "^1.0.0",
"react-native-iphone-x-helper": "^1.0.2",
"shelljs": "^0.8.1",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"uglifyjs-webpack-plugin": "^1.1.7",
"url-loader": "^0.6.2",
"url-parse": "^1.1.9",

View File

@ -54,7 +54,7 @@
"file-loader": "^1.1.6",
"find-cache-dir": "^1.0.0",
"glamor": "^2.20.40",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"global": "^4.3.2",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^2.30.1",
@ -71,14 +71,14 @@
"react-dev-utils": "^5.0.0",
"redux": "^3.7.2",
"request": "^2.83.0",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"uglifyjs-webpack-plugin": "^1.1.7",
"url-loader": "^0.6.2",
"util-deprecate": "^1.0.2",
"webpack": "^3.11.0"
},
"devDependencies": {
"nodemon": "^1.14.12"
"nodemon": "^1.15.0"
},
"peerDependencies": {
"babel-core": "^6.26.0 || ^7.0.0-0",

View File

@ -67,7 +67,7 @@
"react-dom": "^16.2.0",
"redux": "^3.7.2",
"request": "^2.83.0",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"uglifyjs-webpack-plugin": "^1.1.7",
"url-loader": "^0.6.2",
"util-deprecate": "^1.0.2",
@ -76,7 +76,7 @@
"webpack": "^3.11.0"
},
"devDependencies": {
"nodemon": "^1.14.12",
"nodemon": "^1.15.0",
"vue": "^2.5.13",
"vue-loader": "^13.7.1",
"vue-template-compiler": "^2.5.13"

View File

@ -34,6 +34,7 @@ collectors:
versions: "L.Y.Y"
settings:
batch_mode: true
batch_bootstrap: true
bootstrap_command: yarn --ignore-scripts --ignore-engines --silent
github_labels:
- dependencies:update

View File

@ -31,20 +31,20 @@
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"bootstrap": "^3.3.7",
"gatsby": "^1.9.199",
"gatsby": "^1.9.201",
"gatsby-link": "^1.6.37",
"gatsby-plugin-sharp": "^1.6.28",
"gatsby-plugin-sharp": "^1.6.29",
"gatsby-remark-autolink-headers": "^1.4.12",
"gatsby-remark-copy-linked-files": "^1.5.27",
"gatsby-remark-images": "^1.5.44",
"gatsby-remark-images": "^1.5.45",
"gatsby-remark-smartypants": "^1.4.11",
"gatsby-source-filesystem": "^1.5.19",
"gatsby-source-filesystem": "^1.5.20",
"gatsby-transformer-remark": "^1.7.32",
"gh-pages": "^1.1.0",
"global": "^4.3.2",
"highlight.js": "^9.12.0",
"lodash": "^4.17.5",
"marked": "^0.3.12",
"marked": "^0.3.14",
"prop-types": "^15.6.0",
"react": "^15.6.1",
"react-document-title": "^2.0.3",

View File

@ -4395,9 +4395,9 @@ gatsby-module-loader@^1.0.10:
babel-runtime "^6.26.0"
loader-utils "^0.2.16"
gatsby-plugin-sharp@^1.6.28:
version "1.6.28"
resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-1.6.28.tgz#4f485f4be15d2e64a7876455aea1fc9ed80b05a7"
gatsby-plugin-sharp@^1.6.29:
version "1.6.29"
resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-1.6.29.tgz#6e1df0ea3ac165decd579e574b8e53e49b6c787f"
dependencies:
async "^2.1.2"
babel-runtime "^6.26.0"
@ -4442,13 +4442,13 @@ gatsby-remark-copy-linked-files@^1.5.27:
path-is-inside "^1.0.2"
unist-util-visit "^1.1.1"
gatsby-remark-images@^1.5.44:
version "1.5.44"
resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-1.5.44.tgz#19c0cdbb8fbe49c2b3f3e76d02994af8bb57d586"
gatsby-remark-images@^1.5.45:
version "1.5.45"
resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-1.5.45.tgz#d6b90b1134c7fada5ae4a39efe6c26f33f0c0e13"
dependencies:
babel-runtime "^6.26.0"
cheerio "^1.0.0-rc.2"
gatsby-plugin-sharp "^1.6.28"
gatsby-plugin-sharp "^1.6.29"
is-relative-url "^2.0.0"
lodash "^4.17.4"
slash "^1.0.0"
@ -4463,9 +4463,9 @@ gatsby-remark-smartypants@^1.4.11:
retext-smartypants "^2.0.0"
unist-util-visit "^1.1.1"
gatsby-source-filesystem@^1.5.19:
version "1.5.19"
resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.19.tgz#bce5596d525f2098624a0c99c27d956fcb753c3d"
gatsby-source-filesystem@^1.5.20:
version "1.5.20"
resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.20.tgz#5f5bc8989497795adee7302451174ef5eaf6086d"
dependencies:
babel-cli "^6.26.0"
babel-runtime "^6.26.0"
@ -4504,9 +4504,9 @@ gatsby-transformer-remark@^1.7.32:
unist-util-select "^1.5.0"
unist-util-visit "^1.1.1"
gatsby@^1.9.199:
version "1.9.199"
resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.199.tgz#8d23dcd1d3b33d012074cc8a439174dfc5a700f6"
gatsby@^1.9.201:
version "1.9.201"
resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.201.tgz#792ed6dfd8e75ad89bb6c8e1fe262b493f88eb7d"
dependencies:
async "^2.1.2"
babel-code-frame "^6.22.0"
@ -6730,9 +6730,9 @@ markdown-table@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c"
marked@^0.3.12:
version "0.3.12"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.12.tgz#7cf25ff2252632f3fe2406bde258e94eee927519"
marked@^0.3.14:
version "0.3.14"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.14.tgz#42375c23e206b95fdd497dd1d2f33ae4d1cf3d6c"
marked@^0.3.6:
version "0.3.9"

View File

@ -4,3 +4,4 @@ import '@storybook/addon-actions/register';
import '@storybook/addon-links/register';
import '@storybook/addon-notes/register';
import '@storybook/addon-knobs/register';
import '@storybook/addon-options/register';

View File

@ -1,15 +1,20 @@
import { configure } from '@storybook/angular';
import { setOptions } from '@storybook/addon-options';
import addCssWarning from '../src/cssWarning';
addCssWarning();
setOptions({
hierarchyRootSeparator: /\|/,
});
function loadStories() {
// put welcome screen at the top of the list so it's the first one displayed
require('../src/stories');
// automatically import all story ts files that end with *.stories.ts
const req = require.context('../src/stories', true, /\.stories\.ts$/)
req.keys().forEach((filename) => req(filename))
const req = require.context('../src/stories', true, /\.stories\.ts$/);
req.keys().forEach((filename) => req(filename));
}
configure(loadStories, module);

View File

@ -27,12 +27,13 @@
"zone.js": "^0.8.20"
},
"devDependencies": {
"@angular/cli": "1.6.8",
"@angular/cli": "1.7.0",
"@angular/compiler-cli": "^5.2.5",
"@angular/language-service": "^5.2.5",
"@storybook/addon-actions": "^3.4.0-alpha.8",
"@storybook/addon-links": "^3.4.0-alpha.8",
"@storybook/addon-notes": "^3.4.0-alpha.8",
"@storybook/addon-options": "^3.4.0-alpha.8",
"@storybook/addon-storyshots": "^3.4.0-alpha.8",
"@storybook/addons": "^3.4.0-alpha.8",
"@storybook/angular": "^3.4.0-alpha.8",
@ -49,6 +50,6 @@
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~4.1.0",
"typescript": "^2.7.1"
"typescript": "^2.7.2"
}
}

View File

@ -1,28 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon Actions Action and method 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c5=""
>
<button
_ngcontent-c5=""
>
Action and Method
</button>
</storybook-button-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Addon Actions Action only 1`] = `
exports[`Storyshots Addon|Actions Action and method 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
@ -35,6 +13,28 @@ exports[`Storyshots Addon Actions Action only 1`] = `
<button
_ngcontent-c4=""
>
Action and Method
</button>
</storybook-button-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Addon|Actions Action only 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c3=""
>
<button
_ngcontent-c3=""
>
Action only
</button>

View File

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon Knobs All knobs 1`] = `
exports[`Storyshots Addon|Knobs All knobs 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
@ -84,7 +84,7 @@ exports[`Storyshots Addon Knobs All knobs 1`] = `
</storybook-dynamic-app-root>
`;
exports[`Storyshots Addon Knobs Simple 1`] = `
exports[`Storyshots Addon|Knobs Simple 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}

View File

@ -1,18 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Another Button button with link to another story 1`] = `
exports[`Storyshots Addon|Links button with link to another story 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c6=""
_nghost-c5=""
>
<button
_ngcontent-c6=""
_ngcontent-c5=""
>
Go to Welcome Story
</button>

View File

@ -1,28 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon Notes Note with HTML 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c8=""
>
<button
_ngcontent-c8=""
>
Notes with HTML
</button>
</storybook-button-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Addon Notes Simple note 1`] = `
exports[`Storyshots Addon|Notes Note with HTML 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
@ -35,6 +13,28 @@ exports[`Storyshots Addon Notes Simple note 1`] = `
<button
_ngcontent-c7=""
>
Notes with HTML
</button>
</storybook-button-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Addon|Notes Simple note 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c6=""
>
<button
_ngcontent-c6=""
>
Notes on some Button
</button>

View File

@ -0,0 +1,21 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|ng-content Default 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<ng-component>
<storybook-with-ng-content>
<div
style="color: #1e88e5;"
>
<h1>
This is rendered in ng-content
</h1>
</div>
</storybook-with-ng-content>
</ng-component>
</storybook-dynamic-app-root>
`;

View File

@ -0,0 +1,29 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|Pipes Simple 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-name>
<h1>
CustomPipe: foobar
</h1>
</storybook-name>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom|Pipes With Knobs 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-name>
<h1>
CustomPipe: foobar
</h1>
</storybook-name>
</storybook-dynamic-app-root>
`;

View File

@ -1,34 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom Pipe Default 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-name>
<h1>
CustomPipe: foobar
</h1>
</storybook-name>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom Pipe/With Knobs NameComponent 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-name>
<h1>
CustomPipe: foobar
</h1>
</storybook-name>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom ngModule metadata simple 1`] = `
exports[`Storyshots Custom|Providers Simple 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
@ -55,7 +27,7 @@ exports[`Storyshots Custom ngModule metadata simple 1`] = `
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom ngModule metadata with knobs 1`] = `
exports[`Storyshots Custom|Providers With knobs 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}

View File

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom Style Default 1`] = `
exports[`Storyshots Custom|Style Default 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
@ -8,13 +8,13 @@ exports[`Storyshots Custom Style Default 1`] = `
>
<ng-component>
<storybook-button-component
_nghost-c9=""
_nghost-c8=""
ng-reflect-text="Button with custom styles"
>
<button
_ngcontent-c9=""
_ngcontent-c8=""
>
Button with custom styles
</button>
@ -25,24 +25,24 @@ exports[`Storyshots Custom Style Default 1`] = `
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom Style With Knobs 1`] = `
exports[`Storyshots Custom|Style With Knobs 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<ng-component
_nghost-c10=""
_nghost-c9=""
>
<storybook-button-component
_ngcontent-c10=""
_nghost-c11=""
_ngcontent-c9=""
_nghost-c10=""
ng-reflect-text="Button with custom styles"
>
<button
_ngcontent-c11=""
_ngcontent-c10=""
>
Button with custom styles
</button>

View File

@ -6,19 +6,22 @@ exports[`Storyshots Button with some emoji 1`] = `
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-button-component
_nghost-c3=""
>
<button
_ngcontent-c3=""
<ng-component>
<storybook-button-component
_nghost-c2=""
ng-reflect-text="😀 😎 👍 💯"
>
😀 😎 👍 💯
</button>
<button
_ngcontent-c2=""
>
😀 😎 👍 💯
</button>
</storybook-button-component>
</storybook-button-component>
</ng-component>
</storybook-dynamic-app-root>
`;
@ -29,13 +32,6 @@ exports[`Storyshots Button with text 1`] = `
target={[Function ViewContainerRef_]}
>
<ng-component>
<h1>
This is a template
</h1>
<storybook-button-component
_nghost-c1=""
ng-reflect-text="Hello Button"
@ -50,39 +46,48 @@ exports[`Storyshots Button with text 1`] = `
</storybook-button-component>
</ng-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Welcome to Storybook 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<ng-component>
<storybook-welcome-component
_nghost-c2=""
_nghost-c0=""
>
<main
_ngcontent-c2=""
_ngcontent-c0=""
>
<h1
_ngcontent-c2=""
_ngcontent-c0=""
>
Welcome to storybook
</h1>
<p
_ngcontent-c2=""
_ngcontent-c0=""
>
This is a UI component dev environment for your app.
</p>
<p
_ngcontent-c2=""
_ngcontent-c0=""
>
We've added some basic stories inside the
<span
_ngcontent-c2=""
_ngcontent-c0=""
class="inline-code"
>
src/stories
@ -90,14 +95,14 @@ exports[`Storyshots Button with text 1`] = `
directory.
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
A story is a single state of one or more UI components. You can have as many stories as
you want.
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
(Basically a story is like a visual test case.)
@ -106,12 +111,12 @@ exports[`Storyshots Button with text 1`] = `
<p
_ngcontent-c2=""
_ngcontent-c0=""
>
See these sample
<a
_ngcontent-c2=""
_ngcontent-c0=""
role="button"
tabindex="0"
>
@ -120,7 +125,7 @@ exports[`Storyshots Button with text 1`] = `
for a component called
<span
_ngcontent-c2=""
_ngcontent-c0=""
class="inline-code"
>
Button
@ -131,24 +136,24 @@ exports[`Storyshots Button with text 1`] = `
<p
_ngcontent-c2=""
_ngcontent-c0=""
>
Just like that, you can add your own components as stories.
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
You can also edit those components and see changes right away.
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
(Try editing the
<span
_ngcontent-c2=""
_ngcontent-c0=""
class="inline-code"
>
Button
@ -156,7 +161,7 @@ exports[`Storyshots Button with text 1`] = `
stories
located at
<span
_ngcontent-c2=""
_ngcontent-c0=""
class="inline-code"
>
src/stories/index.js
@ -167,17 +172,17 @@ exports[`Storyshots Button with text 1`] = `
<p
_ngcontent-c2=""
_ngcontent-c0=""
>
Usually we create stories with smaller UI components in the app.
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
Have a look at the
<a
_ngcontent-c2=""
_ngcontent-c0=""
href="https://storybook.js.org/basics/writing-stories"
rel="noopener noreferrer"
target="_blank"
@ -192,25 +197,25 @@ exports[`Storyshots Button with text 1`] = `
<p
_ngcontent-c2=""
_ngcontent-c0=""
class="note"
>
<b
_ngcontent-c2=""
_ngcontent-c0=""
>
NOTE:
</b>
<br
_ngcontent-c2=""
_ngcontent-c0=""
/>
Have a look at the
<span
_ngcontent-c2=""
_ngcontent-c0=""
class="inline-code"
>
.storybook/webpack.config.js
@ -225,190 +230,6 @@ exports[`Storyshots Button with text 1`] = `
</storybook-welcome-component>
</ng-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Welcome to Storybook 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-welcome-component
_nghost-c0=""
>
<main
_ngcontent-c0=""
>
<h1
_ngcontent-c0=""
>
Welcome to storybook
</h1>
<p
_ngcontent-c0=""
>
This is a UI component dev environment for your app.
</p>
<p
_ngcontent-c0=""
>
We've added some basic stories inside the
<span
_ngcontent-c0=""
class="inline-code"
>
src/stories
</span>
directory.
<br
_ngcontent-c0=""
/>
A story is a single state of one or more UI components. You can have as many stories as
you want.
<br
_ngcontent-c0=""
/>
(Basically a story is like a visual test case.)
</p>
<p
_ngcontent-c0=""
>
See these sample
<a
_ngcontent-c0=""
role="button"
tabindex="0"
>
stories
</a>
for a component called
<span
_ngcontent-c0=""
class="inline-code"
>
Button
</span>
.
</p>
<p
_ngcontent-c0=""
>
Just like that, you can add your own components as stories.
<br
_ngcontent-c0=""
/>
You can also edit those components and see changes right away.
<br
_ngcontent-c0=""
/>
(Try editing the
<span
_ngcontent-c0=""
class="inline-code"
>
Button
</span>
stories
located at
<span
_ngcontent-c0=""
class="inline-code"
>
src/stories/index.js
</span>
.)
</p>
<p
_ngcontent-c0=""
>
Usually we create stories with smaller UI components in the app.
<br
_ngcontent-c0=""
/>
Have a look at the
<a
_ngcontent-c0=""
href="https://storybook.js.org/basics/writing-stories"
rel="noopener noreferrer"
target="_blank"
>
Writing Stories
</a>
section in our documentation.
</p>
<p
_ngcontent-c0=""
class="note"
>
<b
_ngcontent-c0=""
>
NOTE:
</b>
<br
_ngcontent-c0=""
/>
Have a look at the
<span
_ngcontent-c0=""
class="inline-code"
>
.storybook/webpack.config.js
</span>
to add webpack loaders and plugins you are using in this project.
</p>
</main>
</storybook-welcome-component>
</storybook-dynamic-app-root>
`;

View File

@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/angular';
import { action } from '@storybook/addon-actions';
import { Button } from '@storybook/angular/demo';
storiesOf('Addon Actions', module)
storiesOf('Addon|Actions', module)
.add('Action only', () => ({
component: Button,
props: {

View File

@ -16,7 +16,7 @@ import {
import { SimpleKnobsComponent } from './knobs.component';
import { AllKnobsComponent } from './all-knobs.component';
storiesOf('Addon Knobs', module)
storiesOf('Addon|Knobs', module)
.addDecorator(withKnobs)
.add('Simple', () => {
const name = text('name', 'John Doe');

View File

@ -2,7 +2,7 @@ import { linkTo } from '@storybook/addon-links';
import { storiesOf } from '@storybook/angular';
import { Button } from '@storybook/angular/demo';
storiesOf('Another Button', module).add('button with link to another story', () => ({
storiesOf('Addon|Links', module).add('button with link to another story', () => ({
component: Button,
props: {
text: 'Go to Welcome Story',

View File

@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/angular';
import { withNotes } from '@storybook/addon-notes';
import { Button } from '@storybook/angular/demo';
storiesOf('Addon Notes', module)
storiesOf('Addon|Notes', module)
.add(
'Simple note',
withNotes({ text: 'My notes on some button' })(() => ({

View File

@ -89,3 +89,93 @@ exports[`Storyshots Component dependencies inputs and inject dependencies with k
</storybook-di-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom|Dependencies inputs and inject dependencies 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-di-component>
<div>
<div>
All dependencies are defined: true
</div>
<div>
Title: Component dependencies
</div>
<div>
Injector: function Injector_(view, elDef) {
this.view = view;
this.elDef = elDef;
}
</div>
<div>
ElementRef: {"nativeElement":{}}
</div>
<div>
TestToken: 123
</div>
</div>
</storybook-di-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom|Dependencies inputs and inject dependencies with knobs 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-di-component>
<div>
<div>
All dependencies are defined: true
</div>
<div>
Title: Component dependencies
</div>
<div>
Injector: function Injector_(view, elDef) {
this.view = view;
this.elDef = elDef;
}
</div>
<div>
ElementRef: {"nativeElement":{}}
</div>
<div>
TestToken: 123
</div>
</div>
</storybook-di-component>
</storybook-dynamic-app-root>
`;

View File

@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/angular';
import { withKnobs, text } from '@storybook/addon-knobs/angular';
import { DiComponent } from './di.component';
storiesOf('Component dependencies', module)
storiesOf('Custom|Dependencies', module)
.add('inputs and inject dependencies', () => ({
component: DiComponent,
props: {

View File

@ -37,3 +37,41 @@ exports[`Storyshots Component styles Component with styles 1`] = `
</storybook-styled-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom|styleUrls Component with styles 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-styled-component>
<div>
<p
class="red-color"
>
Styled with scoped CSS
</p>
<p
class="blue-color"
>
Styled with scoped SCSS
</p>
<p
class="green-color"
>
Styled with global CSS
</p>
</div>
</storybook-styled-component>
</storybook-dynamic-app-root>
`;

View File

@ -1,6 +1,6 @@
import { storiesOf } from '@storybook/angular';
import { StyledComponent } from './styled.component';
storiesOf('Component styles', module).add('Component with styles', () => ({
storiesOf('Custom|styleUrls', module).add('Component with styles', () => ({
component: StyledComponent,
}));

View File

@ -1,66 +0,0 @@
import { storiesOf } from '@storybook/angular';
import { withKnobs, text } from '@storybook/addon-knobs/angular';
import { NameComponent } from './moduleMetadata/name.component';
import { CustomPipePipe } from './moduleMetadata/custom.pipe';
import { DummyService } from './moduleMetadata/dummy.service';
import { ServiceComponent } from './moduleMetadata/service.component';
storiesOf('Custom Pipe', module).add('Default', () => ({
component: NameComponent,
props: {
field: 'foobar',
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [CustomPipePipe],
providers: [],
},
}));
storiesOf('Custom Pipe/With Knobs', module)
.addDecorator(withKnobs)
.add('NameComponent', () => ({
component: NameComponent,
props: {
field: text('field', 'foobar'),
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [CustomPipePipe],
providers: [],
},
}));
storiesOf('Custom ngModule metadata', module)
.add('simple', () => ({
component: ServiceComponent,
props: {
name: 'Static name',
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [],
providers: [DummyService],
},
}))
.addDecorator(withKnobs)
.add('with knobs', () => {
const name = text('name', 'Dynamic knob');
return {
component: ServiceComponent,
props: {
name,
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [],
providers: [DummyService],
},
};
});

View File

@ -0,0 +1,15 @@
import { Component } from '@angular/core';
import { storiesOf } from '@storybook/angular';
@Component({
selector: 'storybook-with-ng-content',
template: `<div style="color: #1e88e5;"><ng-content></ng-content></div>`,
})
class WithNgContentComponent {}
storiesOf('Custom|ng-content', module).add('Default', () => ({
template: `<storybook-with-ng-content><h1>This is rendered in ng-content</h1></storybook-with-ng-content>`,
moduleMetadata: {
declarations: [WithNgContentComponent],
},
}));

View File

@ -0,0 +1,32 @@
import { storiesOf } from '@storybook/angular';
import { withKnobs, text } from '@storybook/addon-knobs/angular';
import { NameComponent } from './moduleMetadata/name.component';
import { CustomPipePipe } from './moduleMetadata/custom.pipe';
storiesOf('Custom|Pipes', module)
.add('Simple', () => ({
component: NameComponent,
props: {
field: 'foobar',
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [CustomPipePipe],
providers: [],
},
}))
.addDecorator(withKnobs)
.add('With Knobs', () => ({
component: NameComponent,
props: {
field: text('field', 'foobar'),
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [CustomPipePipe],
providers: [],
},
}));

View File

@ -0,0 +1,36 @@
import { storiesOf } from '@storybook/angular';
import { withKnobs, text } from '@storybook/addon-knobs/angular';
import { DummyService } from './moduleMetadata/dummy.service';
import { ServiceComponent } from './moduleMetadata/service.component';
storiesOf('Custom|Providers', module)
.add('Simple', () => ({
component: ServiceComponent,
props: {
name: 'Static name',
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [],
providers: [DummyService],
},
}))
.addDecorator(withKnobs)
.add('With knobs', () => {
const name = text('name', 'Dynamic knob');
return {
component: ServiceComponent,
props: {
name,
},
moduleMetadata: {
imports: [],
schemas: [],
declarations: [],
providers: [DummyService],
},
};
});

View File

@ -3,7 +3,7 @@ import { action } from '@storybook/addon-actions';
import { withKnobs, text } from '@storybook/addon-knobs/angular';
import { Button } from '@storybook/angular/demo';
storiesOf('Custom Style', module)
storiesOf('Custom|Style', module)
.add('Default', () => ({
template: `<storybook-button-component [text]="text" (onClick)="onClick($event)"></storybook-button-component>`,
moduleMetadata: {

View File

@ -1,5 +1,30 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|ngModel custom ControlValueAccessor 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-custom-cva-component>
<div>
Type anything
</div>
<input
class="ng-untouched ng-pristine ng-valid"
ng-reflect-model="Type anything"
type="text"
/>
</storybook-custom-cva-component>
</storybook-dynamic-app-root>
`;
exports[`Storyshots ngModel custom ControlValueAccessor 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}

View File

@ -7,7 +7,7 @@ const description = `
This is an example of component that implements ControlValueAccessor interface
`;
storiesOf('ngModel', module).add(
storiesOf('Custom|ngModel', module).add(
'custom ControlValueAccessor',
withNotes(description)(() => ({
component: CustomCvaComponent,

View File

@ -2,14 +2,18 @@ import { storiesOf } from '@storybook/angular';
import { Welcome, Button } from '@storybook/angular/demo';
storiesOf('Welcome', module).add('to Storybook', () => ({
component: Welcome,
template: `<storybook-welcome-component></storybook-welcome-component>`,
props: {},
moduleMetadata: {
declarations: [Welcome],
},
}));
storiesOf('Button', module)
.add('with text', () => ({
template: `<storybook-button-component [text]="text" (onClick)="onClick($event)"></storybook-button-component>`,
moduleMetadata: {
declarations: [Button, Welcome],
declarations: [Button],
},
props: {
text: 'Hello Button',
@ -18,14 +22,12 @@ storiesOf('Button', module)
console.log(event);
},
},
template: `
<h1> This is a template </h1>
<storybook-button-component [text]="text" (onClick)="onClick($event)"></storybook-button-component>
<storybook-welcome-component></storybook-welcome-component>
`,
}))
.add('with some emoji', () => ({
component: Button,
template: `<storybook-button-component [text]="text" (onClick)="onClick($event)"></storybook-button-component>`,
moduleMetadata: {
declarations: [Button],
},
props: {
text: '😀 😎 👍 💯',
onClick: () => {},

View File

@ -1,5 +1,41 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|Inheritance base button 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-base-button>
<button>
this is label
</button>
</storybook-base-button>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Custom|Inheritance icon button 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}
data={[Function Object]}
target={[Function ViewContainerRef_]}
>
<storybook-icon-button>
<button>
this is label - this is icon
</button>
</storybook-icon-button>
</storybook-dynamic-app-root>
`;
exports[`Storyshots Inheritance base button 1`] = `
<storybook-dynamic-app-root
cfr={[Function CodegenComponentFactoryResolver]}

View File

@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/angular';
import { IconButtonComponent } from './icon-button.component';
import { BaseButtonComponent } from './base-button.component';
storiesOf('Inheritance', module)
storiesOf('Custom|Inheritance', module)
.add('icon button', () => ({
component: IconButtonComponent,
props: {

View File

@ -12,7 +12,7 @@
},
"dependencies": {
"glamor": "^2.20.40",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"global": "^4.3.2",
"prop-types": "^15.6.0",
"react": "^16.2.0",

View File

@ -2,3 +2,4 @@ import '@storybook/addon-actions/register';
import '@storybook/addon-notes/register';
import '@storybook/addon-knobs/register';
import '@storybook/addon-viewport/register';
import '@storybook/addon-options/register';

View File

@ -1,10 +1,15 @@
/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions */
import { configure } from '@storybook/polymer';
import { setOptions } from '@storybook/addon-options';
setOptions({
hierarchyRootSeparator: /\|/,
});
function loadStories() {
require('../src/stories/index.stories');
require('../src/stories/advanced.stories');
const req = require.context('../src/stories', true, /\.stories\.js$/);
req.keys().forEach((filename) => req(filename));
}
configure(loadStories, module);

View File

@ -11,6 +11,7 @@
"@storybook/addon-actions": "^3.4.0-alpha.8",
"@storybook/addon-knobs": "^3.4.0-alpha.8",
"@storybook/addon-notes": "^3.4.0-alpha.8",
"@storybook/addon-options": "^3.4.0-alpha.8",
"@storybook/addon-viewport": "^3.4.0-alpha.8",
"@storybook/polymer": "^3.4.0-alpha.8",
"@webcomponents/webcomponentsjs": "^1.1.0",

View File

@ -4,7 +4,15 @@
<template>
<style>
.square {
border: 1px solid black;
border: 1px solid #3c763d;
background-color: #5cb85c;
padding: 10px;
}
.rounded {
border-radius: 5px;
border: 1px solid #1b6d85;
background-color: #5bc0de;
padding: 10px;
}
</style>
<button on-click="handleTap"
@ -41,7 +49,7 @@
}
_computeClass(isSquare) {
return isSquare && 'square';
return isSquare ? 'square' : 'rounded';
}
}

View File

@ -0,0 +1,15 @@
import { storiesOf } from '@storybook/polymer';
import { action } from '@storybook/addon-actions';
import { document } from 'global';
storiesOf('Addon|Actions', module)
.add('Action only', () => {
const el = document.createElement('playground-button');
el.addEventListener('click', action('log1'));
return el;
})
.add('Action and method', () => {
const el = document.createElement('playground-button');
el.addEventListener('click', e => action('log2')(e.target));
return el;
});

View File

@ -0,0 +1,56 @@
import { storiesOf } from '@storybook/polymer';
import { action } from '@storybook/addon-actions';
import { document } from 'global';
import {
withKnobs,
text,
button,
number,
select,
date,
color,
array,
boolean,
} from '@storybook/addon-knobs/polymer';
storiesOf('Addon|Knobs', module)
.addDecorator(withKnobs)
.add('simple', () => {
const title = text('Button title', 'Hello');
const el = document.createElement('playground-button');
el.setAttribute('title', title);
button('callback', () => el.setAttribute('title', 'testing'));
return el;
})
.add('complex', () => {
const name = text('Name', 'Jane');
const stock = number('Stock', 20, { range: true, min: 0, max: 30, step: 5 });
const fruits = { apples: 'Apple', bananas: 'Banana', cherries: 'Cherry' };
const fruit = select('Fruit', fruits, 'apple');
const price = number('Price', 2.25);
const colour = color('Border', 'deeppink');
const today = date('Today', new Date('Jan 20 2017 GMT+0'));
const items = array('Items', ['Laptop', 'Book', 'Whiskey']);
const nice = boolean('Nice', true);
const stockMessage = stock
? `I have a stock of ${stock} ${fruit}, costing &dollar;${price} each.`
: `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`;
const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' };
button('Arbitrary action', action('You clicked it!'));
return `
<div style="border:2px dotted ${colour}; padding: 8px 22px; border-radius: 8px">
<h1>My name is ${name},</h1>
<h3>today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}</h3>
<p>${stockMessage}</p>
<p>Also, I have:</p>
<ul>
${items.map(item => `<li>${item}</li>`).join('')}
</ul>
<p>${nice ? 'Nice to meet you!' : 'Leave me alone!'}</p>
</div>
`;
});

View File

@ -0,0 +1,23 @@
import { storiesOf } from '@storybook/polymer';
import { withNotes } from '@storybook/addon-notes';
storiesOf('Addon|Notes', module)
.add(
'Simple note',
withNotes({ text: 'My notes on some bold text' })(
() =>
'<p><strong>Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.</strong></p>'
)
)
.add(
'Note with HTML',
withNotes({
text: `
<h2>My notes on emojies</h2>
<em>It's not all that important to be honest, but..</em>
Emojis are great, I love emojis, in fact I like using them in my Component notes too! 😇
`,
})(() => '<p>🤔😳😯😮<br/>😄😩😓😱<br/>🤓😑😶😊</p>')
);

View File

@ -1,105 +0,0 @@
import { storiesOf } from '@storybook/polymer';
import { action } from '@storybook/addon-actions';
import { withNotes } from '@storybook/addon-notes';
import {
withKnobs,
text,
button,
number,
select,
date,
color,
array,
boolean,
} from '@storybook/addon-knobs/polymer';
import { document } from 'global';
import '../polymer-playground-app.html';
import '../playground-button.html';
import '../separated-button/separated-button.html';
import './storybook-welcome-to-polymer.html';
storiesOf('Advanced/Decorator', module)
.addDecorator(story => {
const el = story();
el.setAttribute('title', `${el.getAttribute('title')} - decorated`);
return el;
})
.add('example decoration', () => {
const el = document.createElement('playground-button');
el.setAttribute('title', 'An example title');
return el;
});
storiesOf('Advanced/Addon Actions', module)
.add('Action only', () => {
const el = document.createElement('playground-button');
el.addEventListener('click', action('log1'));
return el;
})
.add('Action and method', () => {
const el = document.createElement('playground-button');
el.addEventListener('click', e => action('log2')(e.target));
return el;
});
storiesOf('Advanced/Addon Notes', module)
.add(
'Simple note',
withNotes({ text: 'My notes on some bold text' })(
() =>
'<p><strong>Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.</strong></p>'
)
)
.add(
'Note with HTML',
withNotes({
text: `
<h2>My notes on emojies</h2>
<em>It's not all that important to be honest, but..</em>
Emojis are great, I love emojis, in fact I like using them in my Component notes too! 😇
`,
})(() => '<p>🤔😳😯😮<br/>😄😩😓😱<br/>🤓😑😶😊</p>')
);
storiesOf('Advanced/Addon Knobs', module)
.addDecorator(withKnobs)
.add('simple', () => {
const title = text('Button title', 'Hello');
const el = document.createElement('playground-button');
el.setAttribute('title', title);
button('callback', () => el.setAttribute('title', 'testing'));
return el;
})
.add('complex', () => {
const name = text('Name', 'Jane');
const stock = number('Stock', 20, { range: true, min: 0, max: 30, step: 5 });
const fruits = { apples: 'Apple', bananas: 'Banana', cherries: 'Cherry' };
const fruit = select('Fruit', fruits, 'apple');
const price = number('Price', 2.25);
const colour = color('Border', 'deeppink');
const today = date('Today', new Date('Jan 20 2017 GMT+0'));
const items = array('Items', ['Laptop', 'Book', 'Whiskey']);
const nice = boolean('Nice', true);
const stockMessage = stock
? `I have a stock of ${stock} ${fruit}, costing &dollar;${price} each.`
: `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`;
const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' };
button('Arbitrary action', action('You clicked it!'));
return `
<div style="border:2px dotted ${colour}; padding: 8px 22px; border-radius: 8px">
<h1>My name is ${name},</h1>
<h3>today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}</h3>
<p>${stockMessage}</p>
<p>Also, I have:</p>
<ul>
${items.map(item => `<li>${item}</li>`).join('')}
</ul>
<p>${nice ? 'Nice to meet you!' : 'Leave me alone!'}</p>
</div>
`;
});

View File

@ -0,0 +1,14 @@
import { storiesOf } from '@storybook/polymer';
import { document } from 'global';
storiesOf('Custom|Decorator', module)
.addDecorator(story => {
const el = story();
el.setAttribute('title', `${el.getAttribute('title')} - decorated`);
return el;
})
.add('example decoration', () => {
const el = document.createElement('playground-button');
el.setAttribute('title', 'An example title');
return el;
});

View File

@ -0,0 +1,15 @@
import { storiesOf } from '@storybook/polymer';
import { document } from 'global';
import { StringTemplateButton } from '../string-template-button';
import '../separated-button/separated-button.html';
storiesOf('Custom|Methods for rendering', module)
.add('html string', () => '<div>Rendered with string</div>')
.add('html with custom elements', () => '<separated-button title="Click me!"></separated-button>')
.add('document.createElement', () => {
const el = document.createElement('playground-button');
el.setAttribute('title', 'Rendered with document.createElement');
return el;
})
.add('Polymer instance', () => new StringTemplateButton());

View File

@ -1,34 +1,19 @@
import { storiesOf } from '@storybook/polymer';
import { withKnobs, text } from '@storybook/addon-knobs/polymer';
import { document } from 'global';
import '../polymer-playground-app.html';
import '../playground-button.html';
import '../separated-button/separated-button.html';
import './storybook-welcome-to-polymer.html';
import { StringTemplateButton } from '../string-template-button';
storiesOf('Welcome', module).add(
'Welcome',
() => '<storybook-welcome-to-polymer></storybook-welcome-to-polymer>'
);
storiesOf('App', module)
.addDecorator(withKnobs)
.add('full app', () => {
const title = text('title', 'This title can be edited via a knob');
return `<polymer-playground-app title="${title}"></polymer-playground-app>`;
});
storiesOf('App', module).add(
'full app',
() => '<polymer-playground-app title="Storybook fro Polymer"></polymer-playground-app>'
);
storiesOf('Button', module)
.add('rounded', () => '<playground-button></playground-button>')
.add('square', () => '<playground-button is-square></playground-button>');
storiesOf('Methods for rendering', module)
.add('html string', () => '<div>Rendered with string</div>')
.add('html with custom elements', () => '<separated-button title="Click me!"></separated-button>')
.add('document.createElement', () => {
const el = document.createElement('playground-button');
el.setAttribute('title', 'Rendered with document.createElement');
return el;
})
.add('Polymer instance', () => new StringTemplateButton());

View File

@ -3,3 +3,4 @@ import '@storybook/addon-links/register';
import '@storybook/addon-notes/register';
import '@storybook/addon-knobs/register';
import '@storybook/addon-viewport/register';
import '@storybook/addon-options/register';

View File

@ -1,5 +1,5 @@
import { configure } from '@storybook/vue';
import { setOptions } from '@storybook/addon-options';
import Vue from 'vue'
import Vuex from 'vuex'
@ -8,8 +8,15 @@ import MyButton from '../src/stories/Button.vue'
Vue.component('my-button', MyButton);
Vue.use(Vuex);
setOptions({
hierarchyRootSeparator: /\|/,
});
function loadStories() {
require('../src/stories');
const req = require.context('../src/stories', true, /\.stories\.js$/);
req.keys().forEach((filename) => req(filename));
}
configure(loadStories, module);

View File

@ -18,6 +18,7 @@
"@storybook/addon-knobs": "^3.4.0-alpha.8",
"@storybook/addon-links": "^3.4.0-alpha.8",
"@storybook/addon-notes": "^3.4.0-alpha.8",
"@storybook/addon-options": "^3.4.0-alpha.8",
"@storybook/addon-storyshots": "^3.4.0-alpha.8",
"@storybook/addon-viewport": "^3.4.0-alpha.8",
"@storybook/addons": "^3.4.0-alpha.8",

View File

@ -0,0 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon|Actions Action and method 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
Click me to log the action!
</button>
`;
exports[`Storyshots Addon|Actions Action only 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
Click me to log the action!
</button>
`;

View File

@ -0,0 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon|Centered rounded 1`] = `
<div
style="position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; display: flex; overflow: auto;"
>
<div
style="margin: auto;"
>
<button
class="button rounded"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
A Button with rounded edges!
</button>
</div>
</div>
`;

View File

@ -0,0 +1,45 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon|Knobs All knobs 1`] = `
<div
style="padding: 8px 22px; border-radius: 8px;"
>
<h1>
My name is Jane,
</h1>
<h3>
today is January 20, 2017
</h3>
<p>
I have a stock of 20 apple, costing $2.25 each.
</p>
<p>
Also, I have:
</p>
<ul>
<li>
Laptop
</li>
<li>
Book
</li>
<li>
Whiskey
</li>
</ul>
<p>
Nice to meet you!
</p>
</div>
`;
exports[`Storyshots Addon|Knobs Simple 1`] = `
<div>
I am John Doe and I'm 44 years old.
</div>
`;

View File

@ -0,0 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon|Notes Note with HTML 1`] = `
<p>
🤔😳😯😮
<br />
😄😩😓😱
<br />
🤓😑😶😊
</p>
`;
exports[`Storyshots Addon|Notes Simple note 1`] = `
<p>
<strong>
Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.
</strong>
</p>
`;

View File

@ -0,0 +1,34 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|Decorator for Vue render 1`] = `
<div
style="border: medium solid blue;"
>
<div
style="border: medium solid red;"
>
<button
class="button"
>
renders component: MyButton!
</button>
</div>
</div>
`;
exports[`Storyshots Custom|Decorator for Vue template 1`] = `
<div
style="border: medium solid blue;"
>
<div
style="border: medium solid red;"
>
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton with template!
</button>
</div>
</div>
`;

View File

@ -0,0 +1,95 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Custom|Method for rendering Vue JSX 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered with JSX!
</button>
`;
exports[`Storyshots Custom|Method for rendering Vue pre-registered component 1`] = `
<p>
<em>
This component was pre-registered in .storybook/config.js
</em>
<br />
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template!
</button>
</p>
`;
exports[`Storyshots Custom|Method for rendering Vue render + component 1`] = `
<button
class="button"
>
renders component: MyButton!
</button>
`;
exports[`Storyshots Custom|Method for rendering Vue render 1`] = `
<div>
renders a div with some text in it..
</div>
`;
exports[`Storyshots Custom|Method for rendering Vue template + component 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template!
</button>
`;
exports[`Storyshots Custom|Method for rendering Vue template + methods 1`] = `
<p>
<em>
Clicking the button will navigate to another story using the 'addon-links'
</em>
<br />
<button
class="button rounded"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template + props & methods!
</button>
</p>
`;
exports[`Storyshots Custom|Method for rendering Vue template 1`] = `
<div>
<h1>
A template
</h1>
<p>
rendered in vue in storybook
</p>
</div>
`;
exports[`Storyshots Custom|Method for rendering Vue vuex + actions 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
with vuex: 0!
</button>
`;
exports[`Storyshots Custom|Method for rendering Vue whatever you want 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
with awesomeness: 0!
</button>
`;

View File

@ -1,85 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Storyshots Addon Actions Action and method 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
Click me to log the action!
</button>
`;
exports[`Storyshots Addon Actions Action only 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
Click me to log the action!
</button>
`;
exports[`Storyshots Addon Knobs All knobs 1`] = `
<div
style="padding: 8px 22px; border-radius: 8px;"
>
<h1>
My name is Jane,
</h1>
<h3>
today is January 20, 2017
</h3>
<p>
I have a stock of 20 apple, costing $2.25 each.
</p>
<p>
Also, I have:
</p>
<ul>
<li>
Laptop
</li>
<li>
Book
</li>
<li>
Whiskey
</li>
</ul>
<p>
Nice to meet you!
</p>
</div>
`;
exports[`Storyshots Addon Knobs Simple 1`] = `
<div>
I am John Doe and I'm 44 years old.
</div>
`;
exports[`Storyshots Addon Notes Note with HTML 1`] = `
<p>
🤔😳😯😮
<br />
😄😩😓😱
<br />
🤓😑😶😊
</p>
`;
exports[`Storyshots Addon Notes Simple note 1`] = `
<p>
<strong>
Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.
</strong>
</p>
`;
exports[`Storyshots App App 1`] = `
<div
id="app"
@ -177,163 +97,20 @@ exports[`Storyshots App App 1`] = `
`;
exports[`Storyshots Button rounded 1`] = `
<div
style="position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; display: flex; overflow: auto;"
<button
class="button rounded"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
<div
style="margin: auto;"
>
<button
class="button rounded"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
A Button with rounded edges!
</button>
</div>
</div>
A Button with rounded edges!
</button>
`;
exports[`Storyshots Button square 1`] = `
<div
style="position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; display: flex; overflow: auto;"
>
<div
style="margin: auto;"
>
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
A Button with square edges!
</button>
</div>
</div>
`;
exports[`Storyshots Decorator for Vue render 1`] = `
<div
style="border: medium solid blue;"
>
<div
style="border: medium solid red;"
>
<button
class="button"
>
renders component: MyButton!
</button>
</div>
</div>
`;
exports[`Storyshots Decorator for Vue template 1`] = `
<div
style="border: medium solid blue;"
>
<div
style="border: medium solid red;"
>
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton with template!
</button>
</div>
</div>
`;
exports[`Storyshots Method for rendering Vue JSX 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered with JSX!
</button>
`;
exports[`Storyshots Method for rendering Vue pre-registered component 1`] = `
<p>
<em>
This component was pre-registered in .storybook/config.js
</em>
<br />
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template!
</button>
</p>
`;
exports[`Storyshots Method for rendering Vue render + component 1`] = `
<button
class="button"
>
renders component: MyButton!
</button>
`;
exports[`Storyshots Method for rendering Vue render 1`] = `
<div>
renders a div with some text in it..
</div>
`;
exports[`Storyshots Method for rendering Vue template + component 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template!
</button>
`;
exports[`Storyshots Method for rendering Vue template + methods 1`] = `
<p>
<em>
Clicking the button will navigate to another story using the 'addon-links'
</em>
<br />
<button
class="button rounded"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
MyButton rendered in a template + props & methods!
</button>
</p>
`;
exports[`Storyshots Method for rendering Vue template 1`] = `
<div>
<h1>
A template
</h1>
<p>
rendered in vue in storybook
</p>
</div>
`;
exports[`Storyshots Method for rendering Vue vuex + actions 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
with vuex: 0!
</button>
`;
exports[`Storyshots Method for rendering Vue whatever you want 1`] = `
<button
class="button"
style="color: rgb(66, 185, 131); border-color: #42b983;"
>
with awesomeness: 0!
A Button with square edges!
</button>
`;

View File

@ -0,0 +1,19 @@
import { storiesOf } from '@storybook/vue';
import { action } from '@storybook/addon-actions';
storiesOf('Addon|Actions', module)
.add('Action only', () => ({
template: '<my-button :handle-click="log">Click me to log the action</my-button>',
methods: {
log: action('log1'),
},
}))
.add('Action and method', () => ({
template: '<my-button :handle-click="log">Click me to log the action</my-button>',
methods: {
log: e => {
e.preventDefault();
action('log2')(e.target);
},
},
}));

View File

@ -0,0 +1,11 @@
import { storiesOf } from '@storybook/vue';
import Centered from '@storybook/addon-centered';
import MyButton from './Button.vue';
storiesOf('Addon|Centered', module)
.addDecorator(Centered)
.add('rounded', () => ({
components: { MyButton },
template: '<my-button :rounded="true">A Button with rounded edges</my-button>',
}));

View File

@ -0,0 +1,69 @@
import { storiesOf } from '@storybook/vue';
import { action } from '@storybook/addon-actions';
import {
withKnobs,
text,
number,
boolean,
array,
select,
color,
date,
button,
} from '@storybook/addon-knobs/vue';
storiesOf('Addon|Knobs', module)
.addDecorator(withKnobs)
.add('Simple', () => {
const name = text('Name', 'John Doe');
const age = number('Age', 44);
const content = `I am ${name} and I'm ${age} years old.`;
return {
template: `<div>${content}</div>`,
};
})
.add('All knobs', () => {
const name = text('Name', 'Jane');
const stock = number('Stock', 20, {
range: true,
min: 0,
max: 30,
step: 5,
});
const fruits = {
apples: 'Apple',
bananas: 'Banana',
cherries: 'Cherry',
};
const fruit = select('Fruit', fruits, 'apple');
const price = number('Price', 2.25);
const colour = color('Border', 'deeppink');
const today = date('Today', new Date('Jan 20 2017 GMT+0'));
const items = array('Items', ['Laptop', 'Book', 'Whiskey']);
const nice = boolean('Nice', true);
const stockMessage = stock
? `I have a stock of ${stock} ${fruit}, costing &dollar;${price} each.`
: `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`;
const salutation = nice ? 'Nice to meet you!' : 'Leave me alone!';
const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' };
button('Arbitrary action', action('You clicked it!'));
return {
template: `
<div style="border:2px dotted ${colour}; padding: 8px 22px; border-radius: 8px">
<h1>My name is ${name},</h1>
<h3>today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}</h3>
<p>${stockMessage}</p>
<p>Also, I have:</p>
<ul>
${items.map(item => `<li key=${item}>${item}</li>`).join('')}
</ul>
<p>${salutation}</p>
</div>
`,
};
});

View File

@ -0,0 +1,25 @@
import { storiesOf } from '@storybook/vue';
import { withNotes } from '@storybook/addon-notes';
storiesOf('Addon|Notes', module)
.add(
'Simple note',
withNotes({ text: 'My notes on some bold text' })(() => ({
template:
'<p><strong>Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.</strong></p>',
}))
)
.add(
'Note with HTML',
withNotes({
text: `
<h2>My notes on emojies</h2>
<em>It's not all that important to be honest, but..</em>
Emojis are great, I love emojis, in fact I like using them in my Component notes too! 😇
`,
})(() => ({
template: '<p>🤔😳😯😮<br/>😄😩😓😱<br/>🤓😑😶😊</p>',
}))
);

View File

@ -0,0 +1,33 @@
import { storiesOf } from '@storybook/vue';
import MyButton from './Button.vue';
storiesOf('Custom|Decorator for Vue', module)
.addDecorator(story => {
// Decorated with story function
const WrapButton = story();
return {
components: { WrapButton },
template: '<div :style="{ border: borderStyle }"><wrap-button/></div>',
data() {
return { borderStyle: 'medium solid red' };
},
};
})
.addDecorator(() => ({
// Decorated with `story` component
template: '<div :style="{ border: borderStyle }"><story/></div>',
data() {
return {
borderStyle: 'medium solid blue',
};
},
}))
.add('template', () => ({
template: '<my-button>MyButton with template</my-button>',
}))
.add('render', () => ({
render(h) {
return h(MyButton, { props: { color: 'pink' } }, ['renders component: MyButton']);
},
}));

View File

@ -0,0 +1,92 @@
import Vuex from 'vuex';
import { storiesOf } from '@storybook/vue';
import { action } from '@storybook/addon-actions';
import { linkTo } from '@storybook/addon-links';
import MyButton from './Button.vue';
storiesOf('Custom|Method for rendering Vue', module)
.add('render', () => ({
render: h => h('div', ['renders a div with some text in it..']),
}))
.add('render + component', () => ({
render(h) {
return h(MyButton, { props: { color: 'pink' } }, ['renders component: MyButton']);
},
}))
.add('template', () => ({
template: `
<div>
<h1>A template</h1>
<p>rendered in vue in storybook</p>
</div>`,
}))
.add('template + component', () => ({
components: { MyButton },
template: '<my-button>MyButton rendered in a template</my-button>',
}))
.add('template + methods', () => ({
components: { MyButton },
template: `
<p>
<em>Clicking the button will navigate to another story using the 'addon-links'</em><br/>
<my-button :rounded="true" :handle-click="action">MyButton rendered in a template + props & methods</my-button>
</p>`,
methods: {
action: linkTo('Button'),
},
}))
.add('JSX', () => ({
components: { MyButton },
render() {
// eslint-disable-next-line react/react-in-jsx-scope
return <my-button>MyButton rendered with JSX</my-button>;
},
}))
.add('vuex + actions', () => ({
components: { MyButton },
template: '<my-button :handle-click="log">with vuex: {{ $store.state.count }}</my-button>',
store: new Vuex.Store({
state: { count: 0 },
mutations: {
increment(state) {
state.count += 1; // eslint-disable-line
action('vuex state')(state);
},
},
}),
methods: {
log() {
this.$store.commit('increment');
},
},
}))
.add('whatever you want', () => ({
components: { MyButton },
template:
'<my-button :handle-click="log">with awesomeness: {{ $store.state.count }}</my-button>',
store: new Vuex.Store({
state: { count: 0 },
mutations: {
increment(state) {
state.count += 1; // eslint-disable-line
action('vuex state')(state);
},
},
}),
methods: {
log() {
this.$store.commit('increment');
},
},
}))
.add('pre-registered component', () => ({
/* By pre-registering component in config.js,
* the need to register all components with each story is removed.
* You'll only need the template */
template: `
<p>
<em>This component was pre-registered in .storybook/config.js</em><br/>
<my-button>MyButton rendered in a template</my-button>
</p>`,
}));

View File

@ -1,24 +1,5 @@
/* eslint-disable react/react-in-jsx-scope */
import Vuex from 'vuex';
import { storiesOf } from '@storybook/vue';
import { action } from '@storybook/addon-actions';
import { linkTo } from '@storybook/addon-links';
import { withNotes } from '@storybook/addon-notes';
import {
withKnobs,
text,
number,
boolean,
array,
select,
color,
date,
button,
} from '@storybook/addon-knobs/vue';
import Centered from '@storybook/addon-centered';
import MyButton from './Button.vue';
import Welcome from './Welcome.vue';
import App from '../App.vue';
@ -31,7 +12,6 @@ storiesOf('App', module).add('App', () => ({
}));
storiesOf('Button', module)
.addDecorator(Centered)
// Works if Vue.component is called in the config.js in .storybook
.add('rounded', () => ({
template: '<my-button :rounded="true">A Button with rounded edges</my-button>',
@ -39,216 +19,3 @@ storiesOf('Button', module)
.add('square', () => ({
template: '<my-button :rounded="false">A Button with square edges</my-button>',
}));
storiesOf('Method for rendering Vue', module)
.add('render', () => ({
render: h => h('div', ['renders a div with some text in it..']),
}))
.add('render + component', () => ({
render(h) {
return h(MyButton, { props: { color: 'pink' } }, ['renders component: MyButton']);
},
}))
.add('template', () => ({
template: `
<div>
<h1>A template</h1>
<p>rendered in vue in storybook</p>
</div>`,
}))
.add('template + component', () => ({
components: { MyButton },
template: '<my-button>MyButton rendered in a template</my-button>',
}))
.add('template + methods', () => ({
components: { MyButton },
template: `
<p>
<em>Clicking the button will navigate to another story using the 'addon-links'</em><br/>
<my-button :rounded="true" :handle-click="action">MyButton rendered in a template + props & methods</my-button>
</p>`,
methods: {
action: linkTo('Button'),
},
}))
.add('JSX', () => ({
components: { MyButton },
render() {
return <my-button>MyButton rendered with JSX</my-button>;
},
}))
.add('vuex + actions', () => ({
components: { MyButton },
template: '<my-button :handle-click="log">with vuex: {{ $store.state.count }}</my-button>',
store: new Vuex.Store({
state: { count: 0 },
mutations: {
increment(state) {
state.count += 1; // eslint-disable-line
action('vuex state')(state);
},
},
}),
methods: {
log() {
this.$store.commit('increment');
},
},
}))
.add('whatever you want', () => ({
components: { MyButton },
template:
'<my-button :handle-click="log">with awesomeness: {{ $store.state.count }}</my-button>',
store: new Vuex.Store({
state: { count: 0 },
mutations: {
increment(state) {
state.count += 1; // eslint-disable-line
action('vuex state')(state);
},
},
}),
methods: {
log() {
this.$store.commit('increment');
},
},
}))
.add('pre-registered component', () => ({
/* By pre-registering component in config.js,
* the need to register all components with each story is removed.
* You'll only need the template */
template: `
<p>
<em>This component was pre-registered in .storybook/config.js</em><br/>
<my-button>MyButton rendered in a template</my-button>
</p>`,
}));
storiesOf('Decorator for Vue', module)
.addDecorator(story => {
// Decorated with story function
const WrapButton = story();
return {
components: { WrapButton },
template: '<div :style="{ border: borderStyle }"><wrap-button/></div>',
data() {
return { borderStyle: 'medium solid red' };
},
};
})
.addDecorator(() => ({
// Decorated with `story` component
template: '<div :style="{ border: borderStyle }"><story/></div>',
data() {
return {
borderStyle: 'medium solid blue',
};
},
}))
.add('template', () => ({
template: '<my-button>MyButton with template</my-button>',
}))
.add('render', () => ({
render(h) {
return h(MyButton, { props: { color: 'pink' } }, ['renders component: MyButton']);
},
}));
storiesOf('Addon Actions', module)
.add('Action only', () => ({
template: '<my-button :handle-click="log">Click me to log the action</my-button>',
methods: {
log: action('log1'),
},
}))
.add('Action and method', () => ({
template: '<my-button :handle-click="log">Click me to log the action</my-button>',
methods: {
log: e => {
e.preventDefault();
action('log2')(e.target);
},
},
}));
storiesOf('Addon Notes', module)
.add(
'Simple note',
withNotes({ text: 'My notes on some bold text' })(() => ({
template:
'<p><strong>Etiam vulputate elit eu venenatis eleifend. Duis nec lectus augue. Morbi egestas diam sed vulputate mollis. Fusce egestas pretium vehicula. Integer sed neque diam. Donec consectetur velit vitae enim varius, ut placerat arcu imperdiet. Praesent sed faucibus arcu. Nullam sit amet nibh a enim eleifend rhoncus. Donec pretium elementum leo at fermentum. Nulla sollicitudin, mauris quis semper tempus, sem metus tristique diam, efficitur pulvinar mi urna id urna.</strong></p>',
}))
)
.add(
'Note with HTML',
withNotes({
text: `
<h2>My notes on emojies</h2>
<em>It's not all that important to be honest, but..</em>
Emojis are great, I love emojis, in fact I like using them in my Component notes too! 😇
`,
})(() => ({
template: '<p>🤔😳😯😮<br/>😄😩😓😱<br/>🤓😑😶😊</p>',
}))
);
storiesOf('Addon Knobs', module)
.addDecorator(withKnobs)
.add('Simple', () => {
const name = text('Name', 'John Doe');
const age = number('Age', 44);
const content = `I am ${name} and I'm ${age} years old.`;
return {
template: `<div>${content}</div>`,
};
})
.add('All knobs', () => {
const name = text('Name', 'Jane');
const stock = number('Stock', 20, {
range: true,
min: 0,
max: 30,
step: 5,
});
const fruits = {
apples: 'Apple',
bananas: 'Banana',
cherries: 'Cherry',
};
const fruit = select('Fruit', fruits, 'apple');
const price = number('Price', 2.25);
const colour = color('Border', 'deeppink');
const today = date('Today', new Date('Jan 20 2017 GMT+0'));
const items = array('Items', ['Laptop', 'Book', 'Whiskey']);
const nice = boolean('Nice', true);
const stockMessage = stock
? `I have a stock of ${stock} ${fruit}, costing &dollar;${price} each.`
: `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`;
const salutation = nice ? 'Nice to meet you!' : 'Leave me alone!';
const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' };
button('Arbitrary action', action('You clicked it!'));
return {
template: `
<div style="border:2px dotted ${colour}; padding: 8px 22px; border-radius: 8px">
<h1>My name is ${name},</h1>
<h3>today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}</h3>
<p>${stockMessage}</p>
<p>Also, I have:</p>
<ul>
${items.map(item => `<li key=${item}>${item}</li>`).join('')}
</ul>
<p>${salutation}</p>
</div>
`,
};
});
/* eslint-enable react/react-in-jsx-scope */

View File

@ -16,7 +16,7 @@
},
"dependencies": {
"glamor": "^2.20.40",
"glamorous": "^4.11.4",
"glamorous": "^4.11.5",
"prop-types": "^15.6.0"
},
"peerDependencies": {

View File

@ -41,7 +41,7 @@
"react-dom": "^16.0.0",
"serve-favicon": "^2.4.5",
"shelljs": "^0.8.1",
"style-loader": "^0.20.1",
"style-loader": "^0.20.2",
"url-loader": "^0.6.2",
"webpack": "^3.11.0",
"webpack-dev-middleware": "^1.12.2",

View File

@ -86,12 +86,12 @@
"jest-preset-angular": "^5.0.0",
"jest-vue-preprocessor": "^1.3.1",
"lerna": "2.9.0",
"lint-staged": "^6.1.0",
"lint-staged": "^6.1.1",
"lodash": "^4.17.5",
"nodemon": "^1.14.12",
"nodemon": "^1.15.0",
"npmlog": "^4.1.2",
"prettier": "^1.10.2",
"puppeteer": "^1.0.0",
"puppeteer": "^1.1.0",
"raf": "^3.4.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
@ -105,7 +105,7 @@
"tslint": "~5.9.1",
"tslint-config-prettier": "^1.8.0",
"tslint-plugin-prettier": "^1.3.0",
"typescript": "^2.7.1"
"typescript": "^2.7.2"
},
"engines": {
"node": ">=8.0.0",

290
yarn.lock
View File

@ -2,27 +2,27 @@
# yarn lockfile v1
"@angular-devkit/build-optimizer@0.0.42":
version "0.0.42"
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.0.42.tgz#402b0dda4883db91e2381c3ddc55888408a7894e"
"@angular-devkit/build-optimizer@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.3.1.tgz#6a26a46c58858c7b67833c6d8a81198fa17d23e7"
dependencies:
loader-utils "^1.1.0"
source-map "^0.5.6"
typescript "~2.6.2"
webpack-sources "^1.0.1"
"@angular-devkit/core@0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.0.29.tgz#6fb319b45a62eff172318cbe256fdb24ef20af2b"
"@angular-devkit/core@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.3.1.tgz#6aeb990dec92d06360597928748aeeedc21afdde"
dependencies:
ajv "~5.5.1"
chokidar "^1.7.0"
rxjs "^5.5.6"
source-map "^0.5.6"
"@angular-devkit/schematics@0.0.52":
version "0.0.52"
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.0.52.tgz#cbd2f42778b50d6422a254ffaec05ad4ef3cb6c0"
"@angular-devkit/schematics@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.3.1.tgz#eb40ca260681f4f420ca8ed41f754fb3ea689f81"
dependencies:
"@ngtools/json-schema" "^1.1.0"
rxjs "^5.5.6"
@ -33,27 +33,27 @@
dependencies:
tslib "^1.7.1"
"@angular/cli@1.6.8":
version "1.6.8"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.6.8.tgz#963b48086ee3e9584a136d3c45893260f516dd75"
"@angular/cli@1.7.0":
version "1.7.0"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.7.0.tgz#63c56e6d36d57bcd9d9d9425bd806f590f518211"
dependencies:
"@angular-devkit/build-optimizer" "0.0.42"
"@angular-devkit/core" "0.0.29"
"@angular-devkit/schematics" "0.0.52"
"@ngtools/json-schema" "1.1.0"
"@ngtools/webpack" "1.9.8"
"@schematics/angular" "0.1.17"
"@angular-devkit/build-optimizer" "0.3.1"
"@angular-devkit/core" "0.3.1"
"@angular-devkit/schematics" "0.3.1"
"@ngtools/json-schema" "1.2.0"
"@ngtools/webpack" "1.10.0"
"@schematics/angular" "0.3.1"
"@schematics/package-update" "0.3.1"
autoprefixer "^7.2.3"
cache-loader "^1.2.0"
chalk "~2.2.0"
circular-dependency-plugin "^4.2.1"
clean-css "^4.1.9"
common-tags "^1.3.1"
copy-webpack-plugin "^4.1.1"
copy-webpack-plugin "~4.4.1"
core-object "^3.1.0"
css-loader "^0.28.1"
cssnano "^3.10.0"
denodeify "^1.2.1"
ember-cli-string-utils "^1.0.0"
exports-loader "^0.6.3"
extract-text-webpack-plugin "^3.0.2"
file-loader "^1.1.5"
fs-extra "^4.0.0"
@ -72,6 +72,7 @@
nopt "^4.0.1"
opn "~5.1.0"
portfinder "~1.0.12"
postcss "^6.0.16"
postcss-import "^11.0.0"
postcss-loader "^2.0.10"
postcss-url "^7.1.2"
@ -82,12 +83,12 @@
semver "^5.1.0"
silent-error "^1.0.0"
source-map-support "^0.4.1"
style-loader "^0.13.1"
style-loader "^0.19.1"
stylus "^0.54.5"
stylus-loader "^3.0.1"
uglifyjs-webpack-plugin "^1.1.8"
url-loader "^0.6.2"
webpack "~3.10.0"
webpack "~3.11.0"
webpack-dev-middleware "~1.12.0"
webpack-dev-server "~2.11.0"
webpack-merge "^4.1.0"
@ -223,13 +224,17 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
"@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0":
"@ngtools/json-schema@1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.2.0.tgz#06e5ecd29e9a37d260a447dd873ea2becd228c4f"
"@ngtools/json-schema@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
"@ngtools/webpack@1.9.8":
version "1.9.8"
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.9.8.tgz#c9d1d1884b86ea9a5fbbd6f65080dc3ac37c8d97"
"@ngtools/webpack@1.10.0":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.10.0.tgz#1e4f60bdba8cdb8aeb93ebb976e63bf175acd279"
dependencies:
chalk "~2.2.0"
enhanced-resolve "^3.1.0"
@ -255,12 +260,20 @@
version "2.5.0"
resolved "https://registry.yarnpkg.com/@polymer/polymer/-/polymer-2.5.0.tgz#261439f5ab691c230d0c5dfb518b9247064ac13d"
"@schematics/angular@0.1.17":
version "0.1.17"
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.1.17.tgz#084a7cbe2de6f94a856bd08d95c9d35ef8905e2b"
"@schematics/angular@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.3.1.tgz#0f5185f5e718145031532fb03d127446e22ee9b8"
dependencies:
typescript "~2.6.2"
"@schematics/package-update@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@schematics/package-update/-/package-update-0.3.1.tgz#b7662a2aeb724e0f162b916cc0937278a6a1e709"
dependencies:
rxjs "^5.5.6"
semver "^5.3.0"
semver-intersect "^1.1.2"
"@storybook/components@^3.3.3":
version "3.3.13"
resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.3.13.tgz#003addacf9c98d61a35246eb7c76908d38d323c4"
@ -315,8 +328,8 @@
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.6.tgz#14445b6a1613cf4e05dd61c3c3256d0e95c0421e"
"@types/lodash@^4.14.85":
version "4.14.103"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.103.tgz#56ac640f029f67655f0721f479f1faa982bd8122"
version "4.14.104"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.104.tgz#53ee2357fa2e6e68379341d92eb2ecea4b11bb80"
"@types/mz@0.0.32":
version "0.0.32"
@ -2346,7 +2359,7 @@ blocking-proxy@^1.0.0:
dependencies:
minimist "^1.2.0"
bluebird@^3.1.1, bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@~3.5.0:
bluebird@^3.1.1, bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.0:
version "3.5.1"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
@ -2709,22 +2722,22 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
cacache@^10.0.0, cacache@^10.0.1:
version "10.0.2"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8"
version "10.0.4"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
dependencies:
bluebird "^3.5.0"
bluebird "^3.5.1"
chownr "^1.0.1"
glob "^7.1.2"
graceful-fs "^4.1.11"
lru-cache "^4.1.1"
mississippi "^1.3.0"
mississippi "^2.0.0"
mkdirp "^0.5.1"
move-concurrently "^1.0.1"
promise-inflight "^1.0.1"
rimraf "^2.6.1"
ssri "^5.0.0"
rimraf "^2.6.2"
ssri "^5.2.4"
unique-filename "^1.1.0"
y18n "^3.2.1"
y18n "^4.0.0"
cacache@^9.2.9:
version "9.3.0"
@ -2776,6 +2789,15 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
cache-loader@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.0.tgz#cdc313ae53b3c13ce8ee0c9296cf16c736b15252"
dependencies:
async "^2.4.1"
loader-utils "^1.1.0"
mkdirp "^0.5.1"
schema-utils "^0.4.2"
cached-path-relative@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
@ -3062,7 +3084,7 @@ classnames@^2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
clean-css@4.1.x:
clean-css@4.1.x, clean-css@^4.1.9:
version "4.1.9"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
dependencies:
@ -3728,7 +3750,7 @@ copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
copy-webpack-plugin@^4.1.1, copy-webpack-plugin@^4.4.0:
copy-webpack-plugin@^4.4.0, copy-webpack-plugin@~4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.4.1.tgz#1e8c366211db6dc2ddee40e5a3e4fc661dd149e8"
dependencies:
@ -3959,7 +3981,7 @@ css-loader@0.28.7:
postcss-value-parser "^3.3.0"
source-list-map "^2.0.0"
css-loader@^0.28.1, css-loader@^0.28.9:
css-loader@^0.28.9:
version "0.28.9"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95"
dependencies:
@ -4203,7 +4225,7 @@ debug@~2.2.0:
dependencies:
ms "0.7.1"
debuglog@^1.0.1:
debuglog@*, debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@ -4850,8 +4872,8 @@ es-to-primitive@^1.1.1:
is-symbol "^1.0.1"
es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.38"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3"
version "0.10.39"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87"
dependencies:
es6-iterator "~2.0.3"
es6-symbol "~3.1.1"
@ -5150,8 +5172,8 @@ eslint@4.10.0:
text-table "~0.2.0"
eslint@^4.17.0:
version "4.17.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.17.0.tgz#dc24bb51ede48df629be7031c71d9dc0ee4f3ddf"
version "4.18.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.0.tgz#ebd0ba795af6dc59aa5cee17938160af5950e051"
dependencies:
ajv "^5.3.0"
babel-code-frame "^6.22.0"
@ -5389,13 +5411,6 @@ expect@^22.3.0:
jest-message-util "^22.2.0"
jest-regex-util "^22.1.0"
exports-loader@^0.6.3:
version "0.6.4"
resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886"
dependencies:
loader-utils "^1.0.2"
source-map "0.5.x"
express-session@~1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af"
@ -5763,8 +5778,8 @@ flatten@^1.0.2:
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
flow-parser@^0.*:
version "0.65.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.65.0.tgz#5b6f91cb2a591d2c64e7989d21c133391902c86e"
version "0.66.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.66.0.tgz#be583fefb01192aa5164415d31a6241b35718983"
flush-write-stream@^1.0.0:
version "1.0.2"
@ -6187,9 +6202,9 @@ glamor@^2.20.40:
prop-types "^15.5.10"
through "^2.3.8"
glamorous@^4.11.2, glamorous@^4.11.4:
version "4.11.4"
resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.11.4.tgz#61b333e1ec552abbe48e2fea48fea89fc0026149"
glamorous@^4.11.2, glamorous@^4.11.5:
version "4.11.6"
resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.11.6.tgz#337d9ec370ef3fa7cd0cd8f9f1c058fa3c55a424"
dependencies:
brcast "^3.0.0"
fast-memoize "^2.2.7"
@ -6441,7 +6456,7 @@ graphql@^0.12.3:
dependencies:
iterall "1.1.3"
graphql@^0.13.0:
graphql@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.1.tgz#9b3db3d8e40d1827e4172404bfdd2e4e17a58b55"
dependencies:
@ -7035,7 +7050,7 @@ import-local@^1.0.0:
pkg-dir "^2.0.0"
resolve-cwd "^2.0.0"
imurmurhash@^0.1.4:
imurmurhash@*, imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@ -8819,9 +8834,9 @@ linkify-it@^2.0.0:
dependencies:
uc.micro "^1.0.1"
lint-staged@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-6.1.0.tgz#28f600c10a6cbd249ceb003118a1552e53544a93"
lint-staged@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-6.1.1.tgz#cd08c4d9b8ccc2d37198d1c47ce77d22be6cf324"
dependencies:
app-root-path "^2.0.0"
chalk "^2.1.0"
@ -8841,7 +8856,7 @@ lint-staged@^6.1.0:
p-map "^1.1.1"
path-is-inside "^1.0.2"
pify "^3.0.0"
staged-git-files "0.0.4"
staged-git-files "1.0.0"
stringify-object "^3.2.0"
listr-silent-renderer@^1.1.1:
@ -8983,6 +8998,10 @@ lodash._basecopy@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
lodash._baseindexof@*:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
lodash._baseisequal@^3.0.0:
version "3.0.7"
resolved "https://registry.yarnpkg.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz#d8025f76339d29342767dcc887ce5cb95a5b51f1"
@ -9006,15 +9025,25 @@ lodash._basevalues@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
lodash._bindcallback@^3.0.0:
lodash._bindcallback@*, lodash._bindcallback@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
lodash._cacheindexof@*:
version "3.0.2"
resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
lodash._createcache@*:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
dependencies:
lodash._getnative "^3.0.0"
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
lodash._getnative@^3.0.0:
lodash._getnative@*, lodash._getnative@^3.0.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
@ -9159,7 +9188,7 @@ lodash.pick@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
lodash.restparam@^3.0.0:
lodash.restparam@*, lodash.restparam@^3.0.0:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
@ -9672,7 +9701,7 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
"mime-db@>= 1.30.0 < 2":
"mime-db@>= 1.30.0 < 2", mime-db@~1.33.0:
version "1.33.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
@ -9680,21 +9709,17 @@ mime-db@~1.23.0:
version "1.23.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
mime-db@~1.30.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
mime-types@2.1.11:
version "2.1.11"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
dependencies:
mime-db "~1.23.0"
mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9:
version "2.1.17"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9:
version "2.1.18"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
dependencies:
mime-db "~1.30.0"
mime-db "~1.33.0"
mime@1.3.4:
version "1.3.4"
@ -9769,6 +9794,21 @@ mississippi@^1.2.0, mississippi@^1.3.0, mississippi@~1.3.0:
stream-each "^1.1.0"
through2 "^2.0.0"
mississippi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
dependencies:
concat-stream "^1.5.0"
duplexify "^3.4.2"
end-of-stream "^1.1.0"
flush-write-stream "^1.0.0"
from2 "^2.1.0"
parallel-transform "^1.1.0"
pump "^2.0.1"
pumpify "^1.3.3"
stream-each "^1.1.0"
through2 "^2.0.0"
mixin-deep@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
@ -10176,7 +10216,7 @@ nodemailer@^2.5.0:
nodemailer-smtp-transport "2.7.2"
socks "1.1.9"
nodemon@^1.14.12:
nodemon@^1.15.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.15.0.tgz#ddec01eeb9c33d53dfbf7eddb2fa32f723474c1e"
dependencies:
@ -11486,7 +11526,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
source-map "^0.5.6"
supports-color "^3.2.3"
postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13, postcss@^6.0.17, postcss@^6.0.8, postcss@^6.0.9:
postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13, postcss@^6.0.16, postcss@^6.0.17, postcss@^6.0.8, postcss@^6.0.9:
version "6.0.18"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.18.tgz#370f5f44d47f3a205f0eb2f6262bbf202df2a80e"
dependencies:
@ -11710,7 +11750,7 @@ pump@^1.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
pump@^2.0.0:
pump@^2.0.0, pump@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
dependencies:
@ -11750,9 +11790,9 @@ puppeteer@^0.13.0:
rimraf "^2.6.1"
ws "^3.0.0"
puppeteer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.0.0.tgz#20f3bb6ad6c6778b4d1fb750e808a29fec0a88a4"
puppeteer@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.1.0.tgz#97fbc2fbbf9ab659e7e202a68ac1ba54b8bc0a25"
dependencies:
debug "^2.6.8"
extract-zip "^1.6.5"
@ -12415,7 +12455,7 @@ readable-stream@~2.0.0, readable-stream@~2.0.5, readable-stream@~2.0.6:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readdir-scoped-modules@^1.0.0:
readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
dependencies:
@ -13321,7 +13361,13 @@ semver-dsl@^1.0.1:
dependencies:
semver "^5.3.0"
"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.x, "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
semver-intersect@^1.1.2:
version "1.3.0"
resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.3.0.tgz#d0d727d17d8abd2ff699fce6ae6ab83073d51b36"
dependencies:
semver "^5.0.0"
"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.x, "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
@ -13924,9 +13970,9 @@ ssri@^4.1.2, ssri@^4.1.6, ssri@~4.1.6:
dependencies:
safe-buffer "^5.1.0"
ssri@^5.0.0:
version "5.2.2"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.2.tgz#797be390aefe03996e4d961657a946121e2feacf"
ssri@^5.0.0, ssri@^5.2.4:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52"
dependencies:
safe-buffer "^5.1.1"
@ -13938,9 +13984,9 @@ stacktrace-parser@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e"
staged-git-files@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
staged-git-files@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.0.0.tgz#cdb847837c1fcc52c08a872d4883cc0877668a80"
state-toggle@^1.0.0:
version "1.0.0"
@ -14209,13 +14255,14 @@ style-loader@0.19.0:
loader-utils "^1.0.2"
schema-utils "^0.3.0"
style-loader@^0.13.1:
version "0.13.2"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb"
style-loader@^0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
dependencies:
loader-utils "^1.0.2"
schema-utils "^0.3.0"
style-loader@^0.20.1:
style-loader@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.2.tgz#851b373c187890331776e9cde359eea9c95ecd00"
dependencies:
@ -14798,11 +14845,11 @@ type-check@~0.3.2:
prelude-ls "~1.1.2"
type-is@~1.6.15, type-is@~1.6.6:
version "1.6.15"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
version "1.6.16"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
dependencies:
media-typer "0.3.0"
mime-types "~2.1.15"
mime-types "~2.1.18"
typedarray@^0.0.6, typedarray@~0.0.5:
version "0.0.6"
@ -14812,7 +14859,7 @@ typescript@2.5.3:
version "2.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d"
typescript@^2.7.1:
typescript@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836"
@ -14864,8 +14911,8 @@ uglifyjs-webpack-plugin@^0.4.6:
webpack-sources "^1.0.1"
uglifyjs-webpack-plugin@^1.1.7, uglifyjs-webpack-plugin@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.8.tgz#1302fb9471a7daf3d0a5174da6d65f0f415e75ad"
version "1.2.0"
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.0.tgz#f706fa4c655000a086b4a97c7d835ed0f6e9b0ef"
dependencies:
cacache "^10.0.1"
find-cache-dir "^1.0.0"
@ -15285,7 +15332,7 @@ v8flags@^3.0.0:
dependencies:
homedir-polyfill "^1.0.1"
validate-npm-package-license@^3.0.1:
validate-npm-package-license@*, validate-npm-package-license@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
dependencies:
@ -15386,7 +15433,7 @@ vm-browserify@0.0.4, vm-browserify@~0.0.1:
dependencies:
indexof "0.0.1"
vm2@patriksimek/vm2#custom_files:
"vm2@github:patriksimek/vm2#custom_files":
version "3.5.0"
resolved "https://codeload.github.com/patriksimek/vm2/tar.gz/7e82f90ac705fc44fad044147cb0df09b4c79a57"
@ -15680,7 +15727,7 @@ webpack@3.8.1:
webpack-sources "^1.0.1"
yargs "^8.0.2"
webpack@^3.11.0:
webpack@^3.11.0, webpack@~3.11.0:
version "3.11.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894"
dependencies:
@ -15707,33 +15754,6 @@ webpack@^3.11.0:
webpack-sources "^1.0.1"
yargs "^8.0.2"
webpack@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^5.1.5"
ajv-keywords "^2.0.0"
async "^2.1.2"
enhanced-resolve "^3.4.0"
escope "^3.6.0"
interpret "^1.0.0"
json-loader "^0.5.4"
json5 "^0.5.1"
loader-runner "^2.3.0"
loader-utils "^1.1.0"
memory-fs "~0.4.1"
mkdirp "~0.5.0"
node-libs-browser "^2.0.0"
source-map "^0.5.3"
supports-color "^4.2.1"
tapable "^0.2.7"
uglifyjs-webpack-plugin "^0.4.6"
watchpack "^1.4.0"
webpack-sources "^1.0.1"
yargs "^8.0.2"
websocket-driver@>=0.5.1:
version "0.7.0"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
@ -16050,6 +16070,10 @@ y18n@^3.2.0, y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"