@wordpress/components
Version:
UI components for WordPress.
73 lines (71 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
class Dropdown extends _element.Component {
constructor() {
super(...arguments);
this.toggle = this.toggle.bind(this);
this.close = this.close.bind(this);
this.state = {
isOpen: false
};
}
componentWillUnmount() {
const {
isOpen
} = this.state;
const {
onToggle
} = this.props;
if (isOpen && onToggle) {
onToggle(false);
}
}
componentDidUpdate(prevProps, prevState) {
const {
isOpen
} = this.state;
const {
onToggle
} = this.props;
if (prevState.isOpen !== isOpen && onToggle) {
onToggle(isOpen);
}
}
toggle() {
this.setState(state => ({
isOpen: !state.isOpen
}));
}
close() {
this.setState({
isOpen: false
});
}
render() {
const {
isOpen
} = this.state;
const {
renderContent,
renderToggle
} = this.props;
const args = {
isOpen,
onToggle: this.toggle,
onClose: this.close
};
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [renderToggle(args), isOpen && renderContent(args)]
});
}
}
var _default = exports.default = Dropdown;
//# sourceMappingURL=index.native.js.map