@paro.io/expert-shared-components 1.4.12 → 1.5.1
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/ClientReferencesSection/DeleteButton.js +11 -11
- package/lib/components/ClientReferencesSection/ParoError.js +10 -10
- package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
- package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
- package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
- package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
- package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
- package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
- package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
- package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
- package/lib/components/DocumentCenter/ClientDocumentsTable.d.ts +18 -0
- package/lib/components/DocumentCenter/ClientDocumentsTable.js +381 -0
- package/lib/components/DocumentCenter/DeleteDocumentModal.d.ts +8 -0
- package/lib/components/DocumentCenter/DeleteDocumentModal.js +13 -0
- package/lib/components/DocumentCenter/DocumentCenter.d.ts +23 -0
- package/lib/components/DocumentCenter/DocumentCenter.js +185 -0
- package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -0
- package/lib/components/DocumentCenter/DocumentTable.js +350 -0
- package/lib/components/DocumentCenter/DocumentUploadRow.d.ts +26 -0
- package/lib/components/DocumentCenter/DocumentUploadRow.js +183 -0
- package/lib/components/DocumentCenter/ParoDocumentsTable.d.ts +16 -0
- package/lib/components/DocumentCenter/ParoDocumentsTable.js +384 -0
- package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -0
- package/lib/components/DocumentCenter/UploadFilesButton.js +29 -0
- package/lib/components/DocumentCenter/index.d.ts +1 -0
- package/lib/components/DocumentCenter/index.js +5 -0
- package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
- package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
- package/lib/components/OrganizationChart/OrganizationChart.js +7 -7
- package/lib/components/Reviews/Pagination.js +6 -6
- package/lib/components/ReviewsTab/RatingHeader.js +6 -6
- package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
- package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
- package/lib/components/shared/Error.d.ts +6 -6
- package/lib/components/shared/Error.js +40 -40
- package/lib/components/shared/Image.js +13 -13
- package/lib/components/shared/ProfileTextField.d.ts +18 -18
- package/lib/components/shared/ProfileTextField.js +16 -16
- package/lib/components/shared/StyledActionButtons.d.ts +7 -7
- package/lib/components/shared/StyledActionButtons.js +15 -15
- package/lib/components/shared/ToastNotification.d.ts +10 -0
- package/lib/components/shared/ToastNotification.js +63 -0
- package/lib/components/shared/utils.d.ts +29 -0
- package/lib/components/shared/utils.js +162 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/package.json +59 -59
- package/readme.md +0 -87
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.DocumentUploadRow = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const core_1 = require("@material-ui/core");
|
|
32
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
33
|
+
const react_datepicker_1 = __importDefault(require("react-datepicker"));
|
|
34
|
+
const utils_1 = require("../shared/utils");
|
|
35
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
36
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
37
|
+
const ClientDocumentTypes = [
|
|
38
|
+
"Financial Documents",
|
|
39
|
+
"Contractual and Legal Documents",
|
|
40
|
+
"Operational and Management Documents",
|
|
41
|
+
"Tax and Compliance Documents",
|
|
42
|
+
"Project Specific Documents"
|
|
43
|
+
];
|
|
44
|
+
const ParoDocumentTypes = [
|
|
45
|
+
"EO Insurance",
|
|
46
|
+
"Resume",
|
|
47
|
+
"General Insurance",
|
|
48
|
+
"Certification",
|
|
49
|
+
];
|
|
50
|
+
const generateOptions = (array, clientOptions, isClientPortal) => {
|
|
51
|
+
return array.map((item, index) => {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
const name = isClientPortal ? (_a = item === null || item === void 0 ? void 0 : item.freelancer) === null || _a === void 0 ? void 0 : _a.name : (_b = item === null || item === void 0 ? void 0 : item.client) === null || _b === void 0 ? void 0 : _b.name;
|
|
54
|
+
const projectName = item === null || item === void 0 ? void 0 : item.name;
|
|
55
|
+
let newText = '';
|
|
56
|
+
const itemKey = (item === null || item === void 0 ? void 0 : item.id) ? `${item === null || item === void 0 ? void 0 : item.id}_${index}` : item === null || item === void 0 ? void 0 : item.split(' ').join('_').concat(index);
|
|
57
|
+
if (clientOptions) {
|
|
58
|
+
if (name && projectName) {
|
|
59
|
+
newText = `${name} - ${projectName}`;
|
|
60
|
+
}
|
|
61
|
+
else if (name) {
|
|
62
|
+
newText = name;
|
|
63
|
+
}
|
|
64
|
+
else if (projectName) {
|
|
65
|
+
newText = projectName;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
newText = 'N/A';
|
|
69
|
+
}
|
|
70
|
+
return Object.assign({ id: itemKey, value: newText, label: newText }, item);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return {
|
|
74
|
+
id: itemKey,
|
|
75
|
+
value: item,
|
|
76
|
+
label: item,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
const DocumentUploadRow = ({ clientAndProject, setClientAndProject, docType, setDocType, paroDocuments, expiryDate, handleDateChange, error, clientAndProjectsList, uploadExpertClientFiles, refetchFiles, legacyFreelancerId, freelancerName, freelancerEmail, isClientPortal = false, }) => {
|
|
82
|
+
const [isUploading, setIsUploading] = (0, react_1.useState)(false);
|
|
83
|
+
const [documentName, setDocumentName] = (0, react_1.useState)('');
|
|
84
|
+
const fileInputRef = (0, react_1.useRef)(null);
|
|
85
|
+
const documentTypeOptions = paroDocuments ? generateOptions(ParoDocumentTypes, false, isClientPortal) : generateOptions(ClientDocumentTypes, false, isClientPortal);
|
|
86
|
+
const clientOptions = clientAndProjectsList ? generateOptions(clientAndProjectsList, true, isClientPortal) : [];
|
|
87
|
+
const defaultValue = clientOptions && clientOptions[0] ? clientOptions[0] : '';
|
|
88
|
+
(0, react_1.useEffect)(() => {
|
|
89
|
+
setDocType(paroDocuments ? documentTypeOptions[1].value : documentTypeOptions[0].value);
|
|
90
|
+
defaultValue && setClientAndProject(defaultValue);
|
|
91
|
+
}, []);
|
|
92
|
+
const checkField = (paroDocuments) ? (docType === 'EO Insurance' ? (expiryDate && !error) : true) : (clientAndProject && (clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.value));
|
|
93
|
+
const disableButton = !(documentName && checkField) && !isUploading;
|
|
94
|
+
const uploadFile = (fileForUpload, fileExtension) => {
|
|
95
|
+
var _a, _b, _c, _d, _e;
|
|
96
|
+
setIsUploading(true);
|
|
97
|
+
uploadExpertClientFiles({
|
|
98
|
+
variables: {
|
|
99
|
+
input: {
|
|
100
|
+
clientId: (_a = clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.client) === null || _a === void 0 ? void 0 : _a.id,
|
|
101
|
+
clientName: (_b = clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.client) === null || _b === void 0 ? void 0 : _b.name,
|
|
102
|
+
data: fileForUpload,
|
|
103
|
+
email: isClientPortal ? (_c = clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.freelancer) === null || _c === void 0 ? void 0 : _c.name : freelancerEmail,
|
|
104
|
+
fileName: `${documentName}.${fileExtension}`,
|
|
105
|
+
fileType: utils_1.DOCUMENT_TYPE_CONSTANTS[docType],
|
|
106
|
+
freelancerId: isClientPortal ? (_d = clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.freelancer) === null || _d === void 0 ? void 0 : _d.id : legacyFreelancerId,
|
|
107
|
+
freelancerName: isClientPortal ? (_e = clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.freelancer) === null || _e === void 0 ? void 0 : _e.name : freelancerName,
|
|
108
|
+
projectId: clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.id,
|
|
109
|
+
projectName: clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.name,
|
|
110
|
+
uploadedBy: isClientPortal ? 'CLIENT' : 'FREELANCER',
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
.then((res) => {
|
|
115
|
+
var _a;
|
|
116
|
+
if ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.uploadExpertClientFilesData) {
|
|
117
|
+
refetchFiles();
|
|
118
|
+
(0, utils_1.showToast)('success', 'File Uploaded successfully!');
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
(0, utils_1.showToast)('warning', 'Upload failed! Please try again.');
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
.catch((err) => {
|
|
125
|
+
(0, utils_1.showToast)('warning', 'Upload failed! Please try again.');
|
|
126
|
+
}).finally(() => {
|
|
127
|
+
setIsUploading(false);
|
|
128
|
+
setDocumentName('');
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
const handleUpload = (event) => {
|
|
132
|
+
const selectedFile = event.target.files && event.target.files[0];
|
|
133
|
+
if (!(0, utils_1.validateFileUpload)(selectedFile, true)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (selectedFile) {
|
|
137
|
+
const fileExtension = selectedFile.name.substring(selectedFile.name.lastIndexOf('.') + 1);
|
|
138
|
+
const reader = new FileReader();
|
|
139
|
+
reader.onloadend = () => {
|
|
140
|
+
const fileForUpload = String(reader.result).split(';base64,')[1];
|
|
141
|
+
uploadFile(fileForUpload, fileExtension);
|
|
142
|
+
};
|
|
143
|
+
reader.readAsDataURL(selectedFile);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
147
|
+
react_1.default.createElement("span", { className: "text-sm italic text-white pb-2 pl-8 -mt-5" }, "Follow the steps below to upload your document"),
|
|
148
|
+
react_1.default.createElement(core_1.Grid, { container: true, direction: "row", alignItems: "flex-end", wrap: "nowrap", justifyContent: "flex-start", spacing: 2, xs: 12, style: { padding: '10px 0px 25px 30px' } },
|
|
149
|
+
react_1.default.createElement("div", { className: 'flex flex-row items-center' },
|
|
150
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.fa1, size: "sm", className: "p-1 text-black w-4 m-2 rounded-full self-end", style: { backgroundColor: '#A3C9E5' } }),
|
|
151
|
+
react_1.default.createElement(base_ui_1.Input, { label: "Enter document name", type: "text", placeholder: "Enter document name", value: documentName, onChange: (e) => { e.preventDefault(); setDocumentName(e.target.value); } })),
|
|
152
|
+
react_1.default.createElement("div", { className: 'flex flex-row items-center shrink' },
|
|
153
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.fa2, size: "sm", className: "p-1 text-black w-4 m-2 rounded-full self-end", style: { backgroundColor: '#A3C9E5' } }),
|
|
154
|
+
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, sm: 'auto' },
|
|
155
|
+
react_1.default.createElement(core_1.FormControl, { variant: "outlined", style: { minWidth: 200 } },
|
|
156
|
+
react_1.default.createElement(base_ui_1.Select, { label: "Select Document Type", required: true, onChange: (e) => setDocType(e.target.value), value: docType, defaultValue: documentTypeOptions[0].value, options: documentTypeOptions })))),
|
|
157
|
+
paroDocuments && docType && (docType === 'EO Insurance') &&
|
|
158
|
+
react_1.default.createElement("div", { className: 'flex flex-row items-center' },
|
|
159
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.fa3, size: "sm", className: "p-1 text-black w-4 m-2 rounded-full self-end", style: { backgroundColor: '#A3C9E5' } }),
|
|
160
|
+
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, sm: 'auto' },
|
|
161
|
+
react_1.default.createElement(core_1.FormControl, { error: !!error, variant: "outlined", fullWidth: true },
|
|
162
|
+
react_1.default.createElement(react_datepicker_1.default, { onChange: (date) => handleDateChange(date), className: "input", placeholderText: "Select date", customInput: react_1.default.createElement(base_ui_1.Input, { label: 'Expiration Date', type: "date", value: expiryDate ? expiryDate.toISOString().split('T')[0] : '' }) }),
|
|
163
|
+
error && react_1.default.createElement(core_1.FormHelperText, null, error)))),
|
|
164
|
+
!paroDocuments &&
|
|
165
|
+
react_1.default.createElement("div", { className: 'flex flex-row items-center shrink' },
|
|
166
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.fa3, size: "sm", className: "p-1 text-black w-4 m-2 rounded-full self-end", style: { backgroundColor: '#A3C9E5' } }),
|
|
167
|
+
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, sm: 'auto' },
|
|
168
|
+
react_1.default.createElement(core_1.FormControl, { variant: "outlined", style: { minWidth: 200 } },
|
|
169
|
+
react_1.default.createElement(base_ui_1.Select, { label: isClientPortal ? "Select Expert - Project" : "Select Client - Project", required: true, onChange: (e) => {
|
|
170
|
+
const selectedItem = clientOptions.find(option => option.value === e.target.value);
|
|
171
|
+
if (selectedItem) {
|
|
172
|
+
setClientAndProject(selectedItem);
|
|
173
|
+
}
|
|
174
|
+
}, value: (clientAndProject === null || clientAndProject === void 0 ? void 0 : clientAndProject.value) || '', defaultValue: defaultValue.value, options: clientOptions })))),
|
|
175
|
+
react_1.default.createElement("div", { className: 'flex flex-row items-center flex-none' },
|
|
176
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: paroDocuments && docType !== 'EO Insurance' ? free_solid_svg_icons_1.fa3 : free_solid_svg_icons_1.fa4, size: "sm", className: "p-1 text-black w-4 m-2 rounded-full self-end", style: { backgroundColor: '#A3C9E5' } }),
|
|
177
|
+
react_1.default.createElement("input", { id: "upload-file", type: "file", accept: ".pdf,.doc,.docx,.ppt,.xls,.xlsx", style: { display: 'none' }, ref: fileInputRef, onChange: handleUpload }),
|
|
178
|
+
react_1.default.createElement(core_1.Tooltip, { arrow: true, placement: "top", interactive: true, className: "whitespace-nowrap", title: disableButton ? "Please fill out the required info" : "" },
|
|
179
|
+
react_1.default.createElement(base_ui_1.Button, { label: "Upload Document", onClick: () => {
|
|
180
|
+
fileInputRef.current && fileInputRef.current.click();
|
|
181
|
+
}, color: "primary", disabled: disableButton, isLoading: isUploading }))))));
|
|
182
|
+
};
|
|
183
|
+
exports.DocumentUploadRow = DocumentUploadRow;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface DocumentTableProps {
|
|
2
|
+
legacyFreelancerId: number | number[];
|
|
3
|
+
expiryDate: string;
|
|
4
|
+
setExpiryDate: (expiryDate: string) => void;
|
|
5
|
+
expertFiles: any[];
|
|
6
|
+
setExpertFiles: (expertFiles: any[]) => void;
|
|
7
|
+
uploadFileData: any;
|
|
8
|
+
deleteFileMutation: any;
|
|
9
|
+
updateFreelancerExpiryMutation: any;
|
|
10
|
+
foldername: string;
|
|
11
|
+
paroDocuments: boolean;
|
|
12
|
+
getFileLazyQuery: any;
|
|
13
|
+
getFilesLazyQuery: any;
|
|
14
|
+
}
|
|
15
|
+
export declare const ParoDocumentsTable: ({ legacyFreelancerId, expiryDate, setExpiryDate, expertFiles, setExpertFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, paroDocuments, getFileLazyQuery, getFilesLazyQuery, }: DocumentTableProps) => JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.ParoDocumentsTable = void 0;
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const core_1 = require("@material-ui/core");
|
|
41
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
42
|
+
const Pagination_1 = __importDefault(require("../Reviews/Pagination"));
|
|
43
|
+
const DocumentUploadRow_1 = require("./DocumentUploadRow");
|
|
44
|
+
const base_icons_1 = require("@paro.io/base-icons");
|
|
45
|
+
const ClientDocumentsTable_1 = require("./ClientDocumentsTable");
|
|
46
|
+
const date_fns_1 = require("date-fns");
|
|
47
|
+
const DeleteDocumentModal_1 = require("./DeleteDocumentModal");
|
|
48
|
+
const utils_1 = require("../shared/utils");
|
|
49
|
+
const headCells = [
|
|
50
|
+
{
|
|
51
|
+
id: 'fileName',
|
|
52
|
+
label: 'File Name',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 'docType',
|
|
56
|
+
label: 'Document Type',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'uploadedDate',
|
|
60
|
+
label: 'Uploaded Date',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 'expiryDate',
|
|
64
|
+
label: 'Expiry Date',
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
function descendingComparator(a, b, orderBy) {
|
|
68
|
+
var _a, _b;
|
|
69
|
+
if (orderBy === 'uploadedDate' || orderBy === 'expiryDate') {
|
|
70
|
+
//@ts-ignore
|
|
71
|
+
const dateA = a === null || a === void 0 ? void 0 : a[orderBy];
|
|
72
|
+
//@ts-ignore
|
|
73
|
+
const dateB = b === null || b === void 0 ? void 0 : b[orderBy];
|
|
74
|
+
//@ts-ignore
|
|
75
|
+
if (dateB < dateA) {
|
|
76
|
+
return -1;
|
|
77
|
+
}
|
|
78
|
+
//@ts-ignore
|
|
79
|
+
if (dateB > dateA) {
|
|
80
|
+
return 1;
|
|
81
|
+
}
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
else if (orderBy === 'fileName' || orderBy === 'docType') {
|
|
85
|
+
//@ts-ignore
|
|
86
|
+
const valueA = (_a = a === null || a === void 0 ? void 0 : a[orderBy]) !== null && _a !== void 0 ? _a : "";
|
|
87
|
+
//@ts-ignore
|
|
88
|
+
const valueB = (_b = b === null || b === void 0 ? void 0 : b[orderBy]) !== null && _b !== void 0 ? _b : "";
|
|
89
|
+
if (valueB < valueA) {
|
|
90
|
+
return -1;
|
|
91
|
+
}
|
|
92
|
+
if (valueB > valueA) {
|
|
93
|
+
return 1;
|
|
94
|
+
}
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
(0, utils_1.compareItems)(a, b, orderBy);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const ParoDocumentsTable = ({ legacyFreelancerId, expiryDate, setExpiryDate, expertFiles, setExpertFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, paroDocuments, getFileLazyQuery, getFilesLazyQuery, }) => {
|
|
102
|
+
const classes = (0, ClientDocumentsTable_1.useStyles)();
|
|
103
|
+
const [order, setOrder] = react_1.default.useState('desc');
|
|
104
|
+
const [orderBy, setOrderBy] = react_1.default.useState('uploadedDate');
|
|
105
|
+
const [currentPage, setCurrentPage] = (0, react_1.useState)(1);
|
|
106
|
+
const [perPageItems, setPerPageItems] = (0, react_1.useState)(10);
|
|
107
|
+
const [files, setFiles] = (0, react_1.useState)(expertFiles);
|
|
108
|
+
const [documentName, setDocumentName] = (0, react_1.useState)('');
|
|
109
|
+
const [clientAndProject, setClientAndProject] = (0, react_1.useState)('');
|
|
110
|
+
const [docType, setDocType] = (0, react_1.useState)('');
|
|
111
|
+
const [searchText, setSearchText] = (0, react_1.useState)('');
|
|
112
|
+
const [isUploading, setIsUploading] = (0, react_1.useState)(false);
|
|
113
|
+
const [downloadFilename, setDownloadFilename] = (0, react_1.useState)('');
|
|
114
|
+
const [apiFoldername, setApiFoldername] = (0, react_1.useState)('');
|
|
115
|
+
const [isDeleteModalOpen, setDeleteModalOpen] = (0, react_1.useState)(false);
|
|
116
|
+
const [deleteFileName, setDeleteFileName] = (0, react_1.useState)('');
|
|
117
|
+
const [insuranceExpiryDate, setInsuranceExpiryDate] = (0, react_1.useState)(null);
|
|
118
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
119
|
+
const [fileData, setFileData] = (0, react_1.useState)('');
|
|
120
|
+
const firstItem = (currentPage - 1) * perPageItems;
|
|
121
|
+
const lastItem = (currentPage - 1) * perPageItems + perPageItems;
|
|
122
|
+
const tableData = (files === null || files === void 0 ? void 0 : files.length) ? files === null || files === void 0 ? void 0 : files.map((file) => {
|
|
123
|
+
var _a, _b, _c, _d;
|
|
124
|
+
return {
|
|
125
|
+
fileName: ((_a = file === null || file === void 0 ? void 0 : file.filename) === null || _a === void 0 ? void 0 : _a.split('/').pop()) || "-",
|
|
126
|
+
docType: ((_b = file.filename) === null || _b === void 0 ? void 0 : _b.split('/').slice(-2, -1)[0].includes('auth0')) ? '-' : (_c = file.filename) === null || _c === void 0 ? void 0 : _c.split('/').slice(-2, -1)[0],
|
|
127
|
+
uploadedDate: (0, utils_1.formatDate)(Number(file.lastmodified)),
|
|
128
|
+
expiryDate: ((_d = file.filename) === null || _d === void 0 ? void 0 : _d.includes('/EO Insurance/')) ? expiryDate : 'N/A',
|
|
129
|
+
};
|
|
130
|
+
}) : [];
|
|
131
|
+
(0, react_1.useEffect)(() => {
|
|
132
|
+
const sortByTextProjects = searchText === ''
|
|
133
|
+
? expertFiles
|
|
134
|
+
: expertFiles.filter((file) => {
|
|
135
|
+
var _a, _b;
|
|
136
|
+
return ((_a = file === null || file === void 0 ? void 0 : file.filename) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchText.toLowerCase())) ||
|
|
137
|
+
((_b = file === null || file === void 0 ? void 0 : file.documentType) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchText.toLowerCase()));
|
|
138
|
+
});
|
|
139
|
+
setFiles(sortByTextProjects);
|
|
140
|
+
}, [searchText]);
|
|
141
|
+
const getFileData = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fileName, folderName }) {
|
|
142
|
+
var _b, _c;
|
|
143
|
+
const fileData = yield getFileLazyQuery({
|
|
144
|
+
skip: !downloadFilename,
|
|
145
|
+
variables: {
|
|
146
|
+
input: {
|
|
147
|
+
foldername: folderName,
|
|
148
|
+
filename: fileName,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
if ((_c = (_b = fileData === null || fileData === void 0 ? void 0 : fileData.data) === null || _b === void 0 ? void 0 : _b.getFile) === null || _c === void 0 ? void 0 : _c.data) {
|
|
153
|
+
(0, utils_1.showToast)('success', 'File Data fetched successfully!');
|
|
154
|
+
setFileData(fileData);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
(0, utils_1.showToast)('warning', 'Failed to fetch file data! Please try again.');
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
(0, react_1.useEffect)(() => {
|
|
161
|
+
var _a, _b;
|
|
162
|
+
if (!fileData || !fileData.data || !fileData.data.getFile || !fileData.data.getFile.data) {
|
|
163
|
+
console.error("Invalid file data.");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
const a = document.createElement('a');
|
|
168
|
+
const mimeType = (0, utils_1.getFileMimeType)(downloadFilename);
|
|
169
|
+
if (mimeType === 'application/pdf') {
|
|
170
|
+
//handle pdf type files
|
|
171
|
+
(0, utils_1.handleDownloadPdf)({ fileData, downloadFilename });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// handle other type files
|
|
175
|
+
a.href = `data:${mimeType};base64,${(_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}`;
|
|
176
|
+
a.download = downloadFilename;
|
|
177
|
+
a.click();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error('Error downloading file:', error);
|
|
182
|
+
(0, utils_1.showToast)('warning', 'Failed to download file! Please try again.');
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
setDownloadFilename('');
|
|
186
|
+
setApiFoldername('');
|
|
187
|
+
setFileData('');
|
|
188
|
+
}
|
|
189
|
+
}, [fileData]);
|
|
190
|
+
const handleRequestSort = (event, property) => {
|
|
191
|
+
const isDesc = orderBy === property && order === 'desc';
|
|
192
|
+
setOrder(isDesc ? 'asc' : 'desc');
|
|
193
|
+
setOrderBy(property);
|
|
194
|
+
};
|
|
195
|
+
const createSortHandler = (property) => (event) => {
|
|
196
|
+
handleRequestSort(event, property);
|
|
197
|
+
};
|
|
198
|
+
const refetchFiles = (isUpload) => __awaiter(void 0, void 0, void 0, function* () {
|
|
199
|
+
try {
|
|
200
|
+
const { data } = yield getFilesLazyQuery({
|
|
201
|
+
variables: { input: { foldername: foldername } },
|
|
202
|
+
fetchPolicy: 'network-only',
|
|
203
|
+
});
|
|
204
|
+
if (docType === 'EO Insurance' && isUpload) {
|
|
205
|
+
insuranceExpiryDate && setExpiryDate((0, utils_1.formatDate)(insuranceExpiryDate));
|
|
206
|
+
}
|
|
207
|
+
setExpertFiles(data === null || data === void 0 ? void 0 : data.getFiles);
|
|
208
|
+
setFiles(data === null || data === void 0 ? void 0 : data.getFiles);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error('Error refetching query:', error);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
const handleDelete = () => {
|
|
215
|
+
setIsUploading(true);
|
|
216
|
+
if (apiFoldername.split('/')[1] === 'EO Insurance') {
|
|
217
|
+
updateFreelancerExpiryMutation({
|
|
218
|
+
variables: {
|
|
219
|
+
id: legacyFreelancerId,
|
|
220
|
+
},
|
|
221
|
+
})
|
|
222
|
+
.catch((err) => { console.log(`Error deleting insurance from freelancer table ${err}`); });
|
|
223
|
+
setInsuranceExpiryDate(null);
|
|
224
|
+
}
|
|
225
|
+
deleteFileMutation({
|
|
226
|
+
variables: {
|
|
227
|
+
input: {
|
|
228
|
+
foldername: apiFoldername,
|
|
229
|
+
filename: deleteFileName,
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
onCompleted: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
233
|
+
refetchFiles(false);
|
|
234
|
+
})
|
|
235
|
+
})
|
|
236
|
+
.then(() => {
|
|
237
|
+
toggleDeleteModal(deleteFileName);
|
|
238
|
+
(0, utils_1.showToast)('success', 'File deleted successfully!');
|
|
239
|
+
})
|
|
240
|
+
.catch((err) => {
|
|
241
|
+
toggleDeleteModal(deleteFileName);
|
|
242
|
+
console.log(`Error deleting file ${err}`);
|
|
243
|
+
(0, utils_1.showToast)('warning', 'Failed to delete file! Please retry.');
|
|
244
|
+
});
|
|
245
|
+
setIsUploading(false);
|
|
246
|
+
};
|
|
247
|
+
const handleDownloadFile = (fileName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
248
|
+
var _a, _b, _c;
|
|
249
|
+
if (fileName) {
|
|
250
|
+
setDownloadFilename(fileName);
|
|
251
|
+
const segments = (_b = (_a = files === null || files === void 0 ? void 0 : files.filter((row) => row.filename.split('/').pop() === fileName)[0]) === null || _a === void 0 ? void 0 : _a.filename) === null || _b === void 0 ? void 0 : _b.split('/');
|
|
252
|
+
const folderName = (_c = segments === null || segments === void 0 ? void 0 : segments.slice(0, segments.length - 1)) === null || _c === void 0 ? void 0 : _c.join('/');
|
|
253
|
+
setApiFoldername(folderName);
|
|
254
|
+
getFileData({ fileName, folderName });
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
const toggleDeleteModal = (fileName) => {
|
|
258
|
+
var _a, _b, _c;
|
|
259
|
+
setDeleteModalOpen(!isDeleteModalOpen);
|
|
260
|
+
if (fileName) {
|
|
261
|
+
setDeleteFileName(fileName);
|
|
262
|
+
const segments = (_b = (_a = files === null || files === void 0 ? void 0 : files.filter((row) => row.filename.split('/').pop() === fileName)[0]) === null || _a === void 0 ? void 0 : _a.filename) === null || _b === void 0 ? void 0 : _b.split('/');
|
|
263
|
+
setApiFoldername((_c = segments === null || segments === void 0 ? void 0 : segments.slice(0, segments.length - 1)) === null || _c === void 0 ? void 0 : _c.join('/'));
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const uploadFile = (fileForUpload, fileExtension) => {
|
|
267
|
+
setIsUploading(true);
|
|
268
|
+
uploadFileData({
|
|
269
|
+
variables: {
|
|
270
|
+
input: {
|
|
271
|
+
foldername,
|
|
272
|
+
subfolder: docType,
|
|
273
|
+
filename: `${documentName}.${fileExtension}`,
|
|
274
|
+
data: fileForUpload,
|
|
275
|
+
expirationDate: ((docType === 'EO Insurance') && insuranceExpiryDate) ? insuranceExpiryDate : '',
|
|
276
|
+
valid: true,
|
|
277
|
+
sourceOfEOInsurance: 'Dashboard',
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
onCompleted: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
281
|
+
refetchFiles(true);
|
|
282
|
+
})
|
|
283
|
+
})
|
|
284
|
+
.then(() => {
|
|
285
|
+
(0, utils_1.showToast)('success', 'File Uploaded successfully!');
|
|
286
|
+
})
|
|
287
|
+
.catch((err) => {
|
|
288
|
+
(0, utils_1.showToast)('warning', 'Upload failed! Please try again.');
|
|
289
|
+
});
|
|
290
|
+
setIsUploading(false);
|
|
291
|
+
setApiFoldername('');
|
|
292
|
+
setDocumentName('');
|
|
293
|
+
};
|
|
294
|
+
const handleUpload = (event) => {
|
|
295
|
+
const selectedFile = event.target.files && event.target.files[0];
|
|
296
|
+
if (!(0, utils_1.validateFileUpload)(selectedFile, false)) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
if (selectedFile) {
|
|
300
|
+
const fileExtension = selectedFile.name.substring(selectedFile.name.lastIndexOf('.') + 1);
|
|
301
|
+
const reader = new FileReader();
|
|
302
|
+
reader.onloadend = () => {
|
|
303
|
+
const fileForUpload = String(reader.result).split(';base64,')[1];
|
|
304
|
+
uploadFile(fileForUpload, fileExtension);
|
|
305
|
+
};
|
|
306
|
+
reader.readAsDataURL(selectedFile);
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
const handleDateChange = (date) => {
|
|
310
|
+
if (date) {
|
|
311
|
+
const currentDate = (0, date_fns_1.startOfDay)(new Date);
|
|
312
|
+
if ((0, date_fns_1.isBefore)(date, currentDate)) {
|
|
313
|
+
setError('The expiration date cannot be in the past.');
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
setInsuranceExpiryDate(date);
|
|
317
|
+
setError(null);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
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
|
+
react_1.default.createElement(utils_1.CustomPaper, null,
|
|
324
|
+
(files === null || files === void 0 ? void 0 : files.length) > 0 && react_1.default.createElement("div", { className: 'w-1/4' },
|
|
325
|
+
react_1.default.createElement(base_ui_1.Input, { placeholder: "Search Documents", type: "text", value: searchText, onChange: (e) => setSearchText(e.target.value) })),
|
|
326
|
+
react_1.default.createElement(core_1.Box, { mt: 2 }, (files === null || files === void 0 ? void 0 : files.length) > 0 ?
|
|
327
|
+
react_1.default.createElement(core_1.Table, { style: { overflow: 'auto' } },
|
|
328
|
+
react_1.default.createElement(core_1.TableHead, null,
|
|
329
|
+
react_1.default.createElement(core_1.TableRow, { className: [classes.tableCellBorder, classes.shade].join(" ") },
|
|
330
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }),
|
|
331
|
+
headCells.map((headCell) => (react_1.default.createElement(core_1.TableCell, { key: headCell.id, sortDirection: orderBy === headCell.id ? order : false, align: "center", className: classes.tableCell },
|
|
332
|
+
react_1.default.createElement(core_1.TableSortLabel, { active: orderBy === headCell.id, direction: orderBy === headCell.id ? order : 'asc', onClick: createSortHandler(headCell.id) },
|
|
333
|
+
react_1.default.createElement("div", { className: "flex flex-row items-center gap-x-1" },
|
|
334
|
+
react_1.default.createElement("div", { className: "flex flex-col justify-center items-center" },
|
|
335
|
+
react_1.default.createElement("b", null, headCell.label)),
|
|
336
|
+
orderBy === headCell.id && null))))),
|
|
337
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }))),
|
|
338
|
+
react_1.default.createElement(core_1.TableBody, null, (0, utils_1.stableSort)(tableData, (0, utils_1.getComparator)(order, orderBy, descendingComparator)).slice(firstItem, lastItem).map((row, index) => {
|
|
339
|
+
const { fileName, docType, uploadedDate, expiryDate, } = row;
|
|
340
|
+
return (react_1.default.createElement(core_1.TableRow, { key: index },
|
|
341
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }, index + 1),
|
|
342
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" },
|
|
343
|
+
react_1.default.createElement("a", { onClick: () => handleDownloadFile(fileName), style: {
|
|
344
|
+
color: 'blue',
|
|
345
|
+
textDecoration: 'underline',
|
|
346
|
+
cursor: 'pointer',
|
|
347
|
+
} }, fileName)),
|
|
348
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }, docType),
|
|
349
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }, uploadedDate),
|
|
350
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell, align: "center" }, expiryDate),
|
|
351
|
+
react_1.default.createElement(core_1.TableCell, { className: classes.tableCell },
|
|
352
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, direction: "row", justify: "space-evenly", alignItems: "center" },
|
|
353
|
+
react_1.default.createElement(core_1.Tooltip, { arrow: true, placement: "top", interactive: true, className: "whitespace-nowrap", title: "Download Document" },
|
|
354
|
+
react_1.default.createElement(core_1.IconButton, { onClick: () => handleDownloadFile(fileName) },
|
|
355
|
+
" ",
|
|
356
|
+
react_1.default.createElement(base_icons_1.IconDocumentDownload, { size: "sm" }),
|
|
357
|
+
" ")),
|
|
358
|
+
react_1.default.createElement(core_1.Tooltip, { arrow: true, placement: "top", interactive: true, className: "whitespace-nowrap", title: "This will delete the document for you and the Client" },
|
|
359
|
+
react_1.default.createElement(core_1.IconButton, { onClick: () => toggleDeleteModal(fileName) },
|
|
360
|
+
" ",
|
|
361
|
+
react_1.default.createElement(base_icons_1.IconTrash, { size: "sm" }),
|
|
362
|
+
" "))))));
|
|
363
|
+
})))
|
|
364
|
+
:
|
|
365
|
+
react_1.default.createElement(core_1.Box, null,
|
|
366
|
+
react_1.default.createElement(core_1.Divider, null),
|
|
367
|
+
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { fontWeight: 'bold' }, align: 'center' }, "No Documents Found"),
|
|
368
|
+
react_1.default.createElement(core_1.Typography, { variant: "body1", align: 'center' }, "You haven\u2019t uploaded any documents yet. Click above and upload any .pdf , .doc, .docx, .ppt, .xls, .xlsx file. Your resume is a great way to start."))),
|
|
369
|
+
(expertFiles === null || expertFiles === void 0 ? void 0 : expertFiles.length) >= 10 && react_1.default.createElement(core_1.Box, { m: 2 },
|
|
370
|
+
react_1.default.createElement(Pagination_1.default, { total: expertFiles === null || expertFiles === void 0 ? void 0 : expertFiles.length, currentPage: currentPage, setCurrentPage: setCurrentPage, perPageItems: perPageItems, setPerPageItems: setPerPageItems, displayText: "projects" })),
|
|
371
|
+
react_1.default.createElement(DeleteDocumentModal_1.DeleteDocumentModal, { isDeleteModalOpen: isDeleteModalOpen, setDeleteModalOpen: setDeleteModalOpen, handleDelete: handleDelete, content: apiFoldername.split('/')[1] !== "EO Insurance" ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
372
|
+
"Are you sure you want to delete document ",
|
|
373
|
+
react_1.default.createElement("strong", null, deleteFileName),
|
|
374
|
+
" ?",
|
|
375
|
+
react_1.default.createElement("br", null),
|
|
376
|
+
"If you continue, this document will no longer be available.")) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
377
|
+
"Are you sure you want to delete Insurance document ",
|
|
378
|
+
react_1.default.createElement("strong", null, deleteFileName),
|
|
379
|
+
" ?",
|
|
380
|
+
react_1.default.createElement("br", null),
|
|
381
|
+
react_1.default.createElement("strong", null, "Note:"),
|
|
382
|
+
" You hold only one insurance document. Deleting it might effect your 'Matching'.")) }))));
|
|
383
|
+
};
|
|
384
|
+
exports.ParoDocumentsTable = ParoDocumentsTable;
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
exports.UploadFilesButton = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
9
|
+
const react_2 = require("react");
|
|
10
|
+
const UploadFilesButton = ({ onFileSelect, isLoading, }) => {
|
|
11
|
+
const fileInputRef = (0, react_2.useRef)(null);
|
|
12
|
+
const handleClick = () => {
|
|
13
|
+
var _a;
|
|
14
|
+
(_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
15
|
+
};
|
|
16
|
+
const handleFileChange = (event) => {
|
|
17
|
+
var _a;
|
|
18
|
+
const file = (_a = event.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
19
|
+
if (file) {
|
|
20
|
+
onFileSelect(file);
|
|
21
|
+
}
|
|
22
|
+
// Reset input value to allow uploading the same file again
|
|
23
|
+
event.target.value = '';
|
|
24
|
+
};
|
|
25
|
+
return (react_1.default.createElement("div", null,
|
|
26
|
+
react_1.default.createElement("input", { type: "file", ref: fileInputRef, onChange: handleFileChange, className: "hidden", accept: ".pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx" }),
|
|
27
|
+
react_1.default.createElement(base_ui_1.Button, { onClick: handleClick, disabled: isLoading })));
|
|
28
|
+
};
|
|
29
|
+
exports.UploadFilesButton = UploadFilesButton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DocumentCenter } from './DocumentCenter';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocumentCenter = void 0;
|
|
4
|
+
var DocumentCenter_1 = require("./DocumentCenter");
|
|
5
|
+
Object.defineProperty(exports, "DocumentCenter", { enumerable: true, get: function () { return DocumentCenter_1.DocumentCenter; } });
|