@paro.io/expert-shared-components 1.14.40 → 1.14.42

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 (84) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
  4. package/lib/components/ClientReferencesSection/ParoError.js +10 -10
  5. package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
  6. package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
  7. package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
  8. package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
  9. package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
  10. package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
  11. package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
  12. package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
  13. package/lib/components/DiscussionThread/DiscussionThread.d.ts +25 -25
  14. package/lib/components/DiscussionThread/DiscussionThread.js +137 -137
  15. package/lib/components/DiscussionThread/chat.d.ts +22 -22
  16. package/lib/components/DiscussionThread/chat.js +106 -106
  17. package/lib/components/DiscussionThread/index.d.ts +1 -1
  18. package/lib/components/DiscussionThread/index.js +5 -5
  19. package/lib/components/DocumentCenter/ClientDocumentsTable.d.ts +3 -1
  20. package/lib/components/DocumentCenter/ClientDocumentsTable.js +6 -16
  21. package/lib/components/DocumentCenter/DocumentCenter.js +8 -1
  22. package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
  23. package/lib/components/DocumentCenter/DocumentTable.js +350 -350
  24. package/lib/components/DocumentCenter/DragDropUpload.d.ts +10 -0
  25. package/lib/components/DocumentCenter/DragDropUpload.js +124 -0
  26. package/lib/components/DocumentCenter/MultiFileUploadSection.d.ts +17 -0
  27. package/lib/components/DocumentCenter/MultiFileUploadSection.js +672 -0
  28. package/lib/components/DocumentCenter/ParoDocumentsTable.js +2 -2
  29. package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
  30. package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
  31. package/lib/components/DocumentCenter/index.d.ts +3 -1
  32. package/lib/components/DocumentCenter/index.js +5 -1
  33. package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
  34. package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
  35. package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
  36. package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
  37. package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
  38. package/lib/components/EarningsTracker/EarningsTracker.js +508 -508
  39. package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
  40. package/lib/components/EarningsTracker/EditDateModal.js +149 -149
  41. package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
  42. package/lib/components/EarningsTracker/EmailModal.js +79 -79
  43. package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
  44. package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
  45. package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
  46. package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
  47. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
  48. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
  49. package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
  50. package/lib/components/EarningsTracker/ProgressBar.js +66 -66
  51. package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
  52. package/lib/components/EarningsTracker/ReviewRequestModal.js +135 -135
  53. package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
  54. package/lib/components/EarningsTracker/RightCardUI.js +231 -231
  55. package/lib/components/EarningsTracker/index.d.ts +1 -1
  56. package/lib/components/EarningsTracker/index.js +5 -5
  57. package/lib/components/Escalations/CustomTag.d.ts +3 -3
  58. package/lib/components/Escalations/CustomTag.js +25 -25
  59. package/lib/components/Escalations/ViewReponseModal.d.ts +8 -8
  60. package/lib/components/Escalations/ViewReponseModal.js +27 -27
  61. package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
  62. package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
  63. package/lib/components/Invoices/DiscussionSection.js +33 -17
  64. package/lib/components/Invoices/TestDecisionSection.d.ts +1 -1
  65. package/lib/components/Invoices/TestDecisionSection.js +126 -126
  66. package/lib/components/OrganizationChart/OrganizationChart.d.ts +15 -15
  67. package/lib/components/OrganizationChart/OrganizationChart.js +312 -312
  68. package/lib/components/OrganizationChart/PersonCard.js +5 -5
  69. package/lib/components/OrganizationChart/utils.js +79 -79
  70. package/lib/components/ProjectCard/ProgressBar.js +4 -4
  71. package/lib/components/ProjectCard/ReviewRequestModal.js +5 -5
  72. package/lib/components/ProjectIntelligence/MissingInformation/index.js +1 -1
  73. package/lib/components/Reviews/Pagination.js +6 -6
  74. package/lib/components/ReviewsTab/RatingHeader.js +6 -6
  75. package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
  76. package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
  77. package/lib/components/shared/Image.js +13 -13
  78. package/lib/components/shared/ProfileTextField.d.ts +18 -18
  79. package/lib/components/shared/ProfileTextField.js +16 -16
  80. package/lib/components/shared/StyledActionButtons.d.ts +7 -7
  81. package/lib/components/shared/StyledActionButtons.js +15 -15
  82. package/lib/components/shared/ToastNotification.d.ts +10 -10
  83. package/lib/components/shared/ToastNotification.js +63 -63
  84. package/package.json +67 -67
