react-form-builder-devextreme
Version:
A complete form builder for react. Some changes to design
690 lines (687 loc) • 35.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _react = _interopRequireDefault(require("react"));
var _reactTextareaAutosize = _interopRequireDefault(require("react-textarea-autosize"));
var _draftJs = require("draft-js");
var _draftjsToHtml = _interopRequireDefault(require("draftjs-to-html"));
var _reactDraftWysiwyg = require("react-draft-wysiwyg");
var _dynamicOptionList = _interopRequireDefault(require("./dynamic-option-list"));
var _requests = require("./stores/requests");
var _UUID = _interopRequireDefault(require("./UUID"));
var _IntlMessages = _interopRequireDefault(require("./language-provider/IntlMessages"));
var _popup = require("devextreme-react/popup");
var _devextremeReact = require("devextreme-react");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var toolbar = {
options: ['inline', 'list', 'textAlign', 'fontSize', 'link', 'history'],
inline: {
inDropdown: false,
className: undefined,
options: ['bold', 'italic', 'underline', 'superscript', 'subscript']
}
};
var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Component) {
(0, _inherits2["default"])(FormElementsEdit, _React$Component);
var _super = _createSuper(FormElementsEdit);
function FormElementsEdit(props) {
var _this;
(0, _classCallCheck2["default"])(this, FormElementsEdit);
_this = _super.call(this, props);
_this.state = {
element: _this.props.element,
data: _this.props.data,
dirty: false
};
return _this;
}
(0, _createClass2["default"])(FormElementsEdit, [{
key: "toggleRequired",
value: function toggleRequired() {
// const this_element = this.state.element;
}
}, {
key: "editElementProp",
value: function editElementProp(elemProperty, targProperty, e) {
var _this2 = this;
// elemProperty could be content or label
// targProperty could be value or checked
var this_element = this.state.element;
this_element[elemProperty] = e.target[targProperty];
this.setState({
element: this_element,
dirty: true
}, function () {
if (targProperty === 'checked') {
_this2.updateElement();
}
});
}
}, {
key: "onEditorStateChange",
value: function onEditorStateChange(index, property, editorContent) {
// const html = draftToHtml(convertToRaw(editorContent.getCurrentContent())).replace(/<p>/g, '<div>').replace(/<\/p>/g, '</div>');
var html = (0, _draftjsToHtml["default"])((0, _draftJs.convertToRaw)(editorContent.getCurrentContent())).replace(/<p>/g, '').replace(/<\/p>/g, '').replace(/ /g, ' ').replace(/(?:\r\n|\r|\n)/g, ' ');
var this_element = this.state.element;
this_element[property] = html;
this.setState({
element: this_element,
dirty: true
});
}
}, {
key: "updateElement",
value: function updateElement() {
var this_element = this.state.element;
// to prevent ajax calls with no change
if (this.state.dirty) {
this.props.updateElement.call(this.props.preview, this_element);
this.setState({
dirty: false
});
}
}
}, {
key: "convertFromHTML",
value: function convertFromHTML(content) {
var newContent = (0, _draftJs.convertFromHTML)(content);
if (!newContent.contentBlocks || !newContent.contentBlocks.length) {
// to prevent crash when no contents in editor
return _draftJs.EditorState.createEmpty();
}
var contentState = _draftJs.ContentState.createFromBlockArray(newContent);
return _draftJs.EditorState.createWithContent(contentState);
}
}, {
key: "addOptions",
value: function addOptions() {
var _this3 = this;
var optionsApiUrl = document.getElementById('optionsApiUrl').value;
if (optionsApiUrl) {
(0, _requests.get)(optionsApiUrl).then(function (data) {
_this3.props.element.options = [];
var options = _this3.props.element.options;
data.forEach(function (x) {
// eslint-disable-next-line no-param-reassign
x.key = _UUID["default"].uuid();
options.push(x);
});
var this_element = _this3.state.element;
_this3.setState({
element: this_element,
dirty: true
});
});
}
}
}, {
key: "render",
value: function render() {
if (this.state.dirty) {
this.props.element.dirty = true;
}
var this_checked = this.props.element.hasOwnProperty('required') ? this.props.element.required : false;
var this_read_only = this.props.element.hasOwnProperty('readOnly') ? this.props.element.readOnly : false;
var this_default_today = this.props.element.hasOwnProperty('defaultToday') ? this.props.element.defaultToday : false;
var this_show_time_select = this.props.element.hasOwnProperty('showTimeSelect') ? this.props.element.showTimeSelect : false;
var this_show_time_select_only = this.props.element.hasOwnProperty('showTimeSelectOnly') ? this.props.element.showTimeSelectOnly : false;
var this_show_time_input = this.props.element.hasOwnProperty('showTimeInput') ? this.props.element.showTimeInput : false;
var this_checked_inline = this.props.element.hasOwnProperty('inline') ? this.props.element.inline : false;
var this_checked_bold = this.props.element.hasOwnProperty('bold') ? this.props.element.bold : false;
var this_checked_italic = this.props.element.hasOwnProperty('italic') ? this.props.element.italic : false;
var this_checked_center = this.props.element.hasOwnProperty('center') ? this.props.element.center : false;
var this_checked_page_break = this.props.element.hasOwnProperty('pageBreakBefore') ? this.props.element.pageBreakBefore : false;
//New for Visible and Hidden
var this_checked_visible = this.props.element.hasOwnProperty('visible') ? this.props.element.visible : true;
var this_checked_alternate_form = this.props.element.hasOwnProperty('alternateForm') ? this.props.element.alternateForm : false;
var _this$props$element = this.props.element,
canHavePageBreakBefore = _this$props$element.canHavePageBreakBefore,
canHaveAlternateForm = _this$props$element.canHaveAlternateForm,
canHaveDisplayHorizontal = _this$props$element.canHaveDisplayHorizontal,
canHaveOptionCorrect = _this$props$element.canHaveOptionCorrect,
canHaveOptionValue = _this$props$element.canHaveOptionValue;
var canHaveImageSize = this.state.element.element === 'Image' || this.state.element.element === 'Camera';
var this_files = this.props.files.length ? this.props.files : [];
if (this_files.length < 1 || this_files.length > 0 && this_files[0].id !== '') {
this_files.unshift({
id: '',
file_name: ''
});
}
var editorState;
if (this.props.element.hasOwnProperty('content')) {
editorState = this.convertFromHTML(this.props.element.content);
}
if (this.props.element.hasOwnProperty('label')) {
editorState = this.convertFromHTML(this.props.element.label);
}
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
className: "edit-panel"
}), /*#__PURE__*/_react["default"].createElement(_popup.Popup, {
visible: true,
dragEnabled: false,
hideOnOutsideClick: true,
showCloseButton: true,
showTitle: true,
title: this.props.element.text,
container: ".edit-panel",
width: 600,
height: 600,
onHiding: this.props.manualEditModeOff
}, /*#__PURE__*/_react["default"].createElement(_popup.Position, {
at: "center",
my: "center",
collision: "fit"
}), /*#__PURE__*/_react["default"].createElement(_devextremeReact.ScrollView, null, this.props.element.hasOwnProperty('content') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "text-to-display"
}), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
toolbar: toolbar,
defaultEditorState: editorState,
onBlur: this.updateElement.bind(this),
onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'content'),
stripPastedStyles: true
})), this.props.element.hasOwnProperty('file_path') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "fileSelect"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "choose-file"
}), ":"), /*#__PURE__*/_react["default"].createElement("select", {
id: "fileSelect",
className: "form-control",
defaultValue: this.props.element.file_path,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'file_path', 'value')
}, this_files.map(function (file) {
var this_key = "file_".concat(file.id);
return /*#__PURE__*/_react["default"].createElement("option", {
value: file.id,
key: this_key
}, file.file_name);
}))), this.props.element.hasOwnProperty('href') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement(_reactTextareaAutosize["default"], {
type: "text",
className: "form-control",
defaultValue: this.props.element.href,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'href', 'value')
})), this.props.element.hasOwnProperty('label') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", null, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "display-label"
})), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
toolbar: toolbar,
defaultEditorState: editorState,
onBlur: this.updateElement.bind(this),
onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'label'),
stripPastedStyles: true
}), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "is-required",
className: "custom-control-input",
type: "checkbox",
checked: this_checked,
value: true,
onChange: this.editElementProp.bind(this, 'required', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "is-required"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "required"
}))), this.props.element.hasOwnProperty('readOnly') && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "is-read-only",
className: "custom-control-input",
type: "checkbox",
checked: this_read_only,
value: true,
onChange: this.editElementProp.bind(this, 'readOnly', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "is-read-only"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "read-only"
}))), this.props.element.hasOwnProperty('defaultToday') && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "is-default-to-today",
className: "custom-control-input",
type: "checkbox",
checked: this_default_today,
value: true,
onChange: this.editElementProp.bind(this, 'defaultToday', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "is-default-to-today"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "default-to-today"
}), "?")), this.props.element.hasOwnProperty('showTimeSelect') && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "show-time-select",
className: "custom-control-input",
type: "checkbox",
checked: this_show_time_select,
value: true,
onChange: this.editElementProp.bind(this, 'showTimeSelect', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "show-time-select"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "show-time-select"
}), "?")), this_show_time_select && this.props.element.hasOwnProperty('showTimeSelectOnly') && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "show-time-select-only",
className: "custom-control-input",
type: "checkbox",
checked: this_show_time_select_only,
value: true,
onChange: this.editElementProp.bind(this, 'showTimeSelectOnly', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "show-time-select-only"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "show-time-select-only"
}), "?")), this.props.element.hasOwnProperty('showTimeInput') && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "show-time-input",
className: "custom-control-input",
type: "checkbox",
checked: this_show_time_input,
value: true,
onChange: this.editElementProp.bind(this, 'showTimeInput', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "show-time-input"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "show-time-input"
}), "?")), (this.state.element.element === 'RadioButtons' || this.state.element.element === 'Checkboxes') && canHaveDisplayHorizontal && /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "display-horizontal",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_inline,
value: true,
onChange: this.editElementProp.bind(this, 'inline', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "display-horizontal"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "display-horizontal"
})))), this.props.element.hasOwnProperty('src') && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "srcInput"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "link-to"
}), ":"), /*#__PURE__*/_react["default"].createElement("input", {
id: "srcInput",
type: "text",
className: "form-control",
defaultValue: this.props.element.src,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'src', 'value')
}))), canHaveImageSize && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "do-center",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_center,
value: true,
onChange: this.editElementProp.bind(this, 'center', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "do-center"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "center"
}), "?"))), /*#__PURE__*/_react["default"].createElement("div", {
className: "row"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "col-sm-3"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "elementWidth"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "width"
}), ":"), /*#__PURE__*/_react["default"].createElement("input", {
id: "elementWidth",
type: "text",
className: "form-control",
defaultValue: this.props.element.width,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'width', 'value')
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "col-sm-3"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "elementHeight"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "height"
}), ":"), /*#__PURE__*/_react["default"].createElement("input", {
id: "elementHeight",
type: "text",
className: "form-control",
defaultValue: this.props.element.height,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'height', 'value')
})))), this.state.element.element === 'FileUpload' && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "fileType"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "choose-file-type"
}), ":"), /*#__PURE__*/_react["default"].createElement("select", {
id: "fileType",
className: "form-control",
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'fileType', 'value')
}, [{
type: 'image, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, video/mp4,video/x-m4v,video/*',
typeName: 'All File Type'
}, {
type: 'image',
typeName: 'Image'
}, {
type: 'application/pdf',
typeName: 'PDF'
}, {
type: 'application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document',
typeName: 'Word'
}, {
type: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
typeName: 'Excel'
}, {
type: 'application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation',
typeName: 'Powerpoint'
}, {
type: 'video/mp4,video/x-m4v,video/*',
typeName: 'Videos'
}].map(function (file, index) {
return /*#__PURE__*/_react["default"].createElement("option", {
value: file.type,
key: index
}, file.typeName);
})))), this.state.element.element === 'Signature' && this.props.element.readOnly ? /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "variableKey"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "variable-key"
}), ":"), /*#__PURE__*/_react["default"].createElement("input", {
id: "variableKey",
type: "text",
className: "form-control",
defaultValue: this.props.element.variableKey,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'variableKey', 'value')
}), /*#__PURE__*/_react["default"].createElement("p", {
className: "help-block"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "variable-key-desc"
}), ".")) : /*#__PURE__*/_react["default"].createElement("div", null), canHavePageBreakBefore && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "print-options"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "page-break-before-element",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_page_break,
value: true,
onChange: this.editElementProp.bind(this, 'pageBreakBefore', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "page-break-before-element"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "page-break-before-elements"
}), "?"))), /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "visible"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "element-visible",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_visible,
value: true,
onChange: this.editElementProp.bind(this, 'visible', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "element-visible"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "element-visible"
}), "?"))), canHaveAlternateForm && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "alternate-signature-page"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "display-on-alternate",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_alternate_form,
value: true,
onChange: this.editElementProp.bind(this, 'alternateForm', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "display-on-alternate"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "display-on-alternate-signature-page"
}), "?"))), this.props.element.hasOwnProperty('step') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group-range"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "rangeStep"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "step"
})), /*#__PURE__*/_react["default"].createElement("input", {
id: "rangeStep",
type: "number",
className: "form-control",
defaultValue: this.props.element.step,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'step', 'value')
}))), this.props.element.hasOwnProperty('min_value') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group-range"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "rangeMin"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "min"
})), /*#__PURE__*/_react["default"].createElement("input", {
id: "rangeMin",
type: "number",
className: "form-control",
defaultValue: this.props.element.min_value,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'min_value', 'value')
}), /*#__PURE__*/_react["default"].createElement("input", {
type: "text",
className: "form-control",
defaultValue: this.props.element.min_label,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'min_label', 'value')
}))), this.props.element.hasOwnProperty('max_value') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group-range"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "rangeMax"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "max"
})), /*#__PURE__*/_react["default"].createElement("input", {
id: "rangeMax",
type: "number",
className: "form-control",
defaultValue: this.props.element.max_value,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'max_value', 'value')
}), /*#__PURE__*/_react["default"].createElement("input", {
type: "text",
className: "form-control",
defaultValue: this.props.element.max_label,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'max_label', 'value')
}))), this.props.element.hasOwnProperty('default_value') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group-range"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "defaultSelected"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "default-selected"
})), /*#__PURE__*/_react["default"].createElement("input", {
id: "defaultSelected",
type: "number",
className: "form-control",
defaultValue: this.props.element.default_value,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'default_value', 'value')
}))), this.props.element.hasOwnProperty('static') && this.props.element["static"] && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "text-style"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "do-bold",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_bold,
value: true,
onChange: this.editElementProp.bind(this, 'bold', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "do-bold"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "bold"
}))), /*#__PURE__*/_react["default"].createElement("div", {
className: "custom-control custom-checkbox"
}, /*#__PURE__*/_react["default"].createElement("input", {
id: "do-italic",
className: "custom-control-input",
type: "checkbox",
checked: this_checked_italic,
value: true,
onChange: this.editElementProp.bind(this, 'italic', 'checked')
}), /*#__PURE__*/_react["default"].createElement("label", {
className: "custom-control-label",
htmlFor: "do-italic"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "italic"
})))), this.props.element.showDescription && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "questionDescription"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "description"
})), /*#__PURE__*/_react["default"].createElement(_reactTextareaAutosize["default"], {
type: "text",
className: "form-control",
id: "questionDescription",
defaultValue: this.props.element.description,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'description', 'value')
})), this.props.showCorrectColumn && this.props.element.canHaveAnswer && !this.props.element.hasOwnProperty('options') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "correctAnswer"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "correct-answer"
})), /*#__PURE__*/_react["default"].createElement("input", {
id: "correctAnswer",
type: "text",
className: "form-control",
defaultValue: this.props.element.correct,
onBlur: this.updateElement.bind(this),
onChange: this.editElementProp.bind(this, 'correct', 'value')
})), this.props.element.canPopulateFromApi && this.props.element.hasOwnProperty('options') && /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group"
}, /*#__PURE__*/_react["default"].createElement("label", {
className: "control-label",
htmlFor: "optionsApiUrl"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "populate-options-from-api"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "row"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "col-sm-6"
}, /*#__PURE__*/_react["default"].createElement("input", {
className: "form-control",
style: {
width: '100%'
},
type: "text",
id: "optionsApiUrl",
placeholder: "http://localhost:8080/api/optionsdata"
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "col-sm-6"
}, /*#__PURE__*/_react["default"].createElement("button", {
onClick: this.addOptions.bind(this),
className: "btn btn-success"
}, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
id: "populate"
}))))), this.props.element.hasOwnProperty('options') && /*#__PURE__*/_react["default"].createElement(_dynamicOptionList["default"], {
showCorrectColumn: this.props.showCorrectColumn,
canHaveOptionCorrect: canHaveOptionCorrect,
canHaveOptionValue: canHaveOptionValue,
data: this.props.preview.state.data,
updateElement: this.props.updateElement,
preview: this.props.preview,
element: this.props.element,
key: this.props.element.options.length
}))));
}
}]);
return FormElementsEdit;
}(_react["default"].Component);
FormElementsEdit.defaultProps = {
className: 'edit-element-fields'
};