nfttrace-form-builder
Version:
A complete form builder for react.
772 lines (727 loc) • 36.9 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
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 _paleteInputs = _interopRequireDefault(require("./palete-inputs"));
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', 'colorPicker'],
inline: {
inDropdown: false,
className: undefined,
options: ['bold', 'italic', 'underline', 'superscript', 'subscript']
}
};
var FormElementsEdit = /*#__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: "editPaleteElementProp",
value: function editPaleteElementProp(elemProperty, targProperty, e) {
var _this3 = 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];
if (elemProperty === 'rows' || elemProperty === 'cols') {
var totalItems = parseInt(this_element.rows) * parseInt(this_element.cols);
if (totalItems > 0) {
this_element.list = this.updateListSize(this_element.list, totalItems);
this.setState({
element: this_element,
dirty: true
}, function () {
if (targProperty === 'checked') {
_this3.updateElement();
}
});
}
}
}
}, {
key: "updateListSize",
value: function updateListSize(list, totalItems) {
var defaultItem = function defaultItem() {
return {
icon: "",
link: "",
text: '',
bgColor: "#429a62"
};
};
if (list.length < totalItems) {
// Add unique new objects to avoid shared references
return [].concat((0, _toConsumableArray2["default"])(list), (0, _toConsumableArray2["default"])(Array.from({
length: totalItems - list.length
}, defaultItem)));
} else {
// Trim excess items
return list.slice(0, totalItems);
}
}
}, {
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 _this4 = this;
var optionsApiUrl = document.getElementById('optionsApiUrl').value;
if (optionsApiUrl) {
(0, _requests.get)(optionsApiUrl).then(function (data) {
_this4.props.element.options = [];
var options = _this4.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 = _this4.state.element;
_this4.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;
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: "clearfix"
}, /*#__PURE__*/_react["default"].createElement("h4", {
className: "float-left"
}, this.props.element.text), /*#__PURE__*/_react["default"].createElement("i", {
className: "float-right fas fa-times dismiss-edit",
onClick: this.props.manualEditModeOff
})), 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), !this.props.element.hasOwnProperty('rows') && /*#__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',
typeName: 'All File Type'
}, {
type: 'image',
typeName: 'Image'
}, {
type: 'application/pdf',
typeName: 'PDF'
}, {
type: 'video/mp4',
typeName: 'MP4 Video'
}].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"
}), "?"))), 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
}), this.props.element.element === 'Palette' && this.props.element.hasOwnProperty('rows') && /*#__PURE__*/_react["default"].createElement("div", {
className: ""
}, /*#__PURE__*/_react["default"].createElement("h4", {
className: "mb-2 fw-bold"
}, "Grid Options"), /*#__PURE__*/_react["default"].createElement("div", {
className: "d-flex w-100",
style: {
gap: '10px'
}
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group w-100"
}, /*#__PURE__*/_react["default"].createElement("label", null, "Rows:"), /*#__PURE__*/_react["default"].createElement("input", {
type: "number",
className: "form-control",
min: 1,
max: 5,
placeholder: "Enter number of rows",
defaultValue: this.props.element.rows,
onBlur: this.updateElement.bind(this),
onChange: this.editPaleteElementProp.bind(this, 'rows', 'value')
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "form-group w-100"
}, /*#__PURE__*/_react["default"].createElement("label", null, "Columns:"), /*#__PURE__*/_react["default"].createElement("input", {
type: "number",
className: "form-control",
min: 1,
max: 5,
placeholder: "Enter number of rows",
defaultValue: this.props.element.cols,
onBlur: this.updateElement.bind(this),
onChange: this.editPaleteElementProp.bind(this, 'cols', 'value')
})))), this.props.element.element === 'Palette' && /*#__PURE__*/_react["default"].createElement(_paleteInputs["default"], {
element: this.props.element,
preview: this.props.preview,
data: this.props.preview.state.data,
updateElement: this.props.updateElement,
key: this.props.element.list.length,
baseUrl: this.props.baseUrl
}));
}
}]);
return FormElementsEdit;
}(_react["default"].Component);
exports["default"] = FormElementsEdit;
FormElementsEdit.defaultProps = {
className: 'edit-element-fields'
};