UNPKG

@raona/components

Version:

React components used at Raona to work with SPFx

168 lines (167 loc) 13 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { 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 extendStatics(d, b); }; 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) || function () { __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; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var react_1 = require("react"); var Slider_1 = require("office-ui-fabric-react/lib/components/Slider/Slider"); var SPTextField_1 = require("../WrappedComponents/SPTextField"); var SPDropdown_1 = require("../WrappedComponents/SPDropdown"); var SPChoiceGroup_1 = require("../WrappedComponents/SPChoiceGroup"); var SPTaxonomyPicker_1 = require("../WrappedComponents/SPTaxonomyPicker"); var SPPeoplePicker_1 = require("../WrappedComponents/SPPeoplePicker"); var SPFilePicker_1 = require("../WrappedComponents/SPFilePicker"); var SPDatePicker_1 = require("../WrappedComponents/SPDatePicker"); var SPReactQuill_1 = require("../WrappedComponents/SPReactQuill"); var SPCheckbox_1 = require("../WrappedComponents/SPCheckbox"); var SPListItemPicker_1 = require("../WrappedComponents/SPListItemPicker"); var DisplayFormErrors_1 = require("./DisplayFormErrors"); var FormStep = /** @class */ (function (_super) { __extends(FormStep, _super); function FormStep() { return _super !== null && _super.apply(this, arguments) || this; } FormStep.prototype.getErrorDataForField = function (fieldId) { var formErrors = this.props.formErrors; var errors = formErrors.filter(function (ve) { return ve.path.indexOf(fieldId) === 0; }); var isArray = Array.isArray(errors); if (isArray && errors.length === 0 || !isArray) return []; return errors.map(function (error) { var errorMessage = error.message; if (typeof error.value === 'string' && error.value) { errorMessage = error.value + " - " + error.message; } return errorMessage; }); }; FormStep.prototype.checkIfSetFieldValue = function (fieldId) { var _a = this.props, values = _a.values, formattedValues = _a.formattedValues; return typeof values[fieldId] === 'undefined' && typeof formattedValues[fieldId] !== 'undefined'; }; FormStep.prototype.render = function () { var _this = this; var _a = this.props, fieldGroups = _a.fieldGroups, formInnerWrapperClassName = _a.formInnerWrapperClassName; return (React.createElement("div", { className: formInnerWrapperClassName }, fieldGroups.map(function (group) { var fields = group.fields.map(function (x) { return _this.renderField(x); }); return group.wrapperClassName // TODO: hardcoded class -> change asap ? React.createElement("div", { className: group.wrapperClassName }, React.createElement("p", { className: "modal__sectionTitle" }, group.name), fields) : React.createElement(react_1.Fragment, null, React.createElement("p", { className: "modal__sectionTitle" }, group.name), fields); }))); }; FormStep.prototype.renderField = function (fieldData) { var _a = this.props, setValues = _a.setValues, setFieldValue = _a.setFieldValue, handleBlur = _a.handleBlur, touched = _a.touched, values = _a.values, context = _a.context, deleteFile = _a.deleteFile, showErrors = _a.showErrors, formattedValues = _a.formattedValues; var errors = this.getErrorDataForField(fieldData.id); if (!showErrors) errors = []; switch (fieldData.type) { case 'TextField': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPTextField_1.SPTextField, __assign({ onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, onBlur: handleBlur, value: values[fieldData.id], defaultValue: formattedValues[fieldData.id], errorMessage: errors[0] }, fieldData.compProps)))); case 'Dropdown': if (typeof formattedValues[fieldData.id] !== 'undefined') fieldData.compProps.dropdownOptions = formattedValues[fieldData.id]; if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPDropdown_1.SPDropdown, __assign({ onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e, fieldData.compProps.dropdownOptions); }, /* defaultSelectedKeys={Array.isArray(defaultValues[fieldData.id]) && defaultValues[fieldData.id].map((item) => { return item.key; })} defaultSelectedKey={defaultValues[fieldData.id]} */ errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'ChoiceGroup': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPChoiceGroup_1.SPChoiceGroup, __assign({ onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, defaultValues: formattedValues[fieldData.id] && formattedValues[fieldData.id].key, errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'Slider': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement("div", null, fieldData.name), React.createElement(Slider_1.Slider, __assign({ onChange: function (value) { setFieldValue(fieldData.id, value); setValues(fieldData.id, value); }, defaultValue: formattedValues[fieldData.id], errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'SPTaxonomy': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPTaxonomyPicker_1.SPTaxonomyPicker, __assign({ context: context, onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, defaultValues: formattedValues[fieldData.id], errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'SPPeople': var defaultUsers = []; var hasDefaultUsers = false; if (Array.isArray(formattedValues[fieldData.id])) { defaultUsers = formattedValues[fieldData.id].map(function (user) { return user.secondaryText; }); // Filter undefined or users with '' as secondary text. defaultUsers = defaultUsers.filter(function (u) { return u; }); hasDefaultUsers = defaultUsers.length > 0; } if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, defaultUsers); return (React.createElement(react_1.Fragment, null, React.createElement(SPPeoplePicker_1.SPPeoplePicker, __assign({ context: context, onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, defaultSelectedUsers: hasDefaultUsers ? defaultUsers : undefined, errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'FilePicker': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPFilePicker_1.SPFilePicker, __assign({ onFilesChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, inputName: fieldData.name, touched: touched, handleBlur: handleBlur, values: values[fieldData.id], id: fieldData.id, deleteFile: deleteFile, setFieldValue: setFieldValue, errorMessage: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'DatePicker': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPDatePicker_1.SPDatePicker, __assign({ onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, dateValue: values[fieldData.id] && values[fieldData.id], errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'RichHTML': if (typeof formattedValues[fieldData.id] === 'undefined') formattedValues[fieldData.id] = ''; if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPReactQuill_1.SPReactQuill, __assign({ value: values[fieldData.id] === undefined ? (values[fieldData.id] = fieldData.initialValue) : values[fieldData.id], onChange: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, defaultValue: formattedValues[fieldData.id] === undefined ? (formattedValues[fieldData.id] = fieldData.initialValue) : formattedValues[fieldData.id], errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'Checkbox': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPCheckbox_1.SPCheckbox, __assign({ defaultChecked: formattedValues[fieldData.id], onChange: function (e, isChecked) { setFieldValue(fieldData.id, isChecked); setValues(fieldData.id, isChecked); }, defaultValues: formattedValues[fieldData.id], errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'SPListItemPicker': if (this.checkIfSetFieldValue(fieldData.id)) setFieldValue(fieldData.id, formattedValues[fieldData.id]); return (React.createElement(react_1.Fragment, null, React.createElement(SPListItemPicker_1.SPListItemPicker, __assign({ onSelectedItem: function (e) { setFieldValue(fieldData.id, e); setValues(fieldData.id, e); }, defaultSelectedItems: formattedValues[fieldData.id], context: context, errors: React.createElement(DisplayFormErrors_1.DisplayFormErrors, { formErrors: errors }) }, fieldData.compProps)))); case 'CustomField': var element = fieldData.renderer ? fieldData.renderer(fieldData.id, values[fieldData.id] || formattedValues[fieldData.id], setValues, setFieldValue, errors) : React.createElement("div", null, "Custom Field without renderer"); return element; } }; return FormStep; }(react_1.Component)); exports.FormStep = FormStep;