![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/rentpix.corals.io/vendor/swagger-api/swagger-ui/src/core/components/ |
import React, { Component } from "react" import PropTypes from "prop-types" import ImPropTypes from "react-immutable-proptypes" import Im from "immutable" export default class ModelCollapse extends Component { static propTypes = { collapsedContent: PropTypes.any, expanded: PropTypes.bool, children: PropTypes.any, title: PropTypes.element, modelName: PropTypes.string, classes: PropTypes.string, onToggle: PropTypes.func, hideSelfOnExpand: PropTypes.bool, layoutActions: PropTypes.object, layoutSelectors: PropTypes.object.isRequired, specPath: ImPropTypes.list.isRequired, } static defaultProps = { collapsedContent: "{...}", expanded: false, title: null, onToggle: () => {}, hideSelfOnExpand: false, specPath: Im.List([]), } constructor(props, context) { super(props, context) let { expanded, collapsedContent } = this.props this.state = { expanded : expanded, collapsedContent: collapsedContent || ModelCollapse.defaultProps.collapsedContent } } componentDidMount() { const { hideSelfOnExpand, expanded, modelName } = this.props if(hideSelfOnExpand && expanded) { // We just mounted pre-expanded, and we won't be going back.. // So let's give our parent an `onToggle` call.. // Since otherwise it will never be called. this.props.onToggle(modelName, expanded) } } UNSAFE_componentWillReceiveProps(nextProps){ if(this.props.expanded !== nextProps.expanded){ this.setState({expanded: nextProps.expanded}) } } toggleCollapsed=()=>{ if(this.props.onToggle){ this.props.onToggle(this.props.modelName,!this.state.expanded) } this.setState({ expanded: !this.state.expanded }) } onLoad = (ref) => { if (ref && this.props.layoutSelectors) { const scrollToKey = this.props.layoutSelectors.getScrollToKey() if( Im.is(scrollToKey, this.props.specPath) ) this.toggleCollapsed() this.props.layoutActions.readyToScroll(this.props.specPath, ref.parentElement) } } render () { const { title, classes } = this.props if(this.state.expanded ) { if(this.props.hideSelfOnExpand) { return <span className={classes || ""}> {this.props.children} </span> } } return ( <span className={classes || ""} ref={this.onLoad}> <button aria-expanded={this.state.expanded} className="model-box-control" onClick={this.toggleCollapsed}> { title && <span className="pointer">{title}</span> } <span className={ "model-toggle" + ( this.state.expanded ? "" : " collapsed" ) }></span> { !this.state.expanded && <span>{this.state.collapsedContent}</span> } </button> { this.state.expanded && this.props.children } </span> ) } }