react-survey-builder 1.0.44 → 1.0.46
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/dist/index.js +1 -1
- package/lib/form-fields.js +64 -84
- package/lib/form.js +24 -80
- package/lib/survey-elements/component-header.js +10 -6
- package/lib/survey-elements/index.js +1172 -297
- package/lib/utils/validators.js +81 -0
- package/package.json +4 -4
package/lib/form-fields.js
CHANGED
@@ -20,7 +20,7 @@ var _esm = require("react-bootstrap/esm");
|
|
20
20
|
var _reactHookForm = require("react-hook-form");
|
21
21
|
var _lodash = require("lodash");
|
22
22
|
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
23
|
-
var
|
23
|
+
var _validators = require("./utils/validators");
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
25
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
26
26
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
@@ -298,80 +298,6 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
298
298
|
});
|
299
299
|
return hasErrors;
|
300
300
|
};
|
301
|
-
var validateEmail = function validateEmail(email) {
|
302
|
-
return email.match(
|
303
|
-
// eslint-disable-next-line no-useless-escape
|
304
|
-
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
|
305
|
-
};
|
306
|
-
var toE164PhoneNumber = function toE164PhoneNumber(phoneNumberValue) {
|
307
|
-
if (phoneNumberValue !== undefined && phoneNumberValue !== null) {
|
308
|
-
//Filter only numbers from the input
|
309
|
-
var cleaned = ('' + phoneNumberValue).replace(/\D/g, '');
|
310
|
-
|
311
|
-
//Check if the input is of correct
|
312
|
-
var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
|
313
|
-
if (match) {
|
314
|
-
//Remove the matched extension code
|
315
|
-
//Change this to format for any country code.
|
316
|
-
var intlCode = match[1] ? '+1' : '+1';
|
317
|
-
return [intlCode, match[2], match[3], match[4]].join('');
|
318
|
-
}
|
319
|
-
return '';
|
320
|
-
} else {
|
321
|
-
return '';
|
322
|
-
}
|
323
|
-
};
|
324
|
-
var validatePhone = function validatePhone(phone) {
|
325
|
-
return (0, _reactPhoneNumberInput.isValidPhoneNumber)(toE164PhoneNumber(phone), 'US');
|
326
|
-
};
|
327
|
-
var validateDate = function validateDate(dateString) {
|
328
|
-
if (dateString !== undefined && dateString !== null && dateString !== "") {
|
329
|
-
var dateformat = /^(0?[1-9]|1[0-2])[\/](0?[1-9]|[1-2][0-9]|3[01])[\/]\d{4}$/;
|
330
|
-
|
331
|
-
// Matching the date through regular expression
|
332
|
-
if (dateString.match(dateformat)) {
|
333
|
-
var operator = dateString.split('/');
|
334
|
-
|
335
|
-
// Extract the string into month, date and year
|
336
|
-
var datepart = [];
|
337
|
-
if (operator.length > 1) {
|
338
|
-
datepart = dateString.split('/');
|
339
|
-
}
|
340
|
-
var month = parseInt(datepart[0]);
|
341
|
-
var day = parseInt(datepart[1]);
|
342
|
-
var year = parseInt(datepart[2]);
|
343
|
-
if (day > 31 || day < 1) {
|
344
|
-
return false;
|
345
|
-
}
|
346
|
-
var currentYear = new Date().getFullYear();
|
347
|
-
if (year < 1900 || year > currentYear + 5) {
|
348
|
-
return false;
|
349
|
-
}
|
350
|
-
|
351
|
-
// Create a list of days of a month
|
352
|
-
var ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
353
|
-
if (month === 1 || month > 2) {
|
354
|
-
if (day > ListofDays[month - 1]) {
|
355
|
-
// to check if the date is out of range
|
356
|
-
return false;
|
357
|
-
}
|
358
|
-
} else if (month === 2) {
|
359
|
-
var leapYear = false;
|
360
|
-
if (!(year % 4) && year % 100 || !(year % 400)) leapYear = true;
|
361
|
-
if (leapYear === false && day >= 29) return false;else if (leapYear === true && day > 29) {
|
362
|
-
// console.log('Invalid date format!');
|
363
|
-
return false;
|
364
|
-
}
|
365
|
-
} else if (month > 12 || month < 1) {
|
366
|
-
return false;
|
367
|
-
}
|
368
|
-
} else {
|
369
|
-
// console.log("Invalid date format!");
|
370
|
-
return false;
|
371
|
-
}
|
372
|
-
}
|
373
|
-
return true;
|
374
|
-
};
|
375
301
|
var getDataItemById = function getDataItemById(id) {
|
376
302
|
var $dataItem = items.find(function (x) {
|
377
303
|
return x.id === id;
|
@@ -512,17 +438,17 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
512
438
|
message: "".concat(item.label, " must be at least 4 characters long")
|
513
439
|
};
|
514
440
|
fieldRules.validate = function (value) {
|
515
|
-
return validateEmail(value) || "".concat(item.label, " field requires valid email address");
|
441
|
+
return (0, _validators.validateEmail)(value) || "".concat(item.label, " field requires valid email address");
|
516
442
|
};
|
517
443
|
break;
|
518
444
|
case 'PhoneNumber':
|
519
445
|
fieldRules.validate = function (value) {
|
520
|
-
return validatePhone(value) || "".concat(item.label, " field requires a valid phone number");
|
446
|
+
return (0, _validators.validatePhone)(value) || "".concat(item.label, " field requires a valid phone number");
|
521
447
|
};
|
522
448
|
break;
|
523
449
|
case 'DatePicker':
|
524
450
|
fieldRules.validate = function (value) {
|
525
|
-
return validateDate(value) || "".concat(item.label, " field requires a valid date in the format MM/DD/YYYY");
|
451
|
+
return (0, _validators.validateDate)(value) || "".concat(item.label, " field requires a valid date in the format MM/DD/YYYY");
|
526
452
|
};
|
527
453
|
break;
|
528
454
|
default:
|
@@ -574,19 +500,73 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
574
500
|
item.disabled = (_ref7 = readOnly || item.readOnly) !== null && _ref7 !== void 0 ? _ref7 : false;
|
575
501
|
item.mutable = true;
|
576
502
|
switch (item.element) {
|
577
|
-
case 'TextInput':
|
578
|
-
case 'EmailInput':
|
579
|
-
case 'PhoneNumber':
|
580
|
-
case 'NumberInput':
|
581
|
-
case 'TextArea':
|
582
503
|
case 'Dropdown':
|
583
|
-
case 'DatePicker':
|
584
504
|
case 'RadioButtons':
|
585
505
|
case 'Rating':
|
586
506
|
case 'Tags':
|
587
507
|
case 'Range':
|
588
508
|
case 'Checkbox':
|
589
509
|
return getInputElement(item);
|
510
|
+
case 'TextInput':
|
511
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.TextInput, {
|
512
|
+
name: item.fieldName,
|
513
|
+
ref: function ref(c) {
|
514
|
+
return inputs.current[item.fieldName] = c;
|
515
|
+
},
|
516
|
+
key: "form_".concat(item.id),
|
517
|
+
item: item,
|
518
|
+
value: _getDefaultValue(item)
|
519
|
+
});
|
520
|
+
case 'EmailInput':
|
521
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.EmailInput, {
|
522
|
+
name: item.fieldName,
|
523
|
+
ref: function ref(c) {
|
524
|
+
return inputs.current[item.fieldName] = c;
|
525
|
+
},
|
526
|
+
key: "form_".concat(item.id),
|
527
|
+
item: item,
|
528
|
+
value: _getDefaultValue(item)
|
529
|
+
});
|
530
|
+
case 'NumberInput':
|
531
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.NumberInput, {
|
532
|
+
name: item.fieldName,
|
533
|
+
ref: function ref(c) {
|
534
|
+
return inputs.current[item.fieldName] = c;
|
535
|
+
},
|
536
|
+
key: "form_".concat(item.id),
|
537
|
+
item: item,
|
538
|
+
value: _getDefaultValue(item)
|
539
|
+
});
|
540
|
+
case 'TextArea':
|
541
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.TextArea, {
|
542
|
+
name: item.fieldName,
|
543
|
+
ref: function ref(c) {
|
544
|
+
return inputs.current[item.fieldName] = c;
|
545
|
+
},
|
546
|
+
key: "form_".concat(item.id),
|
547
|
+
item: item,
|
548
|
+
value: _getDefaultValue(item)
|
549
|
+
});
|
550
|
+
case 'PhoneNumber':
|
551
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.PhoneNumber, {
|
552
|
+
name: item.fieldName,
|
553
|
+
ref: function ref(c) {
|
554
|
+
return inputs.current[item.fieldName] = c;
|
555
|
+
},
|
556
|
+
key: "form_".concat(item.id),
|
557
|
+
item: item,
|
558
|
+
value: _getDefaultValue(item)
|
559
|
+
});
|
560
|
+
case 'DatePicker':
|
561
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.DatePicker, {
|
562
|
+
name: item.fieldName,
|
563
|
+
ref: function ref(c) {
|
564
|
+
return inputs.current[item.fieldName] = c;
|
565
|
+
},
|
566
|
+
key: "form_".concat(item.id),
|
567
|
+
item: item,
|
568
|
+
value: _getDefaultValue(item)
|
569
|
+
});
|
590
570
|
case 'CustomElement':
|
591
571
|
return getCustomElement(item);
|
592
572
|
case 'MultiColumnRow':
|
package/lib/form.js
CHANGED
@@ -20,7 +20,7 @@ var _esm = require("react-bootstrap/esm");
|
|
20
20
|
var _reactHookForm = require("react-hook-form");
|
21
21
|
var _lodash = require("lodash");
|
22
22
|
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
23
|
-
var
|
23
|
+
var _validators = require("./utils/validators");
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
25
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
26
26
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
@@ -306,80 +306,6 @@ var ReactSurvey = function ReactSurvey(_ref) {
|
|
306
306
|
});
|
307
307
|
return hasErrors;
|
308
308
|
};
|
309
|
-
var validateEmail = function validateEmail(email) {
|
310
|
-
return email.match(
|
311
|
-
// eslint-disable-next-line no-useless-escape
|
312
|
-
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
|
313
|
-
};
|
314
|
-
var toE164PhoneNumber = function toE164PhoneNumber(phoneNumberValue) {
|
315
|
-
if (phoneNumberValue !== undefined && phoneNumberValue !== null) {
|
316
|
-
//Filter only numbers from the input
|
317
|
-
var cleaned = ('' + phoneNumberValue).replace(/\D/g, '');
|
318
|
-
|
319
|
-
//Check if the input is of correct
|
320
|
-
var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
|
321
|
-
if (match) {
|
322
|
-
//Remove the matched extension code
|
323
|
-
//Change this to format for any country code.
|
324
|
-
var intlCode = match[1] ? '+1' : '+1';
|
325
|
-
return [intlCode, match[2], match[3], match[4]].join('');
|
326
|
-
}
|
327
|
-
return '';
|
328
|
-
} else {
|
329
|
-
return '';
|
330
|
-
}
|
331
|
-
};
|
332
|
-
var validatePhone = function validatePhone(phone) {
|
333
|
-
return (0, _reactPhoneNumberInput.isValidPhoneNumber)(toE164PhoneNumber(phone), 'US');
|
334
|
-
};
|
335
|
-
var validateDate = function validateDate(dateString) {
|
336
|
-
if (dateString !== undefined && dateString !== null && dateString !== "") {
|
337
|
-
var dateformat = /^(0?[1-9]|1[0-2])[\/](0?[1-9]|[1-2][0-9]|3[01])[\/]\d{4}$/;
|
338
|
-
|
339
|
-
// Matching the date through regular expression
|
340
|
-
if (dateString.match(dateformat)) {
|
341
|
-
var operator = dateString.split('/');
|
342
|
-
|
343
|
-
// Extract the string into month, date and year
|
344
|
-
var datepart = [];
|
345
|
-
if (operator.length > 1) {
|
346
|
-
datepart = dateString.split('/');
|
347
|
-
}
|
348
|
-
var month = parseInt(datepart[0]);
|
349
|
-
var day = parseInt(datepart[1]);
|
350
|
-
var year = parseInt(datepart[2]);
|
351
|
-
if (day > 31 || day < 1) {
|
352
|
-
return false;
|
353
|
-
}
|
354
|
-
var currentYear = new Date().getFullYear();
|
355
|
-
if (year < 1900 || year > currentYear + 5) {
|
356
|
-
return false;
|
357
|
-
}
|
358
|
-
|
359
|
-
// Create a list of days of a month
|
360
|
-
var ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
361
|
-
if (month === 1 || month > 2) {
|
362
|
-
if (day > ListofDays[month - 1]) {
|
363
|
-
// to check if the date is out of range
|
364
|
-
return false;
|
365
|
-
}
|
366
|
-
} else if (month === 2) {
|
367
|
-
var leapYear = false;
|
368
|
-
if (!(year % 4) && year % 100 || !(year % 400)) leapYear = true;
|
369
|
-
if (leapYear === false && day >= 29) return false;else if (leapYear === true && day > 29) {
|
370
|
-
// console.log('Invalid date format!');
|
371
|
-
return false;
|
372
|
-
}
|
373
|
-
} else if (month > 12 || month < 1) {
|
374
|
-
return false;
|
375
|
-
}
|
376
|
-
} else {
|
377
|
-
// console.log("Invalid date format!");
|
378
|
-
return false;
|
379
|
-
}
|
380
|
-
}
|
381
|
-
return true;
|
382
|
-
};
|
383
309
|
var getDataItemById = function getDataItemById(id) {
|
384
310
|
var $dataItem = items.find(function (x) {
|
385
311
|
return x.id === id;
|
@@ -520,17 +446,17 @@ var ReactSurvey = function ReactSurvey(_ref) {
|
|
520
446
|
message: "".concat(item.label, " must be at least 4 characters long")
|
521
447
|
};
|
522
448
|
fieldRules.validate = function (value) {
|
523
|
-
return validateEmail(value) || "".concat(item.label, " field requires valid email address");
|
449
|
+
return (0, _validators.validateEmail)(value) || "".concat(item.label, " field requires valid email address");
|
524
450
|
};
|
525
451
|
break;
|
526
452
|
case 'PhoneNumber':
|
527
453
|
fieldRules.validate = function (value) {
|
528
|
-
return validatePhone(value) || "".concat(item.label, " field requires a valid phone number");
|
454
|
+
return (0, _validators.validatePhone)(value) || "".concat(item.label, " field requires a valid phone number");
|
529
455
|
};
|
530
456
|
break;
|
531
457
|
case 'DatePicker':
|
532
458
|
fieldRules.validate = function (value) {
|
533
|
-
return validateDate(value) || "".concat(item.label, " field requires a valid date in the format MM/DD/YYYY");
|
459
|
+
return (0, _validators.validateDate)(value) || "".concat(item.label, " field requires a valid date in the format MM/DD/YYYY");
|
534
460
|
};
|
535
461
|
break;
|
536
462
|
default:
|
@@ -584,17 +510,35 @@ var ReactSurvey = function ReactSurvey(_ref) {
|
|
584
510
|
switch (item.element) {
|
585
511
|
case 'TextInput':
|
586
512
|
case 'EmailInput':
|
587
|
-
case 'PhoneNumber':
|
588
513
|
case 'NumberInput':
|
589
514
|
case 'TextArea':
|
590
515
|
case 'Dropdown':
|
591
|
-
case 'DatePicker':
|
592
516
|
case 'RadioButtons':
|
593
517
|
case 'Rating':
|
594
518
|
case 'Tags':
|
595
519
|
case 'Range':
|
596
520
|
case 'Checkbox':
|
597
521
|
return getInputElement(item);
|
522
|
+
case 'PhoneNumber':
|
523
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.PhoneNumber, {
|
524
|
+
name: item.fieldName,
|
525
|
+
ref: function ref(c) {
|
526
|
+
return inputs.current[item.fieldName] = c;
|
527
|
+
},
|
528
|
+
key: "form_".concat(item.id),
|
529
|
+
item: item,
|
530
|
+
value: _getDefaultValue(item)
|
531
|
+
});
|
532
|
+
case 'DatePicker':
|
533
|
+
return /*#__PURE__*/_react["default"].createElement(_surveyElements.DatePicker, {
|
534
|
+
name: item.fieldName,
|
535
|
+
ref: function ref(c) {
|
536
|
+
return inputs.current[item.fieldName] = c;
|
537
|
+
},
|
538
|
+
key: "form_".concat(item.id),
|
539
|
+
item: item,
|
540
|
+
value: _getDefaultValue(item)
|
541
|
+
});
|
598
542
|
case 'CustomElement':
|
599
543
|
return getCustomElement(item);
|
600
544
|
case 'MultiColumnRow':
|
@@ -5,25 +5,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
6
6
|
});
|
7
7
|
exports["default"] = void 0;
|
8
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
8
9
|
var _react = _interopRequireDefault(require("react"));
|
9
10
|
var _headerBar = _interopRequireDefault(require("./header-bar"));
|
10
|
-
var
|
11
|
-
|
11
|
+
var _excluded = ["item"];
|
12
|
+
var ComponentHeader = function ComponentHeader(_ref) {
|
13
|
+
var item = _ref.item,
|
14
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
15
|
+
if (item !== null && item !== void 0 && item.mutable) {
|
12
16
|
return null;
|
13
17
|
}
|
14
|
-
return /*#__PURE__*/_react["default"].createElement("div", null,
|
18
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, (item === null || item === void 0 ? void 0 : item.pageBreakBefore) && /*#__PURE__*/_react["default"].createElement("div", {
|
15
19
|
className: "preview-page-break"
|
16
20
|
}, "Page Break"), /*#__PURE__*/_react["default"].createElement(_headerBar["default"], {
|
17
21
|
isFieldSet: props.isFieldSet,
|
18
22
|
parent: props.parent,
|
19
23
|
editModeOn: props.editModeOn,
|
20
|
-
item:
|
24
|
+
item: item,
|
21
25
|
index: props.index,
|
22
26
|
setAsChild: props.setAsChild,
|
23
27
|
onDestroy: props._onDestroy,
|
24
28
|
onEdit: props.onEdit,
|
25
|
-
"static":
|
26
|
-
required:
|
29
|
+
"static": item === null || item === void 0 ? void 0 : item["static"],
|
30
|
+
required: item === null || item === void 0 ? void 0 : item.required
|
27
31
|
}));
|
28
32
|
};
|
29
33
|
var _default = exports["default"] = ComponentHeader;
|