@goldenpine/react-form-builder2 0.20.3-build.21 → 0.20.3-build.23

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.
@@ -866,7 +866,7 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
866
866
  src: this.state.previewImg,
867
867
  height: "100",
868
868
  className: "image-upload-preview"
869
- }), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("div", {
869
+ }), /*#__PURE__*/_react["default"].createElement("button", {
870
870
  className: "btn btn-image-clear",
871
871
  onClick: this.clearImage
872
872
  }, /*#__PURE__*/_react["default"].createElement("i", {
@@ -890,11 +890,11 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
890
890
  name: name,
891
891
  type: "file",
892
892
  accept: "image/*",
893
- capture: "camera",
894
893
  className: "visually-hidden",
895
894
  onChange: this.displayImage,
896
- id: name,
897
- disabled: this.props.read_only
895
+ "data-clearlabel": this.props.data.label_after_photo_clear_icon,
896
+ disabled: this.props.read_only,
897
+ id: name
898
898
  }), /*#__PURE__*/_react["default"].createElement("label", {
899
899
  htmlFor: name,
900
900
  className: "upload-card-content"
@@ -904,9 +904,7 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
904
904
  className: "upload-text"
905
905
  }, this.props.data.message_under_camera_icon), /*#__PURE__*/_react["default"].createElement("div", {
906
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", {
907
+ }, this.props.data.label_after_camera_icon))), this.state.img && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("img", {
910
908
  onLoad: function onLoad() {
911
909
  return URL.revokeObjectURL(_this13.state.previewImg);
912
910
  },
@@ -919,7 +917,7 @@ var Camera = /*#__PURE__*/function (_React$Component17) {
919
917
  onClick: this.clearImage
920
918
  }, /*#__PURE__*/_react["default"].createElement("i", {
921
919
  className: "fas fa-times"
922
- }), " Remove Photo")))));
920
+ }), " ", this.props.data.label_after_photo_clear_icon)))));
923
921
  }
924
922
  }
925
923
  }]);
@@ -1007,6 +1005,61 @@ var FileUpload = /*#__PURE__*/function (_React$Component18) {
1007
1005
  if (this.props.data.pageBreakBefore) {
1008
1006
  baseClasses += ' alwaysbreak';
1009
1007
  }
1008
+ if (this.props.data.upload_layout === 'standard') {
1009
+ return /*#__PURE__*/_react["default"].createElement("div", {
1010
+ style: _objectSpread({}, this.props.style),
1011
+ className: baseClasses
1012
+ }, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", {
1013
+ className: "mb-3"
1014
+ }, /*#__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", {
1015
+ className: "btn btn-outline-secondary",
1016
+ onClick: this.saveFile
1017
+ }, /*#__PURE__*/_react["default"].createElement("i", {
1018
+ className: "fas fa-download"
1019
+ }), " Download File")) : /*#__PURE__*/_react["default"].createElement("div", {
1020
+ className: "image-upload-container"
1021
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1022
+ style: fileInputStyle
1023
+ }, /*#__PURE__*/_react["default"].createElement("input", {
1024
+ name: name,
1025
+ type: "file",
1026
+ accept: this.props.data.fileType || '*',
1027
+ className: "image-upload visually-hidden",
1028
+ onChange: this.displayFileUpload,
1029
+ "data-clearlabel": this.props.data.label_after_file_clear_icon,
1030
+ disabled: this.props.read_only,
1031
+ id: name
1032
+ }), /*#__PURE__*/_react["default"].createElement("div", {
1033
+ className: "image-upload-control",
1034
+ style: {
1035
+ position: 'relative'
1036
+ }
1037
+ }, /*#__PURE__*/_react["default"].createElement("label", {
1038
+ className: "btn btn-outline-secondary",
1039
+ htmlFor: name
1040
+ }, /*#__PURE__*/_react["default"].createElement("i", {
1041
+ className: "fas fa-file"
1042
+ }), " ", 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", {
1043
+ className: "file-upload-preview"
1044
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1045
+ style: {
1046
+ display: 'inline-block',
1047
+ marginRight: '5px'
1048
+ }
1049
+ }, this.state.fileUpload.name), /*#__PURE__*/_react["default"].createElement("div", {
1050
+ style: {
1051
+ display: 'inline-block',
1052
+ marginLeft: '5px'
1053
+ }
1054
+ }, this.state.fileUpload.size.length > 6 ? " ".concat(Math.ceil(this.state.fileUpload.size / (1024 * 1024)), " mb") : " ".concat(Math.ceil(this.state.fileUpload.size / 1024), " kb"))), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("div", {
1055
+ className: "btn btn-file-upload-clear",
1056
+ onClick: this.clearFileUpload
1057
+ }, /*#__PURE__*/_react["default"].createElement("i", {
1058
+ className: "fas fa-times"
1059
+ }), " ", this.props.data.label_after_file_clear_icon)))));
1060
+ }
1061
+
1062
+ // non-standard layout: use "upload-card" style like Camera
1010
1063
  return /*#__PURE__*/_react["default"].createElement("div", {
1011
1064
  style: _objectSpread({}, this.props.style),
1012
1065
  className: baseClasses
@@ -1020,27 +1073,27 @@ var FileUpload = /*#__PURE__*/function (_React$Component18) {
1020
1073
  }), " Download File")) : /*#__PURE__*/_react["default"].createElement("div", {
1021
1074
  className: "image-upload-container"
1022
1075
  }, /*#__PURE__*/_react["default"].createElement("div", {
1023
- style: fileInputStyle
1076
+ style: fileInputStyle,
1077
+ className: "upload-card"
1024
1078
  }, /*#__PURE__*/_react["default"].createElement("input", {
1025
1079
  name: name,
1026
1080
  type: "file",
1027
1081
  accept: this.props.data.fileType || '*',
1028
- className: "image-upload visually-hidden",
1082
+ className: "visually-hidden",
1029
1083
  onChange: this.displayFileUpload,
1030
1084
  "data-clearlabel": this.props.data.label_after_file_clear_icon,
1031
1085
  disabled: this.props.read_only,
1032
1086
  id: name
1033
- }), /*#__PURE__*/_react["default"].createElement("div", {
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
1087
+ }), /*#__PURE__*/_react["default"].createElement("label", {
1088
+ htmlFor: name,
1089
+ className: "upload-card-content"
1041
1090
  }, /*#__PURE__*/_react["default"].createElement("i", {
1042
- className: "fas fa-file"
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", {
1091
+ className: "fas fa-cloud-upload-alt upload-icon"
1092
+ }), /*#__PURE__*/_react["default"].createElement("span", {
1093
+ className: "upload-text"
1094
+ }, this.props.data.message_under_file_icon), /*#__PURE__*/_react["default"].createElement("div", {
1095
+ className: "btn-browse"
1096
+ }, this.props.data.label_after_file_icon))), this.state.fileUpload && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
1044
1097
  className: "file-upload-preview"
1045
1098
  }, /*#__PURE__*/_react["default"].createElement("div", {
1046
1099
  style: {
@@ -134,6 +134,18 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
134
134
  });
135
135
  }