@@ -1,27 +1,27 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const base_icons_1 = require("@paro.io/base-icons");
8
- const core_1 = require("@material-ui/core");
9
- const ViewResponseModal = ({ response, open, onClose, isExpert }) => {
10
- return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'sm' },
11
- react_1.default.createElement(core_1.DialogTitle, null,
12
- react_1.default.createElement("div", { className: "text-black mb-1 p-2 pl-4 absolute top-0 left-0 w-full flex flex-row justify-between items-center z-50" },
13
- react_1.default.createElement("div", { className: "flex flex-col items-start" },
14
- react_1.default.createElement("h1", { className: "text-md font-bold mr-2" }, isExpert ? 'Client Response' : 'Expert Response')),
15
- react_1.default.createElement("div", { className: "flex items-center space-x-4" },
16
- react_1.default.createElement(core_1.IconButton, { onClick: onClose },
17
- react_1.default.createElement(base_icons_1.IconX, null))))),
18
- react_1.default.createElement(core_1.DialogContent, null,
19
- react_1.default.createElement("div", { className: "bg-green-50 border-green-800 border border-l-4 rounded p-4 mt-4 mb-4" },
20
- react_1.default.createElement("p", { className: "text-sm font-medium" },
21
- "Status: ",
22
- react_1.default.createElement("span", { className: "font-normal" }, "Responded")),
23
- react_1.default.createElement("p", { className: "text-sm font-medium" },
24
- "Response: ",
25
- react_1.default.createElement("span", { className: "font-normal" }, response))))));
26
- };
27
- exports.default = ViewResponseModal;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const base_icons_1 = require("@paro.io/base-icons");
8
+ const core_1 = require("@material-ui/core");
9
+ const ViewResponseModal = ({ response, open, onClose, isExpert }) => {
10
+ return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'sm' },
11
+ react_1.default.createElement(core_1.DialogTitle, null,
12
+ react_1.default.createElement("div", { className: "text-black mb-1 p-2 pl-4 absolute top-0 left-0 w-full flex flex-row justify-between items-center z-50" },
13
+ react_1.default.createElement("div", { className: "flex flex-col items-start" },
14
+ react_1.default.createElement("h1", { className: "text-md font-bold mr-2" }, isExpert ? 'Client Response' : 'Expert Response')),
15
+ react_1.default.createElement("div", { className: "flex items-center space-x-4" },
16
+ react_1.default.createElement(core_1.IconButton, { onClick: onClose },
17
+ react_1.default.createElement(base_icons_1.IconX, null))))),
18
+ react_1.default.createElement(core_1.DialogContent, null,
19
+ react_1.default.createElement("div", { className: "bg-green-50 border-green-800 border border-l-4 rounded p-4 mt-4 mb-4" },
20
+ react_1.default.createElement("p", { className: "text-sm font-medium" },
21
+ "Status: ",
22
+ react_1.default.createElement("span", { className: "font-normal" }, "Responded")),
23
+ react_1.default.createElement("p", { className: "text-sm font-medium" },
24
+ "Response: ",
25
+ react_1.default.createElement("span", { className: "font-normal" }, response))))));
26
+ };
27
+ exports.default = ViewResponseModal;
@@ -11,12 +11,12 @@ const CopyToClipboardAlert_1 = __importDefault(require("../shared/CopyToClipboar
11
11
  const colors_1 = __importDefault(require("../ClientReferencesSection/constants/colors"));
12
12
  const Banner_1 = __importDefault(require("./Banner"));
13
13
  const base_icons_1 = require("@paro.io/base-icons");
14
- const StyledButton = (0, styled_components_1.default)(core_1.Button) `
15
- margin: 0px !important;
16
- padding: 26px 0 18px 0 !important;
17
- span {
18
- color: ${colors_1.default.buttonText} !important
19
- }
14
+ const StyledButton = (0, styled_components_1.default)(core_1.Button) `
15
+ margin: 0px !important;
16
+ padding: 26px 0 18px 0 !important;
17
+ span {
18
+ color: ${colors_1.default.buttonText} !important
19
+ }
20
20
  `;
21
21
  const ActionButton = ({ title, ariaLabel, onClick, icon: Icon }) => (react_1.default.createElement(core_1.Tooltip, { arrow: true, placement: "top", interactive: true, className: "whitespace-nowrap", title: title },
22
22
  react_1.default.createElement(core_1.IconButton, { "aria-label": ariaLabel, onClick: onClick },
@@ -53,13 +53,13 @@ const formatPhoneNumber = (phone) => {
53
53
  return `(${numericPhone.slice(0, 3)}) ${numericPhone.slice(3, 6)} - ${numericPhone.slice(6)}`;
54
54
  };
55
55
  exports.formatPhoneNumber = formatPhoneNumber;
56
- exports.ProfilePhotoPreview = styled_components_1.default.img `
57
- height: 86px;
58
- width: 86px;
59
- border: 1px solid ${colors_1.default.lightGray};
60
- border-radius: 50%;
61
- object-fit: cover;
62
- object-position: top;
56
+ exports.ProfilePhotoPreview = styled_components_1.default.img `
57
+ height: 86px;
58
+ width: 86px;
59
+ border: 1px solid ${colors_1.default.lightGray};
60
+ border-radius: 50%;
61
+ object-fit: cover;
62
+ object-position: top;
63
63
  `;
64
64
  const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile, firstName, lastName, primaryServiceLine, editServiceLine, city, stateAbbreviation, email, phone, setOpen, paroProjectsData, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, isInternal, getUserByEmail, updateUserEmail, updateUserMutation, getUserByEmailLazyQuery, updateUserPassword, verifyUserPassword, getExpertRates, paroTenure, hourlyRate, }) => {
65
65
  var _a;
@@ -42,7 +42,7 @@ const dayjs_1 = __importDefault(require("dayjs"));
42
42
  const base_icons_1 = require("@paro.io/base-icons");
43
43
  const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages, onCreateMessage, isInternal = false, isExpert = true, internalEscalationTo, clientEscalationTo, }) => {
44
44
  const [newMessage, setNewMessage] = (0, react_1.useState)('');
45
- const [visibility, setVisibility] = (0, react_1.useState)('ALL');
45
+ const [visibility, setVisibility] = (0, react_1.useState)('INTERNAL_ONLY');
46
46
  const [isLoading, setIsLoading] = (0, react_1.useState)(false);
47
47
  const threadsEndRef = (0, react_1.useRef)(null);
48
48
  (0, react_1.useEffect)(() => {
@@ -180,14 +180,22 @@ const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages,
180
180
  isInternal && (react_1.default.createElement(react_1.default.Fragment, null,
181
181
  react_1.default.createElement("span", { className: "text-sm text-[#666666]" }, "Visible to:"),
182
182
  react_1.default.createElement("div", { className: "flex items-center space-x-2" },
183
- internalEscalationTo === 'expert' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
184
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
185
- react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Expert Only"))),
186
- internalEscalationTo === 'client' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
187
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
188
- react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only"))),
183
+ internalEscalationTo === 'expert' && (react_1.default.createElement(react_1.default.Fragment, null,
184
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
185
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'EXPERT_INTERNAL_ONLY', onChange: () => setVisibility('EXPERT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
186
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Expert Only")),
187
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
188
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
189
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")))),
190
+ internalEscalationTo === 'client' && (react_1.default.createElement(react_1.default.Fragment, null,
191
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
192
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'CLIENT_INTERNAL_ONLY', onChange: () => setVisibility('CLIENT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
193
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only")),
194
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
195
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
196
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")))),
189
197
  internalEscalationTo === 'internal' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
190
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
198
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
191
199
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only"))),
192
200
  internalEscalationTo === 'both' && (react_1.default.createElement(react_1.default.Fragment, null,
193
201
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
@@ -217,7 +225,7 @@ const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages,
217
225
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "All")))),
218
226
  !internalEscalationTo && clientEscalationTo === 'paro' && (react_1.default.createElement(react_1.default.Fragment, null,
219
227
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
220
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
228
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
221
229
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")),
222
230
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
223
231
  react_1.default.createElement("input", { type: "radio", checked: visibility === 'CLIENT_INTERNAL_ONLY', onChange: () => setVisibility('CLIENT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
@@ -239,7 +247,7 @@ const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages,
239
247
  react_1.default.createElement("span", { className: "text-sm text-[#666666]" }, "Visible to:"),
240
248
  react_1.default.createElement("div", { className: "flex items-center space-x-2" },
241
249
  clientEscalationTo === 'paro' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
242
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
250
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
243
251
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only"))),
244
252
  clientEscalationTo === 'both' && (react_1.default.createElement(react_1.default.Fragment, null,
245
253
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
@@ -252,14 +260,22 @@ const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages,
252
260
  react_1.default.createElement("input", { type: "radio", checked: visibility === 'ALL', onChange: () => setVisibility('ALL'), className: "form-radio text-[#248384]" }),
253
261
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "All"))))),
254
262
  react_1.default.createElement("div", { className: "flex items-center space-x-2" },
255
- internalEscalationTo === 'expert' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
256
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
257
- react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Expert Only"))),
258
- internalEscalationTo === 'client' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
259
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
260
- react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only"))),
263
+ internalEscalationTo === 'expert' && (react_1.default.createElement(react_1.default.Fragment, null,
264
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
265
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'EXPERT_INTERNAL_ONLY', onChange: () => setVisibility('EXPERT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
266
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Expert Only")),
267
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
268
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
269
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")))),
270
+ internalEscalationTo === 'client' && (react_1.default.createElement(react_1.default.Fragment, null,
271
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
272
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'CLIENT_INTERNAL_ONLY', onChange: () => setVisibility('CLIENT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
273
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only")),
274
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
275
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
276
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")))),
261
277
  internalEscalationTo === 'internal' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
262
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
278
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
263
279
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only"))),
264
280
  internalEscalationTo === 'both' || (!internalEscalationTo && !clientEscalationTo) && (react_1.default.createElement(react_1.default.Fragment, null,
265
281
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
@@ -1 +1 @@
1
- export declare const TestDecisionSection: () => JSX.Element;
1
+ export declare const TestDecisionSection: () => JSX.Element;
@@ -1,126 +1,126 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TestDecisionSection = void 0;
16
- const react_1 = __importDefault(require("react"));
17
- const DecisionSection_1 = require("./DecisionSection");
18
- // Test data from the provided JSON
19
- const testDispute = {
20
- "__typename": "ClientInvoiceDispute",
21
- "disputeId": 35,
22
- "approvedAmount": 450,
23
- "chatEnabled": true,
24
- "disputeDate": "2025-05-22",
25
- "disputeUpdatedDate": "2025-05-23",
26
- "freelancerId": 8081,
27
- "freelancer": {
28
- "__typename": "User",
29
- "id": 8081,
30
- "email": "andpande@gmail.com",
31
- "firstName": "William",
32
- "lastName": "Annon"
33
- },
34
- "status": "Resolved",
35
- "finalDecisionOwnerId": 29005,
36
- "invoice": {
37
- "__typename": "ClientInvoice",
38
- "amount": 450,
39
- "balanceDue": 450,
40
- "clientId": 4433,
41
- "dateGenerated": "2025-04-14",
42
- "id": 175325,
43
- "month": "2025-04-01"
44
- },
45
- "disputeProjects": [
46
- {
47
- "__typename": "ClientInvoiceDisputeProject",
48
- "id": 37,
49
- "projectId": 19158,
50
- "disputeAmount": 450,
51
- "disputeHours": 30,
52
- "disputeType": "Hourly",
53
- "disputeReasonCode": "Incorrect Hours Logged",
54
- "clientExplanation": "I have a dispute over this expert for the current invoice 175325",
55
- "clientDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2Ftesting.pdf,https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F_Carmelita_Resume-Graduation__1_.docx",
56
- "expertDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F0eb4b31b-b6d8-4cd1-b6ac-39b807ea4577.pdf",
57
- "resolutionMode": null,
58
- "resolutionType": null,
59
- "project": {
60
- "__typename": "Project",
61
- "name": "Ongoing Ad-Hoc Support",
62
- "freelancerRate": null,
63
- "clientRate": null,
64
- "projectHours": [
65
- {
66
- "__typename": "ProjectHour",
67
- "id": 136605,
68
- "date": "2022-02-11",
69
- "description": "Ate Tacos",
70
- "hours": 8
71
- },
72
- {
73
- "__typename": "ProjectHour",
74
- "id": 136606,
75
- "date": "2022-02-12",
76
- "description": "Worked on project analysis",
77
- "hours": 6
78
- },
79
- {
80
- "__typename": "ProjectHour",
81
- "id": 136607,
82
- "date": "2022-02-13",
83
- "description": "Client meeting and documentation",
84
- "hours": 4
85
- },
86
- {
87
- "__typename": "ProjectHour",
88
- "id": 136608,
89
- "date": "2022-02-14",
90
- "description": "Code review and testing",
91
- "hours": 7
92
- },
93
- {
94
- "__typename": "ProjectHour",
95
- "id": 136609,
96
- "date": "2022-02-15",
97
- "description": "Final deliverable preparation",
98
- "hours": 5
99
- }
100
- ]
101
- }
102
- }
103
- ],
104
- "lastMessageAt": "2025-05-23T10:56:53.000Z",
105
- "messageCount": 5,
106
- "client": {
107
- "__typename": "Client",
108
- "name": "Vessel Advisors"
109
- }
110
- };
111
- const testUser = {
112
- userId: 29005,
113
- firstName: "Test",
114
- lastName: "User"
115
- };
116
- const TestDecisionSection = () => {
117
- const mockOnUpdateDispute = (variables) => __awaiter(void 0, void 0, void 0, function* () {
118
- console.log('Mock update dispute called with:', variables);
119
- return Promise.resolve({ success: true });
120
- });
121
- const mockUpdateInvoiceMutation = {};
122
- return (react_1.default.createElement("div", { className: "p-8 max-w-4xl mx-auto" },
123
- react_1.default.createElement("h1", { className: "text-2xl font-bold mb-6" }, "Test Decision Section with Hours Modal"),
124
- react_1.default.createElement(DecisionSection_1.DecisionSection, { dispute: testDispute, onUpdateDispute: mockOnUpdateDispute, updateInvoiceMutation: mockUpdateInvoiceMutation, user: testUser })));
125
- };
126
- exports.TestDecisionSection = TestDecisionSection;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TestDecisionSection = void 0;
16
+ const react_1 = __importDefault(require("react"));
17
+ const DecisionSection_1 = require("./DecisionSection");
18
+ // Test data from the provided JSON
19
+ const testDispute = {
20
+ "__typename": "ClientInvoiceDispute",
21
+ "disputeId": 35,
22
+ "approvedAmount": 450,
23
+ "chatEnabled": true,
24
+ "disputeDate": "2025-05-22",
25
+ "disputeUpdatedDate": "2025-05-23",
26
+ "freelancerId": 8081,
27
+ "freelancer": {
28
+ "__typename": "User",
29
+ "id": 8081,
30
+ "email": "andpande@gmail.com",
31
+ "firstName": "William",
32
+ "lastName": "Annon"
33
+ },
34
+ "status": "Resolved",
35
+ "finalDecisionOwnerId": 29005,
36
+ "invoice": {
37
+ "__typename": "ClientInvoice",
38
+ "amount": 450,
39
+ "balanceDue": 450,
40
+ "clientId": 4433,
41
+ "dateGenerated": "2025-04-14",
42
+ "id": 175325,
43
+ "month": "2025-04-01"
44
+ },
45
+ "disputeProjects": [
46
+ {
47
+ "__typename": "ClientInvoiceDisputeProject",
48
+ "id": 37,
49
+ "projectId": 19158,
50
+ "disputeAmount": 450,
51
+ "disputeHours": 30,
52
+ "disputeType": "Hourly",
53
+ "disputeReasonCode": "Incorrect Hours Logged",
54
+ "clientExplanation": "I have a dispute over this expert for the current invoice 175325",
55
+ "clientDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2Ftesting.pdf,https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F_Carmelita_Resume-Graduation__1_.docx",
56
+ "expertDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F0eb4b31b-b6d8-4cd1-b6ac-39b807ea4577.pdf",
57
+ "resolutionMode": null,
58
+ "resolutionType": null,
59
+ "project": {
60
+ "__typename": "Project",
61
+ "name": "Ongoing Ad-Hoc Support",
62
+ "freelancerRate": null,
63
+ "clientRate": null,
64
+ "projectHours": [
65
+ {
66
+ "__typename": "ProjectHour",
67
+ "id": 136605,
68
+ "date": "2022-02-11",
69
+ "description": "Ate Tacos",
70
+ "hours": 8
71
+ },
72
+ {
73
+ "__typename": "ProjectHour",
74
+ "id": 136606,
75
+ "date": "2022-02-12",
76
+ "description": "Worked on project analysis",
77
+ "hours": 6
78
+ },
79
+ {
80
+ "__typename": "ProjectHour",
81
+ "id": 136607,
82
+ "date": "2022-02-13",
83
+ "description": "Client meeting and documentation",
84
+ "hours": 4
85
+ },
86
+ {
87
+ "__typename": "ProjectHour",
88
+ "id": 136608,
89
+ "date": "2022-02-14",
90
+ "description": "Code review and testing",
91
+ "hours": 7
92
+ },
93
+ {
94
+ "__typename": "ProjectHour",
95
+ "id": 136609,
96
+ "date": "2022-02-15",
97
+ "description": "Final deliverable preparation",
98
+ "hours": 5
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ ],
104
+ "lastMessageAt": "2025-05-23T10:56:53.000Z",
105
+ "messageCount": 5,
106
+ "client": {
107
+ "__typename": "Client",
108
+ "name": "Vessel Advisors"
109
+ }
110
+ };
111
+ const testUser = {
112
+ userId: 29005,
113
+ firstName: "Test",
114
+ lastName: "User"
115
+ };
116
+ const TestDecisionSection = () => {
117
+ const mockOnUpdateDispute = (variables) => __awaiter(void 0, void 0, void 0, function* () {
118
+ console.log('Mock update dispute called with:', variables);
119
+ return Promise.resolve({ success: true });
120
+ });
121
+ const mockUpdateInvoiceMutation = {};
122
+ return (react_1.default.createElement("div", { className: "p-8 max-w-4xl mx-auto" },
123
+ react_1.default.createElement("h1", { className: "text-2xl font-bold mb-6" }, "Test Decision Section with Hours Modal"),
124
+ react_1.default.createElement(DecisionSection_1.DecisionSection, { dispute: testDispute, onUpdateDispute: mockOnUpdateDispute, updateInvoiceMutation: mockUpdateInvoiceMutation, user: testUser })));
125
+ };
126
+ exports.TestDecisionSection = TestDecisionSection;
@@ -1,15 +1,15 @@
1
- interface OrgChartProps {
2
- openModal: boolean;
3
- setOpenModal: (openModal: boolean) => void;
4
- expertFirms: any;
5
- firstName: string;
6
- lastName: string;
7
- imageUrl?: string;
8
- primaryServiceLine: string;
9
- city: string;
10
- stateAbbreviation: string;
11
- paroTenure?: string;
12
- isPublicProfile?: boolean;
13
- }
14
- export declare const OrganizationChart: ({ openModal, setOpenModal, expertFirms, firstName, lastName, imageUrl, primaryServiceLine, city, stateAbbreviation, paroTenure, isPublicProfile }: OrgChartProps) => JSX.Element;
15
- export {};
1
+ interface OrgChartProps {
2
+ openModal: boolean;
3
+ setOpenModal: (openModal: boolean) => void;
4
+ expertFirms: any;
5
+ firstName: string;
6
+ lastName: string;
7
+ imageUrl?: string;
8
+ primaryServiceLine: string;
9
+ city: string;
10
+ stateAbbreviation: string;
11
+ paroTenure?: string;
12
+ isPublicProfile?: boolean;
13
+ }
14
+ export declare const OrganizationChart: ({ openModal, setOpenModal, expertFirms, firstName, lastName, imageUrl, primaryServiceLine, city, stateAbbreviation, paroTenure, isPublicProfile }: OrgChartProps) => JSX.Element;
15
+ export {};