refire-react
Version:
React components and helpers for Refire
79 lines • 3.89 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var react_1 = require("react");
var react_redux_1 = require("react-redux");
var refire_1 = require("refire");
var clearRegistrationError = refire_1.firebaseActions.clearRegistrationError, createUser = refire_1.firebaseActions.createUser;
// default validator assumes that each field has some value
var defaultValidator = function (state) {
return Object.keys(state).every(function (field) {
return !!state[field];
});
};
// default submit dispatches createUser action
var defaultSubmit = function (dispatch, state) {
return dispatch(createUser(state.email, state.password)).catch(function () { });
};
function default_1(options) {
if (options === void 0) { options = {}; }
var _a = options.fields, fields = _a === void 0 ? ["email", "password"] : _a, _b = options.submit, submit = _b === void 0 ? defaultSubmit : _b, _c = options.validator, validator = _c === void 0 ? defaultValidator : _c;
return function (WrappedComponent) {
var FirebaseRegistration = /** @class */ (function (_super) {
__extends(FirebaseRegistration, _super);
function FirebaseRegistration(props) {
var _this = _super.call(this, props) || this;
_this.update = function (field) {
return function (event) {
var error = _this.props._status.errors.createUser;
if (error) {
_this.props.dispatch(clearRegistrationError());
}
_this.setState((_a = {}, _a[field] = event.currentTarget.value, _a));
var _a;
};
};
_this.submit = function (event) {
event.preventDefault();
submit(_this.props.dispatch, _this.state);
};
_this.state = fields.reduce(function (initialState, field) {
return __assign({}, initialState, (_a = {}, _a[field] = null, _a));
var _a;
}, {});
return _this;
}
FirebaseRegistration.prototype.render = function () {
var validInput = validator(this.state);
var _a = this.props._status, error = _a.errors.createUser, processing = _a.processing.createUser, completed = _a.completed.createUser;
var extraProps = __assign({}, this.state, { submit: this.submit, update: this.update, validInput: validInput,
error: error,
processing: processing,
completed: completed });
return (React.createElement(WrappedComponent, __assign({}, this.props, extraProps)));
};
return FirebaseRegistration;
}(react_1.Component));
return react_redux_1.connect(refire_1.firebaseToProps(["_status"]))(FirebaseRegistration);
};
}
exports.default = default_1;
//# sourceMappingURL=FirebaseRegistration.js.map