@carbon/ibm-security
Version:
Carbon for Cloud & Cognitive IBM Security UI components
140 lines (139 loc) • 5.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _readOnlyError2 = _interopRequireDefault(require("@babel/runtime/helpers/readOnlyError"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = require("react");
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /**
* @file Panel.
* @copyright IBM Security 2019
*/
/**
* Panel component.
* @param {Record<string, any>} props Panel props.
* @returns {Panel} Panel instance.
*/
var Panel = exports.default = /*#__PURE__*/function (_Component) {
function Panel() {
var _this;
(0, _classCallCheck2.default)(this, Panel);
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
_args[_key] = arguments[_key];
}
_this = _callSuper(this, Panel, [].concat(_args));
(0, _defineProperty2.default)(_this, "state", {
active: false
});
/**
* Handles when the panel has been requested to close.
* @param {Event} event Event object generated from close request.
* @param {...any} args The arguments passed via render props.
*/
(0, _defineProperty2.default)(_this, "handleClose", function (event) {
event.stopPropagation();
if (_this.state.active) {
var _this$props;
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
(_this$props = _this.props).onClose.apply(_this$props, [event].concat(args));
_this.setState({
active: false
});
}
});
/**
* Handles when the panel has been requested to open.
* @param {Event} event Event object generated from open request.
* @param {...any} args The arguments passed via render props.
*/
(0, _defineProperty2.default)(_this, "handleOpen", function (event) {
event.stopPropagation();
if (!_this.state.active) {
var _this$props2;
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
(_this$props2 = _this.props).onOpen.apply(_this$props2, [event].concat(args));
_this.setState({
active: true
});
}
});
/**
* Handles when the panel has been requested to toggle.
* @param {Event} event Event object generated from toggle request.
* @param {...any} args The arguments passed via render props.
*/
(0, _defineProperty2.default)(_this, "toggleActive", function (event) {
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
if (_this.state.active) {
var _this$props3;
(_this$props3 = _this.props).onClose.apply(_this$props3, [event].concat(args));
_this.setState({
active: !_this.state.active
});
} else if (_this.props.shouldPanelOpen) {
var _this$props4;
(_this$props4 = _this.props).onOpen.apply(_this$props4, [event].concat(args));
_this.setState({
active: !_this.state.active
});
}
});
return _this;
}
(0, _inherits2.default)(Panel, _Component);
return (0, _createClass2.default)(Panel, [{
key: "render",
value: function render() {
var _this$props5 = this.props,
children = _this$props5.children,
render = _this$props5.render;
var renderProps = {
active: this.state.active,
handleClose: this.handleClose,
handleOpen: this.handleOpen,
toggleActive: this.toggleActive
};
if (render !== undefined) {
return render(renderProps);
}
if (children !== undefined) {
return children(renderProps);
}
return null;
}
}]);
}(_react.Component);
(0, _defineProperty2.default)(Panel, "propTypes", {
/** @type {Node} Child elements. */
children: _propTypes.default.node,
/** @type {function(...args)} Function to call when the panel closes. */
onClose: _propTypes.default.func,
/** @type {function(...args)} Function to call when the panel opens. */
onOpen: _propTypes.default.func,
/** @type {function(...props)} Render function for the contents of the table. */
render: _propTypes.default.func,
/** @type {bool} specifies whether the Panel should open or not */
shouldPanelOpen: _propTypes.default.bool
});
(0, _defineProperty2.default)(Panel, "defaultProps", {
children: undefined,
onClose: function onClose() {},
onOpen: function onOpen() {},
render: undefined,
shouldPanelOpen: true
});