@bigbinary/neeto-team-members-frontend 5.0.84 → 5.0.86

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 (37) hide show
  1. package/app/javascript/src/translations/lv.json +281 -0
  2. package/dist/.ready +1 -1
  3. package/dist/ManageMember.js +2 -2
  4. package/dist/Profile.js +1 -1
  5. package/dist/{ProfileImage-BtQ4MvqR.js → ProfileImage-7HtCnKc-.js} +6 -6
  6. package/dist/ProfileImage-7HtCnKc-.js.map +1 -0
  7. package/dist/{ProfileImage-DN5IzFz7.js → ProfileImage-BXsTglvo.js} +6 -6
  8. package/dist/{ProfileImage-OoIOAGCe.js.map → ProfileImage-BXsTglvo.js.map} +1 -1
  9. package/dist/{ProfileImage-DcSyb-3Q.js → ProfileImage-DIc2wajv.js} +6 -6
  10. package/dist/ProfileImage-DIc2wajv.js.map +1 -0
  11. package/dist/{ProfileImage-OoIOAGCe.js → ProfileImage-DbLwreG6.js} +6 -6
  12. package/dist/{ProfileImage-DN5IzFz7.js.map → ProfileImage-DbLwreG6.js.map} +1 -1
  13. package/dist/TeamMembers.js +2 -2
  14. package/dist/cjs/ManageMember.js +2 -2
  15. package/dist/cjs/Profile.js +1 -1
  16. package/dist/cjs/TeamMembers.js +2 -2
  17. package/dist/cjs/index.js +2 -2
  18. package/dist/cjs/v2/ManageMember.js +2 -2
  19. package/dist/cjs/v2/Profile.js +1 -1
  20. package/dist/cjs/v2/TeamMembers.js +2 -2
  21. package/dist/cjs/v2/index.js +2 -2
  22. package/dist/{index-BP-wjjtl.js → index-B3Cx1asZ.js} +2 -2
  23. package/dist/{index-BP-wjjtl.js.map → index-B3Cx1asZ.js.map} +1 -1
  24. package/dist/{index-BczNlqPp.js → index-BpVod2uP.js} +2 -2
  25. package/dist/{index-BczNlqPp.js.map → index-BpVod2uP.js.map} +1 -1
  26. package/dist/{index-DqPCteEX.js → index-C8tkWNTW.js} +2 -2
  27. package/dist/{index-DqPCteEX.js.map → index-C8tkWNTW.js.map} +1 -1
  28. package/dist/{index-BZv1Hchv.js → index-D_6vJd6A.js} +2 -2
  29. package/dist/{index-BZv1Hchv.js.map → index-D_6vJd6A.js.map} +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/v2/ManageMember.js +2 -2
  32. package/dist/v2/Profile.js +1 -1
  33. package/dist/v2/TeamMembers.js +2 -2
  34. package/dist/v2/index.js +2 -2
  35. package/package.json +7 -7
  36. package/dist/ProfileImage-BtQ4MvqR.js.map +0 -1
  37. package/dist/ProfileImage-DcSyb-3Q.js.map +0 -1
