@jrapps/my_tickets_dashboard_modals_ui 0.0.2 → 0.1.0
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/ManageCreateUserModal/index.js +278 -0
- package/dist/cjs/components/ManageCreateUserModal/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-2GZEVEZL.js +257 -0
- package/dist/esm/chunks/chunk-2GZEVEZL.js.map +7 -0
- package/dist/esm/chunks/chunk-4WLRHNEL.js +324 -0
- package/dist/esm/chunks/chunk-4WLRHNEL.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/ManageCreateUserModal/index.js +7 -0
- package/dist/esm/components/ManageCreateUserModal/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/ManageCreateUserModal/ManageCreateUserModal.d.ts +6 -0
- package/dist/types/components/ManageCreateUserModal/ManageCreateUserModal.d.ts.map +1 -0
- package/dist/types/components/ManageCreateUserModal/ManageCreateUserModal.types.d.ts +53 -0
- package/dist/types/components/ManageCreateUserModal/ManageCreateUserModal.types.d.ts.map +1 -0
- package/dist/types/components/ManageCreateUserModal/index.d.ts +3 -0
- package/dist/types/components/ManageCreateUserModal/index.d.ts.map +1 -0
- package/dist/types/components/ManageCreateUserModal/useManageCreateUserModal.d.ts +28 -0
- package/dist/types/components/ManageCreateUserModal/useManageCreateUserModal.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 +2 -2
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// src/components/CreateManageTeamModal/CreateManageTeamModal.tsx
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
// src/components/CreateManageTeamModal/useCreateManageTeamModal.ts
|
|
5
|
+
import { useState, useEffect } from "react";
|
|
6
|
+
import { httpClient } from "@wix/essentials";
|
|
7
|
+
import { dashboard } from "@wix/dashboard";
|
|
8
|
+
|
|
9
|
+
// src/components/CreateManageTeamModal/CreateManageTeamModal.types.ts
|
|
10
|
+
var DEFAULT_TEAM_DATA = {
|
|
11
|
+
name: "",
|
|
12
|
+
description: "",
|
|
13
|
+
teamPictureUrl: "",
|
|
14
|
+
email: "",
|
|
15
|
+
agents: [],
|
|
16
|
+
assignedTickets: [],
|
|
17
|
+
permissions: []
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/components/CreateManageTeamModal/useCreateManageTeamModal.ts
|
|
21
|
+
function useCreateManageTeamModal({
|
|
22
|
+
id,
|
|
23
|
+
state,
|
|
24
|
+
permissions,
|
|
25
|
+
onClose
|
|
26
|
+
}) {
|
|
27
|
+
const [teamData, setTeamData] = useState(DEFAULT_TEAM_DATA);
|
|
28
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
29
|
+
const [error, setError] = useState(null);
|
|
30
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
31
|
+
const handleFormChange = (field, value) => {
|
|
32
|
+
setTeamData((prev) => ({ ...prev, [field]: value }));
|
|
33
|
+
};
|
|
34
|
+
const validate = () => {
|
|
35
|
+
if (!teamData.name.trim()) return "Team name is required.";
|
|
36
|
+
if (!teamData.email.trim()) return "Team email is required.";
|
|
37
|
+
return null;
|
|
38
|
+
};
|
|
39
|
+
const handleSave = async () => {
|
|
40
|
+
const validationError = validate();
|
|
41
|
+
if (validationError) {
|
|
42
|
+
setError(validationError);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setIsSaving(true);
|
|
46
|
+
setError(null);
|
|
47
|
+
try {
|
|
48
|
+
const baseApiUrl = new URL(import.meta.url).origin;
|
|
49
|
+
const res = await httpClient.fetchWithAuth(
|
|
50
|
+
`${baseApiUrl}/api/teams/teams${state === "EDIT" ? `?id=${id}` : ""}`,
|
|
51
|
+
{
|
|
52
|
+
method: state === "EDIT" ? "PUT" : "POST",
|
|
53
|
+
body: JSON.stringify(teamData)
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
const data = await res.json();
|
|
57
|
+
if (data.success) {
|
|
58
|
+
onClose({
|
|
59
|
+
newTeamData: {
|
|
60
|
+
_id: data.team._id,
|
|
61
|
+
name: data.team.name,
|
|
62
|
+
description: data.team.description,
|
|
63
|
+
teamPictureUrl: data.team.teamPictureUrl
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
} catch (err) {
|
|
68
|
+
console.error("Error saving team:", err instanceof Error ? err.message : String(err));
|
|
69
|
+
setError("Try again later.");
|
|
70
|
+
} finally {
|
|
71
|
+
setIsSaving(false);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const handleAddImage = () => {
|
|
75
|
+
dashboard.openMediaManager({ multiSelect: false }).then((result) => {
|
|
76
|
+
if (result && result.items.length > 0) {
|
|
77
|
+
const imageUrl = result.items[0].url;
|
|
78
|
+
handleFormChange("teamPictureUrl", imageUrl);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (state === "EDIT") {
|
|
84
|
+
setIsLoading(true);
|
|
85
|
+
const fetchTeamDetails = async () => {
|
|
86
|
+
try {
|
|
87
|
+
const baseApiUrl = new URL(import.meta.url).origin;
|
|
88
|
+
const res = await httpClient.fetchWithAuth(
|
|
89
|
+
`${baseApiUrl}/api/teams/teams?id=${id}`,
|
|
90
|
+
{
|
|
91
|
+
method: "GET",
|
|
92
|
+
headers: { "Content-Type": "application/json" }
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
const data = await res.json();
|
|
96
|
+
setTeamData(data.team || DEFAULT_TEAM_DATA);
|
|
97
|
+
} catch (err) {
|
|
98
|
+
console.error(
|
|
99
|
+
"Error fetching team details:",
|
|
100
|
+
err instanceof Error ? err.message : String(err)
|
|
101
|
+
);
|
|
102
|
+
setError("Try again later.");
|
|
103
|
+
} finally {
|
|
104
|
+
setIsLoading(false);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
fetchTeamDetails();
|
|
108
|
+
}
|
|
109
|
+
}, [id, state]);
|
|
110
|
+
return {
|
|
111
|
+
teamData,
|
|
112
|
+
isLoading,
|
|
113
|
+
isSaving,
|
|
114
|
+
error,
|
|
115
|
+
handleFormChange,
|
|
116
|
+
handleSave,
|
|
117
|
+
handleAddImage,
|
|
118
|
+
canEdit: permissions["my-tickets-edit-teams"]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// src/components/CreateManageTeamModal/CreateManageTeamModal.css
|
|
123
|
+
if (typeof document !== "undefined" && !document.getElementById("jrapps-style-41fecb36")) {
|
|
124
|
+
const s = document.createElement("style");
|
|
125
|
+
s.id = "jrapps-style-41fecb36";
|
|
126
|
+
s.textContent = ".create-manage-team-modal {\n /* CreateManageTeamModal base styles */\n}\n";
|
|
127
|
+
document.head.appendChild(s);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/components/CreateManageTeamModal/CreateManageTeamModal.tsx
|
|
131
|
+
import {
|
|
132
|
+
CustomModalLayout,
|
|
133
|
+
Box as Box2,
|
|
134
|
+
Text,
|
|
135
|
+
FormField as FormField2,
|
|
136
|
+
Input,
|
|
137
|
+
ImageViewer,
|
|
138
|
+
Loader,
|
|
139
|
+
Modal
|
|
140
|
+
} from "@wix/design-system";
|
|
141
|
+
import "@wix/design-system/styles-studio.global.css";
|
|
142
|
+
|
|
143
|
+
// src/components/CreateManageTeamModal/permissions-accordion.tsx
|
|
144
|
+
import {
|
|
145
|
+
Box,
|
|
146
|
+
FormField,
|
|
147
|
+
Accordion,
|
|
148
|
+
accordionItemBuilder,
|
|
149
|
+
Layout,
|
|
150
|
+
Cell,
|
|
151
|
+
Checkbox
|
|
152
|
+
} from "@wix/design-system";
|
|
153
|
+
|
|
154
|
+
// src/components/CreateManageTeamModal/team-permissions.ts
|
|
155
|
+
var TEAM_PERMISSIONS = [
|
|
156
|
+
{ "id": "my-tickets-transfer-chat-to-agent", "name": "Transfer Chat to Agent", "category": "Chat" },
|
|
157
|
+
{ "id": "my-tickets-transfer-chat-to-team", "name": "Transfer Chat to Team", "category": "Chat" },
|
|
158
|
+
{ "id": "my-tickets-convert-chat-to-ticket", "name": "Convert Chat to Ticket", "category": "Chat" },
|
|
159
|
+
{ "id": "my-tickets-view-chats", "name": "View Chats", "category": "Chat" },
|
|
160
|
+
{ "id": "my-tickets-view-single-chat", "name": "View Single Chat", "category": "Chat" },
|
|
161
|
+
{ "id": "my-tickets-join-single-chat", "name": "Join Single Chat", "category": "Chat" },
|
|
162
|
+
{ "id": "my-tickets-end-single-chat", "name": "End Single Chat", "category": "Chat" },
|
|
163
|
+
{ "id": "my-tickets-view-single-ticket", "name": "View Single Ticket", "category": "Ticket" },
|
|
164
|
+
{ "id": "my-tickets-single-ticket-send-message", "name": "Send Message to Single Ticket", "category": "Ticket" },
|
|
165
|
+
{ "id": "my-tickets-close-single-ticket", "name": "Close Single Ticket", "category": "Ticket" },
|
|
166
|
+
{ "id": "my-tickets-reopen-single-ticket", "name": "Reopen Single Ticket", "category": "Ticket" },
|
|
167
|
+
{ "id": "my-tickets-change-ticket-priority", "name": "Change Ticket Priority", "category": "Ticket" },
|
|
168
|
+
{ "id": "my-tickets-transfer-ticket", "name": "Transfer Ticket", "category": "Ticket" },
|
|
169
|
+
{ "id": "my-tickets-change-agent-online-status", "name": "Change Agent Online Status", "category": "Agent" },
|
|
170
|
+
{ "id": "my-tickets-notifications-enabled", "name": "Enable Notifications", "category": "Notification" },
|
|
171
|
+
{ "id": "my-tickets-create-quick-chat", "name": "Create Quick Chat", "category": "Chat" },
|
|
172
|
+
{ "id": "my-tickets-edit-teams", "name": "Edit Teams", "category": "Team" },
|
|
173
|
+
{ "id": "my-tickets-edit-accounts", "name": "Edit Accounts", "category": "Account" },
|
|
174
|
+
{ "id": "my-tickets-view-teams", "name": "View Teams", "category": "Team" },
|
|
175
|
+
{ "id": "my-tickets-view-accounts", "name": "View Accounts", "category": "Account" },
|
|
176
|
+
{ "id": "my-tickets-create-teams", "name": "Create Teams", "category": "Team" },
|
|
177
|
+
{ "id": "my-tickets-create-accounts", "name": "Create Accounts", "category": "Account" },
|
|
178
|
+
{ "id": "my-tickets-view-all-tickets", "name": "View All Tickets", "category": "Ticket" },
|
|
179
|
+
{ "id": "my-tickets-create-ticket", "name": "Create Ticket", "category": "Ticket" }
|
|
180
|
+
];
|
|
181
|
+
|
|
182
|
+
// src/components/CreateManageTeamModal/permissions-accordion.tsx
|
|
183
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
184
|
+
var PermissionsAccordion = ({
|
|
185
|
+
selectedPermissions,
|
|
186
|
+
onChange,
|
|
187
|
+
disabled
|
|
188
|
+
}) => {
|
|
189
|
+
const groupedPermissions = TEAM_PERMISSIONS.reduce(
|
|
190
|
+
(acc, perm) => {
|
|
191
|
+
if (!acc[perm.category]) {
|
|
192
|
+
acc[perm.category] = [];
|
|
193
|
+
}
|
|
194
|
+
acc[perm.category].push(perm);
|
|
195
|
+
return acc;
|
|
196
|
+
},
|
|
197
|
+
{}
|
|
198
|
+
);
|
|
199
|
+
return /* @__PURE__ */ jsx(FormField, { label: "Permissions", children: /* @__PURE__ */ jsx(
|
|
200
|
+
Accordion,
|
|
201
|
+
{
|
|
202
|
+
horizontalPadding: "tiny",
|
|
203
|
+
size: "tiny",
|
|
204
|
+
items: Object.entries(groupedPermissions).map(
|
|
205
|
+
([category, categoryPermissions]) => accordionItemBuilder({
|
|
206
|
+
title: category,
|
|
207
|
+
children: /* @__PURE__ */ jsx(Box, { direction: "vertical", gap: "small", children: /* @__PURE__ */ jsx(Layout, { children: categoryPermissions.map((perm) => /* @__PURE__ */ jsxs(Cell, { span: 6, children: [
|
|
208
|
+
" ",
|
|
209
|
+
/* @__PURE__ */ jsx(
|
|
210
|
+
Checkbox,
|
|
211
|
+
{
|
|
212
|
+
checked: selectedPermissions?.includes(perm.id) || false,
|
|
213
|
+
onChange: (e) => {
|
|
214
|
+
const isChecked = e.target.checked;
|
|
215
|
+
onChange(
|
|
216
|
+
isChecked ? [...selectedPermissions || [], perm.id] : selectedPermissions?.filter((p) => p !== perm.id) || []
|
|
217
|
+
);
|
|
218
|
+
},
|
|
219
|
+
disabled,
|
|
220
|
+
children: perm.name
|
|
221
|
+
}
|
|
222
|
+
)
|
|
223
|
+
] }, perm.id)) }) })
|
|
224
|
+
})
|
|
225
|
+
)
|
|
226
|
+
}
|
|
227
|
+
) });
|
|
228
|
+
};
|
|
229
|
+
var permissions_accordion_default = PermissionsAccordion;
|
|
230
|
+
|
|
231
|
+
// src/components/CreateManageTeamModal/CreateManageTeamModal.tsx
|
|
232
|
+
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
233
|
+
var CreateManageTeamModal = React.forwardRef(
|
|
234
|
+
({ className, isOpen, id, state, permissions, onClose }, ref) => {
|
|
235
|
+
const {
|
|
236
|
+
teamData,
|
|
237
|
+
isLoading,
|
|
238
|
+
isSaving,
|
|
239
|
+
error,
|
|
240
|
+
handleFormChange,
|
|
241
|
+
handleSave,
|
|
242
|
+
handleAddImage,
|
|
243
|
+
canEdit
|
|
244
|
+
} = useCreateManageTeamModal({ id, state, permissions, onClose });
|
|
245
|
+
const modalActions = !isLoading ? {
|
|
246
|
+
primaryButtonText: isSaving ? /* @__PURE__ */ jsx2(Loader, { size: "tiny" }) : "Save",
|
|
247
|
+
primaryButtonOnClick: handleSave,
|
|
248
|
+
primaryButtonProps: { disabled: !canEdit },
|
|
249
|
+
secondaryButtonText: !isSaving && state === "CREATE" ? "Cancel" : !isSaving && state === "EDIT" ? "Close" : void 0,
|
|
250
|
+
secondaryButtonOnClick: () => onClose({ cancelled: true })
|
|
251
|
+
} : {};
|
|
252
|
+
return /* @__PURE__ */ jsx2(Modal, { isOpen, children: /* @__PURE__ */ jsx2("div", { ref, className, children: /* @__PURE__ */ jsx2(
|
|
253
|
+
CustomModalLayout,
|
|
254
|
+
{
|
|
255
|
+
width: "520px",
|
|
256
|
+
...modalActions,
|
|
257
|
+
showHeaderDivider: true,
|
|
258
|
+
showFooterDivider: true,
|
|
259
|
+
title: state === "EDIT" ? "Edit Team" : "Create Team",
|
|
260
|
+
subtitle: state === "EDIT" ? "Make changes to the team details below." : "Fill in the details to create a new team.",
|
|
261
|
+
footnote: /* @__PURE__ */ jsx2(Box2, { alignContent: "center", children: /* @__PURE__ */ jsxs2(Text, { size: "small", children: [
|
|
262
|
+
"Powered by ",
|
|
263
|
+
/* @__PURE__ */ jsx2(Text, { size: "small", weight: "bold", children: "My Tickets" })
|
|
264
|
+
] }) }),
|
|
265
|
+
content: /* @__PURE__ */ jsx2(Box2, { direction: "vertical", width: "stretch", gap: "10px", children: isLoading ? /* @__PURE__ */ jsx2(Box2, { WebkitJustifyContent: "center", alignContent: "center", children: /* @__PURE__ */ jsx2(Loader, { size: "medium", status: "loading", text: "Loading data..." }) }) : error ? /* @__PURE__ */ jsx2(Box2, { WebkitJustifyContent: "center", alignContent: "center", children: /* @__PURE__ */ jsx2(Loader, { size: "medium", status: "error", text: error }) }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
266
|
+
/* @__PURE__ */ jsxs2(Box2, { direction: "horizontal", width: "stretch", gap: "10px", children: [
|
|
267
|
+
/* @__PURE__ */ jsx2(FormField2, { label: "Team Picture", required: true, children: /* @__PURE__ */ jsx2(
|
|
268
|
+
ImageViewer,
|
|
269
|
+
{
|
|
270
|
+
disabled: !canEdit,
|
|
271
|
+
height: "115px",
|
|
272
|
+
width: "115px",
|
|
273
|
+
imageUrl: teamData?.teamPictureUrl || "",
|
|
274
|
+
onAddImage: handleAddImage
|
|
275
|
+
}
|
|
276
|
+
) }),
|
|
277
|
+
/* @__PURE__ */ jsxs2(Box2, { direction: "vertical", width: "stretch", gap: "10px", children: [
|
|
278
|
+
/* @__PURE__ */ jsx2(FormField2, { label: "Team Name", required: true, children: /* @__PURE__ */ jsx2(
|
|
279
|
+
Input,
|
|
280
|
+
{
|
|
281
|
+
value: teamData?.name || "",
|
|
282
|
+
onChange: (e) => handleFormChange("name", e.target.value),
|
|
283
|
+
disabled: !canEdit
|
|
284
|
+
}
|
|
285
|
+
) }),
|
|
286
|
+
/* @__PURE__ */ jsx2(FormField2, { label: "Team Description", required: true, children: /* @__PURE__ */ jsx2(
|
|
287
|
+
Input,
|
|
288
|
+
{
|
|
289
|
+
value: teamData?.description || "",
|
|
290
|
+
onChange: (e) => handleFormChange("description", e.target.value),
|
|
291
|
+
disabled: !canEdit
|
|
292
|
+
}
|
|
293
|
+
) })
|
|
294
|
+
] })
|
|
295
|
+
] }),
|
|
296
|
+
/* @__PURE__ */ jsx2(FormField2, { label: "Team Email", required: true, children: /* @__PURE__ */ jsx2(
|
|
297
|
+
Input,
|
|
298
|
+
{
|
|
299
|
+
suffix: /* @__PURE__ */ jsx2(Box2, { verticalAlign: "middle", children: "@mytickets.internal" }),
|
|
300
|
+
type: "email",
|
|
301
|
+
value: teamData?.email?.replace("@mytickets.internal", "") || "",
|
|
302
|
+
onChange: (e) => handleFormChange("email", e.target.value),
|
|
303
|
+
disabled: !canEdit
|
|
304
|
+
}
|
|
305
|
+
) }),
|
|
306
|
+
/* @__PURE__ */ jsx2(Box2, { direction: "horizontal", width: "stretch", gap: "10px", children: /* @__PURE__ */ jsx2(
|
|
307
|
+
permissions_accordion_default,
|
|
308
|
+
{
|
|
309
|
+
selectedPermissions: teamData.permissions || [],
|
|
310
|
+
onChange: (perms) => handleFormChange("permissions", perms),
|
|
311
|
+
disabled: !canEdit
|
|
312
|
+
}
|
|
313
|
+
) })
|
|
314
|
+
] }) })
|
|
315
|
+
}
|
|
316
|
+
) }) });
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
CreateManageTeamModal.displayName = "CreateManageTeamModal";
|
|
320
|
+
|
|
321
|
+
export {
|
|
322
|
+
CreateManageTeamModal
|
|
323
|
+
};
|
|
324
|
+
//# sourceMappingURL=chunk-4WLRHNEL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CreateManageTeamModal/CreateManageTeamModal.tsx", "../../../src/components/CreateManageTeamModal/useCreateManageTeamModal.ts", "../../../src/components/CreateManageTeamModal/CreateManageTeamModal.types.ts", "../../../src/components/CreateManageTeamModal/CreateManageTeamModal.css", "../../../src/components/CreateManageTeamModal/permissions-accordion.tsx", "../../../src/components/CreateManageTeamModal/team-permissions.ts"],
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport type { CreateManageTeamModalProps } from './CreateManageTeamModal.types';\nimport { useCreateManageTeamModal } from './useCreateManageTeamModal';\nimport './CreateManageTeamModal.css';\nimport {\n CustomModalLayout,\n Box,\n Text,\n FormField,\n Input,\n ImageViewer,\n Loader,\n Modal,\n} from '@wix/design-system';\nimport '@wix/design-system/styles-studio.global.css';\nimport PermissionsAccordion from './permissions-accordion';\n\nexport const CreateManageTeamModal = React.forwardRef<HTMLDivElement, CreateManageTeamModalProps>(\n ({ className, isOpen, id, state, permissions, onClose }, ref) => {\n const {\n teamData,\n isLoading,\n isSaving,\n error,\n handleFormChange,\n handleSave,\n handleAddImage,\n canEdit,\n } = useCreateManageTeamModal({ id, state, permissions, onClose });\n\n const modalActions = !isLoading\n ? {\n primaryButtonText: isSaving ? <Loader size=\"tiny\" /> : 'Save',\n primaryButtonOnClick: handleSave,\n primaryButtonProps: { disabled: !canEdit },\n secondaryButtonText: !isSaving && state === \"CREATE\" ? 'Cancel' : !isSaving && state === \"EDIT\" ? 'Close' : undefined,\n secondaryButtonOnClick: () => onClose({ cancelled: true }),\n }\n : {};\n\n return (\n <Modal isOpen={isOpen}>\n <div ref={ref} className={className}>\n <CustomModalLayout\n width=\"520px\"\n {...modalActions}\n showHeaderDivider\n showFooterDivider\n title={state === 'EDIT' ? 'Edit Team' : 'Create Team'}\n subtitle={\n state === 'EDIT'\n ? 'Make changes to the team details below.'\n : 'Fill in the details to create a new team.'\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 data...\" />\n </Box>\n ) : error ? (\n <Box WebkitJustifyContent=\"center\" alignContent=\"center\">\n <Loader size=\"medium\" status=\"error\" text={error} />\n </Box>\n ) : (\n <>\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Team Picture\" required>\n <ImageViewer\n disabled={!canEdit}\n height=\"115px\"\n width=\"115px\"\n imageUrl={teamData?.teamPictureUrl || ''}\n onAddImage={handleAddImage}\n />\n </FormField>\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Team Name\" required>\n <Input\n value={teamData?.name || ''}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleFormChange('name', e.target.value)\n }\n disabled={!canEdit}\n />\n </FormField>\n <FormField label=\"Team Description\" required>\n <Input\n value={teamData?.description || ''}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleFormChange('description', e.target.value)\n }\n disabled={!canEdit}\n />\n </FormField>\n </Box>\n </Box>\n <FormField label=\"Team Email\" required>\n <Input\n suffix={<Box verticalAlign=\"middle\">@mytickets.internal</Box>}\n type=\"email\"\n value={teamData?.email?.replace('@mytickets.internal', '') || ''}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleFormChange('email', e.target.value)\n }\n disabled={!canEdit}\n />\n </FormField>\n <Box direction=\"horizontal\" width=\"stretch\" gap=\"10px\">\n <PermissionsAccordion\n selectedPermissions={teamData.permissions || []}\n onChange={(perms: string[]) => handleFormChange('permissions', perms)}\n disabled={!canEdit}\n />\n </Box>\n </>\n )}\n </Box>\n }\n />\n </div>\n </Modal>\n );\n },\n);\n\nCreateManageTeamModal.displayName = 'CreateManageTeamModal';\n", "/**\n * useCreateManageTeamModal\n *\n * Internal hook that encapsulates the logic for CreateManageTeamModal.\n * Keep this file focused on state and side-effects; keep JSX in CreateManageTeamModal.tsx.\n */\nimport { useState, useEffect } from 'react';\nimport { httpClient } from '@wix/essentials';\nimport { dashboard } from '@wix/dashboard';\nimport { type TeamData, DEFAULT_TEAM_DATA } from './CreateManageTeamModal.types';\n\ninterface UseCreateManageTeamModalParams {\n id: string;\n state: string;\n permissions: Record<string, boolean>;\n onClose: (params: {\n newTeamData?: { _id: string; name: string; description: string; teamPictureUrl?: string };\n cancelled?: boolean;\n }) => void;\n}\n\nexport function useCreateManageTeamModal({\n id,\n state,\n permissions,\n onClose,\n}: UseCreateManageTeamModalParams) {\n const [teamData, setTeamData] = useState<TeamData>(DEFAULT_TEAM_DATA);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [isSaving, setIsSaving] = useState<boolean>(false);\n\n const handleFormChange = (field: keyof TeamData, value: TeamData[keyof TeamData]) => {\n setTeamData((prev) => ({ ...prev, [field]: value }));\n };\n\n const validate = (): string | null => {\n if (!teamData.name.trim()) return 'Team name is required.';\n if (!teamData.email.trim()) return 'Team email is required.';\n return null;\n };\n\n const handleSave = async () => {\n const validationError = validate();\n if (validationError) {\n setError(validationError);\n return;\n }\n\n setIsSaving(true);\n setError(null);\n\n try {\n const baseApiUrl = new URL(import.meta.url).origin;\n const res = await httpClient.fetchWithAuth(\n `${baseApiUrl}/api/teams/teams${state === 'EDIT' ? `?id=${id}` : ''}`,\n {\n method: state === 'EDIT' ? 'PUT' : 'POST',\n body: JSON.stringify(teamData),\n },\n );\n const data = await res.json();\n if (data.success) {\n onClose({\n newTeamData: {\n _id: data.team._id,\n name: data.team.name,\n description: data.team.description,\n teamPictureUrl: data.team.teamPictureUrl,\n },\n });\n }\n } catch (err: unknown) {\n console.error('Error saving team:', err instanceof Error ? err.message : String(err));\n setError('Try again later.');\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleAddImage = () => {\n dashboard.openMediaManager({ multiSelect: false }).then((result: any) => {\n if (result && result.items.length > 0) {\n const imageUrl = result.items[0].url;\n handleFormChange('teamPictureUrl', imageUrl);\n }\n });\n };\n\n useEffect(() => {\n if (state === 'EDIT') {\n setIsLoading(true);\n const fetchTeamDetails = async () => {\n try {\n const baseApiUrl = new URL(import.meta.url).origin;\n const res = await httpClient.fetchWithAuth(\n `${baseApiUrl}/api/teams/teams?id=${id}`,\n {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n },\n );\n const data = await res.json();\n setTeamData(data.team || DEFAULT_TEAM_DATA);\n } catch (err: unknown) {\n console.error(\n 'Error fetching team details:',\n err instanceof Error ? err.message : String(err),\n );\n setError('Try again later.');\n } finally {\n setIsLoading(false);\n }\n };\n fetchTeamDetails();\n }\n }, [id, state]);\n\n return {\n teamData,\n isLoading,\n isSaving,\n error,\n handleFormChange,\n handleSave,\n handleAddImage,\n canEdit: permissions['my-tickets-edit-teams'],\n };\n}\n", "import type { HTMLAttributes } from 'react';\n\nexport interface CreateManageTeamModalProps extends HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n id: string;\n state: string;\n permissions: Record<string, boolean>;\n onClose: (params: { newTeamData?: { _id: string; name: string; description: string; teamPictureUrl?: string; }; cancelled?: boolean }) => void;\n}\n\nexport interface TeamModalProps {\n isOpen: boolean;\n id: string;\n state: string;\n permissions: Record<string, boolean>;\n onClose: (params: { newTeamData?: { _id: string; name: string; description: string; teamPictureUrl?: string; }; cancelled?: boolean }) => void;\n}\n\nexport interface PermissionsAccordionProps {\n selectedPermissions: string[];\n onChange: (permissions: string[]) => void;\n disabled: boolean;\n}\n\nexport interface TeamData {\n _id?: string;\n name: string;\n description: string;\n email: string;\n teamPictureUrl?: string;\n agents?: string[];\n assignedTickets?: string[];\n permissions?: string[];\n}\n\nexport const DEFAULT_TEAM_DATA: TeamData = {\n name: '',\n description: '',\n teamPictureUrl: '',\n email: '',\n agents: [],\n assignedTickets: [],\n permissions: [],\n};", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-41fecb36\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-41fecb36\";\n s.textContent = \".create-manage-team-modal {\\n /* CreateManageTeamModal base styles */\\n}\\n\";\n document.head.appendChild(s);\n}", "import type { FC } from 'react';\nimport {\n Box,\n FormField,\n Accordion,\n accordionItemBuilder,\n Layout,\n Cell,\n Checkbox,\n} from '@wix/design-system';\n\nimport { TEAM_PERMISSIONS } from './team-permissions';\nimport type { PermissionsAccordionProps } from './CreateManageTeamModal.types'; // fixed import\n\nconst PermissionsAccordion: FC<PermissionsAccordionProps> = ({\n selectedPermissions,\n onChange,\n disabled,\n}) => {\n const groupedPermissions = TEAM_PERMISSIONS.reduce(\n (acc, perm) => {\n if (!acc[perm.category]) {\n acc[perm.category] = [];\n }\n acc[perm.category].push(perm);\n return acc;\n },\n {} as Record<string, typeof TEAM_PERMISSIONS[number][]>,\n );\n\n return (\n <FormField label=\"Permissions\">\n <Accordion\n horizontalPadding=\"tiny\"\n size=\"tiny\"\n items={Object.entries(groupedPermissions).map(([category, categoryPermissions]) =>\n accordionItemBuilder({\n title: category,\n children: (\n <Box direction=\"vertical\" gap=\"small\">\n <Layout>\n {categoryPermissions.map((perm) => (\n <Cell span={6} key={perm.id}> {/* fixed: use stable perm.id, not index */}\n <Checkbox\n checked={selectedPermissions?.includes(perm.id) || false}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const isChecked = e.target.checked;\n onChange(\n isChecked\n ? [...(selectedPermissions || []), perm.id]\n : selectedPermissions?.filter((p) => p !== perm.id) || [],\n );\n }}\n disabled={disabled}\n >\n {perm.name}\n </Checkbox>\n </Cell>\n ))}\n </Layout>\n </Box>\n ),\n }),\n )}\n />\n </FormField>\n );\n};\n\nexport default PermissionsAccordion;\n", "export const TEAM_PERMISSIONS = [\n { \"id\": \"my-tickets-transfer-chat-to-agent\", \"name\": \"Transfer Chat to Agent\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-transfer-chat-to-team\", \"name\": \"Transfer Chat to Team\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-convert-chat-to-ticket\", \"name\": \"Convert Chat to Ticket\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-view-chats\", \"name\": \"View Chats\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-view-single-chat\", \"name\": \"View Single Chat\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-join-single-chat\", \"name\": \"Join Single Chat\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-end-single-chat\", \"name\": \"End Single Chat\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-view-single-ticket\", \"name\": \"View Single Ticket\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-single-ticket-send-message\", \"name\": \"Send Message to Single Ticket\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-close-single-ticket\", \"name\": \"Close Single Ticket\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-reopen-single-ticket\", \"name\": \"Reopen Single Ticket\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-change-ticket-priority\", \"name\": \"Change Ticket Priority\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-transfer-ticket\", \"name\": \"Transfer Ticket\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-change-agent-online-status\", \"name\": \"Change Agent Online Status\", \"category\": \"Agent\" },\n { \"id\": \"my-tickets-notifications-enabled\", \"name\": \"Enable Notifications\", \"category\": \"Notification\" },\n { \"id\": \"my-tickets-create-quick-chat\", \"name\": \"Create Quick Chat\", \"category\": \"Chat\" },\n { \"id\": \"my-tickets-edit-teams\", \"name\": \"Edit Teams\", \"category\": \"Team\" },\n { \"id\": \"my-tickets-edit-accounts\", \"name\": \"Edit Accounts\", \"category\": \"Account\" },\n { \"id\": \"my-tickets-view-teams\", \"name\": \"View Teams\", \"category\": \"Team\" },\n { \"id\": \"my-tickets-view-accounts\", \"name\": \"View Accounts\", \"category\": \"Account\" },\n { \"id\": \"my-tickets-create-teams\", \"name\": \"Create Teams\", \"category\": \"Team\" },\n { \"id\": \"my-tickets-create-accounts\", \"name\": \"Create Accounts\", \"category\": \"Account\" },\n { \"id\": \"my-tickets-view-all-tickets\", \"name\": \"View All Tickets\", \"category\": \"Ticket\" },\n { \"id\": \"my-tickets-create-ticket\", \"name\": \"Create Ticket\", \"category\": \"Ticket\" },\n] as const;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Box", "FormField", "jsx", "jsxs", "Box", "FormField"]
|
|
7
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateManageTeamModal
|
|
3
|
+
} from "./chunks/chunk-4WLRHNEL.js";
|
|
4
|
+
import {
|
|
5
|
+
ManageCreateUserModal
|
|
6
|
+
} from "./chunks/chunk-2GZEVEZL.js";
|
|
1
7
|
import {
|
|
2
8
|
ManageTicketModal
|
|
3
9
|
} from "./chunks/chunk-O2PNODDQ.js";
|
|
4
10
|
export {
|
|
11
|
+
CreateManageTeamModal,
|
|
12
|
+
ManageCreateUserModal,
|
|
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
|