From cf80839d11399702c20b92908e22d2bf7354208a Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Fri, 14 Apr 2017 18:38:59 -0700 Subject: [PATCH] Add BaseLayout to core --- src/core/components/layouts/base.jsx | 92 ++++++++++++++++++++++++++++ src/core/index.js | 2 +- src/core/presets/base.js | 3 + 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/core/components/layouts/base.jsx diff --git a/src/core/components/layouts/base.jsx b/src/core/components/layouts/base.jsx new file mode 100644 index 00000000..e4198e2a --- /dev/null +++ b/src/core/components/layouts/base.jsx @@ -0,0 +1,92 @@ +import React, { PropTypes } from "react" + +export default class BaseLayout extends React.Component { + + static propTypes = { + errSelectors: PropTypes.object.isRequired, + errActions: PropTypes.object.isRequired, + specActions: PropTypes.object.isRequired, + specSelectors: PropTypes.object.isRequired, + layoutSelectors: PropTypes.object.isRequired, + layoutActions: PropTypes.object.isRequired, + getComponent: PropTypes.func.isRequired + } + + render() { + let { specSelectors, specActions, getComponent } = this.props + + let info = specSelectors.info() + let url = specSelectors.url() + let basePath = specSelectors.basePath() + let host = specSelectors.host() + let securityDefinitions = specSelectors.securityDefinitions() + let externalDocs = specSelectors.externalDocs() + let schemes = specSelectors.schemes() + + let Info = getComponent("info") + let Operations = getComponent("operations", true) + let Models = getComponent("models", true) + let AuthorizeBtn = getComponent("authorizeBtn", true) + let Row = getComponent("Row") + let Col = getComponent("Col") + let Errors = getComponent("errors", true) + const Schemes = getComponent("schemes") + + const loadingStatus = specSelectors.loadingStatus() + + return ( + +
+ { loadingStatus === "loading" && +
+

Loading...

+
+ } + { loadingStatus === "failed" && +
+

Failed to load spec.

+
+ } + { loadingStatus === "failedConfig" && +
+

Failed to load config.

+
+ } + { loadingStatus === "success" && +
+ + + + { info.count() ? ( + + ) : null } + + + { schemes && schemes.size || securityDefinitions ? ( +
+ + { schemes && schemes.size ? ( + + ) : null } + { securityDefinitions ? ( + + ) : null } + +
+ ) : null } + + + + + + + + + + + +
} +
+ ) + } + } diff --git a/src/core/index.js b/src/core/index.js index 61945740..c6bfe951 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -13,7 +13,7 @@ module.exports = function SwaggerUI(opts) { dom_id: null, spec: {}, url: "", - layout: "Layout", + layout: "BaseLayout", validatorUrl: "https://online.swagger.io/validator", configs: { }, diff --git a/src/core/presets/base.js b/src/core/presets/base.js index 2c864915..9b69163d 100644 --- a/src/core/presets/base.js +++ b/src/core/presets/base.js @@ -46,6 +46,8 @@ import Model from "core/components/model" import Models from "core/components/models" import TryItOutButton from "core/components/try-it-out-button" +import BaseLayout from "core/components/layouts/base" + import * as LayoutUtils from "core/components/layout-utils" import * as JsonSchemaComponents from "core/json-schema-components" @@ -87,6 +89,7 @@ export default function() { model: Model, models: Models, TryItOutButton, + BaseLayout } }