136
136
  }
137
+ }, {
138
+ key: "validateImageSize",
139
+ value: function validateImageSize(e) {
140
+ var regex = /^$|^\d+(px|%)$/;
141
+ if (regex.test(e.target.value)) {
142
+ e.target.classList.remove("is-invalid");
143
+ e.target.classList.add("is-valid");
144
+ } else {
145
+ e.target.classList.remove("is-valid");
146
+ e.target.classList.add("is-invalid");
147
+ }
148
+ }
137
149
  }, {
138
150
  key: "render",
139
151
  value: function render() {
@@ -160,6 +172,7 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
160
172
  canHaveOptionCorrect = _this$props$element.canHaveOptionCorrect,
161
173
  canHaveOptionValue = _this$props$element.canHaveOptionValue;
162
174
  var canHaveImageSize = this.state.element.element === 'Image' || this.state.element.element === 'Camera';
175
+ var canHaveUploadLayout = this.state.element.element === 'Camera' || this.state.element.element === 'FileUpload';
163
176
  var this_files = this.props.files.length ? this.props.files : [];
164
177
  if (this_files.length < 1 || this_files.length > 0 && this_files[0].id !== '') {
165
178
  this_files.unshift({
@@ -360,7 +373,7 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
360
373
  defaultValue: this.props.element.src,
361
374
  onBlur: this.updateElement.bind(this),
362
375
  onChange: this.editElementProp.bind(this, 'src', 'value')
363
- }))), this.state.element.element === 'Camera' && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
376
+ }))), canHaveUploadLayout && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
364
377
  className: "mb-3"
365
378
  }, /*#__PURE__*/_react["default"].createElement("label", {
366
379
  className: "control-label bold"
@@ -398,7 +411,7 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
398
411
  htmlFor: "uploadLayoutDropZone"
399
412
  }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
400
413
  id: "upload-layout-dropzone"
401
- }))))), /*#__PURE__*/_react["default"].createElement("div", {
414
+ })))))), this.state.element.element === 'Camera' && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
402
415
  className: "mb-3"
