1 | /**
|
2 | * Dialog component.
|
3 | * @class ApDialog
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | Object.defineProperty(exports, "__esModule", {
|
9 | value: true
|
10 | });
|
11 |
|
12 | var _react = require('react');
|
13 |
|
14 | var _react2 = _interopRequireDefault(_react);
|
15 |
|
16 | var _classnames = require('classnames');
|
17 |
|
18 | var _classnames2 = _interopRequireDefault(_classnames);
|
19 |
|
20 | var _apemanReactTouchable = require('apeman-react-touchable');
|
21 |
|
22 | var _apemanReactIcon = require('apeman-react-icon');
|
23 |
|
24 | var _apemanReactSpinner = require('apeman-react-spinner');
|
25 |
|
26 | var _ap_dialog_header = require('./ap_dialog_header');
|
27 |
|
28 | var _ap_dialog_header2 = _interopRequireDefault(_ap_dialog_header);
|
29 |
|
30 | var _ap_dialog_body = require('./ap_dialog_body');
|
31 |
|
32 | var _ap_dialog_body2 = _interopRequireDefault(_ap_dialog_body);
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | var DEFAULT_CLOSE_ICON = 'fa fa-close';
|
37 |
|
38 | /** @lends ApDialog */
|
39 | var ApDialog = _react2.default.createClass({
|
40 | displayName: 'ApDialog',
|
41 |
|
42 |
|
43 | // --------------------
|
44 | // Specs
|
45 | // --------------------
|
46 |
|
47 | propTypes: {
|
48 | present: _react.PropTypes.bool.isRequired,
|
49 | onClose: _react.PropTypes.func,
|
50 | spinning: _react.PropTypes.bool,
|
51 | spinner: _react.PropTypes.string,
|
52 | title: _react.PropTypes.string,
|
53 | closeIcon: _react.PropTypes.string
|
54 | },
|
55 |
|
56 | mixins: [],
|
57 |
|
58 | statics: {
|
59 | DEFAULT_CLOSE_ICON: DEFAULT_CLOSE_ICON
|
60 | },
|
61 |
|
62 | getInitialState: function getInitialState() {
|
63 | return {};
|
64 | },
|
65 | getDefaultProps: function getDefaultProps() {
|
66 | return {
|
67 | present: false,
|
68 | onClose: null,
|
69 | spinning: false,
|
70 | spinner: _apemanReactSpinner.ApSpinner.DEFAULT_THEME,
|
71 | title: null,
|
72 | closeIcon: DEFAULT_CLOSE_ICON
|
73 | };
|
74 | },
|
75 | render: function render() {
|
76 | var s = this;
|
77 | var props = s.props;
|
78 |
|
79 | if (!props.present) {
|
80 | return null;
|
81 | }
|
82 | return _react2.default.createElement(
|
83 | 'div',
|
84 | { className: (0, _classnames2.default)('ap-dialog', props.className, {
|
85 | 'ap-dialog-present': props.present
|
86 | }),
|
87 | style: Object.assign({}, props.style) },
|
88 | _react2.default.createElement(_apemanReactSpinner.ApSpinner, { theme: props.spinner,
|
89 | className: 'ap-dialog-spinner',
|
90 | enabled: props.spinning }),
|
91 | _react2.default.createElement(
|
92 | 'div',
|
93 | { className: 'ap-dialog-inner' },
|
94 | s._renderBack(),
|
95 | _react2.default.createElement(
|
96 | 'div',
|
97 | { className: 'ap-dialog-content' },
|
98 | _react2.default.createElement(
|
99 | _ap_dialog_header2.default,
|
100 | null,
|
101 | s._renderTitle(),
|
102 | s._renderCloseButton()
|
103 | ),
|
104 | _react2.default.createElement(
|
105 | _ap_dialog_body2.default,
|
106 | null,
|
107 | props.children
|
108 | )
|
109 | )
|
110 | )
|
111 | );
|
112 | },
|
113 |
|
114 |
|
115 | // --------------------
|
116 | // Lifecycle
|
117 | // --------------------
|
118 |
|
119 | componentWillMount: function componentWillMount() {
|
120 | var s = this;
|
121 | },
|
122 | componentDidMount: function componentDidMount() {
|
123 | var s = this;
|
124 | var props = s.props;
|
125 |
|
126 | s.toggleDocumentScroll(props.present);
|
127 | },
|
128 | componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
|
129 | var s = this;
|
130 |
|
131 | s.toggleDocumentScroll(nextProps.present);
|
132 | },
|
133 | shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {
|
134 | var s = this;
|
135 | return true;
|
136 | },
|
137 | componentWillUpdate: function componentWillUpdate(nextProps, nextState) {
|
138 | var s = this;
|
139 | },
|
140 | componentDidUpdate: function componentDidUpdate(prevProps, prevState) {
|
141 | var s = this;
|
142 | },
|
143 | componentWillUnmount: function componentWillUnmount() {
|
144 | var s = this;
|
145 | s.toggleDocumentScroll(false);
|
146 | },
|
147 |
|
148 |
|
149 | // ------------------
|
150 | // Helper
|
151 | // ------------------
|
152 |
|
153 | handleClose: function handleClose(e) {
|
154 | var s = this;
|
155 | var props = s.props;
|
156 |
|
157 | if (props.onClose) {
|
158 | props.onClose(e);
|
159 | }
|
160 | },
|
161 | toggleDocumentScroll: function toggleDocumentScroll(enabled) {
|
162 | var s = this;
|
163 |
|
164 | var body = document.body;
|
165 | if (enabled) {
|
166 | body.classList.add('ap-dialog-fix');
|
167 | } else {
|
168 | body.classList.remove('ap-dialog-fix');
|
169 | }
|
170 | },
|
171 |
|
172 |
|
173 | // ------------------
|
174 | // Private
|
175 | // ------------------
|
176 |
|
177 | _renderBack: function _renderBack() {
|
178 | var s = this;
|
179 | var props = s.props;
|
180 |
|
181 | return _react2.default.createElement(
|
182 | 'div',
|
183 | { className: 'ap-dialog-back' },
|
184 | _react2.default.createElement(
|
185 | _apemanReactTouchable.ApTouchable,
|
186 | { onTap: s.handleClose },
|
187 | _react2.default.createElement('div', { className: 'ap-dialog-back-inner' })
|
188 | )
|
189 | );
|
190 | },
|
191 | _renderCloseButton: function _renderCloseButton() {
|
192 | var s = this;
|
193 | var props = s.props;
|
194 |
|
195 | return _react2.default.createElement(
|
196 | 'a',
|
197 | { className: 'ap-dialog-close-button' },
|
198 | _react2.default.createElement(
|
199 | _apemanReactTouchable.ApTouchable,
|
200 | { onTap: s.handleClose },
|
201 | _react2.default.createElement(
|
202 | 'span',
|
203 | null,
|
204 | _react2.default.createElement(_apemanReactIcon.ApIcon, { className: (0, _classnames2.default)('ap-dialog-close-button-icon', props.closeIcon) })
|
205 | )
|
206 | )
|
207 | );
|
208 | },
|
209 | _renderTitle: function _renderTitle() {
|
210 | var s = this;
|
211 | var props = s.props;
|
212 |
|
213 | return _react2.default.createElement(
|
214 | 'h3',
|
215 | { className: 'ap-dialog-title' },
|
216 | props.title
|
217 | );
|
218 | }
|
219 | });
|
220 |
|
221 | exports.default = ApDialog;
|
222 | //# sourceMappingURL=data:application/json;base64,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STtBQUFBO1lBQUEsRUFBSSxXQUFVLGlCQUFkO1lBQWtDLE1BQU07QUFBeEMsU0FESjtBQUdIO0FBdEs0QixDQUFsQixDQUFmOztrQkF5S2UsUSIsImZpbGUiOiJhcF9kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL29rdW5pc2hpbmlzaGkvUHJvamVjdHMvYXBlbWFuLXByb2plY3RzL2FwZW1hbi1yZWFjdC1kaWFsb2cvbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEaWFsb2cgY29tcG9uZW50LlxuICogQGNsYXNzIEFwRGlhbG9nXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5cbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5pbXBvcnQge0FwSWNvbn0gZnJvbSAnYXBlbWFuLXJlYWN0LWljb24nXG5pbXBvcnQge0FwU3Bpbm5lcn0gZnJvbSAnYXBlbWFuLXJlYWN0LXNwaW5uZXInXG5pbXBvcnQgQXBEaWFsb2dIZWFkZXIgZnJvbSAnLi9hcF9kaWFsb2dfaGVhZGVyJ1xuaW1wb3J0IEFwRGlhbG9nQm9keSBmcm9tICcuL2FwX2RpYWxvZ19ib2R5J1xuXG5cbmNvbnN0IERFRkFVTFRfQ0xPU0VfSUNPTiA9ICdmYSBmYS1jbG9zZSdcblxuLyoqIEBsZW5kcyBBcERpYWxvZyAqL1xubGV0IEFwRGlhbG9nID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTcGVjc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm9wVHlwZXM6IHtcbiAgICAgICAgcHJlc2VudDogdHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgICAgICBvbkNsb3NlOiB0eXBlcy5mdW5jLFxuICAgICAgICBzcGlubmluZzogdHlwZXMuYm9vbCxcbiAgICAgICAgc3Bpbm5lcjogdHlwZXMuc3RyaW5nLFxuICAgICAgICB0aXRsZTogdHlwZXMuc3RyaW5nLFxuICAgICAgICBjbG9zZUljb246IHR5cGVzLnN0cmluZ1xuICAgIH0sXG5cbiAgICBtaXhpbnM6IFtdLFxuXG4gICAgc3RhdGljczoge1xuICAgICAgICBERUZBVUxUX0NMT1NFX0lDT05cbiAgICB9LFxuXG4gICAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSxcblxuICAgIGdldERlZmF1bHRQcm9wcyAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmVzZW50OiBmYWxzZSxcbiAgICAgICAgICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgICAgICAgICBzcGlubmluZzogZmFsc2UsXG4gICAgICAgICAgICBzcGlubmVyOiBBcFNwaW5uZXIuREVGQVVMVF9USEVNRSxcbiAgICAgICAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgICAgICAgY2xvc2VJY29uOiBERUZBVUxUX0NMT1NFX0lDT05cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZW5kZXIgKCkge1xuICAgICAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgICAgICAgIHtwcm9wc30gPSBzXG4gICAgICAgIGlmICghcHJvcHMucHJlc2VudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAtZGlhbG9nJywgcHJvcHMuY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICAgICAgJ2FwLWRpYWxvZy1wcmVzZW50Jzpwcm9wcy5wcmVzZW50XG4gICAgICAgICAgICB9KSB9XG4gICAgICAgICAgICAgICAgIHN0eWxlPXsgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpIH0+XG4gICAgICAgICAgICAgICAgPEFwU3Bpbm5lciB0aGVtZT17IHByb3BzLnNwaW5uZXIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYXAtZGlhbG9nLXNwaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17IHByb3BzLnNwaW5uaW5nIH0vPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXAtZGlhbG9nLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgcy5fcmVuZGVyQmFjaygpIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcC1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFwRGlhbG9nSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcy5fcmVuZGVyVGl0bGUoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzLl9yZW5kZXJDbG9zZUJ1dHRvbigpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBEaWFsb2dIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QXBEaWFsb2dCb2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9BcERpYWxvZ0JvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9LFxuXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExpZmVjeWNsZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb21wb25lbnRXaWxsTW91bnQgKCkge1xuICAgICAgICBjb25zdCBzID0gdGhpc1xuXG4gICAgfSxcblxuICAgIGNvbXBvbmVudERpZE1vdW50ICgpIHtcbiAgICAgICAgY29uc3QgcyA9IHRoaXMsXG4gICAgICAgICAgICB7cHJvcHN9ID0gc1xuICAgICAgICBzLnRvZ2dsZURvY3VtZW50U2Nyb2xsKHByb3BzLnByZXNlbnQpXG4gICAgfSxcblxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG5leHRQcm9wcykge1xuICAgICAgICBjb25zdCBzID0gdGhpc1xuXG4gICAgICAgIHMudG9nZ2xlRG9jdW1lbnRTY3JvbGwobmV4dFByb3BzLnByZXNlbnQpXG4gICAgfSxcblxuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgICAgICBjb25zdCBzID0gdGhpc1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG5cbiAgICBjb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgfSxcblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBjb25zdCBzID0gdGhpc1xuICAgIH0sXG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCAoKSB7XG4gICAgICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgICAgIHMudG9nZ2xlRG9jdW1lbnRTY3JvbGwoZmFsc2UpXG4gICAgfSxcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEhlbHBlclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgaGFuZGxlQ2xvc2UoZSkge1xuICAgICAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgICAgICAgIHtwcm9wc30gPSBzXG4gICAgICAgIGlmIChwcm9wcy5vbkNsb3NlKSB7XG4gICAgICAgICAgICBwcm9wcy5vbkNsb3NlKGUpXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgdG9nZ2xlRG9jdW1lbnRTY3JvbGwoZW5hYmxlZCkge1xuICAgICAgICBjb25zdCBzID0gdGhpc1xuXG4gICAgICAgIGxldCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZCgnYXAtZGlhbG9nLWZpeCcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2FwLWRpYWxvZy1maXgnKVxuICAgICAgICB9XG5cbiAgICB9LFxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUHJpdmF0ZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgX3JlbmRlckJhY2soKSB7XG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLFxuICAgICAgICAgICAge3Byb3BzfSA9IHNcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXAtZGlhbG9nLWJhY2tcIj5cbiAgICAgICAgICAgICAgICA8QXBUb3VjaGFibGUgb25UYXA9eyBzLmhhbmRsZUNsb3NlIH0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXAtZGlhbG9nLWJhY2staW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0FwVG91Y2hhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9LFxuXG4gICAgX3JlbmRlckNsb3NlQnV0dG9uKCkge1xuICAgICAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgICAgICAgIHtwcm9wc30gPSBzXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJhcC1kaWFsb2ctY2xvc2UtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVDbG9zZSB9PlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8QXBJY29uIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoJ2FwLWRpYWxvZy1jbG9zZS1idXR0b24taWNvbicsIHByb3BzLmNsb3NlSWNvbikgfS8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvQXBUb3VjaGFibGU+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIClcbiAgICB9LFxuXG4gICAgX3JlbmRlclRpdGxlKCkge1xuICAgICAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgICAgICAgIHtwcm9wc30gPSBzXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiYXAtZGlhbG9nLXRpdGxlXCI+eyBwcm9wcy50aXRsZSB9PC9oMz5cbiAgICAgICAgKVxuICAgIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwRGlhbG9nOyJdfQ== |
\ | No newline at end of file |