UNPKG

@carbon/react

Version:

React components for the Carbon Design System

123 lines (115 loc) 4.31 kB
/** * Copyright IBM Corp. 2016, 2023 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var PropTypes = require('prop-types'); var cx = require('classnames'); var iconsReact = require('@carbon/icons-react'); var usePrefix = require('../../internal/usePrefix.js'); var index = require('../IconButton/index.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); const ModalHeader = /*#__PURE__*/React__default["default"].forwardRef(function ModalHeader({ buttonOnClick, children, className: customClassName, closeClassName, closeIconClassName, closeModal, iconDescription = 'Close', label, labelClassName, title, titleClassName, ...rest }, ref) { const prefix = usePrefix.usePrefix(); function handleCloseButtonClick(evt) { closeModal?.(evt); buttonOnClick?.(evt); } const headerClass = cx__default["default"](`${prefix}--modal-header`, customClassName); const labelClass = cx__default["default"](`${prefix}--modal-header__label ${prefix}--type-delta`, labelClassName); const titleClass = cx__default["default"](`${prefix}--modal-header__heading ${prefix}--type-beta`, titleClassName); const closeClass = cx__default["default"](`${prefix}--modal-close`, closeClassName); const closeIconClass = cx__default["default"](`${prefix}--modal-close__icon`, closeIconClassName); return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({ className: headerClass }, rest, { ref: ref }), label && /*#__PURE__*/React__default["default"].createElement("h2", { className: labelClass }, label), title && /*#__PURE__*/React__default["default"].createElement("h2", { className: titleClass }, title), children, /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--modal-close-button` }, /*#__PURE__*/React__default["default"].createElement(index.IconButton, { className: closeClass, label: iconDescription, onClick: handleCloseButtonClick, "aria-label": iconDescription, align: "left" }, /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, { size: 20, "aria-hidden": "true", tabIndex: "-1", className: closeIconClass })))); }); ModalHeader.propTypes = { /** * Provide an optional function to be called when the close button is * clicked */ buttonOnClick: PropTypes__default["default"].func, /** * Specify the content to be placed in the ModalHeader */ children: PropTypes__default["default"].node, /** * Specify an optional className to be applied to the modal header */ className: PropTypes__default["default"].string, /** * Specify an optional className to be applied to the modal close node */ closeClassName: PropTypes__default["default"].string, /** * Specify an optional className to be applied to the modal close icon node */ closeIconClassName: PropTypes__default["default"].string, /** * Provide an optional function to be called when the modal is closed */ closeModal: PropTypes__default["default"].func, /** * Specify a description for the close icon that can be read by screen * readers */ iconDescription: PropTypes__default["default"].string, /** * Specify an optional label to be displayed */ label: PropTypes__default["default"].node, /** * Specify an optional className to be applied to the modal header label */ labelClassName: PropTypes__default["default"].string, /** * Specify an optional title to be displayed */ title: PropTypes__default["default"].node, /** * Specify an optional className to be applied to the modal heading */ titleClassName: PropTypes__default["default"].string }; exports.ModalHeader = ModalHeader;