UNPKG

@carbon/ibm-cloud-cognitive-cdai

Version:
150 lines (149 loc) 7.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _carbonComponentsReact = require("carbon-components-react"); var _iconsReact = require("@carbon/icons-react"); var _A11yHelper = require("../../component_helpers/A11yHelper"); var _focusTrapReact = _interopRequireDefault(require("focus-trap-react")); var _settings = require("../../globals/js/settings"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // // Copyright IBM Corp. 2020, 2020 // // This source code is licensed under the Apache-2.0 license found in the // LICENSE file in the root directory of this source tree. // var IdeSlideOverPanel = function IdeSlideOverPanel(_ref) { var open = _ref.open, size = _ref.size, title = _ref.title, onClose = _ref.onClose, onOverlayClose = _ref.onOverlayClose, className = _ref.className, children = _ref.children, danger = _ref.danger, closeButtonIconDescription = _ref.closeButtonIconDescription, controls = _ref.controls, footer = _ref.footer, onPrimaryClick = _ref.onPrimaryClick, onSecondaryClick = _ref.onSecondaryClick, secondaryButtonText = _ref.secondaryButtonText, primaryButtonDisabled = _ref.primaryButtonDisabled, secondaryButtonDisabled = _ref.secondaryButtonDisabled, primaryButtonText = _ref.primaryButtonText, primaryButtonIcon = _ref.primaryButtonIcon, secondaryButtonIcon = _ref.secondaryButtonIcon, withOverlay = _ref.withOverlay, focusTrapOptions = _ref.focusTrapOptions; size = size || 'small'; var classes = "".concat(_settings.idePrefix, "-slide-over-panel ").concat(_settings.idePrefix, "-slide-over-panel--") + size + (className ? ' ' + className : '') + (open ? " ".concat(_settings.idePrefix, "-slide-over-panel--open") : ''); var overlayClasses = "".concat(_settings.idePrefix, "-slide-over-overlay") + (open ? " ".concat(_settings.idePrefix, "-slide-over-overlay--open") : ''); var panelFooter = controls && /*#__PURE__*/_react.default.createElement("div", { className: "".concat(_settings.idePrefix, "-slide-over-panel--footer") }, footer, /*#__PURE__*/_react.default.createElement("div", { className: "".concat(_settings.idePrefix, "-slide-over-panel--footer-content") }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, { kind: "secondary", className: "".concat(_settings.idePrefix, "-slide-over-panel--secondary"), disabled: secondaryButtonDisabled, renderIcon: secondaryButtonIcon, onClick: onSecondaryClick }, secondaryButtonText), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, { className: "".concat(_settings.idePrefix, "-slide-over-panel--primary"), kind: danger ? 'danger' : 'primary', disabled: primaryButtonDisabled, renderIcon: primaryButtonIcon, onClick: onPrimaryClick }, primaryButtonText))); var panelContents = /*#__PURE__*/_react.default.createElement("aside", { className: classes }, /*#__PURE__*/_react.default.createElement("div", { className: "".concat(_settings.idePrefix, "-slide-over-panel--contents") }, /*#__PURE__*/_react.default.createElement("header", null, /*#__PURE__*/_react.default.createElement("h3", null, title), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, { className: "".concat(_settings.idePrefix, "-slide-over-panel--close"), disabled: false, hasIconOnly: true, iconDescription: closeButtonIconDescription, kind: "ghost", onClick: onClose, renderIcon: _iconsReact.Close16, size: "default", tooltipAlignment: "center", tooltipPosition: "bottom", type: "button" })), /*#__PURE__*/_react.default.createElement("div", { className: "".concat(_settings.idePrefix, "-slide-over-panel--children") }, children), panelFooter)); if (withOverlay) { var interactions = (0, _A11yHelper.createInteractionHandler)(onOverlayClose || onClose); var defaultFocusTrapOptions = { escapeDeactivates: false, clickOutsideDeactivates: true }; var mergedFocusTrapOptions = _objectSpread(_objectSpread({}, defaultFocusTrapOptions), focusTrapOptions); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_focusTrapReact.default, { active: !!open, focusTrapOptions: mergedFocusTrapOptions }, panelContents), /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ role: "presentation", className: overlayClasses }, interactions))); } else { return panelContents; } }; IdeSlideOverPanel.propTypes = { children: _propTypes.default.node, className: _propTypes.default.string, closeButtonIconDescription: _propTypes.default.string, controls: _propTypes.default.bool, danger: _propTypes.default.bool, focusTrapOptions: _propTypes.default.shape({ onActivate: _propTypes.default.func, onDeactivate: _propTypes.default.func, initialFocus: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.string, _propTypes.default.func]), fallbackFocus: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.string, _propTypes.default.func]), escapeDeactivates: _propTypes.default.bool, clickOutsideDeactivates: _propTypes.default.bool, returnFocusOnDeactivate: _propTypes.default.bool, setReturnFocus: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.string, _propTypes.default.func]), allowOutsideClick: _propTypes.default.func, preventScroll: _propTypes.default.bool }), footer: _propTypes.default.object, onClose: _propTypes.default.func.isRequired, onOverlayClose: _propTypes.default.func, onPrimaryClick: _propTypes.default.func, onSecondaryClick: _propTypes.default.func, open: _propTypes.default.bool, primaryButtonDisabled: _propTypes.default.bool, primaryButtonIcon: _propTypes.default.object, primaryButtonText: _propTypes.default.string, secondaryButtonDisabled: _propTypes.default.bool, secondaryButtonIcon: _propTypes.default.object, secondaryButtonText: _propTypes.default.string, size: _propTypes.default.string, title: _propTypes.default.string, withOverlay: _propTypes.default.bool }; IdeSlideOverPanel.defaultProps = { open: false, controls: false, danger: false, withOverlay: false, secondaryButtonText: 'Cancel', primaryButtonText: 'Save', closeButtonIconDescription: 'Close', focusTrapOptions: { initialFocus: '.ide-slide-over-panel--close', fallbackFocus: '.ide-slide-over-panel--close' } }; var _default = exports.default = IdeSlideOverPanel;