UNPKG

4.7 kBJavaScriptView Raw
1import _extends from 'babel-runtime/helpers/extends';
2import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
3import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
4import _inherits from 'babel-runtime/helpers/inherits';
5
6var _class, _temp;
7
8import React, { Component } from 'react';
9import PropTypes from 'prop-types';
10import cx from 'classnames';
11import Icon from '../icon';
12import zhCN from '../locale/zh-cn';
13import { obj } from '../util';
14
15var noop = function noop() {};
16var pickOthers = obj.pickOthers;
17var Inner = (_temp = _class = function (_Component) {
18 _inherits(Inner, _Component);
19
20 function Inner() {
21 _classCallCheck(this, Inner);
22
23 return _possibleConstructorReturn(this, _Component.apply(this, arguments));
24 }
25
26 Inner.prototype.renderHeader = function renderHeader() {
27 var _cx;
28
29 var _props = this.props,
30 prefix = _props.prefix,
31 title = _props.title,
32 headerStyle = _props.headerStyle;
33
34 var closeLink = this.renderCloseLink();
35 var headerCls = cx((_cx = {}, _cx[prefix + 'drawer-header'] = true, _cx[prefix + 'drawer-no-title'] = !title, _cx));
36
37 return React.createElement(
38 'div',
39 {
40 className: headerCls,
41 style: headerStyle,
42 role: 'heading',
43 'aria-level': '1'
44 },
45 title,
46 closeLink
47 );
48 };
49
50 Inner.prototype.renderBody = function renderBody() {
51 var _props2 = this.props,
52 prefix = _props2.prefix,
53 children = _props2.children,
54 bodyStyle = _props2.bodyStyle;
55
56 if (children) {
57 return React.createElement(
58 'div',
59 { className: prefix + 'drawer-body', style: bodyStyle },
60 children
61 );
62 }
63 return null;
64 };
65
66 Inner.prototype.renderCloseLink = function renderCloseLink() {
67 var _props3 = this.props,
68 prefix = _props3.prefix,
69 closeable = _props3.closeable,
70 onClose = _props3.onClose,
71 locale = _props3.locale;
72
73
74 if (closeable) {
75 return React.createElement(
76 'a',
77 {
78 role: 'button',
79 'aria-label': locale.close,
80 className: prefix + 'drawer-close',
81 onClick: onClose
82 },
83 React.createElement(Icon, {
84 className: prefix + 'drawer-close-icon',
85 type: 'close'
86 })
87 );
88 }
89
90 return null;
91 };
92
93 Inner.prototype.render = function render() {
94 var _cx2;
95
96 var _props4 = this.props,
97 prefix = _props4.prefix,
98 className = _props4.className,
99 closeable = _props4.closeable,
100 placement = _props4.placement,
101 role = _props4.role,
102 rtl = _props4.rtl;
103
104
105 var others = pickOthers(Object.keys(Inner.propTypes), this.props);
106 var newClassName = cx((_cx2 = {}, _cx2[prefix + 'drawer'] = true, _cx2[prefix + 'drawer-' + placement] = true, _cx2[prefix + 'closeable'] = closeable, _cx2[className] = !!className, _cx2));
107
108 var ariaProps = {
109 role: role,
110 'aria-modal': 'true'
111 };
112
113 var header = this.renderHeader();
114 var body = this.renderBody();
115
116 return React.createElement(
117 'div',
118 _extends({}, ariaProps, {
119 className: newClassName
120 }, others, {
121 dir: rtl ? 'rtl' : undefined
122 }),
123 React.createElement(
124 'div',
125 { style: { height: '100%', overflow: 'auto' } },
126 header,
127 body
128 )
129 );
130 };
131
132 return Inner;
133}(Component), _class.propTypes = {
134 prefix: PropTypes.string,
135 className: PropTypes.string,
136 closeable: PropTypes.bool,
137 role: PropTypes.string,
138 title: PropTypes.node,
139 placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
140 rtl: PropTypes.bool,
141 onClose: PropTypes.func,
142 locale: PropTypes.object,
143 headerStyle: PropTypes.object,
144 bodyStyle: PropTypes.object,
145 afterClose: PropTypes.func,
146 beforeOpen: PropTypes.func,
147 beforeClose: PropTypes.func,
148 cache: PropTypes.bool,
149 shouldUpdatePosition: PropTypes.bool
150}, _class.defaultProps = {
151 prefix: 'next-',
152 closeable: true,
153 role: 'dialog',
154 onClose: noop,
155 locale: zhCN.Drawer
156}, _temp);
157Inner.displayName = 'Inner';
158export { Inner as default };
\No newline at end of file