Use state instead of component hand-down for managing filter
This commit is contained in:
@@ -10,12 +10,11 @@ export default class BaseLayout extends React.Component {
|
|||||||
specSelectors: PropTypes.object.isRequired,
|
specSelectors: PropTypes.object.isRequired,
|
||||||
layoutSelectors: PropTypes.object.isRequired,
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
layoutActions: PropTypes.object.isRequired,
|
layoutActions: PropTypes.object.isRequired,
|
||||||
getComponent: PropTypes.func.isRequired,
|
getComponent: PropTypes.func.isRequired
|
||||||
filter: PropTypes.string.isRequired
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { specSelectors, specActions, getComponent, filter } = this.props
|
let { specSelectors, specActions, getComponent } = this.props
|
||||||
|
|
||||||
let info = specSelectors.info()
|
let info = specSelectors.info()
|
||||||
let url = specSelectors.url()
|
let url = specSelectors.url()
|
||||||
@@ -67,7 +66,7 @@ export default class BaseLayout extends React.Component {
|
|||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col mobile={12} desktop={12} >
|
<Col mobile={12} desktop={12} >
|
||||||
<Operations filter={ filter }/>
|
<Operations/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Row>
|
<Row>
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ export default class Operations extends React.Component {
|
|||||||
authActions,
|
authActions,
|
||||||
authSelectors,
|
authSelectors,
|
||||||
getConfigs,
|
getConfigs,
|
||||||
filter,
|
|
||||||
fn
|
fn
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
@@ -37,6 +36,8 @@ export default class Operations extends React.Component {
|
|||||||
let showSummary = layoutSelectors.showSummary()
|
let showSummary = layoutSelectors.showSummary()
|
||||||
let { docExpansion, displayOperationId, displayRequestDuration, maxDisplayedTags } = getConfigs()
|
let { docExpansion, displayOperationId, displayRequestDuration, maxDisplayedTags } = getConfigs()
|
||||||
|
|
||||||
|
let filter = layoutSelectors.currentFilter()
|
||||||
|
|
||||||
if (filter) {
|
if (filter) {
|
||||||
if (filter !== true) {
|
if (filter !== true) {
|
||||||
taggedOps = taggedOps.filter((tagObj, tag) => {
|
taggedOps = taggedOps.filter((tagObj, tag) => {
|
||||||
|
|||||||
@@ -52,7 +52,9 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
store: { },
|
store: { },
|
||||||
}
|
}
|
||||||
|
|
||||||
const constructorConfig = deepExtend({}, defaults, opts)
|
let queryConfig = parseSeach()
|
||||||
|
|
||||||
|
const constructorConfig = deepExtend({}, defaults, opts, queryConfig)
|
||||||
|
|
||||||
const storeConfigs = deepExtend({}, constructorConfig.store, {
|
const storeConfigs = deepExtend({}, constructorConfig.store, {
|
||||||
system: {
|
system: {
|
||||||
@@ -83,7 +85,6 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
store.register([constructorConfig.plugins, inlinePlugin])
|
store.register([constructorConfig.plugins, inlinePlugin])
|
||||||
|
|
||||||
var system = store.getSystem()
|
var system = store.getSystem()
|
||||||
let queryConfig = parseSeach()
|
|
||||||
|
|
||||||
system.initOAuth = system.authActions.configureAuth
|
system.initOAuth = system.authActions.configureAuth
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import Logo from "./logo_small.png"
|
|||||||
export default class Topbar extends React.Component {
|
export default class Topbar extends React.Component {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
onFilterChange: PropTypes.func.isRequired,
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
filter: PropTypes.string.isRequired
|
layoutActions: PropTypes.object.isRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props, context) {
|
constructor(props, context) {
|
||||||
@@ -87,17 +87,17 @@ export default class Topbar extends React.Component {
|
|||||||
|
|
||||||
onFilterChange =(e) => {
|
onFilterChange =(e) => {
|
||||||
let {target: {value}} = e
|
let {target: {value}} = e
|
||||||
this.props.onFilterChange(value)
|
this.props.layoutActions.updateFilter(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { getComponent, specSelectors, getConfigs } = this.props
|
let { getComponent, specSelectors, getConfigs, layoutSelectors } = this.props
|
||||||
const Button = getComponent("Button")
|
const Button = getComponent("Button")
|
||||||
const Link = getComponent("Link")
|
const Link = getComponent("Link")
|
||||||
|
|
||||||
let isLoading = specSelectors.loadingStatus() === "loading"
|
let isLoading = specSelectors.loadingStatus() === "loading"
|
||||||
let isFailed = specSelectors.loadingStatus() === "failed"
|
let isFailed = specSelectors.loadingStatus() === "failed"
|
||||||
let filter = this.props.filter
|
let filter = layoutSelectors.currentFilter()
|
||||||
|
|
||||||
let inputStyle = {}
|
let inputStyle = {}
|
||||||
if(isFailed) inputStyle.color = "red"
|
if(isFailed) inputStyle.color = "red"
|
||||||
|
|||||||
@@ -10,23 +10,7 @@ export default class StandaloneLayout extends React.Component {
|
|||||||
specSelectors: PropTypes.object.isRequired,
|
specSelectors: PropTypes.object.isRequired,
|
||||||
layoutSelectors: PropTypes.object.isRequired,
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
layoutActions: PropTypes.object.isRequired,
|
layoutActions: PropTypes.object.isRequired,
|
||||||
getComponent: PropTypes.func.isRequired,
|
getComponent: PropTypes.func.isRequired
|
||||||
getConfigs: PropTypes.func.isRequired
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(props) {
|
|
||||||
super(props)
|
|
||||||
|
|
||||||
this.handleFilterChange = this.handleFilterChange.bind(this)
|
|
||||||
|
|
||||||
let { getConfigs } = this.props
|
|
||||||
let { filter } = getConfigs()
|
|
||||||
|
|
||||||
this.state = { filter: filter }
|
|
||||||
}
|
|
||||||
|
|
||||||
handleFilterChange(filter) {
|
|
||||||
this.setState({ filter: filter })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -40,14 +24,12 @@ export default class StandaloneLayout extends React.Component {
|
|||||||
const BaseLayout = getComponent("BaseLayout", true)
|
const BaseLayout = getComponent("BaseLayout", true)
|
||||||
const OnlineValidatorBadge = getComponent("onlineValidatorBadge", true)
|
const OnlineValidatorBadge = getComponent("onlineValidatorBadge", true)
|
||||||
|
|
||||||
const filter = this.state.filter
|
|
||||||
|
|
||||||
const loadingStatus = specSelectors.loadingStatus()
|
const loadingStatus = specSelectors.loadingStatus()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<Container className='swagger-ui'>
|
<Container className='swagger-ui'>
|
||||||
{ Topbar ? <Topbar onFilterChange={this.handleFilterChange} filter={ filter } /> : null }
|
{ Topbar ? <Topbar /> : null }
|
||||||
{ loadingStatus === "loading" &&
|
{ loadingStatus === "loading" &&
|
||||||
<div className="info">
|
<div className="info">
|
||||||
<h4 className="title">Loading...</h4>
|
<h4 className="title">Loading...</h4>
|
||||||
@@ -63,7 +45,7 @@ export default class StandaloneLayout extends React.Component {
|
|||||||
<h4 className="title">Failed to load config.</h4>
|
<h4 className="title">Failed to load config.</h4>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{ !loadingStatus || loadingStatus === "success" && <BaseLayout filter={filter} /> }
|
{ !loadingStatus || loadingStatus === "success" && <BaseLayout /> }
|
||||||
<Row>
|
<Row>
|
||||||
<Col>
|
<Col>
|
||||||
<OnlineValidatorBadge />
|
<OnlineValidatorBadge />
|
||||||
|
|||||||
Reference in New Issue
Block a user