@bigbinary/neeto-form-frontend 1.2.46 → 1.2.48

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React$2 from 'react';
2
2
  import React__default, { useState, useRef, useEffect, useContext, useLayoutEffect as useLayoutEffect$1, forwardRef, useImperativeHandle, Fragment, useReducer, useCallback as useCallback$1, useMemo as useMemo$1, createContext, createElement } from 'react';
3
3
  import { useFormikContext, useField, FieldArray, Form as Form$1, Formik, Field, FastField } from 'formik';
4
- import { noop as noop$4, slugify, filterBy, findBy, isNotEmpty, truncate, humanize, removeBy, isPresent as isPresent$1, isNotPresent, findById, notEqualsDeep } from '@bigbinary/neeto-cist';
4
+ import { noop as noop$4, findBy, slugify, filterBy, isNotEmpty, truncate, humanize, removeBy, isPresent as isPresent$1, isNotPresent, findById, notEqualsDeep } from '@bigbinary/neeto-cist';
5
5
  import { withEventTargetValue, showThumbsUpToastr, getQueryParams, dateFormat } from '@bigbinary/neeto-commons-frontend/utils';
6
6
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
7
7
  import { Tooltip, Dropdown as Dropdown$2, Alert, Typography, Button as Button$1, Label, Checkbox as Checkbox$1, Toastr, MultiEmailInput, DatePicker, Radio as Radio$1, Select, Textarea as Textarea$1, Input as Input$2, Spinner as Spinner$2 } from '@bigbinary/neetoui';
@@ -677,19 +677,22 @@ var useDeleteForm = function useDeleteForm(options) {
677
677
  var id = _ref6.id;
678
678
  return neetoFormApi.destroyForm(id);
679
679
  }, _objectSpread$j(_objectSpread$j({}, options), {}, {
680
- keysToInvalidate: function keysToInvalidate(_, _ref7) {
680
+ keysToInvalidate: [[QUERY_KEYS.FORMS], function (_, _ref7) {
681
681
  var id = _ref7.id;
682
- return [QUERY_KEYS.FORMS, [QUERY_KEYS.QUESTIONS, id], [QUERY_KEYS.QUESTIONS, "preview/".concat(id)]];
683
- },
682
+ return [QUERY_KEYS.QUESTIONS, id];
683
+ }, function (_, _ref8) {
684
+ var id = _ref8.id;
685
+ return [QUERY_KEYS.QUESTIONS, "preview/".concat(id)];
686
+ }],
684
687
  onSuccess: function onSuccess() {
685
688
  options.onSuccess && options.onSuccess.apply(options, arguments);
686
689
  }
687
690
  }));
688
691
  };
