udp-react-enterprise-component-library 25.18.1-beta.52 → 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.
- package/dist/{AmbientAutoComplete-TYJ_JlO5.js → AmbientAutoComplete-NohpvB31.js} +3 -2
- package/dist/AmbientAutoComplete-NohpvB31.js.map +1 -0
- package/dist/{ImportDataFromFileMapping-DR5rjwE8.js → ImportDataFromFileMapping-3XXgUR-Z.js} +2 -2
- package/dist/{ImportDataFromFileMapping-DR5rjwE8.js.map → ImportDataFromFileMapping-3XXgUR-Z.js.map} +1 -1
- package/dist/MyExportsPage-C79id2As.js +3 -0
- package/dist/{MyExportsPage-zKRz4fL5.js → MyExportsPage-Ckti0gqK.js} +2 -2
- package/dist/{MyExportsPage-zKRz4fL5.js.map → MyExportsPage-Ckti0gqK.js.map} +1 -1
- package/dist/{Shell-B6Qxi2hZ.js → Shell-B8oi58iV.js} +2 -2
- package/dist/{Shell-B6Qxi2hZ.js.map → Shell-B8oi58iV.js.map} +1 -1
- package/dist/UI/forms/index.js +1 -1
- package/dist/UI/index.js +1 -1
- package/dist/UI/inputs/textField/index.js +1 -1
- package/dist/{UdpImportFromFileMappingPage-BOBh4ySA.js → UdpImportFromFileMappingPage-B2jpLQlP.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-BOBh4ySA.js.map → UdpImportFromFileMappingPage-B2jpLQlP.js.map} +1 -1
- package/dist/{UdpTransactionTypesPage-DFpnQn7f.js → UdpTransactionTypesPage-C-TdPgtF.js} +2 -2
- package/dist/{UdpTransactionTypesPage-DFpnQn7f.js.map → UdpTransactionTypesPage-C-TdPgtF.js.map} +1 -1
- package/dist/{UdpTransactionsPage-hu97DvPW.js → UdpTransactionsPage-CCcw7ZRU.js} +2 -2
- package/dist/{UdpTransactionsPage-hu97DvPW.js.map → UdpTransactionsPage-CCcw7ZRU.js.map} +1 -1
- package/dist/{forms-Eqr3TUUl.js → forms-BVssUn2h.js} +7 -3
- package/dist/{forms-Eqr3TUUl.js.map → forms-BVssUn2h.js.map} +1 -1
- package/dist/index.js +8 -8
- package/dist/routes/index.js +1 -1
- package/dist/{routes-qV4EIuwZ.js → routes-BxMFj34q.js} +2 -2
- package/dist/{routes-qV4EIuwZ.js.map → routes-BxMFj34q.js.map} +1 -1
- package/dist/shell/index.js +1 -1
- package/dist/types/src/UI/forms/UdpTransactionEmailForm.d.ts +5 -1
- package/dist/types/src/UI/forms/UdpTransactionEmailForm.d.ts.map +1 -1
- package/dist/types/src/UI/inputs/textField/AmbientAutoComplete.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/export/index.js +1 -1
- package/dist/udp/fileImportMapping/index.js +1 -1
- package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
- package/dist/udp/pages/UdpPages/index.js +3 -3
- package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
- package/dist/uploader/index.js +1 -1
- package/dist/{uploader-Dvf2cDh8.js → uploader-CGVZIlR1.js} +2 -2
- package/dist/{uploader-Dvf2cDh8.js.map → uploader-CGVZIlR1.js.map} +1 -1
- package/export-map.json +1 -1
- package/package.json +1 -1
- package/dist/AmbientAutoComplete-TYJ_JlO5.js.map +0 -1
- package/dist/MyExportsPage-DFIMneFr.js +0 -3
|
@@ -42,7 +42,7 @@ const AutoCompletePopper = (props) => {
|
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
44
|
const AmbientAutoComplete = (props) => {
|
|
45
|
-
const { getOptionLabelFunction, getOptionSelected, label, placeholder, options, textFieldProps, disabled, onChange: onChangeProp, value, additionalOnChangeAction, classes: classProps, variant = "filled", inputProps, inputPropClasses, customPopper, disableClearable = false, defaultValue, additionalOptionKey, isMultiple = false, limitTags, renderTags, size = "medium", groupBy = null, loading, disableCloseOnSelect = false, getOptionDisabled, ...other } = props;
|
|
45
|
+
const { getOptionLabelFunction, getOptionSelected, label, placeholder, options, textFieldProps, disabled, onChange: onChangeProp, value, additionalOnChangeAction, classes: classProps, variant = "filled", inputProps, inputPropClasses, customPopper, disableClearable = false, defaultValue, additionalOptionKey, isMultiple = false, limitTags, renderTags, size = "medium", groupBy = null, filterOptions, loading, disableCloseOnSelect = false, getOptionDisabled, ...other } = props;
|
|
46
46
|
const classes = useStyles(props);
|
|
47
47
|
const { autocompleteRoot } = classProps || {};
|
|
48
48
|
const onChange = useCallback((e, value$1) => {
|
|
@@ -59,6 +59,7 @@ const AmbientAutoComplete = (props) => {
|
|
|
59
59
|
getOptionLabel: getOptionLabelFunction,
|
|
60
60
|
getOptionSelected,
|
|
61
61
|
groupBy,
|
|
62
|
+
filterOptions,
|
|
62
63
|
onChange,
|
|
63
64
|
value: value || (isMultiple ? [] : null),
|
|
64
65
|
getOptionDisabled,
|
|
@@ -99,4 +100,4 @@ const AmbientAutoComplete = (props) => {
|
|
|
99
100
|
|
|
100
101
|
//#endregion
|
|
101
102
|
export { AmbientAutoComplete as t };
|
|
102
|
-
//# sourceMappingURL=AmbientAutoComplete-
|
|
103
|
+
//# sourceMappingURL=AmbientAutoComplete-NohpvB31.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmbientAutoComplete-NohpvB31.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 filterOptions,\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 filterOptions={filterOptions}\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,eACA,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;EACM;EACL;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"}
|
package/dist/{ImportDataFromFileMapping-DR5rjwE8.js → ImportDataFromFileMapping-3XXgUR-Z.js}
RENAMED
|
@@ -15,7 +15,7 @@ import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
|
|
|
15
15
|
import { t as usePromotedMethodEntity } from "./usePromotedMethodEntity-B4rk75tH.js";
|
|
16
16
|
import { t as AmbientTextField } from "./AmbientTextField-CdnqPJUw.js";
|
|
17
17
|
import { t as Divider$1 } from "./Divider-B63XWSBY.js";
|
|
18
|
-
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-
|
|
18
|
+
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-NohpvB31.js";
|
|
19
19
|
import { t as DragDropFileUpload } from "./DragDropFileUpload-CVnUu-6f.js";
|
|
20
20
|
import { t as CompactDataListItem } from "./CompactDataListItem-BB0gf0JD.js";
|
|
21
21
|
import { t as AmbientStepper } from "./AmbientStepper-BkhoDtpx.js";
|
|
@@ -566,4 +566,4 @@ const ImportDataFromFileMapping = (props) => {
|
|
|
566
566
|
|
|
567
567
|
//#endregion
|
|
568
568
|
export { handleTextFileUpload as a, handleJsonFileUpload as i, FileImportConfigCard as n, handleExcelFileUpload as r, ImportDataFromFileMapping as t };
|
|
569
|
-
//# sourceMappingURL=ImportDataFromFileMapping-
|
|
569
|
+
//# sourceMappingURL=ImportDataFromFileMapping-3XXgUR-Z.js.map
|
package/dist/{ImportDataFromFileMapping-DR5rjwE8.js.map → ImportDataFromFileMapping-3XXgUR-Z.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportDataFromFileMapping-DR5rjwE8.js","names":["Divider","FileImportMappingWizard"],"sources":["../src/udp/fileImportMapping/fileUtils.js","../src/udp/fileImportMapping/FileImportConfigCard.jsx","../src/udp/fileImportMapping/FileImportMappingWizard.jsx","../src/udp/fileImportMapping/ImportDataFromFileMapping.jsx"],"sourcesContent":["import * as XLSX from 'xlsx';\n\nexport const handleExcelFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetName = workbook.SheetNames[fileProperties?.worksheetNumber?.value - 1];\n const worksheet = workbook.Sheets[sheetName];\n\n // Get the headers (first row) and first data line\n const json = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n });\n if (json.length > 1) {\n const headers = json[0]; // First row as headers\n const firstDataLine = json[1]; // Second row as the first data line\n resolve({ headers: headers, sampleData: firstDataLine });\n }\n else{\n reject(\"Could not get file headers\")\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsArrayBuffer(fileObject); // Read the file as an ArrayBuffer\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleTextFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const chunkSize = 1024; // Read 1024 bytes at a time\n let offset = 0; // Start reading at the beginning of the file\n let accumulatedData = '';\n\n const reader = new FileReader();\n\n reader.onload = function (e) {\n accumulatedData += e.target.result;\n\n const lines = accumulatedData.split('\\n');\n if (lines.length > 2) {\n const headers = lines[0].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n const firstDataLine = lines[1].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n resolve({ headers: headers, sampleData: firstDataLine });\n } else {\n // If the header is not found and there's more data to read\n if (offset < fileObject.size) {\n readNextChunk();\n }\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n function readNextChunk() {\n // Read the next 1024 bytes\n const blob = fileObject.slice(offset, offset + chunkSize);\n reader.readAsText(blob);\n offset += chunkSize;\n }\n readNextChunk();\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleJsonFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n try {\n const jsonData = JSON.parse(e.target.result);\n const dataAtPath = fileProperties?.jsonPath ? getValueByPath(jsonData, fileProperties?.jsonPath) : jsonData;\n\n if (Array.isArray(dataAtPath) && dataAtPath.length > 0) {\n const keys = Object.keys(dataAtPath[0]);\n resolve({ headers: keys, sampleData: dataAtPath[0] });\n } else {\n reject('The JSON file does not contain an array or is empty.');\n }\n } catch (err) {\n reject('Error parsing JSON file:', err);\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsText(fileObject);\n } else {\n reject('No file provided');\n }\n });\n};\n\nconst getValueByPath = (obj, path) => {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n","import React, { useState, useMemo } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { CompactDataListItem } from '../../UI/dataDisplay/CompactDataListItem';\nimport { Typography, Divider } from '@material-ui/core';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\n\nexport const FileImportConfigCard = (props) => {\n const { fileMappingRecord, domain } = props;\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n\n const parsedProperties = useMemo(() => {\n if (fileMappingRecord) {\n let parsedObject = fileMappingRecord?.properties;\n if (typeof fileMappingRecord?.properties === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.properties);\n }\n if (\n 'includesHeader' in parsedObject &&\n parsedObject?.includesHeader === false\n ) {\n setShowIndexNumbers(true);\n } else {\n setShowIndexNumbers(false);\n }\n return Object.entries(parsedObject).map(([key, value]) => ({\n key,\n value\n }));\n }\n }, [fileMappingRecord]);\n\n const parsedFieldMappings = useMemo(() => {\n let parsedObject = fileMappingRecord?.mapping;\n if (typeof fileMappingRecord?.mapping === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.mapping);\n }\n if (fileMappingRecord) {\n return Object.entries(parsedObject);\n }\n }, [fileMappingRecord]);\n\n return (\n parsedFieldMappings && (\n <AmbientCard fullWidth title='Mapping Configuration' subtitle={domain}>\n {parsedProperties?.map((property) => (\n <CompactDataListItem\n label={property?.key\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, function (char) {\n return char.toUpperCase();\n })}\n value={\n property?.value === false\n ? 'False'\n : property?.value === true\n ? 'True'\n : property?.value\n }\n />\n ))}\n\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>Fields</Typography>\n </div>\n <Divider style={{ marginTop: 5, marginBottom: -14 }} />\n {parsedFieldMappings?.map((field) => (\n <div style={{ height: 42 }}>\n <div style={{ display: 'flex', flexDirection: 'row', gap: 10 }}>\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers\n ? 'index ' + field[1]?.headerIndex\n : field[1]?.importFileField}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Typography\n style={{ marginTop: 25, width: '50%', textAlign: 'right' }}\n >\n {field[1]?.udpField.replace(/([A-Z])/g, ' $1').trim()}\n </Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n </>\n </AmbientCard>\n )\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { Form } from '../../utilities/form';\nimport { Field } from '../../utilities/form';\nimport { FormButtons } from '../../utilities/form';\nimport { SubmitButton } from '../../utilities/form';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { AmbientStepper } from '../../UI/inputs/menus/AmbientStepper/AmbientStepper';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Typography } from '@material-ui/core';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { AmbientTextField } from '../../UI/inputs/textField/AmbientTextField';\nimport { Divider } from '../../UI/utilityDisplay/Divider';\nimport {\n handleExcelFileUpload,\n handleJsonFileUpload,\n handleTextFileUpload\n} from './fileUtils';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { ConfigService } from '../../configService';\n\nconst FileImportMappingWizard = (props) => {\n const { refetchMappings, setNewFileMappingSidesheetOpen, verifyRequiredFields } = props;\n const user = useUser();\n const [importHeaderData, setImportHeaderData] = useState();\n const [udpObjectList, setUdpObjectList] = useState();\n const [selectedDomain, setSelectedDomain] = useState();\n const [selectedFileType, setSelectedFileType] = useState();\n const [fileObject, setFileObject] = useState();\n const [fileImportMappingObject, setFileImportMappingObject] = useState({});\n const [activeStep, setActiveStep] = useState(0);\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n const [errorText, setErrorText] = useState('');\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeCreateFileMapping = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n []\n );\n const { data: udpObjectEntity } = usePromotedMethodEntity(\n 'UdpObjectInfo',\n true\n );\n\n const [{ data: allowedFileTypesData }, refetchAllowedFileTypes] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpFileImportType`,\n {},\n false\n );\n\n const searchUdpObjectData = useCallback(async () => {\n if (udpObjectEntity?.unityBaseSearchMethod?.apiMethodId && user?.id) {\n const sapUserRes = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpObjectEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (sapUserRes?.data?.pageList.length > 0) {\n setUdpObjectList(sapUserRes?.data?.pageList);\n }\n }\n }, [udpObjectEntity, user]);\n\n const filterCatalogObjectList = useMemo(() => {\n return udpObjectList;\n }, [udpObjectList]);\n\n const getNameFormattedOptionLabel = (option) => {\n return option?.name.replace(/([A-Z])/g, ' $1').trim();\n };\n\n const getNameOptionLabel = (option) => {\n return option?.name;\n };\n\n const handleFileUpload = async (properties) => {\n let result;\n if (\n selectedFileType.extension === '.csv' ||\n selectedFileType.extension === '.txt'\n ) {\n result = await handleTextFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.xlsx') {\n result = await handleExcelFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.json') {\n result = await handleJsonFileUpload(fileObject, properties);\n }\n setImportHeaderData(result?.headers);\n };\n\n useEffect(() => {\n searchUdpObjectData();\n }, [searchUdpObjectData]);\n\n const handleCreateNewFieldMapping = useCallback(\n async (values) => {\n const response = await executeCreateFileMapping({\n name: values.name,\n objectInfoSanitizedName: getSanitizedName(selectedDomain.name),\n fileImportType: selectedFileType.id,\n mapping: JSON.stringify(fileImportMappingObject?.mapping),\n properties: JSON.stringify(fileImportMappingObject?.properties)\n }).catch((res) => {\n handleErrorSnackbar(res);\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Created Mapping');\n refetchMappings();\n setNewFileMappingSidesheetOpen(false);\n }\n },\n [\n executeCreateFileMapping,\n selectedDomain?.name,\n selectedFileType?.id,\n fileImportMappingObject?.mapping,\n fileImportMappingObject?.properties,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n refetchMappings,\n setNewFileMappingSidesheetOpen\n ]\n );\n\n const handleUpdateFieldMapping = (values) => {\n let valid = true;\n selectedDomain?.objectFieldInfo?.forEach((option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n if (\n !Object.entries(values).some(\n (obj) => obj[1].businessObjectKey === option.businessObjectKey\n )\n ) {\n if(verifyRequiredFields){\n valid = false;\n }\n }\n }\n });\n if (!valid) {\n setErrorText('All required Udp fields must have a mapping');\n return;\n }\n const filteredMappings = Object.entries(values)\n .filter(([key, value]) => value !== null)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n const mappedFieldIndexes = Object.keys(filteredMappings).map((key) =>\n parseInt(key.split('udpFieldMapping')[1], 10)\n );\n const fieldMappings = Object.values(filteredMappings).map(\n (selectedUdpField, index) => {\n return {\n udpField: selectedUdpField.name,\n importFileField: !showIndexNumbers\n ? importHeaderData[mappedFieldIndexes[index]]\n : null,\n headerIndex: !showIndexNumbers ? -1 : mappedFieldIndexes[index]\n };\n }\n );\n setFileImportMappingObject((prev) => {\n return { ...prev, mapping: fieldMappings };\n });\n setActiveStep((prev) => prev + 1);\n };\n\n const handleUpdateFileProperties = (values) => {\n setFileImportMappingObject((prev) => {\n let properties = {};\n Object.keys(values).forEach(\n (propKey) =>\n (properties[propKey] =\n 'value' in values[propKey]\n ? values[propKey]?.value\n : values[propKey])\n );\n return { ...prev, properties: properties };\n });\n if ('includesHeader' in values && values?.includesHeader.value === false) {\n setShowIndexNumbers(true);\n }\n handleFileUpload(values);\n setActiveStep((prev) => prev + 1);\n };\n\n const getUdpFieldOptionLabel = (option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n return `${option.name.replace(/([A-Z])/g, ' $1').trim()}*`; //required field\n }\n return `${option.name} - ${option.dataType}`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n const formattedFileTypeProperties = useMemo(() => {\n if (selectedFileType) {\n return JSON.parse(selectedFileType?.properties);\n }\n }, [selectedFileType]);\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ marginBottom: 20 }}>\n <AmbientStepper\n activeStep={activeStep}\n steps={['File', 'Domain', 'Field Mappings', 'Review']}\n orientation='vertical'\n />\n </div>\n {activeStep === 0 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileImportType'}\n name={'fileImportType'}\n label='File Type'\n onChange={(val) => setSelectedFileType(val)}\n options={allowedFileTypesData}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n value={selectedFileType}\n required\n />\n {selectedFileType && (\n <div style={{ marginTop: 5 }}>\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n </div>\n )}\n <Form onSubmit={handleUpdateFileProperties}>\n {formattedFileTypeProperties?.map((property) =>\n property?.options ? (\n <Field\n component={AmbientAutoComplete}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n options={property.options}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n ) : (\n <Field\n component={AmbientTextField}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n )\n )}\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={!fileObject}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 1 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'domain'}\n name={'domain'}\n label='Domain'\n onChange={(val) => setSelectedDomain(val)}\n options={filterCatalogObjectList}\n size='small'\n getOptionLabelFunction={getNameFormattedOptionLabel}\n value={selectedDomain}\n required\n />\n <div\n style={{ float: 'right', display: 'flex', gap: 8, marginTop: 8 }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev + 1)}\n color='secondary'\n disabled={!selectedDomain}\n >\n Next\n </FluentButton>\n </div>\n </>\n )}\n {activeStep === 2 && (\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>UDP Fields</Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n <Form\n onSubmit={handleUpdateFieldMapping}\n style={{ marginTop: -20 }}\n >\n {importHeaderData?.map((field, index) => (\n <div style={{ height: 42 }}>\n <div\n style={{ display: 'flex', flexDirection: 'row', gap: 10 }}\n >\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers ? 'index ' + index : field}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Field\n style={{ height: 30 }}\n component={AmbientAutoComplete}\n isMultiple={false}\n id={`udpFieldMapping${index}`}\n name={`udpFieldMapping${index}`}\n options={selectedDomain?.objectFieldInfo}\n size='small'\n getOptionLabelFunction={getUdpFieldOptionLabel}\n />\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n <div style={{ paddingTop: 20, textAlign: 'right', color: 'red' }}>\n {errorText}\n </div>\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n paddingTop: 16,\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 3 && (\n <Form onSubmit={handleCreateNewFieldMapping}>\n <Field\n component={AmbientTextField}\n id={`name`}\n name={`name`}\n label='Mapping Name'\n size='small'\n />\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n {'Create Mapping'}\n </SubmitButton>\n </FormButtons>\n </Form>\n )}\n </AmbientCard>\n {fileImportMappingObject?.mapping &&<div style={{ marginTop: 10 }}>\n <FileImportConfigCard\n fileMappingRecord={{\n mapping: fileImportMappingObject?.mapping,\n properties: fileImportMappingObject?.properties\n }}\n domain={selectedDomain?.name.replace(/([A-Z])/g, ' $1').trim()}\n />\n </div>}\n </>\n );\n};\n\nexport default FileImportMappingWizard;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport FileImportMappingWizard from './FileImportMappingWizard';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { ConfigService } from '../../configService';\n\nexport const ImportDataFromFileMapping = (props) => {\n const {onImportSuccess, onImportFail, verifyRequiredFields = true} = props\n const user = useUser();\n const [selectedFileMapping, setSelectedFileMapping] = useState();\n const [udpImportMappingData, setUdpImportMappingData] = useState();\n const [newFileMappingSidesheetOpen, setNewFileMappingSidesheetOpen] =\n useState(false);\n const [fileObject, setFileObject] = useState();\n const [isLoading, setIsLoading] = useState(false)\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { data: udpFileImportMappingEntity } = usePromotedMethodEntity(\n 'UdpFileImportMapping',\n true\n );\n\n const executeImportDataFromFile = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `${selectedFileMapping?.objectInfoSanitizedName}/fileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n [selectedFileMapping]\n );\n\n const searchFileImportMappingData = useCallback(async () => {\n if (udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId) {\n const res = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (res?.data?.pageList.length > 0) {\n setUdpImportMappingData(res?.data?.pageList);\n }\n }\n }, [udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId]);\n\n useEffect(() => {\n searchFileImportMappingData();\n }, [searchFileImportMappingData]);\n\n const handleImportDataFromFile = useCallback(async () => {\n setIsLoading(true)\n const file = fileObject;\n const blob = new Blob([file], { type: file.type });\n const formData = new FormData();\n formData.append('file', blob, file.name);\n formData.append('tenantId', user?.currentTenantId);\n formData.append('name', selectedFileMapping.name);\n formData.append('objectInfoSanitizedName', selectedFileMapping.objectInfoSanitizedName);\n formData.append('fileImportType', selectedFileMapping.fileImportType);\n formData.append('mapping', selectedFileMapping.mapping);\n formData.append('properties', selectedFileMapping.properties);\n formData.append('id', selectedFileMapping.id);\n const response = await executeImportDataFromFile(formData).catch((res) => {\n setIsLoading(false)\n handleErrorSnackbar(res);\n onImportFail()\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Imported Data');\n setIsLoading(false)\n onImportSuccess && onImportSuccess()\n }\n\n }, [\n fileObject,\n selectedFileMapping,\n executeImportDataFromFile,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n onImportSuccess,\n onImportFail\n ]);\n\n const getFileMappingOptionlabel = (option) => {\n return `${option.name} (${option?.udpFileImportMappingUdpFileImportType?.extension})`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ display: 'flex' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileMapping'}\n name={'fileMapping'}\n label='File Mapping'\n onChange={(val) => setSelectedFileMapping(val)}\n options={udpImportMappingData}\n size='small'\n getOptionLabelFunction={getFileMappingOptionlabel}\n value={selectedFileMapping}\n required\n groupBy={(option) =>\n option?.udpFileImportMappingUdpObjectInfo?.sanitizedName\n }\n />\n </div>\n {selectedFileMapping && (\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n )}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: 5,\n float: 'right',\n marginTop: 10\n }}\n >\n <FluentButton\n onClick={() => setNewFileMappingSidesheetOpen(true)}\n variant='outlined'\n >\n Create New Mapping\n </FluentButton>\n <FluentButton\n variant='contained'\n color='secondary'\n onClick={handleImportDataFromFile}\n progress={isLoading}\n disabled={!fileObject}\n >\n Import Data\n </FluentButton>\n </div>\n <SideSheet\n title='Create New File Mapping'\n open={newFileMappingSidesheetOpen}\n onClose={() => setNewFileMappingSidesheetOpen(false)}\n width={'60%'}\n >\n <FileImportMappingWizard\n refetchMappings={searchFileImportMappingData}\n setNewFileMappingSidesheetOpen={setNewFileMappingSidesheetOpen}\n verifyRequiredFields={verifyRequiredFields}\n />\n </SideSheet>\n </AmbientCard>\n <div style={{ marginTop: 10 }}>\n <FileImportConfigCard fileMappingRecord={selectedFileMapping} domain={selectedFileMapping?.udpFileImportMappingUdpObjectInfo?.sanitizedName.replace(/([A-Z])/g, ' $1').trim()}/>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImportDataFromFileMapping-3XXgUR-Z.js","names":["Divider","FileImportMappingWizard"],"sources":["../src/udp/fileImportMapping/fileUtils.js","../src/udp/fileImportMapping/FileImportConfigCard.jsx","../src/udp/fileImportMapping/FileImportMappingWizard.jsx","../src/udp/fileImportMapping/ImportDataFromFileMapping.jsx"],"sourcesContent":["import * as XLSX from 'xlsx';\n\nexport const handleExcelFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetName = workbook.SheetNames[fileProperties?.worksheetNumber?.value - 1];\n const worksheet = workbook.Sheets[sheetName];\n\n // Get the headers (first row) and first data line\n const json = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n });\n if (json.length > 1) {\n const headers = json[0]; // First row as headers\n const firstDataLine = json[1]; // Second row as the first data line\n resolve({ headers: headers, sampleData: firstDataLine });\n }\n else{\n reject(\"Could not get file headers\")\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsArrayBuffer(fileObject); // Read the file as an ArrayBuffer\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleTextFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const chunkSize = 1024; // Read 1024 bytes at a time\n let offset = 0; // Start reading at the beginning of the file\n let accumulatedData = '';\n\n const reader = new FileReader();\n\n reader.onload = function (e) {\n accumulatedData += e.target.result;\n\n const lines = accumulatedData.split('\\n');\n if (lines.length > 2) {\n const headers = lines[0].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n const firstDataLine = lines[1].replace(/\\r/g, '').split(fileProperties?.delimiter?.value);\n resolve({ headers: headers, sampleData: firstDataLine });\n } else {\n // If the header is not found and there's more data to read\n if (offset < fileObject.size) {\n readNextChunk();\n }\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n function readNextChunk() {\n // Read the next 1024 bytes\n const blob = fileObject.slice(offset, offset + chunkSize);\n reader.readAsText(blob);\n offset += chunkSize;\n }\n readNextChunk();\n } else {\n reject('No file provided');\n }\n });\n};\n\nexport const handleJsonFileUpload = (fileObject, fileProperties) => {\n return new Promise((resolve, reject) => {\n if (fileObject) {\n const reader = new FileReader();\n\n reader.onload = function (e) {\n try {\n const jsonData = JSON.parse(e.target.result);\n const dataAtPath = fileProperties?.jsonPath ? getValueByPath(jsonData, fileProperties?.jsonPath) : jsonData;\n\n if (Array.isArray(dataAtPath) && dataAtPath.length > 0) {\n const keys = Object.keys(dataAtPath[0]);\n resolve({ headers: keys, sampleData: dataAtPath[0] });\n } else {\n reject('The JSON file does not contain an array or is empty.');\n }\n } catch (err) {\n reject('Error parsing JSON file:', err);\n }\n };\n reader.onerror = function () {\n reject('Error reading the file.');\n };\n\n reader.readAsText(fileObject);\n } else {\n reject('No file provided');\n }\n });\n};\n\nconst getValueByPath = (obj, path) => {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n","import React, { useState, useMemo } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { CompactDataListItem } from '../../UI/dataDisplay/CompactDataListItem';\nimport { Typography, Divider } from '@material-ui/core';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\n\nexport const FileImportConfigCard = (props) => {\n const { fileMappingRecord, domain } = props;\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n\n const parsedProperties = useMemo(() => {\n if (fileMappingRecord) {\n let parsedObject = fileMappingRecord?.properties;\n if (typeof fileMappingRecord?.properties === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.properties);\n }\n if (\n 'includesHeader' in parsedObject &&\n parsedObject?.includesHeader === false\n ) {\n setShowIndexNumbers(true);\n } else {\n setShowIndexNumbers(false);\n }\n return Object.entries(parsedObject).map(([key, value]) => ({\n key,\n value\n }));\n }\n }, [fileMappingRecord]);\n\n const parsedFieldMappings = useMemo(() => {\n let parsedObject = fileMappingRecord?.mapping;\n if (typeof fileMappingRecord?.mapping === 'string') {\n parsedObject = JSON.parse(fileMappingRecord?.mapping);\n }\n if (fileMappingRecord) {\n return Object.entries(parsedObject);\n }\n }, [fileMappingRecord]);\n\n return (\n parsedFieldMappings && (\n <AmbientCard fullWidth title='Mapping Configuration' subtitle={domain}>\n {parsedProperties?.map((property) => (\n <CompactDataListItem\n label={property?.key\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/^./, function (char) {\n return char.toUpperCase();\n })}\n value={\n property?.value === false\n ? 'False'\n : property?.value === true\n ? 'True'\n : property?.value\n }\n />\n ))}\n\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>Fields</Typography>\n </div>\n <Divider style={{ marginTop: 5, marginBottom: -14 }} />\n {parsedFieldMappings?.map((field) => (\n <div style={{ height: 42 }}>\n <div style={{ display: 'flex', flexDirection: 'row', gap: 10 }}>\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers\n ? 'index ' + field[1]?.headerIndex\n : field[1]?.importFileField}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Typography\n style={{ marginTop: 25, width: '50%', textAlign: 'right' }}\n >\n {field[1]?.udpField.replace(/([A-Z])/g, ' $1').trim()}\n </Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n </>\n </AmbientCard>\n )\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { Form } from '../../utilities/form';\nimport { Field } from '../../utilities/form';\nimport { FormButtons } from '../../utilities/form';\nimport { SubmitButton } from '../../utilities/form';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { AmbientStepper } from '../../UI/inputs/menus/AmbientStepper/AmbientStepper';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Typography } from '@material-ui/core';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { AmbientTextField } from '../../UI/inputs/textField/AmbientTextField';\nimport { Divider } from '../../UI/utilityDisplay/Divider';\nimport {\n handleExcelFileUpload,\n handleJsonFileUpload,\n handleTextFileUpload\n} from './fileUtils';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { ConfigService } from '../../configService';\n\nconst FileImportMappingWizard = (props) => {\n const { refetchMappings, setNewFileMappingSidesheetOpen, verifyRequiredFields } = props;\n const user = useUser();\n const [importHeaderData, setImportHeaderData] = useState();\n const [udpObjectList, setUdpObjectList] = useState();\n const [selectedDomain, setSelectedDomain] = useState();\n const [selectedFileType, setSelectedFileType] = useState();\n const [fileObject, setFileObject] = useState();\n const [fileImportMappingObject, setFileImportMappingObject] = useState({});\n const [activeStep, setActiveStep] = useState(0);\n const [showIndexNumbers, setShowIndexNumbers] = useState(false);\n const [errorText, setErrorText] = useState('');\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const executeCreateFileMapping = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n []\n );\n const { data: udpObjectEntity } = usePromotedMethodEntity(\n 'UdpObjectInfo',\n true\n );\n\n const [{ data: allowedFileTypesData }, refetchAllowedFileTypes] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpFileImportType`,\n {},\n false\n );\n\n const searchUdpObjectData = useCallback(async () => {\n if (udpObjectEntity?.unityBaseSearchMethod?.apiMethodId && user?.id) {\n const sapUserRes = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpObjectEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (sapUserRes?.data?.pageList.length > 0) {\n setUdpObjectList(sapUserRes?.data?.pageList);\n }\n }\n }, [udpObjectEntity, user]);\n\n const filterCatalogObjectList = useMemo(() => {\n return udpObjectList;\n }, [udpObjectList]);\n\n const getNameFormattedOptionLabel = (option) => {\n return option?.name.replace(/([A-Z])/g, ' $1').trim();\n };\n\n const getNameOptionLabel = (option) => {\n return option?.name;\n };\n\n const handleFileUpload = async (properties) => {\n let result;\n if (\n selectedFileType.extension === '.csv' ||\n selectedFileType.extension === '.txt'\n ) {\n result = await handleTextFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.xlsx') {\n result = await handleExcelFileUpload(fileObject, properties);\n } else if (selectedFileType.extension === '.json') {\n result = await handleJsonFileUpload(fileObject, properties);\n }\n setImportHeaderData(result?.headers);\n };\n\n useEffect(() => {\n searchUdpObjectData();\n }, [searchUdpObjectData]);\n\n const handleCreateNewFieldMapping = useCallback(\n async (values) => {\n const response = await executeCreateFileMapping({\n name: values.name,\n objectInfoSanitizedName: getSanitizedName(selectedDomain.name),\n fileImportType: selectedFileType.id,\n mapping: JSON.stringify(fileImportMappingObject?.mapping),\n properties: JSON.stringify(fileImportMappingObject?.properties)\n }).catch((res) => {\n handleErrorSnackbar(res);\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Created Mapping');\n refetchMappings();\n setNewFileMappingSidesheetOpen(false);\n }\n },\n [\n executeCreateFileMapping,\n selectedDomain?.name,\n selectedFileType?.id,\n fileImportMappingObject?.mapping,\n fileImportMappingObject?.properties,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n refetchMappings,\n setNewFileMappingSidesheetOpen\n ]\n );\n\n const handleUpdateFieldMapping = (values) => {\n let valid = true;\n selectedDomain?.objectFieldInfo?.forEach((option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n if (\n !Object.entries(values).some(\n (obj) => obj[1].businessObjectKey === option.businessObjectKey\n )\n ) {\n if(verifyRequiredFields){\n valid = false;\n }\n }\n }\n });\n if (!valid) {\n setErrorText('All required Udp fields must have a mapping');\n return;\n }\n const filteredMappings = Object.entries(values)\n .filter(([key, value]) => value !== null)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n const mappedFieldIndexes = Object.keys(filteredMappings).map((key) =>\n parseInt(key.split('udpFieldMapping')[1], 10)\n );\n const fieldMappings = Object.values(filteredMappings).map(\n (selectedUdpField, index) => {\n return {\n udpField: selectedUdpField.name,\n importFileField: !showIndexNumbers\n ? importHeaderData[mappedFieldIndexes[index]]\n : null,\n headerIndex: !showIndexNumbers ? -1 : mappedFieldIndexes[index]\n };\n }\n );\n setFileImportMappingObject((prev) => {\n return { ...prev, mapping: fieldMappings };\n });\n setActiveStep((prev) => prev + 1);\n };\n\n const handleUpdateFileProperties = (values) => {\n setFileImportMappingObject((prev) => {\n let properties = {};\n Object.keys(values).forEach(\n (propKey) =>\n (properties[propKey] =\n 'value' in values[propKey]\n ? values[propKey]?.value\n : values[propKey])\n );\n return { ...prev, properties: properties };\n });\n if ('includesHeader' in values && values?.includesHeader.value === false) {\n setShowIndexNumbers(true);\n }\n handleFileUpload(values);\n setActiveStep((prev) => prev + 1);\n };\n\n const getUdpFieldOptionLabel = (option) => {\n if (\n !option.dataType.endsWith('?') &&\n !option.isPrimaryKey &&\n !option.udpType\n ) {\n return `${option.name.replace(/([A-Z])/g, ' $1').trim()}*`; //required field\n }\n return `${option.name} - ${option.dataType}`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n const formattedFileTypeProperties = useMemo(() => {\n if (selectedFileType) {\n return JSON.parse(selectedFileType?.properties);\n }\n }, [selectedFileType]);\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ marginBottom: 20 }}>\n <AmbientStepper\n activeStep={activeStep}\n steps={['File', 'Domain', 'Field Mappings', 'Review']}\n orientation='vertical'\n />\n </div>\n {activeStep === 0 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileImportType'}\n name={'fileImportType'}\n label='File Type'\n onChange={(val) => setSelectedFileType(val)}\n options={allowedFileTypesData}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n value={selectedFileType}\n required\n />\n {selectedFileType && (\n <div style={{ marginTop: 5 }}>\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n </div>\n )}\n <Form onSubmit={handleUpdateFileProperties}>\n {formattedFileTypeProperties?.map((property) =>\n property?.options ? (\n <Field\n component={AmbientAutoComplete}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n options={property.options}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n ) : (\n <Field\n component={AmbientTextField}\n isMultiple={false}\n id={property.propertyName}\n name={property.propertyName}\n label={property.label}\n size='small'\n getOptionLabelFunction={getNameOptionLabel}\n required={property?.required}\n />\n )\n )}\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n disabled={!fileObject}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 1 && (\n <>\n <AmbientAutoComplete\n isMultiple={false}\n id={'domain'}\n name={'domain'}\n label='Domain'\n onChange={(val) => setSelectedDomain(val)}\n options={filterCatalogObjectList}\n size='small'\n getOptionLabelFunction={getNameFormattedOptionLabel}\n value={selectedDomain}\n required\n />\n <div\n style={{ float: 'right', display: 'flex', gap: 8, marginTop: 8 }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev + 1)}\n color='secondary'\n disabled={!selectedDomain}\n >\n Next\n </FluentButton>\n </div>\n </>\n )}\n {activeStep === 2 && (\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 20\n }}\n >\n <Typography variant='caption'>\n {showIndexNumbers ? \"Column index's\" : 'File Headers'}\n </Typography>\n <Typography variant='caption'>UDP Fields</Typography>\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n <Form\n onSubmit={handleUpdateFieldMapping}\n style={{ marginTop: -20 }}\n >\n {importHeaderData?.map((field, index) => (\n <div style={{ height: 42 }}>\n <div\n style={{ display: 'flex', flexDirection: 'row', gap: 10 }}\n >\n <Typography style={{ marginTop: 25, width: '50%' }}>\n {showIndexNumbers ? 'index ' + index : field}\n </Typography>\n <FluentIcon\n style={{ marginTop: 28, width: '10%' }}\n component={ChromeBackMirroredIcon}\n />\n <Field\n style={{ height: 30 }}\n component={AmbientAutoComplete}\n isMultiple={false}\n id={`udpFieldMapping${index}`}\n name={`udpFieldMapping${index}`}\n options={selectedDomain?.objectFieldInfo}\n size='small'\n getOptionLabelFunction={getUdpFieldOptionLabel}\n />\n </div>\n <Divider style={{ margin: '5px 0px' }} />\n </div>\n ))}\n <div style={{ paddingTop: 20, textAlign: 'right', color: 'red' }}>\n {errorText}\n </div>\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n paddingTop: 16,\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n Next\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n )}\n {activeStep === 3 && (\n <Form onSubmit={handleCreateNewFieldMapping}>\n <Field\n component={AmbientTextField}\n id={`name`}\n name={`name`}\n label='Mapping Name'\n size='small'\n />\n <FormButtons\n style={{\n display: 'flex',\n float: 'right',\n marginRight: -16\n }}\n >\n <FluentButton\n variant='contained'\n onClick={() => setActiveStep((prev) => prev - 1)}\n disabled={activeStep === 0}\n >\n Prev\n </FluentButton>\n <SubmitButton\n variant='contained'\n color='secondary'\n disablePristine={false}\n >\n {'Create Mapping'}\n </SubmitButton>\n </FormButtons>\n </Form>\n )}\n </AmbientCard>\n {fileImportMappingObject?.mapping &&<div style={{ marginTop: 10 }}>\n <FileImportConfigCard\n fileMappingRecord={{\n mapping: fileImportMappingObject?.mapping,\n properties: fileImportMappingObject?.properties\n }}\n domain={selectedDomain?.name.replace(/([A-Z])/g, ' $1').trim()}\n />\n </div>}\n </>\n );\n};\n\nexport default FileImportMappingWizard;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport FileImportMappingWizard from './FileImportMappingWizard';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { FileImportConfigCard } from './FileImportConfigCard';\nimport { ConfigService } from '../../configService';\n\nexport const ImportDataFromFileMapping = (props) => {\n const {onImportSuccess, onImportFail, verifyRequiredFields = true} = props\n const user = useUser();\n const [selectedFileMapping, setSelectedFileMapping] = useState();\n const [udpImportMappingData, setUdpImportMappingData] = useState();\n const [newFileMappingSidesheetOpen, setNewFileMappingSidesheetOpen] =\n useState(false);\n const [fileObject, setFileObject] = useState();\n const [isLoading, setIsLoading] = useState(false)\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const { data: udpFileImportMappingEntity } = usePromotedMethodEntity(\n 'UdpFileImportMapping',\n true\n );\n\n const executeImportDataFromFile = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `${selectedFileMapping?.objectInfoSanitizedName}/fileImportMapping`,\n {\n method: 'post'\n },\n { data }\n ),\n [selectedFileMapping]\n );\n\n const searchFileImportMappingData = useCallback(async () => {\n if (udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId) {\n const res = await executeQueryAdHoc(\n {\n data: {\n eagerLoad: true,\n pageSize: 200,\n filterElements: []\n }\n },\n udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId\n );\n if (res?.data?.pageList.length > 0) {\n setUdpImportMappingData(res?.data?.pageList);\n }\n }\n }, [udpFileImportMappingEntity?.unityBaseSearchMethod?.apiMethodId]);\n\n useEffect(() => {\n searchFileImportMappingData();\n }, [searchFileImportMappingData]);\n\n const handleImportDataFromFile = useCallback(async () => {\n setIsLoading(true)\n const file = fileObject;\n const blob = new Blob([file], { type: file.type });\n const formData = new FormData();\n formData.append('file', blob, file.name);\n formData.append('tenantId', user?.currentTenantId);\n formData.append('name', selectedFileMapping.name);\n formData.append('objectInfoSanitizedName', selectedFileMapping.objectInfoSanitizedName);\n formData.append('fileImportType', selectedFileMapping.fileImportType);\n formData.append('mapping', selectedFileMapping.mapping);\n formData.append('properties', selectedFileMapping.properties);\n formData.append('id', selectedFileMapping.id);\n const response = await executeImportDataFromFile(formData).catch((res) => {\n setIsLoading(false)\n handleErrorSnackbar(res);\n onImportFail()\n });\n if (response?.status === 201) {\n handleSuccessSnackbar('Imported Data');\n setIsLoading(false)\n onImportSuccess && onImportSuccess()\n }\n\n }, [\n fileObject,\n selectedFileMapping,\n executeImportDataFromFile,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n onImportSuccess,\n onImportFail\n ]);\n\n const getFileMappingOptionlabel = (option) => {\n return `${option.name} (${option?.udpFileImportMappingUdpFileImportType?.extension})`;\n };\n\n const handleAddFileToUpload = (fileObj) => {\n setFileObject(fileObj[0]);\n };\n\n return (\n <>\n <AmbientCard fullWidth>\n <div style={{ display: 'flex' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'fileMapping'}\n name={'fileMapping'}\n label='File Mapping'\n onChange={(val) => setSelectedFileMapping(val)}\n options={udpImportMappingData}\n size='small'\n getOptionLabelFunction={getFileMappingOptionlabel}\n value={selectedFileMapping}\n required\n groupBy={(option) =>\n option?.udpFileImportMappingUdpObjectInfo?.sanitizedName\n }\n />\n </div>\n {selectedFileMapping && (\n <DragDropFileUpload\n handleUploadFile={handleAddFileToUpload}\n accept={{\n 'text/csv': ['.csv'],\n 'text/plain': ['.txt'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n ['.xlsx'],\n 'application/json': ['.json']\n }}\n />\n )}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: 5,\n float: 'right',\n marginTop: 10\n }}\n >\n <FluentButton\n onClick={() => setNewFileMappingSidesheetOpen(true)}\n variant='outlined'\n >\n Create New Mapping\n </FluentButton>\n <FluentButton\n variant='contained'\n color='secondary'\n onClick={handleImportDataFromFile}\n progress={isLoading}\n disabled={!fileObject}\n >\n Import Data\n </FluentButton>\n </div>\n <SideSheet\n title='Create New File Mapping'\n open={newFileMappingSidesheetOpen}\n onClose={() => setNewFileMappingSidesheetOpen(false)}\n width={'60%'}\n >\n <FileImportMappingWizard\n refetchMappings={searchFileImportMappingData}\n setNewFileMappingSidesheetOpen={setNewFileMappingSidesheetOpen}\n verifyRequiredFields={verifyRequiredFields}\n />\n </SideSheet>\n </AmbientCard>\n <div style={{ marginTop: 10 }}>\n <FileImportConfigCard fileMappingRecord={selectedFileMapping} domain={selectedFileMapping?.udpFileImportMappingUdpObjectInfo?.sanitizedName.replace(/([A-Z])/g, ' $1').trim()}/>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { i as executeQueryWithParameters } from "./methodUtils-CDx9usdO.js";
|
|
|
7
7
|
import { t as FluentDialog } from "./FluentDialog-B5ZxvX1E.js";
|
|
8
8
|
import { t as ActionsRenderer } from "./ActionsRenderer-DbrPKZ1o.js";
|
|
9
9
|
import { t as TableContainer } from "./TableContainer-B0IAjIA3.js";
|
|
10
|
-
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-
|
|
10
|
+
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-NohpvB31.js";
|
|
11
11
|
import { t as AmbientAlert } from "./AmbientAlert-DcYkGCUm.js";
|
|
12
12
|
import { t as EmptyStateDisplay } from "./EmptyStateDisplay-YOwCw38_.js";
|
|
13
13
|
import { t as StatusCellRenderer } from "./StatusCellRenderer-E7SYy9Qk.js";
|
|
@@ -213,4 +213,4 @@ var MyExportsPage_default = MyExportsPage;
|
|
|
213
213
|
|
|
214
214
|
//#endregion
|
|
215
215
|
export { MyExportsPage_default as n, MyExportsPage as t };
|
|
216
|
-
//# sourceMappingURL=MyExportsPage-
|
|
216
|
+
//# sourceMappingURL=MyExportsPage-Ckti0gqK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MyExportsPage-zKRz4fL5.js","names":[],"sources":["../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from '../../configService';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n\nexport default MyExportsPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MyExportsPage-Ckti0gqK.js","names":[],"sources":["../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from '../../configService';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n\nexport default MyExportsPage;\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { t as UtilitySideBar } from "./UtilitySideBar-wvrocDGI.js";
|
|
|
7
7
|
import { t as PageActionWrapper } from "./PageActionWrapper-BBkGtnC6.js";
|
|
8
8
|
import { t as getMenuItemsRecursively } from "./menuUtilities-Da5uVIJ8.js";
|
|
9
9
|
import { n as useMenuContext } from "./MenuProvider-BuTAUs0Z.js";
|
|
10
|
-
import { t as UdpRoutes } from "./routes-
|
|
10
|
+
import { t as UdpRoutes } from "./routes-BxMFj34q.js";
|
|
11
11
|
import { c as NavigationSidebar_default, n as SiteHeader_default } from "./SiteHeader-CuOFCr7D.js";
|
|
12
12
|
import { t as useTenant } from "./useTenant-CGaZEBEJ.js";
|
|
13
13
|
import { t as UtilityBar } from "./utilityDisplay-DtdjV7V1.js";
|
|
@@ -286,4 +286,4 @@ Shell.propTypes = {
|
|
|
286
286
|
|
|
287
287
|
//#endregion
|
|
288
288
|
export { Shell as t };
|
|
289
|
-
//# sourceMappingURL=Shell-
|
|
289
|
+
//# sourceMappingURL=Shell-B8oi58iV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shell-B6Qxi2hZ.js","names":["menus","Switch","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { useTenant } from '../utilities/tenant';\nimport { BrowserRouter, Switch} from 'react-router-dom';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { PageLoading } from '../UI';\nimport { UdpRoutes } from '../routes';\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n useNewRoutes,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n const tenant = useTenant();\n const activeTenant = tenant?.activeTenant ?? null;\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = leftMenu ?? menuContext?.leftMenu;\n const resolvedAppSelectorMenus =\n appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages)\n ? providedLanguages\n : [];\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n const isUserInitialized = Boolean(user?.id);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n if (!isUserInitialized || !isTenantInitialized || !isThemeInitialized) {\n return <LoadingIndicator />;\n }\n let enrichedChildren = children;\n if(useNewRoutes)\n enrichedChildren = <Suspense fallback={<PageLoading />}>\n <Switch>{children}<UdpRoutes/></Switch></Suspense>;\n if (hideLayout) {\n return <div>{enrichedChildren}</div>;\n }\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <PageActionWrapper>{subheader}{enrichedChildren}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile\n ? {}\n : !resolvedAppSelectorMenus\n ? {}\n : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Shell-B8oi58iV.js","names":["menus","Switch","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { useTenant } from '../utilities/tenant';\nimport { BrowserRouter, Switch} from 'react-router-dom';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { PageLoading } from '../UI';\nimport { UdpRoutes } from '../routes';\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n useNewRoutes,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n const tenant = useTenant();\n const activeTenant = tenant?.activeTenant ?? null;\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = leftMenu ?? menuContext?.leftMenu;\n const resolvedAppSelectorMenus =\n appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages)\n ? providedLanguages\n : [];\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n const isUserInitialized = Boolean(user?.id);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n if (!isUserInitialized || !isTenantInitialized || !isThemeInitialized) {\n return <LoadingIndicator />;\n }\n let enrichedChildren = children;\n if(useNewRoutes)\n enrichedChildren = <Suspense fallback={<PageLoading />}>\n <Switch>{children}<UdpRoutes/></Switch></Suspense>;\n if (hideLayout) {\n return <div>{enrichedChildren}</div>;\n }\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <PageActionWrapper>{subheader}{enrichedChildren}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile\n ? {}\n : !resolvedAppSelectorMenus\n ? {}\n : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
|
package/dist/UI/forms/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as UdpCrudFormFields, t as CrudForm } from "../../CrudForm-C9xMnPoA.js";
|
|
2
|
-
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../../forms-
|
|
2
|
+
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../../forms-BVssUn2h.js";
|
|
3
3
|
import { t as VirtualForm } from "../../VirtualForm-Cw3gjug-.js";
|
|
4
4
|
|
|
5
5
|
export { CrudForm, LoginForm, PaymentReversalForm, UdpCrudFormFields, UdpTransactionEmailForm, VirtualForm };
|
package/dist/UI/index.js
CHANGED
|
@@ -38,7 +38,7 @@ import { t as FormControl } from "../FormControl-CkybPp4U.js";
|
|
|
38
38
|
import { t as IndicatorChip } from "../IndicatorChip-Dmaib9uq.js";
|
|
39
39
|
import { t as InputAdornment } from "../InputAdornment-CLuALIhc.js";
|
|
40
40
|
import { n as UdpCrudFormFields, t as CrudForm } from "../CrudForm-C9xMnPoA.js";
|
|
41
|
-
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../forms-
|
|
41
|
+
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../forms-BVssUn2h.js";
|
|
42
42
|
import { t as Box } from "../Box-Colr5GEl.js";
|
|
43
43
|
import { t as Grid } from "../Grid-D1-yWIw5.js";
|
|
44
44
|
import { t as VirtualForm } from "../VirtualForm-Cw3gjug-.js";
|
|
@@ -3,6 +3,6 @@ import { t as FluentSearchField } from "../../../FluentSearchField-DebM7Nzf.js";
|
|
|
3
3
|
import { t as AmbientTextField } from "../../../AmbientTextField-CdnqPJUw.js";
|
|
4
4
|
import { n as FluentTextFieldComponent, t as FluentTextField } from "../../../FluentTextField-WfFk-koa.js";
|
|
5
5
|
import { n as FluentTagField, r as FluentTagFieldComponent, t as KeyValueTextField } from "../../../textField-OwxxHROu.js";
|
|
6
|
-
import { t as AmbientAutoComplete } from "../../../AmbientAutoComplete-
|
|
6
|
+
import { t as AmbientAutoComplete } from "../../../AmbientAutoComplete-NohpvB31.js";
|
|
7
7
|
|
|
8
8
|
export { AmbientAutoComplete, AmbientTextField, FluentSearchField, FluentTagField, FluentTagFieldComponent, FluentTextField, FluentTextFieldAutoComplete, FluentTextFieldComponent, KeyValueTextField };
|
package/dist/{UdpImportFromFileMappingPage-BOBh4ySA.js → UdpImportFromFileMappingPage-B2jpLQlP.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __export } from "./chunk-B4enJp2Q.js";
|
|
2
|
-
import { t as ImportDataFromFileMapping } from "./ImportDataFromFileMapping-
|
|
2
|
+
import { t as ImportDataFromFileMapping } from "./ImportDataFromFileMapping-3XXgUR-Z.js";
|
|
3
3
|
import React from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/udp/pages/UdpImportFromFileMappingPage/UdpImportFromFileMappingPage.jsx
|
|
@@ -14,4 +14,4 @@ var UdpImportFromFileMappingPage_exports = /* @__PURE__ */ __export({ default: (
|
|
|
14
14
|
|
|
15
15
|
//#endregion
|
|
16
16
|
export { UdpImportFromFileMappingPage_default as n, UdpImportFromFileMappingPage_exports as t };
|
|
17
|
-
//# sourceMappingURL=UdpImportFromFileMappingPage-
|
|
17
|
+
//# sourceMappingURL=UdpImportFromFileMappingPage-B2jpLQlP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpImportFromFileMappingPage-
|
|
1
|
+
{"version":3,"file":"UdpImportFromFileMappingPage-B2jpLQlP.js","names":[],"sources":["../src/udp/pages/UdpImportFromFileMappingPage/UdpImportFromFileMappingPage.jsx","../src/udp/pages/UdpImportFromFileMappingPage/index.ts"],"sourcesContent":["import React from 'react';\nimport { ImportDataFromFileMapping } from '../../fileImportMapping/ImportDataFromFileMapping';\n\nconst UdpImportFromFileMappingPage = props => {\n return <ImportDataFromFileMapping/>\n};\n\nexport default UdpImportFromFileMappingPage;\n","export {default} from './UdpImportFromFileMappingPage';\nexport * from './UdpImportFromFileMappingPage';\n"],"mappings":";;;;;AAGA,MAAM,gCAA+B,UAAS;AAC5C,QAAO,oCAAC,gCAA2B;;AAGrC,2CAAe"}
|
|
@@ -15,7 +15,7 @@ import { t as FluentDialog } from "./FluentDialog-B5ZxvX1E.js";
|
|
|
15
15
|
import { t as useApiCatalog } from "./useApiCatalog-cpchDfC1.js";
|
|
16
16
|
import { t as LinearProgress$1 } from "./LinearProgress-CpJeIaEP.js";
|
|
17
17
|
import { t as FluentTextField } from "./FluentTextField-WfFk-koa.js";
|
|
18
|
-
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-
|
|
18
|
+
import { t as AmbientAutoComplete } from "./AmbientAutoComplete-NohpvB31.js";
|
|
19
19
|
import { t as SearchMethodUdpGrid } from "./SearchMethodUdpGrid-CWYZUOx-.js";
|
|
20
20
|
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
21
21
|
import { FormControlLabel, Switch, makeStyles } from "@material-ui/core";
|
|
@@ -3567,4 +3567,4 @@ var UdpTransactionTypesPage_exports = /* @__PURE__ */ __export({ default: () =>
|
|
|
3567
3567
|
|
|
3568
3568
|
//#endregion
|
|
3569
3569
|
export { UdpTransactionTypesPage_default as n, UdpTransactionTypesPage_exports as t };
|
|
3570
|
-
//# sourceMappingURL=UdpTransactionTypesPage-
|
|
3570
|
+
//# sourceMappingURL=UdpTransactionTypesPage-C-TdPgtF.js.map
|