@jrapps/my_tickets_dashboard_modals_ui 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +0 -0
  2. package/dist/cjs/components/ManageTicketModal/index.js +314 -0
  3. package/dist/cjs/components/ManageTicketModal/index.js.map +7 -0
  4. package/dist/cjs/index.js +314 -0
  5. package/dist/cjs/index.js.map +7 -0
  6. package/dist/esm/chunks/chunk-O2PNODDQ.js +288 -0
  7. package/dist/esm/chunks/chunk-O2PNODDQ.js.map +7 -0
  8. package/dist/esm/components/ManageTicketModal/index.js +7 -0
  9. package/dist/esm/components/ManageTicketModal/index.js.map +7 -0
  10. package/dist/esm/index.js +7 -0
  11. package/dist/esm/index.js.map +7 -0
  12. package/dist/types/components/ManageTicketModal/ManageTicketModal.d.ts +6 -0
  13. package/dist/types/components/ManageTicketModal/ManageTicketModal.d.ts.map +1 -0
  14. package/dist/types/components/ManageTicketModal/ManageTicketModal.types.d.ts +37 -0
  15. package/dist/types/components/ManageTicketModal/ManageTicketModal.types.d.ts.map +1 -0
  16. package/dist/types/components/ManageTicketModal/index.d.ts +3 -0
  17. package/dist/types/components/ManageTicketModal/index.d.ts.map +1 -0
  18. package/dist/types/components/ManageTicketModal/priority-change-content.d.ts +5 -0
  19. package/dist/types/components/ManageTicketModal/priority-change-content.d.ts.map +1 -0
  20. package/dist/types/components/ManageTicketModal/status-change-content.d.ts +5 -0
  21. package/dist/types/components/ManageTicketModal/status-change-content.d.ts.map +1 -0
  22. package/dist/types/components/ManageTicketModal/transfer-ticket-content.d.ts +5 -0
  23. package/dist/types/components/ManageTicketModal/transfer-ticket-content.d.ts.map +1 -0
  24. package/dist/types/components/ManageTicketModal/useManageTicketModal.d.ts +30 -0
  25. package/dist/types/components/ManageTicketModal/useManageTicketModal.d.ts.map +1 -0
  26. package/dist/types/components/index.d.ts +2 -0
  27. package/dist/types/components/index.d.ts.map +1 -0
  28. package/dist/types/index.d.ts +2 -0
  29. package/dist/types/index.d.ts.map +1 -0
  30. package/dist/types/test/test.d.ts +8 -0
  31. package/dist/types/test/test.d.ts.map +1 -0
  32. package/package.json +49 -0
