1 | /**
|
2 | * Dialog to confirm.
|
3 | * @constructor ApConfirmDialog
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
9 |
|
10 | var _react = require('react');
|
11 |
|
12 | var _react2 = _interopRequireDefault(_react);
|
13 |
|
14 | var _classnames = require('classnames');
|
15 |
|
16 | var _classnames2 = _interopRequireDefault(_classnames);
|
17 |
|
18 | var _apemanReactTouchable = require('apeman-react-touchable');
|
19 |
|
20 | var _apemanReactCheckbox = require('apeman-react-checkbox');
|
21 |
|
22 | var _apemanReactButton = require('apeman-react-button');
|
23 |
|
24 | var _apemanReactMixins = require('apeman-react-mixins');
|
25 |
|
26 | var _ap_dialog = require('./ap_dialog');
|
27 |
|
28 | var _ap_dialog2 = _interopRequireDefault(_ap_dialog);
|
29 |
|
30 | var _uuid = require('uuid');
|
31 |
|
32 | var _uuid2 = _interopRequireDefault(_uuid);
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | /** lends ApConfirmDialog */
|
37 | var ApConfirmDialog = _react2.default.createClass({
|
38 | displayName: 'ApConfirmDialog',
|
39 |
|
40 | // --------------------
|
41 | // Specs
|
42 | // --------------------
|
43 |
|
44 | propTypes: {
|
45 | present: _react.PropTypes.bool.isRequired,
|
46 | /** Handler for submit event */
|
47 | onSubmit: _react.PropTypes.func,
|
48 | /** Handler for cancel event */
|
49 | onCancel: _react.PropTypes.func,
|
50 | /** Dialog title */
|
51 | title: _react.PropTypes.string,
|
52 | /** Dialog message */
|
53 | message: _react.PropTypes.string,
|
54 | /** Id of checkbox */
|
55 | checkboxId: _react.PropTypes.string,
|
56 | /** Name of checkbox */
|
57 | checkboxName: _react.PropTypes.string,
|
58 | /** Label text of checkbox */
|
59 | checkboxText: _react.PropTypes.string,
|
60 | /** Errot text when not checked */
|
61 | errorText: _react.PropTypes.string,
|
62 | /** Submit button text */
|
63 | submitText: _react.PropTypes.string
|
64 | },
|
65 |
|
66 | mixins: [_apemanReactMixins.ApPureMixin],
|
67 |
|
68 | statics: {},
|
69 |
|
70 | getInitialState: function getInitialState() {
|
71 | return {
|
72 | checked: false,
|
73 | errored: false
|
74 | };
|
75 | },
|
76 | getDefaultProps: function getDefaultProps() {
|
77 | var id = _uuid2.default.v4().replace(/\-/g, '');
|
78 | return {
|
79 | onSubmit: null,
|
80 | onCancel: null,
|
81 | checkboxId: 'ap-confirm-dialog-checkbox-' + id,
|
82 | checkboxName: 'ap-confirm-check-' + id,
|
83 | checkboxText: null,
|
84 | submitText: 'submit',
|
85 | errorText: 'Needs check before submit.',
|
86 | message: 'Once destroyed, there is no going back. Please be certain.'
|
87 | };
|
88 | },
|
89 | render: function render() {
|
90 | var s = this;
|
91 | var state = s.state;
|
92 | var props = s.props;
|
93 |
|
94 | if (!props.present) {
|
95 | return null;
|
96 | }
|
97 | return _react2.default.createElement(
|
98 | _ap_dialog2.default,
|
99 | _extends({ className: (0, _classnames2.default)('ap-confirm-dialog', props.className),
|
100 | style: Object.assign({}, props.style),
|
101 | onClose: s.handleCancel
|
102 | }, props),
|
103 | _react2.default.createElement(
|
104 | 'p',
|
105 | { className: 'ap-confirm-dialog-message' },
|
106 | props.message
|
107 | ),
|
108 | _react2.default.createElement(
|
109 | 'div',
|
110 | null,
|
111 | props.children
|
112 | ),
|
113 | _react2.default.createElement(
|
114 | 'div',
|
115 | { className: 'ap-confirm-dialog-control' },
|
116 | s._renderError(state.errored),
|
117 | s._renderCheckbox(state.checked),
|
118 | s._renderSubmitButton(state.checked)
|
119 | )
|
120 | );
|
121 | },
|
122 | toggleCheckbox: function toggleCheckbox() {
|
123 | var s = this;
|
124 | var state = s.state;
|
125 | s.setState({
|
126 | checked: !state.checked,
|
127 | errored: false
|
128 | });
|
129 | },
|
130 | handleSubmit: function handleSubmit(e) {
|
131 | var s = this;
|
132 | var state = s.state;
|
133 | var props = s.props;
|
134 |
|
135 | if (!state.checked) {
|
136 | s.setState({
|
137 | errored: true
|
138 | });
|
139 | return;
|
140 | }
|
141 | s.setState({
|
142 | errored: false
|
143 | });
|
144 | if (props.onSubmit) {
|
145 | props.onSubmit(e);
|
146 | }
|
147 | },
|
148 | handleCancel: function handleCancel(e) {
|
149 | var s = this;
|
150 | var props = s.props;
|
151 |
|
152 | s.setState({ errored: false });
|
153 | if (props.onCancel) {
|
154 | props.onCancel(e);
|
155 | }
|
156 | },
|
157 |
|
158 | // ------------------
|
159 | // Private
|
160 | // ------------------
|
161 | _renderError: function _renderError(errored) {
|
162 | var s = this;
|
163 | var props = s.props;
|
164 |
|
165 | if (!errored) {
|
166 | return null;
|
167 | }
|
168 | return _react2.default.createElement(
|
169 | 'div',
|
170 | { className: 'ap-confirm-dialog-err' },
|
171 | _react2.default.createElement(
|
172 | 'span',
|
173 | null,
|
174 | props.errorText
|
175 | )
|
176 | );
|
177 | },
|
178 | _renderCheckbox: function _renderCheckbox(checked) {
|
179 | var s = this;
|
180 | var props = s.props;
|
181 |
|
182 | return _react2.default.createElement(
|
183 | 'div',
|
184 | null,
|
185 | _react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { className: 'ap-confirm-dialog-checkbox',
|
186 | checked: checked,
|
187 | name: props.checkboxName,
|
188 | id: props.checkboxId,
|
189 | title: props.checkboxText,
|
190 | onChange: s.toggleCheckbox,
|
191 | value: 'YES'
|
192 |
|
193 | })
|
194 | );
|
195 | },
|
196 | _renderSubmitButton: function _renderSubmitButton(checked) {
|
197 | var s = this;
|
198 | var props = s.props;
|
199 |
|
200 | return _react2.default.createElement(
|
201 | _apemanReactButton.ApButton,
|
202 | { onTap: s.handleSubmit,
|
203 | disabled: false,
|
204 | primary: true,
|
205 | className: (0, _classnames2.default)('ap-confirm-dialog-button', {
|
206 | 'ap-confirm-dialog-button-disabled': !checked
|
207 | }) },
|
208 | _react2.default.createElement(
|
209 | 'span',
|
210 | { className: 'ap-confirm-dialog-button-text' },
|
211 | props.submitText
|
212 | )
|
213 | );
|
214 | }
|
215 | });
|
216 |
|
217 | module.exports = ApConfirmDialog;
|
218 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2NvbmZpcm1fZGlhbG9nLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7Ozs7QUFHQSxJQUFNLGtCQUFrQixnQkFBTSxXQUFOLENBQWtCOzs7Ozs7O0FBTXhDLGFBQVc7QUFDVCxhQUFTLGlCQUFNLElBQU4sQ0FBVyxVQUFYOztBQUVULGNBQVUsaUJBQU0sSUFBTjs7QUFFVixjQUFVLGlCQUFNLElBQU47O0FBRVYsV0FBTyxpQkFBTSxNQUFOOztBQUVQLGFBQVMsaUJBQU0sTUFBTjs7QUFFVCxnQkFBWSxpQkFBTSxNQUFOOztBQUVaLGtCQUFjLGlCQUFNLE1BQU47O0FBRWQsa0JBQWMsaUJBQU0sTUFBTjs7QUFFZCxlQUFXLGlCQUFNLE1BQU47O0FBRVgsZ0JBQVksaUJBQU0sTUFBTjtHQW5CZDs7QUFzQkEsVUFBUSxnQ0FBUjs7QUFJQSxXQUFTLEVBQVQ7O0FBRUEsOENBQW1CO0FBQ2pCLFdBQU87QUFDTCxlQUFTLEtBQVQ7QUFDQSxlQUFTLEtBQVQ7S0FGRixDQURpQjtHQWxDcUI7QUF5Q3hDLDhDQUFtQjtBQUNqQixRQUFJLEtBQUssZUFBSyxFQUFMLEdBQVUsT0FBVixDQUFrQixLQUFsQixFQUF5QixFQUF6QixDQUFMLENBRGE7QUFFakIsV0FBTztBQUNMLGdCQUFVLElBQVY7QUFDQSxnQkFBVSxJQUFWO0FBQ0Esa0RBQTBDLEVBQTFDO0FBQ0EsMENBQWtDLEVBQWxDO0FBQ0Esb0JBQWMsSUFBZDtBQUNBLGtCQUFZLFFBQVo7QUFDQSxpQkFBVyw0QkFBWDtBQUNBLGVBQVMsNERBQVQ7S0FSRixDQUZpQjtHQXpDcUI7QUF1RHhDLDRCQUFVO0FBQ1IsUUFBTSxJQUFJLElBQUosQ0FERTtRQUVGLFFBQWlCLEVBQWpCLE1BRkU7UUFFSyxRQUFVLEVBQVYsTUFGTDs7QUFHUixRQUFJLENBQUMsTUFBTSxPQUFOLEVBQWU7QUFD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dXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LWRpYWxvZy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERpYWxvZyB0byBjb25maXJtLlxuICogQGNvbnN0cnVjdG9yIEFwQ29uZmlybURpYWxvZ1xuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXMgYXMgdHlwZXN9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuaW1wb3J0IHtBcFRvdWNoYWJsZX0gZnJvbSAnYXBlbWFuLXJlYWN0LXRvdWNoYWJsZSdcbmltcG9ydCB7QXBDaGVja2JveH0gZnJvbSAnYXBlbWFuLXJlYWN0LWNoZWNrYm94J1xuaW1wb3J0IHtBcEJ1dHRvbn0gZnJvbSAnYXBlbWFuLXJlYWN0LWJ1dHRvbidcbmltcG9ydCB7QXBQdXJlTWl4aW59IGZyb20gJ2FwZW1hbi1yZWFjdC1taXhpbnMnXG5pbXBvcnQgQXBEaWFsb2cgZnJvbSAnLi9hcF9kaWFsb2cnXG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJ1xuXG4vKiogbGVuZHMgQXBDb25maXJtRGlhbG9nICovXG5jb25zdCBBcENvbmZpcm1EaWFsb2cgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICBwcmVzZW50OiB0eXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgLyoqIEhhbmRsZXIgZm9yIHN1Ym1pdCBldmVudCAqL1xuICAgIG9uU3VibWl0OiB0eXBlcy5mdW5jLFxuICAgIC8qKiBIYW5kbGVyIGZvciBjYW5jZWwgZXZlbnQgKi9cbiAgICBvbkNhbmNlbDogdHlwZXMuZnVuYyxcbiAgICAvKiogRGlhbG9nIHRpdGxlICovXG4gICAgdGl0bGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogRGlhbG9nIG1lc3NhZ2UgKi9cbiAgICBtZXNzYWdlOiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIElkIG9mIGNoZWNrYm94ICovXG4gICAgY2hlY2tib3hJZDogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBOYW1lIG9mIGNoZWNrYm94ICovXG4gICAgY2hlY2tib3hOYW1lOiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIExhYmVsIHRleHQgb2YgY2hlY2tib3ggKi9cbiAgICBjaGVja2JveFRleHQ6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogRXJyb3QgdGV4dCB3aGVuIG5vdCBjaGVja2VkICovXG4gICAgZXJyb3JUZXh0OiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIFN1Ym1pdCBidXR0b24gdGV4dCAqL1xuICAgIHN1Ym1pdFRleHQ6IHR5cGVzLnN0cmluZ1xuICB9LFxuXG4gIG1peGluczogW1xuICAgIEFwUHVyZU1peGluXG4gIF0sXG5cbiAgc3RhdGljczoge30sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICBlcnJvcmVkOiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICBnZXREZWZhdWx0UHJvcHMgKCkge1xuICAgIGxldCBpZCA9IHV1aWQudjQoKS5yZXBsYWNlKC9cXC0vZywgJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG9uU3VibWl0OiBudWxsLFxuICAgICAgb25DYW5jZWw6IG51bGwsXG4gICAgICBjaGVja2JveElkOiBgYXAtY29uZmlybS1kaWFsb2ctY2hlY2tib3gtJHtpZH1gLFxuICAgICAgY2hlY2tib3hOYW1lOiBgYXAtY29uZmlybS1jaGVjay0ke2lkfWAsXG4gICAgICBjaGVja2JveFRleHQ6IG51bGwsXG4gICAgICBzdWJtaXRUZXh0OiAnc3VibWl0JyxcbiAgICAgIGVycm9yVGV4dDogJ05lZWRzIGNoZWNrIGJlZm9yZSBzdWJtaXQuJyxcbiAgICAgIG1lc3NhZ2U6ICdPbmNlIGRlc3Ryb3llZCwgdGhlcmUgaXMgbm8gZ29pbmcgYmFjay4gUGxlYXNlIGJlIGNlcnRhaW4uJ1xuICAgIH1cbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgc3RhdGUsIHByb3BzIH0gPSBzXG4gICAgaWYgKCFwcm9wcy5wcmVzZW50KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPEFwRGlhbG9nIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoJ2FwLWNvbmZpcm0tZGlhbG9nJywgcHJvcHMuY2xhc3NOYW1lKSB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9eyBzLmhhbmRsZUNhbmNlbCB9XG4gICAgICAgIHsgLi4ucHJvcHMgfVxuICAgICAgPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJhcC1jb25maXJtLWRpYWxvZy1tZXNzYWdlXCI+XG4gICAgICAgICAgeyBwcm9wcy5tZXNzYWdlIH1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2PnsgcHJvcHMuY2hpbGRyZW4gfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWNvbnRyb2xcIj5cbiAgICAgICAgICB7IHMuX3JlbmRlckVycm9yKHN0YXRlLmVycm9yZWQpIH1cbiAgICAgICAgICB7IHMuX3JlbmRlckNoZWNrYm94KHN0YXRlLmNoZWNrZWQpIH1cbiAgICAgICAgICB7IHMuX3JlbmRlclN1Ym1pdEJ1dHRvbihzdGF0ZS5jaGVja2VkKSB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9BcERpYWxvZz5cbiAgICApXG4gIH0sXG5cbiAgdG9nZ2xlQ2hlY2tib3goKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgc3RhdGUgPSBzLnN0YXRlXG4gICAgcy5zZXRTdGF0ZSh7XG4gICAgICBjaGVja2VkOiAhc3RhdGUuY2hlY2tlZCxcbiAgICAgIGVycm9yZWQ6IGZhbHNlXG4gICAgfSlcbiAgfSxcblxuICBoYW5kbGVTdWJtaXQoZSkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgc3RhdGUsIHByb3BzIH0gPSBzXG4gICAgaWYgKCFzdGF0ZS5jaGVja2VkKSB7XG4gICAgICBzLnNldFN0YXRlKHtcbiAgICAgICAgZXJyb3JlZDogdHJ1ZVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzLnNldFN0YXRlKHtcbiAgICAgIGVycm9yZWQ6IGZhbHNlXG4gICAgfSlcbiAgICBpZiAocHJvcHMub25TdWJtaXQpIHtcbiAgICAgIHByb3BzLm9uU3VibWl0KGUpXG4gICAgfVxuICB9LFxuXG4gIGhhbmRsZUNhbmNlbChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXMsXG4gICAgICB7IHByb3BzIH0gPSBzXG4gICAgcy5zZXRTdGF0ZSh7IGVycm9yZWQ6IGZhbHNlIH0pXG4gICAgaWYgKHByb3BzLm9uQ2FuY2VsKSB7XG4gICAgICBwcm9wcy5vbkNhbmNlbChlKVxuICAgIH1cbiAgfSxcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUHJpdmF0ZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cbiAgX3JlbmRlckVycm9yKGVycm9yZWQpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgaWYgKCFlcnJvcmVkKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcC1jb25maXJtLWRpYWxvZy1lcnJcIj5cbiAgICAgICAgPHNwYW4+eyBwcm9wcy5lcnJvclRleHQgfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgX3JlbmRlckNoZWNrYm94IChjaGVja2VkKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8QXBDaGVja2JveCBjbGFzc05hbWU9XCJhcC1jb25maXJtLWRpYWxvZy1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyBjaGVja2VkIH1cbiAgICAgICAgICAgICAgICAgICAgbmFtZT17IHByb3BzLmNoZWNrYm94TmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXsgcHJvcHMuY2hlY2tib3hJZCB9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgcHJvcHMuY2hlY2tib3hUZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBzLnRvZ2dsZUNoZWNrYm94IH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJZRVNcIlxuXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH0sXG4gIF9yZW5kZXJTdWJtaXRCdXR0b24gKGNoZWNrZWQpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEJ1dHRvbiBvblRhcD17IHMuaGFuZGxlU3VibWl0IH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICBwcmltYXJ5PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAtY29uZmlybS1kaWFsb2ctYnV0dG9uJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcC1jb25maXJtLWRpYWxvZy1idXR0b24tZGlzYWJsZWQnOiAhY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICAgIH0pIH0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWJ1dHRvbi10ZXh0XCI+eyBwcm9wcy5zdWJtaXRUZXh0IH08L3NwYW4+XG4gICAgICA8L0FwQnV0dG9uPlxuICAgIClcbiAgfVxuXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFwQ29uZmlybURpYWxvZ1xuIl19 |
\ | No newline at end of file |