403
416
  }, /*#__PURE__*/_react["default"].createElement("label", {
404
417
  className: "control-label",
@@ -473,6 +486,8 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
473
486
  id: "elementWidth",
474
487
  type: "text",
475
488
  className: "form-control",
489
+ pattern: "^$|^\\d+(px|%)$",
490
+ onInput: this.validateImageSize,
476
491
  defaultValue: this.props.element.width,
477
492
  onBlur: this.updateElement.bind(this),
478
493
  onChange: this.editElementProp.bind(this, 'width', 'value')
@@ -487,6 +502,8 @@ var FormElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Compon
487
502
  id: "elementHeight",
488
503
  type: "text",
489
504
  className: "form-control",
505
+ pattern: "^$|^\\d+(px|%)$",
506
+ onInput: this.validateImageSize,
490
507
  defaultValue: this.props.element.height,
491
508
  onBlur: this.updateElement.bind(this),
492
509
  onChange: this.editElementProp.bind(this, 'height', 'value')
@@ -39,7 +39,7 @@
39
39
  "ppt" : "PPT",
40
40
  "upload-layout" : "Upload Area Layout",
41
41
  "upload-layout-standard" : "Standard",
42
- "upload-layout-dropzone" : "Dropzone",
42
+ "upload-layout-dropzone" : "Large upload area",
43
43
  "image-layout" : "Image Layout",
44
44
  "display-label-after-camera-icon" : "Display label on button",
45
45
  "place-holder-display-label-after-camera-icon" : "Upload Photo",
@@ -39,7 +39,7 @@
39
39
  "ppt": "PPT",
40
40
  "upload-layout" : "چیدمان بخش بارگذاری",
41
41
  "upload-layout-standard" : "استاندارد",
42
- "upload-layout-dropzone" : "رها کردن فایل",
42
+ "upload-layout-dropzone" : "بخش بارگذاری بزرگ",
43
43
  "image-layout" : "چیدمان تصویر",
44
44
  "display-label-after-camera-icon" : "نمایش برچسب پس از آیکون دوربین",
45
45
  "place-holder-display-label-after-camera-icon" : "آپلود عکس",
@@ -39,7 +39,7 @@
39
39
  "ppt" : "PPT",
40
40
  "upload-layout" : "Layout dell'area di caricamento",
41
41
  "upload-layout-standard" : "Standard",
42
- "upload-layout-dropzone" : "Area di rilascio",
42
+ "upload-layout-dropzone" : "Area di caricamento grande",
43
43
  "image-layout" : "Layout dell'immagine",
44
44
  "display-label-after-camera-icon" : "Mostra etichetta dopo l'icona della fotocamera",
45
45
  "place-holder-display-label-after-camera-icon" : "Carica foto",
@@ -39,7 +39,7 @@
39
39
  "ppt" : "PPT",
40
40
  "upload-layout" : "Bố cục khu vực tải lên",
41
41
  "upload-layout-standard" : "Tiêu chuẩn",
42
- "upload-layout-dropzone" : "Vùng thả tệp",
42
+ "upload-layout-dropzone" : "Khu vực tải lên lớn",
43
43
  "image-layout" : "Bố cục hình ảnh",
44
44
  "display-label-after-camera-icon" : "Hiển thị nhãn sau biểu tượng máy ảnh",
45
45
  "place-holder-display-label-after-camera-icon" : "Tải ảnh lên",
package/lib/toolbar.js CHANGED
@@ -443,6 +443,7 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
443
443
  id: 'place-holder-label'
444
444
  }),
445
445
  field_name: 'file_upload_',
446
+ upload_layout: 'standard',
446
447
  label_after_file_icon: intl.formatMessage({
447
448
  id: 'place-holder-display-label-after-file-icon'
448
449
  }),
@@ -546,6 +547,7 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
546
547
  elementOptions.label_after_photo_clear_icon = item.label_after_photo_clear_icon;
547
548
  }
548
549
  if (elementKey === 'FileUpload') {
550
+ elementOptions.upload_layout = item.upload_layout;
549
551
  elementOptions.label_after_file_icon = item.label_after_file_icon;
550
552
  elementOptions.message_under_file_icon = item.message_under_file_icon;
551
553
  elementOptions.label_after_file_clear_icon = item.label_after_file_clear_icon;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goldenpine/react-form-builder2",
3
- "version": "0.20.3-build.21",
3
+ "version": "0.20.3-build.23",
4
4
  "description": "A complete form builder for react.",
5
5
  "main": "lib/index.js",
6
6
  "types": "types/index.d.ts",