@bigbinary/neeto-team-members-frontend 5.1.3-beta1 → 5.1.3-beta2

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 (38) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/ManageMember.js +2 -2
  3. package/dist/Profile.js +1 -1
  4. package/dist/{ProfileImage-C-el5ApD.js → ProfileImage-BNFXdzsq.js} +5 -4
  5. package/dist/ProfileImage-BNFXdzsq.js.map +1 -0
  6. package/dist/{ProfileImage-COgP1YCm.js → ProfileImage-Cv5DMmVA.js} +6 -5
  7. package/dist/ProfileImage-Cv5DMmVA.js.map +1 -0
  8. package/dist/{ProfileImage-DSnU8nqZ.js → ProfileImage-DLWJaZ0H.js} +6 -2
  9. package/dist/ProfileImage-DLWJaZ0H.js.map +1 -0
  10. package/dist/{ProfileImage-D1kCXp4a.js → ProfileImage-g_BVBsn6.js} +7 -3
  11. package/dist/ProfileImage-g_BVBsn6.js.map +1 -0
  12. package/dist/TeamMembers.js +2 -2
  13. package/dist/cjs/ManageMember.js +2 -2
  14. package/dist/cjs/Profile.js +1 -1
  15. package/dist/cjs/TeamMembers.js +2 -2
  16. package/dist/cjs/index.js +2 -2
  17. package/dist/cjs/v2/ManageMember.js +2 -2
  18. package/dist/cjs/v2/Profile.js +1 -1
  19. package/dist/cjs/v2/TeamMembers.js +2 -2
  20. package/dist/cjs/v2/index.js +2 -2
  21. package/dist/{index-D8lgteE5.js → index-CCrDkOrb.js} +2 -2
  22. package/dist/{index-D8lgteE5.js.map → index-CCrDkOrb.js.map} +1 -1
  23. package/dist/{index-C2sn8G1t.js → index-DEZO9e9o.js} +2 -2
  24. package/dist/{index-C2sn8G1t.js.map → index-DEZO9e9o.js.map} +1 -1
  25. package/dist/{index-BcPx2-z8.js → index-DkYQBe1V.js} +2 -2
  26. package/dist/{index-BcPx2-z8.js.map → index-DkYQBe1V.js.map} +1 -1
  27. package/dist/{index-DWQdvZ0a.js → index-DmV3sVid.js} +2 -2
  28. package/dist/{index-DWQdvZ0a.js.map → index-DmV3sVid.js.map} +1 -1
  29. package/dist/index.js +2 -2
  30. package/dist/v2/ManageMember.js +2 -2
  31. package/dist/v2/Profile.js +1 -1
  32. package/dist/v2/TeamMembers.js +2 -2
  33. package/dist/v2/index.js +2 -2
  34. package/package.json +1 -1
  35. package/dist/ProfileImage-C-el5ApD.js.map +0 -1
  36. package/dist/ProfileImage-COgP1YCm.js.map +0 -1
  37. package/dist/ProfileImage-D1kCXp4a.js.map +0 -1
  38. package/dist/ProfileImage-DSnU8nqZ.js.map +0 -1
package/dist/v2/index.js CHANGED
@@ -8,7 +8,7 @@ export { default as Profile } from './Profile.js';
8
8
  export { default as Roles } from './Roles.js';
9
9
  export { P as Permissions } from '../Permissions-C8papJqs.js';
10
10
  export { default as TeamMembers } from './TeamMembers.js';
11
- export { M as ManageMember } from '../index-C2sn8G1t.js';
11
+ export { M as ManageMember } from '../index-DEZO9e9o.js';
12
12
  export { R as RolesRadioGroup } from '../RolesRadioGroup-BaPc-NJ8.js';
13
13
  export { default as TeamsAndMembersDropdown } from './TeamsAndMembersDropdown.js';
14
14
  export { default as TeamsDropdown } from './TeamsDropdown.js';