689
- var useSubmission = function useSubmission(_ref9) {
690
- var formId = _ref9.formId,
691
- submissionId = _ref9.submissionId,
692
- options = _objectWithoutProperties$1(_ref9, _excluded4$1);
692
+ var useSubmission = function useSubmission(_ref10) {
693
+ var formId = _ref10.formId,
694
+ submissionId = _ref10.submissionId,
695
+ options = _objectWithoutProperties$1(_ref10, _excluded4$1);
693
696
  return useQuery([QUERY_KEYS.SUBMISSION, formId, submissionId], function () {
694
697
  return neetoFormApi.getPublicSubmission(formId, submissionId);
695
698
  }, _objectSpread$j(_objectSpread$j({}, options), {}, {
@@ -698,9 +701,9 @@ var useSubmission = function useSubmission(_ref9) {
698
701
  };
699
702
  var useCreateSubmission = function useCreateSubmission(options) {
700
703
  var queryClient = useQueryClient();
701
- return useMutation(function (_ref10) {
702
- var formId = _ref10.formId,
703
- values = _ref10.values;
704
+ return useMutation(function (_ref11) {
705
+ var formId = _ref11.formId,
706
+ values = _ref11.values;
704
707
  return neetoFormApi.submitPublicForm(formId, values);
705
708
  }, _objectSpread$j(_objectSpread$j({}, options), {}, {
706
709
  onSuccess: function onSuccess() {
@@ -719,9 +722,9 @@ var useCreateSubmission = function useCreateSubmission(options) {
719
722
  };
720
723
  var useUpdateSubmission = function useUpdateSubmission(options) {
721
724
  var queryClient = useQueryClient();
722
- return useMutation(function (_ref11) {
723
- var formId = _ref11.formId,
724
- values = _ref11.values;
725
+ return useMutation(function (_ref12) {
726
+ var formId = _ref12.formId,
727
+ values = _ref12.values;
725
728
  return neetoFormApi.updatePublicSubmission(formId, values);
726
729
  }, _objectSpread$j(_objectSpread$j({}, options), {}, {
727
730
  onSuccess: function onSuccess() {
@@ -744,6 +747,11 @@ var DEFAULT_AVAILABLE_LANGUAGES = [{
744
747
  name: "English"
745
748
  }];
746
749
  var QUESTIONS_WITHOUT_FIELD_CODE = ["paragraph", "termsandcondition", "condition", "file_upload"];
750
+ var QUESTIONS_INITIAL_VALUE = {
751
+ enabled: false,
752
+ questions: [],
753
+ title: ""
754
+ };
747
755
  var RESERVED_FIELD_CODES = ["month", "date", "time"];
748
756
 
749
757
  function _arrayWithHoles$3(arr) {
@@ -9792,7 +9800,9 @@ var useBuildFormStore = create$1(withImmutableActions(function (set) {
9792
9800
  submitForm: noop$4,
9793
9801
  resetForm: noop$4,
9794
9802
  selectedLanguage: i18next.resolvedLanguage,
9795
- formId: null
9803
+ formId: null,
9804
+ enabled: false,
9805
+ title: ""
9796
9806
  },
9797
9807
  setFormData: function setFormData(payload) {
9798
9808
  return set(assoc("formState", payload));
@@ -9804,14 +9814,15 @@ var useBuildFormState = function useBuildFormState() {
9804
9814
  };
9805
9815
 
9806
9816
  var ChangeLanguageDropdown = function ChangeLanguageDropdown(_ref) {
9807
- var initialLanguage = _ref.initialLanguage,
9817
+ var _findBy;
9818
+ var currentLanguage = _ref.currentLanguage,
9808
9819
  languages = _ref.languages,
9809
9820
  onChange = _ref.onChange;
9810
9821
  var _useState = useState(false),
9811
9822
  _useState2 = _slicedToArray$3(_useState, 2),
9812
9823
  isUnsavedChangesAlertOpen = _useState2[0],
9813
9824
  setIsUnsavedChangesAlertOpen = _useState2[1];
9814
- var _useState3 = useState(initialLanguage),
9825
+ var _useState3 = useState(currentLanguage),
9815
9826
  _useState4 = _slicedToArray$3(_useState3, 2),
9816
9827
  selectedLanguage = _useState4[0],
9817
9828
  setSelectedLanguage = _useState4[1];
@@ -9827,17 +9838,24 @@ var ChangeLanguageDropdown = function ChangeLanguageDropdown(_ref) {
9827
9838
  setSelectedLanguage(code);
9828
9839
  setIsUnsavedChangesAlertOpen(true);
9829
9840
  };
9841
+ var selectedLanguageName = (_findBy = findBy({
9842
+ code: currentLanguage
9843
+ }, languages)) === null || _findBy === void 0 ? void 0 : _findBy.name;
9830
9844
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Tooltip, {
9831
9845
  content: t("neetoForm.questions.changeLanguage")
9832
9846
  }, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Dropdown$2, {
9847
+ buttonProps: {
9848
+ iconPosition: "left"
9849
+ },
9833
9850
  buttonStyle: "text",
9834
9851
  icon: Globe,
9852
+ label: selectedLanguageName,
9835
9853
  position: "top-start"
9836
9854
  }, /*#__PURE__*/React__default.createElement(Dropdown$2.Menu, null, languages.map(function (_ref2) {
9837
9855
  var code = _ref2.code,
9838
9856
  name = _ref2.name;
9839
9857
  return /*#__PURE__*/React__default.createElement(Dropdown$2.MenuItem.Button, {
9840
- isActive: initialLanguage === code,
9858
+ isActive: currentLanguage === code,
9841
9859
  key: code,
9842
9860
  onClick: function onClick() {
9843
9861
  return languageChangeHandler(code);
@@ -9874,7 +9892,7 @@ var Overview = function Overview(_ref) {
9874
9892
  style: "h4",
9875
9893
  weight: "semibold"
9876
9894
  }, title), availableLanguages.length > 1 && /*#__PURE__*/React__default.createElement(ChangeLanguageDropdown, {
9877
- initialLanguage: selectedLanguage,
9895
+ currentLanguage: selectedLanguage,
9878
9896
  languages: availableLanguages,
9879
9897
  onChange: onLanguageChange
9880
9898
  })), description);
@@ -11641,7 +11659,7 @@ var List = function List(_ref) {
11641
11659
  })))));
11642
11660
  };
11643
11661
 
11644
- var _excluded$6 = ["questionKinds", "showAddQuestionDivider", "onValueChange", "showActionBlock", "formId", "isDeletable", "isRequiredField", "submitButtonProps", "cancelButtonProps", "isKindAlreadyActive", "getActiveKindDetails", "kindUniqueOn", "isDisabledFieldLabel", "disabledAddButtonTooltipProps", "enableFieldCode", "formTitle", "formDescription", "selectedLanguage", "availableLanguages", "onLanguageChange"];
11662
+ var _excluded$6 = ["questionKinds", "showAddQuestionDivider", "onValueChange", "showActionBlock", "formId", "isDeletable", "isRequiredField", "submitButtonProps", "cancelButtonProps", "isKindAlreadyActive", "getActiveKindDetails", "kindUniqueOn", "isDisabledFieldLabel", "disabledAddButtonTooltipProps", "enableFieldCode", "isFormEnabled", "savedTitle", "formTitle", "formDescription", "selectedLanguage", "availableLanguages", "onLanguageChange"];
11645
11663
  function ownKeys$f(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; }
11646
11664
  function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty$6(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11647
11665
  var Form = function Form(_ref) {
@@ -11660,6 +11678,8 @@ var Form = function Form(_ref) {
11660
11678
  isDisabledFieldLabel = _ref.isDisabledFieldLabel,
11661
11679
  disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps,
11662
11680
  enableFieldCode = _ref.enableFieldCode,
11681
+ isFormEnabled = _ref.isFormEnabled,
11682
+ savedTitle = _ref.savedTitle,
11663
11683
  formTitle = _ref.formTitle,
11664
11684
  formDescription = _ref.formDescription,
11665
11685
  selectedLanguage = _ref.selectedLanguage,
@@ -11689,6 +11709,8 @@ var Form = function Form(_ref) {
11689
11709
  useEffect(function () {
11690
11710
  setFormData({
11691
11711
  formId: formId,
11712
+ enabled: isFormEnabled,
11713
+ title: savedTitle,
11692
11714
  values: values,
11693
11715
  dirty: dirty,
11694
11716
  isSubmitting: isSubmitting,
@@ -11698,7 +11720,7 @@ var Form = function Form(_ref) {
11698
11720
  resetForm: resetForm,
11699
11721
  selectedLanguage: selectedLanguage
11700
11722
  });
11701
- }, [formId, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage]);
11723
+ }, [formId, isFormEnabled, savedTitle, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage]);
11702
11724
  var questions = values.questions;
11703
11725
  useEffect(function () {
11704
11726
  onValueChange === null || onValueChange === void 0 || onValueChange(questions);
@@ -11996,12 +12018,11 @@ var BuildForm = function BuildForm(_ref) {
11996
12018
  }
11997
12019
  }),
11998
12020
  _useFetchQuestions$da = _useFetchQuestions.data,
11999
- _useFetchQuestions$da2 = _useFetchQuestions$da === void 0 ? {
12000
- title: "",
12001
- questions: []
12002
- } : _useFetchQuestions$da,
12003
- questions = _useFetchQuestions$da2.questions,
12021
+ _useFetchQuestions$da2 = _useFetchQuestions$da === void 0 ? QUESTIONS_INITIAL_VALUE : _useFetchQuestions$da,
12022
+ isFormEnabled = _useFetchQuestions$da2.enabled,
12023
+ savedTitle = _useFetchQuestions$da2.title,
12004
12024
  isQuestionsLoading = _useFetchQuestions$da2.isQuestionsLoading,
12025
+ questions = _useFetchQuestions$da2.questions,
12005
12026
  isLoading = _useFetchQuestions.isLoading,
12006
12027
  refetch = _useFetchQuestions.refetch;
12007
12028
  if (isLoading || showLoader && isQuestionsLoading) {
@@ -12009,7 +12030,8 @@ var BuildForm = function BuildForm(_ref) {
12009
12030
  className: "flex h-full w-full items-center justify-center py-6"
12010
12031
  }, /*#__PURE__*/React__default.createElement(PageLoader, null));
12011
12032
  }
12012
- var handleSubmit = function handleSubmit(payload) {
12033
+ var handleSubmit = function handleSubmit(payload, _ref2) {
12034
+ var setSubmitting = _ref2.setSubmitting;
12013
12035
  updateQuestions({
12014
12036
  id: id,
12015
12037
  values: _objectSpread$e({
@@ -12017,7 +12039,10 @@ var BuildForm = function BuildForm(_ref) {
12017
12039
  neetoFormQuestion: payload
12018
12040
  }, buildRequestArgs)
12019
12041
  }, {
12020
- onSuccess: refetch
12042
+ onSuccess: refetch,
12043
+ onSettled: function onSettled() {
12044
+ return setSubmitting(false);
12045
+ }
12021
12046
  });
12022
12047
  };
12023
12048
  var onValueChange = function onValueChange(questions) {
@@ -12030,8 +12055,8 @@ var BuildForm = function BuildForm(_ref) {
12030
12055
  var isDeletable = isQuestionDeletable !== null && isQuestionDeletable !== void 0 ? isQuestionDeletable : function (question) {
12031
12056
  return !nonRemovableFields.includes(question.kind);
12032
12057
  };
12033
- var isRequiredField = isFieldRequired !== null && isFieldRequired !== void 0 ? isFieldRequired : function (_ref2) {
12034
- var kind = _ref2.kind;
12058
+ var isRequiredField = isFieldRequired !== null && isFieldRequired !== void 0 ? isFieldRequired : function (_ref3) {
12059
+ var kind = _ref3.kind;
12035
12060
  return requiredFields.includes(kind);
12036
12061
  };
12037
12062
  var isDisabledFieldLabel = isFieldLabelDisabled !== null && isFieldLabelDisabled !== void 0 ? isFieldLabelDisabled : function () {
@@ -12049,9 +12074,9 @@ var BuildForm = function BuildForm(_ref) {
12049
12074
  },
12050
12075
  validationSchema: formValidationSchema,
12051
12076
  onSubmit: handleSubmit
12052
- }, function (_ref3) {
12053
- var errors = _ref3.errors,
12054
- setFieldError = _ref3.setFieldError;
12077
+ }, function (_ref4) {
12078
+ var errors = _ref4.errors,
12079
+ setFieldError = _ref4.setFieldError;
12055
12080
  return /*#__PURE__*/React__default.createElement(Form, _extends$8({}, _objectSpread$e(_objectSpread$e({}, formDomProps), {}, {
12056
12081
  availableLanguages: availableLanguages,
12057
12082
  cancelButtonProps: cancelButtonProps,
@@ -12062,11 +12087,13 @@ var BuildForm = function BuildForm(_ref) {
12062
12087
  getActiveKindDetails: getActiveKindDetails,
12063
12088
  isDeletable: isDeletable,
12064
12089
  isDisabledFieldLabel: isDisabledFieldLabel,
12090
+ isFormEnabled: isFormEnabled,
12065
12091
  isKindAlreadyActive: isKindAlreadyActive,
12066
12092
  isRequiredField: isRequiredField,
12067
12093
  kindUniqueOn: kindUniqueOn,
12068
12094
  onLanguageChange: onLanguageChange,
12069
12095
  onValueChange: onValueChange,
12096
+ savedTitle: savedTitle,
12070
12097
  selectedLanguage: selectedLanguage,
12071
12098
  showActionBlock: showActionBlock,
12072
12099
  showAddQuestionDivider: showAddQuestionDivider,
@@ -27219,7 +27246,8 @@ var ExternalForm = function ExternalForm(_ref) {
27219
27246
  }, /*#__PURE__*/React__default.createElement(PageLoader, null));
27220
27247
  }
27221
27248
  var title = form.title,
27222
- questions = form.questions;
27249
+ _form$questions = form.questions,
27250
+ questions = _form$questions === void 0 ? [] : _form$questions;
27223
27251
  var renderedQuestions = preview ? questions.filter(function (_ref4) {
27224
27252
  var _destroy = _ref4._destroy;
27225
27253
  return !_destroy;