react-survey-builder 1.0.44 → 1.0.45

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.
@@ -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 _reactPhoneNumberInput = require("react-phone-number-input");
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:
@@ -576,17 +502,35 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
576
502
  switch (item.element) {
577
503
  case 'TextInput':
578
504
  case 'EmailInput':
579
- case 'PhoneNumber':
580
505
  case 'NumberInput':
581
506
  case 'TextArea':
582
507
  case 'Dropdown':
583
- case 'DatePicker':
584
508
  case 'RadioButtons':
585
509
  case 'Rating':
586
510
  case 'Tags':
587
511
  case 'Range':
588
512
  case 'Checkbox':
589
513
  return getInputElement(item);
514
+ case 'PhoneNumber':
515
+ return /*#__PURE__*/_react["default"].createElement(_surveyElements.PhoneNumber, {
516
+ name: item.fieldName,
517
+ ref: function ref(c) {
518
+ return inputs.current[item.fieldName] = c;
519
+ },
520
+ key: "form_".concat(item.id),
521
+ item: item,
522
+ value: _getDefaultValue(item)
523
+ });
524
+ case 'DatePicker':
525
+ return /*#__PURE__*/_react["default"].createElement(_surveyElements.DatePicker, {
526
+ name: item.fieldName,
527
+ ref: function ref(c) {
528
+ return inputs.current[item.fieldName] = c;
529
+ },
530
+ key: "form_".concat(item.id),
531
+ item: item,
532
+ value: _getDefaultValue(item)
533
+ });
590
534
  case 'CustomElement':
591
535
  return getCustomElement(item);
592
536
  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 _reactPhoneNumberInput = require("react-phone-number-input");
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 ComponentHeader = function ComponentHeader(props) {
11
- if (props.item.mutable) {
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, props.item.pageBreakBefore && /*#__PURE__*/_react["default"].createElement("div", {
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: props.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": props.item["static"],
26
- required: props.item.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;