@bigbinary/neeto-form-frontend 4.2.10 → 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.
Files changed (52) hide show
  1. package/app/javascript/src/translations/en.json +12 -1
  2. package/app/javascript/src/translations/hu.json +220 -0
  3. package/dist/BuildForm.js +74 -6
  4. package/dist/BuildForm.js.map +1 -1
  5. package/dist/ExternalForm.js +4 -4
  6. package/dist/Submission.js +1 -1
  7. package/dist/UrlBuilder.js +5 -4
  8. package/dist/UrlBuilder.js.map +1 -1
  9. package/dist/{buildForm-DcE5kFvR.js → buildForm-DA1LRDwr.js} +2 -2
  10. package/dist/{buildForm-DcE5kFvR.js.map → buildForm-DA1LRDwr.js.map} +1 -1
  11. package/dist/{buildForm-CooylMLL.js → buildForm-vzjjarhs.js} +2 -2
  12. package/dist/{buildForm-CooylMLL.js.map → buildForm-vzjjarhs.js.map} +1 -1
  13. package/dist/cjs/BuildForm.js +74 -6
  14. package/dist/cjs/BuildForm.js.map +1 -1
  15. package/dist/cjs/ExternalForm.js +4 -4
  16. package/dist/cjs/Submission.js +1 -1
  17. package/dist/cjs/UrlBuilder.js +5 -4
  18. package/dist/cjs/UrlBuilder.js.map +1 -1
  19. package/dist/cjs/hooks.js +4 -4
  20. package/dist/cjs/index.js +6 -6
  21. package/dist/{constants-BjWWA3Oq.js → constants-BEKfDeAd.js} +53 -25
  22. package/dist/constants-BEKfDeAd.js.map +1 -0
  23. package/dist/{constants-51SEJjzI.js → constants-B_OEW8Yc.js} +2 -1
  24. package/dist/constants-B_OEW8Yc.js.map +1 -0
  25. package/dist/{constants-C9wKMfgo.js → constants-DcN-Mvx7.js} +2 -1
  26. package/dist/constants-DcN-Mvx7.js.map +1 -0
  27. package/dist/{constants-QPLZ_r-D.js → constants-Dcy0vCkf.js} +51 -26
  28. package/dist/constants-Dcy0vCkf.js.map +1 -0
  29. package/dist/hooks.js +4 -4
  30. package/dist/{index-D4URTv1p.js → index-BQf-XQOv.js} +2 -2
  31. package/dist/{index-D4URTv1p.js.map → index-BQf-XQOv.js.map} +1 -1
  32. package/dist/{index-DnHrq-hl.js → index-DGvqFcqA.js} +2 -2
  33. package/dist/{index-DnHrq-hl.js.map → index-DGvqFcqA.js.map} +1 -1
  34. package/dist/index.js +6 -6
  35. package/dist/main.css +1 -1
  36. package/dist/main.css.map +1 -1
  37. package/dist/{useFormSubmission-BGNEnxvm.js → useFormSubmission-C7RL4Doz.js} +2 -2
  38. package/dist/{useFormSubmission-BGNEnxvm.js.map → useFormSubmission-C7RL4Doz.js.map} +1 -1
  39. package/dist/{useFormSubmission-BUPnuOSG.js → useFormSubmission-CzjIcsVB.js} +2 -2
  40. package/dist/{useFormSubmission-BUPnuOSG.js.map → useFormSubmission-CzjIcsVB.js.map} +1 -1
  41. package/dist/{utils-Dn-q4QBc.js → utils-BgH6USlj.js} +148 -33
  42. package/dist/utils-BgH6USlj.js.map +1 -0
  43. package/dist/{utils-Ch7Ggngj.js → utils-CjySOwOO.js} +148 -33
  44. package/dist/utils-CjySOwOO.js.map +1 -0
  45. package/package.json +18 -19
  46. package/types.d.ts +3 -0
  47. package/dist/constants-51SEJjzI.js.map +0 -1
  48. package/dist/constants-BjWWA3Oq.js.map +0 -1
  49. package/dist/constants-C9wKMfgo.js.map +0 -1
  50. package/dist/constants-QPLZ_r-D.js.map +0 -1
  51. package/dist/utils-Ch7Ggngj.js.map +0 -1
  52. 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": {
