@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/README.md +10 -0
- package/dist/index.cjs.js +61 -33
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +62 -34
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
- package/types.d.ts +2 -0
package/README.md
CHANGED
|
@@ -76,6 +76,16 @@ The engine adds setup for form on backend and allows us to attach forms to any m
|
|
|
76
76
|
has_one :form, class_name: "::NeetoFormEngine::Form", as: :attachable
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
### Customizability
|
|
80
|
+
The engine supports customizing the default behavior of `Questions::UpdateService`. The supported methods/constants can be overridden by defining them in the concern `NeetoFormEngine::Customizable::Questions::Updateable`
|
|
81
|
+
|
|
82
|
+
#### Available methods:
|
|
83
|
+
1. `create_question!`: This takes 2 arguments: `params` and `question`. The `params` argument contains the question parameters passed from the front-end, and the `question` argument contains the current question. This argument is required if you need translation support.
|
|
84
|
+
2. `additional_question_params`: If you want to include additional attributes while creating questions, you can specify them using this method. It takes one argument `params` which will be the question parameters passed from the front-end.
|
|
85
|
+
|
|
86
|
+
#### Available constants:
|
|
87
|
+
1. `EXCLUDED_UPDATE_PARAMS`: If you have included extra parameters other than `kind` for additional use cases that are not valid entity attributes, they need to be specified as `EXCLUDED_UPDATE_PARAMS`.
|
|
88
|
+
|
|
79
89
|
## Frontend package
|
|
80
90
|
The frontend package allows us to create forms across neeto products.
|
|
81
91
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -715,19 +715,22 @@ var useDeleteForm = function useDeleteForm(options) {
|
|
|
715
715
|
var id = _ref6.id;
|
|
716
716
|
return neetoFormApi.destroyForm(id);
|
|
717
717
|
}, _objectSpread$j(_objectSpread$j({}, options), {}, {
|
|
718
|
-
keysToInvalidate: function
|
|
718
|
+
keysToInvalidate: [[QUERY_KEYS.FORMS], function (_, _ref7) {
|
|
719
719
|
var id = _ref7.id;
|
|
720
|
-
return [QUERY_KEYS.
|
|
721
|
-
},
|
|
720
|
+
return [QUERY_KEYS.QUESTIONS, id];
|
|
721
|
+
}, function (_, _ref8) {
|
|
722
|
+
var id = _ref8.id;
|
|
723
|
+
return [QUERY_KEYS.QUESTIONS, "preview/".concat(id)];
|
|
724
|
+
}],
|
|
722
725
|
onSuccess: function onSuccess() {
|
|
723
726
|
options.onSuccess && options.onSuccess.apply(options, arguments);
|
|
724
727
|
}
|
|
725
728
|
}));
|
|
726
729
|
};
|
|
727
|
-
var useSubmission = function useSubmission(
|
|
728
|
-
var formId =
|
|
729
|
-
submissionId =
|
|
730
|
-
options = _objectWithoutProperties$1(
|
|
730
|
+
var useSubmission = function useSubmission(_ref10) {
|
|
731
|
+
var formId = _ref10.formId,
|
|
732
|
+
submissionId = _ref10.submissionId,
|
|
733
|
+
options = _objectWithoutProperties$1(_ref10, _excluded4$1);
|
|
731
734
|
return reactQuery.useQuery([QUERY_KEYS.SUBMISSION, formId, submissionId], function () {
|
|
732
735
|
return neetoFormApi.getPublicSubmission(formId, submissionId);
|
|
733
736
|
}, _objectSpread$j(_objectSpread$j({}, options), {}, {
|
|
@@ -736,9 +739,9 @@ var useSubmission = function useSubmission(_ref9) {
|
|
|
736
739
|
};
|
|
737
740
|
var useCreateSubmission = function useCreateSubmission(options) {
|
|
738
741
|
var queryClient = reactQuery.useQueryClient();
|
|
739
|
-
return reactQuery.useMutation(function (
|
|
740
|
-
var formId =
|
|
741
|
-
values =
|
|
742
|
+
return reactQuery.useMutation(function (_ref11) {
|
|
743
|
+
var formId = _ref11.formId,
|
|
744
|
+
values = _ref11.values;
|
|
742
745
|
return neetoFormApi.submitPublicForm(formId, values);
|
|
743
746
|
}, _objectSpread$j(_objectSpread$j({}, options), {}, {
|
|
744
747
|
onSuccess: function onSuccess() {
|
|
@@ -757,9 +760,9 @@ var useCreateSubmission = function useCreateSubmission(options) {
|
|
|
757
760
|
};
|
|
758
761
|
var useUpdateSubmission = function useUpdateSubmission(options) {
|
|
759
762
|
var queryClient = reactQuery.useQueryClient();
|
|
760
|
-
return reactQuery.useMutation(function (
|
|
761
|
-
var formId =
|
|
762
|
-
values =
|
|
763
|
+
return reactQuery.useMutation(function (_ref12) {
|
|
764
|
+
var formId = _ref12.formId,
|
|
765
|
+
values = _ref12.values;
|
|
763
766
|
return neetoFormApi.updatePublicSubmission(formId, values);
|
|
764
767
|
}, _objectSpread$j(_objectSpread$j({}, options), {}, {
|
|
765
768
|
onSuccess: function onSuccess() {
|
|
@@ -782,6 +785,11 @@ var DEFAULT_AVAILABLE_LANGUAGES = [{
|
|
|
782
785
|
name: "English"
|
|
783
786
|
}];
|
|
784
787
|
var QUESTIONS_WITHOUT_FIELD_CODE = ["paragraph", "termsandcondition", "condition", "file_upload"];
|
|
788
|
+
var QUESTIONS_INITIAL_VALUE = {
|
|
789
|
+
enabled: false,
|
|
790
|
+
questions: [],
|
|
791
|
+
title: ""
|
|
792
|
+
};
|
|
785
793
|
var RESERVED_FIELD_CODES = ["month", "date", "time"];
|
|
786
794
|
|
|
787
795
|
function _arrayWithHoles$3(arr) {
|
|
@@ -9830,7 +9838,9 @@ var useBuildFormStore = zustand.create(reactUtils.withImmutableActions(function
|
|
|
9830
9838
|
submitForm: neetoCist.noop,
|
|
9831
9839
|
resetForm: neetoCist.noop,
|
|
9832
9840
|
selectedLanguage: i18next__default["default"].resolvedLanguage,
|
|
9833
|
-
formId: null
|
|
9841
|
+
formId: null,
|
|
9842
|
+
enabled: false,
|
|
9843
|
+
title: ""
|
|
9834
9844
|
},
|
|
9835
9845
|
setFormData: function setFormData(payload) {
|
|
9836
9846
|
return set(ramda.assoc("formState", payload));
|
|
@@ -9842,14 +9852,15 @@ var useBuildFormState = function useBuildFormState() {
|
|
|
9842
9852
|
};
|
|
9843
9853
|
|
|
9844
9854
|
var ChangeLanguageDropdown = function ChangeLanguageDropdown(_ref) {
|
|
9845
|
-
var
|
|
9855
|
+
var _findBy;
|
|
9856
|
+
var currentLanguage = _ref.currentLanguage,
|
|
9846
9857
|
languages = _ref.languages,
|
|
9847
9858
|
onChange = _ref.onChange;
|
|
9848
9859
|
var _useState = React$2.useState(false),
|
|
9849
9860
|
_useState2 = _slicedToArray$3(_useState, 2),
|
|
9850
9861
|
isUnsavedChangesAlertOpen = _useState2[0],
|
|
9851
9862
|
setIsUnsavedChangesAlertOpen = _useState2[1];
|
|
9852
|
-
var _useState3 = React$2.useState(
|
|
9863
|
+
var _useState3 = React$2.useState(currentLanguage),
|
|
9853
9864
|
_useState4 = _slicedToArray$3(_useState3, 2),
|
|
9854
9865
|
selectedLanguage = _useState4[0],
|
|
9855
9866
|
setSelectedLanguage = _useState4[1];
|
|
@@ -9865,17 +9876,24 @@ var ChangeLanguageDropdown = function ChangeLanguageDropdown(_ref) {
|
|
|
9865
9876
|
setSelectedLanguage(code);
|
|
9866
9877
|
setIsUnsavedChangesAlertOpen(true);
|
|
9867
9878
|
};
|
|
9879
|
+
var selectedLanguageName = (_findBy = neetoCist.findBy({
|
|
9880
|
+
code: currentLanguage
|
|
9881
|
+
}, languages)) === null || _findBy === void 0 ? void 0 : _findBy.name;
|
|
9868
9882
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
|
|
9869
9883
|
content: t("neetoForm.questions.changeLanguage")
|
|
9870
9884
|
}, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
|
|
9885
|
+
buttonProps: {
|
|
9886
|
+
iconPosition: "left"
|
|
9887
|
+
},
|
|
9871
9888
|
buttonStyle: "text",
|
|
9872
9889
|
icon: neetoIcons.Globe,
|
|
9890
|
+
label: selectedLanguageName,
|
|
9873
9891
|
position: "top-start"
|
|
9874
9892
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown.Menu, null, languages.map(function (_ref2) {
|
|
9875
9893
|
var code = _ref2.code,
|
|
9876
9894
|
name = _ref2.name;
|
|
9877
9895
|
return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown.MenuItem.Button, {
|
|
9878
|
-
isActive:
|
|
9896
|
+
isActive: currentLanguage === code,
|
|
9879
9897
|
key: code,
|
|
9880
9898
|
onClick: function onClick() {
|
|
9881
9899
|
return languageChangeHandler(code);
|
|
@@ -9912,7 +9930,7 @@ var Overview = function Overview(_ref) {
|
|
|
9912
9930
|
style: "h4",
|
|
9913
9931
|
weight: "semibold"
|
|
9914
9932
|
}, title), availableLanguages.length > 1 && /*#__PURE__*/React__default["default"].createElement(ChangeLanguageDropdown, {
|
|
9915
|
-
|
|
9933
|
+
currentLanguage: selectedLanguage,
|
|
9916
9934
|
languages: availableLanguages,
|
|
9917
9935
|
onChange: onLanguageChange
|
|
9918
9936
|
})), description);
|
|
@@ -11679,7 +11697,7 @@ var List = function List(_ref) {
|
|
|
11679
11697
|
})))));
|
|
11680
11698
|
};
|
|
11681
11699
|
|
|
11682
|
-
var _excluded$6 = ["questionKinds", "showAddQuestionDivider", "onValueChange", "showActionBlock", "formId", "isDeletable", "isRequiredField", "submitButtonProps", "cancelButtonProps", "isKindAlreadyActive", "getActiveKindDetails", "kindUniqueOn", "isDisabledFieldLabel", "disabledAddButtonTooltipProps", "enableFieldCode", "formTitle", "formDescription", "selectedLanguage", "availableLanguages", "onLanguageChange"];
|
|
11700
|
+
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"];
|
|
11683
11701
|
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; }
|
|
11684
11702
|
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; }
|
|
11685
11703
|
var Form = function Form(_ref) {
|
|
@@ -11698,6 +11716,8 @@ var Form = function Form(_ref) {
|
|
|
11698
11716
|
isDisabledFieldLabel = _ref.isDisabledFieldLabel,
|
|
11699
11717
|
disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps,
|
|
11700
11718
|
enableFieldCode = _ref.enableFieldCode,
|
|
11719
|
+
isFormEnabled = _ref.isFormEnabled,
|
|
11720
|
+
savedTitle = _ref.savedTitle,
|
|
11701
11721
|
formTitle = _ref.formTitle,
|
|
11702
11722
|
formDescription = _ref.formDescription,
|
|
11703
11723
|
selectedLanguage = _ref.selectedLanguage,
|
|
@@ -11727,6 +11747,8 @@ var Form = function Form(_ref) {
|
|
|
11727
11747
|
React$2.useEffect(function () {
|
|
11728
11748
|
setFormData({
|
|
11729
11749
|
formId: formId,
|
|
11750
|
+
enabled: isFormEnabled,
|
|
11751
|
+
title: savedTitle,
|
|
11730
11752
|
values: values,
|
|
11731
11753
|
dirty: dirty,
|
|
11732
11754
|
isSubmitting: isSubmitting,
|
|
@@ -11736,7 +11758,7 @@ var Form = function Form(_ref) {
|
|
|
11736
11758
|
resetForm: resetForm,
|
|
11737
11759
|
selectedLanguage: selectedLanguage
|
|
11738
11760
|
});
|
|
11739
|
-
}, [formId, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage]);
|
|
11761
|
+
}, [formId, isFormEnabled, savedTitle, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage]);
|
|
11740
11762
|
var questions = values.questions;
|
|
11741
11763
|
React$2.useEffect(function () {
|
|
11742
11764
|
onValueChange === null || onValueChange === void 0 || onValueChange(questions);
|
|
@@ -12034,12 +12056,11 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12034
12056
|
}
|
|
12035
12057
|
}),
|
|
12036
12058
|
_useFetchQuestions$da = _useFetchQuestions.data,
|
|
12037
|
-
_useFetchQuestions$da2 = _useFetchQuestions$da === void 0 ?
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
} : _useFetchQuestions$da,
|
|
12041
|
-
questions = _useFetchQuestions$da2.questions,
|
|
12059
|
+
_useFetchQuestions$da2 = _useFetchQuestions$da === void 0 ? QUESTIONS_INITIAL_VALUE : _useFetchQuestions$da,
|
|
12060
|
+
isFormEnabled = _useFetchQuestions$da2.enabled,
|
|
12061
|
+
savedTitle = _useFetchQuestions$da2.title,
|
|
12042
12062
|
isQuestionsLoading = _useFetchQuestions$da2.isQuestionsLoading,
|
|
12063
|
+
questions = _useFetchQuestions$da2.questions,
|
|
12043
12064
|
isLoading = _useFetchQuestions.isLoading,
|
|
12044
12065
|
refetch = _useFetchQuestions.refetch;
|
|
12045
12066
|
if (isLoading || showLoader && isQuestionsLoading) {
|
|
@@ -12047,7 +12068,8 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12047
12068
|
className: "flex h-full w-full items-center justify-center py-6"
|
|
12048
12069
|
}, /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null));
|
|
12049
12070
|
}
|
|
12050
|
-
var handleSubmit = function handleSubmit(payload) {
|
|
12071
|
+
var handleSubmit = function handleSubmit(payload, _ref2) {
|
|
12072
|
+
var setSubmitting = _ref2.setSubmitting;
|
|
12051
12073
|
updateQuestions({
|
|
12052
12074
|
id: id,
|
|
12053
12075
|
values: _objectSpread$e({
|
|
@@ -12055,7 +12077,10 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12055
12077
|
neetoFormQuestion: payload
|
|
12056
12078
|
}, buildRequestArgs)
|
|
12057
12079
|
}, {
|
|
12058
|
-
onSuccess: refetch
|
|
12080
|
+
onSuccess: refetch,
|
|
12081
|
+
onSettled: function onSettled() {
|
|
12082
|
+
return setSubmitting(false);
|
|
12083
|
+
}
|
|
12059
12084
|
});
|
|
12060
12085
|
};
|
|
12061
12086
|
var onValueChange = function onValueChange(questions) {
|
|
@@ -12068,8 +12093,8 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12068
12093
|
var isDeletable = isQuestionDeletable !== null && isQuestionDeletable !== void 0 ? isQuestionDeletable : function (question) {
|
|
12069
12094
|
return !nonRemovableFields.includes(question.kind);
|
|
12070
12095
|
};
|
|
12071
|
-
var isRequiredField = isFieldRequired !== null && isFieldRequired !== void 0 ? isFieldRequired : function (
|
|
12072
|
-
var kind =
|
|
12096
|
+
var isRequiredField = isFieldRequired !== null && isFieldRequired !== void 0 ? isFieldRequired : function (_ref3) {
|
|
12097
|
+
var kind = _ref3.kind;
|
|
12073
12098
|
return requiredFields.includes(kind);
|
|
12074
12099
|
};
|
|
12075
12100
|
var isDisabledFieldLabel = isFieldLabelDisabled !== null && isFieldLabelDisabled !== void 0 ? isFieldLabelDisabled : function () {
|
|
@@ -12087,9 +12112,9 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12087
12112
|
},
|
|
12088
12113
|
validationSchema: formValidationSchema,
|
|
12089
12114
|
onSubmit: handleSubmit
|
|
12090
|
-
}, function (
|
|
12091
|
-
var errors =
|
|
12092
|
-
setFieldError =
|
|
12115
|
+
}, function (_ref4) {
|
|
12116
|
+
var errors = _ref4.errors,
|
|
12117
|
+
setFieldError = _ref4.setFieldError;
|
|
12093
12118
|
return /*#__PURE__*/React__default["default"].createElement(Form, _extends$8({}, _objectSpread$e(_objectSpread$e({}, formDomProps), {}, {
|
|
12094
12119
|
availableLanguages: availableLanguages,
|
|
12095
12120
|
cancelButtonProps: cancelButtonProps,
|
|
@@ -12100,11 +12125,13 @@ var BuildForm = function BuildForm(_ref) {
|
|
|
12100
12125
|
getActiveKindDetails: getActiveKindDetails,
|
|
12101
12126
|
isDeletable: isDeletable,
|
|
12102
12127
|
isDisabledFieldLabel: isDisabledFieldLabel,
|
|
12128
|
+
isFormEnabled: isFormEnabled,
|
|
12103
12129
|
isKindAlreadyActive: isKindAlreadyActive,
|
|
12104
12130
|
isRequiredField: isRequiredField,
|
|
12105
12131
|
kindUniqueOn: kindUniqueOn,
|
|
12106
12132
|
onLanguageChange: onLanguageChange,
|
|
12107
12133
|
onValueChange: onValueChange,
|
|
12134
|
+
savedTitle: savedTitle,
|
|
12108
12135
|
selectedLanguage: selectedLanguage,
|
|
12109
12136
|
showActionBlock: showActionBlock,
|
|
12110
12137
|
showAddQuestionDivider: showAddQuestionDivider,
|
|
@@ -27257,7 +27284,8 @@ var ExternalForm = function ExternalForm(_ref) {
|
|
|
27257
27284
|
}, /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null));
|
|
27258
27285
|
}
|
|
27259
27286
|
var title = form.title,
|
|
27260
|
-
questions = form.questions
|
|
27287
|
+
_form$questions = form.questions,
|
|
27288
|
+
questions = _form$questions === void 0 ? [] : _form$questions;
|
|
27261
27289
|
var renderedQuestions = preview ? questions.filter(function (_ref4) {
|
|
27262
27290
|
var _destroy = _ref4._destroy;
|
|
27263
27291
|
return !_destroy;
|