diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ea6794042b4..95af3d26fe80 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,21 +36,11 @@ jobs: root: . paths: - node_modules - - examples/angular-cli/node_modules - - examples/ember-cli/node_modules - - examples/cra-kitchen-sink/node_modules - - examples/mithril-kitchen-sink/node_modules - - examples/official-storybook/node_modules - - examples/polymer-cli/node_modules - - examples/vue-kitchen-sink/node_modules - - examples/svelte-kitchen-sink/node_modules - - examples/marko-cli/node_modules - - examples/html-kitchen-sink/node_modules - - examples/riot-kitchen-sink/node_modules + - examples - addons - app - lib - example-kitchen-sinks: + examples: <<: *defaults steps: - checkout @@ -176,7 +166,7 @@ jobs: command: | cd examples/riot-kitchen-sink yarn storybook --smoke-test - react-native: + native-smoke-tests: <<: *defaults steps: - checkout @@ -188,7 +178,7 @@ jobs: - run: name: Run React-Native-App example command: | - cd examples/crna-kitchen-sink + cd examples-native/crna-kitchen-sink yarn storybook --smoke-test docs: <<: *defaults @@ -227,7 +217,7 @@ jobs: - run: name: Lint command: yarn lint - unit-test: + test: <<: *defaults steps: - checkout @@ -249,7 +239,7 @@ jobs: - run: name: Upload coverage command: yarn coverage - cli: + cli-test: <<: *defaults environment: BASH_ENV: ~/.bashrc @@ -261,7 +251,7 @@ jobs: name: Test command: yarn test --cli no_output_timeout: 1800 - cli-latest-cra: + cli-test-latest-cra: <<: *defaults environment: BASH_ENV: ~/.bashrc @@ -282,24 +272,24 @@ workflows: requires: - docs - build - - example-kitchen-sinks: + - examples: requires: - build - smoke-tests: requires: - build - - react-native: + - native-smoke-tests: requires: - build - - unit-test: + - test: requires: - build - coverage: requires: - - unit-test - - cli: + - test + - cli-test: requires: - build - - cli-latest-cra: + - cli-test-latest-cra: requires: - build diff --git a/.eslintrc.js b/.eslintrc.js index 95a7470d4445..917bf9b00706 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -57,6 +57,7 @@ module.exports = { { devDependencies: [ 'examples/**', + 'examples-native/**', '**/example/**', '*.js', '**/*.test.js', diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 32bc2fe52634..c1d1b2a93026 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -28,12 +28,13 @@ /examples/angular-cli/ @igor-dv @alterx /examples/cra-kitchen-sink/ @ndelangen @UsulPro @hypnosphi -/examples/crna-kitchen-sink/ @Gongreg @danielduan /examples/official-storybook/ @hypnosphi @danielduan @UsulPro /examples/polymer-cli/ @naipath @igor-dv /examples/vue-kitchen-sink/ @igor-dv @alexandrebodin /examples/svelte-kitchen-sink/ @plumpNation +/examples-native/crna-kitchen-sink/ @Gongreg @danielduan + /lib/addons/ @ndelangen @theinterned /lib/channel-postmessage/ @mnmtanish @ndelangen /lib/channel-websocket/ @mnmtanish @ndelangen diff --git a/.teamcity/OpenSourceProjects_Storybook/Project.kt b/.teamcity/OpenSourceProjects_Storybook/Project.kt index b20affdbf82a..90728aa38b66 100644 --- a/.teamcity/OpenSourceProjects_Storybook/Project.kt +++ b/.teamcity/OpenSourceProjects_Storybook/Project.kt @@ -18,10 +18,11 @@ object Project : Project({ vcsRoot(OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1) vcsRoot(OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster) + buildType(OpenSourceProjects_Storybook_Bootstrap) buildType(OpenSourceProjects_Storybook_CliTestLatestCra) buildType(OpenSourceProjects_Storybook_Examples) buildType(OpenSourceProjects_Storybook_Danger) - buildType(OpenSourceProjects_Storybook_ReactNative) + buildType(OpenSourceProjects_Storybook_NativeSmokeTests) buildType(OpenSourceProjects_Storybook_Docs) buildType(OpenSourceProjects_Storybook_Build_2) buildType(OpenSourceProjects_Storybook_CliTest) diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt new file mode 100644 index 000000000000..99266d02d308 --- /dev/null +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt @@ -0,0 +1,78 @@ +package OpenSourceProjects_Storybook.buildTypes + +import jetbrains.buildServer.configs.kotlin.v2017_2.* +import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher +import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script +import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs +import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.retryBuild +import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.VcsTrigger + +object OpenSourceProjects_Storybook_Bootstrap : BuildType({ + uuid = "9f9177e7-9ec9-4e2e-aabb-d304fd667712" + id = "OpenSourceProjects_Storybook_Bootstrap" + name = "Bootstrap" + + artifactRules = """ + addons/*/dist/** => dist.zip/addons + addons/storyshots/*/dist/** => dist.zip/addons/storyshots + app/*/dist/** => dist.zip/app + lib/*/dist/** => dist.zip/lib + """.trimIndent() + + vcs { + root(OpenSourceProjects_Storybook.vcsRoots.OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster) + } + + steps { + script { + name = "Bootstrap" + scriptContent = """ + #!/bin/sh + + set -e -x + + yarn + yarn bootstrap --core + """.trimIndent() + dockerImage = "node:%docker.node.version%" + } + } + + triggers { + vcs { + quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT + triggerRules = "-:comment=^TeamCity change:**" + branchFilter = """ + +:pull/* + +:release/* + +:master + +:snyk-fix-* + """.trimIndent() + enabled = false + } + retryBuild { + delaySeconds = 60 + enabled = false + } + } + + features { + commitStatusPublisher { + publisher = github { + githubUrl = "https://api.github.com" + authType = personalToken { + token = "credentialsJSON:5ffe2d7e-531e-4f6f-b1fc-a41bfea26eaa" + } + } + param("github_oauth_user", "Hypnosphi") + } + } + + requirements { + doesNotContain("env.OS", "Windows") + } + + cleanup { + artifacts(days = 1) + } +}) diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Build_2.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Build_2.kt index ff5be497af1b..d1df20a337d3 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Build_2.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Build_2.kt @@ -4,8 +4,9 @@ import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.BuildFailureOnMetric import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.failOnMetricChange -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.VcsTrigger import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs +import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.VcsTrigger +import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.finishBuildTrigger import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.retryBuild import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.merge import jetbrains.buildServer.configs.kotlin.v2017_2.ui.* @@ -32,12 +33,18 @@ object OpenSourceProjects_Storybook_Build_2 : BuildType({ +:pull/* +:release/* +:master - +:dependencies.io-* + +:snyk-fix-* """.trimIndent() } retryBuild { delaySeconds = 60 } + finishBuildTrigger { + enabled = false + buildTypeExtId = "OpenSourceProjects_Storybook_Bootstrap" + successfulOnly = true + branchFilter = "" + } } failureConditions { @@ -63,7 +70,9 @@ object OpenSourceProjects_Storybook_Build_2 : BuildType({ param("github_oauth_user", "Hypnosphi") } merge { - branchFilter = "+:dependencies.io-*" + branchFilter = """ + +:snyk-fix-* + """.trimIndent() destinationBranch = "" commitMessage = "Merge branch '%teamcity.build.branch%'" } @@ -85,7 +94,7 @@ object OpenSourceProjects_Storybook_Build_2 : BuildType({ onDependencyCancel = FailureAction.ADD_PROBLEM } } - dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_ReactNative) { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_NativeSmokeTests) { snapshot { onDependencyCancel = FailureAction.ADD_PROBLEM } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Chromatic.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Chromatic.kt index 1ca121568e0f..ccbbb2a3895d 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Chromatic.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Chromatic.kt @@ -22,18 +22,17 @@ object OpenSourceProjects_Storybook_Chromatic : BuildType({ steps { script { - name = "Bootstrap" + name = "Chromatic" scriptContent = """ + #!/bin/sh + + set -e -x + yarn - yarn bootstrap --core + yarn chromatic """.trimIndent() dockerImage = "node:%docker.node.version%" } - script { - name = "Chromatic" - scriptContent = "yarn chromatic" - dockerImage = "node:%docker.node.version%" - } } features { @@ -49,6 +48,15 @@ object OpenSourceProjects_Storybook_Chromatic : BuildType({ } dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } allApps { dependency(config) { snapshot {} diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTest.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTest.kt index 247c1acd2fde..2761120f47d0 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTest.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTest.kt @@ -3,9 +3,6 @@ package OpenSourceProjects_Storybook.buildTypes import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.retryBuild -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.VcsTrigger object OpenSourceProjects_Storybook_CliTest : BuildType({ uuid = "b1db1a3a-a4cf-46ea-8f55-98b86611f92e" @@ -19,20 +16,17 @@ object OpenSourceProjects_Storybook_CliTest : BuildType({ steps { script { - name = "Bootstrap" + name = "Test" scriptContent = """ + #!/bin/sh + set -e -x yarn - yarn bootstrap --core + yarn test --cli """.trimIndent() dockerImage = "node:%docker.node.version%" } - script { - name = "Test" - scriptContent = "yarn test --cli" - dockerImage = "node:%docker.node.version%" - } } features { @@ -47,6 +41,18 @@ object OpenSourceProjects_Storybook_CliTest : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTestLatestCra.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTestLatestCra.kt index 35273aa4ac53..3daf4953f767 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTestLatestCra.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_CliTestLatestCra.kt @@ -19,26 +19,28 @@ object OpenSourceProjects_Storybook_CliTestLatestCra : BuildType({ steps { script { - name = "Bootstrap" + name = "Test" scriptContent = """ + #!/bin/sh + set -e -x yarn - yarn bootstrap --core + yarn test-latest-cra """.trimIndent() dockerImage = "node:%docker.node.version%" } - script { - name = "Test" - scriptContent = "yarn test-latest-cra" - dockerImage = "node:%docker.node.version%" - } } triggers { vcs { quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT triggerRules = "-:comment=^TeamCity change:**" + branchFilter = """ + +:pull/* + +:release/* + +:master + """.trimIndent() } retryBuild {} } @@ -55,6 +57,18 @@ object OpenSourceProjects_Storybook_CliTestLatestCra : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Danger.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Danger.kt index 6b1e39bf0954..671cf92833bd 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Danger.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Danger.kt @@ -13,8 +13,8 @@ object OpenSourceProjects_Storybook_Danger : BuildType({ name = "Danger" params { - password("env.DANGER_GITHUB_API_TOKEN", "credentialsJSON:8fa112e0-d0e0-4f9f-9f18-01471a999b4d", display = ParameterDisplay.HIDDEN) - param("env.PULL_REQUEST_URL", "https://github.com/storybooks/storybook/%teamcity.build.branch%") + password("env.DANGER_GITHUB_API_TOKEN", "credentialsJSON:7f0943ab-dfca-49dd-b926-03062007bfd0") + param("env.PULL_REQUEST_URL", "https://github.com/storybooks/storybook/pull/%teamcity.build.branch%") } vcs { @@ -24,14 +24,16 @@ object OpenSourceProjects_Storybook_Danger : BuildType({ } steps { - script { - name = "Install" - scriptContent = "yarn" - dockerImage = "node:%docker.node.version%" - } script { name = "Danger" - scriptContent = "yarn danger ci" + scriptContent = """ + #!/bin/sh + + set -e -x + + yarn + yarn danger ci + """.trimIndent() dockerImage = "node:%docker.node.version%" } } @@ -39,7 +41,6 @@ object OpenSourceProjects_Storybook_Danger : BuildType({ triggers { vcs { quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT - triggerRules = "-:comment=^TeamCity change:**" branchFilter = """ +:* -:master @@ -60,6 +61,12 @@ object OpenSourceProjects_Storybook_Danger : BuildType({ } param("github_oauth_user", "Hypnosphi") } + feature { + type = "pullRequests" + param("filterAuthorRole", "EVERYBODY") + param("authenticationType", "token") + param("secure:accessToken", "credentialsJSON:5ffe2d7e-531e-4f6f-b1fc-a41bfea26eaa") + } } requirements { diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Docs.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Docs.kt index 7897bbfe209a..eb8f8fd6c767 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Docs.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Docs.kt @@ -3,7 +3,6 @@ package OpenSourceProjects_Storybook.buildTypes import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs object OpenSourceProjects_Storybook_Docs : BuildType({ uuid = "1bda59b5-d08d-4fd8-b317-953e7d79d881" @@ -22,23 +21,18 @@ object OpenSourceProjects_Storybook_Docs : BuildType({ } steps { - script { - name = "Install" - workingDir = "docs" - scriptContent = "yarn install --frozen-lockfile" - dockerImage = "node:%docker.node.version%" - } script { name = "Build" workingDir = "docs" - scriptContent = "yarn build" - dockerImage = "node:%docker.node.version%" - } - } + scriptContent = """ + #!/bin/sh - triggers { - vcs { - enabled = false + set -e -x + + yarn --frozen-lockfile + yarn build + """.trimIndent() + dockerImage = "node:%docker.node.version%" } } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt index ba18d2624a21..53ee4bd40753 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt @@ -23,21 +23,14 @@ examples/official-storybook/image-snapshots/__image_snapshots__ => image-snapsho } steps { - script { - name = "Bootstrap" - scriptContent = """ - yarn - yarn bootstrap --core - """.trimIndent() - dockerImage = "node:%docker.node.version%" - } script { name = "official-storybook" scriptContent = """ #!/bin/sh set -e -x - + + yarn cd examples/official-storybook rm -rf storybook-static yarn build-storybook @@ -90,6 +83,15 @@ examples/official-storybook/image-snapshots/__image_snapshots__ => image-snapsho } dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } allApps { dependency(config) { snapshot {} diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint.kt index 8b90446ad687..11d5b073adb3 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint.kt @@ -3,7 +3,6 @@ package OpenSourceProjects_Storybook.buildTypes import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.BuildFailureOnMetric import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.failOnMetricChange @@ -19,24 +18,18 @@ object OpenSourceProjects_Storybook_Lint : BuildType({ steps { script { - name = "Bootstrap" + name = "Lint" scriptContent = """ + #!/bin/sh + + set -e -x + yarn - yarn bootstrap --core --docs + yarn bootstrap --docs + yarn lint:ci """.trimIndent() dockerImage = "node:%docker.node.version%" } - script { - name = "Lint" - scriptContent = "yarn lint:ci" - dockerImage = "node:%docker.node.version%" - } - } - - triggers { - vcs { - enabled = false - } } features { @@ -51,6 +44,18 @@ object OpenSourceProjects_Storybook_Lint : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint_Warnings.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint_Warnings.kt index 8879e7dc0af8..2087a8c261f7 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint_Warnings.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Lint_Warnings.kt @@ -20,18 +20,18 @@ object OpenSourceProjects_Storybook_Lint_Warnings : BuildType({ steps { script { - name = "Bootstrap" + name = "Lint" scriptContent = """ + #!/bin/sh + + set -e -x + yarn - yarn bootstrap --core --docs + yarn bootstrap --docs + yarn lint:ci """.trimIndent() dockerImage = "node:%docker.node.version%" } - script { - name = "Lint" - scriptContent = "yarn lint:ci" - dockerImage = "node:%docker.node.version%" - } } triggers { @@ -42,7 +42,6 @@ object OpenSourceProjects_Storybook_Lint_Warnings : BuildType({ +:pull/* +:release/* +:master - +:dependencies.io-* """.trimIndent() } } @@ -59,6 +58,18 @@ object OpenSourceProjects_Storybook_Lint_Warnings : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_ReactNative.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_NativeSmokeTests.kt similarity index 68% rename from .teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_ReactNative.kt rename to .teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_NativeSmokeTests.kt index 08ebca4b1106..d1e3319c8d98 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_ReactNative.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_NativeSmokeTests.kt @@ -4,10 +4,10 @@ import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -object OpenSourceProjects_Storybook_ReactNative : BuildType({ +object OpenSourceProjects_Storybook_NativeSmokeTests : BuildType({ uuid = "ac276912-df1a-44f1-8de2-056276193ce8" - id = "OpenSourceProjects_Storybook_ReactNative" - name = "React Native" + id = "OpenSourceProjects_Storybook_NativeSmokeTests" + name = "Native Smoke Tests" params { param("env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD", "true") @@ -20,18 +20,16 @@ object OpenSourceProjects_Storybook_ReactNative : BuildType({ } steps { - script { - name = "Bootstrap" - scriptContent = """ - yarn - yarn bootstrap --core --reactnativeapp - """.trimIndent() - dockerImage = "node:%docker.node.version%" - } script { name = "crna-kitchen-sink" scriptContent = """ - cd examples/crna-kitchen-sink + #!/bin/sh + + set -e -x + + yarn + yarn bootstrap --reactnativeapp + cd examples-native/crna-kitchen-sink yarn storybook --smoke-test """.trimIndent() dockerImage = "node:%docker.node.version%" @@ -50,6 +48,18 @@ object OpenSourceProjects_Storybook_ReactNative : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SBNext.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SBNext.kt deleted file mode 100644 index d46dc1073a28..000000000000 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SBNext.kt +++ /dev/null @@ -1,62 +0,0 @@ -package OpenSourceProjects_Storybook.buildTypes - -import jetbrains.buildServer.configs.kotlin.v2017_2.* -import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher -import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.BuildFailureOnMetric -import jetbrains.buildServer.configs.kotlin.v2017_2.failureConditions.failOnMetricChange -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.VcsTrigger -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs - -object OpenSourceProjects_Storybook_SBNext : BuildType({ - uuid = "dc66f07a-281f-4434-97ca-f1480b7cfc51" - id = "OpenSourceProjects_Storybook_SBNext" - name = "SBNext" - - artifactRules = "ui/out => demo.zip" - - vcs { - root("OpenSourceProjects_Storybook_SBNext") - - } - - steps { - script { - name = "Install" - scriptContent = "yarn" - dockerImage = "node:%docker.node.version%" - } - script { - name = "Lint" - scriptContent = "yarn lint" - dockerImage = "node:%docker.node.version%" - } - script { - name = "Test" - enabled = false - scriptContent = "yarn test" - dockerImage = "node:%docker.node.version%" - } - script { - name = "Build" - workingDir = "server" - scriptContent = "yarn build" - dockerImage = "node:%docker.node.version%" - } - script { - name = "Export" - workingDir = "demo" - scriptContent = "yarn export" - dockerImage = "node:%docker.node.version%" - } - } - - triggers { - vcs { - } - } - - requirements { - doesNotContain("env.OS", "Windows") - } -}) diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SmokeTests.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SmokeTests.kt index 54488bb893a1..bf5f2ebf4399 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SmokeTests.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_SmokeTests.kt @@ -16,11 +16,8 @@ object OpenSourceProjects_Storybook_SmokeTests : BuildType({ steps { script { - name = "Bootstrap" - scriptContent = """ - yarn - yarn bootstrap --core - """.trimIndent() + name = "Install" + scriptContent = "yarn" dockerImage = "node:%docker.node.version%" } allApps { @@ -65,6 +62,18 @@ object OpenSourceProjects_Storybook_SmokeTests : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Test.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Test.kt index e746c966987d..f63649efdb25 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Test.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Test.kt @@ -3,7 +3,6 @@ package OpenSourceProjects_Storybook.buildTypes import jetbrains.buildServer.configs.kotlin.v2017_2.* import jetbrains.buildServer.configs.kotlin.v2017_2.buildFeatures.commitStatusPublisher import jetbrains.buildServer.configs.kotlin.v2017_2.buildSteps.script -import jetbrains.buildServer.configs.kotlin.v2017_2.triggers.vcs object OpenSourceProjects_Storybook_Test : BuildType({ uuid = "9f9177e7-9ec9-4e2e-aabb-d304fd667711" @@ -18,30 +17,20 @@ object OpenSourceProjects_Storybook_Test : BuildType({ } steps { - script { - name = "Bootstrap" - scriptContent = """ - yarn - yarn bootstrap --core - """.trimIndent() - dockerImage = "node:%docker.node.version%" - } script { name = "Test" scriptContent = """ + #!/bin/sh + + set -e -x + + yarn yarn test --core --coverage --runInBand --teamcity - yarn coverage """.trimIndent() dockerImage = "node:%docker.node.version%" } } - triggers { - vcs { - enabled = false - } - } - features { commitStatusPublisher { publisher = github { @@ -54,6 +43,18 @@ object OpenSourceProjects_Storybook_Test : BuildType({ } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt index 7531656b709a..93a9b13b25d7 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt @@ -16,7 +16,6 @@ enum class StorybookApp(val appName: String, val exampleDir: String, val merged: MARKO("Marko", "marko-cli"), SVELTE("Svelte", "svelte-kitchen-sink"), RIOT("Riot", "riot-kitchen-sink"), - HYPERAPP("Hyperapp", "hyperapp-kitchen-sink", false), EMBER("Ember", "ember-cli"); val lowerName = appName.toLowerCase() @@ -37,14 +36,6 @@ enum class StorybookApp(val appName: String, val exampleDir: String, val merged: artifactRules = artifactPath steps { - script { - name = "Bootstrap" - scriptContent = """ - yarn - yarn bootstrap --core - """.trimIndent() - dockerImage = "node:%docker.node.version%" - } script { name = "build" scriptContent = """ @@ -52,6 +43,7 @@ enum class StorybookApp(val appName: String, val exampleDir: String, val merged: set -e -x + yarn cd examples/$exampleDir yarn build-storybook """.trimIndent() @@ -83,6 +75,18 @@ enum class StorybookApp(val appName: String, val exampleDir: String, val merged: } } + dependencies { + dependency(OpenSourceProjects_Storybook.buildTypes.OpenSourceProjects_Storybook_Bootstrap) { + snapshot { + onDependencyFailure = FailureAction.FAIL_TO_START + } + + artifacts { + artifactRules = "dist.zip!**" + } + } + } + requirements { doesNotContain("env.OS", "Windows") } diff --git a/.teamcity/OpenSourceProjects_Storybook/patches/buildTypes/759f0116-2f7d-4c03-8220-56e4ab03be3a.kts b/.teamcity/OpenSourceProjects_Storybook/patches/buildTypes/759f0116-2f7d-4c03-8220-56e4ab03be3a.kts new file mode 100644 index 000000000000..b9096b670643 --- /dev/null +++ b/.teamcity/OpenSourceProjects_Storybook/patches/buildTypes/759f0116-2f7d-4c03-8220-56e4ab03be3a.kts @@ -0,0 +1,20 @@ +package OpenSourceProjects_Storybook.patches.buildTypes + +import jetbrains.buildServer.configs.kotlin.v2017_2.* +import jetbrains.buildServer.configs.kotlin.v2017_2.ui.* + +/* +This patch script was generated by TeamCity on settings change in UI. +To apply the patch, change the buildType with uuid = '759f0116-2f7d-4c03-8220-56e4ab03be3a' (id = 'OpenSourceProjects_Storybook_Danger') +accordingly, and delete the patch script. +*/ +changeBuildType("759f0116-2f7d-4c03-8220-56e4ab03be3a") { + params { + expect { + password("env.DANGER_GITHUB_API_TOKEN", "credentialsJSON:7f0943ab-dfca-49dd-b926-03062007bfd0") + } + update { + password("env.DANGER_GITHUB_API_TOKEN", "credentialsJSON:9ac87388-d267-4def-a10e-3e596369f644") + } + } +} diff --git a/.teamcity/OpenSourceProjects_Storybook/vcsRoots/OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1.kt b/.teamcity/OpenSourceProjects_Storybook/vcsRoots/OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1.kt index 765836fe72a2..f442c28963bc 100644 --- a/.teamcity/OpenSourceProjects_Storybook/vcsRoots/OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1.kt +++ b/.teamcity/OpenSourceProjects_Storybook/vcsRoots/OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1.kt @@ -8,7 +8,6 @@ object OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMa id = "OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster1" name = "https://github.com/storybooks/storybook#refs/heads/master (1)" url = "git@github.com:storybooks/storybook.git" - branchSpec = "+:refs/(pull/*)/head" authMethod = uploadedKey { userName = "git" uploadedKey = "Storybook bot" diff --git a/ADDONS_SUPPORT.md b/ADDONS_SUPPORT.md index a9de7742d5ec..e367da5b116c 100644 --- a/ADDONS_SUPPORT.md +++ b/ADDONS_SUPPORT.md @@ -1,19 +1,21 @@ -## Addon / Framework Support Table - -| | [React](app/react)|[React Native](app/react-native)|[Vue](app/vue)|[Angular](app/angular)| [Polymer](app/polymer)| [Mithril](app/mithril)| [HTML](app/html)| [Marko](app/marko)| [Svelte](app/svelte)| [Riot](app/riot)| [Ember](app/ember)| -| ----------- |:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:| -|[a11y](addons/a11y) |+| |+|+|+|+|+|+| | |+| -|[actions](addons/actions) |+|+|+|+|+|+|+|+|+|+|+| -|[backgrounds](addons/backgrounds)|+| |+|+|+|+|+|+|+|+|+| -|[centered](addons/centered) |+| |+|+| |+|+| |+| |+| -|[events](addons/events) |+| |+|+|+|+|+|+| | |+| -|[graphql](addons/graphql) |+| | | | | | | | | | | -|[info](addons/info) |+| | | | | | | | | | | -|[jest](addons/jest) |+| | |+| | |+| | | | | -|[knobs](addons/knobs) |+|+|+|+|+|+|+|+|+|+|+| -|[links](addons/links) |+|+|+|+|+|+|+| |+|+|+| -|[notes](addons/notes) |+| |+|+|+|+|+| |+|+|+| -|[options](addons/options) |+|+|+|+|+|+|+| |+|+|+| -|[storyshots](addons/storyshots) |+|+|+|+| | |+| |+|+| | -|[storysource](addons/storysource)|+| |+|+|+|+|+|+|+|+|+| -|[viewport](addons/viewport) |+| |+|+|+|+|+|+|+|+|+| +## Addon / Framework Support Table + +| | [React](app/react)|[React Native](app/react-native)|[Vue](app/vue)|[Angular](app/angular)| [Polymer](app/polymer)| [Mithril](app/mithril)| [HTML](app/html)| [Marko](app/marko)| [Svelte](app/svelte)| [Riot](app/riot)| [Ember](app/ember)| +| ----------- |:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:| +|[a11y](addons/a11y) |+| |+|+|+|+|+|+| | |+| +|[actions](addons/actions) |+|+|+|+|+|+|+|+|+|+|+| +|[backgrounds](addons/backgrounds)|+|*|+|+|+|+|+|+|+|+|+| +|[centered](addons/centered) |+| |+|+| |+|+| |+| |+| +|[events](addons/events) |+| |+|+|+|+|+|+| | |+| +|[graphql](addons/graphql) |+| | | | | | | | | | | +|[info](addons/info) |+| | | | | | | | | | | +|[jest](addons/jest) |+| | |+| | |+| | | | | +|[knobs](addons/knobs) |+|+*|+|+|+|+|+|+|+|+|+| +|[links](addons/links) |+|+|+|+|+|+|+| |+|+|+| +|[notes](addons/notes) |+|+*|+|+|+|+|+| |+|+|+| +|[options](addons/options) |+|+|+|+|+|+|+| |+|+|+| +|[storyshots](addons/storyshots) |+|+|+|+| | |+| |+|+| | +|[storysource](addons/storysource)|+| |+|+|+|+|+|+|+|+|+| +|[viewport](addons/viewport) |+| |+|+|+|+|+|+|+|+|+| + +`*` - React Native on device addon (addons/onDevice-\) diff --git a/CHANGELOG.md b/CHANGELOG.md index 811e4eac40fa..a82a264d2e31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,91 @@ +# 4.0.0-rc.0 + +2018-October-15 + +#### Features + +- Addon: google analytics [#4138](https://github.com/storybooks/storybook/pull/4138) + +#### Bug Fixes + +- Improve environment var loading [#4413](https://github.com/storybooks/storybook/pull/4413) + +#### Maintenance + +- Skip preflight check when starting cra kitchen sink [#4408](https://github.com/storybooks/storybook/pull/4408) +- Change crna-kitchen-sink path and Some CI maintenance [#4409](https://github.com/storybooks/storybook/pull/4409) +- Create ember entry point to official storybook [#4426](https://github.com/storybooks/storybook/pull/4426) + +#### Dependency Upgrades + +- Bump ember-cli from 3.4.3 to 3.5.0 [#4429](https://github.com/storybooks/storybook/pull/4429) +- Bump react-native-modal-selector from 0.0.27 to 0.0.29 [#4428](https://github.com/storybooks/storybook/pull/4428) +- Bump ember-cli-inject-live-reload from 1.8.2 to 1.10.1 [#4423](https://github.com/storybooks/storybook/pull/4423) +- Bump html-webpack-plugin from 4.0.0-beta.1 to 4.0.0-beta.2 [#4421](https://github.com/storybooks/storybook/pull/4421) +- Bump react-scripts from 2.0.4 to 2.0.5 [#4420](https://github.com/storybooks/storybook/pull/4420) +- Bump autoprefixer from 9.1.5 to 9.2.0 [#4417](https://github.com/storybooks/storybook/pull/4417) +- Bump redux from 4.0.0 to 4.0.1 [#4419](https://github.com/storybooks/storybook/pull/4419) +- Bump ts-loader from 5.2.1 to 5.2.2 [#4418](https://github.com/storybooks/storybook/pull/4418) +- Bump eslint-plugin-jest from 21.24.1 to 21.25.0 [#4424](https://github.com/storybooks/storybook/pull/4424) +- Bump lazy-universal-dotenv from 1.9.1 to 2.0.0 [#4422](https://github.com/storybooks/storybook/pull/4422) + +# 4.0.0-alpha.25 + +2018-October-13 + +#### Breaking Changes + +- CLI: Rename CLI to sb [#4345](https://github.com/storybooks/storybook/pull/4345) +- React Native: Remove the packager from storybook [#4261](https://github.com/storybooks/storybook/pull/4261) +- React-Native: On-device addons [#4381](https://github.com/storybooks/storybook/pull/4381) + +#### Features + +- Storybook version update check [#4334](https://github.com/storybooks/storybook/pull/4334) +- CLI: specify project type interactively or as option [#4184](https://github.com/storybooks/storybook/pull/4184) +- Addon-Jest: expand supported file types [#3983](https://github.com/storybooks/storybook/pull/3983) +- CLI-less Node api [#4344](https://github.com/storybooks/storybook/pull/4344) +- React-Native: Updated channel to support async option [#4326](https://github.com/storybooks/storybook/pull/4326) +- React-Native: On-device addons for notes, knobs, backgrounds [#4327](https://github.com/storybooks/storybook/pull/4327) +- Angular: Add support for "baseUrl" and "paths" from angular-cli [#4162](https://github.com/storybooks/storybook/pull/4162) +- Angular: Added basePath support [#4323](https://github.com/storybooks/storybook/pull/4323) +- Vue: support string-only component [#4285](https://github.com/storybooks/storybook/pull/4285) +- Storyshots: Add snapshot serializer option [#4283](https://github.com/storybooks/storybook/pull/4283) +- Storyshots: Support story-specific options as function [#4282](https://github.com/storybooks/storybook/pull/4282) + +#### Bug Fixes + +- React-native: Remove deprecated attempt to load default addons [#4308](https://github.com/storybooks/storybook/pull/4308) +- Fix panel layouts [#4304](https://github.com/storybooks/storybook/pull/4304) +- [logging] better error logging for when opn fails to opn [#4348](https://github.com/storybooks/storybook/pull/4348) +- Fix iPhone viewport dimensions [#4293](https://github.com/storybooks/storybook/pull/4293) +- Fix Array.js value to string [#4336](https://github.com/storybooks/storybook/pull/4336) +- Fixes to cli ember support [#4318](https://github.com/storybooks/storybook/pull/4318) +- Update `addon-jest` to new propType [#4252](https://github.com/storybooks/storybook/pull/4252) + +#### Maintenance + +- Remove CRNA fixture [#4346](https://github.com/storybooks/storybook/pull/4346) +- Try to fix cli tests [#4338](https://github.com/storybooks/storybook/pull/4338) +- Updated installation for Angular [#4302](https://github.com/storybooks/storybook/pull/4302) +- Fix the broken lint [#4310](https://github.com/storybooks/storybook/pull/4310) +- [ember] add dependencies to root application [#4309](https://github.com/storybooks/storybook/pull/4309) + +#### Dependency Upgrades + +- Knobs/replace datepicker [#4380](https://github.com/storybooks/storybook/pull/4380) +- Re-generate lockfiles [#4404](https://github.com/storybooks/storybook/pull/4404) +- Run `yarn upgrade-interactive --latest` in root and docs [#4403](https://github.com/storybooks/storybook/pull/4403) +- chore(deps): #4267 upgrade lodash to latest [#4284](https://github.com/storybooks/storybook/pull/4284) +- Bump express from 4.16.3 to 4.16.4 [#4370](https://github.com/storybooks/storybook/pull/4370) +- Bump @angular/cli from 6.2.4 to 6.2.5 [#4390](https://github.com/storybooks/storybook/pull/4390) +- CHANGE back to use html-webpack-plugin to keep compatibility with plugins that depend on it [#4375](https://github.com/storybooks/storybook/pull/4375) +- Bump danger from 4.4.6 to 4.4.7 [#4365](https://github.com/storybooks/storybook/pull/4365) +- Bump @storybook/react from 3.4.8 to 3.4.11 in /docs [#4354](https://github.com/storybooks/storybook/pull/4354) +- Bump sitemap from 1.13.0 to 2.0.1 in /docs [#4356](https://github.com/storybooks/storybook/pull/4356) +- Bump husky from 1.1.1 to 1.1.2 [#4358](https://github.com/storybooks/storybook/pull/4358) +- Tech/upgrades 5 [#4347](https://github.com/storybooks/storybook/pull/4347) + # 4.0.0-alpha.24 2018-October-04 diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 000000000000..9f091b96e676 --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,54 @@ +This document will document some of the processes that members of the documentation team should adhere to. + +# PR Process + +1. Triage with the correct [label](#labels) +2. If there a change related to it ensure it has been published and tested before closing + +# Labels + +| label name | purpose | +|:--------------:|:------------| +| accessibility | | +| addon:(name) | | +| app:(name) | | +| api:(name) | | +| cleanup | Minor cleanup style change that won't show up in release changelog | +| bug | | +| cli | | +| good first review | | +| compatibility with other tools | | +| patch | Bugfix & documentation PR that need to be picked to release branch | +| picked | Patch PRs cherry-picked to master | +| compatibility with other tools | | +| components | | +| core | | +| decorators | | +| dependencies:update | | +| dependencies | | +| discussion | | +| do not merge | | +| documentation | | +| feature request | | +| good first issue | | +| has workaround | | +| help wanted | | +| high priority | | +| in progress | | +| inactive | | +| maintenance | | +| merged | | +| needs example | | +| needs more info | | +| needs rebase | | +| needs reproduction | | +| needs review | | +| performance issue | | +| presets | | +| question / support | | +| ready | | +| security | | +| todo | | +| typescript | | +| ui | | +| won't fix | | diff --git a/MIGRATION.md b/MIGRATION.md index e0fe6cf12790..20297ef43a17 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -5,11 +5,13 @@ - [From version 3.4.x to 4.0.x](#from-version-34x-to-40x) - [Keyboard shortcuts moved](#keyboard-shortcuts-moved) - [Removed addWithInfo](#removed-add-with-info) + - [Removed RN packager](#removed-rn-packager) - [Removed RN addons](#removed-rn-addons) - [Storyshots changes](#storyshots-changes) - [Webpack 4](#webpack-4) - [Babel 7](#babel-7) - [Create-react-app](#create-react-app) + - [CLI rename](#cli-rename) - [From version 3.3.x to 3.4.x](#from-version-33x-to-34x) - [From version 3.2.x to 3.3.x](#from-version-32x-to-33x) - [Refactored Knobs](#refactored-knobs) @@ -27,7 +29,7 @@ ## From version 3.4.x to 4.0.x -With 4.0 as our first major release in over a year, we've collected a lot of cleanup tasks. All deprecations have been marked for months, so we hope that there will be no significant impact on your project. +With 4.0 as our first major release in over a year, we've collected a lot of cleanup tasks. Most of the deprecations have been marked for months, so we hope that there will be no significant impact on your project. ### Generic addons @@ -47,6 +49,12 @@ import { number } from "@storybook/addon-knobs"; 4.0 also reversed the order of addon-knob's `select` knob keys/values, which had been called `selectV2` prior to this breaking change. See the knobs [package README](https://github.com/storybooks/storybook/blob/master/addons/knobs/README.md#select) for usage. +### Knobs URL parameters + +Addon-knobs no longer updates the URL parameters interactively as you edit a knob. This is a UI change but it shouldn't break any code because old URLs are still supported. + +In 3.x, editing knobs updated the URL parameters interactively. The implementation had performance and architectural problems. So in 4.0, we changed this to a "copy" button tp the addon which generates a URL with the updated knob values and copies it to the clipboard. + ### Keyboard shortcuts moved - Addon Panel to `Z` @@ -58,6 +66,14 @@ import { number } from "@storybook/addon-knobs"; `Addon-info`'s `addWithInfo` has been marked deprecated since 3.2. In 4.0 we've removed it completely. See the package [README](https://github.com/storybooks/storybook/blob/master/addons/info/README.md) for the proper usage. +### Removed RN packager + +Since storybook version v4.0 packager is removed from storybook. The suggested storybook usage is to include it inside your app. +If you want to keep the old behaviour, you have to start the packager yourself with a different project root. +`npm run storybook start -p 7007 | react-native start --projectRoot storybook` + +Removed cli options: `--packager-port --root --projectRoots -r, --reset-cache --skip-packager --haul --platform --metro-config` + ### Removed RN addons The `@storybook/react-native` had built-in addons (`addon-actions` and `addon-links`) that have been marked as deprecated since 3.x. They have been fully removed in 4.x. If your project still uses the built-ins, you'll need to add explicit dependencies on `@storybook/addon-actions` and/or `@storybook/addon-links` and import directly from those packages. @@ -94,7 +110,7 @@ Storybook now uses Babel 7. There's a couple of cases when it can break with you If you are using `create-react-app` (aka CRA), you may need to do some manual steps to upgrade, depending on the setup. - `create-react-app@1` may require manual migrations. - - If you're adding storybook for the first time, it should just work: `storybook init` should add the correct dependencies. + - If you're adding storybook for the first time, it should just work: `sb init` should add the correct dependencies. - If you've upgrading an existing project, your `package.json` probably already uses Babel 6, making it incompatible with `@storybook/react@4` which uses Babel 7. There are two ways to make it compatible, each of which is spelled out in detail in the next section: - Upgrade to Babel 7 if you are not dependent on Babel 6-specific features. - Migrate Babel 6 if you're heavily dependent on some Babel 6-specific features). @@ -125,6 +141,14 @@ Also make sure you have a `.babelrc` in your project directory. You probably alr If you're using `start-storybook` on CI, you may need to opt out of this using the new `--ci` flag. +### CLI Rename + +We've deprecated the `getstorybook` CLI in 4.0. The new way to install storybook is `sb init`. We recommend using `npx` for convenience and to make sure you're always using the latest version of the CLI: + +``` +npx -p @storybook/cli@alpha sb init +``` + ## From version 3.3.x to 3.4.x There are no expected breaking changes in the 3.4.x release, but 3.4 contains a major refactor to make it easier to support new frameworks, and we will document any breaking changes here if they arise. diff --git a/README.md b/README.md index 2cd29b9823b2..d12778a5bd7d 100644 --- a/README.md +++ b/README.md @@ -10,22 +10,24 @@ [![Backers on Open Collective](https://opencollective.com/storybook/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/storybook/sponsors/badge.svg)](#sponsors) [![License](https://img.shields.io/github/license/storybooks/storybook.svg)](https://github.com/storybooks/storybook/blob/master/LICENSE) + -* * * +--- Storybook is a development environment for UI components. It allows you to browse a component library, view the different states of each component, and interactively develop and test components. ## Intro +
README for: -- [![Alpha](https://img.shields.io/npm/v/@storybook/core/alpha.svg)](https://github.com/storybooks/storybook) -- [![Latest](https://img.shields.io/npm/v/@storybook/core/latest.svg)](https://github.com/storybooks/storybook/tree/release/3.4) +- [![Alpha](https://img.shields.io/npm/v/@storybook/core/alpha.svg)](https://github.com/storybooks/storybook) +- [![Latest](https://img.shields.io/npm/v/@storybook/core/latest.svg)](https://github.com/storybooks/storybook/tree/release/3.4) Storybook runs outside of your app. This allows you to develop UI components in isolation, which can improve component reuse, testability, and development speed. You can build quickly without having to worry about application-specific dependencies. @@ -35,38 +37,36 @@ Storybook comes with a lot of [addons](https://storybook.js.org/addons/introduct ## Table of contents -- 🚀[Getting Started](#getting-started) -- 📒[Projects](#projects) - - 🛠[Supported Frameworks & Examples](#supported-frameworks) - - 🚇[Sub Projects](#sub-projects) - - 🔗[Addons](#addons) -- 🏅[Badges & Presentation materials](#badges--presentation-materials) -- 👥[Community](#community) -- 👏[Contributing](#contributing) - - 👨‍💻[Development scripts](#development-scripts) - - 💵[Backers](#backers) - - 💸[Sponsors](#sponsors) +- 🚀[Getting Started](#getting-started) +- 📒[Projects](#projects) + - 🛠[Supported Frameworks & Examples](#supported-frameworks) + - 🚇[Sub Projects](#sub-projects) + - 🔗[Addons](#addons) +- 🏅[Badges & Presentation materials](#badges--presentation-materials) +- 👥[Community](#community) +- 👏[Contributing](#contributing) + - 👨‍💻[Development scripts](#development-scripts) + - 💵[Backers](#backers) + - 💸[Sponsors](#sponsors) ## Getting Started First install storybook: ```sh -npm i -g @storybook/cli cd my-react-app -getstorybook +npx -p @storybook/cli@alpha sb init ``` -The `-g` global install is used to run our cli tool in your project directory to generate templates for your existing projects. To avoid the global install and start your project manually, take a look at our [Slow Start Guide](https://storybook.js.org/basics/slow-start-guide/). +If you'd rather set up your project manually, take a look at our [Slow Start Guide](https://storybook.js.org/basics/slow-start-guide/). Once it's installed, you can `npm run storybook` and it will run the development server on your local machine, and give you a URL to browse some sample stories. -**Storybook v2.x migration note**: If you're using Storybook v2.x and want to shift to 3.x version the easiest way is: +**Storybook v2.x migration note**: If you're using Storybook v2.x and want to shift to 4.x version the easiest way is: ```sh -npm i -g @storybook/cli cd my-storybook-v2-app -getstorybook +npx -p @storybook/cli@alpha sb init ``` It runs a codemod to update all package names. Read all migration details in our [Migration Guide](MIGRATION.md) @@ -79,44 +79,44 @@ For additional help, join us [in our Slack](https://now-examples-slackin-rrirkqo ### Supported Frameworks -| Framework | Demo latest | Demo prerelease | | -|----|---|---|---| -| [React](app/react) | [v3.4.x](https://release-3-4--storybooks-official.netlify.com), [v3.3.x](https://release-3-3--storybooks-official.netlify.com) | [v4.0.0-alpha](https://storybooks-official.netlify.com) | [![React](https://img.shields.io/npm/dt/@storybook/react.svg)](app/react) | -| [React Native](app/react-native) | - | - | [![React Native](https://img.shields.io/npm/dt/@storybook/react-native.svg)](app/react-native) | -| [Vue](app/vue) | [v3.4.x](https://release-3-4--storybooks-vue.netlify.com/), [v3.3.x](https://release-3-3--storybooks-vue.netlify.com/) | [v4.0.0-alpha](https://storybooks-vue.netlify.com/) | [![Vue](https://img.shields.io/npm/dt/@storybook/vue.svg)](app/vue) | -| [Angular](app/angular) | [v3.4.x](https://release-3-4--storybooks-angular.netlify.com/), [v3.3.x](https://release-3-3--storybooks-angular.netlify.com/) | [v4.0.0-alpha](https://storybooks-angular.netlify.com/) | [![Angular](https://img.shields.io/npm/dt/@storybook/angular.svg)](app/angular) | -| [Polymer](app/polymer) | [v3.4.x](https://release-3-4--storybooks-polymer.netlify.com/) | [v4.0.0-alpha](https://storybooks-polymer.netlify.com/) | [![Polymer](https://img.shields.io/npm/dt/@storybook/polymer.svg)](app/polymer) | -| [Mithril](app/mithril) alpha | - | [v4.0.0-alpha](https://storybooks-mithril.netlify.com/) | [![Mithril](https://img.shields.io/npm/dt/@storybook/mithril.svg)](app/mithril) | -| [Marko](app/marko) alpha | - | [v4.0.0-alpha](https://storybooks-marko.netlify.com/) | [![Marko](https://img.shields.io/npm/dt/@storybook/marko.svg)](app/marko) | -| [HTML](app/html) alpha | - | [v4.0.0-alpha](https://storybooks-html.netlify.com/) | [![HTML](https://img.shields.io/npm/dt/@storybook/html.svg)](app/html) | -| [Svelte](app/svelte) alpha | - | [v4.0.0-alpha](https://storybooks-svelte.netlify.com/) | [![Svelte](https://img.shields.io/npm/dt/@storybook/svelte.svg)](app/svelte) | -| [Riot](app/riot) alpha | - | [v4.0.0-alpha](https://storybooks-riot.netlify.com/) | [![Riot](https://img.shields.io/npm/dt/@storybook/riot.svg)](app/riot) | -| [Ember](app/ember) | - | [v4.0.0-alpha](https://storybooks-ember.netlify.com/) | [![Ember](https://img.shields.io/npm/dt/@storybook/ember.svg)](app/ember) | +| Framework | Demo latest | Demo prerelease | | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| [React](app/react) | [v3.4.x](https://release-3-4--storybooks-official.netlify.com), [v3.3.x](https://release-3-3--storybooks-official.netlify.com) | [v4.0.0-alpha](https://storybooks-official.netlify.com) | [![React](https://img.shields.io/npm/dt/@storybook/react.svg)](app/react) | +| [React Native](app/react-native) | - | - | [![React Native](https://img.shields.io/npm/dt/@storybook/react-native.svg)](app/react-native) | +| [Vue](app/vue) | [v3.4.x](https://release-3-4--storybooks-vue.netlify.com/), [v3.3.x](https://release-3-3--storybooks-vue.netlify.com/) | [v4.0.0-alpha](https://storybooks-vue.netlify.com/) | [![Vue](https://img.shields.io/npm/dt/@storybook/vue.svg)](app/vue) | +| [Angular](app/angular) | [v3.4.x](https://release-3-4--storybooks-angular.netlify.com/), [v3.3.x](https://release-3-3--storybooks-angular.netlify.com/) | [v4.0.0-alpha](https://storybooks-angular.netlify.com/) | [![Angular](https://img.shields.io/npm/dt/@storybook/angular.svg)](app/angular) | +| [Polymer](app/polymer) | [v3.4.x](https://release-3-4--storybooks-polymer.netlify.com/) | [v4.0.0-alpha](https://storybooks-polymer.netlify.com/) | [![Polymer](https://img.shields.io/npm/dt/@storybook/polymer.svg)](app/polymer) | +| [Mithril](app/mithril) alpha | - | [v4.0.0-alpha](https://storybooks-mithril.netlify.com/) | [![Mithril](https://img.shields.io/npm/dt/@storybook/mithril.svg)](app/mithril) | +| [Marko](app/marko) alpha | - | [v4.0.0-alpha](https://storybooks-marko.netlify.com/) | [![Marko](https://img.shields.io/npm/dt/@storybook/marko.svg)](app/marko) | +| [HTML](app/html) alpha | - | [v4.0.0-alpha](https://storybooks-html.netlify.com/) | [![HTML](https://img.shields.io/npm/dt/@storybook/html.svg)](app/html) | +| [Svelte](app/svelte) alpha | - | [v4.0.0-alpha](https://storybooks-svelte.netlify.com/) | [![Svelte](https://img.shields.io/npm/dt/@storybook/svelte.svg)](app/svelte) | +| [Riot](app/riot) alpha | - | [v4.0.0-alpha](https://storybooks-riot.netlify.com/) | [![Riot](https://img.shields.io/npm/dt/@storybook/riot.svg)](app/riot) | +| [Ember](app/ember) | - | [v4.0.0-alpha](https://storybooks-ember.netlify.com/) | [![Ember](https://img.shields.io/npm/dt/@storybook/ember.svg)](app/ember) | ### Sub Projects -- [CLI](lib/cli) - Streamlined installation for a variety of app types -- [examples](examples) - Code examples to illustrate different Storybook use cases +- [CLI](lib/cli) - Streamlined installation for a variety of app types +- [examples](examples) - Code examples to illustrate different Storybook use cases ### Addons -| Addons | | -|----|---| -| [a11y](addons/a11y/) | Test components for user accessibility in Storybook | -| [actions](addons/actions/) | Log actions as users interact with components in the Storybook UI | -| [backgrounds](addons/backgrounds/) | Let users choose backgrounds in the Storybook UI | -| [centered](addons/centered/) | Center the alignment of your components within the Storybook UI | -| [events](addons/events/) | Interactively fire events to components that respond to EventEmitter | -| [graphql](addons/graphql/) | Query a GraphQL server within Storybook stories | -| [info](addons/info/) | Annotate stories with extra component usage information | -| [jest](addons/jest/) | View the results of components' unit tests in Storybook | -| [knobs](addons/knobs/) | Interactively edit component prop data in the Storybook UI | -| [links](addons/links/) | Create links between stories | -| [notes](addons/notes/) | Annotate Storybook stories with notes | -| [options](addons/options/) | Customize the Storybook UI in code | -| [storyshots](addons/storyshots/) | Easy snapshot testing for components in Storybook | -| [storysource](addons/storysource/) | View the code of your stories within the Storybook UI | -| [viewport](addons/viewport/) | Change display sizes and layouts for responsive components using Storybook | +| Addons | | +| ---------------------------------- | -------------------------------------------------------------------------- | +| [a11y](addons/a11y/) | Test components for user accessibility in Storybook | +| [actions](addons/actions/) | Log actions as users interact with components in the Storybook UI | +| [backgrounds](addons/backgrounds/) | Let users choose backgrounds in the Storybook UI | +| [centered](addons/centered/) | Center the alignment of your components within the Storybook UI | +| [events](addons/events/) | Interactively fire events to components that respond to EventEmitter | +| [graphql](addons/graphql/) | Query a GraphQL server within Storybook stories | +| [info](addons/info/) | Annotate stories with extra component usage information | +| [jest](addons/jest/) | View the results of components' unit tests in Storybook | +| [knobs](addons/knobs/) | Interactively edit component prop data in the Storybook UI | +| [links](addons/links/) | Create links between stories | +| [notes](addons/notes/) | Annotate Storybook stories with notes | +| [options](addons/options/) | Customize the Storybook UI in code | +| [storyshots](addons/storyshots/) | Easy snapshot testing for components in Storybook | +| [storysource](addons/storysource/) | View the code of your stories within the Storybook UI | +| [viewport](addons/viewport/) | Change display sizes and layouts for responsive components using Storybook | See [Addon / Framework Support Table](ADDONS_SUPPORT.md) @@ -134,11 +134,11 @@ If you're looking for material to use in your presentation about storybook, like ## Community -- Tweeting via [@storybookjs](https://twitter.com/storybookjs) -- Blogging at [Medium](https://medium.com/storybookjs) -- Chatting on [Slack](https://now-examples-slackin-rrirkqohko.now.sh/) -- Discussions on [Discord](https://discord.gg/sMFvFsG) -- Streaming saved at [Youtube](https://www.youtube.com/channel/UCr7Quur3eIyA_oe8FNYexfg) +- Tweeting via [@storybookjs](https://twitter.com/storybookjs) +- Blogging at [Medium](https://medium.com/storybookjs) +- Chatting on [Slack](https://now-examples-slackin-rrirkqohko.now.sh/) +- Discussions on [Discord](https://discord.gg/sMFvFsG) +- Streaming saved at [Youtube](https://www.youtube.com/channel/UCr7Quur3eIyA_oe8FNYexfg) ## Contributing @@ -146,8 +146,8 @@ If you're looking for material to use in your presentation about storybook, like We welcome contributions to Storybook! -- ⇄ Pull requests and ★ Stars are always welcome. -- Read our [contributing guide](CONTRIBUTING.md) to get started. +- ⇄ Pull requests and ★ Stars are always welcome. +- Read our [contributing guide](CONTRIBUTING.md) to get started. ### Development scripts @@ -164,16 +164,16 @@ We welcome contributions to Storybook! > boolean check if code conforms to linting rules - uses remark & eslint -- `yarn lint:js` - will check js -- `yarn lint:md` - will check markdown + code samples +- `yarn lint:js` - will check js +- `yarn lint:md` - will check markdown + code samples -- `yarn lint:js --fix` - will automatically fix js +- `yarn lint:js --fix` - will automatically fix js #### `yarn test` > boolean check if unit tests all pass - uses jest -- `yarn run test --core --watch` - will run core tests in watch-mode +- `yarn run test --core --watch` - will run core tests in watch-mode ### Sponsors diff --git a/addons/a11y/package.json b/addons/a11y/package.json index edf38ccf913f..c1453c6dc7c6 100644 --- a/addons/a11y/package.json +++ b/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "a11y addon for storybook", "keywords": [ "a11y", @@ -29,11 +29,11 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/client-logger": "4.0.0-alpha.24", - "@storybook/components": "4.0.0-alpha.24", - "@storybook/core-events": "4.0.0-alpha.24", - "axe-core": "^3.0.3", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/client-logger": "4.0.0-rc.0", + "@storybook/components": "4.0.0-rc.0", + "@storybook/core-events": "4.0.0-rc.0", + "axe-core": "^3.1.2", "global": "^4.3.2", "prop-types": "^15.6.2" }, diff --git a/addons/a11y/src/components/Panel.js b/addons/a11y/src/components/Panel.js index 5378796ea181..836e3c0d2eeb 100644 --- a/addons/a11y/src/components/Panel.js +++ b/addons/a11y/src/components/Panel.js @@ -19,6 +19,12 @@ const Violations = styled.span(({ theme }) => ({ color: theme.failColor, })); +const PanelWrapper = styled.div({ + height: '100%', + overflow: 'auto', + width: '100%', +}); + class Panel extends Component { static propTypes = { active: PropTypes.bool.isRequired, @@ -78,7 +84,7 @@ class Panel extends Component { const { active } = this.props; return active ? ( -
+ RERUN TEST -
+ ) : null; } } diff --git a/addons/actions/package.json b/addons/actions/package.json index 8aa9d3f255a2..cdd5dd2feeab 100644 --- a/addons/actions/package.json +++ b/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "Action Logger addon for storybook", "keywords": [ "storybook" @@ -26,12 +26,12 @@ "@emotion/core": "^0.13.1", "@emotion/provider": "^0.11.2", "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/components": "4.0.0-alpha.24", - "@storybook/core-events": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/components": "4.0.0-rc.0", + "@storybook/core-events": "4.0.0-rc.0", "deep-equal": "^1.0.1", "global": "^4.3.2", - "lodash.isequal": "^4.5.0", + "lodash": "^4.17.11", "make-error": "^1.3.5", "prop-types": "^15.6.2", "react-inspector": "^2.3.0", diff --git a/addons/actions/src/components/ActionLogger/style.js b/addons/actions/src/components/ActionLogger/style.js index 044b2f9dece2..27097486ad95 100644 --- a/addons/actions/src/components/ActionLogger/style.js +++ b/addons/actions/src/components/ActionLogger/style.js @@ -38,5 +38,5 @@ export const Wrapper = styled.div({ flex: 1, display: 'flex', position: 'relative', - minHeight: '100%', + height: '100%', }); diff --git a/addons/actions/src/preview/withActions.js b/addons/actions/src/preview/withActions.js index 52dd7095ccba..106659b936b0 100644 --- a/addons/actions/src/preview/withActions.js +++ b/addons/actions/src/preview/withActions.js @@ -1,6 +1,6 @@ // Based on http://backbonejs.org/docs/backbone.html#section-164 import { document, Element } from 'global'; -import isEqual from 'lodash.isequal'; +import isEqual from 'lodash/isEqual'; import addons from '@storybook/addons'; import Events from '@storybook/core-events'; diff --git a/addons/backgrounds/package.json b/addons/backgrounds/package.json index b3cb12196d37..87ee5a41970d 100644 --- a/addons/backgrounds/package.json +++ b/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "A storybook addon to show different backgrounds for your preview", "keywords": [ "addon", @@ -28,8 +28,8 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/core-events": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/core-events": "4.0.0-rc.0", "global": "^4.3.2", "prop-types": "^15.6.2", "util-deprecate": "^1.0.2" diff --git a/addons/centered/package.json b/addons/centered/package.json index e11664b8edad..72812b265320 100644 --- a/addons/centered/package.json +++ b/addons/centered/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-centered", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "Storybook decorator to center components", "keywords": [ "addon", diff --git a/addons/events/package.json b/addons/events/package.json index 5c3823d66e59..15de00882395 100644 --- a/addons/events/package.json +++ b/addons/events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-events", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "Add events to your Storybook stories.", "keywords": [ "addon", @@ -27,8 +27,8 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/core-events": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/core-events": "4.0.0-rc.0", "format-json": "^1.0.3", "prop-types": "^15.6.2", "react-lifecycles-compat": "^3.0.4", diff --git a/addons/google-analytics/README.md b/addons/google-analytics/README.md new file mode 100644 index 000000000000..71163d0b7cac --- /dev/null +++ b/addons/google-analytics/README.md @@ -0,0 +1,25 @@ +# Storybook Addon Google Analytics + +Storybook Addon Google Analytics can be used to support google analytics in [Storybook](https://storybook.js.org). + +[Framework Support](https://github.com/storybooks/storybook/blob/master/ADDONS_SUPPORT.md) + +## Getting Started + +Install: + +```sh +npm i -D @storybook/addon-google-analytics +``` + +Then, add following content to `.storybook/addons.js` + +```js +import '@storybook/addon-google-analytics/register'; +``` + +Then, set an environment variable + +``` +window.STORYBOOK_GA_ID = UA-000000-01 +``` diff --git a/addons/google-analytics/package.json b/addons/google-analytics/package.json new file mode 100644 index 000000000000..1781c9dd2dcc --- /dev/null +++ b/addons/google-analytics/package.json @@ -0,0 +1,31 @@ +{ + "name": "@storybook/addon-google-analytics", + "version": "4.0.0-rc.0", + "description": "Storybook addon for google analytics", + "keywords": [ + "addon", + "storybook" + ], + "publishConfig": { + "access": "public" + }, + "homepage": "https://github.com/storybooks/storybook/tree/master/addons/google-analytics", + "bugs": { + "url": "https://github.com/storybooks/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybooks/storybook.git" + }, + "license": "MIT", + "main": "dist/index.js", + "jsnext:main": "src/index.js", + "scripts": { + "prepare": "node ../../scripts/prepare.js" + }, + "dependencies": { + "@storybook/addons": "4.0.0-rc.0", + "global": "^4.3.2", + "react-ga": "^2.5.3" + } +} diff --git a/addons/google-analytics/src/index.js b/addons/google-analytics/src/index.js new file mode 100644 index 000000000000..ff8b4c56321a --- /dev/null +++ b/addons/google-analytics/src/index.js @@ -0,0 +1 @@ +export default {}; diff --git a/addons/google-analytics/src/register.js b/addons/google-analytics/src/register.js new file mode 100644 index 000000000000..921dcb64542d --- /dev/null +++ b/addons/google-analytics/src/register.js @@ -0,0 +1,17 @@ +import addons from '@storybook/addons'; +import { window } from 'global'; +import ReactGA from 'react-ga'; + +addons.register('storybook/google-analytics', api => { + ReactGA.initialize(window.STORYBOOK_GA_ID); + + api.onStory((kind, story) => { + let path = window.location.pathname; + + if (path === '/') { + path = ''; + } + + ReactGA.pageview(`${path}/${kind}/${story}`); + }); +}); diff --git a/addons/graphql/package.json b/addons/graphql/package.json index b87efeadabf0..78edad53916d 100644 --- a/addons/graphql/package.json +++ b/addons/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-graphql", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "Storybook addon to display the GraphiQL IDE", "keywords": [ "addon", @@ -25,8 +25,8 @@ }, "dependencies": { "global": "^4.3.2", - "graphiql": "^0.11.11", - "graphql": "^0.13.2", + "graphiql": "^0.12.0", + "graphql": "^14.0.2", "prop-types": "^15.6.2" }, "peerDependencies": { diff --git a/addons/info/package.json b/addons/info/package.json index 89ae42352c1a..ee87733cfafd 100644 --- a/addons/info/package.json +++ b/addons/info/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-info", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "A Storybook addon to show additional information for your stories.", "keywords": [ "addon", @@ -25,12 +25,12 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/client-logger": "4.0.0-alpha.24", - "@storybook/components": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/client-logger": "4.0.0-rc.0", + "@storybook/components": "4.0.0-rc.0", "core-js": "2.5.7", "global": "^4.3.2", - "marksy": "^6.0.3", + "marksy": "^6.1.0", "nested-object-assign": "^1.0.1", "prop-types": "^15.6.2", "react-addons-create-fragment": "^15.5.3", @@ -38,7 +38,7 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "react-test-renderer": "^16.4.2" + "react-test-renderer": "^16.5.2" }, "peerDependencies": { "react": "*" diff --git a/addons/info/src/components/__snapshots__/PropTable.test.js.snap b/addons/info/src/components/__snapshots__/PropTable.test.js.snap index f5265c8e8236..d527b2a29c7c 100644 --- a/addons/info/src/components/__snapshots__/PropTable.test.js.snap +++ b/addons/info/src/components/__snapshots__/PropTable.test.js.snap @@ -26,47 +26,47 @@ Array [ `; exports[`PropTable multiLineText should include all propTypes by default 1`] = ` - + - property - - + - foo - - + - +
propType - - + required - - + default - - + description - +
@@ -78,21 +78,21 @@ exports[`PropTable multiLineText should include all propTypes by default 1`] = ` } } /> - - + - - - + - - - +
`; diff --git a/addons/jest/package.json b/addons/jest/package.json index cadef6fb0d49..694a51051aaa 100644 --- a/addons/jest/package.json +++ b/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -31,10 +31,11 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/components": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/components": "4.0.0-rc.0", "global": "^4.3.2", "prop-types": "^15.6.2", + "upath": "^1.1.0", "util-deprecate": "^1.0.2" }, "peerDependencies": { diff --git a/addons/jest/src/index.js b/addons/jest/src/index.js index d81861983d3d..e722722b463e 100644 --- a/addons/jest/src/index.js +++ b/addons/jest/src/index.js @@ -1,17 +1,18 @@ import addons from '@storybook/addons'; import deprecate from 'util-deprecate'; +import { normalize } from 'upath'; -const findTestResults = (testFiles, jestTestResults, jestTestFilesExt) => +const findTestResults = (testFiles, jestTestResults, jestTestFilesOptions) => Object.values(testFiles).map(name => { + const fileName = `${name}${jestTestFilesOptions.filesExt}`; if (jestTestResults && jestTestResults.testResults) { return { + fileName, name, - result: jestTestResults.testResults.find(t => - new RegExp(`${name}${jestTestFilesExt}`).test(t.name) - ), + result: jestTestResults.testResults.find(t => normalize(t.name).includes(fileName)), }; } - return { name }; + return { fileName, name }; }); const emitAddTests = ({ kind, story, testFiles, options }) => { diff --git a/addons/jest/src/register.js b/addons/jest/src/register.js index af1b48f6ca50..da8bec609579 100644 --- a/addons/jest/src/register.js +++ b/addons/jest/src/register.js @@ -7,7 +7,7 @@ import Panel from './components/Panel'; addons.register('storybook/tests', api => { const channel = addons.getChannel(); addons.addPanel('storybook/tests/panel', { - title: () => , + title: () => , // eslint-disable-next-line react/prop-types render: ({ active }) => , }); diff --git a/addons/knobs/package.json b/addons/knobs/package.json index d1584a3d90ff..b76080995ca3 100644 --- a/addons/knobs/package.json +++ b/addons/knobs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-knobs", - "version": "4.0.0-alpha.24", + "version": "4.0.0-rc.0", "description": "Storybook Addon Prop Editor Component", "keywords": [ "addon", @@ -25,9 +25,9 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.0.0-alpha.24", - "@storybook/components": "4.0.0-alpha.24", - "@storybook/core-events": "4.0.0-alpha.24", + "@storybook/addons": "4.0.0-rc.0", + "@storybook/components": "4.0.0-rc.0", + "@storybook/core-events": "4.0.0-rc.0", "copy-to-clipboard": "^3.0.8", "escape-html": "^1.0.3", "fast-deep-equal": "^2.0.1", @@ -35,7 +35,6 @@ "prop-types": "^15.6.2", "qs": "^6.5.2", "react-color": "^2.14.1", - "react-datetime": "^2.15.0", "react-lifecycles-compat": "^3.0.4", "util-deprecate": "^1.0.2" }, diff --git a/addons/knobs/src/components/Panel.js b/addons/knobs/src/components/Panel.js index 4c5f2f069420..560c5c759979 100644 --- a/addons/knobs/src/components/Panel.js +++ b/addons/knobs/src/components/Panel.js @@ -15,6 +15,8 @@ const getTimestamp = () => +new Date(); const DEFAULT_GROUP_ID = 'ALL'; const PanelWrapper = styled.div({ + height: '100%', + overflow: 'auto', width: '100%', }); diff --git a/addons/knobs/src/components/types/Array.js b/addons/knobs/src/components/types/Array.js index 85cc608bccd2..91899e80d63c 100644 --- a/addons/knobs/src/components/types/Array.js +++ b/addons/knobs/src/components/types/Array.js @@ -28,7 +28,9 @@ class ArrayType extends React.Component { render() { const { knob } = this.props; - return