@@ -0,0 +1,281 @@
1
+ {
2
+ "neetoTeamMembers": {
3
+ "alerts": {
4
+ "messages": {
5
+ "activateMember_one": "Jūs aktivizējat {{taxonomies.member.singular}} <strong>{{person, anyCase}}</strong>.",
6
+ "activateMember_other": "Jūs aktivizējat <strong>{{count}}</strong> {{taxonomies.member.plural}}.",
7
+ "changeRole_one": "Jūs maināt <strong>{{person, anyCase}}</strong> lomu uz <strong>{{role, anyCase}}</strong>.",
8
+ "changeRole_other": "Jūs maināt <strong>{{count}}</strong> {{metaName}} lomu uz <strong>{{role, anyCase}}</strong>.",
9
+ "delete": "Jūs pastāvīgi dzēsīsit {{resource}} <strong>{{name, anyCase}}</strong>. To nevar atcelt.",
10
+ "deletingRole": "Jūs pastāvīgi dzēsīsit lomu <strong>{{name, anyCase}}</strong>. To nevar atcelt.",
11
+ "removeMember": "Jūs izņemat <strong>{{member, anyCase}}</strong> no šīs grupas.",
12
+ "removeMember_one": "Jūs izņemat {{taxonomies.member.singular}} <strong>{{person, anyCase}}</strong>.",
13
+ "removeMember_other": "Jūs izņemat <strong>{{count}}</strong> {{taxonomies.member.plural}}.",
14
+ "inviteLink": "Aicinājuma saite var tikt dalīta ar līdz <strong>{{inviteLimit}} cilvēkiem</strong>, kuri tiks pievienoti <strong>{{appName, anyCase}}</strong> ar <strong>{{role, anyCase}}</strong> lomu. Tā beigsies pēc <strong>{{expiryDays}} dienām</strong> un ir ierobežota uz <strong>@{{emailDomain}}</strong> e-pasta adresēm.",
15
+ "expiredTitle": "Aicinājuma saite ir beigusies",
16
+ "expiredMessage": "Aicinājuma saite vairs nav derīga. Lūdzu, sazinieties ar administratoru, lai iegūtu jaunu saiti.",
17
+ "domainTitle": "Aicinājuma saites kļūda: Jūsu e-pasta domēns nav pilnvarots pievienoties šai komandai",
18
+ "domainMessage": "Šis aicinājums ir ierobežots uz <strong>@{{allowedDomain}}</strong> e-pasta domēnu. Jūs mēģinājāt pievienoties, izmantojot <strong>{{email}}</strong>. Lūdzu, mēģiniet vēlreiz, izmantojot savu <strong>@{{allowedDomain}}</strong> e-pastu vai sazinieties ar administratoru.",
19
+ "generateLink": "Izveidot aicinājuma saiti"
20
+ },
21
+ "success": {
22
+ "inviteLinkGenerated": "Aicinājuma saite veiksmīgi izveidota.",
23
+ "inviteLinkRegenerated": "Aicinājuma saite veiksmīgi atkārtoti izveidota."
24
+ }
25
+ },
26
+ "buttons": {
27
+ "activate": "Aktivizēt",
28
+ "back": "Atpakaļ",
29
+ "cancel": "Atcelt",
30
+ "changeRole": "Mainīt lomu",
31
+ "close": "Aizvērt",
32
+ "continue": "Turpināt",
33
+ "delete": "Dzēst",
34
+ "export": "Eksportēt",
35
+ "editBasicInfo": "Mainīt pamatinformāciju",
36
+ "manageBillingAndSubscriptions": "Pārvaldīt rēķinus",
37
+ "remove": "Noņemt",
38
+ "reset": "Atjaunot",
39
+ "saveChanges": "Saglabāt izmaiņas",
40
+ "updateEmail": "Mainīt e-pastu",
41
+ "upgrade": "Uzlabot",
42
+ "inviteLink": "Aicināt caur saiti",
43
+ "copyLink": "Kopēt saiti",
44
+ "regenerateLink": "Atkārtoti izveidot saiti",
45
+ "acceptInvitation": "Pieņemt aicinājumu",
46
+ "generateLink": "Izveidot saiti"
47
+ },
48
+ "columns": {
49
+ "noColumnsFound": "Nav atrastu kolonnas.",
50
+ "search": "Meklēt kolonnas"
51
+ },
52
+ "common": {
53
+ "activate": "Aktivizēt",
54
+ "activate_": "Aktivizēt {{what}}?",
55
+ "active": "Aktīvs",
56
+ "active_": "Aktīvs {{what}}",
57
+ "addNew_": "Pievienot jaunu {{what}}",
58
+ "all": "Visi",
59
+ "all_": "Visi {{what}}",
60
+ "changeRole": "Mainīt lomu?",
61
+ "deactivated": "Noņemt",
62
+ "delete": "Dzēst",
63
+ "description": "Apraksts",
64
+ "edit": "Rediģēt",
65
+ "edit_": "Rediģēt {{what}}",
66
+ "email_one": "E-pasts",
67
+ "email_other": "E-pasti",
68
+ "format": "Format",
69
+ "free": "Bezrūpīgs",
70
+ "imageUploadFailed": "Attēla augšupielāde neizdevās. Lūdzu, mēģiniet vēlreiz.",
71
+ "loading": "Ielādē...",
72
+ "name": "Vārds",
73
+ "notFound_": "Nav {{what}} ko rādīt.",
74
+ "notFoundWithKind_": "Nav {{kind}} {{what}} ko rādīt.",
75
+ "memberEmptyTitle": "Nav {{what}} vēl",
76
+ "memberEmptyDescription": "Aiciniet {{what}} sadarboties.",
77
+ "memberSearchEmptyTitle": "Nav atbilstošu {{what}}",
78
+ "memberSearchEmptyDescription": "Mēģiniet pielāgot savu meklēšanu vai filtrus.",
79
+ "groupEmptyTitle": "Nav {{what}} vēl",
80
+ "groupEmptyDescription": "Izveidojiet {{what}} lai organizētu komandas locekļus.",
81
+ "groupSearchEmptyTitle": "Nav atbilstošu {{what}}",
82
+ "groupSearchEmptyDescription": "Mēģiniet pielāgot savu meklēšanu.",
83
+ "permission_one": "Atļauja",
84
+ "permission_other": "Atļaujas",
85
+ "productName": "Produkta nosaukums",
86
+ "remove": "Noņemt",
87
+ "remove_": "Noņemt {{what}}?",
88
+ "removed_": "Noņemts {{what}}",
89
+ "role_one": "Loma",
90
+ "role_other": "Lomas",
91
+ "search_": "Meklēt {{what}}",
92
+ "subscriptionType": "{{subscription}} plāns",
93
+ "takeAction": "Veikt darbību",
94
+ "timeZone": "Etc/UTC",
95
+ "inviteViaLink": "Aicināt caur saiti"
96
+ },
97
+ "exportPane": {
98
+ "description": {
99
+ "allMembers": "Eksportēt visus {{taxonomies.member.plural}}",
100
+ "selectedMembers_one": "Eksportēt izvēlēto {{taxonomies.member.singular}}",
101
+ "selectedMembers_other": "Eksportēt {{count}} izvēlētos {{taxonomies.member.plural}}"
102
+ },
103
+ "title": "Eksportēt {{taxonomies.member.plural}}"
104
+ },
105
+ "helpers": {
106
+ "addMembersToNeetoProducts": "Pievienot {{- emails, boldList}} sekojošajiem Neeto produktiem.",
107
+ "configPermissions": "Konfigurēt atļaujas moduļiem.",
108
+ "emptyTable": "Nav {{entity}} ko rādīt.",
109
+ "enterMultipleEmails": "Nospiediet atstarpi, komatu, tabulācijas taustiņu vai enter taustiņu, lai pievienotu vairākas e-pasta adreses.",
110
+ "manageProducts": "Pārāk daudz produkti? <button>Deaktivizējiet dažus</button> no šiem produktiem.",
111
+ "memberCreationStatus_one": "Aicinu {{taxonomies.member.singular}}",
112
+ "memberCreationStatus_other": "Aicinu {{taxonomies.member.plural}}",
113
+ "metaNameWithCount_one": "{{totalCount}} {{taxonomies.member.singular}}",
114
+ "metaNameWithCount_other": "{{totalCount}} {{taxonomies.member.plural}}",
115
+ "multipleProductInvitation": "{{- emails, boldList}} tiks aicināti uz sekojošiem Neeto produktiem ar lomu, kas norādīta blakus.",
116
+ "noRecords": "Nav atrastu ierakstu",
117
+ "noRolesFound": "Nav atrastu lomu.",
118
+ "selectAll": "Izvēlēties visus {{count}} komandas locekļus",
119
+ "selectedMembers": "Visi {{count}} komandas locekļi šajā lapā ir izvēlēti",
120
+ "selectedMembersCount_one": "{{count}} {{taxonomies.member.singular}} atlas no <span>{{totalCount}}</span>",
121
+ "selectedMembersCount_other": "{{count}} {{taxonomies.member.plural}} atlas no <span>{{totalCount}}</span>",
122
+ "singleProductInvitation": "{{- emails, boldList}} tiks aicinātas pievienoties <strong>{{product, anyCase}}</strong> ar lomu <strong>{{role, anyCase}}</strong>.",
123
+ "editPaneSubtitle": "Veiktās izmaiņas tiks atspoguļotas visos Neeto produktos.",
124
+ "themeSelector": "Tēmas selektors",
125
+ "whyIsItDisabled": "Kāpēc tas ir atspējots?",
126
+ "invitationTitle": "Tu esi aicināts!",
127
+ "invitationMessage": "Tu esi aicināts pievienoties <strong>{{organization, anyCase}}</strong>. Lūdzu, ievadi savu e-pastu, lai pieņemtu aicinājumu."
128
+ },
129
+ "labels": {
130
+ "addNewRole": "Pievienot jaunu lomu",
131
+ "billingAndSubscriptions": "Rēķini un abonementi",
132
+ "country": "Valsts",
133
+ "deleteRole": "Dzēst lomu?",
134
+ "deleteTitle": "Dzēst {{resource}}?",
135
+ "exportAs": "Eksportēt kā {{format, anyCase}}",
136
+ "exports": {
137
+ "csv": "CSV",
138
+ "pdf": "PDF",
139
+ "xlsx": "Excel"
140
+ },
141
+ "editRole": "Rediģēt lomu",
142
+ "firstName": "Vārds",
143
+ "groupName": "{{taxonomies.group.singular, anyCase}} nosaukums",
144
+ "language": "Valoda",
145
+ "lastName": "Uzvārds",
146
+ "currentPlan": "Pašreizējais plāns",
147
+ "manageMember_one": "Pārvaldīt biedru",
148
+ "manageMember_other": "Pārvaldīt biedrus",
149
+ "manageRole_one": "Pārvaldīt lomu",
150
+ "manageRole_other": "Pārvaldīt lomas",
151
+ "neeto_": "Neeto{{product, anyCase}}",
152
+ "permissionsNotFound": "Nav atļauju, ko rādīt.",
153
+ "permissionSearchEmpty": "Nav atbilstošu atļauju",
154
+ "permissionSearchEmptyDescription": "Mēģiniet citu meklēšanas vārdu vai notīriet meklēšanu, lai redzētu visas atļaujas.",
155
+ "preferredDateFormat": "Iepriekš izvēlētais datuma formāts",
156
+ "preferredTimeFormat": "Iepriekš izvēlētais laika formāts",
157
+ "removeMember": "Noņemt {{member}}?",
158
+ "roleNotFound_one": "Nav lomu, ko rādīt.",
159
+ "roleNotFound_other": "Nav lomu, ko rādīt.",
160
+ "roleEmptyTitle": "Vēl nav lomu",
161
+ "roleEmptyDescription": "Izveidojiet lomas, lai pārvaldītu komandas biedru atļaujas.",
162
+ "timeZone": "Laika zona",
163
+ "totalMembers": "Kopā {{taxonomies.member.plural}}",
164
+ "upgradeToProPlan": "Atjaunināt iepriekš pievienotos biedrus uz PRO"
165
+ },
166
+ "placeholders": {
167
+ "email": "Ievadiet e-pasta adreses",
168
+ "enterDescription": "Ievadiet aprakstu",
169
+ "enterName": "Ievadiet vārdu",
170
+ "search": "Meklēt",
171
+ "searchEntity": "Meklēt {{entity}}",
172
+ "searchPermission_one": "Meklēt atļauju",
173
+ "searchPermission_other": "Meklēt atļaujas",
174
+ "searchRole_one": "Meklēt lomu",
175
+ "searchRole_other": "Meklēt lomas"
176
+ },
177
+ "profile": {
178
+ "avatar": {
179
+ "changeProfilePicture": "Mainīt profila attēlu",
180
+ "profilePicture": "Profila attēls",
181
+ "profilePictureUploadMessage": "Tiek atbalstīti tikai JPEG, PNG faili. Maksimālais atļautais faila izmērs ir <strong>{{limit}}MB</strong>.",
182
+ "uploadProfilePicture": "Augšupielādēt profila attēlu"
183
+ },
184
+ "common": {
185
+ "ddmmyy": "DD/MM/YYYY",
186
+ "mmddyy": "MM/DD/YYYY",
187
+ "myProfile": "Mans profils",
188
+ "neetoAuth": "NeetoAuth",
189
+ "timeZoneOption": "{{timeZone, anyCase}} - {{currentTime}}",
190
+ "toUpdateProfile": "Lai mainītu savu e-pastu, rēķinus un abonementus <button>apmeklējiet NeetoAuth.</button>",
191
+ "yymmdd": "YYYY/MM/DD"
192
+ },
193
+ "file": {
194
+ "corrupted": "Ievadītais fails bija tukšs vai bojāts. Lūdzu, izvēlieties derīgu failu.",
195
+ "invalidType": {
196
+ "image": "Nederīgs faila tips. Lūdzu, izvēlieties JPG, JPEG vai PNG failu un mēģiniet vēlreiz."
197
+ },
198
+ "limitExceeded": "Faila limits pārsniegts, maksimālais atļautais izmērs ir {{maxSize}} MB. Lūdzu, izvēlieties mazāku failu un mēģiniet vēlreiz."
199
+ },
200
+ "form": {
201
+ "dotsNotAllowed": "Punkts nav atļauts",
202
+ "invalidName": "Izmantojiet tikai burtus, skaitļus, atstarpes, komatus, punktus, apostrofus un svītras.",
203
+ "invalidPhoneNumber": "Lūdzu, ievadiet derīgu telefona numuru",
204
+ "isRequired": {
205
+ "dateFormat": "Datuma formāts ir obligāts",
206
+ "firstName": "Vārds ir obligāts",
207
+ "lastName": "Uzvārds ir obligāts"
208
+ }
209
+ },
210
+ "inputs": {
211
+ "label": {
212
+ "country": "Valsts",
213
+ "firstName": "Vārds",
214
+ "language": "Valoda",
215
+ "lastName": "Uzvārds",
216
+ "phonenumber": "Telefona numurs",
217
+ "preferredDateFormat": "Iepriekš izvēlētais datuma formāts",
218
+ "preferredTimeFormat": "Iepriekš izvēlētais laika formāts",
219
+ "timeZone": "Laika zona"
220
+ },
221
+ "placeholder": {
222
+ "firstName": "Vārds",
223
+ "lastName": "Uzvārds"
224
+ }
225
+ }
226
+ },
227
+ "tooltips": {
228
+ "activateUserToEdit_one": "Lūdzu, aktivizējiet lietotāju, lai rediģētu viņa lomu.",
229
+ "activateUserToEdit_other": "Lūdzu, aktivizējiet izvēlētos lietotājus, lai rediģētu viņu lomu.",
230
+ "adminMustHaveAccess": "{{roleName}} atļaujas nevar mainīt neviens.",
231
+ "clickToViewPermissions": "Noklikšķiniet, lai skatītu lomas un to atļaujas.",
232
+ "goBackToChangeRole": "Lūdzu, dodieties atpakaļ, lai mainītu lomu.",
233
+ "hostAppIsRequired": "Šis Neeto produkts ir nepieciešams, lai turpinātu.",
234
+ "noPermissionToAddMember": "Lūdzu, vaicājiet administratoram, lai atļautu jums pievienot biedrus.",
235
+ "noPermissionToAddRole": "Lūdzu, vaicājiet administratoram, lai atļautu jums pievienot lomas.",
236
+ "noPermissionToEditMembers": "Lūdzu, vaicājiet administratoram, lai atļautu jums rediģēt biedrus.",
237
+ "noPermissionToEditRoles": "Lūdzu, vaicājiet administratoram, lai atļautu jums rediģēt lomas.",
238
+ "noPermissionToRemoveRoles": "Lūdzu, vaicājiet administratoram, lai atļautu jums dzēst lomas.",
239
+ "uncheckOnSelectPermissions": "Ja jūs atlasāt šo atļauju, sekojošās atļaujas tiks noņemtas: {{permissions}}"
240
+ },
241
+ "validations": {
242
+ "descriptionLimitExceeded": "Jūs esat pārsnieguši apraksta limitu {{limit}} rakstzīmēm.",
243
+ "enterRoleName": "Ievadiet derīgu lomas nosaukumu.",
244
+ "filterInvalidEmails": "Noklikšķiniet šeit, lai noņemtu nederīgus e-pastus.",
245
+ "max": "Laukumam jābūt mazākam par {{size}} rakstzīmēm",
246
+ "memberLimitExceeded": "Maksimāli atļautie komandas biedri ir {{limit}}. <emailTo>Sazinieties ar mums</emailTo>, lai palielinātu limitu.",
247
+ "memberLimitExceededV2": {
248
+ "first": "Visi Neeto produkti nodrošina neierobežotu komandas biedru skaitu.",
249
+ "second": "Tomēr neierobežots komandas biedru skaits var reizēm tikt ļaunprātīgi izmantots. Lai to novērstu, jaunie konti sāk ar noklusēto ierobežojumu 10 komandas biedriem.",
250
+ "third": "Nepieciešami vairāk komandas biedru? Vienkārši sazinieties ar mums. Mēs ātri izskatīsim jūsu kontu, un, ja viss ir kārtībā, mēs ar prieku palielināsim limitu."
251
+ },
252
+ "minOneEmail": "Ievadiet vismaz vienu e-pasta adresi.",
253
+ "nameLimitExceeded": "Jūs esat pārsnieguši {{limit}} rakstzīmju ierobežojumu vārdam.",
254
+ "noWhiteSpaces": "{{what, anyCase}} nedrīkst sākties vai beigties ar tukšām vietām.",
255
+ "removeSpaces": "Noņemiet tukšās vietas.",
256
+ "required": "{{what, anyCase}} ir obligāts lauks.",
257
+ "roleRequired": "Izvēlieties lomu.",
258
+ "validEmail_one": "Pārliecinieties, ka e-pasta adrese ir derīga.",
259
+ "validEmail_other": "Pārliecinieties, ka visas e-pasta adreses ir derīgas."
260
+ }
261
+ },
262
+ "taxonomyDefaultLabels": {
263
+ "group": {
264
+ "plural": "Grupas",
265
+ "singular": "Grupa"
266
+ },
267
+ "groupMember": {
268
+ "plural": "Biedri",
269
+ "singular": "Biedrs"
270
+ },
271
+ "member": {
272
+ "plural": "Komandas locekļi",
273
+ "singular": "Komandas loceklis"
274
+ }
275
+ },
276
+ "toastr": {
277
+ "success": {
278
+ "exportMembers": "Jūsu fails tiek gatavots. Tas tiks nosūtīts uz <strong>{{email}}</strong> drīz."
279
+ }
280
+ }
281
+ }
package/dist/.ready CHANGED
@@ -1 +1 @@
1
- Built at 2026-09-03T16:40:36.614Z
1
+ Built at 2026-09-11T03:46:58.472Z
@@ -19,10 +19,10 @@ import '@bigbinary/neetoui/formik/Form';
19
19
  import 'ramda';
