UNPKG

@carbon/react

Version:

React components for the Carbon Design System

115 lines (110 loc) 3.47 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'; 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'); const ModalHeader = /*#__PURE__*/React.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(`${prefix}--modal-header`, customClassName); const labelClass = cx(`${prefix}--modal-header__label ${prefix}--type-delta`, labelClassName); const titleClass = cx(`${prefix}--modal-header__heading ${prefix}--type-beta`, titleClassName); const closeClass = cx(`${prefix}--modal-close`, closeClassName); const closeIconClass = cx(`${prefix}--modal-close__icon`, closeIconClassName); return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({ className: headerClass }, rest, { ref: ref }), label && /*#__PURE__*/React.createElement("h2", { className: labelClass }, label), title && /*#__PURE__*/React.createElement("h2", { className: titleClass }, title), children, /*#__PURE__*/React.createElement("div", { className: `${prefix}--modal-close-button` }, /*#__PURE__*/React.createElement(index.IconButton, { className: closeClass, label: iconDescription, onClick: handleCloseButtonClick, "aria-label": iconDescription, align: "left" }, /*#__PURE__*/React.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.func, /** * Specify the content to be placed in the ModalHeader */ children: PropTypes.node, /** * Specify an optional className to be applied to the modal header */ className: PropTypes.string, /** * Specify an optional className to be applied to the modal close node */ closeClassName: PropTypes.string, /** * Specify an optional className to be applied to the modal close icon node */ closeIconClassName: PropTypes.string, /** * Provide an optional function to be called when the modal is closed */ closeModal: PropTypes.func, /** * Specify a description for the close icon that can be read by screen * readers */ iconDescription: PropTypes.string, /** * Specify an optional label to be displayed */ label: PropTypes.string, /** * Specify an optional className to be applied to the modal header label */ labelClassName: PropTypes.string, /** * Specify an optional title to be displayed */ title: PropTypes.node, /** * Specify an optional className to be applied to the modal heading */ titleClassName: PropTypes.string }; exports.ModalHeader = ModalHeader;