{"version":3,"file":"UdpMaintenanceEnginePage.mjs","names":["React","useEffect","useState","useMemo","useCallback","useRef","useTranslation","CrudBrowserContainer","CrudTableSidePanel","getPathObject","getPrimaryKeyValues","apiMutate","toLowerFirstChar","toUpperFirstChar","CardinalityTypeEnums","EntityAttributeEnums","UdpEnums","executeQueryAdHoc","getSearchObject","useHandleAxiosSnackbar","usePromotedMethodEntity","getSanitizedName","Alert","v4","uuid","useLocation","TagEnums","ConfigService","SideSheet","useCatalogStore","useHistory","Inquiry","useAxiosGet","UdpDialog","UdpDrawer","UdpList","UdpListItem","UdpTablist","UdpButton","UdpCard","UdpFlexbox","UdpFluentButton","UdpFluentIcon","UdpMessageBar","UdpTabPanel","UdpText","EntityTimeLine","formatDate","EntityNotes","AuditEventTypeEnums","ReactJsonView","AddViewNote","EDIT_TAB_ID","DOMAIN_FIELDS","AUDIT_HISTORY","NOTES","UdpMaintenanceEnginePage","props","catalogKey","params","t","udpFieldInfos","setUdpFieldInfos","alertWarnings","setAlertWarnings","showBackToTableBrowser","setShowBackToTableBrowser","gridApiRef","modalConfig","setModalConfig","type","data","openCompareDomainAuditsSidesheet","setOpenCompareDomainAuditsSidesheet","lastModifiedAuditEvent","setLastModifiedAuditEvent","selectedAuditEvent","setSelectedAuditEvent","openAddViewNoteSidesheet","setopenAddViewNoteSidesheet","noteMode","setNoteMode","selectedNote","setSelectedNote","refreshNotes","setRefreshNotes","createFormApiRef","editFormApiRef","location","state","history","searchParamStr","search","searchParams","URLSearchParams","searchParamsEntityName","entityName","has","get","handleErrorSnackbar","handleSuccessSnackbar","handleGoToTableBrowser","push","pathname","udpCatalogKey","udpTagId","selectedEntity","setSelectedEntity","foreignKeyData","setForeignKeyData","udpFieldSearchApiId","setUdpFieldSearchApiId","entityUdpObjectInfo","setEntityUdpObjectInfo","editSidesheetTabs","id","label","defaultValue","selectedTabId","setSelectedTabId","setEntityName","currentApiCatalogId","udpObjectInfoEntity","udpObjectFieldInfo","promotedMethodEntities","openModal","closeModal","executeCreate","integrationV1ApiUrl","unityBaseCreateMethod","apiMethodId","method","executeUpdate","unityBaseUpdateMethod","executeDelete","unityBaseDeleteMethod","onCreate","onUpdate","onDelete","catalogObject","integrationV2ApiUrl","searchObj","eagerLoad","pageNumber","pageSize","orderElements","sortColumn","sortDirection","searchFilterElements","filterElements","searchField","searchOperator","searchValue","forEach","filter","entityAttributes","length","originalAttributes","properties","attributeMap","Map","map","attr","name","toLowerCase","sortedPart","field","match","extendedProperties","udpFieldProperties","Boolean","udpFieldNames","Set","f","unmatchedPart","getMetaDataForUdpField","fieldInfos","requestObj","then","resp","pageList","getFKMethodEntities","attributes","fkMethods","childEntity","ceFieldsArr","childAssoc","childEntityAssoc","Object","keys","Cardinality","Many_To_Many","One_To_Many","UdpType","Keys","value","i","split","idx","test","ceAttr","find","p","cef","reference","config","UNITY_PRODUCT_ID","entityAttribute","entity","getFKAssociationLabel","fieldsInfo","associationLabelInfo","fi","maintainenceConfig","associationLabel","getDataByKey","obj","k","val","key","objKey","includes","getFKData","fkData","promises","promiseDetails","warnings","unityBaseGetAllMethod","url","fieldName","messageKey","messageParams","existingWarnings","Promise","all","response","index","status","respData","promiseDetail","fd","d","idName","fetchLastModifiedAuditEvent","updatedEntityQualifiedName","fullyQualifiedEntityName","filterElems","uemV1ApiUrl","catch","handleOnCreate","values","requestBody","res","current","refreshServerSide","handleOnUpdate","primaryKeyValues","pathObject","pathParameters","Array","isArray","po","businessObjectKey","handleOnDelete","removeWarning","updatedWarnings","warning","shouldDisableAction","sanitizedEntityName","tagTypeShouldDisableEdit","TagTypeSanitizedName","User_Defined","shortCutContentShouldDisableEdit","Udp_Shortcut_Content","Is_Product_ShortcutContent","lookupShouldDisableEdit","Udp_Lookup","Is_Product_Lookup","actionList","actions","iconName","getTitle","handleOnClick","e","checkDisabled","inquiryTreeId","splice","title","executeSearchForEntityUdpObjectInfo","unityBaseSearchMethod","setFrKeyData","udpFieldWarning","prevState","setFieldInfos","temp","from","handleGridApiCallback","api","primaryKeyFieldName","isPrimaryKey","slice","handleCloseNotesSidesheet","getChangedFieldsandValues","oldDataStr","newDataStr","oldData","JSON","parse","newData","changes","oldValue","newValue","stringify","previousValue","currentValue","sidesheetList","open","onClose","displayName","width","children","undefined","pageId","handleSubmit","detail","typeCode","Update_Domain","Delete_Domain","udpAuditEventUdpAuditEventDetail","oldObj","Create_Domain","newObj","message","record","entityBusinessKey","date","createdOn","user","userDisplayName","sidesheet"],"sources":["../../../../src/udp/pages/UdpMaintenanceEnginePage/UdpMaintenanceEnginePage.jsx"],"sourcesContent":["import React, {\n  useEffect,\n  useState,\n  useMemo,\n  useCallback,\n  useRef\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CrudBrowserContainer } from '../../../maintenanceEngine/crudBrowser/CrudBrowserContainer';\nimport { CrudTableSidePanel } from '../../../maintenanceEngine/crudBrowser/CrudTableSidePanel';\nimport {\n  getPathObject,\n  getPrimaryKeyValues\n} from '../../../utilities/maintenanceEngine/CrudBrowserUtilities';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport {\n  toLowerFirstChar,\n  toUpperFirstChar\n} from '../../../utilities/input/StringUtilities';\nimport {\n  CardinalityTypeEnums,\n  EntityAttributeEnums,\n  UdpEnums\n} from '../../../enums/unitySystemEnums';\nimport { executeQueryAdHoc } from '../../utilities/methodUtils';\nimport { getSearchObject } from '../../../utilities/search/SearchUtilities';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { usePromotedMethodEntity } from '../../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../../utilities/entities/entityUtilities';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\nimport { useLocation } from 'react-router-dom';\nimport { TagEnums } from '../../../enums/tagEnums';\nimport { ConfigService } from '../../../configService';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport { useCatalogStore } from '../../../stores/catalogStore';\nimport { useHistory } from 'react-router-dom';\nimport { Inquiry } from '../../../inquiry';\nimport { useAxiosGet } from '../../../utilities';\nimport { UdpDialog, UdpDrawer, UdpList, UdpListItem, UdpTablist } from '../../../UI/fluent-web-components';\nimport { UdpButton, UdpCard, UdpFlexbox, UdpFluentButton, UdpFluentIcon, UdpMessageBar, UdpTabPanel, UdpText } from '@univerus/udp-react-stencil-component-library';\nimport EntityTimeLine from './components/EntitiyTimeLine';\nimport { formatDate } from '../../../UI/widgets/utils/dateUtils';\nimport { EntityNotes } from './components/EntityNotes';\nimport { AuditEventTypeEnums } from '../../../enums/auditEventEnums';\nimport ReactJsonView from '@microlink/react-json-view'\nimport AddViewNote from './components/AddViewNote';\n\nconst EDIT_TAB_ID = {\n    DOMAIN_FIELDS: 'DomainFields',\n    AUDIT_HISTORY: 'AuditHistory',\n    NOTES: 'Notes',\n}\n\nexport const UdpMaintenanceEnginePage = (props) => {\n  const { catalogKey, params } = props;\n  const { t } = useTranslation();\n  const [udpFieldInfos, setUdpFieldInfos] = useState([]);\n  const [alertWarnings, setAlertWarnings] = useState([]);\n  const [showBackToTableBrowser, setShowBackToTableBrowser] = useState(false);\n  const gridApiRef = useRef(null);\n  const [modalConfig, setModalConfig] = useState({ type: null, data: null });\n  const [openCompareDomainAuditsSidesheet, setOpenCompareDomainAuditsSidesheet] = useState(false);\n  const [lastModifiedAuditEvent, setLastModifiedAuditEvent] = useState();\n  const [selectedAuditEvent, setSelectedAuditEvent] = useState();\n  const [openAddViewNoteSidesheet, setopenAddViewNoteSidesheet] = useState(false);\n  const [noteMode, setNoteMode] = useState('');\n  const [selectedNote, setSelectedNote] = useState(null);\n  const [refreshNotes, setRefreshNotes] = useState(false);\n\n  const createFormApiRef = useRef();\n  const editFormApiRef = useRef();\n\n  const location = useLocation();\n  const state = location.state;\n  const history = useHistory();\n  let searchParamStr = location.search;\n  let searchParams = new URLSearchParams(searchParamStr);\n  const searchParamsEntityName = state?.entityName\n    ? state.entityName\n    : searchParams.has('entityName') === true\n    ? toUpperFirstChar(searchParams.get('entityName'))\n    : '';\n\n  const { handleErrorSnackbar, handleSuccessSnackbar } =\n    useHandleAxiosSnackbar();\n\n  const handleGoToTableBrowser = useCallback(() => {\n    history.push({\n      pathname: `/tableBrowser`\n    });\n  }, [history]);\n\n  const udpCatalogKey = useMemo(() => {\n    if (params?.entityName || catalogKey || searchParamsEntityName) {\n      return params?.entityName || catalogKey || searchParamsEntityName;\n    } else {\n      handleGoToTableBrowser();\n    }\n  }, [\n    params?.entityName,\n    catalogKey,\n    searchParamsEntityName,\n    handleGoToTableBrowser\n  ]);\n  const udpTagId = params?.udpTagId || '';\n\n  const [selectedEntity, setSelectedEntity] = useState(null);\n  const [foreignKeyData, setForeignKeyData] = useState(null);\n  const [udpFieldSearchApiId, setUdpFieldSearchApiId] = useState(null);\n  const [entityUdpObjectInfo, setEntityUdpObjectInfo] = useState(null);\n  const editSidesheetTabs = [\n    {\n      id: EDIT_TAB_ID.DOMAIN_FIELDS,\n      label: t('maintenanceEngine.tabs.domainFields', { defaultValue: 'Domain Fields' })\n    },\n    {\n      id: EDIT_TAB_ID.AUDIT_HISTORY,\n      label: t('maintenanceEngine.tabs.auditHistory', { defaultValue: 'Audit History' })\n    },\n    {\n      id: EDIT_TAB_ID.NOTES,\n      label: t('maintenanceEngine.tabs.notes', { defaultValue: 'Notes' })\n    }\n  ];\n  const [selectedTabId, setSelectedTabId] = useState(editSidesheetTabs[0]?.id);\n\n  const [entityName, setEntityName] = useState(null);\n\n  const { currentApiCatalogId } = useCatalogStore();\n\n  const { data: udpObjectInfoEntity } = usePromotedMethodEntity(\n    'udpObjectInfo',\n    true\n  );\n\n  const { data: udpObjectFieldInfo } = usePromotedMethodEntity(\n    'UdpObjectFieldInfo',\n    true\n  );\n\n  const { data: promotedMethodEntities } = usePromotedMethodEntity(\n    udpCatalogKey,\n    true\n  );\n\n  // 2. MODAL HANDLERS: Callbacks to open and close modals/sheets.\n  const openModal = useCallback((type, data = null) => {\n    setModalConfig({ type, data });\n  }, []);\n\n  const closeModal = useCallback(() => {\n    setModalConfig({ type: null, data: null });\n  }, []);\n\n  //------- CRUD operations--------\n  const executeCreate = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.integrationV1ApiUrl,\n        `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseCreateMethod?.apiMethodId}`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [selectedEntity]\n  );\n\n  const executeUpdate = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.integrationV1ApiUrl,\n        `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseUpdateMethod?.apiMethodId}`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [selectedEntity]\n  );\n\n  const executeDelete = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.integrationV1ApiUrl,\n        `apimethod/executeQueryWithParameters/${selectedEntity?.unityBaseDeleteMethod?.apiMethodId}`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [selectedEntity]\n  );\n\n  const onCreate = useCallback(\n    async (data) => {\n      return await executeCreate(data);\n    },\n    [executeCreate]\n  );\n\n  const onUpdate = useCallback(\n    async (data) => {\n      return await executeUpdate(data);\n    },\n    [executeUpdate]\n  );\n\n  const onDelete = useCallback(\n    async (data) => {\n      return await executeDelete(data);\n    },\n    [executeDelete]\n  );\n\n  const [{ data: catalogObject }] = useAxiosGet(\n    ConfigService.integrationV2ApiUrl,\n    `apiCatalog/${currentApiCatalogId}/catalogObject/${entityName}`,\n    {},\n    !!!currentApiCatalogId || !!!entityName,\n    false\n  );\n\n  const searchObj = useMemo(() => {\n    return {\n      eagerLoad: true,\n      pageNumber: 0,\n      pageSize: 100,\n      orderElements: [\n        {\n          sortColumn: 'createdOn',\n          sortDirection: 'desc'\n        }\n      ],\n    };\n  }, []);\n\n  const searchFilterElements = useMemo(() => {\n    const filterElements = [];\n    if (udpTagId) {\n      filterElements.push({\n        searchField: 'UdpTags.UdpTagAssociationUdpTag.Id',\n        searchOperator: '=',\n        searchValue: udpTagId\n      });\n    }\n    if (params?.filterElements) {\n      params?.filterElements?.forEach((filter) => {\n        filterElements.push(filter);\n      });\n    }\n    return filterElements;\n  }, [udpTagId, params?.filterElements]);\n\n  const entityAttributes = useMemo(() => {\n    if (udpFieldInfos?.length > 0 && catalogObject && entityName) {\n      // 1. Get original attributes from catalog\n      const originalAttributes = catalogObject?.properties || [];\n      const attributeMap = new Map(\n        originalAttributes.map((attr) => [attr.name.toLowerCase(), attr])\n      );\n\n      // 2. Create the sorted list by iterating through udpFieldInfos\n      const sortedPart = udpFieldInfos\n        .map((field) => {\n          const match = attributeMap.get(field.name.toLowerCase());\n          if (match) {\n            // Merge properties as we build the sorted list\n            return {\n              ...match,\n              extendedProperties: {\n                ...match.extendedProperties,\n                udpFieldProperties: field.properties\n              }\n            };\n          }\n          return null;\n        })\n        .filter(Boolean);\n\n      // 3. Find unmatched items in a single pass\n      const udpFieldNames = new Set(\n        udpFieldInfos.map((f) => f.name.toLowerCase())\n      );\n      const unmatchedPart = originalAttributes.filter(\n        (attr) => !udpFieldNames.has(attr.name.toLowerCase())\n      );\n\n      // 4. Combine the sorted, merged part with the original unmatched part\n      return [...sortedPart, ...unmatchedPart];\n    }\n  }, [catalogObject, entityName, udpFieldInfos]);\n\n  const getMetaDataForUdpField = useCallback(\n    async (entityName) => {\n      let fieldInfos = [];\n      if (udpFieldSearchApiId) {\n        const filterElements = [\n          {\n            searchField: 'ObjectInfo.SanitizedName',\n            searchOperator: '=',\n            searchValue: getSanitizedName(entityName)\n          }\n        ];\n        const requestObj = getSearchObject(filterElements, 1, 50, true);\n\n        await executeQueryAdHoc({ data: requestObj }, udpFieldSearchApiId).then(\n          (resp) => {\n            fieldInfos = resp.data?.pageList;\n          }\n        );\n      }\n      return fieldInfos;\n    },\n    [udpFieldSearchApiId]\n  );\n\n  const getFKMethodEntities = useCallback(\n    async (attributes) => {\n      if (!attributes) {\n        return [];\n      }\n      let fkMethods = [];\n\n      for (const attr of attributes) {\n        // check if there is a property with this childEntity\n        if (attr?.extendedProperties?.childEntity) {\n          // get the list of child entity field names from the Keys array\n          const ceFieldsArr = [];\n          const childAssoc = attr.extendedProperties.childEntityAssoc;\n\n          if (\n            childAssoc &&\n            Object.keys(childAssoc).length > 0 &&\n            (childAssoc.Cardinality === CardinalityTypeEnums.Many_To_Many ||\n              childAssoc.Cardinality === CardinalityTypeEnums.One_To_Many) &&\n            !childAssoc.UdpType\n          ) {\n            childAssoc.Keys.forEach((value, i) => {\n              const name = value.split(',')[0];\n              if (name) {\n                ceFieldsArr.push({\n                  idx: i,\n                  name: /^[A-Z]*$/.test(name)\n                    ? name.toLowerCase()\n                    : toLowerFirstChar(name)\n                });\n              }\n            });\n          }\n\n          // find the child entity attribute\n          const ceAttr = attributes.find((p) =>\n            ceFieldsArr.find((cef) => cef.name === p.name)\n          );\n\n          if (ceAttr) {\n            // get list of entity if ceProp exists\n            await apiMutate(\n              ConfigService.integrationV1ApiUrl,\n              `apicatalog/${currentApiCatalogId}/promotedMethodEntities/${attr.reference}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n              {\n                method: 'get'\n              },\n              {}\n            ).then((resp) => {\n              if (resp && resp.data) {\n                fkMethods.push({\n                  entityAttribute: ceAttr,\n                  entity: resp.data\n                });\n              }\n            });\n          }\n        }\n      }\n      return fkMethods;\n    },\n    [currentApiCatalogId]\n  );\n\n  const getFKAssociationLabel = useCallback(\n    async (entityName) => {\n      let fieldsInfo = [];\n      fieldsInfo = await getMetaDataForUdpField(entityName);\n      if (fieldsInfo?.length <= 0) {\n        return '';\n      }\n      const associationLabelInfo = fieldsInfo?.find(\n        (fi) => fi.properties?.maintainenceConfig?.associationLabel === 'true'\n      );\n      return associationLabelInfo?.name;\n    },\n    [getMetaDataForUdpField]\n  );\n\n  const getDataByKey = (obj, k) => {\n    if (!obj) return null;\n    let val = obj[k] ?? null;\n    if (!val) {\n      const key = Object.keys(obj).find((objKey) =>\n        objKey.toLowerCase().includes(k)\n      );\n      if (key) {\n        val = obj[key];\n      }\n    }\n    return val;\n  };\n\n  const getFKData = useCallback(async () => {\n    if (!entityAttributes?.length) {\n      return null;\n    }\n    const fkMethods = await getFKMethodEntities(entityAttributes);\n    if (!fkMethods?.length) {\n      setForeignKeyData([]);\n      return [];\n    }\n    let fkData = [];\n    let promises = [];\n    let promiseDetails = [];\n    const warnings = [];\n    for (const method of fkMethods) {\n      if (method && method?.entity?.unityBaseGetAllMethod) {\n        const associationLabel = await getFKAssociationLabel(\n          method.entity.entityName\n        );\n        promiseDetails.push({\n          url:\n            ConfigService.integrationV1ApiUrl +\n            `/apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n          fieldName: method.entityAttribute.name,\n          name: method.entity.entityName,\n          associationLabel: associationLabel\n        });\n\n        promises.push(\n          apiMutate(\n            ConfigService.integrationV1ApiUrl,\n            `apimethod/executeQueryWithParameters/${method?.entity?.unityBaseGetAllMethod?.apiMethodId}`,\n            {\n              method: 'post'\n            },\n            { data: {} }\n          )\n        );\n      } else {\n        // Carry the key rather than the resolved string: calling t() here would\n        // put it in this callback's deps, refetching every foreign key on each\n        // language switch. Resolved at render instead.\n        warnings.push({\n          id: uuid(),\n          messageKey: 'maintenanceEngine.warnings.getAllNotPromoted',\n          defaultValue: \"{{entityName}}'s Get-All method needs to be promoted\",\n          messageParams: { entityName: method.entity.entityName }\n        });\n      }\n    }\n    setAlertWarnings((existingWarnings) => [...existingWarnings, ...warnings]);\n\n    Promise.all(promises).then((resp) => {\n      resp.forEach((response, index) => {\n        if (response.status === 200) {\n          if (response?.data) {\n            let respData = [];\n            const promiseDetail = promiseDetails.find(\n              (p) =>\n                p.url === response?.config?.url &&\n                !fkData.find(\n                  (fd) =>\n                    fd.entityName === p.name && fd.fieldName === p.fieldName\n                )\n            );\n\n            response.data.forEach((d) => {\n              const idName =\n                promiseDetail?.fieldName && d[promiseDetail.fieldName]\n                  ? promiseDetail.fieldName\n                  : 'id';\n              const id = getDataByKey(d, idName);\n              const name = getDataByKey(\n                d,\n                promiseDetail?.associationLabel\n                  ? toLowerFirstChar(promiseDetail.associationLabel)\n                  : 'name'\n              );\n\n              respData.push({ id: id, name: name ?? id });\n            });\n\n            if (!!promiseDetail) {\n              fkData.push({\n                fieldName: promiseDetail.fieldName,\n                entityName: promiseDetail.name,\n                name: promiseDetail.fieldName,\n                data: respData\n              });\n            }\n          }\n        }\n      });\n      setForeignKeyData(fkData);\n    });\n  }, [entityAttributes, getFKMethodEntities, getFKAssociationLabel]);\n\n  const fetchLastModifiedAuditEvent = useCallback((updatedEntityQualifiedName) => {\n    let fullyQualifiedEntityName = promotedMethodEntities?.entityName;\n    if(updatedEntityQualifiedName){\n      fullyQualifiedEntityName = updatedEntityQualifiedName\n    }\n    if (!fullyQualifiedEntityName) return;\n    const filterElems =  [{ searchField: 'domain', searchOperator: '=', searchValue: fullyQualifiedEntityName }]\n    apiMutate(\n      ConfigService.uemV1ApiUrl,\n      'UdpAuditEvent/search',\n      { method: 'post' },\n      {\n        data: {\n          ...searchObj,\n          pageSize: 1,\n          filterElements: filterElems\n        }\n      }\n    ).then(\n      (resp) =>\n        setLastModifiedAuditEvent(resp?.data?.pageList?.[0])\n    )\n    .catch(() => setLastModifiedAuditEvent(null));\n  },[promotedMethodEntities, searchObj]);\n\n  const handleOnCreate = useCallback(\n    async (values) => {\n      if (selectedEntity) {\n        const entityName = selectedEntity?.entityName;\n        if (selectedEntity?.unityBaseCreateMethod) {\n          const data = { requestBody: values };\n          const response = await onCreate({ data }).catch((res) => {\n            handleErrorSnackbar(res);\n          });\n\n          if (response?.status === 200) {\n            handleSuccessSnackbar(\n              entityName\n                ? t('maintenanceEngine.snackbar.entityCreated', {\n                    defaultValue: '{{entityName}} has been created',\n                    entityName\n                  })\n                : t('maintenanceEngine.snackbar.created', {\n                    defaultValue: 'Entity has been created'\n                  })\n            );\n            gridApiRef.current.refreshServerSide();\n            closeModal('create');\n            return response;\n          }\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('maintenanceEngine.errors.createNotPromoted', {\n              defaultValue: \"{{entityName}}'s create method must be promoted\",\n              entityName: selectedEntity.entityName\n            })\n          );\n        }\n      }\n    },\n    [\n      selectedEntity,\n      onCreate,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      t,\n      closeModal\n    ]\n  );\n\n  const handleOnUpdate = useCallback(\n    async (values, primaryKeyValues) => {\n      if (selectedEntity) {\n        const entityName = selectedEntity?.entityName;\n\n        if (selectedEntity?.unityBaseUpdateMethod) {\n          // Get primary key value object using path parameters and merge with data\n          const pathObject = getPathObject(\n            selectedEntity.unityBaseUpdateMethod.pathParameters,\n            primaryKeyValues\n          );\n          let data = { requestBody: values };\n          if (Array.isArray(pathObject)) {\n            pathObject.forEach((po) => {\n              data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n            });\n          } else {\n            data = { ...pathObject, requestBody: values };\n          }\n\n          const response = await onUpdate({ data }).catch((res) => {\n            handleErrorSnackbar(res);\n          });\n\n          if (response?.status === 200) {\n            handleSuccessSnackbar(\n              entityName\n                ? t('maintenanceEngine.snackbar.entityUpdated', {\n                    defaultValue: '{{entityName}} has been updated',\n                    entityName\n                  })\n                : t('maintenanceEngine.snackbar.updated', {\n                    defaultValue: 'Entity has been updated'\n                  })\n            );\n\n            gridApiRef.current.refreshServerSide();\n            fetchLastModifiedAuditEvent(data?.businessObjectKey);\n            closeModal('edit');\n          }\n        }\n      }\n    },\n    [\n      selectedEntity,\n      onUpdate,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      t,\n      closeModal,\n      fetchLastModifiedAuditEvent\n    ]\n  );\n\n  const handleOnDelete = useCallback(\n    async (value) => {\n      if (selectedEntity) {\n        const entityName = selectedEntity?.entityName;\n\n        if (selectedEntity?.unityBaseDeleteMethod) {\n          // Get primary key value object using path parameters and merge with data\n          const primaryKeyValues = getPrimaryKeyValues(entityAttributes, value);\n          const pathObject = getPathObject(\n            selectedEntity?.unityBaseDeleteMethod.pathParameters,\n            primaryKeyValues\n          );\n          let data = {};\n          if (Array.isArray(pathObject)) {\n            pathObject.forEach((po) => {\n              data[Object.keys(po)[0]] = po[Object.keys(po)[0]];\n            });\n          } else {\n            data = { ...pathObject };\n          }\n\n          const response = await onDelete({ data }).catch((res) => {\n            handleErrorSnackbar(res);\n          });\n\n          if (response?.status === 200) {\n            handleSuccessSnackbar(\n              entityName\n                ? t('maintenanceEngine.snackbar.entityDeleted', {\n                    defaultValue: '{{entityName}} has been deleted',\n                    entityName\n                  })\n                : t('maintenanceEngine.snackbar.deleted', {\n                    defaultValue: 'Entity has been deleted'\n                  })\n            );\n            gridApiRef.current.refreshServerSide();\n            closeModal('delete');\n          }\n        }\n      }\n    },\n    [\n      selectedEntity,\n      entityAttributes,\n      onDelete,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      t,\n      closeModal\n    ]\n  );\n\n  const removeWarning = useCallback(\n    (id) => {\n      const updatedWarnings = alertWarnings.filter(\n        (warning) => warning.id !== id\n      );\n      setAlertWarnings(updatedWarnings);\n    },\n    [alertWarnings]\n  );\n\n  const shouldDisableAction = useCallback(\n    (value) => {\n      const sanitizedEntityName = getSanitizedName(entityName);\n      const tagTypeShouldDisableEdit =\n        [TagEnums.TagTypeSanitizedName.toLowerCase()].includes(\n          sanitizedEntityName?.toLowerCase()\n        ) && !value?.[toLowerFirstChar(EntityAttributeEnums.User_Defined)];\n\n      const shortCutContentShouldDisableEdit =\n        [UdpEnums.Udp_Shortcut_Content.toLowerCase()].includes(\n          sanitizedEntityName?.toLowerCase()\n        ) &&\n        value?.[\n          toLowerFirstChar(EntityAttributeEnums.Is_Product_ShortcutContent)\n        ];\n\n      const lookupShouldDisableEdit =\n        [UdpEnums.Udp_Lookup.toLowerCase()].includes(\n          sanitizedEntityName?.toLowerCase()\n        ) && value?.[toLowerFirstChar(EntityAttributeEnums.Is_Product_Lookup)];\n      return (\n        tagTypeShouldDisableEdit ||\n        shortCutContentShouldDisableEdit ||\n        lookupShouldDisableEdit\n      );\n    },\n    [entityName]\n  );\n\n  const actionList = useMemo(() => {\n    if (!selectedEntity) {\n      return [];\n    }\n\n    let actions = [\n      {\n        id: 'edit',\n        iconName: 'edit', // Pass string name for the icon\n        getTitle: () =>\n          // Use getTitle for dynamic text\n          selectedEntity?.unityBaseUpdateMethod\n            ? t('common.edit', { defaultValue: 'Edit' })\n            : t('maintenanceEngine.actions.editNotAccessible', {\n                defaultValue: 'Edit Method Not Accessible'\n              }),\n        handleOnClick: (e, params) => {\n          openModal('edit', params.data); // Calls parent state handler\n        },\n        checkDisabled: (params) =>\n          !!!selectedEntity?.unityBaseUpdateMethod ||\n          shouldDisableAction(params.data)\n      },\n      {\n        id: 'delete',\n        iconName: 'trashCan', // Pass string name for the icon\n        getTitle: () =>\n          selectedEntity?.unityBaseDeleteMethod\n            ? t('common.delete', { defaultValue: 'Delete' })\n            : t('maintenanceEngine.actions.deleteNotAccessible', {\n                defaultValue: 'Delete Method Not Accessible'\n              }),\n        handleOnClick: (e, params) => {\n          openModal('delete', params.data); // Calls parent state handler\n        },\n        checkDisabled: (params) =>\n          !!!selectedEntity?.unityBaseDeleteMethod ||\n          shouldDisableAction(params.data)\n      }\n    ];\n    if (params?.inquiryTreeId) {\n      actions.splice(1, 0, {\n        id: 'inquiry',\n        iconName: 'relationshipDiagram',\n        title: t('maintenanceEngine.actions.detailedView', { defaultValue: 'Detailed view' }),\n        handleOnClick: (e, params) => {\n          openModal('inquiry', params.data);\n        }\n      });\n    }\n    return actions;\n  }, [\n    selectedEntity,\n    t,\n    shouldDisableAction,\n    openModal,\n    params?.inquiryTreeId\n  ]);\n\n  useEffect(() => {\n    const executeSearchForEntityUdpObjectInfo = async (\n      apiMethodId,\n      sanitizedEntityName\n    ) => {\n      const filterElements = [\n        {\n          searchField: 'SanitizedName',\n          searchOperator: '=',\n          searchValue: sanitizedEntityName\n        }\n      ];\n      const requestObj = getSearchObject(filterElements, 1, 50, false);\n      const response = await executeQueryAdHoc(\n        { data: requestObj },\n        apiMethodId\n      );\n      if (response.status === 200) {\n        const data = response?.data?.pageList[0];\n        setEntityUdpObjectInfo(data);\n      }\n    };\n    if (udpObjectInfoEntity?.unityBaseSearchMethod && entityName) {\n      executeSearchForEntityUdpObjectInfo(\n        udpObjectInfoEntity?.unityBaseSearchMethod?.apiMethodId,\n        getSanitizedName(entityName)\n      );\n    }\n  }, [udpObjectInfoEntity, entityName]);\n\n  useEffect(() => {\n    const setFrKeyData = async () => {\n      await getFKData();\n    };\n    if (entityAttributes && udpFieldSearchApiId !== null) {\n      setFrKeyData();\n    }\n  }, [entityAttributes, getFKData, udpFieldSearchApiId]);\n\n  useEffect(() => {\n    if (promotedMethodEntities) {\n      setSelectedEntity(promotedMethodEntities);\n      setEntityName(promotedMethodEntities?.entityName);\n    }\n  }, [promotedMethodEntities]);\n\n  useEffect(() => {\n    if (udpObjectFieldInfo) {\n      if (udpObjectFieldInfo?.unityBaseSearchMethod?.apiMethodId) {\n        setUdpFieldSearchApiId(\n          udpObjectFieldInfo?.unityBaseSearchMethod?.apiMethodId\n        );\n      } else {\n        setUdpFieldSearchApiId('');\n        const udpFieldWarning = {\n          id: uuid(),\n          messageKey: 'maintenanceEngine.warnings.udpObjectFieldInfoNotPromoted',\n          defaultValue: 'UdpObjectFieldInfo method needs to be promoted'\n        };\n        setAlertWarnings((prevState) => [...prevState, udpFieldWarning]);\n      }\n    }\n  }, [udpObjectFieldInfo]);\n\n  useEffect(() => {\n    const setFieldInfos = async () => {\n      let temp = await getMetaDataForUdpField(entityName);\n      setUdpFieldInfos(temp);\n    };\n    if (udpFieldSearchApiId) {\n      setFieldInfos();\n    }\n  }, [\n    udpObjectFieldInfo,\n    getMetaDataForUdpField,\n    udpFieldSearchApiId,\n    entityName\n  ]);\n\n  useEffect(() => {\n    if (location.state?.from === 'tablebrowser') {\n      setShowBackToTableBrowser(true);\n    }\n  }, [location.state]);\n\n  const handleGridApiCallback = (api) => {\n    gridApiRef.current = api;\n  };\n\n\n  useEffect(() => {\n    fetchLastModifiedAuditEvent();\n  }, [fetchLastModifiedAuditEvent]);\n\n  const primaryKeyFieldName = useMemo(() => {\n    const fieldName = udpFieldInfos?.find((field) => field.isPrimaryKey)?.name;\n    return fieldName?.[0]?.toLowerCase() + fieldName?.slice(1);\n  }, [udpFieldInfos]);\n\n  const handleCloseNotesSidesheet = () => {\n    setopenAddViewNoteSidesheet(false);\n    setSelectedNote(null);\n    setNoteMode('');\n  };\n\n  const getChangedFieldsandValues = (oldDataStr, newDataStr) => {\n    if (!oldDataStr || !newDataStr) return;\n    const oldData = JSON.parse(oldDataStr);\n    const newData = JSON.parse(newDataStr);\n    const keys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);\n\n    const changes = [];\n    keys.forEach((key) => {\n      const oldValue = oldData[key] ?? null;\n      const newValue = newData[key] ?? null;\n      if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\n        changes.push({\n          field: key,\n          previousValue: oldValue,\n          currentValue: newValue\n        });\n      }\n    });\n    return changes;\n  };\n\n  const sidesheetList = [\n    {\n      open: modalConfig.type === 'create',\n      onClose: closeModal,\n      title: t('maintenanceEngine.sheet.addTitle', {\n        defaultValue: 'Add New {{name}}',\n        name:\n          entityUdpObjectInfo?.properties?.displayName ||\n          getSanitizedName(entityName)\n      }),\n      width: '600px',\n      children: (\n        <>\n          <CrudTableSidePanel\n            entityAttributes={entityAttributes}\n            udpFieldInfos={udpFieldInfos}\n            foreignKeyData={foreignKeyData}\n            closeSideSheet={closeModal}\n            isNewEntry={modalConfig.type === 'create'}\n            entityName={entityName}\n            onCreate={handleOnCreate}\n            onUpdate={undefined}\n            crudTableEditionData={null}\n            pageId={selectedEntity?.unityBaseCreateMethod?.pageId}\n            formApiRef={createFormApiRef}\n            hideSubmitButton\n          />\n          <UdpFluentButton\n            appearance='primary'\n            slot='footer'\n            onClick={() => createFormApiRef.current?.handleSubmit()}\n          >\n            {t('common.add', { defaultValue: 'Add' })}\n          </UdpFluentButton>\n        </>\n      )\n    },\n    {\n      open: modalConfig.type === 'edit',\n      onClose: closeModal,\n      title: t('maintenanceEngine.sheet.editTitle', {\n        defaultValue: 'Edit {{name}}',\n        name:\n          entityUdpObjectInfo?.properties?.displayName ||\n          getSanitizedName(entityName)\n      }),\n      width: '600px',\n      children: (\n        <>\n          <UdpFlexbox\n            slot='toolbar'\n            direction='row'\n            align='center'\n            justify='space-between'\n            width='100%'\n          >\n            <UdpTablist\n              tabList={editSidesheetTabs}\n              activeId={selectedTabId}\n              onTabChange={(e) => setSelectedTabId(e?.detail)}\n            />\n            <UdpFluentButton\n              appearance='transparent'\n              onClick={() => {\n                setopenAddViewNoteSidesheet(true);\n                setNoteMode('ADD');\n              }}\n              startIconName='add'\n            >\n              {t('notes.actions.add', { defaultValue: 'Add Note' })}\n            </UdpFluentButton>\n          </UdpFlexbox>\n          <UdpTabPanel\n            activeTabId={selectedTabId}\n            id={EDIT_TAB_ID.DOMAIN_FIELDS}\n          >\n            <CrudTableSidePanel\n              entityAttributes={entityAttributes}\n              udpFieldInfos={udpFieldInfos}\n              foreignKeyData={foreignKeyData}\n              closeSideSheet={closeModal}\n              isNewEntry={modalConfig.type === 'create'}\n              entityName={entityName}\n              onCreate={undefined}\n              onUpdate={handleOnUpdate}\n              crudTableEditionData={modalConfig.data}\n              pageId={selectedEntity?.unityBaseUpdateMethod?.pageId}\n              formApiRef={editFormApiRef}\n              hideSubmitButton\n            />\n          </UdpTabPanel>\n\n          <UdpTabPanel\n            activeTabId={selectedTabId}\n            id={EDIT_TAB_ID.AUDIT_HISTORY}\n          >\n            <EntityTimeLine\n              setOpenCompareDomainAuditsSidesheet={\n                setOpenCompareDomainAuditsSidesheet\n              }\n              setSelectedAuditEvent={setSelectedAuditEvent}\n              entityData={modalConfig?.data}\n            />\n          </UdpTabPanel>\n\n          <UdpTabPanel activeTabId={selectedTabId} id={EDIT_TAB_ID.NOTES}>\n            <EntityNotes\n              businessObjectKey={modalConfig?.data?.businessObjectKey}\n              setNoteMode={setNoteMode}\n              setOpenViewNoteSidesheet={setopenAddViewNoteSidesheet}\n              setSelectedNote={setSelectedNote}\n              refreshNotes={refreshNotes}\n              setRefreshNotes={setRefreshNotes}\n            />\n          </UdpTabPanel>\n          {selectedTabId === EDIT_TAB_ID.DOMAIN_FIELDS && (\n            <UdpFluentButton\n              appearance='primary'\n              slot='footer'\n              onClick={() => editFormApiRef.current?.handleSubmit()}\n            >\n              {t('common.save', { defaultValue: 'Save' })}\n            </UdpFluentButton>\n          )}\n        </>\n      )\n    },\n    {\n      open: modalConfig.type === 'inquiry',\n      onClose: closeModal,\n      title: t('maintenanceEngine.actions.detailedView', {\n        defaultValue: 'Detailed view'\n      }),\n      width: '90%',\n      children: (\n        <Inquiry\n          treeId={params?.inquiryTreeId}\n          autoCollapseNav={true}\n          searchValue={modalConfig?.data?.[primaryKeyFieldName]}\n        />\n      )\n    },\n    {\n      open: openCompareDomainAuditsSidesheet,\n      onClose: () => {\n        setOpenCompareDomainAuditsSidesheet(false);\n      },\n      title: t('maintenanceEngine.sheet.compareAuditsTitle', {\n        defaultValue: 'Compare Audits'\n      }),\n      width: '500px',\n      children: (\n        <UdpCard>\n          {(selectedAuditEvent?.typeCode ===\n            AuditEventTypeEnums.Update_Domain ||\n            selectedAuditEvent?.typeCode ===\n              AuditEventTypeEnums.Delete_Domain) && (\n            <ReactJsonView\n              src={\n                selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                  ?.oldObj\n                  ? JSON.parse(\n                      selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                        ?.oldObj\n                    )\n                  : {}\n              }\n              name={t('auditEvents.sidesheet.oldDetails', {\n                defaultValue: 'Old Details'\n              })}\n              displayDataTypes={false}\n              displayObjectSize={false}\n              collapsed={true}\n            />\n          )}\n          {(selectedAuditEvent?.typeCode ===\n            AuditEventTypeEnums.Update_Domain ||\n            selectedAuditEvent?.typeCode ===\n              AuditEventTypeEnums.Create_Domain) && (\n            <ReactJsonView\n              src={\n                selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                  ?.newObj\n                  ? JSON.parse(\n                      selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                        ?.newObj\n                    )\n                  : {}\n              }\n              name={t('auditEvents.sidesheet.newDetails', {\n                defaultValue: 'New Details'\n              })}\n              displayDataTypes={false}\n              displayObjectSize={false}\n              collapsed={true}\n            />\n          )}\n          {selectedAuditEvent && (\n            <UdpList>\n              {getChangedFieldsandValues(\n                selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                  ?.oldObj,\n                selectedAuditEvent?.udpAuditEventUdpAuditEventDetail?.[0]\n                  ?.newObj\n              )?.map(({ field, previousValue, currentValue }) => {\n                return (\n                  <UdpListItem\n                    key={field}\n                    label={field}\n                    subtitle={t('maintenanceEngine.compareAudits.change', {\n                      defaultValue:\n                        'Old: {{previousValue}} New: {{currentValue}}',\n                      previousValue,\n                      currentValue\n                    })}\n                    value={field}\n                  />\n                );\n              })}\n            </UdpList>\n          )}\n        </UdpCard>\n      )\n    },\n    {\n      open: openAddViewNoteSidesheet,\n      onClose: () => handleCloseNotesSidesheet(),\n      title:\n        noteMode === 'ADD'\n          ? t('notes.addTitle', { defaultValue: 'Add Note' })\n          : t('notes.viewTitle', { defaultValue: 'View Note' }),\n      width: '500px',\n      children: (\n        <AddViewNote\n          entityBusinessKey={modalConfig?.data?.businessObjectKey}\n          closeSidesheet={() => {\n            handleCloseNotesSidesheet();\n          }}\n          mode={noteMode}\n          selectedNote={selectedNote}\n          setRefreshNotes={setRefreshNotes}\n        />\n      )\n    }\n  ];\n\n  return (\n    <>\n      {alertWarnings.map((warning) => (\n        <Alert\n          key={warning.id}\n          onClose={() => removeWarning(warning.id)}\n          severity='warning'\n        >\n          {warning.messageKey\n            ? t(warning.messageKey, {\n                defaultValue: warning.defaultValue,\n                ...warning.messageParams\n              })\n            : warning.message}\n        </Alert>\n      ))}\n      {lastModifiedAuditEvent && (\n        <UdpMessageBar slot='inline' intent='warning'>\n          <div slot='icon'>\n            <UdpFluentIcon name='clock' color='primary' size='xs' />\n          </div>\n          <UdpText variant='body2'>\n            {t('maintenanceEngine.messageBar.lastUpdated', {\n              defaultValue: 'Last Updated {{record}} on {{date}} by {{user}}',\n              record: lastModifiedAuditEvent?.entityBusinessKey,\n              date: formatDate(lastModifiedAuditEvent?.createdOn, 'dd/mm/yyyy'),\n              user: lastModifiedAuditEvent?.userDisplayName\n            })}\n          </UdpText>\n          <UdpButton\n            slot='actions'\n            variant='outlined'\n            size='small'\n            onClick={(e) => {\n              setSelectedAuditEvent(lastModifiedAuditEvent);\n              setOpenCompareDomainAuditsSidesheet(true);\n            }}\n          >\n            {t('maintenanceEngine.actions.moreDetails', {\n              defaultValue: 'More Details'\n            })}\n          </UdpButton>\n        </UdpMessageBar>\n      )}\n      <CrudBrowserContainer\n        actionList={actionList}\n        onCreate={() => openModal('create')}\n        entityAttributes={entityAttributes}\n        foreignKeyData={foreignKeyData}\n        promotedEntity={selectedEntity}\n        apiMethod={{ currentApiCatalogId, entityName }}\n        filterElements={searchFilterElements}\n        setAlertWarnings={setAlertWarnings}\n        gridApiCallback={handleGridApiCallback}\n        showBackToTableBrowser={showBackToTableBrowser}\n        gridTitle={entityUdpObjectInfo?.properties?.displayName}\n      />\n      {sidesheetList.map((sidesheet) => {\n        return modalConfig.type === 'inquiry' ? (\n          <SideSheet\n            key={sidesheet?.title}\n            open={sidesheet?.open}\n            onClose={sidesheet?.onClose}\n            title={sidesheet?.title}\n            width={sidesheet?.width}\n          >\n            {sidesheet?.children}\n          </SideSheet>\n        ) : (\n          <UdpDrawer\n            key={sidesheet?.title}\n            open={sidesheet?.open}\n            onDrawerClose={sidesheet?.onClose}\n            drawerTitle={sidesheet?.title}\n            drawerWidth={sidesheet?.width}\n          >\n            {sidesheet?.children}\n          </UdpDrawer>\n        );\n      })}\n      {/* <SideSheet\n        open={modalConfig.type === 'create' || modalConfig.type === 'edit'}\n        onClose={closeModal}\n        title={\n          modalConfig.type === 'create'\n            ? t('maintenanceEngine.sheet.addTitle', {\n                defaultValue: 'Add New {{name}}',\n                name:\n                  entityUdpObjectInfo?.properties?.displayName ||\n                  getSanitizedName(entityName)\n              })\n            : t('maintenanceEngine.sheet.editTitle', {\n                defaultValue: 'Edit {{name}}',\n                name:\n                  entityUdpObjectInfo?.properties?.displayName ||\n                  getSanitizedName(entityName)\n              })\n        }\n        width={600}\n      >\n        {(modalConfig.type === 'create' || modalConfig.type === 'edit') && (\n          <CrudTableSidePanel\n            entityAttributes={entityAttributes}\n            udpFieldInfos={udpFieldInfos}\n            foreignKeyData={foreignKeyData}\n            closeSideSheet={closeModal}\n            isNewEntry={modalConfig.type === 'create'}\n            entityName={entityName}\n            onCreate={\n              modalConfig.type === 'create' ? handleOnCreate : undefined\n            }\n            onUpdate={modalConfig.type === 'edit' ? handleOnUpdate : undefined}\n            crudTableEditionData={\n              modalConfig.type === 'edit' ? modalConfig.data : null\n            }\n            pageId={\n              modalConfig.type === 'edit'\n                ? selectedEntity?.unityBaseUpdateMethod?.pageId\n                : selectedEntity?.unityBaseCreateMethod?.pageId\n            }\n          />\n        )}\n      </SideSheet>\n      <SideSheet\n        open={modalConfig.type === 'inquiry'}\n        onClose={closeModal}\n        title={t('maintenanceEngine.actions.detailedView', { defaultValue: 'Detailed view' })}\n        width={'90%'}\n      >\n        <Inquiry\n          treeId={params?.inquiryTreeId}\n          autoCollapseNav={true}\n          searchValue={modalConfig?.data?.[primaryKeyFieldName]}\n        />\n      </SideSheet> */}\n      {/* <FluentDialog\n        open={modalConfig.type === 'delete'}\n        handleClose={closeModal}\n        title={t('common.delete', { defaultValue: 'Delete' })}\n        message={t('maintenanceEngine.deleteDialog.message', { defaultValue: 'Are you sure you want to delete this row?' })}\n        actionOne={closeModal}\n        labelOne={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={() => handleOnDelete(modalConfig.data)}\n        labelTwo={t('common.confirm', { defaultValue: 'Confirm' })}\n      /> */}\n      <UdpDialog\n        open={modalConfig.type === 'delete'}\n        dialogTitle={t('common.delete', { defaultValue: 'Delete' })}\n        onDialogClose={() => closeModal()}\n      >\n        <UdpText variant='body1'>\n          {t('maintenanceEngine.deleteDialog.message', {\n            defaultValue: 'Are you sure you want to delete this row?'\n          })}\n        </UdpText>\n        <UdpFluentButton\n          slot='action'\n          appearance='outline'\n          onClick={() => handleOnDelete(modalConfig.data)}\n        >\n          {t('common.delete', { defaultValue: 'Delete' })}\n        </UdpFluentButton>\n        <UdpFluentButton\n          slot='action'\n          appearance='primary'\n          onClick={() => closeModal()}\n        >\n          {t('common.cancel', { defaultValue: 'Cancel' })}\n        </UdpFluentButton>\n      </UdpDialog>\n    </>\n  );\n};\n\nexport default UdpMaintenanceEnginePage;\n"],"mappings":"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"}