@bigbinary/neeto-team-members-frontend 5.1.0 → 5.1.1-beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.ready +1 -1
- package/dist/{ActionBlock-jgw1N-As.js → ActionBlock-BfQKysEx.js} +3 -1
- package/dist/ActionBlock-BfQKysEx.js.map +1 -0
- package/dist/{ActionBlock-C9Iy0jGZ.js → ActionBlock-DjypCjju.js} +3 -1
- package/dist/ActionBlock-DjypCjju.js.map +1 -0
- package/dist/ManageMember.js +2 -2
- package/dist/Profile.js +1 -1
- package/dist/{ProfileImage-DbLwreG6.js → ProfileImage-D1kCXp4a.js} +19 -9
- package/dist/ProfileImage-D1kCXp4a.js.map +1 -0
- package/dist/{ProfileImage-BXsTglvo.js → ProfileImage-DSnU8nqZ.js} +18 -8
- package/dist/ProfileImage-DSnU8nqZ.js.map +1 -0
- package/dist/TeamMembers.js +2 -2
- package/dist/cjs/ManageMember.js +2 -2
- package/dist/cjs/Profile.js +1 -1
- package/dist/cjs/TeamMembers.js +2 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/v2/Groups.js +1 -1
- package/dist/cjs/v2/ManageMember.js +2 -2
- package/dist/cjs/v2/MembersInvite.js +1 -1
- package/dist/cjs/v2/Profile.js +1 -1
- package/dist/cjs/v2/Roles.js +1 -1
- package/dist/cjs/v2/TeamMembers.js +4 -3
- package/dist/cjs/v2/TeamMembers.js.map +1 -1
- package/dist/cjs/v2/TeamsAndMembersDropdown.js +5 -1
- package/dist/cjs/v2/TeamsAndMembersDropdown.js.map +1 -1
- package/dist/cjs/v2/index.js +2 -2
- package/dist/{index-BpVod2uP.js → index-BcPx2-z8.js} +2 -2
- package/dist/{index-BpVod2uP.js.map → index-BcPx2-z8.js.map} +1 -1
- package/dist/{index-B3Cx1asZ.js → index-CHvbZfMI.js} +2 -2
- package/dist/{index-B3Cx1asZ.js.map → index-CHvbZfMI.js.map} +1 -1
- package/dist/{index-D_6vJd6A.js → index-D8lgteE5.js} +2 -2
- package/dist/{index-D_6vJd6A.js.map → index-D8lgteE5.js.map} +1 -1
- package/dist/{index-C8tkWNTW.js → index-venWfbj6.js} +2 -2
- package/dist/{index-C8tkWNTW.js.map → index-venWfbj6.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/v2/Groups.js +1 -1
- package/dist/v2/ManageMember.js +2 -2
- package/dist/v2/MembersInvite.js +1 -1
- package/dist/v2/Profile.js +1 -1
- package/dist/v2/Roles.js +1 -1
- package/dist/v2/TeamMembers.js +4 -3
- package/dist/v2/TeamMembers.js.map +1 -1
- package/dist/v2/TeamsAndMembersDropdown.js +5 -1
- package/dist/v2/TeamsAndMembersDropdown.js.map +1 -1
- package/dist/v2/index.js +2 -2
- package/package.json +9 -9
- package/dist/ActionBlock-C9Iy0jGZ.js.map +0 -1
- package/dist/ActionBlock-jgw1N-As.js.map +0 -1
- package/dist/ProfileImage-BXsTglvo.js.map +0 -1
- package/dist/ProfileImage-DbLwreG6.js.map +0 -1
package/dist/.ready
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Built at 2026-09-
|
|
1
|
+
Built at 2026-09-24T13:28:01.846Z
|
|
@@ -28,12 +28,14 @@ var FormikActionBlock = function FormikActionBlock(_ref) {
|
|
|
28
28
|
className: cn("flex items-center gap-2", className),
|
|
29
29
|
children: [/*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
|
|
30
30
|
className: submitClassName,
|
|
31
|
+
"data-testid": "save-changes-button",
|
|
31
32
|
disabled: isSubmitting || submitDisabled,
|
|
32
33
|
type: "submit"
|
|
33
34
|
}, submitRest), {}, {
|
|
34
35
|
children: submitLabel || t("neetoTeamMembers.buttons.saveChanges")
|
|
35
36
|
})), /*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
|
|
36
37
|
className: cancelClassName,
|
|
38
|
+
"data-testid": "cancel-button",
|
|
37
39
|
type: "button",
|
|
38
40
|
variant: "outline"
|
|
39
41
|
}, cancelRest), {}, {
|
|
@@ -43,4 +45,4 @@ var FormikActionBlock = function FormikActionBlock(_ref) {
|
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
export { FormikActionBlock as F };
|
|
46
|
-
//# sourceMappingURL=ActionBlock-
|
|
48
|
+
//# sourceMappingURL=ActionBlock-BfQKysEx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBlock-BfQKysEx.js","sources":["../app/javascript/src/v2/components/Common/formik/ActionBlock.jsx"],"sourcesContent":["import { Button, cn } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FormikActionBlock = ({\n isSubmitting,\n cancelButtonProps = {},\n submitButtonProps = {},\n className,\n}) => {\n const { t } = useTranslation();\n\n const {\n label: cancelLabel,\n className: cancelClassName,\n ...cancelRest\n } = cancelButtonProps;\n\n const {\n label: submitLabel,\n className: submitClassName,\n disabled: submitDisabled,\n ...submitRest\n } = submitButtonProps;\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <Button\n className={submitClassName}\n data-testid=\"save-changes-button\"\n disabled={isSubmitting || submitDisabled}\n type=\"submit\"\n {...submitRest}\n >\n {submitLabel || t(\"neetoTeamMembers.buttons.saveChanges\")}\n </Button>\n <Button\n className={cancelClassName}\n data-testid=\"cancel-button\"\n type=\"button\"\n variant=\"outline\"\n {...cancelRest}\n >\n {cancelLabel || t(\"neetoTeamMembers.buttons.cancel\")}\n </Button>\n </div>\n );\n};\n\nexport default FormikActionBlock;\n"],"names":["FormikActionBlock","_ref","isSubmitting","_ref$cancelButtonProp","cancelButtonProps","_ref$submitButtonProp","submitButtonProps","className","_useTranslation","useTranslation","t","cancelLabel","label","cancelClassName","cancelRest","_objectWithoutProperties","_excluded","submitLabel","submitClassName","submitDisabled","disabled","submitRest","_excluded2","_jsxs","cn","children","_jsx","Button","_objectSpread","type","variant"],"mappings":";;;;;;;;;;AAGA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAKjB;AAAA,EAAA,IAJJC,YAAY,GAAAD,IAAA,CAAZC,YAAY;IAAAC,qBAAA,GAAAF,IAAA,CACZG,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAE,qBAAA,GAAAJ,IAAA,CACtBK,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACtBE,SAAS,GAAAN,IAAA,CAATM,SAAS;AAET,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAET,EAAA,IACSC,WAAW,GAGhBP,iBAAiB,CAHnBQ,KAAK;IACMC,eAAe,GAExBT,iBAAiB,CAFnBG,SAAS;AACNO,IAAAA,UAAU,GAAAC,wBAAA,CACXX,iBAAiB,EAAAY,SAAA,CAAA;AAErB,EAAA,IACSC,WAAW,GAIhBX,iBAAiB,CAJnBM,KAAK;IACMM,eAAe,GAGxBZ,iBAAiB,CAHnBC,SAAS;IACCY,cAAc,GAEtBb,iBAAiB,CAFnBc,QAAQ;AACLC,IAAAA,UAAU,GAAAN,wBAAA,CACXT,iBAAiB,EAAAgB,UAAA,CAAA;AAErB,EAAA,oBACEC,IAAA,CAAA,KAAA,EAAA;AAAKhB,IAAAA,SAAS,EAAEiB,EAAE,CAAC,yBAAyB,EAAEjB,SAAS,CAAE;AAAAkB,IAAAA,QAAA,gBACvDC,GAAA,CAACC,MAAM,EAAAC,aAAA,CAAAA,aAAA,CAAA;AACLrB,MAAAA,SAAS,EAAEW,eAAgB;AAC3B,MAAA,aAAA,EAAY,qBAAqB;MACjCE,QAAQ,EAAElB,YAAY,IAAIiB,cAAe;AACzCU,MAAAA,IAAI,EAAC;AAAQ,KAAA,EACTR,UAAU,CAAA,EAAA,EAAA,EAAA;AAAAI,MAAAA,QAAA,EAEbR,WAAW,IAAIP,CAAC,CAAC,sCAAsC;KAAC,CACnD,CAAC,eACTgB,GAAA,CAACC,MAAM,EAAAC,aAAA,CAAAA,aAAA,CAAA;AACLrB,MAAAA,SAAS,EAAEM,eAAgB;AAC3B,MAAA,aAAA,EAAY,eAAe;AAC3BgB,MAAAA,IAAI,EAAC,QAAQ;AACbC,MAAAA,OAAO,EAAC;AAAS,KAAA,EACbhB,UAAU,CAAA,EAAA,EAAA,EAAA;AAAAW,MAAAA,QAAA,EAEbd,WAAW,IAAID,CAAC,CAAC,iCAAiC;AAAC,KAAA,CAC9C,CAAC;AAAA,GACN,CAAC;AAEV;;;;"}
|
|
@@ -35,12 +35,14 @@ var FormikActionBlock = function FormikActionBlock(_ref) {
|
|
|
35
35
|
className: neetoAtoms.cn("flex items-center gap-2", className),
|
|
36
36
|
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread(_objectSpread({
|
|
37
37
|
className: submitClassName,
|
|
38
|
+
"data-testid": "save-changes-button",
|
|
38
39
|
disabled: isSubmitting || submitDisabled,
|
|
39
40
|
type: "submit"
|
|
40
41
|
}, submitRest), {}, {
|
|
41
42
|
children: submitLabel || t("neetoTeamMembers.buttons.saveChanges")
|
|
42
43
|
})), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread(_objectSpread({
|
|
43
44
|
className: cancelClassName,
|
|
45
|
+
"data-testid": "cancel-button",
|
|
44
46
|
type: "button",
|
|
45
47
|
variant: "outline"
|
|
46
48
|
}, cancelRest), {}, {
|
|
@@ -50,4 +52,4 @@ var FormikActionBlock = function FormikActionBlock(_ref) {
|
|
|
50
52
|
};
|
|
51
53
|
|
|
52
54
|
exports.FormikActionBlock = FormikActionBlock;
|
|
53
|
-
//# sourceMappingURL=ActionBlock-
|
|
55
|
+
//# sourceMappingURL=ActionBlock-DjypCjju.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBlock-DjypCjju.js","sources":["../app/javascript/src/v2/components/Common/formik/ActionBlock.jsx"],"sourcesContent":["import { Button, cn } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FormikActionBlock = ({\n isSubmitting,\n cancelButtonProps = {},\n submitButtonProps = {},\n className,\n}) => {\n const { t } = useTranslation();\n\n const {\n label: cancelLabel,\n className: cancelClassName,\n ...cancelRest\n } = cancelButtonProps;\n\n const {\n label: submitLabel,\n className: submitClassName,\n disabled: submitDisabled,\n ...submitRest\n } = submitButtonProps;\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <Button\n className={submitClassName}\n data-testid=\"save-changes-button\"\n disabled={isSubmitting || submitDisabled}\n type=\"submit\"\n {...submitRest}\n >\n {submitLabel || t(\"neetoTeamMembers.buttons.saveChanges\")}\n </Button>\n <Button\n className={cancelClassName}\n data-testid=\"cancel-button\"\n type=\"button\"\n variant=\"outline\"\n {...cancelRest}\n >\n {cancelLabel || t(\"neetoTeamMembers.buttons.cancel\")}\n </Button>\n </div>\n );\n};\n\nexport default FormikActionBlock;\n"],"names":["FormikActionBlock","_ref","isSubmitting","_ref$cancelButtonProp","cancelButtonProps","_ref$submitButtonProp","submitButtonProps","className","_useTranslation","useTranslation","t","cancelLabel","label","cancelClassName","cancelRest","_objectWithoutProperties","_excluded","submitLabel","submitClassName","submitDisabled","disabled","submitRest","_excluded2","_jsxs","cn","children","_jsx","Button","_objectSpread","type","variant"],"mappings":";;;;;;;;;;;;;;;;;AAGA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAKjB;AAAA,EAAA,IAJJC,YAAY,GAAAD,IAAA,CAAZC,YAAY;IAAAC,qBAAA,GAAAF,IAAA,CACZG,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAE,qBAAA,GAAAJ,IAAA,CACtBK,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACtBE,SAAS,GAAAN,IAAA,CAATM,SAAS;AAET,EAAA,IAAAC,eAAA,GAAcC,2BAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAET,EAAA,IACSC,WAAW,GAGhBP,iBAAiB,CAHnBQ,KAAK;IACMC,eAAe,GAExBT,iBAAiB,CAFnBG,SAAS;AACNO,IAAAA,UAAU,GAAAC,yCAAA,CACXX,iBAAiB,EAAAY,SAAA,CAAA;AAErB,EAAA,IACSC,WAAW,GAIhBX,iBAAiB,CAJnBM,KAAK;IACMM,eAAe,GAGxBZ,iBAAiB,CAHnBC,SAAS;IACCY,cAAc,GAEtBb,iBAAiB,CAFnBc,QAAQ;AACLC,IAAAA,UAAU,GAAAN,yCAAA,CACXT,iBAAiB,EAAAgB,UAAA,CAAA;AAErB,EAAA,oBACEC,eAAA,CAAA,KAAA,EAAA;AAAKhB,IAAAA,SAAS,EAAEiB,aAAE,CAAC,yBAAyB,EAAEjB,SAAS,CAAE;AAAAkB,IAAAA,QAAA,gBACvDC,cAAA,CAACC,iBAAM,EAAAC,aAAA,CAAAA,aAAA,CAAA;AACLrB,MAAAA,SAAS,EAAEW,eAAgB;AAC3B,MAAA,aAAA,EAAY,qBAAqB;MACjCE,QAAQ,EAAElB,YAAY,IAAIiB,cAAe;AACzCU,MAAAA,IAAI,EAAC;AAAQ,KAAA,EACTR,UAAU,CAAA,EAAA,EAAA,EAAA;AAAAI,MAAAA,QAAA,EAEbR,WAAW,IAAIP,CAAC,CAAC,sCAAsC;KAAC,CACnD,CAAC,eACTgB,cAAA,CAACC,iBAAM,EAAAC,aAAA,CAAAA,aAAA,CAAA;AACLrB,MAAAA,SAAS,EAAEM,eAAgB;AAC3B,MAAA,aAAA,EAAY,eAAe;AAC3BgB,MAAAA,IAAI,EAAC,QAAQ;AACbC,MAAAA,OAAO,EAAC;AAAS,KAAA,EACbhB,UAAU,CAAA,EAAA,EAAA,EAAA;AAAAW,MAAAA,QAAA,EAEbd,WAAW,IAAID,CAAC,CAAC,iCAAiC;AAAC,KAAA,CAC9C,CAAC;AAAA,GACN,CAAC;AAEV;;;;"}
|
package/dist/ManageMember.js
CHANGED
|
@@ -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-
|
|
22
|
+
import './ProfileImage-D1kCXp4a.js';
|
|
23
23
|
import './useRolesApi-93OoRU1s.js';
|
|
24
24
|
import './useTeamsApi-CGY9oJqn.js';
|
|
25
|
-
export { M as default } from './index-
|
|
25
|
+
export { M as default } from './index-BcPx2-z8.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-
|
|
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-D1kCXp4a.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';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
-
import { useState, useMemo, useCallback, useRef } from 'react';
|
|
2
|
+
import { useState, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
3
3
|
import { findById } from '@bigbinary/neeto-cist';
|
|
4
4
|
import { u as useFetchCountries } from './useCountriesApi-DK00167T.js';
|
|
5
5
|
import { useField } from 'formik';
|
|
@@ -74,6 +74,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
74
74
|
var _useTranslation = useTranslation(),
|
|
75
75
|
t = _useTranslation.t;
|
|
76
76
|
var fileInputRef = useRef(null);
|
|
77
|
+
var blobUrlRef = useRef(null);
|
|
77
78
|
var _useField = useField("avatar"),
|
|
78
79
|
_useField2 = _slicedToArray(_useField, 3),
|
|
79
80
|
field = _useField2[0];
|
|
@@ -83,6 +84,11 @@ var ProfileImage = function ProfileImage() {
|
|
|
83
84
|
var avatarDetails = {
|
|
84
85
|
imageUrl: field.value.imageUrl
|
|
85
86
|
};
|
|
87
|
+
useEffect(function () {
|
|
88
|
+
return function () {
|
|
89
|
+
if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);
|
|
90
|
+
};
|
|
91
|
+
}, []);
|
|
86
92
|
var onProfileImageChange = function onProfileImageChange(event) {
|
|
87
93
|
var imageFile = event.target.files[0];
|
|
88
94
|
var validationError = validateProfileImage(imageFile);
|
|
@@ -90,8 +96,10 @@ var ProfileImage = function ProfileImage() {
|
|
|
90
96
|
Toastr.error(validationError);
|
|
91
97
|
return validationError;
|
|
92
98
|
}
|
|
99
|
+
if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);
|
|
100
|
+
blobUrlRef.current = URL.createObjectURL(imageFile);
|
|
93
101
|
return setValue({
|
|
94
|
-
imageUrl:
|
|
102
|
+
imageUrl: blobUrlRef.current,
|
|
95
103
|
file: imageFile
|
|
96
104
|
});
|
|
97
105
|
};
|
|
@@ -100,7 +108,11 @@ var ProfileImage = function ProfileImage() {
|
|
|
100
108
|
return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();
|
|
101
109
|
};
|
|
102
110
|
var handleRemoveImage = function handleRemoveImage() {
|
|
103
|
-
|
|
111
|
+
if (blobUrlRef.current) {
|
|
112
|
+
URL.revokeObjectURL(blobUrlRef.current);
|
|
113
|
+
blobUrlRef.current = null;
|
|
114
|
+
}
|
|
115
|
+
setValue({
|
|
104
116
|
imageUrl: "",
|
|
105
117
|
file: "_destroy"
|
|
106
118
|
});
|
|
@@ -123,9 +135,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
123
135
|
className: "relative shrink-0",
|
|
124
136
|
children: [/*#__PURE__*/jsx("div", {
|
|
125
137
|
className: "absolute bottom-0 end-0 z-10",
|
|
126
|
-
children: /*#__PURE__*/jsx(Dropdown
|
|
127
|
-
// eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes
|
|
128
|
-
, {
|
|
138
|
+
children: /*#__PURE__*/jsx(Dropdown, {
|
|
129
139
|
buttonProps: {
|
|
130
140
|
className: "rounded-full"
|
|
131
141
|
},
|
|
@@ -152,7 +162,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
152
162
|
className: "flex flex-col items-center",
|
|
153
163
|
children: [/*#__PURE__*/jsx(Typography, {
|
|
154
164
|
className: "neeto-ui-text-gray-600 text-center",
|
|
155
|
-
style: "
|
|
165
|
+
style: "body2",
|
|
156
166
|
children: /*#__PURE__*/jsx(Trans, {
|
|
157
167
|
i18nKey: "neetoTeamMembers.profile.avatar.profilePictureUploadMessage",
|
|
158
168
|
values: {
|
|
@@ -161,7 +171,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
161
171
|
})
|
|
162
172
|
}), /*#__PURE__*/jsx("input", {
|
|
163
173
|
hidden: true,
|
|
164
|
-
accept: "
|
|
174
|
+
accept: ALLOWED_PROFILE_IMAGE_MIME_TYPES.join(","),
|
|
165
175
|
"data-testid": "profile-image-upload-file-field",
|
|
166
176
|
id: "uploadProfileImage",
|
|
167
177
|
name: "profile_image_path",
|
|
@@ -174,4 +184,4 @@ var ProfileImage = function ProfileImage() {
|
|
|
174
184
|
};
|
|
175
185
|
|
|
176
186
|
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-
|
|
187
|
+
//# sourceMappingURL=ProfileImage-D1kCXp4a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -104,6 +104,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
104
104
|
var _useTranslation = reactI18next.useTranslation(),
|
|
105
105
|
t = _useTranslation.t;
|
|
106
106
|
var fileInputRef = React.useRef(null);
|
|
107
|
+
var blobUrlRef = React.useRef(null);
|
|
107
108
|
var _useField = formik.useField("avatar"),
|
|
108
109
|
_useField2 = _slicedToArray__default.default(_useField, 3),
|
|
109
110
|
field = _useField2[0];
|
|
@@ -113,6 +114,11 @@ var ProfileImage = function ProfileImage() {
|
|
|
113
114
|
var avatarDetails = {
|
|
114
115
|
imageUrl: field.value.imageUrl
|
|
115
116
|
};
|
|
117
|
+
React.useEffect(function () {
|
|
118
|
+
return function () {
|
|
119
|
+
if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);
|
|
120
|
+
};
|
|
121
|
+
}, []);
|
|
116
122
|
var onProfileImageChange = function onProfileImageChange(event) {
|
|
117
123
|
var imageFile = event.target.files[0];
|
|
118
124
|
var validationError = validateProfileImage(imageFile);
|
|
@@ -120,8 +126,10 @@ var ProfileImage = function ProfileImage() {
|
|
|
120
126
|
Toastr__default.default.error(validationError);
|
|
121
127
|
return validationError;
|
|
122
128
|
}
|
|
129
|
+
if (blobUrlRef.current) URL.revokeObjectURL(blobUrlRef.current);
|
|
130
|
+
blobUrlRef.current = URL.createObjectURL(imageFile);
|
|
123
131
|
return setValue({
|
|
124
|
-
imageUrl:
|
|
132
|
+
imageUrl: blobUrlRef.current,
|
|
125
133
|
file: imageFile
|
|
126
134
|
});
|
|
127
135
|
};
|
|
@@ -130,7 +138,11 @@ var ProfileImage = function ProfileImage() {
|
|
|
130
138
|
return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();
|
|
131
139
|
};
|
|
132
140
|
var handleRemoveImage = function handleRemoveImage() {
|
|
133
|
-
|
|
141
|
+
if (blobUrlRef.current) {
|
|
142
|
+
URL.revokeObjectURL(blobUrlRef.current);
|
|
143
|
+
blobUrlRef.current = null;
|
|
144
|
+
}
|
|
145
|
+
setValue({
|
|
134
146
|
imageUrl: "",
|
|
135
147
|
file: "_destroy"
|
|
136
148
|
});
|
|
@@ -153,9 +165,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
153
165
|
className: "relative shrink-0",
|
|
154
166
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
155
167
|
className: "absolute bottom-0 end-0 z-10",
|
|
156
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Dropdown__default.default
|
|
157
|
-
// eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes
|
|
158
|
-
, {
|
|
168
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Dropdown__default.default, {
|
|
159
169
|
buttonProps: {
|
|
160
170
|
className: "rounded-full"
|
|
161
171
|
},
|
|
@@ -182,7 +192,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
182
192
|
className: "flex flex-col items-center",
|
|
183
193
|
children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default.default, {
|
|
184
194
|
className: "neeto-ui-text-gray-600 text-center",
|
|
185
|
-
style: "
|
|
195
|
+
style: "body2",
|
|
186
196
|
children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
187
197
|
i18nKey: "neetoTeamMembers.profile.avatar.profilePictureUploadMessage",
|
|
188
198
|
values: {
|
|
@@ -191,7 +201,7 @@ var ProfileImage = function ProfileImage() {
|
|
|
191
201
|
})
|
|
192
202
|
}), /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
193
203
|
hidden: true,
|
|
194
|
-
accept: "
|
|
204
|
+
accept: ALLOWED_PROFILE_IMAGE_MIME_TYPES.join(","),
|
|
195
205
|
"data-testid": "profile-image-upload-file-field",
|
|
196
206
|
id: "uploadProfileImage",
|
|
197
207
|
name: "profile_image_path",
|
|
@@ -208,4 +218,4 @@ exports.PROFILE_VALIDATION_SCHEMA = PROFILE_VALIDATION_SCHEMA;
|
|
|
208
218
|
exports.ProfileImage = ProfileImage;
|
|
209
219
|
exports.UPDATE_EMAIL_PATH = UPDATE_EMAIL_PATH;
|
|
210
220
|
exports.useCountries = useCountries;
|
|
211
|
-
//# sourceMappingURL=ProfileImage-
|
|
221
|
+
//# sourceMappingURL=ProfileImage-DSnU8nqZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
package/dist/TeamMembers.js
CHANGED
|
@@ -23,7 +23,7 @@ import { b as useFetchFilterOptions, c as useBulkUpdateMembers, d as useExportMe
|
|
|
23
23
|
import { TABLE_KEYS, EVENTS } from './constants.js';
|
|
24
24
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
25
25
|
import { buildFiltersFromURL } from '@bigbinary/neeto-filters-frontend/utils';
|
|
26
|
-
import { d as defaultNeetoFiltersColumns, D as DEFAULT_FILTER_VALUES, b as buildFilterColumns, a as DEFAULT_IS_OPEN_VALUES, c as DEFAULT_SELECTED_ROWS, h as handlePageChange, g as getFilteredRoles, e as getColumnData, f as generateNoDataContent, r as renderPaginationProps, i as DEFAULT_RADIX, M as ManageMember, j as renderUpdateAlert } from './index-
|
|
26
|
+
import { d as defaultNeetoFiltersColumns, D as DEFAULT_FILTER_VALUES, b as buildFilterColumns, a as DEFAULT_IS_OPEN_VALUES, c as DEFAULT_SELECTED_ROWS, h as handlePageChange, g as getFilteredRoles, e as getColumnData, f as generateNoDataContent, r as renderPaginationProps, i as DEFAULT_RADIX, M as ManageMember, j as renderUpdateAlert } from './index-BcPx2-z8.js';
|
|
27
27
|
import { n } from './inject-css-C2dztUxs.js';
|
|
28
28
|
import { noop, isNotEmpty, hyphenate, findBy } from '@bigbinary/neeto-cist';
|
|
29
29
|
import Button from '@bigbinary/neetoui/Button';
|
|
@@ -56,7 +56,7 @@ import '@bigbinary/neetoui/formik/ActionBlock';
|
|
|
56
56
|
import '@bigbinary/neetoui/formik/Form';
|
|
57
57
|
import './index-BISwUwuE.js';
|
|
58
58
|
import 'formik';
|
|
59
|
-
import './ProfileImage-
|
|
59
|
+
import './ProfileImage-D1kCXp4a.js';
|
|
60
60
|
import './useCountriesApi-DK00167T.js';
|
|
61
61
|
import '@bigbinary/neeto-icons/Edit';
|
|
62
62
|
import '@bigbinary/neetoui/Avatar';
|
package/dist/cjs/ManageMember.js
CHANGED
|
@@ -21,10 +21,10 @@ require('@bigbinary/neetoui/formik/Form');
|
|
|
21
21
|
require('ramda');
|
|
22
22
|
require('react-i18next');
|
|
23
23
|
require('../index-4wQ9Y7v9.js');
|
|
24
|
-
require('../ProfileImage-
|
|
24
|
+
require('../ProfileImage-DSnU8nqZ.js');
|
|
25
25
|
require('../useRolesApi-DuL4eCuF.js');
|
|
26
26
|
require('../useTeamsApi-ClWGPxNW.js');
|
|
27
|
-
var ManageMember = require('../index-
|
|
27
|
+
var ManageMember = require('../index-D8lgteE5.js');
|
|
28
28
|
require('../RolesRadioGroup-Y0ye4oSa.js');
|
|
29
29
|
require('react/jsx-runtime');
|
|
30
30
|
require('@babel/runtime/helpers/toConsumableArray');
|
package/dist/cjs/Profile.js
CHANGED
|
@@ -26,7 +26,7 @@ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
|
|
|
26
26
|
var ramda = require('ramda');
|
|
27
27
|
var constants = require('../constants-D_H6M1Pm.js');
|
|
28
28
|
var useProfileApi = require('../useProfileApi-BcuLCyms.js');
|
|
29
|
-
var ProfileImage = require('../ProfileImage-
|
|
29
|
+
var ProfileImage = require('../ProfileImage-DSnU8nqZ.js');
|
|
30
30
|
var jsxRuntime = require('react/jsx-runtime');
|
|
31
31
|
var withImmutableActions = require('@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions');
|
|
32
32
|
var zustand = require('zustand');
|
package/dist/cjs/TeamMembers.js
CHANGED
|
@@ -25,7 +25,7 @@ var useTeamsApi = require('../useTeamsApi-ClWGPxNW.js');
|
|
|
25
25
|
var constants$1 = require('./constants.js');
|
|
26
26
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
27
27
|
var utils = require('@bigbinary/neeto-filters-frontend/utils');
|
|
28
|
-
var ManageMember = require('../index-
|
|
28
|
+
var ManageMember = require('../index-D8lgteE5.js');
|
|
29
29
|
var injectCss = require('../inject-css-B6qYtOJe.js');
|
|
30
30
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
31
31
|
var Button = require('@bigbinary/neetoui/Button');
|
|
@@ -58,7 +58,7 @@ require('@bigbinary/neetoui/formik/ActionBlock');
|
|
|
58
58
|
require('@bigbinary/neetoui/formik/Form');
|
|
59
59
|
require('../index-4wQ9Y7v9.js');
|
|
60
60
|
require('formik');
|
|
61
|
-
require('../ProfileImage-
|
|
61
|
+
require('../ProfileImage-DSnU8nqZ.js');
|
|
62
62
|
require('../useCountriesApi-CjhrbnjK.js');
|
|
63
63
|
require('@bigbinary/neeto-icons/Edit');
|
|
64
64
|
require('@bigbinary/neetoui/Avatar');
|
package/dist/cjs/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var Profile = require('./Profile.js');
|
|
|
7
7
|
var Roles = require('./Roles.js');
|
|
8
8
|
var Permissions = require('../Permissions-B6RRMTKS.js');
|
|
9
9
|
var TeamMembers = require('./TeamMembers.js');
|
|
10
|
-
var ManageMember = require('../index-
|
|
10
|
+
var ManageMember = require('../index-D8lgteE5.js');
|
|
11
11
|
var RolesRadioGroup = require('../RolesRadioGroup-Y0ye4oSa.js');
|
|
12
12
|
var TeamsAndMembersDropdown = require('./TeamsAndMembersDropdown.js');
|
|
13
13
|
var TeamsDropdown = require('./TeamsDropdown.js');
|
|
@@ -77,7 +77,7 @@ require('@bigbinary/neetoui/Label');
|
|
|
77
77
|
require('@bigbinary/neetoui/Toastr');
|
|
78
78
|
require('../useProfileApi-BcuLCyms.js');
|
|
79
79
|
require('../useCountriesApi-CjhrbnjK.js');
|
|
80
|
-
require('../ProfileImage-
|
|
80
|
+
require('../ProfileImage-DSnU8nqZ.js');
|
|
81
81
|
require('@bigbinary/neeto-icons/Edit');
|
|
82
82
|
require('@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions');
|
|
83
83
|
require('zustand');
|
package/dist/cjs/v2/Groups.js
CHANGED
|
@@ -20,7 +20,7 @@ var yup = require('yup');
|
|
|
20
20
|
var formik = require('formik');
|
|
21
21
|
var MoreDropdown = require('@bigbinary/neeto-molecules/v2/MoreDropdown');
|
|
22
22
|
var jsxRuntime = require('react/jsx-runtime');
|
|
23
|
-
var ActionBlock = require('../../ActionBlock-
|
|
23
|
+
var ActionBlock = require('../../ActionBlock-DjypCjju.js');
|
|
24
24
|
var Select = require('../../Select-CshPoN2b.js');
|
|
25
25
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
26
26
|
var lucideReact = require('lucide-react');
|
|
@@ -16,9 +16,9 @@ require('react-i18next');
|
|
|
16
16
|
require('sonner');
|
|
17
17
|
require('../../useRolesApi-DuL4eCuF.js');
|
|
18
18
|
require('../../useTeamsApi-ClWGPxNW.js');
|
|
19
|
-
var v2_ManageMember = require('../../index-
|
|
19
|
+
var v2_ManageMember = require('../../index-CHvbZfMI.js');
|
|
20
20
|
require('../../RolesRadioGroup-cRZea-gs.js');
|
|
21
|
-
require('../../ActionBlock-
|
|
21
|
+
require('../../ActionBlock-DjypCjju.js');
|
|
22
22
|
require('../../Select-CshPoN2b.js');
|
|
23
23
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
24
24
|
require('formik');
|
|
@@ -18,7 +18,7 @@ var constants = require('@bigbinary/neeto-commons-frontend/v2/constants');
|
|
|
18
18
|
var yup = require('yup');
|
|
19
19
|
var jsxRuntime = require('react/jsx-runtime');
|
|
20
20
|
var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
|
|
21
|
-
var ActionBlock = require('../../ActionBlock-
|
|
21
|
+
var ActionBlock = require('../../ActionBlock-DjypCjju.js');
|
|
22
22
|
var Select = require('../../Select-CshPoN2b.js');
|
|
23
23
|
require('@babel/runtime/helpers/defineProperty');
|
|
24
24
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
package/dist/cjs/v2/Profile.js
CHANGED
|
@@ -24,7 +24,7 @@ var ProfileImage = require('../../ProfileImage-DIc2wajv.js');
|
|
|
24
24
|
var i18next = require('i18next');
|
|
25
25
|
var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
|
|
26
26
|
var yup = require('yup');
|
|
27
|
-
var ActionBlock = require('../../ActionBlock-
|
|
27
|
+
var ActionBlock = require('../../ActionBlock-DjypCjju.js');
|
|
28
28
|
var Select = require('../../Select-CshPoN2b.js');
|
|
29
29
|
require('formik');
|
|
30
30
|
var jsxRuntime = require('react/jsx-runtime');
|
package/dist/cjs/v2/Roles.js
CHANGED
|
@@ -20,7 +20,7 @@ var formik = require('@bigbinary/neeto-atoms/formik');
|
|
|
20
20
|
var constants$1 = require('../../constants-D_H6M1Pm.js');
|
|
21
21
|
var yup = require('yup');
|
|
22
22
|
var v2_Permissions = require('../../Permissions-BH2pNPMx.js');
|
|
23
|
-
var ActionBlock = require('../../ActionBlock-
|
|
23
|
+
var ActionBlock = require('../../ActionBlock-DjypCjju.js');
|
|
24
24
|
var Select = require('../../Select-CshPoN2b.js');
|
|
25
25
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
26
26
|
require('formik');
|
|
@@ -25,7 +25,7 @@ var i18next = require('i18next');
|
|
|
25
25
|
var jsxRuntime = require('react/jsx-runtime');
|
|
26
26
|
var constants$2 = require('../../constants-il7hAfM-.js');
|
|
27
27
|
var NeetoHeader = require('@bigbinary/neeto-molecules/v2/Header');
|
|
28
|
-
var v2_ManageMember = require('../../index-
|
|
28
|
+
var v2_ManageMember = require('../../index-CHvbZfMI.js');
|
|
29
29
|
var withReactQuery = require('../../withReactQuery-DvSkXhEx.js');
|
|
30
30
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
31
31
|
require('@tanstack/react-query');
|
|
@@ -58,7 +58,7 @@ require('@bigbinary/neeto-molecules/v2/PhoneNumber');
|
|
|
58
58
|
require('../../ProfileImage-DIc2wajv.js');
|
|
59
59
|
require('../../inject-css-B6qYtOJe.js');
|
|
60
60
|
require('../../useCountriesApi-CjhrbnjK.js');
|
|
61
|
-
require('../../ActionBlock-
|
|
61
|
+
require('../../ActionBlock-DjypCjju.js');
|
|
62
62
|
require('../../index-BOQKf6as.js');
|
|
63
63
|
require('@bigbinary/neeto-atoms/primitives');
|
|
64
64
|
require('@bigbinary/neeto-molecules/v2/MoreDropdown');
|
|
@@ -162,7 +162,8 @@ var RolesDropdown = function RolesDropdown(_ref) {
|
|
|
162
162
|
},
|
|
163
163
|
label: t("neetoTeamMembers.buttons.changeRole"),
|
|
164
164
|
triggerProps: {
|
|
165
|
-
disabled: !isUpdatingAllowed
|
|
165
|
+
disabled: !isUpdatingAllowed,
|
|
166
|
+
"data-testid": "take-action-dropdown-change-role-button"
|
|
166
167
|
},
|
|
167
168
|
children: [isSearchable && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
168
169
|
className: "px-3 py-2",
|