20
20
  import 'react-i18next';
21
21
  import './index-BISwUwuE.js';
22
- import './ProfileImage-OoIOAGCe.js';
22
+ import './ProfileImage-DbLwreG6.js';
23
23
  import './useRolesApi-93OoRU1s.js';
24
24
  import './useTeamsApi-CGY9oJqn.js';
25
- export { M as default } from './index-BczNlqPp.js';
25
+ export { M as default } from './index-BpVod2uP.js';
26
26
  import './RolesRadioGroup-BefORc9L.js';
27
27
  import 'react/jsx-runtime';
28
28
  import '@babel/runtime/helpers/toConsumableArray';
package/dist/Profile.js CHANGED
@@ -24,7 +24,7 @@ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
24
24
  import { isNotNil, isNil, is, trim } from 'ramda';
25
25
  import { D as DATE_FORMAT_OPTIONS, T as TIME_FORMAT_OPTIONS } from './constants-CXdiW8NZ.js';
26
26
  import { u as useFetchProfile, a as useUpdateProfileMutation } from './useProfileApi-Dkt6sE5p.js';
27
- import { u as useCountries, P as PROFILE_VALIDATION_SCHEMA, a as ProfileImage, M as MANAGE_BILLING_PATH, U as UPDATE_EMAIL_PATH } from './ProfileImage-OoIOAGCe.js';
27
+ import { u as useCountries, P as PROFILE_VALIDATION_SCHEMA, a as ProfileImage, M as MANAGE_BILLING_PATH, U as UPDATE_EMAIL_PATH } from './ProfileImage-DbLwreG6.js';
28
28
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
29
29
  import withImmutableActions from '@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions';
30
30
  import { create } from 'zustand';
@@ -35,11 +35,11 @@ var useCountries = function useCountries() {
35
35
  return countries.map(formatCountryOption);
36
36
  }, [countries]);
37
37
  var handleCountryChange = useCallback(function (countryOption) {
38
- setSelectedCountryOption(countryOption);
39
- var dependentFields = {};
40
- var selectedCountry = findById(countryOption.value, countries);
41
- dependentFields.dateFormat = selectedCountry.dateFormat;
42
- return dependentFields;
38
+ setSelectedCountryOption(countryOption !== null && countryOption !== void 0 ? countryOption : null);
39
+ var selectedCountry = findById(countryOption === null || countryOption === void 0 ? void 0 : countryOption.value, countries);
40
+ return {
41
+ dateFormat: selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.dateFormat
42
+ };
43
43
  }, [countries]);
