apeman-react-sign
Version:
apeman react package for sign components
194 lines (164 loc) • 14.4 kB
JavaScript
/**
* Form for signmod
* @class ApSignmodForm
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ApSignmodForm = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _apemanReactForm = require('apeman-react-form');
var _apemanReactField = require('apeman-react-field');
var _apemanReactButton = require('apeman-react-button');
var _apemanReactText = require('apeman-react-text');
var _apemanReactPassword = require('apeman-react-password');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/** @lends ApSignmodForm */
var ApSignmodForm = _react2.default.createClass({
displayName: 'ApSignmodForm',
// --------------------
// Specs
// --------------------
propTypes: {
email: _react.PropTypes.bool,
password: _react.PropTypes.bool
},
mixins: [],
statics: {},
getInitialState: function getInitialState() {
return {};
},
getDefaultProps: function getDefaultProps() {
return {
labels: {
email: 'Email',
password: 'Password',
submit: 'Update'
},
email: true,
password: true
};
},
render: function render() {
var s = this;
var props = s.props;
var id = props.id;
var idOf = props.idOf;
var labels = props.labels;
var values = props.values;
var onUpdate = props.onUpdate;
var onSubmit = props.onSubmit;
var spinning = props.spinning;
var errorList = props.errorList;
var errorStyle = props.errorStyle;
var centered = props.centered;
return _react2.default.createElement(
_apemanReactForm.ApForm,
{ id: id,
spinning: spinning,
centered: centered,
className: (0, _classnames2.default)('ap-signin-form', props.className),
style: Object.assign({}, props.style)
},
_react2.default.createElement(
_apemanReactField.ApFieldSet,
{ plain: true },
errorList,
errorStyle,
props.email ? s.renderEmailField() : null,
props.password ? s.renderPasswordField() : null
),
_react2.default.createElement(
_apemanReactField.ApFieldSet,
{ plain: true },
_react2.default.createElement(
_apemanReactField.ApField,
{ center: true, className: 'ap-signmod-form-button-field' },
_react2.default.createElement(
_apemanReactButton.ApButton,
{ id: idOf('submit'),
onTap: function onTap() {
return onSubmit(s.props.values);
},
wide: true,
primary: true
},
labels['submit']
)
)
)
);
},
// --------------------
// Lifecycle
// --------------------
// ------------------
// Custom
// ------------------
renderEmailField: function renderEmailField() {
var name = 'email';
var s = this;
var props = s.props;
var idOf = props.idOf;
var labels = props.labels;
var values = props.values;
var onUpdate = props.onUpdate;
return _react2.default.createElement(
_apemanReactField.ApField,
{ className: 'ap-signmod-form-email-field' },
_react2.default.createElement(
_apemanReactField.ApFieldLabel,
{ htmlFor: idOf(name) },
labels[name]
),
_react2.default.createElement(
_apemanReactField.ApFieldValue,
null,
_react2.default.createElement(_apemanReactText.ApText, { id: idOf(name),
name: name,
value: values[name],
onChange: function onChange(e) {
return onUpdate(_defineProperty({}, name, e.target.value));
}
})
)
);
},
renderPasswordField: function renderPasswordField() {
var name = 'password';
var s = this;
var props = s.props;
var idOf = props.idOf;
var labels = props.labels;
var values = props.values;
var onUpdate = props.onUpdate;
return _react2.default.createElement(
_apemanReactField.ApField,
null,
_react2.default.createElement(
_apemanReactField.ApFieldLabel,
{ htmlFor: idOf(name) },
labels[name]
),
_react2.default.createElement(
_apemanReactField.ApFieldValue,
null,
_react2.default.createElement(_apemanReactPassword.ApPassword, { id: idOf(name),
value: values[name],
name: name,
onChange: function onChange(e) {
return onUpdate(_defineProperty({}, name, e.target.value));
}
})
)
);
}
});
exports.ApSignmodForm = ApSignmodForm;
exports.default = (0, _apemanReactForm.withForm)(ApSignmodForm);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ25tb2RfZm9ybS5qc3giXSwibmFtZXMiOlsiQXBTaWdubW9kRm9ybSIsImNyZWF0ZUNsYXNzIiwicHJvcFR5cGVzIiwiZW1haWwiLCJib29sIiwicGFzc3dvcmQiLCJtaXhpbnMiLCJzdGF0aWNzIiwiZ2V0SW5pdGlhbFN0YXRlIiwiZ2V0RGVmYXVsdFByb3BzIiwibGFiZWxzIiwic3VibWl0IiwicmVuZGVyIiwicyIsInByb3BzIiwiaWQiLCJpZE9mIiwidmFsdWVzIiwib25VcGRhdGUiLCJvblN1Ym1pdCIsInNwaW5uaW5nIiwiZXJyb3JMaXN0IiwiZXJyb3JTdHlsZSIsImNlbnRlcmVkIiwiY2xhc3NOYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwic3R5bGUiLCJyZW5kZXJFbWFpbEZpZWxkIiwicmVuZGVyUGFzc3dvcmRGaWVsZCIsIm5hbWUiLCJlIiwidGFyZ2V0IiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUNBLElBQU1BLGdCQUFnQixnQkFBTUMsV0FBTixDQUFrQjtBQUFBOzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBQyxhQUFXO0FBQ1RDLFdBQU8saUJBQU1DLElBREo7QUFFVEMsY0FBVSxpQkFBTUQ7QUFGUCxHQU4yQjs7QUFXdENFLFVBQVEsRUFYOEI7O0FBYXRDQyxXQUFTLEVBYjZCOztBQWV0Q0MsaUJBZnNDLDZCQWVuQjtBQUNqQixXQUFPLEVBQVA7QUFDRCxHQWpCcUM7QUFtQnRDQyxpQkFuQnNDLDZCQW1CbkI7QUFDakIsV0FBTztBQUNMQyxjQUFRO0FBQ05QLGVBQU8sT0FERDtBQUVORSxrQkFBVSxVQUZKO0FBR05NLGdCQUFRO0FBSEYsT0FESDtBQU1MUixhQUFPLElBTkY7QUFPTEUsZ0JBQVU7QUFQTCxLQUFQO0FBU0QsR0E3QnFDO0FBK0J0Q08sUUEvQnNDLG9CQStCNUI7QUFDUixRQUFNQyxJ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QUxtQjtBQUFBLFFBTW5CTixNQU5tQixHQVNqQkksS0FUaUIsQ0FNbkJKLE1BTm1CO0FBQUEsUUFPbkJPLE1BUG1CLEdBU2pCSCxLQVRpQixDQU9uQkcsTUFQbUI7QUFBQSxRQVFuQkMsUUFSbUIsR0FTakJKLEtBVGlCLENBUW5CSSxRQVJtQjs7O0FBV3JCLFdBQ0U7QUFBQTtBQUFBO0FBQ0U7QUFBQTtBQUFBLFVBQWMsU0FBVUYsS0FBS2MsSUFBTCxDQUF4QjtBQUNJcEIsZUFBUW9CLElBQVI7QUFESixPQURGO0FBSUU7QUFBQTtBQUFBO0FBQ0UseUVBQVksSUFBS2QsS0FBS2MsSUFBTCxDQUFqQjtBQUNZLGlCQUFRYixPQUFRYSxJQUFSLENBRHBCO0FBRVksZ0JBQU9BLElBRm5CO0FBR1ksb0JBQVcsa0JBQUNDLENBQUQ7QUFBQSxtQkFBT2IsNkJBQVlZLElBQVosRUFBbUJDLEVBQUVDLE1BQUYsQ0FBU0MsS0FBNUIsRUFBUDtBQUFBO0FBSHZCO0FBREY7QUFKRixLQURGO0FBY0Q7QUF4SXFDLENBQWxCLENBQXRCOztRQTRJU2pDLGEsR0FBQUEsYTtrQkFDTSwrQkFBU0EsYUFBVCxDIiwiZmlsZSI6ImFwX3NpZ25tb2RfZm9ybS5qc3giLCJzb3VyY2VSb290IjoibGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGZvciBzaWdubW9kXG4gKiBAY2xhc3MgQXBTaWdubW9kRm9ybVxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHsgUHJvcFR5cGVzIGFzIHR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5pbXBvcnQgeyBBcEZvcm0sIHdpdGhGb3JtIH0gZnJvbSAnYXBlbWFuLXJlYWN0LWZvcm0nXG5pbXBvcnQgeyBBcEZpZWxkU2V0LCBBcEZpZWxkLCBBcEZpZWxkTGFiZWwsIEFwRmllbGRWYWx1ZSB9IGZyb20gJ2FwZW1hbi1yZWFjdC1maWVsZCdcbmltcG9ydCB7IEFwQnV0dG9uLCBBcENlbGxCdXR0b24sIEFwQ2VsbEJ1dHRvblJvdywgQXBJY29uQnV0dG9uLCBBcEljb25CdXR0b25Sb3cgfSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuXG4vKiogQGxlbmRzIEFwU2lnbm1vZEZvcm0gKi9cbmNvbnN0IEFwU2lnbm1vZEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICBlbWFpbDogdHlwZXMuYm9vbCxcbiAgICBwYXNzd29yZDogdHlwZXMuYm9vbFxuICB9LFxuXG4gIG1peGluczogW10sXG5cbiAgc3RhdGljczoge30sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICByZXR1cm4ge31cbiAgfSxcblxuICBnZXREZWZhdWx0UHJvcHMgKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbHM6IHtcbiAgICAgICAgZW1haWw6ICdFbWFpbCcsXG4gICAgICAgIHBhc3N3b3JkOiAnUGFzc3dvcmQnLFxuICAgICAgICBzdWJtaXQ6ICdVcGRhdGUnXG4gICAgICB9LFxuICAgICAgZW1haWw6IHRydWUsXG4gICAgICBwYXNzd29yZDogdHJ1ZVxuICAgIH1cbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBsZXQge1xuICAgICAgaWQsXG4gICAgICBpZE9mLFxuICAgICAgbGFiZWxzLFxuICAgICAgdmFsdWVzLFxuICAgICAgb25VcGRhdGUsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIHNwaW5uaW5nLFxuICAgICAgZXJyb3JMaXN0LFxuICAgICAgZXJyb3JTdHlsZSxcbiAgICAgIGNlbnRlcmVkXG4gICAgfSA9IHByb3BzXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZvcm0gaWQ9eyBpZCB9XG4gICAgICAgICAgICAgIHNwaW5uaW5nPXsgc3Bpbm5pbmcgfVxuICAgICAgICAgICAgICBjZW50ZXJlZD17IGNlbnRlcmVkIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAtc2lnbmluLWZvcm0nLCBwcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICBzdHlsZT17IE9iamVjdC5hc3NpZ24oe30sIHByb3BzLnN0eWxlKSB9XG4gICAgICA+XG4gICAgICAgIDxBcEZpZWxkU2V0IHBsYWluPlxuICAgICAgICAgIHsgZXJyb3JMaXN0IH1cbiAgICAgICAgICB7IGVycm9yU3R5bGUgfVxuICAgICAgICAgIHsgcHJvcHMuZW1haWwgPyBzLnJlbmRlckVtYWlsRmllbGQoKSA6IG51bGwgfVxuICAgICAgICAgIHsgcHJvcHMucGFzc3dvcmQgPyBzLnJlbmRlclBhc3N3b3JkRmllbGQoKSA6IG51bGwgfVxuICAgICAgICA8L0FwRmllbGRTZXQ+XG4gICAgICAgIDxBcEZpZWxkU2V0IHBsYWluPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIDxBcEZpZWxkIGNlbnRlciBjbGFzc05hbWU9J2FwLXNpZ25tb2QtZm9ybS1idXR0b24tZmllbGQnPlxuICAgICAgICAgICAgICA8QXBCdXR0b24gaWQ9eyBpZE9mKCdzdWJtaXQnKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRhcD17ICgpID0+IG9uU3VibWl0KHMucHJvcHMudmFsdWVzKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IGxhYmVsc1sgJ3N1Ym1pdCcgXSB9XG4gICAgICAgICAgICAgIDwvQXBCdXR0b24+XG4gICAgICAgICAgICA8L0FwRmllbGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L0FwRmllbGRTZXQ+XG4gICAgICA8L0FwRm9ybSA+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBDdXN0b21cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcmVuZGVyRW1haWxGaWVsZCAoKSB7XG4gICAgY29uc3QgbmFtZSA9ICdlbWFpbCdcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgbGV0IHtcbiAgICAgIGlkT2YsXG4gICAgICBsYWJlbHMsXG4gICAgICB2YWx1ZXMsXG4gICAgICBvblVwZGF0ZVxuICAgIH0gPSBwcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNsYXNzTmFtZT0nYXAtc2lnbm1vZC1mb3JtLWVtYWlsLWZpZWxkJz5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZihuYW1lKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyBuYW1lIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBUZXh0IGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgbmFtZSB9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17IHZhbHVlc1sgbmFtZSBdIH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgW25hbWVdOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIHJlbmRlclBhc3N3b3JkRmllbGQgKCkge1xuICAgIGNvbnN0IG5hbWUgPSAncGFzc3dvcmQnXG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGxldCB7XG4gICAgICBpZE9mLFxuICAgICAgbGFiZWxzLFxuICAgICAgdmFsdWVzLFxuICAgICAgb25VcGRhdGVcbiAgICB9ID0gcHJvcHNcblxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZihuYW1lKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyBuYW1lIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBQYXNzd29yZCBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdmFsdWVzWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IFtuYW1lXTogZS50YXJnZXQudmFsdWUgfSkgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQXBGaWVsZFZhbHVlPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfVxuXG59KVxuXG5leHBvcnQgeyBBcFNpZ25tb2RGb3JtIH1cbmV4cG9ydCBkZWZhdWx0IHdpdGhGb3JtKEFwU2lnbm1vZEZvcm0pXG4iXX0=