UNPKG

lml-main

Version:

This is now a mono repository published into many standalone packages.

103 lines 5.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const React = require("react"); const react_redux_1 = require("react-redux"); const cosmo_redux_api_1 = require("@lml/cosmo-redux-api"); const frequencies_1 = require("../../../frequencies"); const selectors_1 = require("../../selectors"); const constants_1 = require("../../constants"); const actions_1 = require("../../actions"); const cosmoui_1 = require("cosmoui"); class PlaceFormComponent extends React.Component { constructor() { super(...arguments); // WARNING - there appear to be some discrepencies between // the place address model and the job address model hence // why this has been done. please resolve with ryan and julien this.formatAddress = (place) => place && place.address ? { address: { streets: place.address.street, town: place.address.town, country: place.address.country, postcode: place.postcode, }, position: { type: 'point', coordinates: place.coordinates, }, } : undefined; this.submitForm = (data) => { const { partners, isNewPlace } = this.props; const place = {}; Object.assign(place, { placeId: data.placeId.value, postcode: data.address.address.postcode, coordinates: data.address.position.coordinates, label: data.label.value, createdAt: undefined, partnerId: isNewPlace ? data.partnerId.value.value : data.partnerId.value, address: { street: data.address.address.streets, town: data.address.address.town, country: data.address.address.country, }, }); isNewPlace ? this.props.postPlace(place.partnerId, place) : this.props.putPlace(place.partnerId, place); }; this.cancelForm = () => { this.props.destroyForm(constants_1.PLACE_FORM_KEY); this.props.closePlaceFormDrawer(); }; this.validateFrequency = (frequency) => { if (!frequency) return ['* required']; if (frequency.length < 2) return ['* Min 2 chars']; if (!this.props.frequencies[frequency]) return ['* Not a valid frequency']; return []; }; this.validatePlaceId = (placeId) => { if (!placeId) return ['* required']; if (!placeId.match(/^[0-9a-z]+$/)) return ['* alphanumeric only']; return []; }; this.formButtonStyles = () => ({ marginRight: '10px', }); } render() { const { isNewPlace, partners, place } = this.props; return (React.createElement(cosmoui_1.Form, { name: constants_1.PLACE_FORM_KEY, onSubmit: this.submitForm }, React.createElement(cosmoui_1.FormGroup, { label: "Partner *" }, isNewPlace ? (React.createElement(cosmoui_1.Select, { name: "partnerId", required: true, value: partners[0], options: partners, disabled: !isNewPlace })) : (React.createElement(cosmoui_1.TextInput, { name: "partnerId", disabled: true, value: place.partnerId }))), React.createElement(cosmoui_1.FormGroup, { label: "Place ID *" }, React.createElement(cosmoui_1.TextInput, { name: "placeId", validate: this.validatePlaceId, disabled: !isNewPlace, value: place.placeId })), React.createElement(cosmoui_1.FormGroup, { label: "Frequency *" }, React.createElement(cosmoui_1.TextInput, { name: "label", validate: this.validateFrequency, value: place.label })), React.createElement(cosmoui_1.FormGroup, { label: "Address *" }, React.createElement(cosmoui_1.AddressInput, { id: "placeAddress", name: "address", showValidationIcon: true, current: this.formatAddress(place) })), React.createElement(cosmoui_1.Button, { id: "place-form-submit-button", style: this.formButtonStyles(), type: "submit" }, isNewPlace ? 'ADD' : 'UPDATE'), React.createElement(cosmoui_1.Button, { onClick: this.cancelForm, primary: false }, "CANCEL"))); } } const mapStateToProps = (state, ownProps) => ({ partners: selectors_1.getPartners(), frequencies: frequencies_1.getFrequencies(state), form: cosmoui_1.getForm(state, constants_1.PLACE_FORM_KEY), isNewPlace: !ownProps.placeId, place: ownProps.placeId ? cosmo_redux_api_1.getPlaceById(state, ownProps.placeId) : {}, }); const mapDispatchToProps = { destroyForm: cosmoui_1.destroyForm, resetForm: cosmoui_1.resetForm, setFormField: cosmoui_1.setFormField, postPlace: cosmo_redux_api_1.postPlace, putPlace: cosmo_redux_api_1.putPlace, closePlaceFormDrawer: actions_1.closePlaceFormDrawer, }; exports.PlaceForm = react_redux_1.connect(mapStateToProps, mapDispatchToProps)(PlaceFormComponent); //# sourceMappingURL=place-form.js.map