44
44
  return {
45
45
  countryDropdownOptions: countryDropdownOptions,
@@ -126,4 +126,4 @@ var ProfileImage = function ProfileImage() {
126
126
  };
127
127
 
128
128
  export { ProfileImage as P, useCountries as u };
129
- //# sourceMappingURL=ProfileImage-BtQ4MvqR.js.map
129
+ //# sourceMappingURL=ProfileImage-7HtCnKc-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileImage-7HtCnKc-.js","sources":["../app/javascript/src/v2/components/Profile/hooks/useCountries.js","../app/javascript/src/v2/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption ?? null);\n\n const selectedCountry = findById(countryOption?.value, countries);\n\n return { dateFormat: selectedCountry?.dateFormat };\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","/* eslint-disable @bigbinary/neeto/no-missing-localization */\n// v2 ProfileImage — placeholder, full implementation in Phase 3.5\n// Used by ManageMember for member avatar editing\nimport { useRef } from \"react\";\n\nimport { Avatar, Button, DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { useField } from \"formik\";\nimport { Pencil } from \"lucide-react\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { useTranslation } from \"react-i18next\";\nimport { toast } from \"sonner\";\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const [field, , helpers] = useField(\"avatar\");\n const fileInputRef = useRef(null);\n\n const { imageUrl, file } = field.value || {};\n const displayUrl =\n file && file !== \"_destroy\" ? URL.createObjectURL(file) : imageUrl;\n\n const handleFileSelect = event => {\n const selectedFile = event.target.files[0];\n if (!selectedFile) return;\n\n const maxSize = 5 * 1024 * 1024;\n if (selectedFile.size > maxSize) {\n toast.error(\n t(\n \"neetoTeamMembers.common.fileSizeTooLarge\",\n \"File size must be less than 5MB\"\n )\n );\n\n return;\n }\n\n helpers.setValue({ imageUrl, file: selectedFile });\n };\n\n const handleRemove = () => {\n helpers.setValue({ imageUrl: \"\", file: \"_destroy\" });\n };\n\n return (\n <div className=\"flex items-center gap-4\">\n <div className=\"relative\">\n <Avatar\n size=\"xl\"\n user={{\n name: globalProps.user?.name,\n imageUrl: displayUrl,\n }}\n />\n <DropdownMenu\n customTarget={\n <Button\n className=\"absolute -bottom-1 -right-1 rounded-full\"\n icon={Pencil}\n size=\"icon-xs\"\n variant=\"outline\"\n aria-label={t(\n \"neetoTeamMembers.common.changeProfileImage\",\n \"Change profile image\"\n )}\n />\n }\n >\n <DropdownMenu.Menu>\n <DropdownMenu.MenuItem\n data-testid=\"profile-image-upload-button\"\n onClick={() => fileInputRef.current?.click()}\n >\n {t(\"neetoTeamMembers.common.upload\", \"Upload\")}\n </DropdownMenu.MenuItem>\n {displayUrl && (\n <DropdownMenu.MenuItem\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemove}\n >\n {t(\"neetoTeamMembers.common.remove\")}\n </DropdownMenu.MenuItem>\n )}\n </DropdownMenu.Menu>\n </DropdownMenu>\n </div>\n <input\n accept=\"image/*\"\n className=\"hidden\"\n data-testid=\"profile-image-upload-file-field\"\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n />\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","selectedCountry","findById","dateFormat","isFetchingCountriesList","ProfileImage","_globalProps$user","_useTranslation","useTranslation","t","_useField","useField","_useField2","field","helpers","fileInputRef","useRef","_ref","imageUrl","file","displayUrl","URL","createObjectURL","handleFileSelect","event","selectedFile","target","files","maxSize","size","toast","error","setValue","handleRemove","_jsxs","className","children","_jsx","Avatar","user","globalProps","DropdownMenu","customTarget","Button","icon","Pencil","variant","Menu","MenuItem","onClick","_fileInputRef$current","current","click","accept","ref","type","onChange"],"mappings":"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"}
@@ -84,11 +84,11 @@ var useCountries = function useCountries() {
84
84
  return countries.map(formatCountryOption);
85
85
  }, [countries]);
86
86
  var handleCountryChange = React.useCallback(function (countryOption) {
87
- setSelectedCountryOption(countryOption);
88
- var dependentFields = {};
89
- var selectedCountry = neetoCist.findById(countryOption.value, countries);
90
- dependentFields.dateFormat = selectedCountry.dateFormat;
91
- return dependentFields;
87
+ setSelectedCountryOption(countryOption !== null && countryOption !== void 0 ? countryOption : null);
88
+ var selectedCountry = neetoCist.findById(countryOption === null || countryOption === void 0 ? void 0 : countryOption.value, countries);
89
+ return {
90
+ dateFormat: selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.dateFormat
91
+ };
92
92
  }, [countries]);