@@ -0,0 +1,220 @@
1
+ {
2
+ "neetoForm": {
3
+ "common": {
4
+ "fieldReq": "{{field}} kötelező",
5
+ "thisFieldIsRequired": "Ez a mező kötelező",
6
+ "somethingWentWrong": "Valami hiba történt!",
7
+ "edit": "Szerkesztés",
8
+ "clone": "Másolás",
9
+ "delete": "Törlés",
10
+ "agreeTermsAndConditions": "Elfogadom az alábbi feltételeket és kikötéseket",
11
+ "agreeCondition": "Elfogadom",
12
+ "mustAcceptTermsAndConditions": "El kell fogadnia a feltételeket és kikötéseket",
13
+ "mustAcceptCondition": "El kell fogadnia a feltételt a folytatáshoz",
14
+ "email": "Email",
15
+ "phone": "Telefon",
16
+ "phNo": "Telefonszám",
17
+ "name": "Név",
18
+ "text": "Szöveg",
19
+ "rate": "Értékelés",
20
+ "submit": "Küldés",
21
+ "reset": "Visszaállítás",
22
+ "cancel": "Mégsem",
23
+ "singleChoice": "Egyszerű választás",
24
+ "company": "Cég",
25
+ "select": "Kiválasztás",
26
+ "selectOne": "Egy kiválasztása",
27
+ "required": "Kötelező",
28
+ "hideQuestion": "Kérdés elrejtése",
29
+ "readOnly": "Csak olvasható",
30
+ "responseVisibleOnlyToHost": "A válasz csak a házigazda számára látható",
31
+ "invalidURL": "Érvénytelen URL",
32
+ "generateLink": "Hivatkozás generálása",
33
+ "paragraphCantBeEmpty": "A bekezdés nem lehet üres",
34
+ "phoneNumberValidation": "telefon szám, ami az országhívószámmal kezdődik",
35
+ "yes": "Igen",
36
+ "count": "Szám",
37
+ "shape": "Alak",
38
+ "good": "Jó",
39
+ "okay": "Jó",
40
+ "bad": "Rossz",
41
+ "no": "Nem",
42
+ "addAdditionalGuests": "További vendégek hozzáadása",
43
+ "unanswered": "Megválaszolatlan",
44
+ "hobbies": "Hobbi",
45
+ "country": "Ország",
46
+ "addGuests": "Vendégek hozzáadása",
47
+ "addGuestsHelper": "Adja meg az email címeket, vesszővel elválasztva.",
48
+ "start": "Kezdődik",
49
+ "end": "Vége",
50
+ "settings": "Beállítások",
51
+ "advancedProperties": "Haladó beállítások",
52
+ "clonedElementLabel": "{{label, anyCase}} másolata",
53
+ "option": "Lehetőség",
54
+ "rating": "Értékelés",
55
+ "captchaType": "Captcha típusa",
56
+ "reCaptchaV2": "reCAPTCHA v2",
57
+ "mathCaptcha": "Matematikai captcha",
58
+ "remainingItemsCount": "{{count}} több",
59
+ "domain": "Domain",
60
+ "domains": "Tartományok",
61
+ "viewHelpArticle": "Segítség cikk megtekintése",
62
+ "splitAsFirstAndLastNames": "\"Keresztnév\" és \"Vezetéknév\" felosztása"
63
+ },
64
+ "fields": {
65
+ "mcf": "Többszörös választás",
66
+ "scf": "Egyszerű választás",
67
+ "def": "Bekezdés",
68
+ "drf": "Legördülő lista",
69
+ "qif": "Többsoros szöveg",
70
+ "nif": "Név",
71
+ "tif": "Egysoros szöveg",
72
+ "eif": "Email",
73
+ "pif": "Telefonszám",
74
+ "rif": "Értékelés",
75
+ "tcf": "Feltételek és kikötések",
76
+ "date": "Dátum",
77
+ "fbf": "Visszajelzés",
78
+ "agif": "További vendégek",
79
+ "rtf": "Gazdag szövegmező",
80
+ "cf": "Feltétel",
81
+ "iif": "Egész szám",
82
+ "dif": "Tizedes",
83
+ "fileUpload": "Fájl feltöltés",
84
+ "captcha": "Captcha",
85
+ "smsReminder": "SMS emlékeztető"
86
+ },
87
+ "toasts": {
88
+ "formSubmitted": "A formot sikeresen benyújtották!"
89
+ },
90
+ "callouts": {
91
+ "submitError": "Nem sikerült benyújtani a formot",
92
+ "hiddenQuestion": "Ez egy rejtett mező. Az űrlapot kitöltők nem fogják látni ezt a mezőt.",
93
+ "responseVisibleOnlyToHost": "Ez a mező mindenki számára látható. De a válasza csak a házigazda számára lesz látható."
94
+ },
95
+ "successPage": {
96
+ "title1": "Köszönjük.",
97
+ "title2": "Válaszát megkaptuk."
98
+ },
99
+ "emptyState": {
100
+ "noData": "Nincs adat található."
101
+ },
102
+ "questions": {
103
+ "deleteAlert": {
104
+ "title": "Törölni akarja a mezőt?",
105
+ "message_one": "A <strong>{{label}}</strong> mezőt törli. Ez eltávolítja a mezőhöz kapcsolódó adatokat is.",
106
+ "message_other": "A <strong>{{label}}</strong> mezőt törli minden nyelven. Ez eltávolítja a mezőhöz kapcsolódó adatokat is."
107
+ },
108
+ "common": {
109
+ "noData": "Nincsenek megjelenítendő kérdések.",
110
+ "helpText": {
111
+ "learnAbout": "Ismerje meg a",
112
+ "howToAddNewQuestions": "új kérdések hozzáadásának módját"
113
+ },
114
+ "primaryPanel": {
115
+ "addQuestion": "Kérdés hozzáadása",
116
+ "noQuestionLeft": "Nincs több kérdésmező a hozzáadáshoz"
117
+ },
118
+ "editQuestion": "Kérdés szerkesztése",
119
+ "cloneBtn": "Másolás",
120
+ "questionFields": {
121
+ "field": {
122
+ "question": "Kérdés",
123
+ "firstNameQuestion": "Keresztnév kérdése",
124
+ "lastNameQuestion": "Vezetéknév kérdése",
125
+ "placeholder": "Helykitöltő szöveg",
126
+ "firstNamePlaceholder": "Keresztnév helykitöltő",
127
+ "lastNamePlaceholder": "Vezetéknév helykitöltő",
128
+ "required": "Szükséges",
129
+ "addOption": "Új lehetőség hozzáadása",
130
+ "option": "Lehetőség",
131
+ "numberedOption": "Lehetőség {{number}}",
132
+ "options": "Lehetőségek",
133
+ "labelExample": "Pl.: {{what}}",
134
+ "label": "Címke",
135
+ "fieldCodeTitle": "Fejlett beállítások",
136
+ "fieldCode": "Mezőkód",
137
+ "fieldCodeHelpDescription": "Ha megváltoztatja a mezőkódot, akkor bármilyen meglévő megosztott hivatkozás, amely a régi mezőkódot tartalmazza, nem fog működni. <Link>Nézze meg a súgócikket</Link> a további információkért.",
138
+ "questionType": "Kérdés típusa",
139
+ "hideQuestionHelpDescription": "Ha engedélyezve van, ez a kérdés nem lesz látható a létrehozott űrlapon. „Referencia azonosítókat” és UTM paramétereket lehet nyomozni vele.",
140
+ "responseVisibleOnlyToHostHelpDescription": "Ha engedélyezve van, a válasz csak a házigazda számára lesz látható",
141
+ "readOnlyHelpDescription": "Ha engedélyezve van, az ügyfél csak ennek a kérdésnek a válaszát látja, de nem tudja megváltoztatni a választ. Mivel ezt a kérdést \"csak olvashatóra\" jelöli, előre ki kell töltenie a kérdést egy válasszal.",
142
+ "fitImagesHelpDescription": "Ha engedélyezve van, a képek kitöltik a teljes teret (egyes szélek levágódhatnak). Ha le van tiltva, a teljes kép látható (lehet, hogy üres tér is van körülötte).",
143
+ "verifyHuman": "Ellenőrizze, hogy Ön egy ember",
144
+ "pictureChoiceSettings": "Képválasztási beállítások",
145
+ "addPicturesToOptions": "Képek hozzáadása a lehetőségekhez",
146
+ "fitImages": "Képek illesztése",
147
+ "imageHeight": "Kép magasság"
148
+ }
149
+ }
150
+ },
151
+ "changeLanguage": "Nyelv váltása"
152
+ },
153
+ "error": {
154
+ "invalidField": "{{label}} érvénytelen",
155
+ "invalidFieldCode": "Ez a mezőkód nem használható",
156
+ "requiredField": "{{label}} kötelező",
157
+ "invalidType": "{{label}} érvényes {{type}}-nak kell lennie",
158
+ "fieldCantBeEmpty": "{{field, anyCase}} nem lehet üres",
159
+ "incompleteCaptcha": "A captcha hiányos",
160
+ "captchaVerificationFailed": "A captcha ellenőrzés megbukott. Próbálja újra.",
161
+ "invalidDomain": "A domain név érvénytelen",
162
+ "minOneEntity": "Legalább egy {{entity}} kötelező",
163
+ "emailFromRestrictedDomain": "A {{domain}} domainnel rendelkező e-mailek nem fogadhatók el.",
164
+ "mustBeASixDigitNumber": "{{entity}}-nek 6 számjegyű számnak kell lennie",
165
+ "emailNotVerified": "Az e-mail ellenőrzése kötelező"
166
+ },
167
+ "fileTypes": {
168
+ "documents": "Dokumentumok",
169
+ "images": "Képek",
170
+ "audioVideo": "Audió/Video"
171
+ },
172
+ "fileUpload": {
173
+ "enableMultipleFilesUpload": "Több fájl feltöltésének engedélyezése",
174
+ "fileTypes": "Fájl típusok",
175
+ "validations": {
176
+ "waitForUpload": "Várjon, amíg a feltöltés befejeződik",
177
+ "atLeastOneFileRequired": "Legalább egy fájl feltöltése kötelező",
178
+ "removeDuplicates": "Duplikált bejegyzések eltávolítása",
179
+ "fileIsRequired": "Töltsön fel egy fájlt"
180
+ },
181
+ "dropzone": {
182
+ "errors": {
183
+ "fileTooLarge": "A(z) '{{fileName, anyCase}}' fájl nagyobb mint {{maxSize}} MB",
184
+ "fileInvalidType": "A(z) {{fileType}} fájltípus nem engedélyezett",
185
+ "tooManyFiles": "Csak egy fájl feltöltése engedélyezett",
186
+ "defaultError": "Valami hiba történt a(z) {{fileName, anyCase}} feltöltésekor"
187
+ },
188
+ "maxFileSize": "A maximálisan engedélyezett méret: {{size}} {{unit, anyCase}}",
189
+ "allowedFileTypes": "Engedélyezett fájl típusok: {{types}}",
190
+ "oneFileAllowed": "Csak egy fájl feltöltése engedélyezett",
191
+ "chooseOrDragFile": "<typography>Válasszon fájlt <span>vagy</span> húzza ide.</typography>"
192
+ },
193
+ "fileSizeInMb": "{{fileSize}} MB",
194
+ "mb": "MB"
195
+ },
196
+ "domainRestriction": {
197
+ "whitelistedDomains": {
198
+ "label": "Engedélyezett e-mail domainek",
199
+ "description": "A következő domainekkel rendelkező e-mailek el lesznek fogadva.",
200
+ "popoverDescription": "Írja be az engedélyezett domaineket. Csak ezen domainekkel rendelkező e-mailek lesznek elfogadva."
201
+ },
202
+ "blacklistedDomains": {
203
+ "label": "Elutasított e-mail domainek",
204
+ "description": "A következő domainekkel rendelkező e-mailek el lesznek utasítva.",
205
+ "popoverDescription": "Írja be a megszorított domaineket. Ezek a domainekkel rendelkező e-mailek nem lesznek elfogadva."
206
+ },
207
+ "helpText": "Nyomja meg a szóköz, tab vagy enter billentyűt egy domain hozzáadása után.",
208
+ "removeInvalidDomains": "Kattintson ide az érvénytelen domainek eltávolításához.",
209
+ "placeholder": "Adja meg az e-mail domaineket"
210
+ },
211
+ "emailVerification": {
212
+ "label": "E-mail ellenőrzése",
213
+ "popoverDescription": "Ha engedélyezve van, egy ellenőrző kódot fog küldeni a megadott e-mail címre, és a benyújtást le fogják blokkolni, amíg az ellenőrzés be nem fejeződik.",
214
+ "resendInSeconds": "Egy ellenőrző kódot elküldtünk az Ön postaládájába. Nem kapott kódot? Küldjük újra {{secondsLeft}} másodperc múlva",
215
+ "resendCode": "Egy ellenőrző kódot elküldtünk az Ön postaládájába. Nem kapott kódot? <button>Ellenőrző kód újraküldése</button>",
216
+ "sendCode": "Kód küldése",
217
+ "verificationCode": "Ellenőrző kód"
218
+ }
219
+ }
220
+ }
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-51SEJjzI.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, w as FILE_TYPES_MAP, x as FILE_GROUPS, D as DEFAULT_CHOICE_QUESTION_ATTRIBUTES, M as MINIMUM_OPTIONS, y as IMAGE_HEIGHT_SLIDER_DEFAULTS, z as RATING_OPTIONS, A as STAR_RATING_MIN_VALUE_OPTIONS, B as STAR_RATING_MAX_VALUE_OPTIONS, G as STAR_RATING_ICONS_MAP, H as buildDisabledAddButtonHelpPopoverProps, J as buildReorderPayload, K as isMandatoryField, O as QUESTION_KINDS, a as QUESTION_KIND, T as getActiveQuestionKindDetails, U as DEFAULT_AVAILABLE_LANGUAGES, V as DEFAULT_ADVANCED_FEATURES, W as QUESTIONS_INITIAL_VALUE } from './constants-QPLZ_r-D.js';
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-DcE5kFvR.js';
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-DnHrq-hl.js';
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
 
