@bigbinary/neeto-team-members-frontend 5.0.28 → 5.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/javascript/src/translations/ar.json +6 -4
- package/app/javascript/src/translations/bg.json +6 -4
- package/app/javascript/src/translations/ca.json +8 -6
- package/app/javascript/src/translations/cs.json +4 -2
- package/app/javascript/src/translations/da.json +4 -2
- package/app/javascript/src/translations/de.json +4 -2
- package/app/javascript/src/translations/en.json +8 -6
- package/app/javascript/src/translations/es-MX.json +8 -6
- package/app/javascript/src/translations/es.json +8 -6
- package/app/javascript/src/translations/et.json +6 -4
- package/app/javascript/src/translations/fi.json +4 -2
- package/app/javascript/src/translations/fil.json +9 -7
- package/app/javascript/src/translations/fr.json +5 -3
- package/app/javascript/src/translations/he.json +5 -3
- package/app/javascript/src/translations/hi.json +7 -5
- package/app/javascript/src/translations/hr.json +4 -2
- package/app/javascript/src/translations/hu.json +4 -2
- package/app/javascript/src/translations/id.json +10 -8
- package/app/javascript/src/translations/it.json +8 -6
- package/app/javascript/src/translations/ja.json +6 -4
- package/app/javascript/src/translations/ko.json +4 -2
- package/app/javascript/src/translations/nl.json +7 -5
- package/app/javascript/src/translations/pl.json +5 -3
- package/app/javascript/src/translations/pt-BR.json +10 -8
- package/app/javascript/src/translations/pt.json +10 -8
- package/app/javascript/src/translations/ro.json +9 -7
- package/app/javascript/src/translations/ru.json +5 -3
- package/app/javascript/src/translations/sk.json +6 -4
- package/app/javascript/src/translations/sl.json +7 -5
- package/app/javascript/src/translations/sv.json +4 -2
- package/app/javascript/src/translations/th.json +5 -3
- package/app/javascript/src/translations/tr.json +10 -8
- package/app/javascript/src/translations/uk.json +7 -5
- package/app/javascript/src/translations/vi.json +7 -5
- package/app/javascript/src/translations/zh-CN.json +6 -4
- package/app/javascript/src/translations/zh-TW.json +5 -3
- package/dist/.ready +1 -1
- package/dist/ActionBlock-C9Iy0jGZ.js +53 -0
- package/dist/ActionBlock-C9Iy0jGZ.js.map +1 -0
- package/dist/ActionBlock-jgw1N-As.js +46 -0
- package/dist/ActionBlock-jgw1N-As.js.map +1 -0
- package/dist/Groups.js +1 -0
- package/dist/Groups.js.map +1 -1
- package/dist/InviteLinkError-AphtWLhe.js +63 -0
- package/dist/InviteLinkError-AphtWLhe.js.map +1 -0
- package/dist/InviteLinkError-C6OLGrD0.js +41 -0
- package/dist/InviteLinkError-C6OLGrD0.js.map +1 -0
- package/dist/ManageMember.js +3 -2
- package/dist/ManageMember.js.map +1 -1
- package/dist/MembersInvite.js +1 -38
- package/dist/MembersInvite.js.map +1 -1
- package/dist/Permissions-Bd6kLoPt.js +233 -0
- package/dist/Permissions-Bd6kLoPt.js.map +1 -0
- package/dist/Permissions-Bn862irP.js +244 -0
- package/dist/Permissions-Bn862irP.js.map +1 -0
- package/dist/Profile.js +125 -106
- package/dist/Profile.js.map +1 -1
- package/dist/{ProfileImage-Cpprgo-V.js → ProfileImage-QeSzsfzl.js} +1 -7
- package/dist/{ProfileImage-B_gfcE6b.js.map → ProfileImage-QeSzsfzl.js.map} +1 -1
- package/dist/{ProfileImage-B_gfcE6b.js → ProfileImage-Ypf3HreX.js} +2 -7
- package/dist/{ProfileImage-Cpprgo-V.js.map → ProfileImage-Ypf3HreX.js.map} +1 -1
- package/dist/Roles.js +3 -1398
- package/dist/Roles.js.map +1 -1
- package/dist/RolesRadioGroup-fBmS68cW.js +393 -0
- package/dist/RolesRadioGroup-fBmS68cW.js.map +1 -0
- package/dist/RolesRadioGroup-tSNC-Wtu.js +352 -0
- package/dist/RolesRadioGroup-tSNC-Wtu.js.map +1 -0
- package/dist/Select-CshPoN2b.js +119 -0
- package/dist/Select-CshPoN2b.js.map +1 -0
- package/dist/Select-DZ56UG-l.js +109 -0
- package/dist/Select-DZ56UG-l.js.map +1 -0
- package/dist/TeamMembers.js +3 -2
- package/dist/TeamMembers.js.map +1 -1
- package/dist/cjs/Groups.js +1 -0
- package/dist/cjs/Groups.js.map +1 -1
- package/dist/cjs/ManageMember.js +3 -2
- package/dist/cjs/ManageMember.js.map +1 -1
- package/dist/cjs/MembersInvite.js +2 -39
- package/dist/cjs/MembersInvite.js.map +1 -1
- package/dist/cjs/Profile.js +125 -104
- package/dist/cjs/Profile.js.map +1 -1
- package/dist/cjs/Roles.js +6 -1402
- package/dist/cjs/Roles.js.map +1 -1
- package/dist/cjs/TeamMembers.js +3 -2
- package/dist/cjs/TeamMembers.js.map +1 -1
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils.js +3 -512
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/v2/Groups.js +781 -0
- package/dist/cjs/v2/Groups.js.map +1 -0
- package/dist/cjs/v2/ManageMember.js +49 -0
- package/dist/cjs/v2/ManageMember.js.map +1 -0
- package/dist/cjs/v2/MembersDropdown.js +200 -0
- package/dist/cjs/v2/MembersDropdown.js.map +1 -0
- package/dist/cjs/v2/MembersInvite.js +270 -0
- package/dist/cjs/v2/MembersInvite.js.map +1 -0
- package/dist/cjs/v2/Permissions.js +19 -0
- package/dist/cjs/v2/Permissions.js.map +1 -0
- package/dist/cjs/v2/Profile.js +686 -0
- package/dist/cjs/v2/Profile.js.map +1 -0
- package/dist/cjs/v2/Roles.js +1258 -0
- package/dist/cjs/v2/Roles.js.map +1 -0
- package/dist/cjs/v2/RolesRadioGroup.js +26 -0
- package/dist/cjs/v2/RolesRadioGroup.js.map +1 -0
- package/dist/cjs/v2/TeamMembers.js +949 -0
- package/dist/cjs/v2/TeamMembers.js.map +1 -0
- package/dist/cjs/v2/TeamsAndMembersDropdown.js +438 -0
- package/dist/cjs/v2/TeamsAndMembersDropdown.js.map +1 -0
- package/dist/cjs/v2/TeamsDropdown.js +112 -0
- package/dist/cjs/v2/TeamsDropdown.js.map +1 -0
- package/dist/cjs/v2/constants.js +28 -0
- package/dist/cjs/v2/constants.js.map +1 -0
- package/dist/cjs/v2/hooks.js +33 -0
- package/dist/cjs/v2/hooks.js.map +1 -0
- package/dist/cjs/v2/utils.js +34 -0
- package/dist/cjs/v2/utils.js.map +1 -0
- package/dist/constants-B1L6arSR.js +49 -0
- package/dist/constants-B1L6arSR.js.map +1 -0
- package/dist/constants-CMNbKvoF.js +61 -0
- package/dist/constants-CMNbKvoF.js.map +1 -0
- package/dist/index-BkEJugj1.js +184 -0
- package/dist/index-BkEJugj1.js.map +1 -0
- package/dist/index-C6ph58Vg.js +169 -0
- package/dist/index-C6ph58Vg.js.map +1 -0
- package/dist/{index-C26Vdbk5.js → index-DFFRcH_S.js} +2 -2
- package/dist/{index-C26Vdbk5.js.map → index-DFFRcH_S.js.map} +1 -1
- package/dist/{index-CeAVMlhg.js → index-DTONHIze.js} +2 -2
- package/dist/{index-CeAVMlhg.js.map → index-DTONHIze.js.map} +1 -1
- package/dist/index-DeYRFiJy.js +119 -0
- package/dist/index-DeYRFiJy.js.map +1 -0
- package/dist/index-DgxgaCRt.js +1317 -0
- package/dist/index-DgxgaCRt.js.map +1 -0
- package/dist/index-DqqXniGT.js +126 -0
- package/dist/index-DqqXniGT.js.map +1 -0
- package/dist/index-Dus0cbgo.js +1407 -0
- package/dist/index-Dus0cbgo.js.map +1 -0
- package/dist/index-aJIUa1Bd.js +1342 -0
- package/dist/index-aJIUa1Bd.js.map +1 -0
- package/dist/index-ureO6U2w.js +1401 -0
- package/dist/index-ureO6U2w.js.map +1 -0
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/pluralize-BoSEafiC.js +514 -0
- package/dist/pluralize-BoSEafiC.js.map +1 -0
- package/dist/pluralize-CFlSRsRn.js +516 -0
- package/dist/pluralize-CFlSRsRn.js.map +1 -0
- package/dist/queryClient-B-JFya8X.js +16 -0
- package/dist/queryClient-B-JFya8X.js.map +1 -0
- package/dist/queryClient-BncpekSV.js +14 -0
- package/dist/queryClient-BncpekSV.js.map +1 -0
- package/dist/useCountries-CQdvJz0R.js +249 -0
- package/dist/useCountries-CQdvJz0R.js.map +1 -0
- package/dist/useCountries-DePOPtue.js +235 -0
- package/dist/useCountries-DePOPtue.js.map +1 -0
- package/dist/useTeamsApi-CWp4G7JZ.js +179 -0
- package/dist/useTeamsApi-CWp4G7JZ.js.map +1 -0
- package/dist/useTeamsApi-Ch5sHR2_.js +197 -0
- package/dist/useTeamsApi-Ch5sHR2_.js.map +1 -0
- package/dist/utils.js +2 -511
- package/dist/utils.js.map +1 -1
- package/dist/v2/Groups.js +749 -0
- package/dist/v2/Groups.js.map +1 -0
- package/dist/v2/ManageMember.js +43 -0
- package/dist/v2/ManageMember.js.map +1 -0
- package/dist/v2/MembersDropdown.js +193 -0
- package/dist/v2/MembersDropdown.js.map +1 -0
- package/dist/v2/MembersInvite.js +242 -0
- package/dist/v2/MembersInvite.js.map +1 -0
- package/dist/v2/Permissions.js +13 -0
- package/dist/v2/Permissions.js.map +1 -0
- package/dist/v2/Profile.js +656 -0
- package/dist/v2/Profile.js.map +1 -0
- package/dist/v2/Roles.js +1242 -0
- package/dist/v2/Roles.js.map +1 -0
- package/dist/v2/RolesRadioGroup.js +20 -0
- package/dist/v2/RolesRadioGroup.js.map +1 -0
- package/dist/v2/TeamMembers.js +937 -0
- package/dist/v2/TeamMembers.js.map +1 -0
- package/dist/v2/TeamsAndMembersDropdown.js +430 -0
- package/dist/v2/TeamsAndMembersDropdown.js.map +1 -0
- package/dist/v2/TeamsDropdown.js +106 -0
- package/dist/v2/TeamsDropdown.js.map +1 -0
- package/dist/v2/constants.js +21 -0
- package/dist/v2/constants.js.map +1 -0
- package/dist/v2/hooks.js +29 -0
- package/dist/v2/hooks.js.map +1 -0
- package/dist/v2/utils.js +30 -0
- package/dist/v2/utils.js.map +1 -0
- package/dist/withReactQuery-CSuiy5RK.js +20 -0
- package/dist/withReactQuery-CSuiy5RK.js.map +1 -0
- package/dist/withReactQuery-DvSkXhEx.js +26 -0
- package/dist/withReactQuery-DvSkXhEx.js.map +1 -0
- package/package.json +31 -17
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var neetoAtoms = require('@bigbinary/neeto-atoms');
|
|
6
|
+
var formik = require('formik');
|
|
7
|
+
var lucideReact = require('lucide-react');
|
|
8
|
+
var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
|
|
9
|
+
var reactI18next = require('react-i18next');
|
|
10
|
+
var sonner = require('sonner');
|
|
11
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
12
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
13
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
14
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
15
|
+
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
16
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
17
|
+
var reactQuery = require('@tanstack/react-query');
|
|
18
|
+
var constants$1 = require('@bigbinary/neeto-commons-frontend/constants');
|
|
19
|
+
var axios = require('axios');
|
|
20
|
+
var constants = require('./constants-CMNbKvoF.js');
|
|
21
|
+
|
|
22
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
23
|
+
|
|
24
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefault(_slicedToArray);
|
|
25
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefault(_defineProperty);
|
|
26
|
+
var _asyncToGenerator__default = /*#__PURE__*/_interopDefault(_asyncToGenerator);
|
|
27
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefault(_objectWithoutProperties);
|
|
28
|
+
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
|
|
29
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
30
|
+
|
|
31
|
+
var ProfileImage = function ProfileImage() {
|
|
32
|
+
var _globalProps$user;
|
|
33
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
34
|
+
t = _useTranslation.t;
|
|
35
|
+
var _useField = formik.useField("avatar"),
|
|
36
|
+
_useField2 = _slicedToArray__default.default(_useField, 3),
|
|
37
|
+
field = _useField2[0],
|
|
38
|
+
helpers = _useField2[2];
|
|
39
|
+
var fileInputRef = React.useRef(null);
|
|
40
|
+
var _ref = field.value || {},
|
|
41
|
+
imageUrl = _ref.imageUrl,
|
|
42
|
+
file = _ref.file;
|
|
43
|
+
var displayUrl = file && file !== "_destroy" ? URL.createObjectURL(file) : imageUrl;
|
|
44
|
+
var handleFileSelect = function handleFileSelect(event) {
|
|
45
|
+
var selectedFile = event.target.files[0];
|
|
46
|
+
if (!selectedFile) return;
|
|
47
|
+
var maxSize = 5 * 1024 * 1024;
|
|
48
|
+
if (selectedFile.size > maxSize) {
|
|
49
|
+
sonner.toast.error(t("neetoTeamMembers.common.fileSizeTooLarge", "File size must be less than 5MB"));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
helpers.setValue({
|
|
53
|
+
imageUrl: imageUrl,
|
|
54
|
+
file: selectedFile
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
var handleRemove = function handleRemove() {
|
|
58
|
+
helpers.setValue({
|
|
59
|
+
imageUrl: "",
|
|
60
|
+
file: "_destroy"
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
64
|
+
className: "flex items-center gap-4",
|
|
65
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
66
|
+
className: "relative",
|
|
67
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Avatar, {
|
|
68
|
+
size: "xl",
|
|
69
|
+
user: {
|
|
70
|
+
name: (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.name,
|
|
71
|
+
imageUrl: displayUrl
|
|
72
|
+
}
|
|
73
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu, {
|
|
74
|
+
customTarget: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
75
|
+
className: "absolute -bottom-1 -right-1 size-6 neeto-ui-rounded-full",
|
|
76
|
+
size: "icon-xs",
|
|
77
|
+
variant: "outline",
|
|
78
|
+
children: /*#__PURE__*/jsxRuntime.jsx(lucideReact.Pencil, {
|
|
79
|
+
className: "size-3"
|
|
80
|
+
})
|
|
81
|
+
}),
|
|
82
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.DropdownMenu.Menu, {
|
|
83
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
|
|
84
|
+
children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem.Button, {
|
|
85
|
+
"data-testid": "profile-image-upload-button",
|
|
86
|
+
onClick: function onClick() {
|
|
87
|
+
var _fileInputRef$current;
|
|
88
|
+
return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();
|
|
89
|
+
},
|
|
90
|
+
children: t("neetoTeamMembers.common.upload", "Upload")
|
|
91
|
+
})
|
|
92
|
+
}), displayUrl && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
|
|
93
|
+
children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem.Button, {
|
|
94
|
+
"data-testid": "profile-image-remove-button",
|
|
95
|
+
onClick: handleRemove,
|
|
96
|
+
children: t("neetoTeamMembers.common.remove")
|
|
97
|
+
})
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
})]
|
|
101
|
+
}), /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
102
|
+
accept: "image/*",
|
|
103
|
+
className: "hidden",
|
|
104
|
+
"data-testid": "profile-image-upload-file-field",
|
|
105
|
+
ref: fileInputRef,
|
|
106
|
+
type: "file",
|
|
107
|
+
onChange: handleFileSelect
|
|
108
|
+
})]
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
var _excluded = ["value", "className", "size", "variant", "children"];
|
|
113
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
114
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
115
|
+
var CopyToClipboardButton = function CopyToClipboardButton(_ref) {
|
|
116
|
+
var value = _ref.value,
|
|
117
|
+
className = _ref.className,
|
|
118
|
+
_ref$size = _ref.size,
|
|
119
|
+
size = _ref$size === void 0 ? "sm" : _ref$size,
|
|
120
|
+
_ref$variant = _ref.variant,
|
|
121
|
+
variant = _ref$variant === void 0 ? "outline" : _ref$variant,
|
|
122
|
+
children = _ref.children,
|
|
123
|
+
rest = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
124
|
+
var _useState = React.useState(false),
|
|
125
|
+
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
126
|
+
copied = _useState2[0],
|
|
127
|
+
setCopied = _useState2[1];
|
|
128
|
+
var handleCopy = /*#__PURE__*/function () {
|
|
129
|
+
var _ref2 = _asyncToGenerator__default.default(/*#__PURE__*/_regeneratorRuntime__default.default.mark(function _callee() {
|
|
130
|
+
var textArea;
|
|
131
|
+
return _regeneratorRuntime__default.default.wrap(function _callee$(_context) {
|
|
132
|
+
while (1) switch (_context.prev = _context.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
_context.prev = 0;
|
|
135
|
+
_context.next = 3;
|
|
136
|
+
return navigator.clipboard.writeText(value);
|
|
137
|
+
case 3:
|
|
138
|
+
setCopied(true);
|
|
139
|
+
setTimeout(function () {
|
|
140
|
+
return setCopied(false);
|
|
141
|
+
}, 2000);
|
|
142
|
+
_context.next = 17;
|
|
143
|
+
break;
|
|
144
|
+
case 7:
|
|
145
|
+
_context.prev = 7;
|
|
146
|
+
_context.t0 = _context["catch"](0);
|
|
147
|
+
// Fallback for older browsers
|
|
148
|
+
textArea = document.createElement("textarea");
|
|
149
|
+
textArea.value = value;
|
|
150
|
+
document.body.appendChild(textArea);
|
|
151
|
+
textArea.select();
|
|
152
|
+
document.execCommand("copy");
|
|
153
|
+
document.body.removeChild(textArea);
|
|
154
|
+
setCopied(true);
|
|
155
|
+
setTimeout(function () {
|
|
156
|
+
return setCopied(false);
|
|
157
|
+
}, 2000);
|
|
158
|
+
case 17:
|
|
159
|
+
case "end":
|
|
160
|
+
return _context.stop();
|
|
161
|
+
}
|
|
162
|
+
}, _callee, null, [[0, 7]]);
|
|
163
|
+
}));
|
|
164
|
+
return function handleCopy() {
|
|
165
|
+
return _ref2.apply(this, arguments);
|
|
166
|
+
};
|
|
167
|
+
}();
|
|
168
|
+
return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Button, _objectSpread$1(_objectSpread$1({
|
|
169
|
+
size: size,
|
|
170
|
+
variant: variant,
|
|
171
|
+
className: neetoAtoms.cn("gap-1", className),
|
|
172
|
+
onClick: handleCopy
|
|
173
|
+
}, rest), {}, {
|
|
174
|
+
children: [copied ? /*#__PURE__*/jsxRuntime.jsx(lucideReact.Check, {
|
|
175
|
+
className: "size-3.5"
|
|
176
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(lucideReact.Copy, {
|
|
177
|
+
className: "size-3.5"
|
|
178
|
+
}), children]
|
|
179
|
+
}));
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis
|
|
183
|
+
var fetchCountries = function fetchCountries() {
|
|
184
|
+
return axios__default.default.get("".concat(constants.BASE_URL, "/profile/countries"));
|
|
185
|
+
};
|
|
186
|
+
var fetchUserDetails = function fetchUserDetails() {
|
|
187
|
+
return axios__default.default.get("".concat(constants.BASE_URL, "/profile/user"));
|
|
188
|
+
};
|
|
189
|
+
var updateUser = function updateUser(_ref) {
|
|
190
|
+
var id = _ref.id,
|
|
191
|
+
payload = _ref.payload;
|
|
192
|
+
return axios__default.default.put("".concat(constants.BASE_URL, "/profile/user/").concat(id), payload);
|
|
193
|
+
};
|
|
194
|
+
var profileApi = {
|
|
195
|
+
fetchCountries: fetchCountries,
|
|
196
|
+
fetchUserDetails: fetchUserDetails,
|
|
197
|
+
updateUser: updateUser
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
201
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
202
|
+
var useFetchCountries = function useFetchCountries(options) {
|
|
203
|
+
return reactQuery.useQuery(_objectSpread({
|
|
204
|
+
queryKey: [constants.QUERY_KEYS.COUNTRIES_LIST],
|
|
205
|
+
queryFn: profileApi.fetchCountries,
|
|
206
|
+
staleTime: constants$1.DEFAULT_STALE_TIME
|
|
207
|
+
}, options));
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
var useCountries = function useCountries() {
|
|
211
|
+
var _useState = React.useState(null),
|
|
212
|
+
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
213
|
+
selectedCountryOption = _useState2[0],
|
|
214
|
+
setSelectedCountryOption = _useState2[1];
|
|
215
|
+
var _useFetchCountries = useFetchCountries(),
|
|
216
|
+
_useFetchCountries$da = _useFetchCountries.data,
|
|
217
|
+
_useFetchCountries$da2 = _useFetchCountries$da === void 0 ? {} : _useFetchCountries$da,
|
|
218
|
+
_useFetchCountries$da3 = _useFetchCountries$da2.countries,
|
|
219
|
+
countries = _useFetchCountries$da3 === void 0 ? [] : _useFetchCountries$da3,
|
|
220
|
+
isLoading = _useFetchCountries.isLoading;
|
|
221
|
+
var formatCountryOption = function formatCountryOption(country) {
|
|
222
|
+
return {
|
|
223
|
+
label: country === null || country === void 0 ? void 0 : country.name,
|
|
224
|
+
value: country === null || country === void 0 ? void 0 : country.id
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
var countryDropdownOptions = React.useMemo(function () {
|
|
228
|
+
return countries.map(formatCountryOption);
|
|
229
|
+
}, [countries]);
|
|
230
|
+
var handleCountryChange = React.useCallback(function (countryOption) {
|
|
231
|
+
setSelectedCountryOption(countryOption);
|
|
232
|
+
var dependentFields = {};
|
|
233
|
+
var selectedCountry = neetoCist.findById(countryOption.value, countries);
|
|
234
|
+
dependentFields.dateFormat = selectedCountry.dateFormat;
|
|
235
|
+
return dependentFields;
|
|
236
|
+
}, [countries]);
|
|
237
|
+
return {
|
|
238
|
+
countryDropdownOptions: countryDropdownOptions,
|
|
239
|
+
selectedCountryOption: selectedCountryOption,
|
|
240
|
+
isFetchingCountriesList: isLoading,
|
|
241
|
+
handleCountryChange: handleCountryChange
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
exports.CopyToClipboardButton = CopyToClipboardButton;
|
|
246
|
+
exports.ProfileImage = ProfileImage;
|
|
247
|
+
exports.profileApi = profileApi;
|
|
248
|
+
exports.useCountries = useCountries;
|
|
249
|
+
//# sourceMappingURL=useCountries-CQdvJz0R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCountries-CQdvJz0R.js","sources":["../app/javascript/src/components/v2/Profile/ProfileImage.jsx","../app/javascript/src/components/v2/common/CopyToClipboardButton.jsx","../app/javascript/src/components/v2/apis/profile.js","../app/javascript/src/components/v2/hooks/profile/useCountriesApi.js","../app/javascript/src/components/v2/Profile/hooks/useCountries.js"],"sourcesContent":["/* 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/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 size-6 neeto-ui-rounded-full\"\n size=\"icon-xs\"\n variant=\"outline\"\n >\n <Pencil className=\"size-3\" />\n </Button>\n }\n >\n <DropdownMenu.Menu>\n <DropdownMenu.MenuItem>\n <DropdownMenu.MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={() => fileInputRef.current?.click()}\n >\n {t(\"neetoTeamMembers.common.upload\", \"Upload\")}\n </DropdownMenu.MenuItem.Button>\n </DropdownMenu.MenuItem>\n {displayUrl && (\n <DropdownMenu.MenuItem>\n <DropdownMenu.MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemove}\n >\n {t(\"neetoTeamMembers.common.remove\")}\n </DropdownMenu.MenuItem.Button>\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","import { useState } from \"react\";\n\nimport { Button, cn } from \"@bigbinary/neeto-atoms\";\nimport { Check, Copy } from \"lucide-react\";\n\nconst CopyToClipboardButton = ({\n value,\n className,\n size = \"sm\",\n variant = \"outline\",\n children,\n ...rest\n}) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n // Fallback for older browsers\n const textArea = document.createElement(\"textarea\");\n textArea.value = value;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n };\n\n return (\n <Button\n {...{ size, variant }}\n className={cn(\"gap-1\", className)}\n onClick={handleCopy}\n {...rest}\n >\n {copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {children}\n </Button>\n );\n};\n\nexport default CopyToClipboardButton;\n","// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis\nimport axios from \"axios\";\n\nimport { BASE_URL } from \"v2/common/constants\";\n\nconst fetchCountries = () => axios.get(`${BASE_URL}/profile/countries`);\n\nconst fetchUserDetails = () => axios.get(`${BASE_URL}/profile/user`);\n\nconst updateUser = ({ id, payload }) =>\n axios.put(`${BASE_URL}/profile/user/${id}`, payload);\n\nconst profileApi = { fetchCountries, fetchUserDetails, updateUser };\n\nexport default profileApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport { DEFAULT_STALE_TIME } from \"neetocommons/constants\";\n\nimport profileApi from \"v2/apis/profile\";\nimport { QUERY_KEYS } from \"v2/common/constants\";\n\nconst useFetchCountries = options =>\n useQuery({\n queryKey: [QUERY_KEYS.COUNTRIES_LIST],\n queryFn: profileApi.fetchCountries,\n staleTime: DEFAULT_STALE_TIME,\n ...options,\n });\n\nexport { useFetchCountries };\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"v2/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"],"names":["ProfileImage","_globalProps$user","_useTranslation","useTranslation","t","_useField","useField","_useField2","_slicedToArray","field","helpers","fileInputRef","useRef","_ref","value","imageUrl","file","displayUrl","URL","createObjectURL","handleFileSelect","event","selectedFile","target","files","maxSize","size","toast","error","setValue","handleRemove","_jsxs","className","children","_jsx","Avatar","user","name","globalProps","DropdownMenu","customTarget","Button","variant","Pencil","Menu","MenuItem","onClick","_fileInputRef$current","current","click","accept","ref","type","onChange","CopyToClipboardButton","_ref$size","_ref$variant","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","copied","setCopied","handleCopy","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","textArea","wrap","_callee$","_context","prev","next","navigator","clipboard","writeText","setTimeout","t0","document","createElement","body","appendChild","select","execCommand","removeChild","stop","apply","arguments","_objectSpread","cn","Check","Copy","fetchCountries","axios","get","concat","BASE_URL","fetchUserDetails","updateUser","id","payload","put","profileApi","useFetchCountries","options","useQuery","queryKey","QUERY_KEYS","COUNTRIES_LIST","queryFn","staleTime","DEFAULT_STALE_TIME","useCountries","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","dependentFields","selectedCountry","findById","dateFormat","isFetchingCountriesList"],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
import { useRef, useState, useMemo, useCallback } from 'react';
|
|
3
|
+
import { Avatar, DropdownMenu, Button, cn } from '@bigbinary/neeto-atoms';
|
|
4
|
+
import { useField } from 'formik';
|
|
5
|
+
import { Pencil, Check, Copy } from 'lucide-react';
|
|
6
|
+
import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { toast } from 'sonner';
|
|
9
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
11
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
12
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
13
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
14
|
+
import { findById } from '@bigbinary/neeto-cist';
|
|
15
|
+
import { useQuery } from '@tanstack/react-query';
|
|
16
|
+
import { DEFAULT_STALE_TIME } from '@bigbinary/neeto-commons-frontend/constants';
|
|
17
|
+
import axios from 'axios';
|
|
18
|
+
import { B as BASE_URL, Q as QUERY_KEYS } from './constants-B1L6arSR.js';
|
|
19
|
+
|
|
20
|
+
var ProfileImage = function ProfileImage() {
|
|
21
|
+
var _globalProps$user;
|
|
22
|
+
var _useTranslation = useTranslation(),
|
|
23
|
+
t = _useTranslation.t;
|
|
24
|
+
var _useField = useField("avatar"),
|
|
25
|
+
_useField2 = _slicedToArray(_useField, 3),
|
|
26
|
+
field = _useField2[0],
|
|
27
|
+
helpers = _useField2[2];
|
|
28
|
+
var fileInputRef = useRef(null);
|
|
29
|
+
var _ref = field.value || {},
|
|
30
|
+
imageUrl = _ref.imageUrl,
|
|
31
|
+
file = _ref.file;
|
|
32
|
+
var displayUrl = file && file !== "_destroy" ? URL.createObjectURL(file) : imageUrl;
|
|
33
|
+
var handleFileSelect = function handleFileSelect(event) {
|
|
34
|
+
var selectedFile = event.target.files[0];
|
|
35
|
+
if (!selectedFile) return;
|
|
36
|
+
var maxSize = 5 * 1024 * 1024;
|
|
37
|
+
if (selectedFile.size > maxSize) {
|
|
38
|
+
toast.error(t("neetoTeamMembers.common.fileSizeTooLarge", "File size must be less than 5MB"));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
helpers.setValue({
|
|
42
|
+
imageUrl: imageUrl,
|
|
43
|
+
file: selectedFile
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var handleRemove = function handleRemove() {
|
|
47
|
+
helpers.setValue({
|
|
48
|
+
imageUrl: "",
|
|
49
|
+
file: "_destroy"
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
return /*#__PURE__*/jsxs("div", {
|
|
53
|
+
className: "flex items-center gap-4",
|
|
54
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
55
|
+
className: "relative",
|
|
56
|
+
children: [/*#__PURE__*/jsx(Avatar, {
|
|
57
|
+
size: "xl",
|
|
58
|
+
user: {
|
|
59
|
+
name: (_globalProps$user = globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.name,
|
|
60
|
+
imageUrl: displayUrl
|
|
61
|
+
}
|
|
62
|
+
}), /*#__PURE__*/jsx(DropdownMenu, {
|
|
63
|
+
customTarget: /*#__PURE__*/jsx(Button, {
|
|
64
|
+
className: "absolute -bottom-1 -right-1 size-6 neeto-ui-rounded-full",
|
|
65
|
+
size: "icon-xs",
|
|
66
|
+
variant: "outline",
|
|
67
|
+
children: /*#__PURE__*/jsx(Pencil, {
|
|
68
|
+
className: "size-3"
|
|
69
|
+
})
|
|
70
|
+
}),
|
|
71
|
+
children: /*#__PURE__*/jsxs(DropdownMenu.Menu, {
|
|
72
|
+
children: [/*#__PURE__*/jsx(DropdownMenu.MenuItem, {
|
|
73
|
+
children: /*#__PURE__*/jsx(DropdownMenu.MenuItem.Button, {
|
|
74
|
+
"data-testid": "profile-image-upload-button",
|
|
75
|
+
onClick: function onClick() {
|
|
76
|
+
var _fileInputRef$current;
|
|
77
|
+
return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();
|
|
78
|
+
},
|
|
79
|
+
children: t("neetoTeamMembers.common.upload", "Upload")
|
|
80
|
+
})
|
|
81
|
+
}), displayUrl && /*#__PURE__*/jsx(DropdownMenu.MenuItem, {
|
|
82
|
+
children: /*#__PURE__*/jsx(DropdownMenu.MenuItem.Button, {
|
|
83
|
+
"data-testid": "profile-image-remove-button",
|
|
84
|
+
onClick: handleRemove,
|
|
85
|
+
children: t("neetoTeamMembers.common.remove")
|
|
86
|
+
})
|
|
87
|
+
})]
|
|
88
|
+
})
|
|
89
|
+
})]
|
|
90
|
+
}), /*#__PURE__*/jsx("input", {
|
|
91
|
+
accept: "image/*",
|
|
92
|
+
className: "hidden",
|
|
93
|
+
"data-testid": "profile-image-upload-file-field",
|
|
94
|
+
ref: fileInputRef,
|
|
95
|
+
type: "file",
|
|
96
|
+
onChange: handleFileSelect
|
|
97
|
+
})]
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var _excluded = ["value", "className", "size", "variant", "children"];
|
|
102
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
103
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
104
|
+
var CopyToClipboardButton = function CopyToClipboardButton(_ref) {
|
|
105
|
+
var value = _ref.value,
|
|
106
|
+
className = _ref.className,
|
|
107
|
+
_ref$size = _ref.size,
|
|
108
|
+
size = _ref$size === void 0 ? "sm" : _ref$size,
|
|
109
|
+
_ref$variant = _ref.variant,
|
|
110
|
+
variant = _ref$variant === void 0 ? "outline" : _ref$variant,
|
|
111
|
+
children = _ref.children,
|
|
112
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
113
|
+
var _useState = useState(false),
|
|
114
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
115
|
+
copied = _useState2[0],
|
|
116
|
+
setCopied = _useState2[1];
|
|
117
|
+
var handleCopy = /*#__PURE__*/function () {
|
|
118
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
119
|
+
var textArea;
|
|
120
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
121
|
+
while (1) switch (_context.prev = _context.next) {
|
|
122
|
+
case 0:
|
|
123
|
+
_context.prev = 0;
|
|
124
|
+
_context.next = 3;
|
|
125
|
+
return navigator.clipboard.writeText(value);
|
|
126
|
+
case 3:
|
|
127
|
+
setCopied(true);
|
|
128
|
+
setTimeout(function () {
|
|
129
|
+
return setCopied(false);
|
|
130
|
+
}, 2000);
|
|
131
|
+
_context.next = 17;
|
|
132
|
+
break;
|
|
133
|
+
case 7:
|
|
134
|
+
_context.prev = 7;
|
|
135
|
+
_context.t0 = _context["catch"](0);
|
|
136
|
+
// Fallback for older browsers
|
|
137
|
+
textArea = document.createElement("textarea");
|
|
138
|
+
textArea.value = value;
|
|
139
|
+
document.body.appendChild(textArea);
|
|
140
|
+
textArea.select();
|
|
141
|
+
document.execCommand("copy");
|
|
142
|
+
document.body.removeChild(textArea);
|
|
143
|
+
setCopied(true);
|
|
144
|
+
setTimeout(function () {
|
|
145
|
+
return setCopied(false);
|
|
146
|
+
}, 2000);
|
|
147
|
+
case 17:
|
|
148
|
+
case "end":
|
|
149
|
+
return _context.stop();
|
|
150
|
+
}
|
|
151
|
+
}, _callee, null, [[0, 7]]);
|
|
152
|
+
}));
|
|
153
|
+
return function handleCopy() {
|
|
154
|
+
return _ref2.apply(this, arguments);
|
|
155
|
+
};
|
|
156
|
+
}();
|
|
157
|
+
return /*#__PURE__*/jsxs(Button, _objectSpread$1(_objectSpread$1({
|
|
158
|
+
size: size,
|
|
159
|
+
variant: variant,
|
|
160
|
+
className: cn("gap-1", className),
|
|
161
|
+
onClick: handleCopy
|
|
162
|
+
}, rest), {}, {
|
|
163
|
+
children: [copied ? /*#__PURE__*/jsx(Check, {
|
|
164
|
+
className: "size-3.5"
|
|
165
|
+
}) : /*#__PURE__*/jsx(Copy, {
|
|
166
|
+
className: "size-3.5"
|
|
167
|
+
}), children]
|
|
168
|
+
}));
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis
|
|
172
|
+
var fetchCountries = function fetchCountries() {
|
|
173
|
+
return axios.get("".concat(BASE_URL, "/profile/countries"));
|
|
174
|
+
};
|
|
175
|
+
var fetchUserDetails = function fetchUserDetails() {
|
|
176
|
+
return axios.get("".concat(BASE_URL, "/profile/user"));
|
|
177
|
+
};
|
|
178
|
+
var updateUser = function updateUser(_ref) {
|
|
179
|
+
var id = _ref.id,
|
|
180
|
+
payload = _ref.payload;
|
|
181
|
+
return axios.put("".concat(BASE_URL, "/profile/user/").concat(id), payload);
|
|
182
|
+
};
|
|
183
|
+
var profileApi = {
|
|
184
|
+
fetchCountries: fetchCountries,
|
|
185
|
+
fetchUserDetails: fetchUserDetails,
|
|
186
|
+
updateUser: updateUser
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
190
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
191
|
+
var useFetchCountries = function useFetchCountries(options) {
|
|
192
|
+
return useQuery(_objectSpread({
|
|
193
|
+
queryKey: [QUERY_KEYS.COUNTRIES_LIST],
|
|
194
|
+
queryFn: profileApi.fetchCountries,
|
|
195
|
+
staleTime: DEFAULT_STALE_TIME
|
|
196
|
+
}, options));
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var useCountries = function useCountries() {
|
|
200
|
+
var _useState = useState(null),
|
|
201
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
202
|
+
selectedCountryOption = _useState2[0],
|
|
203
|
+
setSelectedCountryOption = _useState2[1];
|
|
204
|
+
var _useFetchCountries = useFetchCountries(),
|
|
205
|
+
_useFetchCountries$da = _useFetchCountries.data,
|
|
206
|
+
_useFetchCountries$da2 = _useFetchCountries$da === void 0 ? {} : _useFetchCountries$da,
|
|
207
|
+
_useFetchCountries$da3 = _useFetchCountries$da2.countries,
|
|
208
|
+
countries = _useFetchCountries$da3 === void 0 ? [] : _useFetchCountries$da3,
|
|
209
|
+
isLoading = _useFetchCountries.isLoading;
|
|
210
|
+
var formatCountryOption = function formatCountryOption(country) {
|
|
211
|
+
return {
|
|
212
|
+
label: country === null || country === void 0 ? void 0 : country.name,
|
|
213
|
+
value: country === null || country === void 0 ? void 0 : country.id
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
var countryDropdownOptions = useMemo(function () {
|
|
217
|
+
return countries.map(formatCountryOption);
|
|
218
|
+
}, [countries]);
|
|
219
|
+
var handleCountryChange = useCallback(function (countryOption) {
|
|
220
|
+
setSelectedCountryOption(countryOption);
|
|
221
|
+
var dependentFields = {};
|
|
222
|
+
var selectedCountry = findById(countryOption.value, countries);
|
|
223
|
+
dependentFields.dateFormat = selectedCountry.dateFormat;
|
|
224
|
+
return dependentFields;
|
|
225
|
+
}, [countries]);
|
|
226
|
+
return {
|
|
227
|
+
countryDropdownOptions: countryDropdownOptions,
|
|
228
|
+
selectedCountryOption: selectedCountryOption,
|
|
229
|
+
isFetchingCountriesList: isLoading,
|
|
230
|
+
handleCountryChange: handleCountryChange
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
export { CopyToClipboardButton as C, ProfileImage as P, profileApi as p, useCountries as u };
|
|
235
|
+
//# sourceMappingURL=useCountries-DePOPtue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCountries-DePOPtue.js","sources":["../app/javascript/src/components/v2/Profile/ProfileImage.jsx","../app/javascript/src/components/v2/common/CopyToClipboardButton.jsx","../app/javascript/src/components/v2/apis/profile.js","../app/javascript/src/components/v2/hooks/profile/useCountriesApi.js","../app/javascript/src/components/v2/Profile/hooks/useCountries.js"],"sourcesContent":["/* 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/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 size-6 neeto-ui-rounded-full\"\n size=\"icon-xs\"\n variant=\"outline\"\n >\n <Pencil className=\"size-3\" />\n </Button>\n }\n >\n <DropdownMenu.Menu>\n <DropdownMenu.MenuItem>\n <DropdownMenu.MenuItem.Button\n data-testid=\"profile-image-upload-button\"\n onClick={() => fileInputRef.current?.click()}\n >\n {t(\"neetoTeamMembers.common.upload\", \"Upload\")}\n </DropdownMenu.MenuItem.Button>\n </DropdownMenu.MenuItem>\n {displayUrl && (\n <DropdownMenu.MenuItem>\n <DropdownMenu.MenuItem.Button\n data-testid=\"profile-image-remove-button\"\n onClick={handleRemove}\n >\n {t(\"neetoTeamMembers.common.remove\")}\n </DropdownMenu.MenuItem.Button>\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","import { useState } from \"react\";\n\nimport { Button, cn } from \"@bigbinary/neeto-atoms\";\nimport { Check, Copy } from \"lucide-react\";\n\nconst CopyToClipboardButton = ({\n value,\n className,\n size = \"sm\",\n variant = \"outline\",\n children,\n ...rest\n}) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n // Fallback for older browsers\n const textArea = document.createElement(\"textarea\");\n textArea.value = value;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n };\n\n return (\n <Button\n {...{ size, variant }}\n className={cn(\"gap-1\", className)}\n onClick={handleCopy}\n {...rest}\n >\n {copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {children}\n </Button>\n );\n};\n\nexport default CopyToClipboardButton;\n","// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis\nimport axios from \"axios\";\n\nimport { BASE_URL } from \"v2/common/constants\";\n\nconst fetchCountries = () => axios.get(`${BASE_URL}/profile/countries`);\n\nconst fetchUserDetails = () => axios.get(`${BASE_URL}/profile/user`);\n\nconst updateUser = ({ id, payload }) =>\n axios.put(`${BASE_URL}/profile/user/${id}`, payload);\n\nconst profileApi = { fetchCountries, fetchUserDetails, updateUser };\n\nexport default profileApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport { DEFAULT_STALE_TIME } from \"neetocommons/constants\";\n\nimport profileApi from \"v2/apis/profile\";\nimport { QUERY_KEYS } from \"v2/common/constants\";\n\nconst useFetchCountries = options =>\n useQuery({\n queryKey: [QUERY_KEYS.COUNTRIES_LIST],\n queryFn: profileApi.fetchCountries,\n staleTime: DEFAULT_STALE_TIME,\n ...options,\n });\n\nexport { useFetchCountries };\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { findById } from \"neetocist\";\n\nimport { useFetchCountries } from \"v2/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"],"names":["ProfileImage","_globalProps$user","_useTranslation","useTranslation","t","_useField","useField","_useField2","_slicedToArray","field","helpers","fileInputRef","useRef","_ref","value","imageUrl","file","displayUrl","URL","createObjectURL","handleFileSelect","event","selectedFile","target","files","maxSize","size","toast","error","setValue","handleRemove","_jsxs","className","children","_jsx","Avatar","user","name","globalProps","DropdownMenu","customTarget","Button","variant","Pencil","Menu","MenuItem","onClick","_fileInputRef$current","current","click","accept","ref","type","onChange","CopyToClipboardButton","_ref$size","_ref$variant","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","copied","setCopied","handleCopy","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","textArea","wrap","_callee$","_context","prev","next","navigator","clipboard","writeText","setTimeout","t0","document","createElement","body","appendChild","select","execCommand","removeChild","stop","apply","arguments","_objectSpread","cn","Check","Copy","fetchCountries","axios","get","concat","BASE_URL","fetchUserDetails","updateUser","id","payload","put","profileApi","useFetchCountries","options","useQuery","queryKey","QUERY_KEYS","COUNTRIES_LIST","queryFn","staleTime","DEFAULT_STALE_TIME","useCountries","selectedCountryOption","setSelectedCountryOption","_useFetchCountries","_useFetchCountries$da","data","_useFetchCountries$da2","_useFetchCountries$da3","countries","isLoading","formatCountryOption","country","label","countryDropdownOptions","useMemo","map","handleCountryChange","useCallback","countryOption","dependentFields","selectedCountry","findById","dateFormat","isFetchingCountriesList"],"mappings":"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"}
|