@bigbinary/neeto-form-frontend 4.2.11 → 4.3.0
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/app/javascript/src/translations/en.json +12 -1
- package/dist/BuildForm.js +73 -6
- package/dist/BuildForm.js.map +1 -1
- package/dist/ExternalForm.js +4 -4
- package/dist/Submission.js +1 -1
- package/dist/UrlBuilder.js +5 -4
- package/dist/UrlBuilder.js.map +1 -1
- package/dist/{buildForm-DcE5kFvR.js → buildForm-DA1LRDwr.js} +2 -2
- package/dist/{buildForm-DcE5kFvR.js.map → buildForm-DA1LRDwr.js.map} +1 -1
- package/dist/{buildForm-CooylMLL.js → buildForm-vzjjarhs.js} +2 -2
- package/dist/{buildForm-CooylMLL.js.map → buildForm-vzjjarhs.js.map} +1 -1
- package/dist/cjs/BuildForm.js +73 -6
- package/dist/cjs/BuildForm.js.map +1 -1
- package/dist/cjs/ExternalForm.js +4 -4
- package/dist/cjs/Submission.js +1 -1
- package/dist/cjs/UrlBuilder.js +5 -4
- package/dist/cjs/UrlBuilder.js.map +1 -1
- package/dist/cjs/hooks.js +4 -4
- package/dist/cjs/index.js +6 -6
- package/dist/{constants-BjWWA3Oq.js → constants-BEKfDeAd.js} +53 -25
- package/dist/constants-BEKfDeAd.js.map +1 -0
- package/dist/{constants-51SEJjzI.js → constants-B_OEW8Yc.js} +2 -1
- package/dist/constants-B_OEW8Yc.js.map +1 -0
- package/dist/{constants-C9wKMfgo.js → constants-DcN-Mvx7.js} +2 -1
- package/dist/constants-DcN-Mvx7.js.map +1 -0
- package/dist/{constants-QPLZ_r-D.js → constants-Dcy0vCkf.js} +51 -26
- package/dist/constants-Dcy0vCkf.js.map +1 -0
- package/dist/hooks.js +4 -4
- package/dist/{index-D4URTv1p.js → index-BQf-XQOv.js} +2 -2
- package/dist/{index-D4URTv1p.js.map → index-BQf-XQOv.js.map} +1 -1
- package/dist/{index-DnHrq-hl.js → index-DGvqFcqA.js} +2 -2
- package/dist/{index-DnHrq-hl.js.map → index-DGvqFcqA.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/main.css +1 -1
- package/dist/main.css.map +1 -1
- package/dist/{useFormSubmission-BGNEnxvm.js → useFormSubmission-C7RL4Doz.js} +2 -2
- package/dist/{useFormSubmission-BGNEnxvm.js.map → useFormSubmission-C7RL4Doz.js.map} +1 -1
- package/dist/{useFormSubmission-BUPnuOSG.js → useFormSubmission-CzjIcsVB.js} +2 -2
- package/dist/{useFormSubmission-BUPnuOSG.js.map → useFormSubmission-CzjIcsVB.js.map} +1 -1
- package/dist/{utils-Dn-q4QBc.js → utils-BgH6USlj.js} +148 -33
- package/dist/utils-BgH6USlj.js.map +1 -0
- package/dist/{utils-Ch7Ggngj.js → utils-CjySOwOO.js} +148 -33
- package/dist/utils-CjySOwOO.js.map +1 -0
- package/package.json +18 -19
- package/types.d.ts +3 -0
- package/dist/constants-51SEJjzI.js.map +0 -1
- package/dist/constants-BjWWA3Oq.js.map +0 -1
- package/dist/constants-C9wKMfgo.js.map +0 -1
- package/dist/constants-QPLZ_r-D.js.map +0 -1
- package/dist/utils-Ch7Ggngj.js.map +0 -1
- package/dist/utils-Dn-q4QBc.js.map +0 -1
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"clonedElementLabel": "Copy of {{label, anyCase}}",
|
|
53
53
|
"option": "Option",
|
|
54
54
|
"rating": "Rating",
|
|
55
|
+
"selection": "Selection",
|
|
55
56
|
"captchaType": "Captcha type",
|
|
56
57
|
"reCaptchaV2": "reCAPTCHA v2",
|
|
57
58
|
"mathCaptcha": "Math captcha",
|
|
@@ -82,7 +83,8 @@
|
|
|
82
83
|
"dif": "Decimal",
|
|
83
84
|
"fileUpload": "File upload",
|
|
84
85
|
"captcha": "Captcha",
|
|
85
|
-
"smsReminder": "SMS reminder"
|
|
86
|
+
"smsReminder": "SMS reminder",
|
|
87
|
+
"opinionScale": "Opinion scale"
|
|
86
88
|
},
|
|
87
89
|
"toasts": {
|
|
88
90
|
"formSubmitted": "Form has been submitted successfully!"
|
|
@@ -148,6 +150,13 @@
|
|
|
148
150
|
}
|
|
149
151
|
}
|
|
150
152
|
},
|
|
153
|
+
"opinionScale": {
|
|
154
|
+
"showLabels": "Show labels",
|
|
155
|
+
"leftLabel": "Left label",
|
|
156
|
+
"rightLabel": "Right label",
|
|
157
|
+
"worst": "Worst",
|
|
158
|
+
"best": "Best"
|
|
159
|
+
},
|
|
151
160
|
"changeLanguage": "Change language"
|
|
152
161
|
},
|
|
153
162
|
"error": {
|
|
@@ -162,6 +171,8 @@
|
|
|
162
171
|
"minOneEntity": "At least one {{entity}} is required",
|
|
163
172
|
"emailFromRestrictedDomain": "Emails with domain {{domain}} aren't accepted.",
|
|
164
173
|
"mustBeASixDigitNumber": "{{entity}} must be a 6 digit number",
|
|
174
|
+
"mustBeOrGreaterThanOrEqualTo": "Must be greater than or equal to {{value}}",
|
|
175
|
+
"mustBeOrLessThanOrEqualTo": "Must be less than or equal to {{value}}",
|
|
165
176
|
"emailNotVerified": "Email verification is required"
|
|
166
177
|
},
|
|
167
178
|
"fileTypes": {
|
package/dist/BuildForm.js
CHANGED
|
@@ -3,14 +3,14 @@ import classnames from 'classnames';
|
|
|
3
3
|
import { isPresent, truncate, findBy, isNotPresent, slugify, existsBy, hyphenate, noop, nullSafe, removeBy } from '@bigbinary/neeto-cist';
|
|
4
4
|
import Spinner from '@bigbinary/neetoui/Spinner';
|
|
5
5
|
import { equals, path, curry, assoc, prop, dissoc, when, includes, isEmpty, reject, keys, pick, omit, evolve, map, mergeLeft, isNil, pipe, filter, isNotNil, uniq, join, pluck, test, paths, difference, split, last, either, T, F } from 'ramda';
|
|
6
|
-
import { k as useDeleteQuestion, Q as QUESTION_TYPES, a as useForm, l as useCreateQuestion, m as useUpdateQuestion, C as CAPTCHA_TYPES, n as useReorderQuestions, i as QUERY_KEYS } from './constants-
|
|
7
|
-
import { f as buildDisplayLabel, h as INDEPENDENT_LABELS_MAP, i as QUESTION_ACTIONS, j as isElementOverflowing, k as Drag, l as SELECTABLE_KINDS, m as isAutoGeneratedQuestion, n as isRichTextQuestion, N as NON_BASIC_LATIN_CHARACTERS_REGEX, o as RESERVED_FIELD_CODES, d as LABEL_FIELDS, p as isDefaultLanguage, q as buildAddQuestionButtonProps, v as validateEditorContent, F as FIELD_CODES_REJECT_CHARS_REGEX, r as isImmutableField, Q as QUESTIONS_WITHOUT_FIELD_CODE, s as NON_HIDEABLE_FIELDS, t as NON_READ_ONLY_FIELDS, u as RICH_TEXT_QUESTIONS, w as FILE_TYPES_MAP, x as FILE_GROUPS, D as DEFAULT_CHOICE_QUESTION_ATTRIBUTES, M as MINIMUM_OPTIONS,
|
|
6
|
+
import { k as useDeleteQuestion, Q as QUESTION_TYPES, a as useForm, l as useCreateQuestion, m as useUpdateQuestion, C as CAPTCHA_TYPES, n as useReorderQuestions, i as QUERY_KEYS } from './constants-B_OEW8Yc.js';
|
|
7
|
+
import { f as buildDisplayLabel, h as INDEPENDENT_LABELS_MAP, i as QUESTION_ACTIONS, j as isElementOverflowing, k as Drag, l as SELECTABLE_KINDS, m as isAutoGeneratedQuestion, n as isRichTextQuestion, N as NON_BASIC_LATIN_CHARACTERS_REGEX, o as RESERVED_FIELD_CODES, d as LABEL_FIELDS, p as isDefaultLanguage, q as buildAddQuestionButtonProps, v as validateEditorContent, F as FIELD_CODES_REJECT_CHARS_REGEX, r as isImmutableField, Q as QUESTIONS_WITHOUT_FIELD_CODE, s as NON_HIDEABLE_FIELDS, t as NON_READ_ONLY_FIELDS, u as RICH_TEXT_QUESTIONS, O as OPINION_LABEL_MAX_LENGTH, w as FILE_TYPES_MAP, x as FILE_GROUPS, y as OPINION_SCALE_MIN_VALUE_OPTIONS, z as OPINION_SCALE_MAX_VALUE_OPTIONS, D as DEFAULT_CHOICE_QUESTION_ATTRIBUTES, M as MINIMUM_OPTIONS, A as IMAGE_HEIGHT_SLIDER_DEFAULTS, B as RATING_OPTIONS, G as STAR_RATING_MIN_VALUE_OPTIONS, H as STAR_RATING_MAX_VALUE_OPTIONS, J as STAR_RATING_ICONS_MAP, K as buildDisabledAddButtonHelpPopoverProps, T as buildReorderPayload, U as isMandatoryField, V as QUESTION_KINDS, a as QUESTION_KIND, W as getActiveQuestionKindDetails, X as DEFAULT_AVAILABLE_LANGUAGES, Y as DEFAULT_ADVANCED_FEATURES, Z as QUESTIONS_INITIAL_VALUE } from './constants-Dcy0vCkf.js';
|
|
8
8
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
9
9
|
import { useState, useRef, useEffect, createElement } from 'react';
|
|
10
10
|
import { Droppable, Draggable, DragDropContext } from '@hello-pangea/dnd';
|
|
11
11
|
import { withT, isMetaKeyPressed, useStateWithDependency, useFuncDebounce, useOnClickOutside } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
12
12
|
import { showThumbsUpToastr, withEventTargetValue, hyphenize } from '@bigbinary/neeto-commons-frontend/utils';
|
|
13
|
-
import { a as useBuildFormStore } from './buildForm-
|
|
13
|
+
import { a as useBuildFormStore } from './buildForm-DA1LRDwr.js';
|
|
14
14
|
import { shallow } from 'zustand/shallow';
|
|
15
15
|
import Alert from '@bigbinary/neetoui/Alert';
|
|
16
16
|
import { useTranslation, Trans } from 'react-i18next';
|
|
@@ -21,7 +21,7 @@ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
|
|
|
21
21
|
import Dropdown from '@bigbinary/neetoui/Dropdown';
|
|
22
22
|
import Tooltip from '@bigbinary/neetoui/Tooltip';
|
|
23
23
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
24
|
-
import { i as isFunction, f as fieldWithFallback, c as isNameQuestion } from './index-
|
|
24
|
+
import { i as isFunction, f as fieldWithFallback, c as isNameQuestion } from './index-DGvqFcqA.js';
|
|
25
25
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
26
26
|
import { t } from 'i18next';
|
|
27
27
|
import { v4 } from 'uuid';
|
|
@@ -600,12 +600,13 @@ var NAME = QUESTION_TYPES.NAME,
|
|
|
600
600
|
INTEGER = QUESTION_TYPES.INTEGER,
|
|
601
601
|
DECIMAL = QUESTION_TYPES.DECIMAL,
|
|
602
602
|
STAR_RATING$1 = QUESTION_TYPES.STAR_RATING,
|
|
603
|
+
OPINION_SCALE$1 = QUESTION_TYPES.OPINION_SCALE,
|
|
603
604
|
RATING$1 = QUESTION_TYPES.RATING,
|
|
604
605
|
DATE = QUESTION_TYPES.DATE,
|
|
605
606
|
FILE_UPLOAD$1 = QUESTION_TYPES.FILE_UPLOAD,
|
|
606
607
|
CAPTCHA$1 = QUESTION_TYPES.CAPTCHA,
|
|
607
608
|
SMS_REMINDER = QUESTION_TYPES.SMS_REMINDER;
|
|
608
|
-
var QUESTIONS_WITH_ADDITIONAL_DATA = [].concat(_toConsumableArray(SELECTABLE_KINDS), [STAR_RATING$1, RATING$1, FILE_UPLOAD$1, CAPTCHA$1, EMAIL$1]);
|
|
609
|
+
var QUESTIONS_WITH_ADDITIONAL_DATA = [].concat(_toConsumableArray(SELECTABLE_KINDS), [STAR_RATING$1, OPINION_SCALE$1, RATING$1, FILE_UPLOAD$1, CAPTCHA$1, EMAIL$1]);
|
|
609
610
|
var QUESTIONS_WITH_PLACEHOLDERS = [NAME, PHONE, EMAIL$1, ADDITIONAL_GUESTS, TEXT, TEXTAREA, RICH_TEXT, INTEGER, DECIMAL, DATE, SMS_REMINDER];
|
|
610
611
|
var DEFAULT_PLACEHOLDERS = {
|
|
611
612
|
CHECKBOX: t("neetoForm.questions.common.questionFields.field.labelExample", {
|
|
@@ -1153,6 +1154,15 @@ var buildNameLabelValidationSchema = function buildNameLabelValidationSchema(que
|
|
|
1153
1154
|
var isRequired = isFullName ? !question.isSplitMode : question.isSplitMode;
|
|
1154
1155
|
return isNameQuestion(question.kind) && isRequired ? requiredLabelValidation(schema, t("neetoForm.questions.common.questionFields.field.question")) : schema.notRequired();
|
|
1155
1156
|
};
|
|
1157
|
+
var buildOpinionScaleLabelValidationSchema = function buildOpinionScaleLabelValidationSchema(label) {
|
|
1158
|
+
return stringSchema.when("hasOpinionLabels", {
|
|
1159
|
+
is: true,
|
|
1160
|
+
then: requiredLabelValidation(stringSchema, label).max(OPINION_LABEL_MAX_LENGTH, t("neetoForm.error.mustBeOrLessThanOrEqualTo", {
|
|
1161
|
+
value: OPINION_LABEL_MAX_LENGTH
|
|
1162
|
+
})),
|
|
1163
|
+
otherwise: stringSchema.notRequired()
|
|
1164
|
+
});
|
|
1165
|
+
};
|
|
1156
1166
|
var stringSchema = yup.string();
|
|
1157
1167
|
var formValidationSchema = function formValidationSchema(question) {
|
|
1158
1168
|
var isFieldCodeEnabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
@@ -1177,7 +1187,9 @@ var formValidationSchema = function formValidationSchema(question) {
|
|
|
1177
1187
|
}),
|
|
1178
1188
|
highestRatingLabel: yup.string().nullable(),
|
|
1179
1189
|
averageRatingLabel: yup.string().nullable(),
|
|
1180
|
-
lowestRatingLabel: yup.string().nullable()
|
|
1190
|
+
lowestRatingLabel: yup.string().nullable(),
|
|
1191
|
+
leftOpinionLabel: buildOpinionScaleLabelValidationSchema(t("neetoForm.questions.opinionScale.leftLabel")),
|
|
1192
|
+
rightOpinionLabel: buildOpinionScaleLabelValidationSchema(t("neetoForm.questions.opinionScale.rightLabel"))
|
|
1181
1193
|
});
|
|
1182
1194
|
};
|
|
1183
1195
|
|
|
@@ -1857,6 +1869,58 @@ var FileUpload = function FileUpload() {
|
|
|
1857
1869
|
});
|
|
1858
1870
|
};
|
|
1859
1871
|
|
|
1872
|
+
var OpinionScale = function OpinionScale() {
|
|
1873
|
+
var _useTranslation = useTranslation(),
|
|
1874
|
+
t = _useTranslation.t;
|
|
1875
|
+
var _useFormikContext = useFormikContext(),
|
|
1876
|
+
setFieldValue = _useFormikContext.setFieldValue,
|
|
1877
|
+
_useFormikContext$val = _useFormikContext.values.hasOpinionLabels,
|
|
1878
|
+
hasOpinionLabels = _useFormikContext$val === void 0 ? false : _useFormikContext$val;
|
|
1879
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
1880
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
1881
|
+
className: "flex space-x-4",
|
|
1882
|
+
children: [/*#__PURE__*/jsx(Select, {
|
|
1883
|
+
className: "w-1/2",
|
|
1884
|
+
"data-testid": "neeto-form-engine-opinion-scale-min-value",
|
|
1885
|
+
label: t("neetoForm.common.start"),
|
|
1886
|
+
name: "minValue",
|
|
1887
|
+
options: OPINION_SCALE_MIN_VALUE_OPTIONS,
|
|
1888
|
+
onChange: function onChange(option) {
|
|
1889
|
+
return setFieldValue("minValue", option === null || option === void 0 ? void 0 : option.value);
|
|
1890
|
+
}
|
|
1891
|
+
}), /*#__PURE__*/jsx(Select, {
|
|
1892
|
+
className: "w-1/2",
|
|
1893
|
+
"data-testid": "neeto-form-engine-opinion-scale-max-value",
|
|
1894
|
+
label: t("neetoForm.common.end"),
|
|
1895
|
+
name: "maxValue",
|
|
1896
|
+
options: OPINION_SCALE_MAX_VALUE_OPTIONS,
|
|
1897
|
+
onChange: function onChange(option) {
|
|
1898
|
+
return setFieldValue("maxValue", option === null || option === void 0 ? void 0 : option.value);
|
|
1899
|
+
}
|
|
1900
|
+
})]
|
|
1901
|
+
}), /*#__PURE__*/jsx(Switch, {
|
|
1902
|
+
"data-testid": "neeto-form-engine-opinion-scale-show-labels-switch",
|
|
1903
|
+
label: t("neetoForm.questions.opinionScale.showLabels"),
|
|
1904
|
+
name: "hasOpinionLabels"
|
|
1905
|
+
}), hasOpinionLabels && /*#__PURE__*/jsxs("div", {
|
|
1906
|
+
className: "flex space-x-4",
|
|
1907
|
+
children: [/*#__PURE__*/jsx(Input, {
|
|
1908
|
+
className: "w-1/2",
|
|
1909
|
+
"data-testid": "neeto-form-engine-opinion-scale-left-label",
|
|
1910
|
+
label: t("neetoForm.questions.opinionScale.leftLabel"),
|
|
1911
|
+
maxLength: OPINION_LABEL_MAX_LENGTH,
|
|
1912
|
+
name: "leftOpinionLabel"
|
|
1913
|
+
}), /*#__PURE__*/jsx(Input, {
|
|
1914
|
+
className: "w-1/2",
|
|
1915
|
+
"data-testid": "neeto-form-engine-opinion-scale-right-label",
|
|
1916
|
+
label: t("neetoForm.questions.opinionScale.rightLabel"),
|
|
1917
|
+
maxLength: OPINION_LABEL_MAX_LENGTH,
|
|
1918
|
+
name: "rightOpinionLabel"
|
|
1919
|
+
})]
|
|
1920
|
+
})]
|
|
1921
|
+
});
|
|
1922
|
+
};
|
|
1923
|
+
|
|
1860
1924
|
function ownKeys$2(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; }
|
|
1861
1925
|
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1862
1926
|
var Options = function Options(_ref) {
|
|
@@ -2063,6 +2127,7 @@ var CHECKBOX = QUESTION_TYPES.CHECKBOX,
|
|
|
2063
2127
|
RADIO = QUESTION_TYPES.RADIO,
|
|
2064
2128
|
DROPDOWN = QUESTION_TYPES.DROPDOWN,
|
|
2065
2129
|
STAR_RATING = QUESTION_TYPES.STAR_RATING,
|
|
2130
|
+
OPINION_SCALE = QUESTION_TYPES.OPINION_SCALE,
|
|
2066
2131
|
RATING = QUESTION_TYPES.RATING,
|
|
2067
2132
|
FILE_UPLOAD = QUESTION_TYPES.FILE_UPLOAD,
|
|
2068
2133
|
CAPTCHA = QUESTION_TYPES.CAPTCHA,
|
|
@@ -2087,6 +2152,8 @@ var renderAdditionalData = function renderAdditionalData(_ref2) {
|
|
|
2087
2152
|
return /*#__PURE__*/jsx(Rating, {});
|
|
2088
2153
|
case STAR_RATING:
|
|
2089
2154
|
return /*#__PURE__*/jsx(StarRating, {});
|
|
2155
|
+
case OPINION_SCALE:
|
|
2156
|
+
return /*#__PURE__*/jsx(OpinionScale, {});
|
|
2090
2157
|
case FILE_UPLOAD:
|
|
2091
2158
|
return /*#__PURE__*/jsx(FileUpload, {});
|
|
2092
2159
|
case CAPTCHA:
|