udp-react-enterprise-component-library 25.18.1-beta.53 → 25.18.1-beta.54

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 (45) hide show
  1. package/dist/{AmbientAutoComplete-TYJ_JlO5.js → AmbientAutoComplete-NohpvB31.js} +3 -2
  2. package/dist/AmbientAutoComplete-NohpvB31.js.map +1 -0
  3. package/dist/{ImportDataFromFileMapping-DR5rjwE8.js → ImportDataFromFileMapping-3XXgUR-Z.js} +2 -2
  4. package/dist/{ImportDataFromFileMapping-DR5rjwE8.js.map → ImportDataFromFileMapping-3XXgUR-Z.js.map} +1 -1
  5. package/dist/MyExportsPage-C79id2As.js +3 -0
  6. package/dist/{MyExportsPage-zKRz4fL5.js → MyExportsPage-Ckti0gqK.js} +2 -2
  7. package/dist/{MyExportsPage-zKRz4fL5.js.map → MyExportsPage-Ckti0gqK.js.map} +1 -1
  8. package/dist/{Shell-B6Qxi2hZ.js → Shell-B8oi58iV.js} +2 -2
  9. package/dist/{Shell-B6Qxi2hZ.js.map → Shell-B8oi58iV.js.map} +1 -1
  10. package/dist/UI/forms/index.js +1 -1
  11. package/dist/UI/index.js +1 -1
  12. package/dist/UI/inputs/textField/index.js +1 -1
  13. package/dist/{UdpImportFromFileMappingPage-BOBh4ySA.js → UdpImportFromFileMappingPage-B2jpLQlP.js} +2 -2
  14. package/dist/{UdpImportFromFileMappingPage-BOBh4ySA.js.map → UdpImportFromFileMappingPage-B2jpLQlP.js.map} +1 -1
  15. package/dist/{UdpTransactionTypesPage-DFpnQn7f.js → UdpTransactionTypesPage-C-TdPgtF.js} +2 -2
  16. package/dist/{UdpTransactionTypesPage-DFpnQn7f.js.map → UdpTransactionTypesPage-C-TdPgtF.js.map} +1 -1
  17. package/dist/{UdpTransactionsPage-hu97DvPW.js → UdpTransactionsPage-CCcw7ZRU.js} +2 -2
  18. package/dist/{UdpTransactionsPage-hu97DvPW.js.map → UdpTransactionsPage-CCcw7ZRU.js.map} +1 -1
  19. package/dist/{forms-KpO4nIfl.js → forms-BVssUn2h.js} +7 -5
  20. package/dist/{forms-KpO4nIfl.js.map → forms-BVssUn2h.js.map} +1 -1
  21. package/dist/index.js +8 -8
  22. package/dist/routes/index.js +1 -1
  23. package/dist/{routes-qV4EIuwZ.js → routes-BxMFj34q.js} +2 -2
  24. package/dist/{routes-qV4EIuwZ.js.map → routes-BxMFj34q.js.map} +1 -1
  25. package/dist/shell/index.js +1 -1
  26. package/dist/types/src/UI/forms/UdpTransactionEmailForm.d.ts +5 -2
  27. package/dist/types/src/UI/forms/UdpTransactionEmailForm.d.ts.map +1 -1
  28. package/dist/types/src/UI/inputs/textField/AmbientAutoComplete.d.ts.map +1 -1
  29. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
  30. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
  31. package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
  32. package/dist/types/tsconfig.tsbuildinfo +1 -1
  33. package/dist/udp/export/index.js +1 -1
  34. package/dist/udp/fileImportMapping/index.js +1 -1
  35. package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
  36. package/dist/udp/pages/UdpPages/index.js +3 -3
  37. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  38. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  39. package/dist/uploader/index.js +1 -1
  40. package/dist/{uploader-Dvf2cDh8.js → uploader-CGVZIlR1.js} +2 -2
  41. package/dist/{uploader-Dvf2cDh8.js.map → uploader-CGVZIlR1.js.map} +1 -1
  42. package/export-map.json +1 -1
  43. package/package.json +1 -1
  44. package/dist/AmbientAutoComplete-TYJ_JlO5.js.map +0 -1
  45. package/dist/MyExportsPage-DFIMneFr.js +0 -3
@@ -1,4 +1,4 @@
1
1
  import { n as VisualSearchObject, r as useUdpExport, t as ExportSidesheet } from "../../ExportSidesheet-DWkoiwxC.js";
2
- import { t as MyExportsPage } from "../../MyExportsPage-zKRz4fL5.js";
2
+ import { t as MyExportsPage } from "../../MyExportsPage-Ckti0gqK.js";
3
3
 
4
4
  export { ExportSidesheet, MyExportsPage, VisualSearchObject, useUdpExport };
@@ -1,5 +1,5 @@
1
1
  import { t as TableContainer } from "../../TableContainer-B0IAjIA3.js";
2
- import { a as handleTextFileUpload, i as handleJsonFileUpload, n as FileImportConfigCard, r as handleExcelFileUpload, t as ImportDataFromFileMapping } from "../../ImportDataFromFileMapping-DR5rjwE8.js";
2
+ import { a as handleTextFileUpload, i as handleJsonFileUpload, n as FileImportConfigCard, r as handleExcelFileUpload, t as ImportDataFromFileMapping } from "../../ImportDataFromFileMapping-3XXgUR-Z.js";
3
3
  import React, { useMemo } from "react";
4
4
 
5
5
  //#region src/udp/fileImportMapping/SampleFileImportGrid.jsx