@@ -1657,6 +1669,7 @@ var validateDomains = function validateDomains(value) {
1657
1669
  var buildHelpPopoverLabelProps = function buildHelpPopoverLabelProps(popoverDescription, helpLink) {
1658
1670
  return {
1659
1671
  helpIconProps: {
1672
+ "data-testid": "help-popover-button",
1660
1673
  popoverProps: _objectSpread$3({
1661
1674
  description: popoverDescription
1662
1675
  }, helpLink && {
@@ -1856,6 +1869,58 @@ var FileUpload = function FileUpload() {
1856
1869
  });
1857
1870
  };
1858
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
+
1859
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; }
1860
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; }
1861
1926
  var Options = function Options(_ref) {
@@ -2062,6 +2127,7 @@ var CHECKBOX = QUESTION_TYPES.CHECKBOX,
2062
2127
  RADIO = QUESTION_TYPES.RADIO,
2063
2128
  DROPDOWN = QUESTION_TYPES.DROPDOWN,
2064
2129
  STAR_RATING = QUESTION_TYPES.STAR_RATING,
2130
+ OPINION_SCALE = QUESTION_TYPES.OPINION_SCALE,
2065
2131
  RATING = QUESTION_TYPES.RATING,
2066
2132
  FILE_UPLOAD = QUESTION_TYPES.FILE_UPLOAD,
2067
2133
  CAPTCHA = QUESTION_TYPES.CAPTCHA,
@@ -2086,6 +2152,8 @@ var renderAdditionalData = function renderAdditionalData(_ref2) {
2086
2152
  return /*#__PURE__*/jsx(Rating, {});
2087
2153
  case STAR_RATING:
2088
2154
  return /*#__PURE__*/jsx(StarRating, {});
2155
+ case OPINION_SCALE:
2156
+ return /*#__PURE__*/jsx(OpinionScale, {});
2089
2157
  case FILE_UPLOAD:
2090
2158
  return /*#__PURE__*/jsx(FileUpload, {});
2091
2159
  case CAPTCHA: