UNPKG

periodicjs.ext.reactadmin

Version:

An authentication extension for periodicjs that uses passport to authenticate user sessions.

1,245 lines (1,095 loc) 49.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _clearImmediate2 = require('babel-runtime/core-js/clear-immediate'); var _clearImmediate3 = _interopRequireDefault(_clearImmediate2); var _setImmediate2 = require('babel-runtime/core-js/set-immediate'); var _setImmediate3 = _interopRequireDefault(_setImmediate2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); exports.getPropertyAttribute = getPropertyAttribute; exports.getFormDatatable = getFormDatatable; exports.getFormDatalist = getFormDatalist; exports.getFormMaskedInput = getFormMaskedInput; exports.getFormTextInputArea = getFormTextInputArea; exports.getFormTextArea = getFormTextArea; exports.getFormSelect = getFormSelect; exports.getFormCheckbox = getFormCheckbox; exports.getRawInput = getRawInput; exports.getSliderInput = getSliderInput; exports.getHiddenInput = getHiddenInput; exports.getImage = getImage; exports.getFormLink = getFormLink; exports.getFormGroup = getFormGroup; exports.getFormCode = getFormCode; exports.getFormEditor = getFormEditor; exports.getFormDatePicker = getFormDatePicker; exports.getFormSubmit = getFormSubmit; exports.getCardFooterItem = getCardFooterItem; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _FormItem = require('../FormItem'); var _FormItem2 = _interopRequireDefault(_FormItem); var _RACodeMirror = require('../RACodeMirror'); var _RACodeMirror2 = _interopRequireDefault(_RACodeMirror); var _PreviewEditor = require('../PreviewEditor'); var _PreviewEditor2 = _interopRequireDefault(_PreviewEditor); var _ResponsiveDatalist = require('../ResponsiveDatalist'); var _ResponsiveDatalist2 = _interopRequireDefault(_ResponsiveDatalist); var _ResponsiveTable = require('../ResponsiveTable'); var _ResponsiveTable2 = _interopRequireDefault(_ResponsiveTable); var _createNumberMask = require('text-mask-addons/dist/createNumberMask'); var _createNumberMask2 = _interopRequireDefault(_createNumberMask); var _capitalize = require('capitalize'); var _capitalize2 = _interopRequireDefault(_capitalize); var _rcSlider = require('rc-slider'); var _rcSlider2 = _interopRequireDefault(_rcSlider); var _reBulma = require('re-bulma'); var _reactTextMask = require('react-text-mask'); var _reactTextMask2 = _interopRequireDefault(_reactTextMask); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _numeral = require('numeral'); var _numeral2 = _interopRequireDefault(_numeral); var _pluralize = require('pluralize'); var _pluralize2 = _interopRequireDefault(_pluralize); var _flat = require('flat'); var _flat2 = _interopRequireDefault(_flat); var _SingleDatePickerWrapper = require('../SingleDatePickerWrapper'); var _SingleDatePickerWrapper2 = _interopRequireDefault(_SingleDatePickerWrapper); var _DateRangePickerWrapper = require('../DateRangePickerWrapper'); var _DateRangePickerWrapper2 = _interopRequireDefault(_DateRangePickerWrapper); var _styles = require('../../styles'); var _styles2 = _interopRequireDefault(_styles); var _FormHelpers = require('./FormHelpers'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getPropertyAttribute(options) { var property = options.property, element = options.element; var attribute = element.name; var selector = element.idSelector; // console.log({ options }); var returnVal = void 0; if (attribute.indexOf('.') === -1) { returnVal = property[attribute]; } else { var attrArray = attribute.split('.'); returnVal = property[attrArray[0]] ? property[attrArray[0]][attrArray[1]] : undefined; } if (selector && !options.skipSelector) { return returnVal[selector]; } else { return returnVal; } } // import RAEditor from '../RAEditor'; // import ResponsiveButton from '../ResponsiveButton'; // import { EditorState, } from 'draft-js'; function getFunctionFromProps(options) { var propFunc = options.propFunc; if (typeof propFunc === 'string' && propFunc.indexOf('func:this.props.reduxRouter') !== -1) { return this.props.reduxRouter[this.props.replace('func:this.props.reduxRouter.', '')]; } else if (typeof propFunc === 'string' && propFunc.indexOf('func:this.props') !== -1) { return this.props[this.props.replace('func:this.props.', '')]; } else if (typeof propFunc === 'string' && propFunc.indexOf('func:window') !== -1 && typeof window[propFunc.replace('func:window.', '')] === 'function') { return window[propFunc.replace('func:window.', '')]; } else if (typeof this.props[propFunc] === 'function') { return propFunc; } else { return function () {}; } } function getErrorStatus(state, name) { return state.formDataErrors && state.formDataErrors[name]; } function getValidStatus(state, name) { return state.formDataValid && state.formDataValid[name]; } function getFormElementHelp(hasError, state, name) { return hasError ? { color: 'isDanger', text: state.formDataErrors[name][0] } : undefined; } function getCustomErrorLabel(hasError, state, formelement) { return hasError ? _react2.default.createElement( 'div', { style: (0, _assign2.default)({ fontSize: 11, color: formelement.errorColor || '#ed6c63' }, formelement.customErrorProps) }, state.formDataErrors[formelement.name][0] ) : null; } function getCustomErrorIcon(hasError, isValid, state, formelement, iconStyle) { var iconVar = hasError ? formelement.errorIcon || 'fa fa-warning' : isValid ? formelement.validIcon || 'fa fa-check' : formelement.initialIcon ? formelement.initialIcon : ''; return formelement.errorIconRight || formelement.errorIconLeft ? _react2.default.createElement('i', { className: '__re-bulma_fa ' + iconVar, style: iconStyle }) : null; } function valueChangeHandler(formElement) { var _this = this; return function (event) { var text = event.target.value; // console.debug({ text, formElement, }); var updatedStateProp = {}; updatedStateProp[formElement.name] = text; _this.setState(updatedStateProp, function () { if (formElement.validateOnChange) { _this.validateFormElement({ formElement: formElement }); } }); }; } function getFormLabel(formElement) { return formElement.label ? formElement.layoutProps && formElement.layoutProps.horizontalform ? _react2.default.createElement( _reBulma.ControlLabel, formElement.labelProps, this && this.state && this.state[formElement.formdata_label] ? this.state[formElement.formdata_label] : formElement.label ) : _react2.default.createElement( _reBulma.Label, formElement.labelProps, this && this.state && this.state[formElement.formdata_label] ? this.state[formElement.formdata_label] : formElement.label ) : null; } function getInitialValue(formElement, state) { var formElementValue = formElement.value; if (!formElement.showNullValue && (state[formElement.name] === null || formElementValue === null || formElementValue === 'null')) { return ''; } else { var returnVal = typeof state[formElement.name] !== 'undefined' ? state[formElement.name] : formElementValue; if (formElement.momentFormat) { returnVal = (0, _moment2.default)(returnVal).format(formElement.momentFormat); } if (formElement.numeralFormat) { returnVal = (0, _numeral2.default)(returnVal).format(formElement.numeralFormat); } return returnVal; } } function getPassablePropsKeyEvents(passableProps, formElement) { var _this2 = this; if (formElement.keyPress) { var customKeyPress = function customKeyPress() {}; if (typeof formElement.keyPress === 'string' && formElement.keyPress.indexOf('func:this.props') !== -1) { customKeyPress = this.props[formElement.keyPress.replace('func:this.props.', '')]; } else if (typeof formElement.keyPress === 'string' && formElement.keyPress.indexOf('func:window') !== -1 && typeof window[formElement.keyPress.replace('func:window.', '')] === 'function') { customKeyPress = window[formElement.keyPress.replace('func:window.', '')].bind(this); // console.debug({ customKeyPress }); } passableProps.onKeyPress = function (e) { if (formElement.validateOnKeypress) { _this2.validateFormElement({ formElement: formElement }); } customKeyPress(e, formElement); // console.debug('custom press'); }; } else if (formElement.submitOnEnter) { passableProps.onKeyPress = function (e) { if (formElement.submitOnEnter && (e.key === 'Enter' || e.which === 13)) { _this2.submitForm(); } }; } if (formElement.onBlur) { var customonBlur = function customonBlur() {}; if (typeof formElement.onBlur === 'string' && formElement.onBlur.indexOf('func:this.props') !== -1) { customonBlur = this.props[formElement.onBlur.replace('func:this.props.', '')]; } else if (typeof formElement.onBlur === 'string' && formElement.onBlur.indexOf('func:window') !== -1 && typeof window[formElement.onBlur.replace('func:window.', '')] === 'function') { customonBlur = window[formElement.onBlur.replace('func:window.', '')].bind(this); } passableProps.onBlur = function (e) { if (formElement.validateOnBlur) { _this2.validateFormElement({ formElement: formElement }); } customonBlur(e, formElement); }; } if (formElement.onFocus) { var customFocus = function customFocus() {}; if (typeof formElement.onFocus === 'string' && formElement.onFocus.indexOf('func:this.props') !== -1) { customFocus = this.props[formElement.onFocus.replace('func:this.props.', '')]; } else if (typeof formElement.onFocus === 'string' && formElement.onFocus.indexOf('func:window') !== -1 && typeof window[formElement.onFocus.replace('func:window.', '')] === 'function') { customFocus = window[formElement.onFocus.replace('func:window.', '')].bind(this); } passableProps.onFocus = function (e) { customFocus(e, formElement); }; } if (formElement.keyUp) { var customkeyUp = function customkeyUp() {}; if (typeof formElement.keyUp === 'string' && formElement.keyUp.indexOf('func:this.props') !== -1) { customkeyUp = this.props[formElement.keyUp.replace('func:this.props.', '')]; } else if (typeof formElement.keyUp === 'string' && formElement.keyUp.indexOf('func:window') !== -1 && typeof window[formElement.keyUp.replace('func:window.', '')] === 'function') { customkeyUp = window[formElement.keyUp.replace('func:window.', '')].bind(this); } passableProps.onKeyUp = function (e) { if (formElement.validateOnKeyup) { _this2.validateFormElement({ formElement: formElement }); } customkeyUp(e, formElement); }; } return passableProps; } function getFormDatatable(options) { var _this3 = this; var formElement = options.formElement, i = options.i; var initialValue = getInitialValue(formElement, (0, _keys2.default)(this.state.formDataTables).length && this.state.formDataTables[formElement.name] ? this.state.formDataTables : (0, _assign2.default)({}, this.state, (0, _flat.unflatten)(this.state, { overwrite: true }))); // console.debug({ initialValue },this.state, this.state[formElement.name]); var hasError = getErrorStatus(this.state, formElement.name); var getTableHeaders = function getTableHeaders(row) { return row.map(function (rowkey) { var selectOptions = _this3.state.__formOptions && _this3.state.__formOptions[rowkey] ? _this3.state.__formOptions[rowkey] : []; // console.log({ selectOptions }); return { label: (0, _capitalize2.default)(rowkey), sortid: rowkey, sortable: formElement.sortable ? formElement.sortable : true, formtype: formElement.tableHeaderType && formElement.tableHeaderType[rowkey] ? formElement.tableHeaderType[rowkey] : 'text', defaultValue: formElement.tableHeaderDefaultValue && formElement.tableHeaderDefaultValue[rowkey] ? formElement.tableHeaderDefaultValue[rowkey] : selectOptions.length ? selectOptions[0].value : undefined, formoptions: selectOptions, footerFormElementPassProps: (0, _assign2.default)({ placeholder: (0, _capitalize2.default)(rowkey) }, formElement.footerFormElementPassProps) }; }); }; var useRowButtons = formElement.rowButtons; var ignoreTableHeaders = formElement.ignoreTableHeaders || []; var tableHeaders = formElement.headers ? formElement.useStandardHeaders ? getTableHeaders(formElement.headers.map(function (header) { return header.sortid; })) : formElement.headers : initialValue && Array.isArray(initialValue) && initialValue.length ? getTableHeaders((0, _keys2.default)(initialValue[0]).filter(function (header) { return ignoreTableHeaders.indexOf(header) === -1; })) : []; tableHeaders = useRowButtons ? tableHeaders.concat({ label: formElement.rowOptionsLabel || '', formtype: false, formRowButtons: true, formRowButtonProps: formElement.formRowButtonProps }) : tableHeaders.concat({ label: '', formtype: false }); var passedProps = (0, _assign2.default)({}, this.props, { selectEntireRow: formElement.selectEntireRow, insertSelectedRowHeaderIndex: formElement.insertSelectedRowHeaderIndex, selectOptionSortId: formElement.selectOptionSortId, selectOptionSortIdLabel: formElement.selectOptionSortIdLabel, flattenRowData: formElement.flattenRowData, addNewRows: formElement.addNewRows, sortable: formElement.sortable, replaceButton: false, uploadAddButton: true, useInputRows: formElement.useInputRows, rows: initialValue, headers: tableHeaders, limit: 5000, hasPagination: false, tableForm: true }, formElement.passProps); // formElement.datalist, // console.log({ tableHeaders, useRowButtons,passedProps }); // console.debug({tableHeaders}) // let shape ={};// this is the header of of the footer which has elements for new insert // let inlineshape ={};// if true, should look like a regular form row, else form below // // console.debug({formElement,initialValue, },'this.state',this.state); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_ResponsiveTable2.default, (0, _extends3.default)({}, passedProps, { onChange: function onChange(newvalue) { var selectedRowData = formElement.selectEntireRow && (newvalue.selectedRowData || newvalue.selectedRowIndex) ? (0, _defineProperty3.default)({}, formElement.name + '__tabledata', { selectedRowData: newvalue.selectedRowData, selectedRowIndex: newvalue.selectedRowIndex }) : {}; var flattenedData = _this3.props.flattenFormData ? (0, _flat2.default)((0, _assign2.default)({}, selectedRowData, (0, _defineProperty3.default)({}, formElement.name, newvalue.rows))) : {}; var updatedStateProp = (0, _assign2.default)((0, _defineProperty3.default)({ formDataTables: (0, _assign2.default)({}, _this3.state.formDataTables, (0, _defineProperty3.default)({}, formElement.name, newvalue.rows)) }, formElement.name, newvalue.rows), flattenedData, selectedRowData); _this3.setState(updatedStateProp); }, value: initialValue })), getCustomErrorLabel(hasError, this.state, formElement) ); } function getFormDatalist(options) { var _this4 = this; var formElement = options.formElement, i = options.i; var initialValue = getInitialValue(formElement, (0, _assign2.default)({}, this.state, (0, _flat.unflatten)(this.state))); var hasError = getErrorStatus(this.state, formElement.name); var passedProps = (0, _assign2.default)({}, this.props, { wrapperProps: { style: { display: 'flex', width: '100%', flex: '5', alignItems: 'stretch', flexDirection: 'column' } }, passableProps: { help: getFormElementHelp(hasError, this.state, formElement.name), color: hasError ? 'isDanger' : undefined, icon: hasError ? formElement.errorIcon || 'fa fa-warning' : undefined, placeholder: formElement.placeholder, style: { width: '100%' } } }, formElement.datalist); // console.debug({formElement,initialValue, },'this.state',this.state); // console.debug({ passedProps }); if (formElement.datalist.staticSearch) { // let datalistdata = this.state[formElement.name]; var datalistdata = []; if (this.props.__formOptions && this.props.__formOptions[formElement.name]) { datalistdata = this.props.__formOptions[formElement.name]; } else { datalistdata = this.props.formdata[(0, _pluralize2.default)(formElement.datalist.entity)] || []; } passedProps.datalistdata = datalistdata; } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_ResponsiveDatalist2.default, (0, _extends3.default)({}, passedProps, { onChange: function onChange(newvalue) { var updatedStateProp = {}; updatedStateProp[formElement.name] = newvalue; _this4.setState(updatedStateProp); }, value: initialValue })) ); } function getFormMaskedInput(options) { var _this5 = this; var formElement = options.formElement, i = options.i, onChange = options.onChange; var initialValue = getInitialValue(formElement, this.state); var getPassablePropkeyevents = getPassablePropsKeyEvents.bind(this); var fileClassname = '__reactadmin_file_' + formElement.name; var hasError = getErrorStatus(this.state, formElement.name); var isValid = getValidStatus(this.state, formElement.name); var hasValue = formElement.name && this.state[formElement.name] ? true : false; var passableProps = (0, _assign2.default)({ type: 'text', className: '__re-bulma_input' }, formElement.passProps); if (typeof initialValue !== 'string') { initialValue = (0, _stringify2.default)(initialValue, null, 2); } if (formElement.disableOnChange) { onChange = function onChange() {}; } else if (!onChange) { onChange = function onChange(event) { var text = event.target.value; var updatedStateProp = {}; if (passableProps && passableProps.multiple) { document.querySelector('.' + fileClassname + ' input').setAttribute('multiple', true); } updatedStateProp[formElement.name] = passableProps.maxLength ? text.substring(0, passableProps.maxLength) : text; _this5.setState(updatedStateProp); }; } passableProps = getPassablePropkeyevents(passableProps, formElement); if (passableProps && passableProps.multiple) { var t = (0, _setImmediate3.default)(function () { document.querySelector('.' + fileClassname + ' input').setAttribute('multiple', true); (0, _clearImmediate3.default)(t); }); } formElement.customErrorProps = formElement.customErrorProps ? (0, _assign2.default)({}, { marginTop: '6px' }, formElement.customErrorProps) : { marginTop: '6px' }; var mask = []; if (formElement.createNumberMask && passableProps.mask.indexOf('func:window') !== -1 && typeof window[passableProps.mask.replace('func:window.', '')] === 'function') { var numberMaskConfig = (0, _typeof3.default)(window[passableProps.mask.replace('func:window.', '')].call(this, formElement)) === 'object' ? window[passableProps.mask.replace('func:window.', '')].call(this, formElement) : {}; mask = (0, _createNumberMask2.default)(numberMaskConfig); } else if (passableProps.mask.indexOf('func:window') !== -1 && typeof window[passableProps.mask.replace('func:window.', '')] === 'function') { mask = window[passableProps.mask.replace('func:window.', '')].bind(this, formElement); } var wrapperProps = (0, _assign2.default)({ className: '__re-bulma_control' }, formElement.wrapperProps); wrapperProps.className = (hasError || isValid || formElement.initialIcon) && (formElement.errorIconRight || formElement.errorIconLeft) ? formElement.errorIconRight ? wrapperProps.className + ' __re-bulma_has-icon __re-bulma_has-icon-right' : wrapperProps.className + ' __re-bulma_has-icon __re-bulma_has-icon-left' : wrapperProps.className; return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps, { initialIcon: formElement.initialIcon, isValid: isValid, hasError: hasError, hasValue: hasValue }), getFormLabel(formElement), _react2.default.createElement( 'span', wrapperProps, _react2.default.createElement(_reactTextMask2.default, (0, _extends3.default)({}, passableProps, { mask: mask, className: hasError ? passableProps.className + ' __re-bulma_is-danger' : passableProps.className, color: hasError ? 'isDanger' : undefined, onChange: onChange, placeholder: formElement.placeholder, value: initialValue })), getCustomErrorIcon(hasError, isValid, this.state, formElement), getCustomErrorLabel(hasError, this.state, formElement) ) ); } function getFormTextInputArea(options) { var _this6 = this; var formElement = options.formElement, i = options.i, onChange = options.onChange; var initialValue = getInitialValue(formElement, this.state); //formElement.value || this.state[ formElement.name ] || getPropertyAttribute({ element:formElement, property:this.state, }); var getPassablePropkeyevents = getPassablePropsKeyEvents.bind(this); var fileClassname = '__reactadmin_file_' + formElement.name; var hasError = getErrorStatus(this.state, formElement.name); var isValid = getValidStatus(this.state, formElement.name); var hasValue = formElement.name && this.state[formElement.name] ? true : false; var passableProps = (0, _assign2.default)({ type: formElement.type || 'text' }, formElement.passProps); if (passableProps && passableProps.type === 'file') { passableProps.className = fileClassname; } if (typeof initialValue !== 'string') { initialValue = (0, _stringify2.default)(initialValue, null, 2); } if (formElement.disableOnChange) { onChange = function onChange() {}; } else if (!onChange) { onChange = function onChange(event) { var text = event.target.value; var updatedStateProp = {}; if (passableProps && passableProps.multiple) { document.querySelector('.' + fileClassname + ' input').setAttribute('multiple', true); } if (passableProps && passableProps.type === 'file') { updatedStateProp.formDataFiles = (0, _assign2.default)({}, _this6.state.formDataFiles, (0, _defineProperty3.default)({}, formElement.name, document.querySelector('.' + fileClassname + ' input'))); } else { updatedStateProp[formElement.name] = passableProps.maxLength ? text.substring(0, passableProps.maxLength) : text; } if (formElement.onChangeFilter) { var onChangeFunc = getFunctionFromProps.call(_this6, { propFunc: formElement.onChangeFilter }); updatedStateProp = onChangeFunc.call(_this6, (0, _assign2.default)({}, _this6.state, updatedStateProp), updatedStateProp); } _this6.setState(updatedStateProp); }; } passableProps = getPassablePropkeyevents(passableProps, formElement); // console.debug({ passableProps }); if (passableProps && passableProps.multiple) { var t = (0, _setImmediate3.default)(function () { document.querySelector('.' + fileClassname + ' input').setAttribute('multiple', true); (0, _clearImmediate3.default)(t); }); } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps, { initialIcon: formElement.initialIcon, isValid: isValid, hasError: hasError, hasValue: hasValue }), getFormLabel(formElement), _react2.default.createElement(_reBulma.Input, (0, _extends3.default)({}, passableProps, { help: getFormElementHelp(hasError, this.state, formElement.name), color: hasError ? 'isDanger' : undefined, icon: hasError ? formElement.errorIcon || 'fa fa-warning' : isValid ? formElement.validIcon || 'fa fa-check' : formElement.initialIcon ? formElement.initialIcon : undefined, hasIconRight: formElement.errorIconRight, onChange: onChange, placeholder: formElement.placeholder, value: initialValue })) ); } function getFormTextArea(options) { var formElement = options.formElement, i = options.i, _onChange = options.onChange; var initialValue = getInitialValue(formElement, this.state); //formElement.value || this.state[ formElement.name ] || getPropertyAttribute({ element:formElement, property:this.state, }); var hasError = getErrorStatus(this.state, formElement.name); var isValid = getValidStatus(this.state, formElement.name); var hasValue = formElement.name && this.state[formElement.name] ? true : false; var passableProps = (0, _assign2.default)({}, formElement.passProps); var getPassablePropkeyevents = getPassablePropsKeyEvents.bind(this); passableProps = getPassablePropkeyevents(passableProps, formElement); if (typeof initialValue !== 'string') { initialValue = (0, _stringify2.default)(initialValue, null, 2); } if (formElement.disableOnChange) { _onChange = function onChange() { return function () {}; }; } else if (!_onChange) { _onChange = valueChangeHandler.bind(this, formElement); } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps, { initialIcon: formElement.initialIcon, isValid: isValid, hasError: hasError, hasValue: hasValue }), getFormLabel(formElement), _react2.default.createElement(_reBulma.Textarea, (0, _extends3.default)({}, passableProps, { onChange: function onChange(event) { return _onChange()(event); }, help: getFormElementHelp(hasError, this.state, formElement.name), icon: hasError ? formElement.errorIcon || 'fa fa-warning' : isValid ? formElement.validIcon || 'fa fa-check' : formElement.initialIcon ? formElement.initialIcon : undefined, color: hasError ? 'isDanger' : undefined, hasIconRight: formElement.errorIconRight, placeholder: formElement.placeholder || formElement.label, value: this.state[formElement.name] || initialValue })) ); } function getFormSelect(options) { var formElement = options.formElement, i = options.i, _onChange2 = options.onChange; var initialValue = getInitialValue(formElement, this.state); //formElement.value || this.state[ formElement.name ] || getPropertyAttribute({ element:formElement, property:this.state, }); var hasError = getErrorStatus(this.state, formElement.name); var isValid = getValidStatus(this.state, formElement.name); var hasValue = formElement.name && this.state[formElement.name] ? true : false; var selectOptions = this.state.__formOptions && this.state.__formOptions[formElement.name] ? this.state.__formOptions[formElement.name] : formElement.options || []; var iconStyle = { display: 'inline-block', fontSize: '1rem', height: '24px', lineHeight: '24px', textAlign: 'center', verticalAlign: 'top', width: '24px', color: '#aeb1b5', pointerEvents: 'none', position: 'absolute', top: '5px', zIndex: '4', right: '24px' }; if (typeof initialValue !== 'string') { initialValue = (0, _stringify2.default)(initialValue, null, 2); } if (formElement.disableOnChange) { _onChange2 = function onChange() { return function () {}; }; } else if (!_onChange2) { _onChange2 = valueChangeHandler.bind(this, formElement); } var customCallbackfunction = void 0; if (formElement.customOnChange) { if (formElement.customOnChange.indexOf('func:this.props') !== -1) { customCallbackfunction = this.props[formElement.customOnChange.replace('func:this.props.', '')]; } else if (formElement.customOnChange.indexOf('func:window') !== -1 && typeof window[formElement.customOnChange.replace('func:window.', '')] === 'function') { customCallbackfunction = window[formElement.customOnChange.replace('func:window.', '')].bind(this, formElement); } } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps, { initialIcon: formElement.initialIcon, isValid: isValid, hasError: hasError, hasValue: hasValue }), getFormLabel(formElement), _react2.default.createElement( 'span', { className: '__re-bulma_control', style: { position: 'relative', display: 'block' } }, _react2.default.createElement( _reBulma.Select, (0, _extends3.default)({}, formElement.passProps, { style: (0, _assign2.default)({}, { flex: 'inherit', marginBottom: 0 }, formElement.passProps && formElement.passProps.style ? formElement.passProps.style : {}), help: getFormElementHelp(hasError, this.state, formElement.name), color: hasError ? 'isDanger' : undefined, onChange: function onChange(event) { _onChange2()(event); if (customCallbackfunction) customCallbackfunction(event); }, placeholder: formElement.placeholder || formElement.label, value: this.state[formElement.name] || initialValue }), selectOptions.map(function (opt, k) { return _react2.default.createElement( 'option', { key: k, disabled: opt.disabled, value: opt.value }, opt.label || opt.value ); }) ), !formElement.errorIconLeft ? getCustomErrorIcon(hasError, isValid, this.state, formElement, iconStyle) : null ) ); } function getFormCheckbox(options) { var _this7 = this; var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; var hasError = getErrorStatus(this.state, formElement.name); var hasValue = formElement.name && this.state[formElement.name] ? true : false; var getFormDataLabel = getFormLabel.bind(this); if (formElement.disableOnChange) { onValueChange = function onValueChange() {}; } else if (!onValueChange) { onValueChange = function onValueChange() /*event*/{ // let text = event.target.value; var updatedStateProp = {}; // console.debug('before', { updatedStateProp, formElement, }, event.target); if (formElement.type === 'radio') { // event.target.value = 'on'; updatedStateProp[_this7.state[formElement.formdata_name] || formElement.name] = _this7.state[formElement.formdata_value] || formElement.value || 'on'; } else { updatedStateProp[_this7.state[formElement.formdata_name] || formElement.name] = _this7.state[_this7.state[formElement.formdata_name] || formElement.name] ? 0 : 'on'; } // console.debug('after', { updatedStateProp, formElement, }, event.target); _this7.setState(updatedStateProp, function () { if (formElement.validateOnChange) { _this7.validateFormElement({ formElement: formElement }); } }); }; } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps, { hasError: hasError, hasValue: hasValue }), getFormDataLabel(formElement), _react2.default.createElement('input', (0, _extends3.default)({}, formElement.passProps, { type: formElement.type || 'checkbox', name: this.state[formElement.formdata_name] || formElement.name, checked: formElement.type === 'radio' ? this.state[formElement.name] === formElement.value : this.state[formElement.name], onChange: onValueChange })), _react2.default.createElement( 'span', formElement.placeholderProps, this.state[formElement.formdata_placeholder] || formElement.placeholder ), getCustomErrorLabel(hasError, this.state, formElement) ); } function getRawInput(options) { var _this8 = this; var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; var hasError = getErrorStatus(this.state, formElement.name); var wrapperProps = (0, _assign2.default)({ style: { overflow: 'auto', backgroundColor: 'white', border: hasError ? '1px solid #ed6c63' : '1px solid #d3d6db', borderRadius: 3, height: 'auto', boxShadow: 'inset 0 1px 2px rgba(17,17,17,.1)' } }, formElement.wrapperProps); var passableProps = formElement.passProps; var getPassablePropkeyevents = getPassablePropsKeyEvents.bind(this); passableProps = getPassablePropkeyevents(passableProps, formElement); if (!onValueChange) { onValueChange = function onValueChange() /*event*/{ // let text = event.target.value; var updatedStateProp = {}; updatedStateProp[formElement.name] = _this8.state[formElement.name] ? false : 'on'; // console.log({ updatedStateProp }); _this8.setState(updatedStateProp); }; } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement( 'div', wrapperProps, _react2.default.createElement('input', (0, _extends3.default)({}, passableProps, { type: formElement.type, checked: this.state[formElement.name], onChange: onValueChange })), getCustomErrorLabel(hasError, this.state, formElement) ) ); } function getSliderInput(options) { var _this9 = this; var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; // const Handle = ( // ); var hasError = getErrorStatus(this.state, formElement.name); var wrapperProps = (0, _assign2.default)({ style: { overflow: 'auto', backgroundColor: 'white', border: hasError ? '1px solid #ed6c63' : '1px solid #d3d6db', borderRadius: 3, height: 'auto', boxShadow: 'inset 0 1px 2px rgba(17,17,17,.1)' } }, formElement.wrapperProps); var passableProps = (0, _assign2.default)({}, formElement.passProps); var customCallbackfunction = function customCallbackfunction() {}; if (formElement.handle) { passableProps.handle = function (_ref2) { var value = _ref2.value, offset = _ref2.offset; return _react2.default.createElement( 'div', { style: { left: offset + '%' }, className: '__reactadmin_slider__handle' }, _react2.default.createElement('span', { className: '__reactadmin_arrow-left' }), formElement.numeralFormat ? (0, _numeral2.default)(value).format(formElement.numeralFormat) : value, _react2.default.createElement('span', { className: '__reactadmin_arrow-right' }) ); }; } if (formElement.customOnChange) { if (formElement.customOnChange.indexOf('func:this.props') !== -1) { customCallbackfunction = this.props[formElement.customOnChange.replace('func:this.props.', '')]; } else if (formElement.customOnChange.indexOf('func:window') !== -1 && typeof window[formElement.customOnChange.replace('func:window.', '')] === 'function') { customCallbackfunction = window[formElement.customOnChange.replace('func:window.', '')].bind(this); } } if (!onValueChange) { onValueChange = function onValueChange(val) { // console.debug({ val }); var updatedStateProp = {}; updatedStateProp[formElement.name] = val; // console.log({ updatedStateProp }); _this9.setState(updatedStateProp); customCallbackfunction(val); }; } return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement( 'div', wrapperProps, _react2.default.createElement( _rcSlider2.default, (0, _extends3.default)({}, passableProps, { onChange: onValueChange }), formElement.leftLabel ? _react2.default.createElement( 'span', { className: '__reactadmin_slider__label __reactadmin_slider__label_left' }, formElement.leftLabel ) : null, formElement.rightLabel ? _react2.default.createElement( 'span', { className: '__reactadmin_slider__label __reactadmin_slider__label_right' }, formElement.rightLabel ) : null ), getCustomErrorLabel(hasError, this.state, formElement) ) ); } function getHiddenInput(options) { var formElement = options.formElement, i = options.i; var initialValue = this.state[formElement.formdata_name] || this.state[formElement.name] || formElement.value; return _react2.default.createElement('input', (0, _extends3.default)({ key: i }, formElement.passProps, { type: 'hidden', value: initialValue })); } function getImage(options) { var formElement = options.formElement, i = options.i; var initialValue = getInitialValue(formElement, this.state); var imageProps = (0, _assign2.default)({ style: { textAlign: 'center' } }, formElement.passProps); //formElement.value || this.state[ formElement.name ] || getPropertyAttribute({ element:formElement, property:this.state, }); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), formElement.link ? _react2.default.createElement( 'a', { href: initialValue, target: '_blank' }, _react2.default.createElement(_reBulma.Image, (0, _extends3.default)({ key: i }, imageProps, { src: this.state[formElement.preview] || initialValue })) ) : _react2.default.createElement(_reBulma.Image, (0, _extends3.default)({ key: i }, imageProps, { src: this.state[formElement.preview] || initialValue })) ); } function getFormLink(options) { var formElement = options.formElement, i = options.i, button = options.button; var wrapperProps = (0, _assign2.default)({ style: _styles2.default.inputStyle }, formElement.wrapperProps); var linkWrapperProps = (0, _assign2.default)({ style: { padding: '0 5px' } }, formElement.linkWrapperProps); // console.debug({ linkWrapperProps, formElement }); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement( 'span', wrapperProps, _react2.default.createElement( 'span', linkWrapperProps, button ) ) ); } function getFormGroup(options) { var formElement = options.formElement, i = options.i, groupElements = options.groupElements; return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement( _reBulma.Group, formElement.passProps, groupElements ) ); } function getFormCode(options) { var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; var hasError = getErrorStatus(this.state, formElement.name); var initialVal = getInitialValue(formElement, this.state); var CodeMirrorProps = (0, _assign2.default)({ codeMirrorProps: (0, _assign2.default)({ lineNumbers: true, value: formElement.stringify ? (0, _stringify2.default)(initialVal, null, 2) : initialVal, //formElement.value || this.state[ formElement.name ] || getPropertyAttribute({ element:formElement, property:this.state, }); //value: this.state[ formElement.name ] || formElement.value, style: { minHeight: 200 }, lineWrapping: true, onChange: !onValueChange ? function (newvalue) { // console.log({ newvalue }); newvalue = formElement.stringify ? JSON.parse(newvalue) : newvalue; var updatedStateProp = {}; updatedStateProp[formElement.name] = newvalue; this.setState(updatedStateProp); }.bind(this) : onValueChange }, formElement.codeMirrorProps), wrapperProps: (0, _assign2.default)({ style: { overflow: 'auto', backgroundColor: 'white', border: hasError ? '1px solid #ed6c63' : '1px solid #d3d6db', borderRadius: 3, height: 'auto', boxShadow: 'inset 0 1px 2px rgba(17,17,17,.1)' } }, formElement.codeMirrorWrapperProps) }, formElement.passProps); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_RACodeMirror2.default, (0, _extends3.default)({ key: i }, CodeMirrorProps)), getCustomErrorLabel(hasError, this.state, formElement) ); } function getFormEditor(options) { var _this10 = this; var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; var initialVal = getInitialValue(formElement, this.state); if (!onValueChange) { onValueChange = function onValueChange(newvalue) { // console.debug({ newvalue, }); var updatedStateProp = {}; updatedStateProp[formElement.name] = newvalue.target.value; _this10.setState(updatedStateProp); }; } // console.debug({ initialVal }); var EditorProps = (0, _assign2.default)({}, this.props, { // wrapperProps: { // style: { // overflow: 'hidden', // backgroundColor: 'white', // border: '1px solid #d3d6db', // borderRadius: 3, // minHeight:'2rem', // display:'flex', // boxShadow: 'inset 0 1px 2px rgba(17,17,17,.1)', // }, // }, passProps: { // toolbarStyle: { // borderTop: 'none', // borderLeft: 'none', // borderRight: 'none', // padding: '5px 0 0', // }, }, onChange: onValueChange }, formElement.passProps); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_PreviewEditor2.default, (0, _extends3.default)({ key: i }, EditorProps, { value: initialVal })) ); } function getFormDatePicker(options) { var formElement = options.formElement, i = options.i, onValueChange = options.onValueChange; var hasError = getErrorStatus(this.state, formElement.name); var initialVal = getInitialValue(formElement, this.state); var singleCustomOnChange = function singleCustomOnChange(_ref3) { var _this11 = this; var date = _ref3.date; this.setState((0, _defineProperty3.default)({}, formElement.name, date ? date.toISOString() : null), function () { if (formElement.validateOnChange) { _this11.validateFormElement({ formElement: formElement }); } }); }; var rangeCustomOnChange = function rangeCustomOnChange(_ref4) { var _this12 = this; var startDate = _ref4.startDate, endDate = _ref4.endDate; var combined_date = startDate.toISOString() + ';' + endDate.toISOString(); this.setState((0, _defineProperty3.default)({}, formElement.name, combined_date), function () { if (formElement.validateOnChange) { _this12.validateFormElement({ formElement: formElement }); } }); }; var SingleDatePickerProps = (0, _assign2.default)({}, { customOnChange: singleCustomOnChange.bind(this), initialDate: initialVal ? new _moment2.default(initialVal) : null }, formElement.passProps); var RangeDatePickerProps = (0, _assign2.default)({}, { customOnChange: rangeCustomOnChange.bind(this), initialDate: initialVal ? new _moment2.default(initialVal) : null }, formElement.passProps); if (formElement.type === 'singleDatePicker') { return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_SingleDatePickerWrapper2.default, (0, _extends3.default)({ key: i }, SingleDatePickerProps)), getCustomErrorLabel(hasError, this.state, formElement) ); } else if (formElement.type === 'rangeDatePicker') { return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement(_DateRangePickerWrapper2.default, (0, _extends3.default)({ key: i }, RangeDatePickerProps)), getCustomErrorLabel(hasError, this.state, formElement) ); } } function getFormSubmit(options) { var _this13 = this; var formElement = options.formElement, i = options.i; var passableProps = (0, _assign2.default)({ state: formElement.confirmModal && (0, _keys2.default)(this.state.formDataErrors).length > 0 ? 'isDisabled' : undefined }, formElement.passProps); return _react2.default.createElement( _FormItem2.default, (0, _extends3.default)({ key: i }, formElement.layoutProps), getFormLabel(formElement), _react2.default.createElement( _reBulma.Button, (0, _extends3.default)({}, passableProps, { onClick: function onClick() { var validated_formdata = _FormHelpers.validateForm.call(_this13, { formdata: _this13.state, validationErrors: {} }); var updateStateData = { formDataErrors: validated_formdata.validationErrors }; if (_this13.props.sendSubmitButtonVal) { updateStateData['submitButtonVal'] = formElement.value; } _this13.setState(updateStateData, function () { formElement.confirmModal && (0, _keys2.default)(_this13.state.formDataErrors).length < 1 ? _this13.props.createModal((0, _assign2.default)({ title: 'Please Confirm', text: { component: 'div', props: { style: { textAlign: 'center' }, className: '__ra_rf_fe_s_cm' }, children: [{ component: 'div', props: { className: '__ra_rf_fe_s_cm_t' }, children: formElement.confirmModal.textContent || '' }, { component: 'div', props: (0, _assign2.default)({ className: '__ra_rf_fe_s_cm_bc' }, formElement.confirmModal.buttonWrapperProps), children: [{ component: 'ResponsiveButton', props: (0, _assign2.default)({ style: { margin: 10 }, buttonProps: { size: 'isMedium', color: 'isPrimary' }, onClick: function onClick() { _this13.props.hideModal.call(_this13, 'last'); _this13.submitForm.call(_this13); }, onclickProps: 'last' }, formElement.confirmModal.yesButtonProps), children: formElement.confirmModal.yesButtonText || 'Yes' }, { component: 'ResponsiveButton', props: (0, _assign2.default)({ style: { margin: 10 }, buttonProps: { size: 'isMedium' }, onClick: 'func:this.props.hideModal', onclickProps: 'last' }, formElement.confirmModal.noButtonProps), children: formElement.confirmModal.noButtonText || 'No' }] }] } }, formElement.confirmModal)) : _this13.submitForm.call(_this13); }); } }), formElement.value ) ); } function getCardFooterItem(options) { var formElement = options.formElement, i = options.i; formElement.layoutProps = (0, _assign2.default)({ style: { cursor: 'pointer', textAlign: 'center' } }, formElement.layoutProps); return _react2.default.createElement( _reBulma.CardFooterItem, (0, _extends3.default)({ key: i }, formElement.layoutProps, { onClick: this.submitForm.bind(this) }), _react2.default.createElement( _reBulma.Label, formElement.passProps, formElement.value ) ); }