93
93
  return {
94
94
  countryDropdownOptions: countryDropdownOptions,
@@ -208,4 +208,4 @@ exports.PROFILE_VALIDATION_SCHEMA = PROFILE_VALIDATION_SCHEMA;
208
208
  exports.ProfileImage = ProfileImage;
209
209
  exports.UPDATE_EMAIL_PATH = UPDATE_EMAIL_PATH;
210
210
  exports.useCountries = useCountries;
211
- //# sourceMappingURL=ProfileImage-DN5IzFz7.js.map
211
+ //# sourceMappingURL=ProfileImage-BXsTglvo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileImage-OoIOAGCe.js","sources":["../app/javascript/src/components/Profile/constants.js","../app/javascript/src/components/Profile/hooks/useCountries.js","../app/javascript/src/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/PhoneNumber\";\nimport * as yup from \"yup\";\n\nexport const PROFILE_VALIDATION_SCHEMA = yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.firstName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n lastName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.lastName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n phonenumber: phoneNumberValidation(\n t(\"neetoTeamMembers.profile.form.invalidPhoneNumber\")\n ).nullable(),\n dateFormat: yup\n .string()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.dateFormat\")),\n});\n\nexport const UPDATE_EMAIL_PATH = \"/auth/email/edit\";\nexport const MANAGE_BILLING_PATH = \"/auth/billing/edit\";\n\nexport const ALLOWED_PROFILE_IMAGE_MIME_TYPES = [\"image/jpeg\", \"image/png\"];\nexport const IMAGE_DELETE_BUTTON_SIZE = 16;\nexport const STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES =\n globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024;\n\nexport const VALIDATION_ERRORS = {\n invalid_type: t(\"neetoTeamMembers.profile.file.invalidType.image\"),\n corrupted_file: t(\"neetoTeamMembers.profile.file.corrupted\"),\n file_limit_exceeded: t(\"neetoTeamMembers.profile.file.limitExceeded\", {\n maxSize: globalProps.endUserUploadedFileSizeLimitInMb,\n }),\n};\n\nexport const DEFAULT_POPOVER_VALUES = {\n preferredDateFormat: {},\n preferredTimeFormat: {},\n timeZone: {},\n};\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption);\n\n const dependentFields = {};\n const selectedCountry = findById(countryOption.value, countries);\n\n dependentFields.dateFormat = selectedCountry.dateFormat;\n\n return dependentFields;\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","import { useRef } from \"react\";\n\nimport { useField } from \"formik\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Edit } from \"neetoicons\";\nimport { Avatar, Dropdown, Toastr, Typography } from \"neetoui\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES,\n VALIDATION_ERRORS,\n} from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const fileInputRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n const onProfileImageChange = event => {\n const imageFile = event.target.files[0];\n const validationError = validateProfileImage(imageFile);\n\n if (validationError) {\n Toastr.error(validationError);\n\n return validationError;\n }\n\n return setValue({\n imageUrl: URL.createObjectURL(imageFile),\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => setValue({ imageUrl: \"\", file: \"_destroy\" });\n\n const validateProfileImage = imageFile => {\n const { type, size } = imageFile;\n\n if (!ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(type)) {\n return VALIDATION_ERRORS.invalid_type;\n }\n\n if (size === 0) return VALIDATION_ERRORS.corrupted_file;\n\n if (size > STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES) {\n return VALIDATION_ERRORS.file_limit_exceeded;\n }\n\n return null;\n };\n\n return (\n <div className=\"mb-4 flex flex-col items-center gap-2\">\n <div className=\"relative shrink-0\">\n <div className=\"absolute bottom-0 end-0 z-10\">\n <Dropdown\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n buttonProps={{ className: \"rounded-full\" }}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Edit}\n >\n <Menu>\n <MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={handleChangeImage}\n >\n {avatarDetails?.imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\")}\n </MenuItem.Button>\n <MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemoveImage}\n >\n {t(\"neetoTeamMembers.buttons.remove\")}\n </MenuItem.Button>\n </Menu>\n </Dropdown>\n </div>\n <Avatar size=\"extraLarge\" user={avatarDetails} />\n </div>\n <div className=\"flex flex-col items-center\">\n <Typography\n className=\"neeto-ui-text-gray-600 text-center\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoTeamMembers.profile.avatar.profilePictureUploadMessage\"\n values={{\n limit: globalProps.endUserUploadedFileSizeLimitInMb,\n }}\n />\n </Typography>\n <input\n hidden\n accept=\"image/*\"\n data-testid=\"profile-image-upload-file-field\"\n id=\"uploadProfileImage\"\n key={avatarDetails?.imageUrl}\n name=\"profile_image_path\"\n ref={fileInputRef}\n type=\"file\"\n onChange={onProfileImageChange}\n />\n </div>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_VALIDATION_SCHEMA","yup","object","shape","firstName","string","trim","required","t","matches","lastName","phonenumber","phoneNumberValidation","nullable","dateFormat","UPDATE_EMAIL_PATH","MANAGE_BILLING_PATH","ALLOWED_PROFILE_IMAGE_MIME_TYPES","STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES","globalProps","endUserUploadedFileSizeLimitInMb","VALIDATION_ERRORS","invalid_type","corrupted_file","file_limit_exceeded","maxSize","useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","dependentFields","selectedCountry","findById","isFetchingCountriesList","Menu","Dropdown","MenuItem","ProfileImage","_useTranslation","useTranslation","fileInputRef","useRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","URL","createObjectURL","file","handleChangeImage","_fileInputRef$current","current","click","handleRemoveImage","type","size","includes","_jsxs","className","children","_jsx","buttonProps","buttonSize","buttonStyle","icon","Edit","Button","onClick","Avatar","user","Typography","style","Trans","i18nKey","values","limit","hidden","accept","ref","onChange"],"mappings":"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"}
1
+ {"version":3,"file":"ProfileImage-BXsTglvo.js","sources":["../app/javascript/src/components/Profile/constants.js","../app/javascript/src/components/Profile/hooks/useCountries.js","../app/javascript/src/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/PhoneNumber\";\nimport * as yup from \"yup\";\n\nexport const PROFILE_VALIDATION_SCHEMA = yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.firstName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n lastName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.lastName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n phonenumber: phoneNumberValidation(\n t(\"neetoTeamMembers.profile.form.invalidPhoneNumber\")\n ).nullable(),\n dateFormat: yup\n .string()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.dateFormat\")),\n});\n\nexport const UPDATE_EMAIL_PATH = \"/auth/email/edit\";\nexport const MANAGE_BILLING_PATH = \"/auth/billing/edit\";\n\nexport const ALLOWED_PROFILE_IMAGE_MIME_TYPES = [\"image/jpeg\", \"image/png\"];\nexport const IMAGE_DELETE_BUTTON_SIZE = 16;\nexport const STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES =\n globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024;\n\nexport const VALIDATION_ERRORS = {\n invalid_type: t(\"neetoTeamMembers.profile.file.invalidType.image\"),\n corrupted_file: t(\"neetoTeamMembers.profile.file.corrupted\"),\n file_limit_exceeded: t(\"neetoTeamMembers.profile.file.limitExceeded\", {\n maxSize: globalProps.endUserUploadedFileSizeLimitInMb,\n }),\n};\n\nexport const DEFAULT_POPOVER_VALUES = {\n preferredDateFormat: {},\n preferredTimeFormat: {},\n timeZone: {},\n};\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption ?? null);\n\n const selectedCountry = findById(countryOption?.value, countries);\n\n return { dateFormat: selectedCountry?.dateFormat };\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","import { useRef } from \"react\";\n\nimport { useField } from \"formik\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Edit } from \"neetoicons\";\nimport { Avatar, Dropdown, Toastr, Typography } from \"neetoui\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES,\n VALIDATION_ERRORS,\n} from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const fileInputRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n const onProfileImageChange = event => {\n const imageFile = event.target.files[0];\n const validationError = validateProfileImage(imageFile);\n\n if (validationError) {\n Toastr.error(validationError);\n\n return validationError;\n }\n\n return setValue({\n imageUrl: URL.createObjectURL(imageFile),\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => setValue({ imageUrl: \"\", file: \"_destroy\" });\n\n const validateProfileImage = imageFile => {\n const { type, size } = imageFile;\n\n if (!ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(type)) {\n return VALIDATION_ERRORS.invalid_type;\n }\n\n if (size === 0) return VALIDATION_ERRORS.corrupted_file;\n\n if (size > STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES) {\n return VALIDATION_ERRORS.file_limit_exceeded;\n }\n\n return null;\n };\n\n return (\n <div className=\"mb-4 flex flex-col items-center gap-2\">\n <div className=\"relative shrink-0\">\n <div className=\"absolute bottom-0 end-0 z-10\">\n <Dropdown\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n buttonProps={{ className: \"rounded-full\" }}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Edit}\n >\n <Menu>\n <MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={handleChangeImage}\n >\n {avatarDetails?.imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\")}\n </MenuItem.Button>\n <MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemoveImage}\n >\n {t(\"neetoTeamMembers.buttons.remove\")}\n </MenuItem.Button>\n </Menu>\n </Dropdown>\n </div>\n <Avatar size=\"extraLarge\" user={avatarDetails} />\n </div>\n <div className=\"flex flex-col items-center\">\n <Typography\n className=\"neeto-ui-text-gray-600 text-center\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoTeamMembers.profile.avatar.profilePictureUploadMessage\"\n values={{\n limit: globalProps.endUserUploadedFileSizeLimitInMb,\n }}\n />\n </Typography>\n <input\n hidden\n accept=\"image/*\"\n data-testid=\"profile-image-upload-file-field\"\n id=\"uploadProfileImage\"\n key={avatarDetails?.imageUrl}\n name=\"profile_image_path\"\n ref={fileInputRef}\n type=\"file\"\n onChange={onProfileImageChange}\n />\n </div>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_VALIDATION_SCHEMA","yup","object","shape","firstName","string","trim","required","t","matches","lastName","phonenumber","phoneNumberValidation","nullable","dateFormat","UPDATE_EMAIL_PATH","MANAGE_BILLING_PATH","ALLOWED_PROFILE_IMAGE_MIME_TYPES","STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES","globalProps","endUserUploadedFileSizeLimitInMb","VALIDATION_ERRORS","invalid_type","corrupted_file","file_limit_exceeded","maxSize","useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","selectedCountry","findById","isFetchingCountriesList","Menu","Dropdown","MenuItem","ProfileImage","_useTranslation","useTranslation","fileInputRef","useRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","URL","createObjectURL","file","handleChangeImage","_fileInputRef$current","current","click","handleRemoveImage","type","size","includes","_jsxs","className","children","_jsx","buttonProps","buttonSize","buttonStyle","icon","Edit","Button","onClick","Avatar","user","Typography","style","Trans","i18nKey","values","limit","hidden","accept","ref","onChange"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,yBAAyB,GAAGC,cAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;AAC1DC,EAAAA,SAAS,EAAEH,cAAG,CACXI,MAAM,EAAE,CACRC,IAAI,EAAE,CACNC,QAAQ,CAACC,SAAC,CAAC,oDAAoD,CAAC,CAAC,CACjEC,OAAO,CACN,qySAAiC,EACjCD,SAAC,CAAC,2CAA2C,CAC/C,CAAC,CACAC,OAAO,CAAC,UAAU,EAAED,SAAC,CAAC,8CAA8C,CAAC,CAAC;AACzEE,EAAAA,QAAQ,EAAET,cAAG,CACVI,MAAM,EAAE,CACRC,IAAI,EAAE,CACNC,QAAQ,CAACC,SAAC,CAAC,mDAAmD,CAAC,CAAC,CAChEC,OAAO,CACN,qySAAiC,EACjCD,SAAC,CAAC,2CAA2C,CAC/C,CAAC,CACAC,OAAO,CAAC,UAAU,EAAED,SAAC,CAAC,8CAA8C,CAAC,CAAC;EACzEG,WAAW,EAAEC,sBAAqB,CAChCJ,SAAC,CAAC,kDAAkD,CACtD,CAAC,CAACK,QAAQ,EAAE;AACZC,EAAAA,UAAU,EAAEb,cAAG,CACZI,MAAM,EAAE,CACRE,QAAQ,CAACC,SAAC,CAAC,qDAAqD,CAAC;AACtE,CAAC;AAEM,IAAMO,iBAAiB,GAAG;AAC1B,IAAMC,mBAAmB,GAAG;AAE5B,IAAMC,gCAAgC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;AAEpE,IAAMC,sCAAsC,GACjDC,wBAAW,CAACC,gCAAgC,GAAG,IAAI,GAAG,IAAI;AAErD,IAAMC,iBAAiB,GAAG;AAC/BC,EAAAA,YAAY,EAAEd,SAAC,CAAC,iDAAiD,CAAC;AAClEe,EAAAA,cAAc,EAAEf,SAAC,CAAC,yCAAyC,CAAC;AAC5DgB,EAAAA,mBAAmB,EAAEhB,SAAC,CAAC,6CAA6C,EAAE;IACpEiB,OAAO,EAAEN,wBAAW,CAACC;GACtB;AACH,CAAC;;ACxCD,IAAMM,YAAY,GAAG,SAAfA,YAAYA,GAAS;AACzB,EAAA,IAAAC,SAAA,GAA0DC,cAAQ,CAAC,IAAI,CAAC;IAAAC,UAAA,GAAAC,+BAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAjEI,IAAAA,qBAAqB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,wBAAwB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEtD,EAAA,IAAAI,kBAAA,GAAqDC,iCAAiB,EAAE;IAAAC,qBAAA,GAAAF,kBAAA,CAAhEG,IAAI;AAAAC,IAAAA,sBAAA,GAAAF,qBAAA,KAAA,MAAA,GAAuB,EAAE,GAAAA,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA,CAArBE,SAAS;AAATA,IAAAA,SAAS,GAAAD,sBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,sBAAA;IAASE,SAAS,GAAAP,kBAAA,CAATO,SAAS;AAEhD,EAAA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,OAAO,EAAA;IAAA,OAAK;AACtCC,MAAAA,KAAK,EAAED,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEE,IAAI;AACpBC,MAAAA,KAAK,EAAEH,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEI;KACjB;EAAA,CAAC;EAEF,IAAMC,sBAAsB,GAAGC,aAAO,CACpC,YAAA;AAAA,IAAA,OAAMT,SAAS,CAACU,GAAG,CAACR,mBAAmB,CAAC;EAAA,CAAA,EACxC,CAACF,SAAS,CACZ,CAAC;AAED,EAAA,IAAMW,mBAAmB,GAAGC,iBAAW,CACrC,UAAAC,aAAa,EAAI;IACfpB,wBAAwB,CAACoB,aAAa,KAAA,IAAA,IAAbA,aAAa,cAAbA,aAAa,GAAI,IAAI,CAAC;AAE/C,IAAA,IAAMC,eAAe,GAAGC,kBAAQ,CAACF,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAEP,KAAK,EAAEN,SAAS,CAAC;IAEjE,OAAO;AAAEzB,MAAAA,UAAU,EAAEuC,eAAe,KAAA,IAAA,IAAfA,eAAe,KAAA,MAAA,GAAA,MAAA,GAAfA,eAAe,CAAEvC;KAAY;AACpD,EAAA,CAAC,EACD,CAACyB,SAAS,CACZ,CAAC;EAED,OAAO;AACLQ,IAAAA,sBAAsB,EAAtBA,sBAAsB;AACtBhB,IAAAA,qBAAqB,EAArBA,qBAAqB;AACrBwB,IAAAA,uBAAuB,EAAEf,SAAS;AAClCU,IAAAA,mBAAmB,EAAnBA;GACD;AACH;;ACxBA,IAAQM,IAAI,GAAeC,yBAAQ,CAA3BD,IAAI;EAAEE,QAAQ,GAAKD,yBAAQ,CAArBC,QAAQ;AAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAYA,GAAS;AACzB,EAAA,IAAAC,eAAA,GAAcC,2BAAc,EAAE;IAAtBrD,CAAC,GAAAoD,eAAA,CAADpD,CAAC;AACT,EAAA,IAAMsD,YAAY,GAAGC,YAAM,CAAC,IAAI,CAAC;AAEjC,EAAA,IAAAC,SAAA,GAA4BC,eAAQ,CAAC,QAAQ,CAAC;IAAAC,UAAA,GAAApC,+BAAA,CAAAkC,SAAA,EAAA,CAAA,CAAA;AAAvCG,IAAAA,KAAK,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAACF,UAAA,CAAA,CAAA,CAAA;AAAEG,QAAAA,OAAO,GAAAH,UAAA,CAAA,CAAA;AACxB,EAAA,IAAQI,QAAQ,GAAKD,OAAO,CAApBC,QAAQ;AAEhB,EAAA,IAAMC,aAAa,GAAG;AAAEC,IAAAA,QAAQ,EAAEL,KAAK,CAACtB,KAAK,CAAC2B;GAAU;AAExD,EAAA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGC,KAAK,EAAI;IACpC,IAAMC,SAAS,GAAGD,KAAK,CAACE,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;AACvC,IAAA,IAAMC,eAAe,GAAGC,oBAAoB,CAACJ,SAAS,CAAC;AAEvD,IAAA,IAAIG,eAAe,EAAE;AACnBE,MAAAA,uBAAM,CAACC,KAAK,CAACH,eAAe,CAAC;AAE7B,MAAA,OAAOA,eAAe;AACxB,IAAA;AAEA,IAAA,OAAOR,QAAQ,CAAC;AACdE,MAAAA,QAAQ,EAAEU,GAAG,CAACC,eAAe,CAACR,SAAS,CAAC;AACxCS,MAAAA,IAAI,EAAET;AACR,KAAC,CAAC;EACJ,CAAC;AAED,EAAA,IAAMU,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAA;AAAA,IAAA,IAAAC,qBAAA;AAAA,IAAA,OAAA,CAAAA,qBAAA,GAASxB,YAAY,CAACyB,OAAO,MAAA,IAAA,IAAAD,qBAAA,KAAA,MAAA,GAAA,MAAA,GAApBA,qBAAA,CAAsBE,KAAK,EAAE;AAAA,EAAA,CAAA;AAE7D,EAAA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAA;AAAA,IAAA,OAASnB,QAAQ,CAAC;AAAEE,MAAAA,QAAQ,EAAE,EAAE;AAAEY,MAAAA,IAAI,EAAE;AAAW,KAAC,CAAC;AAAA,EAAA,CAAA;AAE5E,EAAA,IAAML,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGJ,SAAS,EAAI;AACxC,IAAA,IAAQe,IAAI,GAAWf,SAAS,CAAxBe,IAAI;MAAEC,IAAI,GAAKhB,SAAS,CAAlBgB,IAAI;AAElB,IAAA,IAAI,CAAC1E,gCAAgC,CAAC2E,QAAQ,CAACF,IAAI,CAAC,EAAE;MACpD,OAAOrE,iBAAiB,CAACC,YAAY;AACvC,IAAA;AAEA,IAAA,IAAIqE,IAAI,KAAK,CAAC,EAAE,OAAOtE,iBAAiB,CAACE,cAAc;IAEvD,IAAIoE,IAAI,GAAGzE,sCAAsC,EAAE;MACjD,OAAOG,iBAAiB,CAACG,mBAAmB;AAC9C,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;AAED,EAAA,oBACEqE,eAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,uCAAuC;AAAAC,IAAAA,QAAA,gBACpDF,eAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,mBAAmB;AAAAC,MAAAA,QAAA,gBAChCC,cAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,8BAA8B;QAAAC,QAAA,eAC3CC,cAAA,CAACvC;AACC;AAAA,UAAA;AACAwC,UAAAA,WAAW,EAAE;AAAEH,YAAAA,SAAS,EAAE;WAAiB;AAC3CI,UAAAA,UAAU,EAAC,OAAO;AAClBC,UAAAA,WAAW,EAAC,UAAU;AACtBC,UAAAA,IAAI,EAAEC,qBAAK;UAAAN,QAAA,eAEXF,eAAA,CAACrC,IAAI,EAAA;AAAAuC,YAAAA,QAAA,EAAA,cACHC,cAAA,CAACtC,QAAQ,CAAC4C,MAAM,EAAA;AACd,cAAA,aAAA,EAAY,6BAA6B;AACzCC,cAAAA,OAAO,EAAElB,iBAAkB;AAAAU,cAAAA,QAAA,EAE1BxB,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,IAAbA,aAAa,CAAEC,QAAQ,GACpBhE,CAAC,CAAC,sDAAsD,CAAC,GACzDA,CAAC,CAAC,sDAAsD;AAAC,aAC9C,CAAC,eAClBwF,cAAA,CAACtC,QAAQ,CAAC4C,MAAM,EAAA;AACd,cAAA,aAAA,EAAY,6BAA6B;AACzCC,cAAAA,OAAO,EAAEd,iBAAkB;cAAAM,QAAA,EAE1BvF,CAAC,CAAC,iCAAiC;AAAC,aACtB,CAAC;WACd;SACE;AAAC,OACR,CAAC,eACNwF,cAAA,CAACQ,uBAAM,EAAA;AAACb,QAAAA,IAAI,EAAC,YAAY;AAACc,QAAAA,IAAI,EAAElC;AAAc,OAAE,CAAC;KAC9C,CAAC,eACNsB,eAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EAAA,cACzCC,cAAA,CAACU,2BAAU,EAAA;AACTZ,QAAAA,SAAS,EAAC,oCAAoC;AAC9Ca,QAAAA,KAAK,EAAC,OAAO;QAAAZ,QAAA,eAEbC,cAAA,CAACY,kBAAK,EAAA;AACJC,UAAAA,OAAO,EAAC,6DAA6D;AACrEC,UAAAA,MAAM,EAAE;YACNC,KAAK,EAAE5F,wBAAW,CAACC;AACrB;SACD;OACS,CAAC,eACb4E,cAAA,CAAA,OAAA,EAAA;QACEgB,MAAM,EAAA,IAAA;AACNC,QAAAA,MAAM,EAAC,SAAS;AAChB,QAAA,aAAA,EAAY,iCAAiC;AAC7CnE,QAAAA,EAAE,EAAC,oBAAoB;AAEvBF,QAAAA,IAAI,EAAC,oBAAoB;AACzBsE,QAAAA,GAAG,EAAEpD,YAAa;AAClB4B,QAAAA,IAAI,EAAC,MAAM;AACXyB,QAAAA,QAAQ,EAAE1C;AAAqB,OAAA,EAJ1BF,aAAa,KAAA,IAAA,IAAbA,aAAa,uBAAbA,aAAa,CAAEC,QAKrB,CAAC;AAAA,KACC,CAAC;AAAA,GACH,CAAC;AAEV;;;;;;;;"}
@@ -41,11 +41,11 @@ var useCountries = function useCountries() {
41
41
  return countries.map(formatCountryOption);
42
42
  }, [countries]);
43
43
  var handleCountryChange = React.useCallback(function (countryOption) {
44
- setSelectedCountryOption(countryOption);
45
- var dependentFields = {};
46
- var selectedCountry = neetoCist.findById(countryOption.value, countries);
47
- dependentFields.dateFormat = selectedCountry.dateFormat;
48
- return dependentFields;
44
+ setSelectedCountryOption(countryOption !== null && countryOption !== void 0 ? countryOption : null);
45
+ var selectedCountry = neetoCist.findById(countryOption === null || countryOption === void 0 ? void 0 : countryOption.value, countries);
46
+ return {
47
+ dateFormat: selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.dateFormat
48
+ };
49
49
  }, [countries]);
50
50
  return {
51
51
  countryDropdownOptions: countryDropdownOptions,
@@ -133,4 +133,4 @@ var ProfileImage = function ProfileImage() {
133
133
 
134
134
  exports.ProfileImage = ProfileImage;
135
135
  exports.useCountries = useCountries;
136
- //# sourceMappingURL=ProfileImage-DcSyb-3Q.js.map
136
+ //# sourceMappingURL=ProfileImage-DIc2wajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileImage-DIc2wajv.js","sources":["../app/javascript/src/v2/components/Profile/hooks/useCountries.js","../app/javascript/src/v2/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption ?? null);\n\n const selectedCountry = findById(countryOption?.value, countries);\n\n return { dateFormat: selectedCountry?.dateFormat };\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","/* eslint-disable @bigbinary/neeto/no-missing-localization */\n// v2 ProfileImage — placeholder, full implementation in Phase 3.5\n// Used by ManageMember for member avatar editing\nimport { useRef } from \"react\";\n\nimport { Avatar, Button, DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { useField } from \"formik\";\nimport { Pencil } from \"lucide-react\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { useTranslation } from \"react-i18next\";\nimport { toast } from \"sonner\";\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const [field, , helpers] = useField(\"avatar\");\n const fileInputRef = useRef(null);\n\n const { imageUrl, file } = field.value || {};\n const displayUrl =\n file && file !== \"_destroy\" ? URL.createObjectURL(file) : imageUrl;\n\n const handleFileSelect = event => {\n const selectedFile = event.target.files[0];\n if (!selectedFile) return;\n\n const maxSize = 5 * 1024 * 1024;\n if (selectedFile.size > maxSize) {\n toast.error(\n t(\n \"neetoTeamMembers.common.fileSizeTooLarge\",\n \"File size must be less than 5MB\"\n )\n );\n\n return;\n }\n\n helpers.setValue({ imageUrl, file: selectedFile });\n };\n\n const handleRemove = () => {\n helpers.setValue({ imageUrl: \"\", file: \"_destroy\" });\n };\n\n return (\n <div className=\"flex items-center gap-4\">\n <div className=\"relative\">\n <Avatar\n size=\"xl\"\n user={{\n name: globalProps.user?.name,\n imageUrl: displayUrl,\n }}\n />\n <DropdownMenu\n customTarget={\n <Button\n className=\"absolute -bottom-1 -right-1 rounded-full\"\n icon={Pencil}\n size=\"icon-xs\"\n variant=\"outline\"\n aria-label={t(\n \"neetoTeamMembers.common.changeProfileImage\",\n \"Change profile image\"\n )}\n />\n }\n >\n <DropdownMenu.Menu>\n <DropdownMenu.MenuItem\n data-testid=\"profile-image-upload-button\"\n onClick={() => fileInputRef.current?.click()}\n >\n {t(\"neetoTeamMembers.common.upload\", \"Upload\")}\n </DropdownMenu.MenuItem>\n {displayUrl && (\n <DropdownMenu.MenuItem\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemove}\n >\n {t(\"neetoTeamMembers.common.remove\")}\n </DropdownMenu.MenuItem>\n )}\n </DropdownMenu.Menu>\n </DropdownMenu>\n </div>\n <input\n accept=\"image/*\"\n className=\"hidden\"\n data-testid=\"profile-image-upload-file-field\"\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n />\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","selectedCountry","findById","dateFormat","isFetchingCountriesList","ProfileImage","_globalProps$user","_useTranslation","useTranslation","t","_useField","useField","_useField2","field","helpers","fileInputRef","useRef","_ref","imageUrl","file","displayUrl","URL","createObjectURL","handleFileSelect","event","selectedFile","target","files","maxSize","size","toast","error","setValue","handleRemove","_jsxs","className","children","_jsx","Avatar","user","globalProps","DropdownMenu","customTarget","Button","icon","Pencil","variant","Menu","MenuItem","onClick","_fileInputRef$current","current","click","accept","ref","type","onChange"],"mappings":"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"}
@@ -54,11 +54,11 @@ var useCountries = function useCountries() {
54
54
  return countries.map(formatCountryOption);
55
55
  }, [countries]);
56
56
  var handleCountryChange = useCallback(function (countryOption) {
57
- setSelectedCountryOption(countryOption);
58
- var dependentFields = {};
59
- var selectedCountry = findById(countryOption.value, countries);
60
- dependentFields.dateFormat = selectedCountry.dateFormat;
61
- return dependentFields;
57
+ setSelectedCountryOption(countryOption !== null && countryOption !== void 0 ? countryOption : null);
58
+ var selectedCountry = findById(countryOption === null || countryOption === void 0 ? void 0 : countryOption.value, countries);
59
+ return {
60
+ dateFormat: selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.dateFormat
61
+ };
62
62
  }, [countries]);
63
63
  return {
64
64
  countryDropdownOptions: countryDropdownOptions,
@@ -174,4 +174,4 @@ var ProfileImage = function ProfileImage() {
174
174
  };
175
175
 
176
176
  export { MANAGE_BILLING_PATH as M, PROFILE_VALIDATION_SCHEMA as P, UPDATE_EMAIL_PATH as U, ProfileImage as a, useCountries as u };
177
- //# sourceMappingURL=ProfileImage-OoIOAGCe.js.map
177
+ //# sourceMappingURL=ProfileImage-DbLwreG6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileImage-DN5IzFz7.js","sources":["../app/javascript/src/components/Profile/constants.js","../app/javascript/src/components/Profile/hooks/useCountries.js","../app/javascript/src/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/PhoneNumber\";\nimport * as yup from \"yup\";\n\nexport const PROFILE_VALIDATION_SCHEMA = yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.firstName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n lastName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.lastName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n phonenumber: phoneNumberValidation(\n t(\"neetoTeamMembers.profile.form.invalidPhoneNumber\")\n ).nullable(),\n dateFormat: yup\n .string()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.dateFormat\")),\n});\n\nexport const UPDATE_EMAIL_PATH = \"/auth/email/edit\";\nexport const MANAGE_BILLING_PATH = \"/auth/billing/edit\";\n\nexport const ALLOWED_PROFILE_IMAGE_MIME_TYPES = [\"image/jpeg\", \"image/png\"];\nexport const IMAGE_DELETE_BUTTON_SIZE = 16;\nexport const STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES =\n globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024;\n\nexport const VALIDATION_ERRORS = {\n invalid_type: t(\"neetoTeamMembers.profile.file.invalidType.image\"),\n corrupted_file: t(\"neetoTeamMembers.profile.file.corrupted\"),\n file_limit_exceeded: t(\"neetoTeamMembers.profile.file.limitExceeded\", {\n maxSize: globalProps.endUserUploadedFileSizeLimitInMb,\n }),\n};\n\nexport const DEFAULT_POPOVER_VALUES = {\n preferredDateFormat: {},\n preferredTimeFormat: {},\n timeZone: {},\n};\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption);\n\n const dependentFields = {};\n const selectedCountry = findById(countryOption.value, countries);\n\n dependentFields.dateFormat = selectedCountry.dateFormat;\n\n return dependentFields;\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","import { useRef } from \"react\";\n\nimport { useField } from \"formik\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Edit } from \"neetoicons\";\nimport { Avatar, Dropdown, Toastr, Typography } from \"neetoui\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES,\n VALIDATION_ERRORS,\n} from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const fileInputRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n const onProfileImageChange = event => {\n const imageFile = event.target.files[0];\n const validationError = validateProfileImage(imageFile);\n\n if (validationError) {\n Toastr.error(validationError);\n\n return validationError;\n }\n\n return setValue({\n imageUrl: URL.createObjectURL(imageFile),\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => setValue({ imageUrl: \"\", file: \"_destroy\" });\n\n const validateProfileImage = imageFile => {\n const { type, size } = imageFile;\n\n if (!ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(type)) {\n return VALIDATION_ERRORS.invalid_type;\n }\n\n if (size === 0) return VALIDATION_ERRORS.corrupted_file;\n\n if (size > STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES) {\n return VALIDATION_ERRORS.file_limit_exceeded;\n }\n\n return null;\n };\n\n return (\n <div className=\"mb-4 flex flex-col items-center gap-2\">\n <div className=\"relative shrink-0\">\n <div className=\"absolute bottom-0 end-0 z-10\">\n <Dropdown\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n buttonProps={{ className: \"rounded-full\" }}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Edit}\n >\n <Menu>\n <MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={handleChangeImage}\n >\n {avatarDetails?.imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\")}\n </MenuItem.Button>\n <MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemoveImage}\n >\n {t(\"neetoTeamMembers.buttons.remove\")}\n </MenuItem.Button>\n </Menu>\n </Dropdown>\n </div>\n <Avatar size=\"extraLarge\" user={avatarDetails} />\n </div>\n <div className=\"flex flex-col items-center\">\n <Typography\n className=\"neeto-ui-text-gray-600 text-center\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoTeamMembers.profile.avatar.profilePictureUploadMessage\"\n values={{\n limit: globalProps.endUserUploadedFileSizeLimitInMb,\n }}\n />\n </Typography>\n <input\n hidden\n accept=\"image/*\"\n data-testid=\"profile-image-upload-file-field\"\n id=\"uploadProfileImage\"\n key={avatarDetails?.imageUrl}\n name=\"profile_image_path\"\n ref={fileInputRef}\n type=\"file\"\n onChange={onProfileImageChange}\n />\n </div>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_VALIDATION_SCHEMA","yup","object","shape","firstName","string","trim","required","t","matches","lastName","phonenumber","phoneNumberValidation","nullable","dateFormat","UPDATE_EMAIL_PATH","MANAGE_BILLING_PATH","ALLOWED_PROFILE_IMAGE_MIME_TYPES","STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES","globalProps","endUserUploadedFileSizeLimitInMb","VALIDATION_ERRORS","invalid_type","corrupted_file","file_limit_exceeded","maxSize","useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","dependentFields","selectedCountry","findById","isFetchingCountriesList","Menu","Dropdown","MenuItem","ProfileImage","_useTranslation","useTranslation","fileInputRef","useRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","URL","createObjectURL","file","handleChangeImage","_fileInputRef$current","current","click","handleRemoveImage","type","size","includes","_jsxs","className","children","_jsx","buttonProps","buttonSize","buttonStyle","icon","Edit","Button","onClick","Avatar","user","Typography","style","Trans","i18nKey","values","limit","hidden","accept","ref","onChange"],"mappings":"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"}
1
+ {"version":3,"file":"ProfileImage-DbLwreG6.js","sources":["../app/javascript/src/components/Profile/constants.js","../app/javascript/src/components/Profile/hooks/useCountries.js","../app/javascript/src/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/PhoneNumber\";\nimport * as yup from \"yup\";\n\nexport const PROFILE_VALIDATION_SCHEMA = yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.firstName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n lastName: yup\n .string()\n .trim()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.lastName\"))\n .matches(\n /^[\\p{L}\\p{N} ,'-áéíóúÁÉÍÓÚ]+$/iu,\n t(\"neetoTeamMembers.profile.form.invalidName\")\n )\n .matches(/^[^.]+$/i, t(\"neetoTeamMembers.profile.form.dotsNotAllowed\")),\n phonenumber: phoneNumberValidation(\n t(\"neetoTeamMembers.profile.form.invalidPhoneNumber\")\n ).nullable(),\n dateFormat: yup\n .string()\n .required(t(\"neetoTeamMembers.profile.form.isRequired.dateFormat\")),\n});\n\nexport const UPDATE_EMAIL_PATH = \"/auth/email/edit\";\nexport const MANAGE_BILLING_PATH = \"/auth/billing/edit\";\n\nexport const ALLOWED_PROFILE_IMAGE_MIME_TYPES = [\"image/jpeg\", \"image/png\"];\nexport const IMAGE_DELETE_BUTTON_SIZE = 16;\nexport const STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES =\n globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024;\n\nexport const VALIDATION_ERRORS = {\n invalid_type: t(\"neetoTeamMembers.profile.file.invalidType.image\"),\n corrupted_file: t(\"neetoTeamMembers.profile.file.corrupted\"),\n file_limit_exceeded: t(\"neetoTeamMembers.profile.file.limitExceeded\", {\n maxSize: globalProps.endUserUploadedFileSizeLimitInMb,\n }),\n};\n\nexport const DEFAULT_POPOVER_VALUES = {\n preferredDateFormat: {},\n preferredTimeFormat: {},\n timeZone: {},\n};\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"hooks/profile/useCountriesApi\";\n\nconst useCountries = () => {\n const [selectedCountryOption, setSelectedCountryOption] = useState(null);\n\n const { data: { countries = [] } = {}, isLoading } = useFetchCountries();\n\n const formatCountryOption = country => ({\n label: country?.name,\n value: country?.id,\n });\n\n const countryDropdownOptions = useMemo(\n () => countries.map(formatCountryOption),\n [countries]\n );\n\n const handleCountryChange = useCallback(\n countryOption => {\n setSelectedCountryOption(countryOption ?? null);\n\n const selectedCountry = findById(countryOption?.value, countries);\n\n return { dateFormat: selectedCountry?.dateFormat };\n },\n [countries]\n );\n\n return {\n countryDropdownOptions,\n selectedCountryOption,\n isFetchingCountriesList: isLoading,\n handleCountryChange,\n };\n};\n\nexport default useCountries;\n","import { useRef } from \"react\";\n\nimport { useField } from \"formik\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Edit } from \"neetoicons\";\nimport { Avatar, Dropdown, Toastr, Typography } from \"neetoui\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES,\n VALIDATION_ERRORS,\n} from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const fileInputRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n const onProfileImageChange = event => {\n const imageFile = event.target.files[0];\n const validationError = validateProfileImage(imageFile);\n\n if (validationError) {\n Toastr.error(validationError);\n\n return validationError;\n }\n\n return setValue({\n imageUrl: URL.createObjectURL(imageFile),\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => setValue({ imageUrl: \"\", file: \"_destroy\" });\n\n const validateProfileImage = imageFile => {\n const { type, size } = imageFile;\n\n if (!ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(type)) {\n return VALIDATION_ERRORS.invalid_type;\n }\n\n if (size === 0) return VALIDATION_ERRORS.corrupted_file;\n\n if (size > STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES) {\n return VALIDATION_ERRORS.file_limit_exceeded;\n }\n\n return null;\n };\n\n return (\n <div className=\"mb-4 flex flex-col items-center gap-2\">\n <div className=\"relative shrink-0\">\n <div className=\"absolute bottom-0 end-0 z-10\">\n <Dropdown\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n buttonProps={{ className: \"rounded-full\" }}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Edit}\n >\n <Menu>\n <MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={handleChangeImage}\n >\n {avatarDetails?.imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\")}\n </MenuItem.Button>\n <MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemoveImage}\n >\n {t(\"neetoTeamMembers.buttons.remove\")}\n </MenuItem.Button>\n </Menu>\n </Dropdown>\n </div>\n <Avatar size=\"extraLarge\" user={avatarDetails} />\n </div>\n <div className=\"flex flex-col items-center\">\n <Typography\n className=\"neeto-ui-text-gray-600 text-center\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoTeamMembers.profile.avatar.profilePictureUploadMessage\"\n values={{\n limit: globalProps.endUserUploadedFileSizeLimitInMb,\n }}\n />\n </Typography>\n <input\n hidden\n accept=\"image/*\"\n data-testid=\"profile-image-upload-file-field\"\n id=\"uploadProfileImage\"\n key={avatarDetails?.imageUrl}\n name=\"profile_image_path\"\n ref={fileInputRef}\n type=\"file\"\n onChange={onProfileImageChange}\n />\n </div>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_VALIDATION_SCHEMA","yup","object","shape","firstName","string","trim","required","t","matches","lastName","phonenumber","phoneNumberValidation","nullable","dateFormat","UPDATE_EMAIL_PATH","MANAGE_BILLING_PATH","ALLOWED_PROFILE_IMAGE_MIME_TYPES","STATIC_PROFILE_IMAGE_MAX_SIZE_IN_BYTES","globalProps","endUserUploadedFileSizeLimitInMb","VALIDATION_ERRORS","invalid_type","corrupted_file","file_limit_exceeded","maxSize","useCountries","_useState","useState","_useState2","_slicedToArray","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","name","value","id","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","selectedCountry","findById","isFetchingCountriesList","Menu","Dropdown","MenuItem","ProfileImage","_useTranslation","useTranslation","fileInputRef","useRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","URL","createObjectURL","file","handleChangeImage","_fileInputRef$current","current","click","handleRemoveImage","type","size","includes","_jsxs","className","children","_jsx","buttonProps","buttonSize","buttonStyle","icon","Edit","Button","onClick","Avatar","user","Typography","style","Trans","i18nKey","values","limit","hidden","accept","ref","onChange"],"mappings":"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"}