package/README.md ADDED
Binary file
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/components/ManageTicketModal/index.ts
31
+ var ManageTicketModal_exports = {};
32
+ __export(ManageTicketModal_exports, {
33
+ ManageTicketModal: () => ManageTicketModal
34
+ });
35
+ module.exports = __toCommonJS(ManageTicketModal_exports);
36
+
37
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
38
+ var import_react2 = __toESM(require("react"));
39
+
40
+ // src/components/ManageTicketModal/useManageTicketModal.ts
41
+ var import_react = require("react");
42
+ var import_essentials = require("@wix/essentials");
43
+ var BASE_URL = new URL("").origin;
44
+ var STATE_CONFIG = {
45
+ STATUS_CHANGE: {
46
+ title: "Change Status",
47
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,
48
+ getPayload: (value) => ({ newStatus: value })
49
+ },
50
+ PRIORITY_CHANGE: {
51
+ title: "Change Priority",
52
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,
53
+ getPayload: (value) => ({ newPriority: value })
54
+ },
55
+ TRANSFER_TICKET: {
56
+ title: "Transfer Ticket",
57
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,
58
+ getPayload: (value) => ({ newTeamId: value })
59
+ }
60
+ };
61
+ function useManageTicketModal({ id, state, onClose }) {
62
+ const [isSaving, setIsSaving] = (0, import_react.useState)(false);
63
+ const [newStatus, setNewStatus] = (0, import_react.useState)("");
64
+ const [newPriority, setNewPriority] = (0, import_react.useState)("");
65
+ const [selectedTeam, setSelectedTeam] = (0, import_react.useState)("");
66
+ const [teams, setTeams] = (0, import_react.useState)([]);
67
+ const [isLoading, setIsLoading] = (0, import_react.useState)(false);
68
+ const [isError, setIsError] = (0, import_react.useState)(false);
69
+ const modalTitle = STATE_CONFIG[state]?.title ?? "Manage Ticket";
70
+ (0, import_react.useEffect)(() => {
71
+ if (state !== "TRANSFER_TICKET") {
72
+ setIsLoading(false);
73
+ setIsError(false);
74
+ return;
75
+ }
76
+ setIsLoading(true);
77
+ setIsError(false);
78
+ const fetchTeams = async () => {
79
+ try {
80
+ const response = await import_essentials.httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);
81
+ const data = await response.json();
82
+ setTeams(data.teams);
83
+ } catch (error) {
84
+ console.error("Error fetching teams:", error);
85
+ setIsError(true);
86
+ } finally {
87
+ setIsLoading(false);
88
+ }
89
+ };
90
+ fetchTeams();
91
+ }, [id, state]);
92
+ const handleSave = async () => {
93
+ const config = STATE_CONFIG[state];
94
+ if (!config) return;
95
+ const valueMap = {
96
+ STATUS_CHANGE: newStatus,
97
+ PRIORITY_CHANGE: newPriority,
98
+ TRANSFER_TICKET: selectedTeam
99
+ };
100
+ const value = valueMap[state];
101
+ if (!value) return;
102
+ setIsSaving(true);
103
+ try {
104
+ await import_essentials.httpClient.fetchWithAuth(config.getUrl(id, value), { method: "PUT" });
105
+ onClose(config.getPayload(value));
106
+ } catch (error) {
107
+ console.error("Error saving:", error);
108
+ } finally {
109
+ setIsSaving(false);
110
+ }
111
+ };
112
+ const handleCancel = () => onClose({ cancelled: true });
113
+ return {
114
+ // State
115
+ isSaving,
116
+ isLoading,
117
+ isError,
118
+ teams,
119
+ newStatus,
120
+ newPriority,
121
+ selectedTeam,
122
+ modalTitle,
123
+ // Setters
124
+ setNewStatus,
125
+ setNewPriority,
126
+ setSelectedTeam,
127
+ // Handlers
128
+ handleSave,
129
+ handleCancel
130
+ };
131
+ }
132
+
133
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
134
+ var import_design_system4 = require("@wix/design-system");
135
+ var import_styles_studio_global = require("@wix/design-system/styles-studio.global.css");
136
+
137
+ // src/components/ManageTicketModal/status-change-content.tsx
138
+ var import_design_system = require("@wix/design-system");
139
+ var import_jsx_runtime = require("react/jsx-runtime");
140
+ var STATUS_LABELS = {
141
+ closed: "Closed",
142
+ in_progress: "In Progress",
143
+ open: "Open"
144
+ };
145
+ var StatusChangeContent = ({ currentStatus, newStatus, onStatusChange }) => {
146
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_design_system.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "Current Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Input, { value: STATUS_LABELS[currentStatus] ?? currentStatus, disabled: true }) }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "New Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
+ import_design_system.Dropdown,
150
+ {
151
+ options: [
152
+ { id: "open", value: "Open" },
153
+ { id: "in_progress", value: "In Progress" },
154
+ { id: "closed", value: "Closed" }
155
+ ],
156
+ placeholder: "Select new status",
157
+ selectedId: newStatus || "",
158
+ popoverProps: { appendTo: "window", zIndex: 9999 },
159
+ onSelect: (option) => onStatusChange(option?.id ?? "")
160
+ }
161
+ ) })
162
+ ] });
163
+ };
164
+ var status_change_content_default = StatusChangeContent;
165
+
166
+ // src/components/ManageTicketModal/priority-change-content.tsx
167
+ var import_design_system2 = require("@wix/design-system");
168
+ var import_jsx_runtime2 = require("react/jsx-runtime");
169
+ var PRIORITY_LABELS = {
170
+ high: "High",
171
+ medium: "Medium",
172
+ low: "Low"
173
+ };
174
+ var PriorityChangeContent = ({ currentPriority, newPriority, onPriorityChange }) => {
175
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_design_system2.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
176
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "Current Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.Input, { value: PRIORITY_LABELS[currentPriority] ?? currentPriority, disabled: true }) }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "New Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
178
+ import_design_system2.Dropdown,
179
+ {
180
+ options: [
181
+ { id: "high", value: "High" },
182
+ { id: "medium", value: "Medium" },
183
+ { id: "low", value: "Low" }
184
+ ],
185
+ placeholder: "Select new priority",
186
+ selectedId: newPriority || "",
187
+ popoverProps: { appendTo: "window", zIndex: 9999 },
188
+ onSelect: (option) => onPriorityChange(option?.id ?? "")
189
+ }
190
+ ) })
191
+ ] });
192
+ };
193
+ var priority_change_content_default = PriorityChangeContent;
194
+
195
+ // src/components/ManageTicketModal/transfer-ticket-content.tsx
196
+ var import_design_system3 = require("@wix/design-system");
197
+ var import_jsx_runtime3 = require("react/jsx-runtime");
198
+ var TransferTicketContent = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {
199
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_design_system3.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
200
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "Current Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.Input, { value: currentTeam, disabled: true }) }),
201
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "New Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
202
+ import_design_system3.Dropdown,
203
+ {
204
+ options: teams.map((team) => ({ id: team._id, value: team.name })),
205
+ placeholder: "Select new team",
206
+ selectedId: selectedTeam || "",
207
+ popoverProps: { appendTo: "window", zIndex: 9999 },
208
+ onSelect: (option) => onTeamChange(option?.id ?? "")
209
+ }
210
+ ) })
211
+ ] });
212
+ };
213
+ var transfer_ticket_content_default = TransferTicketContent;
214
+
215
+ // src/components/ManageTicketModal/ManageTicketModal.css
216
+ if (typeof document !== "undefined" && !document.getElementById("jrapps-style-450fcfe5")) {
217
+ const s = document.createElement("style");
218
+ s.id = "jrapps-style-450fcfe5";
219
+ s.textContent = ".manage-ticket-modal {\n /* ManageTicketModal base styles */\n}\n";
220
+ document.head.appendChild(s);
221
+ }
222
+
223
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
224
+ var import_jsx_runtime4 = require("react/jsx-runtime");
225
+ var ManageTicketModal = import_react2.default.forwardRef(
226
+ ({
227
+ className,
228
+ isOpen,
229
+ id,
230
+ state,
231
+ onClose,
232
+ currentStatus,
233
+ currentPriority,
234
+ ticketNumber,
235
+ currentTeamName
236
+ }, ref) => {
237
+ const {
238
+ isSaving,
239
+ isLoading,
240
+ isError,
241
+ teams,
242
+ newStatus,
243
+ newPriority,
244
+ selectedTeam,
245
+ modalTitle,
246
+ setNewStatus,
247
+ setNewPriority,
248
+ setSelectedTeam,
249
+ handleSave,
250
+ handleCancel
251
+ } = useManageTicketModal({ id, state, onClose });
252
+ const renderContent = () => {
253
+ if (isLoading) {
254
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "loading", text: "Loading..." }) });
255
+ }
256
+ if (isError) {
257
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "error", text: "Error loading data" }) });
258
+ }
259
+ if (state === "STATUS_CHANGE") {
260
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
261
+ status_change_content_default,
262
+ {
263
+ currentStatus: currentStatus ?? "",
264
+ newStatus,
265
+ onStatusChange: setNewStatus
266
+ }
267
+ );
268
+ }
269
+ if (state === "PRIORITY_CHANGE") {
270
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
271
+ priority_change_content_default,
272
+ {
273
+ currentPriority: currentPriority ?? "",
274
+ newPriority,
275
+ onPriorityChange: setNewPriority
276
+ }
277
+ );
278
+ }
279
+ if (state === "TRANSFER_TICKET") {
280
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
281
+ transfer_ticket_content_default,
282
+ {
283
+ currentTeam: currentTeamName,
284
+ teams,
285
+ selectedTeam,
286
+ onTeamChange: setSelectedTeam
287
+ }
288
+ );
289
+ }
290
+ return null;
291
+ };
292
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Modal, { isOpen, ref, className, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
293
+ import_design_system4.CustomModalLayout,
294
+ {
295
+ width: "500px",
296
+ primaryButtonText: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "tiny" }) : "Save",
297
+ secondaryButtonText: "Cancel",
298
+ primaryButtonOnClick: handleSave,
299
+ secondaryButtonOnClick: handleCancel,
300
+ showHeaderDivider: true,
301
+ showFooterDivider: true,
302
+ title: modalTitle,
303
+ subtitle: !isLoading ? ticketNumber : "",
304
+ footnote: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { alignContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_design_system4.Text, { size: "small", children: [
305
+ "Powered by ",
306
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Text, { size: "small", weight: "bold", children: "My Tickets" })
307
+ ] }) }),
308
+ content: renderContent()
309
+ }
310
+ ) });
311
+ }
312
+ );
313
+ ManageTicketModal.displayName = "ManageTicketModal";
314
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/ManageTicketModal/index.ts", "../../../../src/components/ManageTicketModal/ManageTicketModal.tsx", "../../../../src/components/ManageTicketModal/useManageTicketModal.ts", "../../../../src/components/ManageTicketModal/status-change-content.tsx", "../../../../src/components/ManageTicketModal/priority-change-content.tsx", "../../../../src/components/ManageTicketModal/transfer-ticket-content.tsx", "../../../../src/components/ManageTicketModal/ManageTicketModal.css"],
4
+ "sourcesContent": ["export { ManageTicketModal } from './ManageTicketModal';\nexport type { ManageTicketModalProps } from './ManageTicketModal.types';\n", "import React from 'react';\nimport type { ManageTicketModalProps } from './ManageTicketModal.types';\nimport { useManageTicketModal } from './useManageTicketModal';\nimport {\n CustomModalLayout,\n Box,\n Text,\n Loader,\n Modal,\n} from '@wix/design-system';\nimport '@wix/design-system/styles-studio.global.css';\n\nimport StatusChangeContent from './status-change-content';\nimport PriorityChangeContent from './priority-change-content';\nimport TransferTicketContent from './transfer-ticket-content';\nimport './ManageTicketModal.css';\n\nexport const ManageTicketModal = React.forwardRef<HTMLDivElement, ManageTicketModalProps>(\n (\n {\n className,\n isOpen,\n id,\n state,\n onClose,\n currentStatus,\n currentPriority,\n ticketNumber,\n currentTeamName,\n },\n ref,\n ) => {\n const {\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n handleSave,\n handleCancel,\n } = useManageTicketModal({ id, state, onClose });\n\n const renderContent = () => {\n if (isLoading) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"loading\" text=\"Loading...\" />\n </Box>\n );\n }\n\n if (isError) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"error\" text=\"Error loading data\" />\n </Box>\n );\n }\n\n if (state === 'STATUS_CHANGE') {\n return (\n <StatusChangeContent\n currentStatus={currentStatus ?? ''}\n newStatus={newStatus}\n onStatusChange={setNewStatus}\n />\n );\n }\n\n if (state === 'PRIORITY_CHANGE') {\n return (\n <PriorityChangeContent\n currentPriority={currentPriority ?? ''}\n newPriority={newPriority}\n onPriorityChange={setNewPriority}\n />\n );\n }\n\n if (state === 'TRANSFER_TICKET') {\n return (\n <TransferTicketContent\n currentTeam={currentTeamName}\n teams={teams}\n selectedTeam={selectedTeam}\n onTeamChange={setSelectedTeam}\n />\n );\n }\n\n return null;\n };\n\n return (\n <Modal isOpen={isOpen} ref={ref} className={className}>\n <CustomModalLayout\n width=\"500px\"\n primaryButtonText={isSaving ? <Loader size=\"tiny\" /> : 'Save'}\n secondaryButtonText=\"Cancel\"\n primaryButtonOnClick={handleSave}\n secondaryButtonOnClick={handleCancel}\n showHeaderDivider\n showFooterDivider\n title={modalTitle}\n subtitle={!isLoading ? ticketNumber : ''}\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={renderContent()}\n />\n </Modal>\n );\n },\n);\n\nManageTicketModal.displayName = 'ManageTicketModal';\n", "import { useState, useEffect } from 'react';\nimport { httpClient } from '@wix/essentials';\n\nconst BASE_URL = new URL(import.meta.url).origin;\n\nconst STATE_CONFIG = {\n STATUS_CHANGE: {\n title: 'Change Status',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,\n getPayload: (value: string | number) => ({ newStatus: value }),\n },\n PRIORITY_CHANGE: {\n title: 'Change Priority',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,\n getPayload: (value: string | number) => ({ newPriority: value }),\n },\n TRANSFER_TICKET: {\n title: 'Transfer Ticket',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,\n getPayload: (value: string | number) => ({ newTeamId: value }),\n },\n} as const;\n\ninterface UseManageTicketModalParams {\n id: string;\n state: string;\n onClose: (params: {\n newStatus?: string | number;\n newPriority?: string | number;\n newTeamId?: string | number;\n cancelled?: boolean;\n }) => void;\n}\n\nexport function useManageTicketModal({ id, state, onClose }: UseManageTicketModalParams) {\n const [isSaving, setIsSaving] = useState(false);\n const [newStatus, setNewStatus] = useState<string | number>('');\n const [newPriority, setNewPriority] = useState<string | number>('');\n const [selectedTeam, setSelectedTeam] = useState<string | number>('');\n const [teams, setTeams] = useState<{ _id: string; name: string }[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const modalTitle = STATE_CONFIG[state as keyof typeof STATE_CONFIG]?.title ?? 'Manage Ticket';\n\n useEffect(() => {\n if (state !== 'TRANSFER_TICKET') {\n setIsLoading(false);\n setIsError(false);\n return;\n }\n\n setIsLoading(true);\n setIsError(false);\n\n const fetchTeams = async () => {\n try {\n const response = await httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);\n const data = await response.json();\n setTeams(data.teams);\n } catch (error) {\n console.error('Error fetching teams:', error);\n setIsError(true);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchTeams();\n }, [id, state]);\n\n const handleSave = async () => {\n const config = STATE_CONFIG[state as keyof typeof STATE_CONFIG];\n if (!config) return;\n\n const valueMap: Record<string, string | number> = {\n STATUS_CHANGE: newStatus,\n PRIORITY_CHANGE: newPriority,\n TRANSFER_TICKET: selectedTeam,\n };\n const value = valueMap[state];\n if (!value) return;\n\n setIsSaving(true);\n try {\n await httpClient.fetchWithAuth(config.getUrl(id, value), { method: 'PUT' });\n onClose(config.getPayload(value));\n } catch (error) {\n console.error('Error saving:', error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleCancel = () => onClose({ cancelled: true });\n\n return {\n // State\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n // Setters\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n // Handlers\n handleSave,\n handleCancel,\n };\n}\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { StatusChangeContentProps } from './ManageTicketModal.types';\n\nconst STATUS_LABELS: Record<string, string> = {\n closed: 'Closed',\n in_progress: 'In Progress',\n open: 'Open',\n};\n\nconst StatusChangeContent: FC<StatusChangeContentProps> = ({ currentStatus, newStatus, onStatusChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Status\">\n <Input value={STATUS_LABELS[currentStatus] ?? currentStatus} disabled />\n </FormField>\n <FormField label=\"New Status\">\n <Dropdown\n options={[\n { id: 'open', value: 'Open' },\n { id: 'in_progress', value: 'In Progress' },\n { id: 'closed', value: 'Closed' },\n ]}\n placeholder=\"Select new status\"\n selectedId={newStatus || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onStatusChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default StatusChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { PriorityChangeContentProps } from './ManageTicketModal.types';\n\nconst PRIORITY_LABELS: Record<string, string> = {\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n};\n\nconst PriorityChangeContent: FC<PriorityChangeContentProps> = ({ currentPriority, newPriority, onPriorityChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Priority\">\n <Input value={PRIORITY_LABELS[currentPriority] ?? currentPriority} disabled />\n </FormField>\n <FormField label=\"New Priority\">\n <Dropdown\n options={[\n { id: 'high', value: 'High' },\n { id: 'medium', value: 'Medium' },\n { id: 'low', value: 'Low' },\n ]}\n placeholder=\"Select new priority\"\n selectedId={newPriority || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onPriorityChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default PriorityChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { TransferTicketContentProps } from './ManageTicketModal.types';\n\nconst TransferTicketContent: FC<TransferTicketContentProps> = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Team\">\n <Input value={currentTeam} disabled />\n </FormField>\n <FormField label=\"New Team\">\n <Dropdown\n options={teams.map((team) => ({ id: team._id, value: team.name }))}\n placeholder=\"Select new team\"\n selectedId={selectedTeam || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onTeamChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default TransferTicketContent;\n", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-450fcfe5\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-450fcfe5\";\n s.textContent = \".manage-ticket-modal {\\n /* ManageTicketModal base styles */\\n}\\n\";\n document.head.appendChild(s);\n}"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_design_system", "import_design_system", "import_jsx_runtime", "import_design_system", "import_jsx_runtime", "import_jsx_runtime", "React"]
7
+ }
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ ManageTicketModal: () => ManageTicketModal
34
+ });
35
+ module.exports = __toCommonJS(src_exports);
36
+
37
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
38
+ var import_react2 = __toESM(require("react"));
39
+
40
+ // src/components/ManageTicketModal/useManageTicketModal.ts
41
+ var import_react = require("react");
42
+ var import_essentials = require("@wix/essentials");
43
+ var BASE_URL = new URL("").origin;
44
+ var STATE_CONFIG = {
45
+ STATUS_CHANGE: {
46
+ title: "Change Status",
47
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,
48
+ getPayload: (value) => ({ newStatus: value })
49
+ },
50
+ PRIORITY_CHANGE: {
51
+ title: "Change Priority",
52
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,
53
+ getPayload: (value) => ({ newPriority: value })
54
+ },
55
+ TRANSFER_TICKET: {
56
+ title: "Transfer Ticket",
57
+ getUrl: (id, value) => `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,
58
+ getPayload: (value) => ({ newTeamId: value })
59
+ }
60
+ };
61
+ function useManageTicketModal({ id, state, onClose }) {
62
+ const [isSaving, setIsSaving] = (0, import_react.useState)(false);
63
+ const [newStatus, setNewStatus] = (0, import_react.useState)("");
64
+ const [newPriority, setNewPriority] = (0, import_react.useState)("");
65
+ const [selectedTeam, setSelectedTeam] = (0, import_react.useState)("");
66
+ const [teams, setTeams] = (0, import_react.useState)([]);
67
+ const [isLoading, setIsLoading] = (0, import_react.useState)(false);
68
+ const [isError, setIsError] = (0, import_react.useState)(false);
69
+ const modalTitle = STATE_CONFIG[state]?.title ?? "Manage Ticket";
70
+ (0, import_react.useEffect)(() => {
71
+ if (state !== "TRANSFER_TICKET") {
72
+ setIsLoading(false);
73
+ setIsError(false);
74
+ return;
75
+ }
76
+ setIsLoading(true);
77
+ setIsError(false);
78
+ const fetchTeams = async () => {
79
+ try {
80
+ const response = await import_essentials.httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);
81
+ const data = await response.json();
82
+ setTeams(data.teams);
83
+ } catch (error) {
84
+ console.error("Error fetching teams:", error);
85
+ setIsError(true);
86
+ } finally {
87
+ setIsLoading(false);
88
+ }
89
+ };
90
+ fetchTeams();
91
+ }, [id, state]);
92
+ const handleSave = async () => {
93
+ const config = STATE_CONFIG[state];
94
+ if (!config) return;
95
+ const valueMap = {
96
+ STATUS_CHANGE: newStatus,
97
+ PRIORITY_CHANGE: newPriority,
98
+ TRANSFER_TICKET: selectedTeam
99
+ };
100
+ const value = valueMap[state];
101
+ if (!value) return;
102
+ setIsSaving(true);
103
+ try {
104
+ await import_essentials.httpClient.fetchWithAuth(config.getUrl(id, value), { method: "PUT" });
105
+ onClose(config.getPayload(value));
106
+ } catch (error) {
107
+ console.error("Error saving:", error);
108
+ } finally {
109
+ setIsSaving(false);
110
+ }
111
+ };
112
+ const handleCancel = () => onClose({ cancelled: true });
113
+ return {
114
+ // State
115
+ isSaving,
116
+ isLoading,
117
+ isError,
118
+ teams,
119
+ newStatus,
120
+ newPriority,
121
+ selectedTeam,
122
+ modalTitle,
123
+ // Setters
124
+ setNewStatus,
125
+ setNewPriority,
126
+ setSelectedTeam,
127
+ // Handlers
128
+ handleSave,
129
+ handleCancel
130
+ };
131
+ }
132
+
133
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
134
+ var import_design_system4 = require("@wix/design-system");
135
+ var import_styles_studio_global = require("@wix/design-system/styles-studio.global.css");
136
+
137
+ // src/components/ManageTicketModal/status-change-content.tsx
138
+ var import_design_system = require("@wix/design-system");
139
+ var import_jsx_runtime = require("react/jsx-runtime");
140
+ var STATUS_LABELS = {
141
+ closed: "Closed",
142
+ in_progress: "In Progress",
143
+ open: "Open"
144
+ };
145
+ var StatusChangeContent = ({ currentStatus, newStatus, onStatusChange }) => {
146
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_design_system.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "Current Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Input, { value: STATUS_LABELS[currentStatus] ?? currentStatus, disabled: true }) }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "New Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
+ import_design_system.Dropdown,
150
+ {
151
+ options: [
152
+ { id: "open", value: "Open" },
153
+ { id: "in_progress", value: "In Progress" },
154
+ { id: "closed", value: "Closed" }
155
+ ],
156
+ placeholder: "Select new status",
157
+ selectedId: newStatus || "",
158
+ popoverProps: { appendTo: "window", zIndex: 9999 },
159
+ onSelect: (option) => onStatusChange(option?.id ?? "")
160
+ }
161
+ ) })
162
+ ] });
163
+ };
164
+ var status_change_content_default = StatusChangeContent;
165
+
166
+ // src/components/ManageTicketModal/priority-change-content.tsx
167
+ var import_design_system2 = require("@wix/design-system");
168
+ var import_jsx_runtime2 = require("react/jsx-runtime");
169
+ var PRIORITY_LABELS = {
170
+ high: "High",
171
+ medium: "Medium",
172
+ low: "Low"
173
+ };
174
+ var PriorityChangeContent = ({ currentPriority, newPriority, onPriorityChange }) => {
175
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_design_system2.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
176
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "Current Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.Input, { value: PRIORITY_LABELS[currentPriority] ?? currentPriority, disabled: true }) }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "New Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
178
+ import_design_system2.Dropdown,
179
+ {
180
+ options: [
181
+ { id: "high", value: "High" },
182
+ { id: "medium", value: "Medium" },
183
+ { id: "low", value: "Low" }
184
+ ],
185
+ placeholder: "Select new priority",
186
+ selectedId: newPriority || "",
187
+ popoverProps: { appendTo: "window", zIndex: 9999 },
188
+ onSelect: (option) => onPriorityChange(option?.id ?? "")
189
+ }
190
+ ) })
191
+ ] });
192
+ };
193
+ var priority_change_content_default = PriorityChangeContent;
194
+
195
+ // src/components/ManageTicketModal/transfer-ticket-content.tsx
196
+ var import_design_system3 = require("@wix/design-system");
197
+ var import_jsx_runtime3 = require("react/jsx-runtime");
198
+ var TransferTicketContent = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {
199
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_design_system3.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
200
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "Current Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.Input, { value: currentTeam, disabled: true }) }),
201
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "New Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
202
+ import_design_system3.Dropdown,
203
+ {
204
+ options: teams.map((team) => ({ id: team._id, value: team.name })),
205
+ placeholder: "Select new team",
206
+ selectedId: selectedTeam || "",
207
+ popoverProps: { appendTo: "window", zIndex: 9999 },
208
+ onSelect: (option) => onTeamChange(option?.id ?? "")
209
+ }
210
+ ) })
211
+ ] });
212
+ };
213
+ var transfer_ticket_content_default = TransferTicketContent;
214
+
215
+ // src/components/ManageTicketModal/ManageTicketModal.css
216
+ if (typeof document !== "undefined" && !document.getElementById("jrapps-style-450fcfe5")) {
217
+ const s = document.createElement("style");
218
+ s.id = "jrapps-style-450fcfe5";
219
+ s.textContent = ".manage-ticket-modal {\n /* ManageTicketModal base styles */\n}\n";
220
+ document.head.appendChild(s);
221
+ }
222
+
223
+ // src/components/ManageTicketModal/ManageTicketModal.tsx
224
+ var import_jsx_runtime4 = require("react/jsx-runtime");
225
+ var ManageTicketModal = import_react2.default.forwardRef(
226
+ ({
227
+ className,
228
+ isOpen,
229
+ id,
230
+ state,
231
+ onClose,
232
+ currentStatus,
233
+ currentPriority,
234
+ ticketNumber,
235
+ currentTeamName
236
+ }, ref) => {
237
+ const {
238
+ isSaving,
239
+ isLoading,
240
+ isError,
241
+ teams,
242
+ newStatus,
243
+ newPriority,
244
+ selectedTeam,
245
+ modalTitle,
246
+ setNewStatus,
247
+ setNewPriority,
248
+ setSelectedTeam,
249
+ handleSave,
250
+ handleCancel
251
+ } = useManageTicketModal({ id, state, onClose });
252
+ const renderContent = () => {
253
+ if (isLoading) {
254
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "loading", text: "Loading..." }) });
255
+ }
256
+ if (isError) {
257
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "error", text: "Error loading data" }) });
258
+ }
259
+ if (state === "STATUS_CHANGE") {
260
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
261
+ status_change_content_default,
262
+ {
263
+ currentStatus: currentStatus ?? "",
264
+ newStatus,
265
+ onStatusChange: setNewStatus
266
+ }
267
+ );
268
+ }
269
+ if (state === "PRIORITY_CHANGE") {
270
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
271
+ priority_change_content_default,
272
+ {
273
+ currentPriority: currentPriority ?? "",
274
+ newPriority,
275
+ onPriorityChange: setNewPriority
276
+ }
277
+ );
278
+ }
279
+ if (state === "TRANSFER_TICKET") {
280
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
281
+ transfer_ticket_content_default,
282
+ {
283
+ currentTeam: currentTeamName,
284
+ teams,
285
+ selectedTeam,
286
+ onTeamChange: setSelectedTeam
287
+ }
288
+ );
289
+ }
290
+ return null;
291
+ };
292
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Modal, { isOpen, ref, className, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
293
+ import_design_system4.CustomModalLayout,
294
+ {
295
+ width: "500px",
296
+ primaryButtonText: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "tiny" }) : "Save",
297
+ secondaryButtonText: "Cancel",
298
+ primaryButtonOnClick: handleSave,
299
+ secondaryButtonOnClick: handleCancel,
300
+ showHeaderDivider: true,
301
+ showFooterDivider: true,
302
+ title: modalTitle,
303
+ subtitle: !isLoading ? ticketNumber : "",
304
+ footnote: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { alignContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_design_system4.Text, { size: "small", children: [
305
+ "Powered by ",
306
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Text, { size: "small", weight: "bold", children: "My Tickets" })
307
+ ] }) }),
308
+ content: renderContent()
309
+ }
310
+ ) });
311
+ }
312
+ );
313
+ ManageTicketModal.displayName = "ManageTicketModal";
314
+ //# sourceMappingURL=index.js.map