UNPKG

@wordpress/components

Version:
73 lines (71 loc) 1.47 kB
"use strict"; 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