@@ -1,3 +1,3 @@
1
- import { n as UdpImportFromFileMappingPage_default } from "../../../UdpImportFromFileMappingPage-BOBh4ySA.js";
1
+ import { n as UdpImportFromFileMappingPage_default } from "../../../UdpImportFromFileMappingPage-B2jpLQlP.js";
2
2
 
3
3
  export { UdpImportFromFileMappingPage_default as default };
@@ -16,10 +16,10 @@ import { t as UdpFormsPublicForm_exports } from "../../../UdpFormsPublicForm-Dgy
16
16
  import { t as UdpFormsPrivateForm_exports } from "../../../UdpFormsPrivateForm-D6clAgfY.js";
17
17
  import { t as UdpFormsListPage_exports } from "../../../UdpFormsListPage-BsTi2bXy.js";
18
18
  import { t as UdpFormsBuilderPage_exports } from "../../../UdpFormsBuilderPage-C1oc66zH.js";
19
- import { t as UdpImportFromFileMappingPage_exports } from "../../../UdpImportFromFileMappingPage-BOBh4ySA.js";
19
+ import { t as UdpImportFromFileMappingPage_exports } from "../../../UdpImportFromFileMappingPage-B2jpLQlP.js";
20
20
  import { t as UdpAuditEvents_exports } from "../../../UdpAuditEvents-JP-tGjrh.js";
21
- import { t as UdpTransactionTypesPage_exports } from "../../../UdpTransactionTypesPage-DFpnQn7f.js";
22
- import { t as UdpTransactionsPage_exports } from "../../../UdpTransactionsPage-hu97DvPW.js";
21
+ import { t as UdpTransactionTypesPage_exports } from "../../../UdpTransactionTypesPage-C-TdPgtF.js";
22
+ import { t as UdpTransactionsPage_exports } from "../../../UdpTransactionsPage-CCcw7ZRU.js";
23
23
 
24
24
  //#region src/udp/pages/UdpPages/index.ts
