apeman-react-dialog
Version:
apeman react package for dialog component.
220 lines (189 loc) • 15.3 kB
JavaScript
/**
* Dialog to confirm.
* @class ApConfirmDialog
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _apemanReactCheckbox = require('apeman-react-checkbox');
var _apemanReactButton = require('apeman-react-button');
var _ap_dialog = require('./ap_dialog');
var _ap_dialog2 = _interopRequireDefault(_ap_dialog);
var _uuid = require('uuid');
var _uuid2 = _interopRequireDefault(_uuid);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** lends ApConfirmDialog */
var ApConfirmDialog = _react2.default.createClass({
displayName: 'ApConfirmDialog',
// --------------------
// Specs
// --------------------
propTypes: {
present: _react.PropTypes.bool.isRequired,
/** Handler for submit event */
onSubmit: _react.PropTypes.func,
/** Handler for cancel event */
onCancel: _react.PropTypes.func,
/** Dialog title */
title: _react.PropTypes.string,
/** Dialog message */
message: _react.PropTypes.string,
/** Id of checkbox */
checkboxId: _react.PropTypes.string,
/** Name of checkbox */
checkboxName: _react.PropTypes.string,
/** Label text of checkbox */
checkboxText: _react.PropTypes.string,
/** Errot text when not checked */
errorText: _react.PropTypes.string,
/** Submit button text */
submitText: _react.PropTypes.string
},
mixins: [],
statics: {},
getInitialState: function getInitialState() {
return {
checked: false,
errored: false
};
},
getDefaultProps: function getDefaultProps() {
var id = _uuid2.default.v4().replace(/\-/g, '');
return {
onSubmit: null,
onCancel: null,
checkboxId: 'ap-confirm-dialog-checkbox-' + id,
checkboxName: 'ap-confirm-check-' + id,
checkboxText: null,
submitText: 'submit',
errorText: 'Needs check before submit.',
message: 'Once destroyed, there is no going back. Please be certain.'
};
},
render: function render() {
var s = this;
var state = s.state;
var props = s.props;
if (!props.present) {
return null;
}
return _react2.default.createElement(
_ap_dialog2.default,
_extends({ className: (0, _classnames2.default)('ap-confirm-dialog', props.className),
style: Object.assign({}, props.style),
onClose: s.handleCancel
}, props),
_react2.default.createElement(
'p',
{ className: 'ap-confirm-dialog-message' },
props.message
),
_react2.default.createElement(
'div',
null,
props.children
),
_react2.default.createElement(
'div',
{ className: 'ap-confirm-dialog-control' },
s.renderError(state.errored),
s.renderCheckbox(state.checked),
s.renderSubmitButton(state.checked)
)
);
},
toggleCheckbox: function toggleCheckbox() {
var s = this;
var state = s.state;
s.setState({
checked: !state.checked,
errored: false
});
},
handleSubmit: function handleSubmit(e) {
var s = this;
var state = s.state;
var props = s.props;
if (!state.checked) {
s.setState({
errored: true
});
return;
}
s.setState({
errored: false
});
if (props.onSubmit) {
props.onSubmit(e);
}
},
handleCancel: function handleCancel(e) {
var s = this;
var props = s.props;
s.setState({ errored: false });
if (props.onCancel) {
props.onCancel(e);
}
},
// ------------------
// Private
// ------------------
renderError: function renderError(errored) {
var s = this;
var props = s.props;
if (!errored) {
return null;
}
return _react2.default.createElement(
'div',
{ className: 'ap-confirm-dialog-err' },
_react2.default.createElement(
'span',
null,
props.errorText
)
);
},
renderCheckbox: function renderCheckbox(checked) {
var s = this;
var props = s.props;
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { className: 'ap-confirm-dialog-checkbox',
checked: checked,
name: props.checkboxName,
id: props.checkboxId,
title: props.checkboxText,
onChange: s.toggleCheckbox,
value: 'YES'
})
);
},
renderSubmitButton: function renderSubmitButton(checked) {
var s = this;
var props = s.props;
return _react2.default.createElement(
_apemanReactButton.ApButton,
{ onTap: s.handleSubmit,
disabled: false,
primary: true,
className: (0, _classnames2.default)('ap-confirm-dialog-button', {
'ap-confirm-dialog-button-disabled': !checked
}) },
_react2.default.createElement(
'span',
{ className: 'ap-confirm-dialog-button-text' },
props.submitText
)
);
}
});
exports.default = ApConfirmDialog;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2NvbmZpcm1fZGlhbG9nLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7Ozs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7QUFDQSxJQUFNLGtCQUFrQixnQkFBTSxXQUFOLENBQWtCO0FBQUE7OztBQUV4QztBQUNBO0FBQ0E7O0FBRUEsYUFBVztBQUNULGFBQVMsaUJBQU0sSUFBTixDQUFXLFVBRFg7QUFFVDtBQUNBLGNBQVUsaUJBQU0sSUFIUDtBQUlUO0FBQ0EsY0FBVSxpQkFBTSxJQUxQO0FBTVQ7QUFDQSxXQUFPLGlCQUFNLE1BUEo7QUFRVDtBQUNBLGFBQVMsaUJBQU0sTUFUTjtBQVVUO0FBQ0EsZ0JBQVksaUJBQU0sTUFYVDtBQVlUO0FBQ0Esa0JBQWMsaUJBQU0sTUFiWDtBQWNUO0FBQ0Esa0JBQWMsaUJBQU0sTUFmWDtBQWdCVDtBQUNBLGVBQVcsaUJBQU0sTUFqQlI7QUFrQlQ7QUFDQSxnQkFBWSxpQkFBTTtBQW5CVCxHQU42Qjs7QUE0QnhDLFVBQVEsRUE1QmdDOztBQStCeEMsV0FBUyxFQS9CK0I7O0FBaUN4QyxpQkFqQ3dDLDZCQWlDckI7QUFDakIsV0FBTztBQUNMLGVBQVMsS0FESjtBQUVMLGVBQVM7QUFGSixLQUFQO0FBSUQsR0F0Q3VDO0FBd0N4QyxpQkF4Q3dDLDZCQXdDckI7QUFDakIsUUFBSSxLQUFLLGVBQUssRUFBTCxHQUFVLE9BQVYsQ0FBa0IsS0FBbEIsRUFBeUIsRUFBekIsQ0FBVDtBQUNBLFdBQU87QUFDTCxnQkFBVSxJQURMO0FBRUwsZ0JBQVUsSUFGTDtBQUdMLGtEQUEwQyxFQUhyQztBQUlMLDBDQUFrQyxFQUo3QjtBQUtMLG9CQUFjLElBTFQ7QUFNTCxrQkFBWSxRQU5QO0FBT0wsaUJBQVcsNEJBUE47QUFRTCxlQUFTO0FBUkosS0FBUDtBQVVELEdBcER1QztBQXNEeEMsUUF0RHdDLG9CQXNEOUI7QUFDUixRQUFNLElBQUksSUFB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LENBRlcsQ0FFckIsS0FGcUI7O0FBRzNCLFdBQ0U7QUFBQTtBQUFBLFFBQVUsT0FBUSxFQUFFLFlBQXBCO0FBQ1Usa0JBQVcsS0FEckI7QUFFVSxpQkFBVSxJQUZwQjtBQUdVLG1CQUFZLDBCQUFXLDBCQUFYLEVBQXVDO0FBQ2pELCtDQUFxQyxDQUFDO0FBRFcsU0FBdkMsQ0FIdEI7QUFNRTtBQUFBO0FBQUEsVUFBTSxXQUFVLCtCQUFoQjtBQUFrRCxjQUFNO0FBQXhEO0FBTkYsS0FERjtBQVVEO0FBL0p1QyxDQUFsQixDQUF4Qjs7a0JBbUtlLGUiLCJmaWxlIjoiYXBfY29uZmlybV9kaWFsb2cuanN4Iiwic291cmNlUm9vdCI6ImxpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGlhbG9nIHRvIGNvbmZpcm0uXG4gKiBAY2xhc3MgQXBDb25maXJtRGlhbG9nXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5pbXBvcnQge0FwQ2hlY2tib3h9IGZyb20gJ2FwZW1hbi1yZWFjdC1jaGVja2JveCdcbmltcG9ydCB7QXBCdXR0b259IGZyb20gJ2FwZW1hbi1yZWFjdC1idXR0b24nXG5pbXBvcnQgQXBEaWFsb2cgZnJvbSAnLi9hcF9kaWFsb2cnXG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJ1xuXG4vKiogbGVuZHMgQXBDb25maXJtRGlhbG9nICovXG5jb25zdCBBcENvbmZpcm1EaWFsb2cgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICBwcmVzZW50OiB0eXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgLyoqIEhhbmRsZXIgZm9yIHN1Ym1pdCBldmVudCAqL1xuICAgIG9uU3VibWl0OiB0eXBlcy5mdW5jLFxuICAgIC8qKiBIYW5kbGVyIGZvciBjYW5jZWwgZXZlbnQgKi9cbiAgICBvbkNhbmNlbDogdHlwZXMuZnVuYyxcbiAgICAvKiogRGlhbG9nIHRpdGxlICovXG4gICAgdGl0bGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogRGlhbG9nIG1lc3NhZ2UgKi9cbiAgICBtZXNzYWdlOiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIElkIG9mIGNoZWNrYm94ICovXG4gICAgY2hlY2tib3hJZDogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBOYW1lIG9mIGNoZWNrYm94ICovXG4gICAgY2hlY2tib3hOYW1lOiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIExhYmVsIHRleHQgb2YgY2hlY2tib3ggKi9cbiAgICBjaGVja2JveFRleHQ6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogRXJyb3QgdGV4dCB3aGVuIG5vdCBjaGVja2VkICovXG4gICAgZXJyb3JUZXh0OiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIFN1Ym1pdCBidXR0b24gdGV4dCAqL1xuICAgIHN1Ym1pdFRleHQ6IHR5cGVzLnN0cmluZ1xuICB9LFxuXG4gIG1peGluczogW1xuICBdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgZXJyb3JlZDogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICBsZXQgaWQgPSB1dWlkLnY0KCkucmVwbGFjZSgvXFwtL2csICcnKVxuICAgIHJldHVybiB7XG4gICAgICBvblN1Ym1pdDogbnVsbCxcbiAgICAgIG9uQ2FuY2VsOiBudWxsLFxuICAgICAgY2hlY2tib3hJZDogYGFwLWNvbmZpcm0tZGlhbG9nLWNoZWNrYm94LSR7aWR9YCxcbiAgICAgIGNoZWNrYm94TmFtZTogYGFwLWNvbmZpcm0tY2hlY2stJHtpZH1gLFxuICAgICAgY2hlY2tib3hUZXh0OiBudWxsLFxuICAgICAgc3VibWl0VGV4dDogJ3N1Ym1pdCcsXG4gICAgICBlcnJvclRleHQ6ICdOZWVkcyBjaGVjayBiZWZvcmUgc3VibWl0LicsXG4gICAgICBtZXNzYWdlOiAnT25jZSBkZXN0cm95ZWQsIHRoZXJlIGlzIG5vIGdvaW5nIGJhY2suIFBsZWFzZSBiZSBjZXJ0YWluLidcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHN0YXRlLCBwcm9wcyB9ID0gc1xuICAgIGlmICghcHJvcHMucHJlc2VudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxBcERpYWxvZyBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1jb25maXJtLWRpYWxvZycsIHByb3BzLmNsYXNzTmFtZSkgfVxuICAgICAgICAgICAgICAgIHN0eWxlPXsgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpIH1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXsgcy5oYW5kbGVDYW5jZWwgfVxuICAgICAgICAgICAgICAgIHsgLi4ucHJvcHMgfVxuICAgICAgPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJhcC1jb25maXJtLWRpYWxvZy1tZXNzYWdlXCI+XG4gICAgICAgICAgeyBwcm9wcy5tZXNzYWdlIH1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2PnsgcHJvcHMuY2hpbGRyZW4gfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWNvbnRyb2xcIj5cbiAgICAgICAgICB7IHMucmVuZGVyRXJyb3Ioc3RhdGUuZXJyb3JlZCkgfVxuICAgICAgICAgIHsgcy5yZW5kZXJDaGVja2JveChzdGF0ZS5jaGVja2VkKSB9XG4gICAgICAgICAgeyBzLnJlbmRlclN1Ym1pdEJ1dHRvbihzdGF0ZS5jaGVja2VkKSB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9BcERpYWxvZz5cbiAgICApXG4gIH0sXG5cbiAgdG9nZ2xlQ2hlY2tib3ggKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHN0YXRlID0gcy5zdGF0ZVxuICAgIHMuc2V0U3RhdGUoe1xuICAgICAgY2hlY2tlZDogIXN0YXRlLmNoZWNrZWQsXG4gICAgICBlcnJvcmVkOiBmYWxzZVxuICAgIH0pXG4gIH0sXG5cbiAgaGFuZGxlU3VibWl0IChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBzdGF0ZSwgcHJvcHMgfSA9IHNcbiAgICBpZiAoIXN0YXRlLmNoZWNrZWQpIHtcbiAgICAgIHMuc2V0U3RhdGUoe1xuICAgICAgICBlcnJvcmVkOiB0cnVlXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHMuc2V0U3RhdGUoe1xuICAgICAgZXJyb3JlZDogZmFsc2VcbiAgICB9KVxuICAgIGlmIChwcm9wcy5vblN1Ym1pdCkge1xuICAgICAgcHJvcHMub25TdWJtaXQoZSlcbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlQ2FuY2VsIChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIHMuc2V0U3RhdGUoeyBlcnJvcmVkOiBmYWxzZSB9KVxuICAgIGlmIChwcm9wcy5vbkNhbmNlbCkge1xuICAgICAgcHJvcHMub25DYW5jZWwoZSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHJlbmRlckVycm9yKGVycm9yZWQpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgaWYgKCFlcnJvcmVkKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcC1jb25maXJtLWRpYWxvZy1lcnJcIj5cbiAgICAgICAgPHNwYW4+eyBwcm9wcy5lcnJvclRleHQgfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgcmVuZGVyQ2hlY2tib3ggKGNoZWNrZWQpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxBcENoZWNrYm94IGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGNoZWNrZWQgfVxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsgcHJvcHMuY2hlY2tib3hOYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9eyBwcm9wcy5jaGVja2JveElkIH1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBwcm9wcy5jaGVja2JveFRleHQgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHMudG9nZ2xlQ2hlY2tib3ggfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIllFU1wiXG5cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgcmVuZGVyU3VibWl0QnV0dG9uIChjaGVja2VkKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIHJldHVybiAoXG4gICAgICA8QXBCdXR0b24gb25UYXA9eyBzLmhhbmRsZVN1Ym1pdCB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgcHJpbWFyeT17IHRydWUgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoJ2FwLWNvbmZpcm0tZGlhbG9nLWJ1dHRvbicsIHtcbiAgICAgICAgICAgICAgICAgICdhcC1jb25maXJtLWRpYWxvZy1idXR0b24tZGlzYWJsZWQnOiAhY2hlY2tlZFxuICAgICAgICAgICAgICAgIH0pIH0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWJ1dHRvbi10ZXh0XCI+eyBwcm9wcy5zdWJtaXRUZXh0IH08L3NwYW4+XG4gICAgICA8L0FwQnV0dG9uPlxuICAgIClcbiAgfVxuXG59KVxuXG5leHBvcnQgZGVmYXVsdCBBcENvbmZpcm1EaWFsb2dcbiJdfQ==