UNPKG

2.64 kBJavaScriptView Raw
1import _extends from "@babel/runtime-corejs2/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose";
3import _inheritsLoose from "@babel/runtime-corejs2/helpers/esm/inheritsLoose";
4import classNames from 'classnames';
5import PropTypes from 'prop-types';
6import React from 'react';
7import { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';
8import createChainedFunction from './utils/createChainedFunction';
9import CloseButton from './CloseButton'; // TODO: `aria-label` should be `closeLabel`.
10
11var propTypes = {
12 /**
13 * Provides an accessible label for the close
14 * button. It is used for Assistive Technology when the label text is not
15 * readable.
16 */
17 closeLabel: PropTypes.string,
18
19 /**
20 * Specify whether the Component should contain a close button
21 */
22 closeButton: PropTypes.bool,
23
24 /**
25 * A Callback fired when the close button is clicked. If used directly inside
26 * a Modal component, the onHide will automatically be propagated up to the
27 * parent Modal `onHide`.
28 */
29 onHide: PropTypes.func
30};
31var defaultProps = {
32 closeLabel: 'Close',
33 closeButton: false
34};
35var contextTypes = {
36 $bs_modal: PropTypes.shape({
37 onHide: PropTypes.func
38 })
39};
40
41var ModalHeader =
42/*#__PURE__*/
43function (_React$Component) {
44 _inheritsLoose(ModalHeader, _React$Component);
45
46 function ModalHeader() {
47 return _React$Component.apply(this, arguments) || this;
48 }
49
50 var _proto = ModalHeader.prototype;
51
52 _proto.render = function render() {
53 var _this$props = this.props,
54 closeLabel = _this$props.closeLabel,
55 closeButton = _this$props.closeButton,
56 onHide = _this$props.onHide,
57 className = _this$props.className,
58 children = _this$props.children,
59 props = _objectWithoutPropertiesLoose(_this$props, ["closeLabel", "closeButton", "onHide", "className", "children"]);
60
61 var modal = this.context.$bs_modal;
62
63 var _splitBsProps = splitBsProps(props),
64 bsProps = _splitBsProps[0],
65 elementProps = _splitBsProps[1];
66
67 var classes = getClassSet(bsProps);
68 return React.createElement("div", _extends({}, elementProps, {
69 className: classNames(className, classes)
70 }), closeButton && React.createElement(CloseButton, {
71 label: closeLabel,
72 onClick: createChainedFunction(modal && modal.onHide, onHide)
73 }), children);
74 };
75
76 return ModalHeader;
77}(React.Component);
78
79ModalHeader.propTypes = propTypes;
80ModalHeader.defaultProps = defaultProps;
81ModalHeader.contextTypes = contextTypes;
82export default bsClass('modal-header', ModalHeader);
\No newline at end of file