@@ -61,7 +61,7 @@ import '@bigbinary/neeto-molecules/v2/PhoneNumber';
61
61
  import 'sonner';
62
62
  import '../useProfileApi-Dkt6sE5p.js';
63
63
  import '../useCountriesApi-DK00167T.js';
64
- import '../ProfileImage-COgP1YCm.js';
64
+ import '../ProfileImage-Cv5DMmVA.js';
65
65
  import '../inject-css-C2dztUxs.js';
66
66
  import '@bigbinary/neeto-image-uploader-frontend/v2/ImageUploader';
67
67
  import '@bigbinary/neeto-commons-frontend/v2/react-utils/withImmutableActions';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-team-members-frontend",
3
- "version": "5.1.3-beta1",
3
+ "version": "5.1.3-beta2",
4
4
  "description": "A repo acts as the source of truth for the new nano's structure, configs, data etc.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/bigbinary/neeto-team-members-nano",
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProfileImage-C-el5ApD.js","sources":["../app/javascript/src/v2/components/Profile/constants.js","../app/javascript/src/v2/components/Profile/hooks/useCountries.js","../app/javascript/src/v2/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/v2/PhoneNumber\";\nimport * as yup from \"yup\";\n\nconst PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE = {\n \"image/jpeg\": [\".jpeg\", \".jpg\"],\n \"image/png\": [\".png\"],\n};\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 = Object.keys(\n PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE\n);\nexport const PROFILE_IMAGE_UPLOAD_CONFIG = {\n allowedImageTypes: PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE,\n};\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","/* eslint-disable @bigbinary/neeto/no-missing-localization */\nimport { useState } from \"react\";\n\nimport {\n Avatar,\n Button,\n Dialog,\n DropdownMenu,\n Toastr,\n} from \"@bigbinary/neeto-atoms\";\nimport { useField } from \"formik\";\nimport { Pencil } from \"lucide-react\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { ImageUploader } from \"neetoimageuploader/v2\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n PROFILE_IMAGE_UPLOAD_CONFIG,\n} from \"./constants\";\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const [field, , helpers] = useField(\"avatar\");\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n const { imageUrl } = field.value || {};\n const title = imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\");\n\n const handleUploadComplete = async ({ url }) => {\n if (!url) return;\n\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const isAllowedType = ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(\n blob.type\n );\n if (!response.ok || !isAllowedType) throw new Error();\n\n const fileName = new URL(url, window.location.href).pathname\n .split(\"/\")\n .pop();\n\n helpers.setValue({\n imageUrl: url,\n file: new File([blob], fileName, { type: blob.type }),\n });\n } catch {\n Toastr.error(t(\"neetoTeamMembers.profile.file.corrupted\"));\n }\n setIsDialogOpen(false);\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 size=\"xl\" user={{ name: globalProps.user?.name, imageUrl }} />\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={() => setIsDialogOpen(true)}\n >\n {title}\n </DropdownMenu.MenuItem>\n {imageUrl && (\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 <Dialog isOpen={isDialogOpen} onClose={() => setIsDialogOpen(false)}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <ImageUploader\n defaultImageSize={{ width: 500, height: 500 }}\n fixedAspectRatio={{ width: 1, height: 1 }}\n key={imageUrl}\n uploadConfig={PROFILE_IMAGE_UPLOAD_CONFIG}\n onUploadComplete={handleUploadComplete}\n />\n </Dialog>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE","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","Object","keys","PROFILE_IMAGE_UPLOAD_CONFIG","allowedImageTypes","globalProps","endUserUploadedFileSizeLimitInMb","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","ProfileImage","_globalProps$user","_useTranslation","useTranslation","_useField","useField","_useField2","field","helpers","isDialogOpen","setIsDialogOpen","_ref","imageUrl","title","handleUploadComplete","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","url","response","blob","isAllowedType","fileName","wrap","_callee$","_context","prev","next","abrupt","fetch","sent","includes","type","ok","Error","URL","window","location","href","pathname","split","pop","setValue","file","File","t0","Toastr","error","stop","_x","apply","arguments","handleRemove","_jsxs","className","children","_jsx","Avatar","size","user","DropdownMenu","customTarget","Button","icon","Pencil","variant","Menu","MenuItem","onClick","Dialog","isOpen","onClose","Header","Title","ImageUploader","defaultImageSize","width","height","fixedAspectRatio","uploadConfig","onUploadComplete"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProfileImage-COgP1YCm.js","sources":["../app/javascript/src/v2/components/Profile/constants.js","../app/javascript/src/v2/components/Profile/hooks/useCountries.js","../app/javascript/src/v2/components/Profile/ProfileImage.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { validation as phoneNumberValidation } from \"neetomolecules/v2/PhoneNumber\";\nimport * as yup from \"yup\";\n\nconst PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE = {\n \"image/jpeg\": [\".jpeg\", \".jpg\"],\n \"image/png\": [\".png\"],\n};\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 = Object.keys(\n PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE\n);\nexport const PROFILE_IMAGE_UPLOAD_CONFIG = {\n allowedImageTypes: PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE,\n};\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","/* eslint-disable @bigbinary/neeto/no-missing-localization */\nimport { useState } from \"react\";\n\nimport {\n Avatar,\n Button,\n Dialog,\n DropdownMenu,\n Toastr,\n} from \"@bigbinary/neeto-atoms\";\nimport { useField } from \"formik\";\nimport { Pencil } from \"lucide-react\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { ImageUploader } from \"neetoimageuploader/v2\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n ALLOWED_PROFILE_IMAGE_MIME_TYPES,\n PROFILE_IMAGE_UPLOAD_CONFIG,\n} from \"./constants\";\n\nconst ProfileImage = () => {\n const { t } = useTranslation();\n const [field, , helpers] = useField(\"avatar\");\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n const { imageUrl } = field.value || {};\n const title = imageUrl\n ? t(\"neetoTeamMembers.profile.avatar.changeProfilePicture\")\n : t(\"neetoTeamMembers.profile.avatar.uploadProfilePicture\");\n\n const handleUploadComplete = async ({ url }) => {\n if (!url) return;\n\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const isAllowedType = ALLOWED_PROFILE_IMAGE_MIME_TYPES.includes(\n blob.type\n );\n if (!response.ok || !isAllowedType) throw new Error();\n\n const fileName = new URL(url, window.location.href).pathname\n .split(\"/\")\n .pop();\n\n helpers.setValue({\n imageUrl: url,\n file: new File([blob], fileName, { type: blob.type }),\n });\n } catch {\n Toastr.error(t(\"neetoTeamMembers.profile.file.corrupted\"));\n }\n setIsDialogOpen(false);\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 size=\"xl\" user={{ name: globalProps.user?.name, imageUrl }} />\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={() => setIsDialogOpen(true)}\n >\n {title}\n </DropdownMenu.MenuItem>\n {imageUrl && (\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 <Dialog isOpen={isDialogOpen} onClose={() => setIsDialogOpen(false)}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <ImageUploader\n defaultImageSize={{ width: 500, height: 500 }}\n fixedAspectRatio={{ width: 1, height: 1 }}\n key={imageUrl}\n uploadConfig={PROFILE_IMAGE_UPLOAD_CONFIG}\n onUploadComplete={handleUploadComplete}\n />\n </Dialog>\n </div>\n );\n};\n\nexport default ProfileImage;\n"],"names":["PROFILE_IMAGE_EXTENSIONS_BY_MIME_TYPE","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","Object","keys","PROFILE_IMAGE_UPLOAD_CONFIG","allowedImageTypes","globalProps","endUserUploadedFileSizeLimitInMb","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","ProfileImage","_globalProps$user","_useTranslation","useTranslation","_useField","useField","_useField2","field","helpers","isDialogOpen","setIsDialogOpen","_ref","imageUrl","title","handleUploadComplete","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","url","response","blob","isAllowedType","fileName","wrap","_callee$","_context","prev","next","abrupt","fetch","sent","includes","type","ok","Error","URL","window","location","href","pathname","split","pop","setValue","file","File","t0","Toastr","error","stop","_x","apply","arguments","handleRemove","_jsxs","className","children","_jsx","Avatar","size","user","DropdownMenu","customTarget","Button","icon","Pencil","variant","Menu","MenuItem","onClick","Dialog","isOpen","onClose","Header","Title","ImageUploader","defaultImageSize","width","height","fixedAspectRatio","uploadConfig","onUploadComplete"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,IAAMA,qCAAqC,GAAG;AAC5C,EAAA,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;EAC/B,WAAW,EAAE,CAAC,MAAM;AACtB,CAAC;AAEM,IAAMC,yBAAyB,GAAGC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;AAC1DC,EAAAA,SAAS,EAAEH,GAAG,CACXI,MAAM,EAAE,CACRC,IAAI,EAAE,CACNC,QAAQ,CAACC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CACjEC,OAAO,CACN,qySAAiC,EACjCD,CAAC,CAAC,2CAA2C,CAC/C,CAAC,CACAC,OAAO,CAAC,UAAU,EAAED,CAAC,CAAC,8CAA8C,CAAC,CAAC;AACzEE,EAAAA,QAAQ,EAAET,GAAG,CACVI,MAAM,EAAE,CACRC,IAAI,EAAE,CACNC,QAAQ,CAACC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAChEC,OAAO,CACN,qySAAiC,EACjCD,CAAC,CAAC,2CAA2C,CAC/C,CAAC,CACAC,OAAO,CAAC,UAAU,EAAED,CAAC,CAAC,8CAA8C,CAAC,CAAC;EACzEG,WAAW,EAAEC,UAAqB,CAChCJ,CAAC,CAAC,kDAAkD,CACtD,CAAC,CAACK,QAAQ,EAAE;AACZC,EAAAA,UAAU,EAAEb,GAAG,CACZI,MAAM,EAAE,CACRE,QAAQ,CAACC,CAAC,CAAC,qDAAqD,CAAC;AACtE,CAAC;AAEM,IAAMO,iBAAiB,GAAG;AAC1B,IAAMC,mBAAmB,GAAG;AAE5B,IAAMC,gCAAgC,GAAGC,MAAM,CAACC,IAAI,CACzDpB,qCACF,CAAC;AACM,IAAMqB,2BAA2B,GAAG;AACzCC,EAAAA,iBAAiB,EAAEtB;AACrB,CAAC;AAGCuB,WAAW,CAACC,gCAAgC,GAAG,IAAI,GAAG;CAEvB;AAC/BC,EAAAA,YAAY,EAAEhB,CAAC,CAAC,iDAAiD,CAAC;AAClEiB,EAAAA,cAAc,EAAEjB,CAAC,CAAC,yCAAyC,CAAC;AAC5DkB,EAAAA,mBAAmB,EAAElB,CAAC,CAAC,6CAA6C,EAAE;IACpEmB,OAAO,EAAEL,WAAW,CAACC;GACtB;AACH;;AClDA,IAAMK,YAAY,GAAG,SAAfA,YAAYA,GAAS;AACzB,EAAA,IAAAC,SAAA,GAA0DC,QAAQ,CAAC,IAAI,CAAC;IAAAC,UAAA,GAAAC,cAAA,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,iBAAiB,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,OAAO,CACpC,YAAA;AAAA,IAAA,OAAMT,SAAS,CAACU,GAAG,CAACR,mBAAmB,CAAC;EAAA,CAAA,EACxC,CAACF,SAAS,CACZ,CAAC;AAED,EAAA,IAAMW,mBAAmB,GAAGC,WAAW,CACrC,UAAAC,aAAa,EAAI;IACfpB,wBAAwB,CAACoB,aAAa,KAAA,IAAA,IAAbA,aAAa,cAAbA,aAAa,GAAI,IAAI,CAAC;AAE/C,IAAA,IAAMC,eAAe,GAAGC,QAAQ,CAACF,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAEP,KAAK,EAAEN,SAAS,CAAC;IAEjE,OAAO;AAAE3B,MAAAA,UAAU,EAAEyC,eAAe,KAAA,IAAA,IAAfA,eAAe,KAAA,MAAA,GAAA,MAAA,GAAfA,eAAe,CAAEzC;KAAY;AACpD,EAAA,CAAC,EACD,CAAC2B,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;;ACjBA,IAAMM,YAAY,GAAG,SAAfA,YAAYA,GAAS;AAAA,EAAA,IAAAC,iBAAA;AACzB,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBrD,CAAC,GAAAoD,eAAA,CAADpD,CAAC;AACT,EAAA,IAAAsD,SAAA,GAA2BC,QAAQ,CAAC,QAAQ,CAAC;IAAAC,UAAA,GAAAhC,cAAA,CAAA8B,SAAA,EAAA,CAAA,CAAA;AAAtCG,IAAAA,KAAK,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAIE,IAAAA,OAAO,GAAAF,UAAA,CAAA,CAAA,CAAA;AACvB,EAAA,IAAAnC,SAAA,GAAwCC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAhDsC,IAAAA,YAAY,GAAApC,UAAA,CAAA,CAAA,CAAA;AAAEqC,IAAAA,eAAe,GAAArC,UAAA,CAAA,CAAA,CAAA;AAEpC,EAAA,IAAAsC,IAAA,GAAqBJ,KAAK,CAAClB,KAAK,IAAI,EAAE;IAA9BuB,QAAQ,GAAAD,IAAA,CAARC,QAAQ;AAChB,EAAA,IAAMC,KAAK,GAAGD,QAAQ,GAClB9D,CAAC,CAAC,sDAAsD,CAAC,GACzDA,CAAC,CAAC,sDAAsD,CAAC;AAE7D,EAAA,IAAMgE,oBAAoB,gBAAA,YAAA;IAAA,IAAAC,KAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAAC,KAAA,EAAA;MAAA,IAAAC,GAAA,EAAAC,QAAA,EAAAC,IAAA,EAAAC,aAAA,EAAAC,QAAA;AAAA,MAAA,OAAAR,mBAAA,CAAAS,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;YAAST,GAAG,GAAAD,KAAA,CAAHC,GAAG;AAAA,YAAA,IAClCA,GAAG,EAAA;AAAAO,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;AAAA,cAAA;AAAA,YAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,CAAA,QAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAAH,YAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA;AAAAD,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;YAAA,OAGiBE,KAAK,CAACX,GAAG,CAAC;AAAA,UAAA,KAAA,CAAA;YAA3BC,QAAQ,GAAAM,QAAA,CAAAK,IAAA;AAAAL,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;AAAA,YAAA,OACKR,QAAQ,CAACC,IAAI,EAAE;AAAA,UAAA,KAAA,CAAA;YAA5BA,IAAI,GAAAK,QAAA,CAAAK,IAAA;YACJT,aAAa,GAAGjE,gCAAgC,CAAC2E,QAAQ,CAC7DX,IAAI,CAACY,IACP,CAAC;AAAA,YAAA,IAAA,EACG,CAACb,QAAQ,CAACc,EAAE,IAAI,CAACZ,aAAa,CAAA,EAAA;AAAAI,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA;AAAA,cAAA;AAAA,YAAA;YAAA,MAAQ,IAAIO,KAAK,EAAE;AAAA,UAAA,KAAA,EAAA;YAE/CZ,QAAQ,GAAG,IAAIa,GAAG,CAACjB,GAAG,EAAEkB,MAAM,CAACC,QAAQ,CAACC,IAAI,CAAC,CAACC,QAAQ,CACzDC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,EAAE;YAERpC,OAAO,CAACqC,QAAQ,CAAC;AACfjC,cAAAA,QAAQ,EAAES,GAAG;cACbyB,IAAI,EAAE,IAAIC,IAAI,CAAC,CAACxB,IAAI,CAAC,EAAEE,QAAQ,EAAE;gBAAEU,IAAI,EAAEZ,IAAI,CAACY;eAAM;AACtD,aAAC,CAAC;AAACP,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA;AAAA,YAAA;AAAA,UAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA;YAAAD,QAAA,CAAAoB,EAAA,GAAApB,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAEHqB,YAAAA,MAAM,CAACC,KAAK,CAACpG,CAAC,CAAC,yCAAyC,CAAC,CAAC;AAAC,UAAA,KAAA,EAAA;YAE7D4D,eAAe,CAAC,KAAK,CAAC;AAAC,UAAA,KAAA,EAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAkB,QAAA,CAAAuB,IAAA,EAAA;AAAA;AAAA,MAAA,CAAA,EAAAhC,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA;IAAA,CACxB,CAAA,CAAA;IAAA,OAAA,SAvBKL,oBAAoBA,CAAAsC,EAAA,EAAA;AAAA,MAAA,OAAArC,KAAA,CAAAsC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA,IAAA,CAAA;EAAA,CAAA,EAuBzB;AAED,EAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,GAAS;IACzB/C,OAAO,CAACqC,QAAQ,CAAC;AAAEjC,MAAAA,QAAQ,EAAE,EAAE;AAAEkC,MAAAA,IAAI,EAAE;AAAW,KAAC,CAAC;EACtD,CAAC;AAED,EAAA,oBACEU,IAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yBAAyB;AAAAC,IAAAA,QAAA,gBACtCF,IAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,UAAU;MAAAC,QAAA,EAAA,cACvBC,GAAA,CAACC,MAAM,EAAA;AAACC,QAAAA,IAAI,EAAC,IAAI;AAACC,QAAAA,IAAI,EAAE;UAAE1E,IAAI,EAAA,CAAAa,iBAAA,GAAErC,WAAW,CAACkG,IAAI,MAAA,IAAA,IAAA7D,iBAAA,KAAA,MAAA,GAAA,MAAA,GAAhBA,iBAAA,CAAkBb,IAAI;AAAEwB,UAAAA,QAAQ,EAARA;AAAS;AAAE,OAAE,CAAC,eACtE+C,GAAA,CAACI,YAAY,EAAA;QACXC,YAAY,eACVL,GAAA,CAACM,MAAM,EAAA;AACLR,UAAAA,SAAS,EAAC,0CAA0C;AACpDS,UAAAA,IAAI,EAAEC,MAAO;AACbN,UAAAA,IAAI,EAAC,SAAS;AACdO,UAAAA,OAAO,EAAC,SAAS;AACjB,UAAA,YAAA,EAAYtH,CAAC,CACX,4CAA4C,EAC5C,sBACF;AAAE,SACH,CACF;AAAA4G,QAAAA,QAAA,eAEDF,IAAA,CAACO,YAAY,CAACM,IAAI,EAAA;AAAAX,UAAAA,QAAA,EAAA,cAChBC,GAAA,CAACI,YAAY,CAACO,QAAQ,EAAA;AACpB,YAAA,aAAA,EAAY,6BAA6B;YACzCC,OAAO,EAAE,SAATA,OAAOA,GAAA;cAAA,OAAQ7D,eAAe,CAAC,IAAI,CAAC;YAAA,CAAC;AAAAgD,YAAAA,QAAA,EAEpC7C;WACoB,CAAC,EACvBD,QAAQ,iBACP+C,GAAA,CAACI,YAAY,CAACO,QAAQ,EAAA;AACpB,YAAA,aAAA,EAAY,6BAA6B;AACzCC,YAAAA,OAAO,EAAEhB,YAAa;YAAAG,QAAA,EAErB5G,CAAC,CAAC,gCAAgC;AAAC,WACf,CACxB;SACgB;AAAC,OACR,CAAC;AAAA,KACZ,CAAC,eACN0G,IAAA,CAACgB,MAAM,EAAA;AAACC,MAAAA,MAAM,EAAEhE,YAAa;MAACiE,OAAO,EAAE,SAATA,OAAOA,GAAA;QAAA,OAAQhE,eAAe,CAAC,KAAK,CAAC;MAAA,CAAC;AAAAgD,MAAAA,QAAA,EAAA,cAClEC,GAAA,CAACa,MAAM,CAACG,MAAM,EAAA;AAAAjB,QAAAA,QAAA,eACZC,GAAA,CAACa,MAAM,CAACI,KAAK,EAAA;AAAAlB,UAAAA,QAAA,EAAE7C;SAAoB;AAAC,OACvB,CAAC,eAChB8C,GAAA,CAACkB,aAAa,EAAA;AACZC,QAAAA,gBAAgB,EAAE;AAAEC,UAAAA,KAAK,EAAE,GAAG;AAAEC,UAAAA,MAAM,EAAE;SAAM;AAC9CC,QAAAA,gBAAgB,EAAE;AAAEF,UAAAA,KAAK,EAAE,CAAC;AAAEC,UAAAA,MAAM,EAAE;SAAI;AAE1CE,QAAAA,YAAY,EAAExH,2BAA4B;AAC1CyH,QAAAA,gBAAgB,EAAErE;AAAqB,OAAA,EAFlCF,QAGN,CAAC;AAAA,KACI,CAAC;AAAA,GACN,CAAC;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProfileImage-D1kCXp4a.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 { useEffect, 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 const blobUrlRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n useEffect(\n () => () => {\n if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);\n },\n []\n );\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 if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);\n blobUrlRef.current = URL.createObjectURL(imageFile);\n\n return setValue({\n imageUrl: blobUrlRef.current,\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => {\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current);\n blobUrlRef.current = null;\n }\n setValue({ imageUrl: \"\", file: \"_destroy\" });\n };\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 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=\"body2\"\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={ALLOWED_PROFILE_IMAGE_MIME_TYPES.join(\",\")}\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","blobUrlRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","useEffect","current","URL","revokeObjectURL","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","createObjectURL","file","handleChangeImage","_fileInputRef$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","join","ref","onChange"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProfileImage-DSnU8nqZ.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 { useEffect, 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 const blobUrlRef = useRef(null);\n\n const [field, _, helpers] = useField(\"avatar\");\n const { setValue } = helpers;\n\n const avatarDetails = { imageUrl: field.value.imageUrl };\n\n useEffect(\n () => () => {\n if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);\n },\n []\n );\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 if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);\n blobUrlRef.current = URL.createObjectURL(imageFile);\n\n return setValue({\n imageUrl: blobUrlRef.current,\n file: imageFile,\n });\n };\n\n const handleChangeImage = () => fileInputRef.current?.click();\n\n const handleRemoveImage = () => {\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current);\n blobUrlRef.current = null;\n }\n setValue({ imageUrl: \"\", file: \"_destroy\" });\n };\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 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=\"body2\"\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={ALLOWED_PROFILE_IMAGE_MIME_TYPES.join(\",\")}\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","blobUrlRef","_useField","useField","_useField2","field","_","helpers","setValue","avatarDetails","imageUrl","useEffect","current","URL","revokeObjectURL","onProfileImageChange","event","imageFile","target","files","validationError","validateProfileImage","Toastr","error","createObjectURL","file","handleChangeImage","_fileInputRef$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","join","ref","onChange"],"mappings":"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"}