@paro.io/expert-shared-components 1.6.5 → 1.6.7
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/lib/components/DocumentCenter/ClientDocumentsTable.js +6 -1
- package/lib/components/DocumentCenter/DocumentCenter.d.ts +3 -1
- package/lib/components/DocumentCenter/DocumentCenter.js +24 -24
- package/lib/components/DocumentCenter/ParoDocumentsTable.js +1 -1
- package/lib/components/ExpertProfileHeader/ProfileSection.js +3 -3
- package/lib/components/ExpertProfileHeader/ReviewsModal.js +1 -1
- package/lib/components/Reviews/Reviews.js +2 -1
- package/lib/components/ReviewsTab/ReviewsTab.js +1 -1
- package/lib/components/shared/utils.js +1 -1
- package/package.json +1 -1
|
@@ -322,6 +322,11 @@ const ClientDocumentsTable = ({ legacyFreelancerId, expertFiles, setExpertClient
|
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
});
|
|
325
|
+
(0, react_1.useEffect)(() => {
|
|
326
|
+
if (expertFiles && expertFiles.length > 0) {
|
|
327
|
+
setFiles(expertFiles);
|
|
328
|
+
}
|
|
329
|
+
}, [expertFiles]);
|
|
325
330
|
const toggleDeleteModal = (fileName, fileId) => {
|
|
326
331
|
setDeleteModalOpen(!isDeleteModalOpen);
|
|
327
332
|
if (fileName) {
|
|
@@ -332,7 +337,7 @@ const ClientDocumentsTable = ({ legacyFreelancerId, expertFiles, setExpertClient
|
|
|
332
337
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
333
338
|
react_1.default.createElement(DocumentUploadRow_1.DocumentUploadRow, { clientAndProject: clientAndProject, setClientAndProject: setClientAndProject, clientAndProjectsList: clientAndProjectsList, docType: docType, setDocType: setDocType, paroDocuments: paroDocuments, uploadExpertClientFiles: uploadExpertClientFiles, refetchFiles: refetchFiles, legacyFreelancerId: legacyFreelancerId, freelancerName: freelancerName, freelancerEmail: freelancerEmail, isClientPortal: isClientPortal, documentUploadUrl: documentUploadUrl }),
|
|
334
339
|
react_1.default.createElement(utils_1.CustomPaper, { style: { height: `${(files === null || files === void 0 ? void 0 : files.length) === 0 ? '30vh' : 'auto'}` } },
|
|
335
|
-
|
|
340
|
+
react_1.default.createElement("div", { className: 'w-1/3' },
|
|
336
341
|
react_1.default.createElement(base_ui_1.Input, { placeholder: "Search Documents", type: "text", value: searchText, onChange: (e) => setSearchText(e.target.value) })),
|
|
337
342
|
react_1.default.createElement(core_1.Box, { mt: 2 }, (files === null || files === void 0 ? void 0 : files.length) > 0 ? react_1.default.createElement(core_1.Table, { style: { overflow: 'auto' } },
|
|
338
343
|
react_1.default.createElement(core_1.TableHead, null,
|
|
@@ -4,6 +4,7 @@ interface DocumentCenterProps {
|
|
|
4
4
|
setOpenModal: (openModal: boolean) => void;
|
|
5
5
|
expertClientFilesLazyQuery: any;
|
|
6
6
|
getClientAndProjectsLazyQuery?: any;
|
|
7
|
+
clientFilesData?: any[];
|
|
7
8
|
uploadExpertClientFiles: any;
|
|
8
9
|
uploadFileData?: any;
|
|
9
10
|
deleteFileMutation?: any;
|
|
@@ -20,6 +21,7 @@ interface DocumentCenterProps {
|
|
|
20
21
|
getFreelancerLazyQuery?: any;
|
|
21
22
|
documentUploadUrl?: string;
|
|
22
23
|
downloadDocumentUrl?: string;
|
|
24
|
+
loading?: boolean;
|
|
23
25
|
}
|
|
24
|
-
export declare const DocumentCenter: ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, }: DocumentCenterProps) => JSX.Element;
|
|
26
|
+
export declare const DocumentCenter: ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, clientFilesData, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, loading, }: DocumentCenterProps) => JSX.Element;
|
|
25
27
|
export {};
|
|
@@ -80,41 +80,33 @@ const CustomDialogContent = (0, core_1.styled)(core_1.DialogContent)(({ theme })
|
|
|
80
80
|
background: '#707070',
|
|
81
81
|
},
|
|
82
82
|
}));
|
|
83
|
-
const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal = false, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, }) => {
|
|
83
|
+
const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, clientFilesData, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal = false, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, loading, }) => {
|
|
84
84
|
var _a;
|
|
85
85
|
const [value, setValue] = (0, react_1.useState)(0);
|
|
86
|
-
const [expertClientFiles, setExpertClientFiles] = (0, react_1.useState)([]);
|
|
86
|
+
const [expertClientFiles, setExpertClientFiles] = (0, react_1.useState)(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
|
|
87
87
|
const [expertFiles, setExpertFiles] = (0, react_1.useState)([]);
|
|
88
88
|
const [clientAndProjects, setClientAndProjects] = (0, react_1.useState)([]);
|
|
89
|
-
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
90
89
|
const [insuranceExpiryDate, setInsuranceExpiryDate] = (0, react_1.useState)();
|
|
91
90
|
const fetchQueries = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j
|
|
91
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
93
92
|
try {
|
|
94
|
-
|
|
93
|
+
loading = true;
|
|
95
94
|
const freelancerIds = Array.isArray(legacyFreelancerId) ? legacyFreelancerId : [legacyFreelancerId];
|
|
96
95
|
let clientFiles = [];
|
|
97
96
|
let clientAndProjects = [];
|
|
98
97
|
let expertFiles = [];
|
|
99
98
|
let expiryDate = [];
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
]);
|
|
111
|
-
clientFiles = (_f = (_e = (_d = clientFilesResponse === null || clientFilesResponse === void 0 ? void 0 : clientFilesResponse.data) === null || _d === void 0 ? void 0 : _d.getExpertClientFiles) === null || _e === void 0 ? void 0 : _e.files) !== null && _f !== void 0 ? _f : [];
|
|
112
|
-
clientAndProjects = (_h = (_g = clientAndProjectsResponse === null || clientAndProjectsResponse === void 0 ? void 0 : clientAndProjectsResponse.data) === null || _g === void 0 ? void 0 : _g.getParoProjects) !== null && _h !== void 0 ? _h : [];
|
|
113
|
-
expertFiles = (_k = (_j = expertFilesResponse === null || expertFilesResponse === void 0 ? void 0 : expertFilesResponse.data) === null || _j === void 0 ? void 0 : _j.getFiles) !== null && _k !== void 0 ? _k : [];
|
|
114
|
-
expiryDate = (_m = (_l = freelancerData === null || freelancerData === void 0 ? void 0 : freelancerData.data) === null || _l === void 0 ? void 0 : _l.getFreelancer) === null || _m === void 0 ? void 0 : _m.insuranceExpiryDate;
|
|
115
|
-
}
|
|
99
|
+
const [clientFilesResponse, clientAndProjectsResponse, expertFilesResponse, freelancerData] = yield Promise.all([
|
|
100
|
+
expertClientFilesLazyQuery && expertClientFilesLazyQuery({ variables: { freelancerIds }, fetchPolicy: 'network-only', }),
|
|
101
|
+
getClientAndProjectsLazyQuery && getClientAndProjectsLazyQuery({ variables: { legacyFreelancerId: legacyFreelancerId, forReviews: true }, fetchPolicy: 'network-only', }),
|
|
102
|
+
getFilesLazyQuery && getFilesLazyQuery({ variables: { input: { foldername: foldername }, fetchPolicy: 'network-only', } }),
|
|
103
|
+
getFreelancerLazyQuery && getFreelancerLazyQuery({ variables: { id: legacyFreelancerId }, fetchPolicy: 'network-only', })
|
|
104
|
+
]);
|
|
105
|
+
clientFiles = (_c = (_b = (_a = clientFilesResponse === null || clientFilesResponse === void 0 ? void 0 : clientFilesResponse.data) === null || _a === void 0 ? void 0 : _a.getExpertClientFiles) === null || _b === void 0 ? void 0 : _b.files) !== null && _c !== void 0 ? _c : [];
|
|
106
|
+
clientAndProjects = (_e = (_d = clientAndProjectsResponse === null || clientAndProjectsResponse === void 0 ? void 0 : clientAndProjectsResponse.data) === null || _d === void 0 ? void 0 : _d.getParoProjects) !== null && _e !== void 0 ? _e : [];
|
|
107
|
+
expertFiles = (_g = (_f = expertFilesResponse === null || expertFilesResponse === void 0 ? void 0 : expertFilesResponse.data) === null || _f === void 0 ? void 0 : _f.getFiles) !== null && _g !== void 0 ? _g : [];
|
|
108
|
+
expiryDate = (_j = (_h = freelancerData === null || freelancerData === void 0 ? void 0 : freelancerData.data) === null || _h === void 0 ? void 0 : _h.getFreelancer) === null || _j === void 0 ? void 0 : _j.insuranceExpiryDate;
|
|
116
109
|
const filterProjects = clientAndProjects.filter((p) => p.status !== 'Complete');
|
|
117
|
-
setExpertClientFiles(clientFiles);
|
|
118
110
|
setClientAndProjects(isClientPortal ? expertProjectsList : filterProjects);
|
|
119
111
|
setExpertFiles(expertFiles);
|
|
120
112
|
setInsuranceExpiryDate(expiryDate ? (0, utils_1.formatDate)(expiryDate) : '');
|
|
@@ -123,14 +115,22 @@ const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertCli
|
|
|
123
115
|
console.error("Error fetching queries:", error);
|
|
124
116
|
}
|
|
125
117
|
finally {
|
|
126
|
-
|
|
118
|
+
loading = false;
|
|
127
119
|
}
|
|
128
120
|
});
|
|
129
121
|
(0, react_1.useEffect)(() => {
|
|
130
|
-
if (openModal) {
|
|
122
|
+
if (openModal && !isClientPortal) {
|
|
131
123
|
fetchQueries();
|
|
132
124
|
}
|
|
133
125
|
}, [openModal]);
|
|
126
|
+
(0, react_1.useEffect)(() => {
|
|
127
|
+
if (clientFilesData && clientFilesData.length > 0) {
|
|
128
|
+
setExpertClientFiles(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
|
|
129
|
+
setClientAndProjects(expertProjectsList !== null && expertProjectsList !== void 0 ? expertProjectsList : []);
|
|
130
|
+
setExpertFiles(clientFilesData);
|
|
131
|
+
loading = false;
|
|
132
|
+
}
|
|
133
|
+
}, [clientFilesData]);
|
|
134
134
|
const handleChange = (event, newValue) => {
|
|
135
135
|
if (newValue >= 0) {
|
|
136
136
|
setValue(newValue);
|
|
@@ -321,7 +321,7 @@ const ParoDocumentsTable = ({ legacyFreelancerId, expiryDate, setExpiryDate, exp
|
|
|
321
321
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
322
322
|
react_1.default.createElement(DocumentUploadRow_1.DocumentUploadRow, { documentName: documentName, setDocumentName: setDocumentName, clientAndProject: clientAndProject, setClientAndProject: setClientAndProject, docType: docType, setDocType: setDocType, searchText: searchText, setSearchText: setSearchText, paroDocuments: paroDocuments, handleUpload: handleUpload, expiryDate: insuranceExpiryDate, handleDateChange: handleDateChange, error: error, isUploading: isUploading }),
|
|
323
323
|
react_1.default.createElement(utils_1.CustomPaper, null,
|
|
324
|
-
|
|
324
|
+
react_1.default.createElement("div", { className: 'w-1/4' },
|
|
325
325
|
react_1.default.createElement(base_ui_1.Input, { placeholder: "Search Documents", type: "text", value: searchText, onChange: (e) => setSearchText(e.target.value) })),
|
|
326
326
|
react_1.default.createElement(core_1.Box, { mt: 2 }, (files === null || files === void 0 ? void 0 : files.length) > 0 ?
|
|
327
327
|
react_1.default.createElement(core_1.Table, { style: { overflow: 'auto' } },
|
|
@@ -62,13 +62,13 @@ exports.ProfilePhotoPreview = styled_components_1.default.img `
|
|
|
62
62
|
object-position: top;
|
|
63
63
|
`;
|
|
64
64
|
const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile, firstName, lastName, primaryServiceLine, editServiceLine, city, stateAbbreviation, email, phone, paroTenure, hourlyRate, setOpen, paroProjectsData, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, isInternal, getUserByEmail, updateUserEmail, updateUserMutation, getUserByEmailLazyQuery, updateUserPassword, verifyUserPassword, }) => {
|
|
65
|
+
var _a;
|
|
65
66
|
const [openReviews, setOpenReviews] = (0, react_1.useState)(false);
|
|
66
67
|
const [resetPasswordOpen, setResetPasswordOpen] = (0, react_1.useState)(false);
|
|
67
68
|
const [changeEmailOpen, setChangeEmailOpen] = (0, react_1.useState)(false);
|
|
68
69
|
const [updatedEmail, setUpdatedEmail] = (0, react_1.useState)(email);
|
|
69
70
|
const filterProjectsWithRating = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.flatMap(({ client, rating }) => rating === null || rating === void 0 ? void 0 : rating.map((rating) => ({ client, rating })));
|
|
70
|
-
const totalReviews = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((obj) =>
|
|
71
|
-
return obj.rating; }).length;
|
|
71
|
+
const totalReviews = (_a = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((obj) => obj.rating.length > 0)) === null || _a === void 0 ? void 0 : _a.flatMap((obj) => obj.rating).length;
|
|
72
72
|
const avgRating = () => {
|
|
73
73
|
const overallRatings = filterProjectsWithRating === null || filterProjectsWithRating === void 0 ? void 0 : filterProjectsWithRating.map((obj) => { var _a; return (_a = obj === null || obj === void 0 ? void 0 : obj.rating) === null || _a === void 0 ? void 0 : _a.overallRating; });
|
|
74
74
|
if (overallRatings) {
|
|
@@ -111,7 +111,7 @@ const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile,
|
|
|
111
111
|
react_1.default.createElement(core_1.Grid, { item: true, container: true, xs: 12, direction: "row", justify: "center", spacing: 2 },
|
|
112
112
|
react_1.default.createElement(core_1.Box, { mr: 1 },
|
|
113
113
|
react_1.default.createElement(core_1.Typography, { variant: "h6" },
|
|
114
|
-
react_1.default.createElement("b", null, Number(avgRating()).toFixed(
|
|
114
|
+
react_1.default.createElement("b", null, Number(avgRating()).toFixed(1)))),
|
|
115
115
|
react_1.default.createElement(Rating_1.default, { name: "half-rating-read", readOnly: true, value: avgRating(), precision: 0.1, size: "medium", emptyIcon: react_1.default.createElement(Star_1.default, { fontSize: "inherit" }) })),
|
|
116
116
|
react_1.default.createElement(core_1.Box, { mt: 1 },
|
|
117
117
|
react_1.default.createElement(core_1.Typography, { variant: "body2", align: 'center' },
|
|
@@ -86,7 +86,7 @@ const ReviewsModal = ({ openReviews, setOpenReviews, paroProjectsData, filterPro
|
|
|
86
86
|
react_1.default.createElement(core_1.Grid, { container: true, style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '20px', backgroundColor: '#F1F5F9', padding: '12px', width: '100%', } },
|
|
87
87
|
react_1.default.createElement(core_1.Grid, { item: true },
|
|
88
88
|
react_1.default.createElement(core_1.Typography, { variant: "h1", style: { marginLeft: '10px' }, align: 'center' },
|
|
89
|
-
react_1.default.createElement("b", null, (avgRating).toFixed(
|
|
89
|
+
react_1.default.createElement("b", null, (avgRating).toFixed(1))),
|
|
90
90
|
react_1.default.createElement(Rating_1.default, { name: "read-only", value: avgRating, readOnly: true, precision: 0.5, size: "large" }),
|
|
91
91
|
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { marginLeft: '10px' }, align: 'center' },
|
|
92
92
|
totalReviews,
|
|
@@ -295,6 +295,7 @@ const formatDate = (date, pattern = 'MM/dd/yyyy') => {
|
|
|
295
295
|
return { label: formattedDate, value: convertToDateTime };
|
|
296
296
|
};
|
|
297
297
|
const Reviews = ({ paroProjectsData, legacyFreelancerId, expertName, refetchParoProjects, createOrUpdateRating, }) => {
|
|
298
|
+
var _a, _b;
|
|
298
299
|
const classes = useStyles();
|
|
299
300
|
const [loadingSubmitId, setLoadingSubmitId] = (0, react_1.useState)(null);
|
|
300
301
|
const [openReviewModal, setOpenReviewModal] = (0, react_1.useState)(false);
|
|
@@ -390,7 +391,7 @@ const Reviews = ({ paroProjectsData, legacyFreelancerId, expertName, refetchParo
|
|
|
390
391
|
const checkHighlighted = highlightedRatings.filter((p) => { var _a, _b; return ((_a = p === null || p === void 0 ? void 0 : p.rating[0]) === null || _a === void 0 ? void 0 : _a.id) === (rating === null || rating === void 0 ? void 0 : rating.id) && ((_b = p === null || p === void 0 ? void 0 : p.rating[0]) === null || _b === void 0 ? void 0 : _b.isHighlighted); }).length;
|
|
391
392
|
return checkHighlighted > 0 ? true : false;
|
|
392
393
|
};
|
|
393
|
-
const reviewsGiven = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.filter((p) => p.rating
|
|
394
|
+
const reviewsGiven = (_b = (_a = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.filter((p) => p.rating.length > 0)) === null || _a === void 0 ? void 0 : _a.flatMap((p) => p.rating)) === null || _b === void 0 ? void 0 : _b.length;
|
|
394
395
|
const reviewNotGiven = (highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.length) - reviewsGiven;
|
|
395
396
|
// const customRound = (value: number): number => {
|
|
396
397
|
// const decimalPart = value - Math.floor(value);
|
|
@@ -304,7 +304,7 @@ const ReviewsTab = ({ paroProjectsData, legacyFreelancerId, expertName, getParoP
|
|
|
304
304
|
setOrderBy(buttonText);
|
|
305
305
|
}
|
|
306
306
|
};
|
|
307
|
-
const reviewsGiven = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((p) => { var _a; return (_a = p === null || p === void 0 ? void 0 : p.rating) === null || _a === void 0 ? void 0 : _a
|
|
307
|
+
const reviewsGiven = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((p) => { var _a; return ((_a = p === null || p === void 0 ? void 0 : p.rating) === null || _a === void 0 ? void 0 : _a.length) > 0; }).flatMap(p => p.rating).length;
|
|
308
308
|
const reviewNotGiven = Math.max(0, (paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.length) - reviewsGiven);
|
|
309
309
|
const { overallRating, timelinessRating, communicationRating, professionalismRating, executionOfDeliverablesRating } = (0, ProjectReviewsSection_1.calculateAverageRatings)(paroProjectsData);
|
|
310
310
|
const uniqueClients = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.map((obj) => {
|
|
@@ -137,7 +137,7 @@ const handleDownloadPdf = ({ fileData, downloadFilename, streamData }) => {
|
|
|
137
137
|
var _a, _b;
|
|
138
138
|
let byteArray = streamData ? fileData : new Uint8Array();
|
|
139
139
|
if (!streamData) {
|
|
140
|
-
const byteCharacters = atob(
|
|
140
|
+
const byteCharacters = atob((_b = (_a = fileData === null || fileData === void 0 ? void 0 : fileData.data) === null || _a === void 0 ? void 0 : _a.getFile) === null || _b === void 0 ? void 0 : _b.data);
|
|
141
141
|
const byteNumbers = new Array(byteCharacters.length);
|
|
142
142
|
for (let i = 0; i < byteCharacters.length; i++) {
|
|
143
143
|
byteNumbers[i] = byteCharacters.charCodeAt(i);
|