@goldenpine/react-form-builder2 0.20.3-build.2 → 0.20.3-build.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/845.app.js +1 -1
- package/dist/app.css +1 -1
- package/dist/app.css.map +1 -1
- package/dist/app.js +1 -1
- package/lib/form-elements/component-label.js +20 -7
- package/lib/form-elements/custom-element.js +1 -1
- package/lib/form-elements/date-picker.js +1 -1
- package/lib/form-elements/index.js +168 -83
- package/lib/form-elements-edit.js +177 -102
- package/lib/form-validator.js +3 -3
- package/lib/form.js +1 -1
- package/lib/language-provider/locales/en-us.json +7 -10
- package/lib/language-provider/locales/fa-ir.json +7 -2
- package/lib/language-provider/locales/it-it.json +6 -1
- package/lib/language-provider/locales/vi-vn.json +25 -7
- package/lib/multi-column/dustbin.js +3 -1
- package/lib/preview.js +120 -6
- package/lib/sortable-element.js +8 -7
- package/lib/toolbar.js +3 -1
- package/package.json +3 -3
|
@@ -13,17 +13,30 @@ var ComponentLabel = function ComponentLabel(props) {
|
|
|
13
13
|
if (!labelText) {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
// Since we use <div> to replace <span> in the label in form-elements-edit.jsx to support multiple-line labels,
|
|
18
|
+
// we need to ensure that the required label, *, is inserted correctly.
|
|
19
|
+
// If it's simply appended the label string, it will show on a new line.
|
|
20
|
+
// The workaround is to insert it before the first closing </div> or </li> tag if it exists,
|
|
21
|
+
// so it appears at the end of the first line of the label.
|
|
22
|
+
var updatedLabel = labelText;
|
|
23
|
+
if (hasRequiredLabel) {
|
|
24
|
+
var insertSpan = '<span class="label-required" style="color:red;">*</span>';
|
|
25
|
+
var closingTagRegex = /<\/(div|li)>/i; // case-insensitive match for </div> or </li>
|
|
26
|
+
|
|
27
|
+
if (closingTagRegex.test(labelText)) {
|
|
28
|
+
updatedLabel = labelText.replace(closingTagRegex, "".concat(insertSpan, "</$1>"));
|
|
29
|
+
} else {
|
|
30
|
+
// Neither </div> nor </li> found — append at the end
|
|
31
|
+
updatedLabel = labelText + insertSpan;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
16
34
|
return /*#__PURE__*/_react["default"].createElement("label", {
|
|
17
35
|
className: props.className || 'form-label'
|
|
18
36
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
19
37
|
dangerouslySetInnerHTML: {
|
|
20
|
-
__html:
|
|
21
|
-
}
|
|
22
|
-
}), hasRequiredLabel && /*#__PURE__*/_react["default"].createElement("span", {
|
|
23
|
-
className: "label-required",
|
|
24
|
-
style: {
|
|
25
|
-
color: "red"
|
|
38
|
+
__html: updatedLabel
|
|
26
39
|
}
|
|
27
|
-
}
|
|
40
|
+
}));
|
|
28
41
|
};
|
|
29
42
|
var _default = exports["default"] = ComponentLabel;
|
|
@@ -57,7 +57,7 @@ var CustomElement = /*#__PURE__*/function (_Component) {
|
|
|
57
57
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), bare ? /*#__PURE__*/_react["default"].createElement(Element, (0, _extends2["default"])({
|
|
58
58
|
data: this.props.data
|
|
59
59
|
}, this.props.data.props, props)) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
60
|
-
className: "
|
|
60
|
+
className: "mb-3"
|
|
61
61
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], (0, _extends2["default"])({
|
|
62
62
|
className: "form-label"
|
|
63
63
|
}, this.props)), /*#__PURE__*/_react["default"].createElement(Element, (0, _extends2["default"])({
|
|
@@ -80,7 +80,7 @@ var DatePicker = /*#__PURE__*/function (_React$Component) {
|
|
|
80
80
|
className: baseClasses,
|
|
81
81
|
style: _objectSpread({}, this.props.style)
|
|
82
82
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
83
|
-
className: "
|
|
83
|
+
className: "mb-3"
|
|
84
84
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", null, readOnly && /*#__PURE__*/_react["default"].createElement("input", {
|
|
85
85
|
type: "text",
|
|
86
86
|
name: props.name,
|
|
@@ -19,7 +19,7 @@ var _fileSaver = require("file-saver");
|
|
|
19
19
|
var _react = _interopRequireDefault(require("react"));
|
|
20
20
|
var _reactSelect = _interopRequireDefault(require("react-select"));
|
|
21
21
|
var _reactSignatureCanvas = _interopRequireDefault(require("react-signature-canvas"));
|
|
22
|
-
var _reactBootstrapSlider = _interopRequireDefault(require("react-bootstrap-slider"));
|
|
22
|
+
var _reactBootstrapSlider = _interopRequireDefault(require("@goldenpine/react-bootstrap-slider"));
|
|
23
23
|
var _starRating = _interopRequireDefault(require("./star-rating"));
|
|
24
24
|
var _datePicker = _interopRequireDefault(require("./date-picker"));
|
|
25
25
|
var _componentHeader = _interopRequireDefault(require("./component-header"));
|
|
@@ -86,7 +86,7 @@ var Paragraph = /*#__PURE__*/function (_React$Component2) {
|
|
|
86
86
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
87
87
|
style: _objectSpread({}, this.props.style),
|
|
88
88
|
className: baseClasses
|
|
89
|
-
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("
|
|
89
|
+
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
90
90
|
className: classNames,
|
|
91
91
|
dangerouslySetInnerHTML: {
|
|
92
92
|
__html: _myxss["default"].process(this.props.data.content)
|
|
@@ -178,7 +178,7 @@ var TextInput = /*#__PURE__*/function (_React$Component5) {
|
|
|
178
178
|
style: _objectSpread({}, this.props.style),
|
|
179
179
|
className: baseClasses
|
|
180
180
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
-
className: "
|
|
181
|
+
className: "mb-3"
|
|
182
182
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("input", props)));
|
|
183
183
|
}
|
|
184
184
|
}]);
|
|
@@ -214,7 +214,7 @@ var EmailInput = /*#__PURE__*/function (_React$Component6) {
|
|
|
214
214
|
style: _objectSpread({}, this.props.style),
|
|
215
215
|
className: baseClasses
|
|
216
216
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
217
|
-
className: "
|
|
217
|
+
className: "mb-3"
|
|
218
218
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("input", props)));
|
|
219
219
|
}
|
|
220
220
|
}]);
|
|
@@ -250,7 +250,7 @@ var PhoneNumber = /*#__PURE__*/function (_React$Component7) {
|
|
|
250
250
|
style: _objectSpread({}, this.props.style),
|
|
251
251
|
className: baseClasses
|
|
252
252
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
253
|
-
className: "
|
|
253
|
+
className: "mb-3"
|
|
254
254
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("input", props)));
|
|
255
255
|
}
|
|
256
256
|
}]);
|
|
@@ -286,7 +286,7 @@ var NumberInput = /*#__PURE__*/function (_React$Component8) {
|
|
|
286
286
|
style: _objectSpread({}, this.props.style),
|
|
287
287
|
className: baseClasses
|
|
288
288
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
289
|
-
className: "
|
|
289
|
+
className: "mb-3"
|
|
290
290
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("input", props)));
|
|
291
291
|
}
|
|
292
292
|
}]);
|
|
@@ -321,7 +321,7 @@ var TextArea = /*#__PURE__*/function (_React$Component9) {
|
|
|
321
321
|
style: _objectSpread({}, this.props.style),
|
|
322
322
|
className: baseClasses
|
|
323
323
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
324
|
-
className: "
|
|
324
|
+
className: "mb-3"
|
|
325
325
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("textarea", props)));
|
|
326
326
|
}
|
|
327
327
|
}]);
|
|
@@ -356,7 +356,7 @@ var Dropdown = /*#__PURE__*/function (_React$Component0) {
|
|
|
356
356
|
style: _objectSpread({}, this.props.style),
|
|
357
357
|
className: baseClasses
|
|
358
358
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
359
|
-
className: "
|
|
359
|
+
className: "mb-3"
|
|
360
360
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("select", props, this.props.data.options.map(function (option) {
|
|
361
361
|
var this_key = "preview_".concat(option.key);
|
|
362
362
|
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
@@ -421,7 +421,7 @@ var Signature = /*#__PURE__*/function (_React$Component1) {
|
|
|
421
421
|
style: _objectSpread({}, this.props.style),
|
|
422
422
|
className: baseClasses
|
|
423
423
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
424
|
-
className: "
|
|
424
|
+
className: "mb-3"
|
|
425
425
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.read_only === true || !!sourceDataURL ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
426
426
|
src: sourceDataURL
|
|
427
427
|
}) : /*#__PURE__*/_react["default"].createElement(_reactSignatureCanvas["default"], pad_props), canClear && /*#__PURE__*/_react["default"].createElement("i", {
|
|
@@ -498,7 +498,7 @@ var Tags = /*#__PURE__*/function (_React$Component10) {
|
|
|
498
498
|
style: _objectSpread({}, this.props.style),
|
|
499
499
|
className: baseClasses
|
|
500
500
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
501
|
-
className: "
|
|
501
|
+
className: "mb-3"
|
|
502
502
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement(_reactSelect["default"], props)));
|
|
503
503
|
}
|
|
504
504
|
}]);
|
|
@@ -517,9 +517,9 @@ var Checkboxes = /*#__PURE__*/function (_React$Component11) {
|
|
|
517
517
|
value: function render() {
|
|
518
518
|
var _this0 = this;
|
|
519
519
|
var self = this;
|
|
520
|
-
var classNames = '
|
|
520
|
+
var classNames = 'form-check';
|
|
521
521
|
if (this.props.data.inline) {
|
|
522
|
-
classNames += '
|
|
522
|
+
classNames += ' form-check-inline';
|
|
523
523
|
}
|
|
524
524
|
var baseClasses = 'SortableItem rfb-item';
|
|
525
525
|
if (this.props.data.pageBreakBefore) {
|
|
@@ -529,7 +529,7 @@ var Checkboxes = /*#__PURE__*/function (_React$Component11) {
|
|
|
529
529
|
style: _objectSpread({}, this.props.style),
|
|
530
530
|
className: baseClasses
|
|
531
531
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
532
|
-
className: "
|
|
532
|
+
className: "mb-3"
|
|
533
533
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.data.options.map(function (option) {
|
|
534
534
|
var this_key = "preview_".concat(option.key);
|
|
535
535
|
var props = {};
|
|
@@ -547,14 +547,15 @@ var Checkboxes = /*#__PURE__*/function (_React$Component11) {
|
|
|
547
547
|
key: this_key
|
|
548
548
|
}, /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
|
|
549
549
|
id: "fid_".concat(this_key),
|
|
550
|
-
className: "
|
|
550
|
+
className: "form-check-input",
|
|
551
551
|
ref: function ref(c) {
|
|
552
552
|
if (c && self.props.mutable) {
|
|
553
553
|
self.options["child_ref_".concat(option.key)] = c;
|
|
554
554
|
}
|
|
555
|
-
}
|
|
555
|
+
},
|
|
556
|
+
"data-required-checks": _this0.props.data.checkbox_required_checks ? _this0.props.data.checkbox_required_checks : '1'
|
|
556
557
|
}, props)), /*#__PURE__*/_react["default"].createElement("label", {
|
|
557
|
-
className: "
|
|
558
|
+
className: "form-check-label",
|
|
558
559
|
htmlFor: "fid_".concat(this_key)
|
|
559
560
|
}, option.text));
|
|
560
561
|
})));
|
|
@@ -575,9 +576,9 @@ var RadioButtons = /*#__PURE__*/function (_React$Component12) {
|
|
|
575
576
|
value: function render() {
|
|
576
577
|
var _this10 = this;
|
|
577
578
|
var self = this;
|
|
578
|
-
var classNames = '
|
|
579
|
+
var classNames = 'form-check';
|
|
579
580
|
if (this.props.data.inline) {
|
|
580
|
-
classNames += '
|
|
581
|
+
classNames += ' form-check-inline';
|
|
581
582
|
}
|
|
582
583
|
var baseClasses = 'SortableItem rfb-item';
|
|
583
584
|
if (this.props.data.pageBreakBefore) {
|
|
@@ -587,7 +588,7 @@ var RadioButtons = /*#__PURE__*/function (_React$Component12) {
|
|
|
587
588
|
style: _objectSpread({}, this.props.style),
|
|
588
589
|
className: baseClasses
|
|
589
590
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
590
|
-
className: "
|
|
591
|
+
className: "mb-3"
|
|
591
592
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.data.options.map(function (option) {
|
|
592
593
|
var this_key = "preview_".concat(option.key);
|
|
593
594
|
var props = {};
|
|
@@ -605,14 +606,14 @@ var RadioButtons = /*#__PURE__*/function (_React$Component12) {
|
|
|
605
606
|
key: this_key
|
|
606
607
|
}, /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
|
|
607
608
|
id: "fid_".concat(this_key),
|
|
608
|
-
className: "
|
|
609
|
+
className: "form-check-input",
|
|
609
610
|
ref: function ref(c) {
|
|
610
611
|
if (c && self.props.mutable) {
|
|
611
612
|
self.options["child_ref_".concat(option.key)] = c;
|
|
612
613
|
}
|
|
613
614
|
}
|
|
614
615
|
}, props)), /*#__PURE__*/_react["default"].createElement("label", {
|
|
615
|
-
className: "
|
|
616
|
+
className: "form-check-label",
|
|
616
617
|
htmlFor: "fid_".concat(this_key)
|
|
617
618
|
}, option.text));
|
|
618
619
|
})));
|
|
@@ -640,8 +641,11 @@ var Image = /*#__PURE__*/function (_React$Component13) {
|
|
|
640
641
|
className: baseClasses
|
|
641
642
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), this.props.data.src && /*#__PURE__*/_react["default"].createElement("img", {
|
|
642
643
|
src: this.props.data.src,
|
|
643
|
-
|
|
644
|
-
|
|
644
|
+
style: {
|
|
645
|
+
height: this.props.data.height,
|
|
646
|
+
width: this.props.data.width,
|
|
647
|
+
display: 'inline'
|
|
648
|
+
}
|
|
645
649
|
}), !this.props.data.src && /*#__PURE__*/_react["default"].createElement("div", {
|
|
646
650
|
className: "no-image"
|
|
647
651
|
}, "No Image"));
|
|
@@ -677,7 +681,7 @@ var Rating = /*#__PURE__*/function (_React$Component14) {
|
|
|
677
681
|
style: _objectSpread({}, this.props.style),
|
|
678
682
|
className: baseClasses
|
|
679
683
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
680
|
-
className: "
|
|
684
|
+
className: "mb-3"
|
|
681
685
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement(_starRating["default"], props)));
|
|
682
686
|
}
|
|
683
687
|
}]);
|
|
@@ -699,7 +703,7 @@ var HyperLink = /*#__PURE__*/function (_React$Component15) {
|
|
|
699
703
|
style: _objectSpread({}, this.props.style),
|
|
700
704
|
className: baseClasses
|
|
701
705
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
702
|
-
className: "
|
|
706
|
+
className: "mb-3"
|
|
703
707
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
704
708
|
className: 'form-label'
|
|
705
709
|
}, /*#__PURE__*/_react["default"].createElement("a", {
|
|
@@ -729,7 +733,7 @@ var Download = /*#__PURE__*/function (_React$Component16) {
|
|
|
729
733
|
style: _objectSpread({}, this.props.style),
|
|
730
734
|
className: baseClasses
|
|
731
735
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
732
|
-
className: "
|
|
736
|
+
className: "mb-3"
|
|
733
737
|
}, /*#__PURE__*/_react["default"].createElement("a", {
|
|
734
738
|
href: "".concat(this.props.download_path, "?id=").concat(this.props.data.file_path)
|
|
735
739
|
}, this.props.data.content)));
|
|
@@ -780,13 +784,29 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
|
|
|
780
784
|
}
|
|
781
785
|
return imgProps;
|
|
782
786
|
}
|
|
787
|
+
|
|
788
|
+
/*
|
|
789
|
+
Originally Image/File upload elments don't count the heights of all visible controls which is layered on top of <input>,
|
|
790
|
+
which makes the element possibly overlaps on the next element on a narrow screen.
|
|
791
|
+
It's caused by "position: absolue" of .image-upload-control.
|
|
792
|
+
The fix is to add inline style "position: relative" to the container div of .image-upload-control, and use <label> tag
|
|
793
|
+
and "for"/"id" to trigger to the file input dialog.
|
|
794
|
+
*/
|
|
783
795
|
}, {
|
|
784
796
|
key: "render",
|
|
785
797
|
value: function render() {
|
|
786
798
|
var _this13 = this;
|
|
787
799
|
var imageStyle = {
|
|
788
|
-
|
|
789
|
-
|
|
800
|
+
// 2025/11/11
|
|
801
|
+
// 'scale-down' looks to keep the original size of image on form-builder-generator.
|
|
802
|
+
// and sometimes the image is too small. Supposeing admin want to show the image in bigger size,
|
|
803
|
+
// so adjust it "contain" to make it bigger if possible.
|
|
804
|
+
// "contain" is supposed to "Preserves the aspect ratio, and fits the image inside the container, without cutting"
|
|
805
|
+
objectFit: 'contain',
|
|
806
|
+
objectPosition: this.props.data.center ? 'center' : 'left',
|
|
807
|
+
// Move width and height from element style to inline style of image, to make it work the same way as 'Image' element.
|
|
808
|
+
width: this.props.data.width,
|
|
809
|
+
height: this.props.data.height
|
|
790
810
|
};
|
|
791
811
|
var baseClasses = 'SortableItem rfb-item';
|
|
792
812
|
var name = this.props.data.field_name;
|
|
@@ -804,46 +824,103 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
|
|
|
804
824
|
sourceDataURL = "data:image/png;base64,".concat(this.props.defaultValue);
|
|
805
825
|
}
|
|
806
826
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
},
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
827
|
+
if (this.props.data.upload_layout === "standard") {
|
|
828
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
829
|
+
style: _objectSpread({}, this.props.style),
|
|
830
|
+
className: baseClasses
|
|
831
|
+
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
832
|
+
className: "mb-3"
|
|
833
|
+
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.read_only === true && this.props.defaultValue && this.props.defaultValue.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("img", {
|
|
834
|
+
style: imageStyle,
|
|
835
|
+
src: sourceDataURL
|
|
836
|
+
// {...this.getImageSizeProps(this.props.data)} // move width and height from element style to inline style of image, to make it work the same way as 'Image' element.
|
|
837
|
+
})) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
838
|
+
className: "image-upload-container"
|
|
839
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
840
|
+
style: fileInputStyle
|
|
841
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
842
|
+
name: name,
|
|
843
|
+
type: "file",
|
|
844
|
+
accept: "image/*"
|
|
845
|
+
//capture="camera" // With this property, users on most mobiles can only take photo but no options to pick up a photo from gallery
|
|
846
|
+
,
|
|
847
|
+
className: "image-upload visually-hidden",
|
|
848
|
+
onChange: this.displayImage,
|
|
849
|
+
"data-clearlabel": this.props.data.label_after_photo_clear_icon,
|
|
850
|
+
disabled: this.props.read_only,
|
|
851
|
+
id: name
|
|
852
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
853
|
+
className: "image-upload-control",
|
|
854
|
+
style: {
|
|
855
|
+
position: 'relative'
|
|
856
|
+
}
|
|
857
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
858
|
+
className: "btn btn-outline-secondary",
|
|
859
|
+
htmlFor: name
|
|
860
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
861
|
+
className: "fas fa-camera"
|
|
862
|
+
}), " ", this.props.data.label_after_camera_icon), /*#__PURE__*/_react["default"].createElement("div", null, this.props.data.message_under_camera_icon))), this.state.img && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("img", {
|
|
863
|
+
onLoad: function onLoad() {
|
|
864
|
+
return URL.revokeObjectURL(_this13.state.previewImg);
|
|
865
|
+
},
|
|
866
|
+
src: this.state.previewImg,
|
|
867
|
+
height: "100",
|
|
868
|
+
className: "image-upload-preview"
|
|
869
|
+
}), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("div", {
|
|
870
|
+
className: "btn btn-image-clear",
|
|
871
|
+
onClick: this.clearImage
|
|
872
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
873
|
+
className: "fas fa-times"
|
|
874
|
+
}), " ", this.props.data.label_after_photo_clear_icon)))));
|
|
875
|
+
} else {
|
|
876
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
877
|
+
style: _objectSpread({}, this.props.style),
|
|
878
|
+
className: baseClasses
|
|
879
|
+
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
880
|
+
className: "mb-3"
|
|
881
|
+
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.read_only === true && this.props.defaultValue && this.props.defaultValue.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("img", {
|
|
882
|
+
style: imageStyle,
|
|
883
|
+
src: sourceDataURL
|
|
884
|
+
})) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
885
|
+
className: "image-upload-container"
|
|
886
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
887
|
+
style: fileInputStyle,
|
|
888
|
+
className: "upload-card"
|
|
889
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
890
|
+
name: name,
|
|
891
|
+
type: "file",
|
|
892
|
+
accept: "image/*",
|
|
893
|
+
capture: "camera",
|
|
894
|
+
className: "visually-hidden",
|
|
895
|
+
onChange: this.displayImage,
|
|
896
|
+
id: name,
|
|
897
|
+
disabled: this.props.read_only
|
|
898
|
+
}), /*#__PURE__*/_react["default"].createElement("label", {
|
|
899
|
+
htmlFor: name,
|
|
900
|
+
className: "upload-card-content"
|
|
901
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
902
|
+
className: "fas fa-cloud-upload-alt upload-icon"
|
|
903
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
904
|
+
className: "upload-text"
|
|
905
|
+
}, this.props.data.message_under_camera_icon), /*#__PURE__*/_react["default"].createElement("div", {
|
|
906
|
+
className: "btn-browse"
|
|
907
|
+
}, this.props.data.label_after_camera_icon))), this.state.img && /*#__PURE__*/_react["default"].createElement("div", {
|
|
908
|
+
className: "preview-container"
|
|
909
|
+
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
910
|
+
onLoad: function onLoad() {
|
|
911
|
+
return URL.revokeObjectURL(_this13.state.previewImg);
|
|
912
|
+
},
|
|
913
|
+
src: this.state.previewImg,
|
|
914
|
+
className: "image-upload-preview",
|
|
915
|
+
alt: "Preview",
|
|
916
|
+
height: "100"
|
|
917
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
918
|
+
className: "btn btn-image-clear",
|
|
919
|
+
onClick: this.clearImage
|
|
920
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
921
|
+
className: "fas fa-times"
|
|
922
|
+
}), " Remove Photo")))));
|
|
923
|
+
}
|
|
847
924
|
}
|
|
848
925
|
}]);
|
|
849
926
|
}(_react["default"].Component);
|
|
@@ -934,9 +1011,9 @@ var FileUpload = /*#__PURE__*/function (_React$Component18) {
|
|
|
934
1011
|
style: _objectSpread({}, this.props.style),
|
|
935
1012
|
className: baseClasses
|
|
936
1013
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
937
|
-
className: "
|
|
1014
|
+
className: "mb-3"
|
|
938
1015
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), this.props.read_only === true && this.props.defaultValue && this.props.defaultValue.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("button", {
|
|
939
|
-
className: "btn btn-
|
|
1016
|
+
className: "btn btn-outline-secondary",
|
|
940
1017
|
onClick: this.saveFile
|
|
941
1018
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
942
1019
|
className: "fas fa-download"
|
|
@@ -948,17 +1025,22 @@ var FileUpload = /*#__PURE__*/function (_React$Component18) {
|
|
|
948
1025
|
name: name,
|
|
949
1026
|
type: "file",
|
|
950
1027
|
accept: this.props.data.fileType || '*',
|
|
951
|
-
className: "image-upload",
|
|
1028
|
+
className: "image-upload visually-hidden",
|
|
952
1029
|
onChange: this.displayFileUpload,
|
|
953
1030
|
"data-clearlabel": this.props.data.label_after_file_clear_icon,
|
|
954
|
-
disabled: this.props.read_only
|
|
1031
|
+
disabled: this.props.read_only,
|
|
1032
|
+
id: name
|
|
955
1033
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
956
|
-
className: "image-upload-control"
|
|
957
|
-
|
|
958
|
-
|
|
1034
|
+
className: "image-upload-control",
|
|
1035
|
+
style: {
|
|
1036
|
+
position: 'relative'
|
|
1037
|
+
}
|
|
1038
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
1039
|
+
className: "btn btn-outline-secondary",
|
|
1040
|
+
htmlFor: name
|
|
959
1041
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
960
1042
|
className: "fas fa-file"
|
|
961
|
-
}), " ", this.props.data.label_after_file_icon), /*#__PURE__*/_react["default"].createElement("
|
|
1043
|
+
}), " ", this.props.data.label_after_file_icon), /*#__PURE__*/_react["default"].createElement("div", null, this.props.data.message_under_file_icon))), this.state.fileUpload && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
962
1044
|
className: "file-upload-preview"
|
|
963
1045
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
964
1046
|
style: {
|
|
@@ -1004,9 +1086,9 @@ var Range = /*#__PURE__*/function (_React$Component19) {
|
|
|
1004
1086
|
var name = this.props.data.field_name;
|
|
1005
1087
|
props.type = 'range';
|
|
1006
1088
|
props.list = "tickmarks_".concat(name);
|
|
1007
|
-
props.min = this.props.data.min_value;
|
|
1008
|
-
props.max = this.props.data.max_value;
|
|
1009
|
-
props.step = this.props.data.step;
|
|
1089
|
+
props.min = Number(this.props.data.min_value);
|
|
1090
|
+
props.max = Number(this.props.data.max_value);
|
|
1091
|
+
props.step = Number(this.props.data.step) || 1;
|
|
1010
1092
|
props.value = this.state.value;
|
|
1011
1093
|
props.change = this.changeValue;
|
|
1012
1094
|
if (this.props.mutable) {
|
|
@@ -1051,21 +1133,24 @@ var Range = /*#__PURE__*/function (_React$Component19) {
|
|
|
1051
1133
|
style: _objectSpread({}, this.props.style),
|
|
1052
1134
|
className: baseClasses
|
|
1053
1135
|
}, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
1054
|
-
className: "
|
|
1136
|
+
className: "mb-3"
|
|
1055
1137
|
}, /*#__PURE__*/_react["default"].createElement(_componentLabel["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
1056
1138
|
className: "range"
|
|
1057
1139
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
1058
1140
|
className: "clearfix"
|
|
1059
1141
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
1060
|
-
className: "float-
|
|
1142
|
+
className: "float-start"
|
|
1061
1143
|
}, this.props.data.min_label), /*#__PURE__*/_react["default"].createElement("span", {
|
|
1062
|
-
className: "float-
|
|
1144
|
+
className: "float-end"
|
|
1063
1145
|
}, this.props.data.max_label)), /*#__PURE__*/_react["default"].createElement(_reactBootstrapSlider["default"], props)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
1064
1146
|
className: "visible_marks"
|
|
1065
1147
|
}, visible_marks), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1066
1148
|
name: name,
|
|
1067
1149
|
value: this.state.value,
|
|
1068
|
-
type: "hidden"
|
|
1150
|
+
type: "hidden",
|
|
1151
|
+
"data-min-value": props.min,
|
|
1152
|
+
"data-max-value": props.max,
|
|
1153
|
+
"data-step": props.step
|
|
1069
1154
|
}), /*#__PURE__*/_react["default"].createElement("datalist", {
|
|
1070
1155
|
id: props.list
|
|
1071
1156
|
}, _datalist)));
|