@jrapps/my_tickets_dashboard_modals_ui 0.0.2 → 0.0.3
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/cjs/components/CreateManageTeamModal/index.js +339 -0
- package/dist/cjs/components/CreateManageTeamModal/index.js.map +7 -0
- package/dist/cjs/components/CreateManageUsermodal/index.js +278 -0
- package/dist/cjs/components/CreateManageUsermodal/index.js.map +7 -0
- package/dist/cjs/index.js +591 -44
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/chunks/chunk-FYLEGL5B.js +324 -0
- package/dist/esm/chunks/chunk-FYLEGL5B.js.map +7 -0
- package/dist/esm/chunks/chunk-VC4WJDTA.js +257 -0
- package/dist/esm/chunks/chunk-VC4WJDTA.js.map +7 -0
- package/dist/esm/components/CreateManageTeamModal/index.js +7 -0
- package/dist/esm/components/CreateManageTeamModal/index.js.map +7 -0
- package/dist/esm/components/CreateManageUsermodal/index.js +7 -0
- package/dist/esm/components/CreateManageUsermodal/index.js.map +7 -0
- package/dist/esm/index.js +8 -0
- package/dist/types/components/CreateManageTeamModal/CreateManageTeamModal.d.ts +6 -0
- package/dist/types/components/CreateManageTeamModal/CreateManageTeamModal.d.ts.map +1 -0
- package/dist/types/components/CreateManageTeamModal/CreateManageTeamModal.types.d.ts +48 -0
- package/dist/types/components/CreateManageTeamModal/CreateManageTeamModal.types.d.ts.map +1 -0
- package/dist/types/components/CreateManageTeamModal/index.d.ts +3 -0
- package/dist/types/components/CreateManageTeamModal/index.d.ts.map +1 -0
- package/dist/types/components/CreateManageTeamModal/permissions-accordion.d.ts +5 -0
- package/dist/types/components/CreateManageTeamModal/permissions-accordion.d.ts.map +1 -0
- package/dist/types/components/CreateManageTeamModal/team-permissions.d.ts +98 -0
- package/dist/types/components/CreateManageTeamModal/team-permissions.d.ts.map +1 -0
- package/dist/types/components/CreateManageTeamModal/useCreateManageTeamModal.d.ts +27 -0
- package/dist/types/components/CreateManageTeamModal/useCreateManageTeamModal.d.ts.map +1 -0
- package/dist/types/components/CreateManageUsermodal/CreateManageUsermodal.d.ts +6 -0
- package/dist/types/components/CreateManageUsermodal/CreateManageUsermodal.d.ts.map +1 -0
- package/dist/types/components/CreateManageUsermodal/CreateManageUsermodal.types.d.ts +53 -0
- package/dist/types/components/CreateManageUsermodal/CreateManageUsermodal.types.d.ts.map +1 -0
- package/dist/types/components/CreateManageUsermodal/index.d.ts +3 -0
- package/dist/types/components/CreateManageUsermodal/index.d.ts.map +1 -0
- package/dist/types/components/CreateManageUsermodal/useCreateManageUsermodal.d.ts +28 -0
- package/dist/types/components/CreateManageUsermodal/useCreateManageUsermodal.d.ts.map +1 -0
- package/dist/types/components/ManageTicketModal/useManageTicketModal.d.ts +1 -1
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
// src/components/CreateManageUsermodal/CreateManageUsermodal.tsx
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
// src/components/CreateManageUsermodal/useCreateManageUsermodal.ts
|
|
5
|
+
import { useState, useEffect } from "react";
|
|
6
|
+
import { httpClient } from "@wix/essentials";
|
|
7
|
+
|
|
8
|
+
// src/components/CreateManageUsermodal/CreateManageUsermodal.types.ts
|
|
9
|
+
var DEFAULT_USER_DATA = {
|
|
10
|
+
_id: "",
|
|
11
|
+
passcode: "",
|
|
12
|
+
userId: "",
|
|
13
|
+
email: "",
|
|
14
|
+
name: "",
|
|
15
|
+
phoneNumber: "",
|
|
16
|
+
role: "",
|
|
17
|
+
team: "",
|
|
18
|
+
profilePictureUrl: "",
|
|
19
|
+
assignedTickets: [],
|
|
20
|
+
isAdmin: false
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// src/components/CreateManageUsermodal/useCreateManageUsermodal.ts
|
|
24
|
+
var BASE_API_URL = new URL(import.meta.url).origin;
|
|
25
|
+
function useCreateManageUsermodal({ id, state }) {
|
|
26
|
+
const [userData, setUserData] = useState(DEFAULT_USER_DATA);
|
|
27
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
28
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
29
|
+
const [error, setError] = useState(false);
|
|
30
|
+
const [teams, setTeams] = useState([]);
|
|
31
|
+
const handleFormChange = (field, value) => {
|
|
32
|
+
setUserData((prev) => ({ ...prev, [field]: value }));
|
|
33
|
+
};
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const fetchTeams = async () => {
|
|
36
|
+
try {
|
|
37
|
+
const response = await httpClient.fetchWithAuth(`${BASE_API_URL}/api/teams/teams`);
|
|
38
|
+
const result = await response.json();
|
|
39
|
+
if (!result.success) throw new Error(result.error || "Failed to fetch teams");
|
|
40
|
+
setTeams(result.teams || []);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.error("Error fetching teams data:", err);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const fetchUser = async () => {
|
|
46
|
+
try {
|
|
47
|
+
const response = await httpClient.fetchWithAuth(`${BASE_API_URL}/api/users/users?id=${id}`);
|
|
48
|
+
const result = await response.json();
|
|
49
|
+
if (!result.success) throw new Error(result.error || "Failed to fetch user data");
|
|
50
|
+
setUserData(result.user || DEFAULT_USER_DATA);
|
|
51
|
+
} catch (err) {
|
|
52
|
+
console.error("Error fetching user data:", err);
|
|
53
|
+
setError(true);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const init = async () => {
|
|
57
|
+
setIsLoading(true);
|
|
58
|
+
await Promise.all([
|
|
59
|
+
fetchTeams(),
|
|
60
|
+
...state === "EDIT" ? [fetchUser()] : []
|
|
61
|
+
]);
|
|
62
|
+
setIsLoading(false);
|
|
63
|
+
};
|
|
64
|
+
init();
|
|
65
|
+
}, [id, state]);
|
|
66
|
+
const handleSave = async (onClose) => {
|
|
67
|
+
setIsSaving(true);
|
|
68
|
+
try {
|
|
69
|
+
const emailWithDomain = userData.email.includes("@") ? userData.email : `${userData.email}@mytickets.internal`;
|
|
70
|
+
const payload = {
|
|
71
|
+
...userData,
|
|
72
|
+
email: emailWithDomain,
|
|
73
|
+
// Only include passcode in the payload when the user has typed one.
|
|
74
|
+
...userData.passcode ? { passcode: userData.passcode } : {}
|
|
75
|
+
};
|
|
76
|
+
delete payload.passcode;
|
|
77
|
+
const res = await httpClient.fetchWithAuth(
|
|
78
|
+
`${BASE_API_URL}/api/users/users${state === "EDIT" ? `?id=${id}` : ""}`,
|
|
79
|
+
{
|
|
80
|
+
method: state === "EDIT" ? "PUT" : "POST",
|
|
81
|
+
body: JSON.stringify(payload)
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
const data = await res.json();
|
|
85
|
+
if (data.success) {
|
|
86
|
+
onClose({ newUserData: data.user });
|
|
87
|
+
}
|
|
88
|
+
} catch (err) {
|
|
89
|
+
console.error("Error saving user:", err instanceof Error ? err.message : String(err));
|
|
90
|
+
setError(true);
|
|
91
|
+
} finally {
|
|
92
|
+
setIsSaving(false);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
userData,
|
|
97
|
+
isLoading,
|
|
98
|
+
isSaving,
|
|
99
|
+
error,
|
|
100
|
+
teams,
|
|
101
|
+
handleFormChange,
|
|
102
|
+
handleSave
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/components/CreateManageUsermodal/CreateManageUsermodal.css
|
|
107
|
+
if (typeof document !== "undefined" && !document.getElementById("jrapps-style-266a891e")) {
|
|
108
|
+
const s = document.createElement("style");
|
|
109
|
+
s.id = "jrapps-style-266a891e";
|
|
110
|
+
s.textContent = ".create-manage-usermodal {\n /* CreateManageUsermodal base styles */\n}\n";
|
|
111
|
+
document.head.appendChild(s);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/components/CreateManageUsermodal/CreateManageUsermodal.tsx
|
|
115
|
+
import {
|
|
116
|
+
CustomModalLayout,
|
|
117
|
+
Box,
|
|
118
|
+
Text,
|
|
119
|
+
FormField,
|
|
120
|
+
Input,
|
|
121
|
+
ImageViewer,
|
|
122
|
+
Dropdown,
|
|
123
|
+
ToggleSwitch,
|
|
124
|
+
Loader,
|
|
125
|
+
Modal
|
|
126
|
+
} from "@wix/design-system";
|
|
127
|
+
import "@wix/design-system/styles-studio.global.css";
|
|
128
|
+
import { dashboard } from "@wix/dashboard";
|
|
129
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
130
|
+
var CreateManageUsermodal = React.forwardRef(
|
|
131
|
+
({ className, id, state, permissions, isOpen, onClose }, ref) => {
|
|
132
|
+
const { userData, isLoading, isSaving, error, teams, handleFormChange, handleSave } = useCreateManageUsermodal({ id, state });
|
|
133
|
+
const canEdit = permissions["my-tickets-edit-accounts"];
|
|
134
|
+
const isDefaultAdmin = userData.role === "DEFAULT_ADMIN";
|
|
135
|
+
const handleAddImage = () => {
|
|
136
|
+
dashboard.openMediaManager({ multiSelect: false }).then((result) => {
|
|
137
|
+
if (result && result.items.length > 0) {
|
|
138
|
+
handleFormChange("profilePictureUrl", result.items[0].url);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const modalActionProps = isLoading ? {} : {
|
|
143
|
+
primaryButtonText: isSaving ? /* @__PURE__ */ jsx(Loader, { size: "tiny" }) : "Save",
|
|
144
|
+
secondaryButtonText: !isSaving ? state === "CREATE" ? "Cancel" : "Close" : void 0,
|
|
145
|
+
primaryButtonProps: { disabled: !canEdit },
|
|
146
|
+
primaryButtonOnClick: () => handleSave(onClose),
|
|
147
|
+
secondaryButtonOnClick: () => onClose()
|
|
148
|
+
};
|
|
149
|
+
return /* @__PURE__ */ jsx(Modal, { isOpen, ref, children: /* @__PURE__ */ jsx(
|
|
150
|
+
CustomModalLayout,
|
|
151
|
+
{
|
|
152
|
+
width: "500px",
|
|
153
|
+
...modalActionProps,
|
|
154
|
+
showHeaderDivider: true,
|
|
155
|
+
showFooterDivider: true,
|
|
156
|
+
title: state === "EDIT" ? "Edit User Account" : "Create User Account",
|
|
157
|
+
subtitle: state === "EDIT" ? "Make changes to the user account details below." : "Fill in the details to create a new user account.",
|
|
158
|
+
footnote: /* @__PURE__ */ jsx(Box, { alignContent: "center", children: /* @__PURE__ */ jsxs(Text, { size: "small", children: [
|
|
159
|
+
"Powered by ",
|
|
160
|
+
/* @__PURE__ */ jsx(Text, { size: "small", weight: "bold", children: "My Tickets" })
|
|
161
|
+
] }) }),
|
|
162
|
+
content: /* @__PURE__ */ jsx(Box, { direction: "vertical", width: "stretch", gap: "10px", children: isLoading ? /* @__PURE__ */ jsx(Box, { WebkitJustifyContent: "center", alignContent: "center", children: /* @__PURE__ */ jsx(Loader, { size: "medium", status: "loading", text: "Loading User..." }) }) : error ? /* @__PURE__ */ jsx(Box, { WebkitJustifyContent: "center", alignContent: "center", children: /* @__PURE__ */ jsx(Loader, { size: "medium", status: "error", text: "Please try again later." }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
163
|
+
/* @__PURE__ */ jsxs(Box, { direction: "horizontal", width: "stretch", gap: "10px", children: [
|
|
164
|
+
/* @__PURE__ */ jsx(FormField, { label: "Profile Picture", required: true, children: /* @__PURE__ */ jsx(
|
|
165
|
+
ImageViewer,
|
|
166
|
+
{
|
|
167
|
+
height: "115px",
|
|
168
|
+
width: "115px",
|
|
169
|
+
imageUrl: userData.profilePictureUrl,
|
|
170
|
+
onAddImage: handleAddImage
|
|
171
|
+
}
|
|
172
|
+
) }),
|
|
173
|
+
/* @__PURE__ */ jsxs(Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
|
|
174
|
+
/* @__PURE__ */ jsx(
|
|
175
|
+
FormField,
|
|
176
|
+
{
|
|
177
|
+
label: state === "EDIT" ? "New Passcode (leave blank to keep)" : "Passcode",
|
|
178
|
+
required: state !== "EDIT",
|
|
179
|
+
children: /* @__PURE__ */ jsx(
|
|
180
|
+
Input,
|
|
181
|
+
{
|
|
182
|
+
type: "password",
|
|
183
|
+
value: userData.passcode,
|
|
184
|
+
onChange: (e) => handleFormChange("passcode", e.target.value),
|
|
185
|
+
disabled: !canEdit
|
|
186
|
+
}
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
/* @__PURE__ */ jsx(FormField, { label: "Team", required: true, children: /* @__PURE__ */ jsx(
|
|
191
|
+
Dropdown,
|
|
192
|
+
{
|
|
193
|
+
disabled: !canEdit || isDefaultAdmin,
|
|
194
|
+
options: isDefaultAdmin ? [] : teams.map((team) => ({ id: String(team._id), value: String(team.name) })),
|
|
195
|
+
selectedId: typeof userData.team === "object" && !isDefaultAdmin ? userData.team._id : "",
|
|
196
|
+
onSelect: (option) => handleFormChange("team", { _id: String(option.id), name: String(option.value) })
|
|
197
|
+
}
|
|
198
|
+
) })
|
|
199
|
+
] })
|
|
200
|
+
] }),
|
|
201
|
+
/* @__PURE__ */ jsx(Box, { direction: "horizontal", width: "stretch", gap: "10px", children: /* @__PURE__ */ jsx(FormField, { label: "Name", required: true, children: /* @__PURE__ */ jsx(
|
|
202
|
+
Input,
|
|
203
|
+
{
|
|
204
|
+
value: userData.name,
|
|
205
|
+
onChange: (e) => handleFormChange("name", e.target.value),
|
|
206
|
+
disabled: !canEdit
|
|
207
|
+
}
|
|
208
|
+
) }) }),
|
|
209
|
+
/* @__PURE__ */ jsx(Box, { direction: "horizontal", width: "stretch", gap: "10px", children: /* @__PURE__ */ jsx(FormField, { label: "Email", required: true, children: /* @__PURE__ */ jsx(
|
|
210
|
+
Input,
|
|
211
|
+
{
|
|
212
|
+
suffix: /* @__PURE__ */ jsx(Box, { verticalAlign: "middle", children: "@mytickets.internal" }),
|
|
213
|
+
type: "email",
|
|
214
|
+
value: userData.email.replace("@mytickets.internal", ""),
|
|
215
|
+
onChange: (e) => handleFormChange("email", e.target.value),
|
|
216
|
+
disabled: !canEdit || isDefaultAdmin
|
|
217
|
+
}
|
|
218
|
+
) }) }),
|
|
219
|
+
/* @__PURE__ */ jsx(FormField, { label: "Phone Number", required: true, children: /* @__PURE__ */ jsx(
|
|
220
|
+
Input,
|
|
221
|
+
{
|
|
222
|
+
type: "tel",
|
|
223
|
+
value: userData.phoneNumber,
|
|
224
|
+
onChange: (e) => handleFormChange("phoneNumber", e.target.value),
|
|
225
|
+
disabled: !canEdit || isDefaultAdmin
|
|
226
|
+
}
|
|
227
|
+
) }),
|
|
228
|
+
/* @__PURE__ */ jsxs(Box, { direction: "horizontal", width: "stretch", gap: "10px", children: [
|
|
229
|
+
/* @__PURE__ */ jsx(FormField, { label: "Role", required: true, children: /* @__PURE__ */ jsx(
|
|
230
|
+
Input,
|
|
231
|
+
{
|
|
232
|
+
value: userData.role,
|
|
233
|
+
onChange: (e) => handleFormChange("role", e.target.value),
|
|
234
|
+
disabled: !canEdit || isDefaultAdmin
|
|
235
|
+
}
|
|
236
|
+
) }),
|
|
237
|
+
/* @__PURE__ */ jsx(FormField, { label: "Is Admin", required: true, children: /* @__PURE__ */ jsx(
|
|
238
|
+
ToggleSwitch,
|
|
239
|
+
{
|
|
240
|
+
size: "small",
|
|
241
|
+
checked: userData.isAdmin,
|
|
242
|
+
onChange: () => handleFormChange("isAdmin", !userData.isAdmin),
|
|
243
|
+
disabled: !canEdit || isDefaultAdmin
|
|
244
|
+
}
|
|
245
|
+
) })
|
|
246
|
+
] })
|
|
247
|
+
] }) })
|
|
248
|
+
}
|
|
249
|
+
) });
|
|
250
|
+
}
|
|
251
|
+
);
|
|
252
|
+
CreateManageUsermodal.displayName = "CreateManageUsermodal";
|
|
253
|
+
|
|
254
|
+
export {
|
|
255
|
+
CreateManageUsermodal
|
|
256
|
+
};
|
|
257
|
+
//# sourceMappingURL=chunk-VC4WJDTA.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CreateManageUsermodal/CreateManageUsermodal.tsx", "../../../src/components/CreateManageUsermodal/useCreateManageUsermodal.ts", "../../../src/components/CreateManageUsermodal/CreateManageUsermodal.types.ts", "../../../src/components/CreateManageUsermodal/CreateManageUsermodal.css"],
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport type { CreateManageUsermodalProps } from './CreateManageUsermodal.types';\nimport { useCreateManageUsermodal } from './useCreateManageUsermodal';\nimport './CreateManageUsermodal.css';\nimport {\n CustomModalLayout,\n Box,\n Text,\n FormField,\n Input,\n ImageViewer,\n Dropdown,\n ToggleSwitch,\n Loader,\n Modal,\n} from '@wix/design-system';\nimport '@wix/design-system/styles-studio.global.css';\nimport { dashboard } from '@wix/dashboard';\n\nexport const CreateManageUsermodal = React.forwardRef<HTMLDivElement, CreateManageUsermodalProps>(\n ({ className, id, state, permissions, isOpen, onClose }, ref) => {\n const { userData, isLoading, isSaving, error, teams, handleFormChange, handleSave } =\n useCreateManageUsermodal({ id, state });\n\n const canEdit = permissions['my-tickets-edit-accounts'];\n const isDefaultAdmin = userData.role === 'DEFAULT_ADMIN';\n\n const handleAddImage = () => {\n dashboard.openMediaManager({ multiSelect: false }).then((result: any) => {\n if (result && result.items.length > 0) {\n handleFormChange('profilePictureUrl', result.items[0].url);\n }\n });\n };\n\n // Build modal action props only when not loading, to avoid a flash of buttons during fetch.\n const modalActionProps = isLoading\n ? {}\n : {\n primaryButtonText: isSaving ? <Loader size=\"tiny\" /> : 'Save',\n secondaryButtonText: !isSaving\n ? state === 'CREATE'\n ? 'Cancel'\n : 'Close'\n : undefined,\n primaryButtonProps: { disabled: !canEdit },\n primaryButtonOnClick: () => handleSave(onClose),\n secondaryButtonOnClick: () => onClose(),\n };\n\n return (\n <Modal isOpen={isOpen} ref={ref}>\n <CustomModalLayout\n width=\"500px\"\n {...modalActionProps}\n showHeaderDivider\n showFooterDivider\n title={state === 'EDIT' ? 'Edit User Account' : 'Create User Account'}\n subtitle={\n state === 'EDIT'\n ? 'Make changes to the user account details below.'\n : 'Fill in the details to create a new user account.'\n }\n footnote={\n <Box alignContent=\"center\">\n <Text size=\"small\">\n Powered by <Text size=\"small\" weight=\"bold\">My Tickets</Text>\n </Text>\n </Box>\n }\n content={\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n {isLoading ? (\n <Box WebkitJustifyContent=\"center\" alignContent=\"center\">\n <Loader size=\"medium\" status=\"loading\" text=\"Loading User...\" />\n </Box>\n ) : error ? (\n <Box WebkitJustifyContent=\"center\" alignContent=\"center\">\n <Loader size=\"medium\" status=\"error\" text=\"Please try again later.\" />\n </Box>\n ) : (\n <>\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Profile Picture\" required>\n <ImageViewer\n height=\"115px\"\n width=\"115px\"\n imageUrl={userData.profilePictureUrl}\n onAddImage={handleAddImage}\n />\n </FormField>\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField\n label={state === 'EDIT' ? 'New Passcode (leave blank to keep)' : 'Passcode'}\n required={state !== 'EDIT'}\n >\n <Input\n type=\"password\"\n value={userData.passcode}\n onChange={(e: any) => handleFormChange('passcode', e.target.value)}\n disabled={!canEdit}\n />\n </FormField>\n <FormField label=\"Team\" required>\n <Dropdown\n disabled={!canEdit || isDefaultAdmin}\n options={\n isDefaultAdmin\n ? []\n : teams.map((team) => ({ id: String(team._id), value: String(team.name) }))\n }\n selectedId={\n typeof userData.team === 'object' && !isDefaultAdmin\n ? userData.team._id\n : ''\n }\n onSelect={(option: any) =>\n handleFormChange('team', { _id: String(option.id), name: String(option.value) })\n }\n />\n </FormField>\n </Box>\n </Box>\n\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Name\" required>\n <Input\n value={userData.name}\n onChange={(e: any) => handleFormChange('name', e.target.value)}\n disabled={!canEdit}\n />\n </FormField>\n </Box>\n\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Email\" required>\n <Input\n suffix={<Box verticalAlign=\"middle\">@mytickets.internal</Box>}\n type=\"email\"\n // Strip the domain for display; it is re-appended in handleSave before sending.\n value={userData.email.replace('@mytickets.internal', '')}\n onChange={(e: any) => handleFormChange('email', e.target.value)}\n disabled={!canEdit || isDefaultAdmin}\n />\n </FormField>\n </Box>\n\n <FormField label=\"Phone Number\" required>\n <Input\n type=\"tel\"\n value={userData.phoneNumber}\n onChange={(e: any) => handleFormChange('phoneNumber', e.target.value)}\n disabled={!canEdit || isDefaultAdmin}\n />\n </FormField>\n\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Role\" required>\n <Input\n value={userData.role}\n onChange={(e: any) => handleFormChange('role', e.target.value)}\n disabled={!canEdit || isDefaultAdmin}\n />\n </FormField>\n <FormField label=\"Is Admin\" required>\n <ToggleSwitch\n size=\"small\"\n checked={userData.isAdmin}\n onChange={() => handleFormChange('isAdmin', !userData.isAdmin)}\n disabled={!canEdit || isDefaultAdmin}\n />\n </FormField>\n </Box>\n </>\n )}\n </Box>\n }\n />\n </Modal>\n );\n },\n);\n\nCreateManageUsermodal.displayName = 'CreateManageUsermodal';\n", "/**\n * useCreateManageUsermodal\n *\n * Encapsulates all state and side-effects for CreateManageUsermodal.\n * Keep JSX in CreateManageUsermodal.tsx.\n */\nimport { useState, useEffect } from 'react';\nimport { httpClient } from '@wix/essentials';\nimport type { UserData } from './CreateManageUsermodal.types';\nimport { DEFAULT_USER_DATA } from './CreateManageUsermodal.types';\n\n// Computed once at module level \u2014 avoids repeating the expression in every fetch call.\nconst BASE_API_URL = new URL(import.meta.url).origin;\n\ninterface UseCreateManageUsermodalOptions {\n id: string;\n state: string;\n}\n\nexport function useCreateManageUsermodal({ id, state }: UseCreateManageUsermodalOptions) {\n const [userData, setUserData] = useState<UserData>(DEFAULT_USER_DATA);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [isSaving, setIsSaving] = useState<boolean>(false);\n const [error, setError] = useState<boolean>(false);\n const [teams, setTeams] = useState<{ _id: string; name: string }[]>([]);\n\n const handleFormChange = (field: keyof UserData, value: UserData[keyof UserData]) => {\n setUserData((prev) => ({ ...prev, [field]: value }));\n };\n\n useEffect(() => {\n // Teams are needed in both CREATE and EDIT modes.\n const fetchTeams = async () => {\n try {\n const response = await httpClient.fetchWithAuth(`${BASE_API_URL}/api/teams/teams`);\n const result = await response.json();\n if (!result.success) throw new Error(result.error || 'Failed to fetch teams');\n setTeams(result.teams || []);\n } catch (err) {\n console.error('Error fetching teams data:', err);\n }\n };\n\n const fetchUser = async () => {\n try {\n const response = await httpClient.fetchWithAuth(`${BASE_API_URL}/api/users/users?id=${id}`);\n const result = await response.json();\n if (!result.success) throw new Error(result.error || 'Failed to fetch user data');\n setUserData(result.user || DEFAULT_USER_DATA);\n } catch (err) {\n console.error('Error fetching user data:', err);\n setError(true);\n }\n };\n\n const init = async () => {\n setIsLoading(true);\n // Always fetch teams \u2014 the Team dropdown is present in both modes.\n await Promise.all([\n fetchTeams(),\n ...(state === 'EDIT' ? [fetchUser()] : []),\n ]);\n setIsLoading(false);\n };\n\n init();\n }, [id, state]);\n\n const handleSave = async (\n onClose: (result?: { newUserData?: { _id: string; name: string; email: string; team: string; role: string; isAdmin: boolean } }) => void,\n ) => {\n setIsSaving(true);\n try {\n // Build payload: omit passcode when empty (EDIT with no password change),\n // and always send email with the domain suffix.\n const emailWithDomain = userData.email.includes('@')\n ? userData.email\n : `${userData.email}@mytickets.internal`;\n\n const payload: Partial<UserData> & { email: string } = {\n ...userData,\n email: emailWithDomain,\n // Only include passcode in the payload when the user has typed one.\n ...(userData.passcode ? { passcode: userData.passcode } : {}),\n };\n // Never send the passcode field as userId.\n delete (payload as any).passcode;\n\n const res = await httpClient.fetchWithAuth(\n `${BASE_API_URL}/api/users/users${state === 'EDIT' ? `?id=${id}` : ''}`,\n {\n method: state === 'EDIT' ? 'PUT' : 'POST',\n body: JSON.stringify(payload),\n },\n );\n const data = await res.json();\n if (data.success) {\n onClose({ newUserData: data.user });\n }\n } catch (err: unknown) {\n console.error('Error saving user:', err instanceof Error ? err.message : String(err));\n setError(true);\n } finally {\n setIsSaving(false);\n }\n };\n\n return {\n userData,\n isLoading,\n isSaving,\n error,\n teams,\n handleFormChange,\n handleSave,\n };\n}\n", "import type { HTMLAttributes } from 'react';\n\nexport interface CreateManageUsermodalProps extends HTMLAttributes<HTMLDivElement> {\n id: string;\n state: string;\n permissions: Record<string, boolean>;\n isOpen: boolean;\n onClose: (result?: { newUserData?: { _id: string; name: string; email: string; team: string; role: string; isAdmin: boolean }; cancelled?: boolean }) => void;\n}\n\nexport interface AccountModalProps {\n id: string;\n state: string;\n permissions: Record<string, boolean>;\n isOpen: boolean;\n onClose: (result?: { newUserData?: { _id: string; name: string; email: string; team: string; role: string; isAdmin: boolean }; cancelled?: boolean }) => void;\n}\n\nexport interface UserData {\n _id?: string;\n // passcode is kept separate from userId \u2014 never sent back to the server as the user's ID\n passcode: string;\n userId: string;\n email: string;\n name: string;\n phoneNumber: string;\n role: string;\n team: { _id: string; name: string } | string;\n profilePictureUrl: string;\n assignedTickets: string[];\n isAdmin: boolean;\n}\n\nexport const DEFAULT_USER_DATA: UserData = {\n _id: '',\n passcode: '',\n userId: '',\n email: '',\n name: '',\n phoneNumber: '',\n role: '',\n team: '',\n profilePictureUrl: '',\n assignedTickets: [],\n isAdmin: false,\n};\n", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-266a891e\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-266a891e\";\n s.textContent = \".create-manage-usermodal {\\n /* CreateManageUsermodal base styles */\\n}\\n\";\n document.head.appendChild(s);\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateManageTeamModal
|
|
3
|
+
} from "./chunks/chunk-FYLEGL5B.js";
|
|
4
|
+
import {
|
|
5
|
+
CreateManageUsermodal
|
|
6
|
+
} from "./chunks/chunk-VC4WJDTA.js";
|
|
1
7
|
import {
|
|
2
8
|
ManageTicketModal
|
|
3
9
|
} from "./chunks/chunk-O2PNODDQ.js";
|
|
4
10
|
export {
|
|
11
|
+
CreateManageTeamModal,
|
|
12
|
+
CreateManageUsermodal,
|
|
5
13
|
ManageTicketModal
|
|
6
14
|
};
|
|
7
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CreateManageTeamModalProps } from './CreateManageTeamModal.types';
|
|
3
|
+
import './CreateManageTeamModal.css';
|
|
4
|
+
import '@wix/design-system/styles-studio.global.css';
|
|
5
|
+
export declare const CreateManageTeamModal: React.ForwardRefExoticComponent<CreateManageTeamModalProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
//# sourceMappingURL=CreateManageTeamModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateManageTeamModal.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/CreateManageTeamModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,6BAA6B,CAAC;AAWrC,OAAO,6CAA6C,CAAC;AAGrD,eAAO,MAAM,qBAAqB,mGAkHjC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface CreateManageTeamModalProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
id: string;
|
|
5
|
+
state: string;
|
|
6
|
+
permissions: Record<string, boolean>;
|
|
7
|
+
onClose: (params: {
|
|
8
|
+
newTeamData?: {
|
|
9
|
+
_id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
teamPictureUrl?: string;
|
|
13
|
+
};
|
|
14
|
+
cancelled?: boolean;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface TeamModalProps {
|
|
18
|
+
isOpen: boolean;
|
|
19
|
+
id: string;
|
|
20
|
+
state: string;
|
|
21
|
+
permissions: Record<string, boolean>;
|
|
22
|
+
onClose: (params: {
|
|
23
|
+
newTeamData?: {
|
|
24
|
+
_id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
teamPictureUrl?: string;
|
|
28
|
+
};
|
|
29
|
+
cancelled?: boolean;
|
|
30
|
+
}) => void;
|
|
31
|
+
}
|
|
32
|
+
export interface PermissionsAccordionProps {
|
|
33
|
+
selectedPermissions: string[];
|
|
34
|
+
onChange: (permissions: string[]) => void;
|
|
35
|
+
disabled: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface TeamData {
|
|
38
|
+
_id?: string;
|
|
39
|
+
name: string;
|
|
40
|
+
description: string;
|
|
41
|
+
email: string;
|
|
42
|
+
teamPictureUrl?: string;
|
|
43
|
+
agents?: string[];
|
|
44
|
+
assignedTickets?: string[];
|
|
45
|
+
permissions?: string[];
|
|
46
|
+
}
|
|
47
|
+
export declare const DEFAULT_TEAM_DATA: TeamData;
|
|
48
|
+
//# sourceMappingURL=CreateManageTeamModal.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateManageTeamModal.types.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/CreateManageTeamModal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,0BAA2B,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAC;SAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAChJ;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAC;SAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAChJ;AAED,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,QAQ/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import type { PermissionsAccordionProps } from './CreateManageTeamModal.types';
|
|
3
|
+
declare const PermissionsAccordion: FC<PermissionsAccordionProps>;
|
|
4
|
+
export default PermissionsAccordion;
|
|
5
|
+
//# sourceMappingURL=permissions-accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions-accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/permissions-accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAYhC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,QAAA,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAqDvD,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export declare const TEAM_PERMISSIONS: readonly [{
|
|
2
|
+
readonly id: "my-tickets-transfer-chat-to-agent";
|
|
3
|
+
readonly name: "Transfer Chat to Agent";
|
|
4
|
+
readonly category: "Chat";
|
|
5
|
+
}, {
|
|
6
|
+
readonly id: "my-tickets-transfer-chat-to-team";
|
|
7
|
+
readonly name: "Transfer Chat to Team";
|
|
8
|
+
readonly category: "Chat";
|
|
9
|
+
}, {
|
|
10
|
+
readonly id: "my-tickets-convert-chat-to-ticket";
|
|
11
|
+
readonly name: "Convert Chat to Ticket";
|
|
12
|
+
readonly category: "Chat";
|
|
13
|
+
}, {
|
|
14
|
+
readonly id: "my-tickets-view-chats";
|
|
15
|
+
readonly name: "View Chats";
|
|
16
|
+
readonly category: "Chat";
|
|
17
|
+
}, {
|
|
18
|
+
readonly id: "my-tickets-view-single-chat";
|
|
19
|
+
readonly name: "View Single Chat";
|
|
20
|
+
readonly category: "Chat";
|
|
21
|
+
}, {
|
|
22
|
+
readonly id: "my-tickets-join-single-chat";
|
|
23
|
+
readonly name: "Join Single Chat";
|
|
24
|
+
readonly category: "Chat";
|
|
25
|
+
}, {
|
|
26
|
+
readonly id: "my-tickets-end-single-chat";
|
|
27
|
+
readonly name: "End Single Chat";
|
|
28
|
+
readonly category: "Chat";
|
|
29
|
+
}, {
|
|
30
|
+
readonly id: "my-tickets-view-single-ticket";
|
|
31
|
+
readonly name: "View Single Ticket";
|
|
32
|
+
readonly category: "Ticket";
|
|
33
|
+
}, {
|
|
34
|
+
readonly id: "my-tickets-single-ticket-send-message";
|
|
35
|
+
readonly name: "Send Message to Single Ticket";
|
|
36
|
+
readonly category: "Ticket";
|
|
37
|
+
}, {
|
|
38
|
+
readonly id: "my-tickets-close-single-ticket";
|
|
39
|
+
readonly name: "Close Single Ticket";
|
|
40
|
+
readonly category: "Ticket";
|
|
41
|
+
}, {
|
|
42
|
+
readonly id: "my-tickets-reopen-single-ticket";
|
|
43
|
+
readonly name: "Reopen Single Ticket";
|
|
44
|
+
readonly category: "Ticket";
|
|
45
|
+
}, {
|
|
46
|
+
readonly id: "my-tickets-change-ticket-priority";
|
|
47
|
+
readonly name: "Change Ticket Priority";
|
|
48
|
+
readonly category: "Ticket";
|
|
49
|
+
}, {
|
|
50
|
+
readonly id: "my-tickets-transfer-ticket";
|
|
51
|
+
readonly name: "Transfer Ticket";
|
|
52
|
+
readonly category: "Ticket";
|
|
53
|
+
}, {
|
|
54
|
+
readonly id: "my-tickets-change-agent-online-status";
|
|
55
|
+
readonly name: "Change Agent Online Status";
|
|
56
|
+
readonly category: "Agent";
|
|
57
|
+
}, {
|
|
58
|
+
readonly id: "my-tickets-notifications-enabled";
|
|
59
|
+
readonly name: "Enable Notifications";
|
|
60
|
+
readonly category: "Notification";
|
|
61
|
+
}, {
|
|
62
|
+
readonly id: "my-tickets-create-quick-chat";
|
|
63
|
+
readonly name: "Create Quick Chat";
|
|
64
|
+
readonly category: "Chat";
|
|
65
|
+
}, {
|
|
66
|
+
readonly id: "my-tickets-edit-teams";
|
|
67
|
+
readonly name: "Edit Teams";
|
|
68
|
+
readonly category: "Team";
|
|
69
|
+
}, {
|
|
70
|
+
readonly id: "my-tickets-edit-accounts";
|
|
71
|
+
readonly name: "Edit Accounts";
|
|
72
|
+
readonly category: "Account";
|
|
73
|
+
}, {
|
|
74
|
+
readonly id: "my-tickets-view-teams";
|
|
75
|
+
readonly name: "View Teams";
|
|
76
|
+
readonly category: "Team";
|
|
77
|
+
}, {
|
|
78
|
+
readonly id: "my-tickets-view-accounts";
|
|
79
|
+
readonly name: "View Accounts";
|
|
80
|
+
readonly category: "Account";
|
|
81
|
+
}, {
|
|
82
|
+
readonly id: "my-tickets-create-teams";
|
|
83
|
+
readonly name: "Create Teams";
|
|
84
|
+
readonly category: "Team";
|
|
85
|
+
}, {
|
|
86
|
+
readonly id: "my-tickets-create-accounts";
|
|
87
|
+
readonly name: "Create Accounts";
|
|
88
|
+
readonly category: "Account";
|
|
89
|
+
}, {
|
|
90
|
+
readonly id: "my-tickets-view-all-tickets";
|
|
91
|
+
readonly name: "View All Tickets";
|
|
92
|
+
readonly category: "Ticket";
|
|
93
|
+
}, {
|
|
94
|
+
readonly id: "my-tickets-create-ticket";
|
|
95
|
+
readonly name: "Create Ticket";
|
|
96
|
+
readonly category: "Ticket";
|
|
97
|
+
}];
|
|
98
|
+
//# sourceMappingURL=team-permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-permissions.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/team-permissions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBnB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type TeamData } from './CreateManageTeamModal.types';
|
|
2
|
+
interface UseCreateManageTeamModalParams {
|
|
3
|
+
id: string;
|
|
4
|
+
state: string;
|
|
5
|
+
permissions: Record<string, boolean>;
|
|
6
|
+
onClose: (params: {
|
|
7
|
+
newTeamData?: {
|
|
8
|
+
_id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
teamPictureUrl?: string;
|
|
12
|
+
};
|
|
13
|
+
cancelled?: boolean;
|
|
14
|
+
}) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function useCreateManageTeamModal({ id, state, permissions, onClose, }: UseCreateManageTeamModalParams): {
|
|
17
|
+
teamData: TeamData;
|
|
18
|
+
isLoading: boolean;
|
|
19
|
+
isSaving: boolean;
|
|
20
|
+
error: string | null;
|
|
21
|
+
handleFormChange: (field: keyof TeamData, value: TeamData[keyof TeamData]) => void;
|
|
22
|
+
handleSave: () => Promise<void>;
|
|
23
|
+
handleAddImage: () => void;
|
|
24
|
+
canEdit: boolean;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=useCreateManageTeamModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCreateManageTeamModal.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageTeamModal/useCreateManageTeamModal.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,+BAA+B,CAAC;AAEjF,UAAU,8BAA8B;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,EAAE;QAChB,WAAW,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,IAAI,CAAC;CACZ;AAED,wBAAgB,wBAAwB,CAAC,EACvC,EAAE,EACF,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE,8BAA8B;;;;;8BAME,MAAM,QAAQ,SAAS,QAAQ,CAAC,MAAM,QAAQ,CAAC;;;;EAgGjF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CreateManageUsermodalProps } from './CreateManageUsermodal.types';
|
|
3
|
+
import './CreateManageUsermodal.css';
|
|
4
|
+
import '@wix/design-system/styles-studio.global.css';
|
|
5
|
+
export declare const CreateManageUsermodal: React.ForwardRefExoticComponent<CreateManageUsermodalProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
//# sourceMappingURL=CreateManageUsermodal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateManageUsermodal.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageUsermodal/CreateManageUsermodal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,6BAA6B,CAAC;AAarC,OAAO,6CAA6C,CAAC;AAGrD,eAAO,MAAM,qBAAqB,mGAkKjC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface CreateManageUsermodalProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
id: string;
|
|
4
|
+
state: string;
|
|
5
|
+
permissions: Record<string, boolean>;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onClose: (result?: {
|
|
8
|
+
newUserData?: {
|
|
9
|
+
_id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
email: string;
|
|
12
|
+
team: string;
|
|
13
|
+
role: string;
|
|
14
|
+
isAdmin: boolean;
|
|
15
|
+
};
|
|
16
|
+
cancelled?: boolean;
|
|
17
|
+
}) => void;
|
|
18
|
+
}
|
|
19
|
+
export interface AccountModalProps {
|
|
20
|
+
id: string;
|
|
21
|
+
state: string;
|
|
22
|
+
permissions: Record<string, boolean>;
|
|
23
|
+
isOpen: boolean;
|
|
24
|
+
onClose: (result?: {
|
|
25
|
+
newUserData?: {
|
|
26
|
+
_id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
email: string;
|
|
29
|
+
team: string;
|
|
30
|
+
role: string;
|
|
31
|
+
isAdmin: boolean;
|
|
32
|
+
};
|
|
33
|
+
cancelled?: boolean;
|
|
34
|
+
}) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface UserData {
|
|
37
|
+
_id?: string;
|
|
38
|
+
passcode: string;
|
|
39
|
+
userId: string;
|
|
40
|
+
email: string;
|
|
41
|
+
name: string;
|
|
42
|
+
phoneNumber: string;
|
|
43
|
+
role: string;
|
|
44
|
+
team: {
|
|
45
|
+
_id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
} | string;
|
|
48
|
+
profilePictureUrl: string;
|
|
49
|
+
assignedTickets: string[];
|
|
50
|
+
isAdmin: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare const DEFAULT_USER_DATA: UserData;
|
|
53
|
+
//# sourceMappingURL=CreateManageUsermodal.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateManageUsermodal.types.d.ts","sourceRoot":"","sources":["../../../../src/components/CreateManageUsermodal/CreateManageUsermodal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,0BAA2B,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/J;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/J;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,EAAE,QAY/B,CAAC"}
|