25
25
  const UdpPages = {
@@ -1,3 +1,3 @@
1
- import { n as UdpTransactionTypesPage_default } from "../../../UdpTransactionTypesPage-DFpnQn7f.js";
1
+ import { n as UdpTransactionTypesPage_default } from "../../../UdpTransactionTypesPage-C-TdPgtF.js";
2
2
 
3
3
  export { UdpTransactionTypesPage_default as default };
@@ -1,3 +1,3 @@
1
- import { n as UdpTransactionsPage_default } from "../../../UdpTransactionsPage-hu97DvPW.js";
1
+ import { n as UdpTransactionsPage_default } from "../../../UdpTransactionsPage-CCcw7ZRU.js";
2
2
 
3
3
  export { UdpTransactionsPage_default as default };
@@ -1,4 +1,4 @@
1
1
  import { t as DragDropFileUpload } from "../DragDropFileUpload-CVnUu-6f.js";
2
- import { n as FileType, t as Attachments } from "../uploader-Dvf2cDh8.js";
2
+ import { n as FileType, t as Attachments } from "../uploader-CGVZIlR1.js";
3
3
 
4
4
  export { Attachments, DragDropFileUpload, FileType };
@@ -6,7 +6,7 @@ import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
6
6
  import { t as FluentDialog } from "./FluentDialog-B5ZxvX1E.js";
7
7
  import { t as LinearProgress$1 } from "./LinearProgress-CpJeIaEP.js";
8
8
  import { t as Box$1 } from "./Box-Colr5GEl.js";
9
- import { t as AmbientAutoComplete } from "./AmbientAutoComplete-TYJ_JlO5.js";
9
+ import { t as AmbientAutoComplete } from "./AmbientAutoComplete-NohpvB31.js";
10
10
  import { t as DragDropFileUpload } from "./DragDropFileUpload-CVnUu-6f.js";
11
11
  import React, { useCallback, useState } from "react";
12
12
  import { Divider, IconButton, List, ListItem, Typography, makeStyles } from "@material-ui/core";
@@ -311,4 +311,4 @@ const Attachments = ({ allowedExtensions, MAX_FILE_SIZE_MB, filePreview, setFile
311
311
 
312
312
  //#endregion
313
313
  export { FileType as n, Attachments as t };
314
- //# sourceMappingURL=uploader-Dvf2cDh8.js.map
314
+ //# sourceMappingURL=uploader-CGVZIlR1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploader-Dvf2cDh8.js","names":["useStyles","FileProfile","ImagePreview","attachmentType","Box","DeleteIcon","LinearProgress"],"sources":["../src/uploader/FileProfile.jsx","../src/uploader/ImagePreview.jsx","../src/uploader/FileType.jsx","../src/uploader/enums/systemEnums.ts","../src/uploader/Attachments.jsx"],"sourcesContent":["import React from 'react'\nimport { Typography, makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row'\n },\n prefix: {\n fontWeight: 600\n },\n title: {\n flex: 1\n },\n detail: {\n marginLeft: theme.spacing(2)\n }\n}))\n\nconst FileProfile = (props) => {\n const classes = useStyles()\n const { children, fileName, fileType, size, lastModifiedDate } = props\n return (\n <div>\n <div className={classes.root}>\n <Typography variant='body1' className={classes.title}>\n <strong>{fileName}</strong>\n </Typography>\n <Typography variant='caption' className={classes.detail}>\n <span className={classes.prefix}>Type:</span> {fileType}\n </Typography>\n <Typography variant='caption' className={classes.detail}>\n <span className={classes.prefix}>Size:</span> {size}\n </Typography>\n </div>\n {children}\n {/* Last modified not supported in FireFox */}\n {/* <Typography variant=\"caption\">\n <span className={classes.prefix}>Last Modified:</span>{' '}\n {lastModifiedDate}\n </Typography> */}\n </div>\n )\n}\nexport default FileProfile\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n justifyContent: 'center'\n },\n image: {\n maxWidth: 465\n }\n}))\n\nconst ImagePreview = (props) => {\n const { image } = props\n const classes = useStyles()\n\n return (\n <div className={classes.root}>\n <img className={classes.image} src={image} alt='upload preview' />\n </div>\n )\n}\nexport default ImagePreview\n","import React from 'react'\nimport FileProfile from './FileProfile'\nimport ImagePreview from './ImagePreview'\n\nexport const FileType = (props) => {\n let type = ''\n const { fileType, image, fileName, size, lastModifiedDate } = props\n\n switch (fileType) {\n case 'pdf':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n />\n )\n break\n case 'doc':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n />\n )\n break\n case 'png':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n case 'jpg':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n case 'jpeg':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n\n default:\n }\n\n return type\n}\n","export enum APIStatusCode {\n Success = 200,\n Created = 201,\n Accepted = 202,\n NoContent = 204,\n Forbidden = 403,\n}\n\nexport enum AttachmentType {\n SiteInstruction = 1,\n RFI = 2\n}\n\nexport enum AttachmentAction {\n None = 1,\n Delete = 2,\n Remove = 3\n};\n","import React, { useCallback, useState } from 'react';\nimport { apiMutate } from '../utilities';\nimport { Box } from '../UI';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { DragDropFileUpload } from './DragDropFileUpload';\nimport { LinearProgress } from '../UI';\nimport { List, ListItem, IconButton } from '@material-ui/core';\nimport { ConfigService } from '../configService/index';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { DownloadIcon, ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { useHandleAxiosSnackbar } from '../utilities';\nimport { Divider } from '@material-ui/core';\nimport { AttachmentAction } from './enums/systemEnums';\nimport { FluentDialog } from '../UI';\nimport { FluentIconButton } from '../UI/inputs/buttons';\nimport './Attachments.css';\nimport { AmbientAutoComplete } from '../UI/inputs/textField';\n\nconst removeDuplicateFiles = (incomingFiles, existingFiles) => {\n const uniqueFiles = [];\n const duplicateFiles = [];\n\n incomingFiles.forEach((newFile) => {\n const exists = existingFiles.some(\n (existingFile) =>\n existingFile.name === newFile.name ||\n existingFile.fileName === newFile.name\n );\n\n if (exists) {\n duplicateFiles.push(newFile);\n } else {\n uniqueFiles.push(newFile);\n }\n });\n\n return { uniqueFiles, duplicateFiles };\n};\n\nexport const Attachments = ({\n allowedExtensions,\n MAX_FILE_SIZE_MB,\n filePreview,\n setFilePreview,\n currentAttachments,\n setCurrentAttachments,\n attachmentTypes,\n attachmentType,\n setAttachmentType,\n attachmentProgress,\n setAttachmentProgress,\n previousAttachments,\n setPreviousAttachments\n}) => {\n const [attachmentDialogOpen, setAttachmentDialogOpen] = useState(false);\n const [attachmentToDelete, setAttachmentToDelete] = useState(null);\n const [attachmentToDeleteIndex, setAttachmentToDeleteIndex] = useState(0);\n const [attachmentAction, setAttachmentAction] = useState(\n AttachmentAction.None\n );\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n const { t } = useTranslation();\n\n const initiateAttachmentAction = useCallback((action, file, index) => {\n setAttachmentAction(action);\n setAttachmentToDelete(file);\n setAttachmentToDeleteIndex(index);\n setAttachmentDialogOpen(true);\n }, []);\n\n const handleAttachmentDeleteClick = useCallback(\n (file, index) => {\n initiateAttachmentAction(AttachmentAction.Delete, file, index);\n },\n [initiateAttachmentAction]\n );\n\n const handleAttachmentRemoveClick = useCallback(\n (file, index) => {\n initiateAttachmentAction(AttachmentAction.Remove, file, index);\n },\n [initiateAttachmentAction]\n );\n\n const handleCloseAttachmentDialog = useCallback(() => {\n setAttachmentAction(AttachmentAction.None);\n setAttachmentToDelete({});\n setAttachmentDialogOpen(false);\n }, []);\n\n const removeAttachmentFromList = useCallback(\n (attachments, setAttachments) => {\n setAttachments((prev) =>\n prev.filter((item, i) => i !== attachmentToDeleteIndex)\n );\n handleSuccessSnackbar(t('Attachment Removed Successfully'));\n handleCloseAttachmentDialog();\n },\n [\n attachmentToDeleteIndex,\n handleSuccessSnackbar,\n handleCloseAttachmentDialog,\n t\n ]\n );\n\n const deleteAttachment = useCallback(async () => {\n try {\n setAttachmentProgress(true);\n const filePayload = { ...attachmentToDelete, isDeleted: true };\n\n await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${attachmentToDelete.transactionAttachmentId}`,\n {\n method: 'put',\n data: filePayload\n }\n );\n removeAttachmentFromList(previousAttachments, setPreviousAttachments);\n } catch (error) {\n handleErrorSnackbar(\n 'Failed to delete attachment',\n 'We encountered a system error while trying to delete the file. Please try again.'\n );\n console.error(error);\n } finally {\n setAttachmentProgress(false);\n setAttachmentDialogOpen(false);\n }\n }, [\n attachmentToDelete,\n removeAttachmentFromList,\n previousAttachments,\n setPreviousAttachments,\n setAttachmentProgress,\n handleErrorSnackbar\n ]);\n\n const handleDownloadFile = useCallback(async (file) => {\n try {\n const response = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${file.transactionAttachmentId}/udpDriveFile/download`,\n {}\n );\n const url = response.data.link;\n const link = document.createElement('a');\n link.href = url;\n link.download = file.fileName ?? file.name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } catch (e) {\n console.error('Download failed', e);\n }\n }, []);\n\n const handleAddFiles = useCallback(\n async (files) => {\n const incomingFiles = Array.from(files);\n const validFiles = [];\n const invalidFiles = [];\n\n incomingFiles.forEach((file) => {\n const ext = file.name.split('.').pop().toLowerCase();\n const sizeInMB = file.size / (1024 * 1024);\n\n if (!allowedExtensions.includes(ext)) {\n invalidFiles.push(`${file.name} (Invalid file type)`);\n } else if (sizeInMB > MAX_FILE_SIZE_MB) {\n invalidFiles.push(`${file.name} (Exceeds ${MAX_FILE_SIZE_MB} MB)`);\n } else {\n validFiles.push(file);\n }\n });\n\n const allExistingFiles = [...previousAttachments, ...currentAttachments];\n const { uniqueFiles, duplicateFiles } = removeDuplicateFiles(\n validFiles,\n allExistingFiles\n );\n\n if (uniqueFiles.length > 0) {\n setCurrentAttachments((prev) => [...prev, ...uniqueFiles]);\n }\n\n if (invalidFiles.length > 0) {\n handleErrorSnackbar(\n 'Files not added',\n `The following files had errors:\\n${invalidFiles.join('\\n')}`\n );\n setFilePreview(true);\n }\n\n if (duplicateFiles.length > 0) {\n const duplicateNames = duplicateFiles.map((f) => f.name).join(', ');\n handleErrorSnackbar(\n 'Duplicates skipped',\n `The following files already exist and were not added: ${duplicateNames}`\n );\n }\n },\n [\n allowedExtensions,\n MAX_FILE_SIZE_MB,\n previousAttachments,\n currentAttachments,\n setCurrentAttachments,\n handleErrorSnackbar,\n setFilePreview\n ]\n );\n\n const handleAttachmentTypeSelect = useCallback(\n (attachmentType) => {\n setAttachmentType(attachmentType);\n },\n [setAttachmentType]\n );\n\n const renderCurrentAttachments = () => {\n return currentAttachments.map((file, index) => (\n <React.Fragment key={index}>\n {index > 0 && <Divider component='li' />}\n <ListItem\n className='list-separator-item'\n style={{ display: 'flex', justifyContent: 'space-between' }}\n >\n <Box>{file.fileName ? file.fileName : file.name}</Box>\n <Box>\n <IconButton\n onClick={() => handleAttachmentRemoveClick(file, index)}\n >\n <DeleteIcon />\n </IconButton>\n </Box>\n </ListItem>\n </React.Fragment>\n ));\n };\n\n const renderPreviousAttachments = () => {\n return previousAttachments.map((file, index) => (\n <ListItem\n key={index}\n style={{ display: 'flex', justifyContent: 'space-between' }}\n >\n <Box>{file.fileName ?? file.name}</Box>\n <Box>\n <IconButton onClick={() => handleAttachmentDeleteClick(file, index)}>\n <DeleteIcon />\n </IconButton>\n <IconButton onClick={() => handleDownloadFile(file)}>\n <DownloadIcon />\n </IconButton>\n </Box>\n </ListItem>\n ));\n };\n\n const renderConfirmationContent = () => {\n const isDeleteAction = attachmentAction === AttachmentAction.Delete;\n const actionVerb = isDeleteAction ? 'delete' : 'remove';\n const fileName = attachmentToDelete?.fileName ?? attachmentToDelete?.name;\n\n return (\n <>\n <p className={'deleteSubTitle'}>\n Are you sure you want to {actionVerb} this attachment -{' '}\n <strong>{`\"${fileName}\"`}</strong>?\n </p>\n {isDeleteAction && <p>This action cannot be undone.</p>}\n </>\n );\n };\n\n return (\n <>\n <div className='card-wrapper'>\n {attachmentProgress && (\n <div className='linear-progress'>\n <LinearProgress />\n </div>\n )}\n <AmbientCard\n fullWidth={true}\n title={t('Add New Attachments')}\n variant='secondary'\n subtitle={'These files will be included with the submittal(s)'}\n >\n <DragDropFileUpload\n title='Drag and drop files here or click to browse'\n handleUploadFile={handleAddFiles}\n hideSelectFileButton={false}\n hideFilePreview={!filePreview}\n minHeight='200px'\n maxHeight='400px'\n multiple={true}\n />\n <AmbientAutoComplete\n variant='outlined'\n isMultiple={false}\n value={attachmentType}\n getOptionLabelFunction={(option) => option.name}\n onChange={handleAttachmentTypeSelect}\n options={attachmentTypes?.pageList}\n label={t('Select Attachment Type')}\n required\n />\n </AmbientCard>\n {currentAttachments?.length > 0 && (\n <AmbientCard\n fullWidth={true}\n title={t('Current Attachments')}\n subtitle={`${currentAttachments.length} file(s) attached`}\n >\n <List>{renderCurrentAttachments()}</List>\n </AmbientCard>\n )}\n {previousAttachments.length > 0 && (\n <AmbientCard fullWidth={true} title={t('Previous Attachments')}>\n <List>{renderPreviousAttachments()}</List>\n </AmbientCard>\n )}\n </div>\n\n <FluentDialog\n title={\n <div className={'deleteTitle'}>\n <span>\n {attachmentAction === AttachmentAction.Delete\n ? t('Delete Attachment')\n : t('Remove Attachment')}\n </span>\n <FluentIconButton\n aria-label='close'\n icon={ChromeCloseIcon}\n onClick={handleCloseAttachmentDialog}\n />\n </div>\n }\n message={renderConfirmationContent()}\n labelOne={\n attachmentAction === AttachmentAction.Delete\n ? t('Delete')\n : t('Remove')\n }\n actionOne={\n attachmentAction === AttachmentAction.Delete\n ? deleteAttachment\n : () =>\n removeAttachmentFromList(\n currentAttachments,\n setCurrentAttachments\n )\n }\n labelTwo={t('Cancel')}\n actionTwo={handleCloseAttachmentDialog}\n open={attachmentDialogOpen}\n handleClose={handleCloseAttachmentDialog}\n fullWidth\n />\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"uploader-CGVZIlR1.js","names":["useStyles","FileProfile","ImagePreview","attachmentType","Box","DeleteIcon","LinearProgress"],"sources":["../src/uploader/FileProfile.jsx","../src/uploader/ImagePreview.jsx","../src/uploader/FileType.jsx","../src/uploader/enums/systemEnums.ts","../src/uploader/Attachments.jsx"],"sourcesContent":["import React from 'react'\nimport { Typography, makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row'\n },\n prefix: {\n fontWeight: 600\n },\n title: {\n flex: 1\n },\n detail: {\n marginLeft: theme.spacing(2)\n }\n}))\n\nconst FileProfile = (props) => {\n const classes = useStyles()\n const { children, fileName, fileType, size, lastModifiedDate } = props\n return (\n <div>\n <div className={classes.root}>\n <Typography variant='body1' className={classes.title}>\n <strong>{fileName}</strong>\n </Typography>\n <Typography variant='caption' className={classes.detail}>\n <span className={classes.prefix}>Type:</span> {fileType}\n </Typography>\n <Typography variant='caption' className={classes.detail}>\n <span className={classes.prefix}>Size:</span> {size}\n </Typography>\n </div>\n {children}\n {/* Last modified not supported in FireFox */}\n {/* <Typography variant=\"caption\">\n <span className={classes.prefix}>Last Modified:</span>{' '}\n {lastModifiedDate}\n </Typography> */}\n </div>\n )\n}\nexport default FileProfile\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n justifyContent: 'center'\n },\n image: {\n maxWidth: 465\n }\n}))\n\nconst ImagePreview = (props) => {\n const { image } = props\n const classes = useStyles()\n\n return (\n <div className={classes.root}>\n <img className={classes.image} src={image} alt='upload preview' />\n </div>\n )\n}\nexport default ImagePreview\n","import React from 'react'\nimport FileProfile from './FileProfile'\nimport ImagePreview from './ImagePreview'\n\nexport const FileType = (props) => {\n let type = ''\n const { fileType, image, fileName, size, lastModifiedDate } = props\n\n switch (fileType) {\n case 'pdf':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n />\n )\n break\n case 'doc':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n />\n )\n break\n case 'png':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n case 'jpg':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n case 'jpeg':\n type = (\n <FileProfile\n fileType={fileType}\n fileName={fileName}\n size={size}\n lastModifiedDate={lastModifiedDate}\n >\n <ImagePreview image={image} />\n </FileProfile>\n )\n break\n\n default:\n }\n\n return type\n}\n","export enum APIStatusCode {\n Success = 200,\n Created = 201,\n Accepted = 202,\n NoContent = 204,\n Forbidden = 403,\n}\n\nexport enum AttachmentType {\n SiteInstruction = 1,\n RFI = 2\n}\n\nexport enum AttachmentAction {\n None = 1,\n Delete = 2,\n Remove = 3\n};\n","import React, { useCallback, useState } from 'react';\nimport { apiMutate } from '../utilities';\nimport { Box } from '../UI';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { DragDropFileUpload } from './DragDropFileUpload';\nimport { LinearProgress } from '../UI';\nimport { List, ListItem, IconButton } from '@material-ui/core';\nimport { ConfigService } from '../configService/index';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { DownloadIcon, ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { useHandleAxiosSnackbar } from '../utilities';\nimport { Divider } from '@material-ui/core';\nimport { AttachmentAction } from './enums/systemEnums';\nimport { FluentDialog } from '../UI';\nimport { FluentIconButton } from '../UI/inputs/buttons';\nimport './Attachments.css';\nimport { AmbientAutoComplete } from '../UI/inputs/textField';\n\nconst removeDuplicateFiles = (incomingFiles, existingFiles) => {\n const uniqueFiles = [];\n const duplicateFiles = [];\n\n incomingFiles.forEach((newFile) => {\n const exists = existingFiles.some(\n (existingFile) =>\n existingFile.name === newFile.name ||\n existingFile.fileName === newFile.name\n );\n\n if (exists) {\n duplicateFiles.push(newFile);\n } else {\n uniqueFiles.push(newFile);\n }\n });\n\n return { uniqueFiles, duplicateFiles };\n};\n\nexport const Attachments = ({\n allowedExtensions,\n MAX_FILE_SIZE_MB,\n filePreview,\n setFilePreview,\n currentAttachments,\n setCurrentAttachments,\n attachmentTypes,\n attachmentType,\n setAttachmentType,\n attachmentProgress,\n setAttachmentProgress,\n previousAttachments,\n setPreviousAttachments\n}) => {\n const [attachmentDialogOpen, setAttachmentDialogOpen] = useState(false);\n const [attachmentToDelete, setAttachmentToDelete] = useState(null);\n const [attachmentToDeleteIndex, setAttachmentToDeleteIndex] = useState(0);\n const [attachmentAction, setAttachmentAction] = useState(\n AttachmentAction.None\n );\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n const { t } = useTranslation();\n\n const initiateAttachmentAction = useCallback((action, file, index) => {\n setAttachmentAction(action);\n setAttachmentToDelete(file);\n setAttachmentToDeleteIndex(index);\n setAttachmentDialogOpen(true);\n }, []);\n\n const handleAttachmentDeleteClick = useCallback(\n (file, index) => {\n initiateAttachmentAction(AttachmentAction.Delete, file, index);\n },\n [initiateAttachmentAction]\n );\n\n const handleAttachmentRemoveClick = useCallback(\n (file, index) => {\n initiateAttachmentAction(AttachmentAction.Remove, file, index);\n },\n [initiateAttachmentAction]\n );\n\n const handleCloseAttachmentDialog = useCallback(() => {\n setAttachmentAction(AttachmentAction.None);\n setAttachmentToDelete({});\n setAttachmentDialogOpen(false);\n }, []);\n\n const removeAttachmentFromList = useCallback(\n (attachments, setAttachments) => {\n setAttachments((prev) =>\n prev.filter((item, i) => i !== attachmentToDeleteIndex)\n );\n handleSuccessSnackbar(t('Attachment Removed Successfully'));\n handleCloseAttachmentDialog();\n },\n [\n attachmentToDeleteIndex,\n handleSuccessSnackbar,\n handleCloseAttachmentDialog,\n t\n ]\n );\n\n const deleteAttachment = useCallback(async () => {\n try {\n setAttachmentProgress(true);\n const filePayload = { ...attachmentToDelete, isDeleted: true };\n\n await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${attachmentToDelete.transactionAttachmentId}`,\n {\n method: 'put',\n data: filePayload\n }\n );\n removeAttachmentFromList(previousAttachments, setPreviousAttachments);\n } catch (error) {\n handleErrorSnackbar(\n 'Failed to delete attachment',\n 'We encountered a system error while trying to delete the file. Please try again.'\n );\n console.error(error);\n } finally {\n setAttachmentProgress(false);\n setAttachmentDialogOpen(false);\n }\n }, [\n attachmentToDelete,\n removeAttachmentFromList,\n previousAttachments,\n setPreviousAttachments,\n setAttachmentProgress,\n handleErrorSnackbar\n ]);\n\n const handleDownloadFile = useCallback(async (file) => {\n try {\n const response = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${file.transactionAttachmentId}/udpDriveFile/download`,\n {}\n );\n const url = response.data.link;\n const link = document.createElement('a');\n link.href = url;\n link.download = file.fileName ?? file.name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } catch (e) {\n console.error('Download failed', e);\n }\n }, []);\n\n const handleAddFiles = useCallback(\n async (files) => {\n const incomingFiles = Array.from(files);\n const validFiles = [];\n const invalidFiles = [];\n\n incomingFiles.forEach((file) => {\n const ext = file.name.split('.').pop().toLowerCase();\n const sizeInMB = file.size / (1024 * 1024);\n\n if (!allowedExtensions.includes(ext)) {\n invalidFiles.push(`${file.name} (Invalid file type)`);\n } else if (sizeInMB > MAX_FILE_SIZE_MB) {\n invalidFiles.push(`${file.name} (Exceeds ${MAX_FILE_SIZE_MB} MB)`);\n } else {\n validFiles.push(file);\n }\n });\n\n const allExistingFiles = [...previousAttachments, ...currentAttachments];\n const { uniqueFiles, duplicateFiles } = removeDuplicateFiles(\n validFiles,\n allExistingFiles\n );\n\n if (uniqueFiles.length > 0) {\n setCurrentAttachments((prev) => [...prev, ...uniqueFiles]);\n }\n\n if (invalidFiles.length > 0) {\n handleErrorSnackbar(\n 'Files not added',\n `The following files had errors:\\n${invalidFiles.join('\\n')}`\n );\n setFilePreview(true);\n }\n\n if (duplicateFiles.length > 0) {\n const duplicateNames = duplicateFiles.map((f) => f.name).join(', ');\n handleErrorSnackbar(\n 'Duplicates skipped',\n `The following files already exist and were not added: ${duplicateNames}`\n );\n }\n },\n [\n allowedExtensions,\n MAX_FILE_SIZE_MB,\n previousAttachments,\n currentAttachments,\n setCurrentAttachments,\n handleErrorSnackbar,\n setFilePreview\n ]\n );\n\n const handleAttachmentTypeSelect = useCallback(\n (attachmentType) => {\n setAttachmentType(attachmentType);\n },\n [setAttachmentType]\n );\n\n const renderCurrentAttachments = () => {\n return currentAttachments.map((file, index) => (\n <React.Fragment key={index}>\n {index > 0 && <Divider component='li' />}\n <ListItem\n className='list-separator-item'\n style={{ display: 'flex', justifyContent: 'space-between' }}\n >\n <Box>{file.fileName ? file.fileName : file.name}</Box>\n <Box>\n <IconButton\n onClick={() => handleAttachmentRemoveClick(file, index)}\n >\n <DeleteIcon />\n </IconButton>\n </Box>\n </ListItem>\n </React.Fragment>\n ));\n };\n\n const renderPreviousAttachments = () => {\n return previousAttachments.map((file, index) => (\n <ListItem\n key={index}\n style={{ display: 'flex', justifyContent: 'space-between' }}\n >\n <Box>{file.fileName ?? file.name}</Box>\n <Box>\n <IconButton onClick={() => handleAttachmentDeleteClick(file, index)}>\n <DeleteIcon />\n </IconButton>\n <IconButton onClick={() => handleDownloadFile(file)}>\n <DownloadIcon />\n </IconButton>\n </Box>\n </ListItem>\n ));\n };\n\n const renderConfirmationContent = () => {\n const isDeleteAction = attachmentAction === AttachmentAction.Delete;\n const actionVerb = isDeleteAction ? 'delete' : 'remove';\n const fileName = attachmentToDelete?.fileName ?? attachmentToDelete?.name;\n\n return (\n <>\n <p className={'deleteSubTitle'}>\n Are you sure you want to {actionVerb} this attachment -{' '}\n <strong>{`\"${fileName}\"`}</strong>?\n </p>\n {isDeleteAction && <p>This action cannot be undone.</p>}\n </>\n );\n };\n\n return (\n <>\n <div className='card-wrapper'>\n {attachmentProgress && (\n <div className='linear-progress'>\n <LinearProgress />\n </div>\n )}\n <AmbientCard\n fullWidth={true}\n title={t('Add New Attachments')}\n variant='secondary'\n subtitle={'These files will be included with the submittal(s)'}\n >\n <DragDropFileUpload\n title='Drag and drop files here or click to browse'\n handleUploadFile={handleAddFiles}\n hideSelectFileButton={false}\n hideFilePreview={!filePreview}\n minHeight='200px'\n maxHeight='400px'\n multiple={true}\n />\n <AmbientAutoComplete\n variant='outlined'\n isMultiple={false}\n value={attachmentType}\n getOptionLabelFunction={(option) => option.name}\n onChange={handleAttachmentTypeSelect}\n options={attachmentTypes?.pageList}\n label={t('Select Attachment Type')}\n required\n />\n </AmbientCard>\n {currentAttachments?.length > 0 && (\n <AmbientCard\n fullWidth={true}\n title={t('Current Attachments')}\n subtitle={`${currentAttachments.length} file(s) attached`}\n >\n <List>{renderCurrentAttachments()}</List>\n </AmbientCard>\n )}\n {previousAttachments.length > 0 && (\n <AmbientCard fullWidth={true} title={t('Previous Attachments')}>\n <List>{renderPreviousAttachments()}</List>\n </AmbientCard>\n )}\n </div>\n\n <FluentDialog\n title={\n <div className={'deleteTitle'}>\n <span>\n {attachmentAction === AttachmentAction.Delete\n ? t('Delete Attachment')\n : t('Remove Attachment')}\n </span>\n <FluentIconButton\n aria-label='close'\n icon={ChromeCloseIcon}\n onClick={handleCloseAttachmentDialog}\n />\n </div>\n }\n message={renderConfirmationContent()}\n labelOne={\n attachmentAction === AttachmentAction.Delete\n ? t('Delete')\n : t('Remove')\n }\n actionOne={\n attachmentAction === AttachmentAction.Delete\n ? deleteAttachment\n : () =>\n removeAttachmentFromList(\n currentAttachments,\n setCurrentAttachments\n )\n }\n labelTwo={t('Cancel')}\n actionTwo={handleCloseAttachmentDialog}\n open={attachmentDialogOpen}\n handleClose={handleCloseAttachmentDialog}\n fullWidth\n />\n </>\n );\n};\n"],"mappings":"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"}
package/export-map.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2025-12-15T21:02:16.323Z",
2
+ "generated": "2025-12-15T21:28:22.725Z",
3
3
  "library": "udp-react-enterprise-component-library",
4
4
  "totalExports": 815,
5
5
  "description": "Map of exported items to their module paths for tree-shaking",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-react-enterprise-component-library",
3
- "version": "25.18.1-beta.53",
3
+ "version": "25.18.1-beta.54",
4
4
  "description": "React-based UI component library implementing Fluent UI design for Univerus internal projects",
5
5
  "author": "Univerus",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmbientAutoComplete-TYJ_JlO5.js","names":["value"],"sources":["../src/UI/inputs/textField/AmbientAutoComplete.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React, { useCallback } from 'react';\nimport { TextField, makeStyles, Popper } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n borderRadius: 2,\n minHeight: 32,\n padding: 0,\n paddingTop: '0 !important',\n paddingBottom: (props) => (props.isMultiple ? '0 !important' : 10),\n marginTop: 3,\n '& .MuiFilledInput-inputMarginDense': {\n paddingTop: 8\n },\n '& .MuiFilledInput-root': {\n paddingTop: 0\n },\n '& .MuiInputAdornment-filled.MuiInputAdornment-positionStart:not(.MuiInputAdornment-hiddenLabel)':\n {\n marginTop: theme.spacing(0.5),\n marginLeft: theme.spacing(1)\n }\n },\n formTextInput: {\n fontSize: 14,\n marginTop: '2px !important',\n paddingBottom: '2px !important'\n },\n labelRoot: {\n fontSize: 14\n },\n root: {\n marginTop: 25,\n '& .MuiFormLabel-root': {\n marginTop: -30,\n marginLeft: -11\n },\n '& .MuiInputAdornment-root': {\n paddingLeft: theme.spacing(1)\n }\n },\n noLabel: {\n marginTop: theme.spacing(1)\n },\n formControl: {\n width: '100%'\n }\n}));\n\nconst AutoCompletePopper = (props) => {\n return <Popper {...props} placement='bottom-start' />;\n};\n\nexport const AmbientAutoComplete = (props) => {\n const {\n getOptionLabelFunction,\n getOptionSelected,\n label,\n placeholder,\n options,\n textFieldProps,\n disabled,\n onChange: onChangeProp,\n value,\n additionalOnChangeAction,\n classes: classProps,\n variant = 'filled',\n inputProps,\n inputPropClasses,\n customPopper,\n disableClearable = false,\n defaultValue,\n additionalOptionKey,\n isMultiple = false,\n limitTags,\n renderTags,\n size = 'medium',\n groupBy = null,\n loading,\n disableCloseOnSelect = false,\n getOptionDisabled,\n ...other\n } = props;\n\n const classes = useStyles(props);\n const { autocompleteRoot } = classProps || {};\n\n const onChange = useCallback(\n (e, value) => {\n if (additionalOnChangeAction) {\n additionalOnChangeAction(value);\n }\n return onChangeProp?.(value);\n },\n [onChangeProp, additionalOnChangeAction]\n );\n\n return (\n <Autocomplete\n id='autocomplete'\n multiple={isMultiple}\n limitTags={limitTags}\n disabled={disabled}\n options={options || []}\n loading={loading}\n getOptionLabel={getOptionLabelFunction}\n getOptionSelected={getOptionSelected}\n groupBy={groupBy}\n onChange={onChange}\n value={value || (isMultiple ? [] : null)}\n getOptionDisabled={getOptionDisabled}\n className={autocompleteRoot}\n classes={{\n root: classes.formControl\n }}\n PopperComponent={customPopper || AutoCompletePopper}\n disableClearable={disableClearable}\n defaultValue={defaultValue}\n size={size}\n disableCloseOnSelect={disableCloseOnSelect}\n renderInput={(params) => (\n <div className={label ? classes.root : classes.noLabel}>\n <TextField\n {...textFieldProps}\n {...params}\n {...other}\n label={label}\n margin='dense'\n variant={variant}\n size='small'\n InputProps={{\n ...params.InputProps,\n classes: {\n root: classes.input,\n input: classes.formTextInput,\n ...props.InputProps?.classes\n }\n }}\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n />\n </div>\n )}\n renderTags={renderTags}\n />\n );\n};\n"],"mappings":";;;;;AAKA,MAAM,YAAY,YAAY,WAAW;CACvC,OAAO;EACL,cAAc;EACd,WAAW;EACX,SAAS;EACT,YAAY;EACZ,gBAAgB,UAAW,MAAM,aAAa,iBAAiB;EAC/D,WAAW;EACX,sCAAsC,EACpC,YAAY,GACb;EACD,0BAA0B,EACxB,YAAY,GACb;EACD,mGACE;GACE,WAAW,MAAM,QAAQ,GAAI;GAC7B,YAAY,MAAM,QAAQ,EAAE;GAC7B;EACJ;CACD,eAAe;EACb,UAAU;EACV,WAAW;EACX,eAAe;EAChB;CACD,WAAW,EACT,UAAU,IACX;CACD,MAAM;EACJ,WAAW;EACX,wBAAwB;GACtB,WAAW;GACX,YAAY;GACb;EACD,6BAA6B,EAC3B,aAAa,MAAM,QAAQ,EAAE,EAC9B;EACF;CACD,SAAS,EACP,WAAW,MAAM,QAAQ,EAAE,EAC5B;CACD,aAAa,EACX,OAAO,QACR;CACF,EAAE;AAEH,MAAM,sBAAsB,UAAU;AACpC,QAAO,oCAAC;EAAO,GAAI;EAAO,WAAU;GAAiB;;AAGvD,MAAa,uBAAuB,UAAU;CAC5C,MAAM,EACJ,wBACA,mBACA,OACA,aACA,SACA,gBACA,UACA,UAAU,cACV,OACA,0BACA,SAAS,YACT,UAAU,UACV,YACA,kBACA,cACA,mBAAmB,OACnB,cACA,qBACA,aAAa,OACb,WACA,YACA,OAAO,UACP,UAAU,MACV,SACA,uBAAuB,OACvB,mBACA,GAAG,UACD;CAEJ,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,qBAAqB,cAAc,EAAE;CAE7C,MAAM,WAAW,aACd,GAAG,YAAU;AACZ,MAAI,yBACF,0BAAyBA,QAAM;AAEjC,SAAO,eAAeA,QAAM;IAE9B,CAAC,cAAc,yBAAyB,CACzC;AAED,QACE,oCAAC;EACC,IAAG;EACH,UAAU;EACC;EACD;EACV,SAAS,WAAW,EAAE;EACb;EACT,gBAAgB;EACG;EACV;EACC;EACV,OAAO,UAAU,aAAa,EAAE,GAAG;EAChB;EACnB,WAAW;EACX,SAAS,EACP,MAAM,QAAQ,aACf;EACD,iBAAiB,gBAAgB;EACf;EACJ;EACR;EACgB;EACtB,cAAc,WACZ,oCAAC,SAAI,WAAW,QAAQ,QAAQ,OAAO,QAAQ,WAC7C,oCAAC;GACC,GAAI;GACJ,GAAI;GACJ,GAAI;GACG;GACP,QAAO;GACE;GACT,MAAK;GACL,YAAY;IACV,GAAG,OAAO;IACV,SAAS;KACP,MAAM,QAAQ;KACd,OAAO,QAAQ;KACf,GAAG,MAAM,YAAY;KACtB;IACF;GACD,iBAAiB;IACf,QAAQ;IACR,SAAS;KACP,MAAM,QAAQ;KACd,SAAS,QAAQ;KAClB;IACF;IACD,CACE;EAEI;GACZ"}
@@ -1,3 +0,0 @@
1
- import { n as MyExportsPage_default, t as MyExportsPage } from "./MyExportsPage-zKRz4fL5.js";
2
-
3
- export { MyExportsPage, MyExportsPage_default as default };