amp-workflow-ui 0.1.16 → 0.1.18

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context.tsx","#style-inject:#style-inject","../src/ui/style.css","../src/common-component/index.css","../src/common-component/WorkflowButton.tsx","../src/ui/WorklfowTimeline.tsx","../src/ui/WorkflowRequestCard.tsx","../src/ui/dialogs/SendBackDialog.tsx","../src/ui/dialogs/ApproveDialog.tsx","../src/ui/dialogs/RejectDialog.tsx","../src/ui/dialogs/OnHoldDialog.tsx","../src/hooks/useDebounce.ts","../src/common-component/SearchBox.tsx","../src/common-component/FilterModal.tsx","../src/common-component/FilterButton.tsx","../src/ui/ApprovalWorkflow.tsx","../src/ui/DialogOpener.tsx","../src/index.tsx"],"names":["jsx","_a","statusList","jsxs","Box","Typography","Chip","React","index","_b","_c","_d","error","Fragment","Dialog","IconButton","CircularProgress","Button","useState","DialogTitle","HighlightOffIcon","DialogContent","Grid","TextField","DialogActions","Snackbar","Alert","useTheme","useMediaQuery","useEffect","InputAdornment","MenuItem","styled","Tooltip","theme","DialogOpener","ApprovalWorkflow"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { createContext, useContext } from 'react'\nimport type { WorkflowContextValue } from './types'\n\nconst WorkflowContext = createContext<WorkflowContextValue | null>(null)\n\nexport function WorkflowProvider({\n value,\n children\n}: {\n value: WorkflowContextValue\n children: React.ReactNode\n}) {\n return <WorkflowContext.Provider value={value}>{children}</WorkflowContext.Provider>\n}\n\nexport function useWorkflowContext(): WorkflowContextValue {\n const ctx = useContext(WorkflowContext)\n if (!ctx) {\n throw new Error('useWorkflowContext must be used within WorkflowProvider')\n }\n return ctx\n}\n\n\n","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".hide-scrollbar {\\n overflow: auto !important;\\n -ms-overflow-style: none !important;\\n scrollbar-width: none !important;\\n}\\n.hide-scrollbar::-webkit-scrollbar {\\n display: none !important;\\n}\\n.approval-card {\\n position: relative;\\n background-color: #f5f5f5;\\n border-radius: 8px;\\n width: 1069px;\\n min-height: 250px;\\n height: auto;\\n padding: 24px;\\n font-family:\\n \\\"Graphik Web\\\",\\n -apple-system,\\n BlinkMacSystemFont,\\n \\\"Segoe UI\\\",\\n sans-serif;\\n margin-bottom: 10px;\\n display: flex;\\n flex-direction: column;\\n}\\n.card-title {\\n color: #3f41d1;\\n font-size: 18px;\\n font-weight: 600;\\n text-decoration: underline;\\n text-transform: capitalize;\\n margin-top: -7px;\\n margin-bottom: 24px;\\n}\\n.vertical-divider {\\n position: absolute;\\n left: 884px;\\n top: 24px;\\n width: 1px;\\n height: 128px;\\n background-color: #d9d9d9;\\n}\\n.timer-container {\\n position: absolute;\\n left: 916px;\\n top: 24px;\\n width: 121px;\\n height: 121px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.timer-svg {\\n position: absolute;\\n width: 121px;\\n height: 121px;\\n}\\n.timer-content {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 4px;\\n z-index: 1;\\n}\\n.timer-time {\\n color: #3a9f4b;\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 16px;\\n letter-spacing: 0.5px;\\n}\\n.timer-time-expired {\\n color: #e6393e;\\n}\\n.timer-label {\\n color: #666;\\n font-size: 12px;\\n line-height: 16px;\\n}\\n.details-section {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n padding-right: 185px;\\n margin-bottom: 32px;\\n min-height: 80px;\\n}\\n.details-row {\\n display: flex;\\n gap: 64px;\\n}\\n.details-column {\\n display: flex;\\n flex-direction: column;\\n}\\n.detail-item {\\n color: #666;\\n font-size: 14px;\\n line-height: 21px;\\n text-transform: capitalize;\\n margin: 0;\\n}\\n.detail-label {\\n font-weight: 500;\\n}\\n.view-more-container {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n margin-top: 8px;\\n}\\n.view-more-button {\\n background-color: #f5f5f5;\\n border: 1px solid #e697ab;\\n border-radius: 8px;\\n padding: 4px 12px;\\n color: #3e3e3e;\\n font-size: 14px;\\n font-weight: 500;\\n text-transform: capitalize;\\n cursor: pointer;\\n line-height: 21px;\\n}\\n.expand-icon {\\n color: #666;\\n font-size: 18px;\\n transform: rotate(270deg);\\n}\\n.actions-container {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: 100%;\\n margin-bottom: 18px;\\n}\\n.progress-bar {\\n background-color: white;\\n border: 1px solid #3f41d1;\\n border-radius: 12px;\\n padding: 4px 14px 4px 5px;\\n display: flex;\\n align-items: center;\\n gap: 14px;\\n height: 40px;\\n}\\n.bus-icon {\\n width: 35px;\\n height: 29px;\\n}\\n.progress-steps {\\n display: flex;\\n align-items: center;\\n gap: 2px;\\n}\\n.step-icon {\\n width: 17px;\\n height: 17px;\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.step-completed {\\n background-color: #eaebfa;\\n}\\n.step-approved {\\n background-color: #3a9f4b;\\n}\\n.step-inactive {\\n background-color: #f6f6f6;\\n border: 1px solid #a3a3a3;\\n}\\n.step-line {\\n width: 33px;\\n height: 1px;\\n}\\n.step-line-completed {\\n background-color: #3a9f4b;\\n}\\n.step-line-inactive {\\n background-color: #e3e3e3;\\n}\\n.step-chip-current {\\n background-color: #bef2bf !important;\\n color: #3e3e3e !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n height: 29px !important;\\n border-radius: 14.5px !important;\\n text-transform: capitalize;\\n}\\n.step-chip-next {\\n background-color: #eff4f2 !important;\\n color: #3e3e3e !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n height: 29px !important;\\n border-radius: 14.5px !important;\\n text-transform: capitalize;\\n}\\n.vertical-separator {\\n width: 1px;\\n height: 29px;\\n background-color: #e3e3e3;\\n}\\n.assignee-text {\\n color: #666;\\n font-size: 14px;\\n line-height: 21px;\\n text-transform: capitalize;\\n}\\n.assignee-label {\\n font-weight: 500;\\n}\\n.action-buttons {\\n display: flex;\\n gap: 14px;\\n}\\n.btn-reject,\\n.btn-send-back {\\n border-color: #666 !important;\\n color: #666 !important;\\n border-radius: 100px !important;\\n text-transform: capitalize !important;\\n font-weight: 500 !important;\\n font-size: 14px !important;\\n height: 40px;\\n min-width: 106px;\\n}\\n.btn-approve {\\n background-color: #3f41d1 !important;\\n color: white !important;\\n border-radius: 100px !important;\\n text-transform: capitalize !important;\\n font-weight: 500 !important;\\n font-size: 14px !important;\\n height: 40px;\\n}\\n.btn-approve:hover {\\n background-color: #3436b0 !important;\\n}\\n.horizontal-divider {\\n width: 100%;\\n height: 1px;\\n background-color: #d9d9d9;\\n margin-bottom: 18px;\\n}\\n.timeline-container {\\n display: block;\\n}\\n.timeline-item {\\n width: 215px;\\n height: 157px;\\n position: relative;\\n}\\n.timeline-card {\\n position: absolute;\\n top: 16px;\\n width: 215px;\\n height: 141px;\\n background-color: white;\\n border-radius: 16px;\\n padding: 16px;\\n position: relative;\\n}\\n.timeline-card.active {\\n border: 1px solid #3f41d1;\\n}\\n.timeline-badge {\\n position: absolute !important;\\n top: -16px;\\n left: 8px;\\n width: 32px !important;\\n height: 32px !important;\\n border-radius: 50% !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n text-transform: capitalize !important;\\n border: 3px solid #f6f6f6;\\n}\\n.badge-l0 {\\n background-color: #eaebfa !important;\\n color: #3f41d1 !important;\\n}\\n.badge-l1-bg {\\n background-color: #fbcecf !important;\\n color: #3e3e3e !important;\\n}\\n.badge-l1-approved {\\n background-color: #3a9f4b !important;\\n color: white !important;\\n}\\n.badge-l1-rejected {\\n background-color: #e6393e !important;\\n color: white !important;\\n}\\n.badge-l1-sendback {\\n background-color: #dcecf9 !important;\\n color: #237ecd !important;\\n}\\n.badge-l2-active {\\n background-color: #f4f0ef !important;\\n color: #3e3e3e !important;\\n border: 1px solid #3f41d1 !important;\\n}\\n.timeline-badge-wrapper {\\n position: absolute;\\n top: -16px;\\n left: 8px;\\n width: 32px;\\n height: 32px;\\n}\\n.timeline-badge-wrapper .timeline-badge {\\n position: absolute !important;\\n top: 0;\\n left: 0;\\n}\\n.timeline-badge-wrapper-active {\\n position: absolute;\\n top: -20px;\\n left: 4px;\\n width: 38px;\\n height: 38px;\\n}\\n.timeline-badge-wrapper-active .timeline-badge {\\n position: absolute !important;\\n top: 3px;\\n left: 3px;\\n}\\n.timeline-type {\\n color: #666;\\n font-size: 12px;\\n line-height: 13px;\\n text-transform: capitalize;\\n margin-top: 12px;\\n margin-bottom: 8px;\\n}\\n.timeline-type.approved {\\n color: #3a9f4b;\\n font-weight: 600;\\n}\\n.timeline-type.rejected {\\n color: #e6393e;\\n font-weight: 600;\\n}\\n.timeline-type.sendback {\\n color: #237ecd;\\n font-weight: 600;\\n}\\n.timeline-name {\\n color: #3e3e3e;\\n font-size: 14px;\\n font-weight: 500;\\n line-height: 21px;\\n margin-bottom: 8px;\\n text-transform: capitalize;\\n}\\n.timeline-message {\\n color: #666;\\n font-size: 12px;\\n line-height: 13px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin-bottom: 24px;\\n}\\n.attachments {\\n color: #0612fb;\\n font-size: 12px;\\n line-height: 13px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin-bottom: 24px;\\n cursor: pointer;\\n}\\n.timeline-date {\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n color: #666;\\n font-size: 12px;\\n line-height: 14px;\\n text-align: right;\\n text-transform: capitalize;\\n}\\n.timeline-connector {\\n width: 45px;\\n height: 157px;\\n flex-shrink: 0;\\n}\\n.timeline-connector svg {\\n width: 100%;\\n height: 100%;\\n}\\n@media (max-width: 1200px) {\\n .approval-card {\\n width: 100%;\\n height: auto;\\n min-height: 437px;\\n }\\n}\\n.flag {\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 3px 4px;\\n border: 2px solid #b28900;\\n border-radius: 5px;\\n color: #b28900;\\n font-size: 12px;\\n}\\n\")","import styleInject from '#style-inject';styleInject(\".workflow-btn {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center;\\n padding: 10px 24px;\\n gap: 8px;\\n height: 40px;\\n border-radius: 100px;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Graphik Web\\\", sans-serif;\\n font-style: normal;\\n font-weight: 500;\\n font-size: 14px;\\n line-height: 14px;\\n text-align: center;\\n text-transform: capitalize;\\n background: transparent;\\n outline: none;\\n}\\n.workflow-btn.variant-reject,\\n.workflow-btn.variant-send-back {\\n background: #FFFFFF;\\n border: 1px solid #666666;\\n color: #666666;\\n}\\n.workflow-btn.variant-approve {\\n background: #3F41D1;\\n color: #FFFFFF;\\n}\\n.workflow-btn.variant-status-approved {\\n background: #3A9F4B;\\n color: #CDF3E2;\\n}\\n.workflow-btn.variant-status-sent-back {\\n background: #237ECD;\\n color: #DCECF9;\\n}\\n.workflow-btn.variant-status-rejected {\\n background: #FAD7D8;\\n color: #E6393E;\\n}\\n\")","import React from \"react\";\r\nimport \"./index.css\";\r\n\r\nexport type WorkflowButtonVariant =\r\n | \"reject\"\r\n | \"send-back\"\r\n | \"approve\"\r\n | \"approved\"\r\n | \"pending\"\r\n | \"status-sent-back\"\r\n | \"rejected\";\r\n\r\nexport interface WorkflowButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant: WorkflowButtonVariant;\r\n label?: string;\r\n}\r\n\r\nconst variantClassMap: Record<WorkflowButtonVariant, string> = {\r\n reject: \"variant-reject\",\r\n \"send-back\": \"variant-send-back\",\r\n approve: \"variant-approve\",\r\n approved: \"variant-status-approved\",\r\n \"status-sent-back\": \"variant-status-sent-back\",\r\n pending: \"variant-status-sent-back\",\r\n rejected: \"variant-status-rejected\",\r\n};\r\n\r\nexport const WorkflowButton: React.FC<WorkflowButtonProps> = ({\r\n variant,\r\n label,\r\n className = \"\",\r\n children,\r\n ...props\r\n}) => {\r\n const variantClass = variantClassMap[variant];\r\n\r\n return (\r\n <button className={`workflow-btn ${variantClass} ${className}`} {...props}>\r\n {label || children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default WorkflowButton;\r\n","import \"./style.css\";\r\nimport { Box, Chip, Typography } from \"@mui/material\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport { useWorkflowContext } from \"src/context\";\r\n\r\n/* ============================================================\r\n CONNECTOR CONFIG\r\n ============================================================ */\r\nconst CONNECTOR = {\r\n horizontal: {\r\n thickness: 3,\r\n lengthExtra: 0,\r\n offsetReverseExtra: 0, // Set to 0 if we want perfectly centered, or keep 30 if we want the \"snake\" offset look\r\n color: \"#2C35FF\", // Keeping the color from CustomTimeline logic\r\n },\r\n vertical: {\r\n thickness: 3,\r\n height: 80, // Increased height to cover gap\r\n color: \"#2C35FF\",\r\n },\r\n};\r\n\r\n/* ============================================================ */\r\n\r\nconst CARD_WIDTH = 215; // Matched to style.css .timeline-item width\r\nconst CARD_HEIGHT = 157; // Matched to style.css .timeline-item height\r\nconst GAP = 45;\r\nconst ROW_GAP = 45; // Approximate gap between rows\r\n\r\n/* ============================================================\r\n MAIN COMPONENT\r\n ============================================================ */\r\n\r\nexport default function WorkFlowTimeline({ events }: any) {\r\n const { api } = useWorkflowContext();\r\n\r\n /* Snake layout logic */\r\n const computeColumn = (index: number) => {\r\n const row = Math.floor(index / 4);\r\n const pos = index % 4;\r\n return row % 2 === 0 ? pos : 3 - pos;\r\n };\r\n\r\n const hasNextCard = (i: number) => i + 1 < events.length;\r\n\r\n const getHorizontalY = (rowIndex: number) => {\r\n // Center of the physical content area roughly\r\n // Card height in CSS is 141 (timeline-card) inside 157 (timeline-item)\r\n // Top is 16px. So center is 16 + 141/2 = 16 + 70.5 = 86.5\r\n const centerY = 86.5;\r\n return centerY;\r\n };\r\n\r\n const isVerticalNeeded = (index: number) =>\r\n (index + 1) % 4 === 0 && hasNextCard(index);\r\n\r\n const handleAttachmentClick = (attachment: any) => {\r\n api\r\n .get({\r\n url: `/workflow/uploaded-document-url/${\r\n attachment.split(\"/\").reverse()[0]\r\n }`,\r\n serviceURL: \"api\",\r\n })\r\n .then((res) => {\r\n window.open(res.data, \"_blank\");\r\n });\r\n };\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", overflowX: \"auto\", p: 1 }}>\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n display: \"grid\",\r\n gridTemplateColumns: `repeat(4, ${CARD_WIDTH}px)`,\r\n columnGap: `${GAP}px`,\r\n rowGap: `${ROW_GAP}px`,\r\n width: \"max-content\",\r\n }}\r\n >\r\n {events?.map((item: any, index: number) => {\r\n const row = Math.floor(index / 4);\r\n const col = computeColumn(index);\r\n const isLastInRow = index % 4 === 3;\r\n\r\n return (\r\n <Box\r\n key={index}\r\n sx={{\r\n gridColumn: col + 1,\r\n gridRow: row + 1,\r\n position: \"relative\",\r\n width: `${CARD_WIDTH}px`,\r\n height: `${CARD_HEIGHT}px`,\r\n }}\r\n >\r\n {/* ----------------------------\r\n HORIZONTAL CONNECTOR\r\n ----------------------------- */}\r\n {!isLastInRow && hasNextCard(index) && (\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: getHorizontalY(row),\r\n // If row is Even (LTR), connector goes to RIGHT.\r\n // If row is Odd (RTL), connector goes to LEFT.\r\n left: row % 2 === 0 ? \"100%\" : \"auto\",\r\n right: row % 2 !== 0 ? \"100%\" : \"auto\",\r\n width: GAP + CONNECTOR.horizontal.lengthExtra,\r\n zIndex: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n transform: row % 2 !== 0 ? \"scaleX(-1)\" : \"none\", // Flip for RTL if needed, though line is symmetric\r\n }}\r\n >\r\n {/* Using SVG to match original WorkFlowTimeline style as requested \"perfect styles\" */}\r\n <svg\r\n width=\"65\"\r\n height=\"3\"\r\n viewBox=\"0 0 65 3\"\r\n fill=\"none\"\r\n style={{ width: \"100%\" }}\r\n >\r\n <line\r\n x1=\"0\"\r\n y1=\"1.5\"\r\n x2=\"65\"\r\n y2=\"1.5\"\r\n stroke=\"#3F41D1\"\r\n strokeWidth=\"1\"\r\n strokeDasharray=\"6 6\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n </Box>\r\n )}\r\n\r\n {/* ----------------------------\r\n VERTICAL CONNECTOR\r\n ----------------------------- */}\r\n {isVerticalNeeded(index) && (\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"100%\", // Start at bottom of item\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: CONNECTOR.vertical.thickness,\r\n height: ROW_GAP, // Span the row gap\r\n zIndex: 0,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Vertical SVG Line */}\r\n <svg width=\"3\" height={70} viewBox={`0 0 3 70`} fill=\"none\">\r\n <line\r\n x1=\"1.5\"\r\n y1=\"0\"\r\n x2=\"1.5\"\r\n y2={70}\r\n stroke=\"#3F41D1\"\r\n strokeWidth=\"1\"\r\n strokeDasharray=\"6 6\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n </Box>\r\n )}\r\n\r\n {/* ----------------------------\r\n CARD CONTENT (Original Style)\r\n ----------------------------- */}\r\n <Box\r\n className=\"timeline-item\"\r\n sx={{ width: \"100%\", height: \"100%\" }}\r\n >\r\n <Box\r\n className={`timeline-card ${\r\n events.length - 1 === index ? \"active\" : \"\"\r\n }`}\r\n >\r\n <Chip label=\"\" className=\"timeline-badge badge-l0\" />\r\n\r\n <Chip\r\n label={item?.count}\r\n className={`timeline-badge badge-l1-${\r\n item?.type == \"approve\"\r\n ? \"approved\"\r\n : item?.type == \"reject\"\r\n ? \"rejected\"\r\n : item?.type == \"send_back\"\r\n ? \"sendback\"\r\n : \"\"\r\n }`}\r\n sx={{\r\n \"& .MuiChip-label\": {\r\n padding: \"0px\",\r\n },\r\n }}\r\n />\r\n\r\n <Typography\r\n className={`timeline-type ${\r\n item?.type == \"approve\"\r\n ? \"approved\"\r\n : item?.type == \"reject\"\r\n ? \"rejected\"\r\n : item?.type == \"send_back\"\r\n ? \"sendback\"\r\n : \"\"\r\n }`}\r\n >\r\n {item?.status}\r\n </Typography>\r\n <Typography className=\"timeline-name\">\r\n {item?.name}\r\n </Typography>\r\n <Typography className=\"timeline-message\">\r\n {item?.subTitle}\r\n </Typography>\r\n {item?.attachment && (\r\n <Typography\r\n className=\"attachments\"\r\n onClick={() => handleAttachmentClick(item?.attachment)}\r\n >\r\n Attachments\r\n </Typography>\r\n )}\r\n <Typography className=\"timeline-date\">\r\n {item?.date} {item?.time}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Box,\r\n Typography,\r\n Tooltip,\r\n IconButton,\r\n Button,\r\n Chip,\r\n CircularProgress,\r\n} from \"@mui/material\";\r\nimport { CheckCircleOutlineOutlined } from \"@mui/icons-material\";\r\nimport moment from \"moment\";\r\nimport WorkflowButton from \"src/common-component/WorkflowButton\";\r\nimport WorkFlowTimeline from \"./WorklfowTimeline\";\r\nimport ActionMenu from \"./Statusselector\"; // Ensure correct import path or usage\r\n\r\n// Props Interface\r\ninterface WorkflowRequestCardProps {\r\n requestDetails: any; // Renamed from info\r\n index: number;\r\n isLast: boolean;\r\n lastCardRef: any;\r\n expandedId: string | null;\r\n handleExpandClick: (id: string) => void;\r\n handleOpenViewMore: (details: any) => void;\r\n handleApprove: (id: string) => void;\r\n handleReject: (id: string) => void;\r\n handleSendBack: (id: string) => void;\r\n handleOnHold?: (id: string) => void; // Optional if not always used\r\n expandedDetails: any[];\r\n userInfo: any;\r\n helpers: {\r\n timeLeftDHm: (date: string) => string;\r\n getStatus: (status: string) => any;\r\n buildRedirectionUrl: (info: any) => string;\r\n };\r\n}\r\n\r\nexport default function WorkflowRequestCard({\r\n requestDetails,\r\n index,\r\n isLast,\r\n lastCardRef,\r\n expandedId,\r\n handleExpandClick,\r\n handleOpenViewMore,\r\n handleApprove,\r\n handleReject,\r\n handleSendBack,\r\n handleOnHold,\r\n expandedDetails,\r\n userInfo,\r\n helpers,\r\n}: WorkflowRequestCardProps) {\r\n const { timeLeftDHm, getStatus, buildRedirectionUrl } = helpers;\r\n\r\n const allCurrentAssignees = requestDetails?.levels?.map(\r\n (level: any) => level?.assign_to_name?.[0]\r\n );\r\n\r\n const allCurrentEscalatedAssignees = requestDetails?.levels?.map(\r\n (level: any) =>\r\n timeLeftDHm(level?.tat_expiry) === \"0d: 0h: 0m\"\r\n ? level?.escalate_assign_to_name?.[0]\r\n : \"\"\r\n );\r\n\r\n const allAssignees = [\r\n ...new Set([...allCurrentAssignees, ...allCurrentEscalatedAssignees]),\r\n ].filter((item) => item);\r\n console.log(\"🚀 ~ WorkflowRequestCard ~ allAssignees:\", allAssignees);\r\n\r\n // Logic Extraction\r\n const currentLevel = requestDetails?.levels?.find(\r\n (level_: any) => level_.id === requestDetails?.current_level\r\n );\r\n\r\n const currentlyAssignedUserArray = currentLevel?.assign_to_name || [];\r\n const currentlyEscaltedUserArray =\r\n currentLevel?.escalate_assign_to_name || [];\r\n\r\n const currentlyAssignedUser = currentLevel?.assign_to_name\r\n ? currentLevel?.assign_to_name[0]\r\n : \"NA\";\r\n const currentlyEscalatedUser = currentLevel?.escalate_assign_to_name\r\n ? currentLevel?.escalate_assign_to_name[0]\r\n : \"NA\";\r\n console.log(\r\n \"🚀 ~ WorkflowRequestCard ~ currentlyEscalatedUser:\",\r\n currentLevel?.escalate_assign_to_name\r\n );\r\n\r\n const extraCurrentlyAssignedUserCount = currentlyAssignedUserArray.length - 1;\r\n const extraCurrentlyEscalatedUserCount =\r\n currentlyEscaltedUserArray.length - 1;\r\n\r\n const statusList = currentLevel ? currentLevel.status_list : [];\r\n\r\n const filterRejectForLevelZero = (statusList: any[], info: any) => {\r\n if (!info?.isLevelZero) return statusList;\r\n return statusList?.filter((item) => item.status !== 3);\r\n };\r\n\r\n const redirectionUrl = buildRedirectionUrl(requestDetails); // Renamed from redir\r\n\r\n const currentStatus =\r\n requestDetails?.levels?.find(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n )?.selected_status?.status_id === 1\r\n ? \"approved\"\r\n : requestDetails?.levels?.find(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n )?.selected_status?.status_id === 3\r\n ? \"rejected\"\r\n : \"pending\";\r\n\r\n const statusData = getStatus(currentStatus);\r\n\r\n const descriptionDetails =\r\n requestDetails?.template_variables?.description_variables;\r\n\r\n const formatKey = (key: string) =>\r\n key.replace(/_/g, \" \").replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n\r\n const displayEntries = descriptionDetails\r\n ? Object.entries(descriptionDetails).filter(\r\n ([, value]) => typeof value === \"string\" || typeof value === \"number\"\r\n )\r\n : [];\r\n\r\n const userLevel = requestDetails?.isLevelZero\r\n ? \"L0\"\r\n : \"L\" +\r\n ((requestDetails?.levels?.findIndex(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n ) ?? -1) + 1 || \"\");\r\n\r\n const tatExpired = timeLeftDHm(currentLevel?.tat_expiry) === \"0d: 0h: 0m\";\r\n\r\n // Render\r\n return (\r\n <Box\r\n className={\"approval-card\"}\r\n key={index}\r\n ref={isLast ? lastCardRef : null}\r\n >\r\n {requestDetails?.is_parallel && (\r\n <span className=\"flag\">Parallel Workflow</span>\r\n )}\r\n {/* Header */}\r\n <Typography className=\"card-title\">\r\n <a href={redirectionUrl} target=\"_blank\" rel=\"noreferrer\">\r\n {requestDetails.activity_name}\r\n </a>\r\n </Typography>\r\n\r\n {/* Vertical Divider */}\r\n <div className=\"vertical-divider\"></div>\r\n\r\n {/* Timer Section */}\r\n <Box className=\"timer-container\">\r\n <Box className=\"timer-content\">\r\n <Typography\r\n className={`${\r\n timeLeftDHm(currentLevel?.tat_expiry) === \"0d: 0h: 0m\"\r\n ? \"timer-time-expired\"\r\n : \"timer-time\"\r\n }`}\r\n >\r\n {currentLevel?.tat_expiry\r\n ? timeLeftDHm(currentLevel.tat_expiry)\r\n : \"N/A\"}\r\n </Typography>\r\n <Typography className=\"timer-label\">Time Left</Typography>\r\n </Box>\r\n </Box>\r\n\r\n {/* Bus Details Section */}\r\n <Box className=\"details-section\">\r\n <Box className=\"details-row\">\r\n <Box className=\"details-column\">\r\n {displayEntries.slice(0, 3).map((entry: any, i: number) => (\r\n <Typography key={i} className=\"detail-item\">\r\n <span style={{ fontWeight: \"bold\" }} className=\"detail-label\">\r\n {formatKey(entry[0])}:\r\n </span>{\" \"}\r\n {entry[1]}\r\n </Typography>\r\n ))}\r\n </Box>\r\n <Box className=\"details-column\">\r\n {displayEntries.slice(3, 6).map((entry: any, i: number) => (\r\n <Typography key={i} className=\"detail-item\">\r\n <span style={{ fontWeight: \"bold\" }} className=\"detail-label\">\r\n {formatKey(entry[0])}:\r\n </span>{\" \"}\r\n {entry[1]}\r\n </Typography>\r\n ))}\r\n </Box>\r\n </Box>\r\n\r\n {/* View More Button */}\r\n <Box className=\"view-more-container\">\r\n {displayEntries.length > 0 && (\r\n <button\r\n className=\"view-more-button\"\r\n onClick={() => handleOpenViewMore(displayEntries)}\r\n >\r\n View More\r\n </button>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {/* Progress Bar and Actions */}\r\n <Box className=\"actions-container\">\r\n {/* Step Progress Bar - Keeping logic same as previous component */}\r\n <Box className=\"progress-bar\">\r\n <IconButton\r\n color=\"primary\"\r\n onClick={() => handleExpandClick(requestDetails._id)}\r\n >\r\n {expandedId === requestDetails._id ? (\r\n <span className=\"icon-arrow-down-1\"></span>\r\n ) : (\r\n <span className=\"icon-arrow-right-3\"></span>\r\n )}\r\n </IconButton>\r\n\r\n <Box className=\"progress-steps\">\r\n {userLevel == \"L0\" ? (\r\n <>\r\n <Chip label={\"L0\"} className=\"step-chip-current\" />\r\n <div className=\"step-line step-line-inactive\"></div>\r\n </>\r\n ) : (\r\n <>\r\n <Box className=\"step-icon step-completed\">\r\n <CheckCircleOutlineOutlined\r\n sx={{ fontSize: 14, color: \"#3F41D1\" }}\r\n />\r\n </Box>\r\n <div className=\"step-line step-line-inactive\"></div>\r\n </>\r\n )}\r\n {requestDetails?.levels?.map((_: any, idx: number) => {\r\n const level = idx + 1;\r\n return (\r\n <React.Fragment key={idx}>\r\n {userLevel == \"L\" + level ? (\r\n <>\r\n <Chip label={\"L\" + level} className=\"step-chip-current\" />\r\n {requestDetails?.levels.length !== level && (\r\n <div className=\"step-line step-line-inactive\"></div>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n {level > +userLevel.split(\"\")[1] ? (\r\n // <Box className=\"step-icon step-inactive\"></Box>\r\n <Chip label={\"L\" + level} className=\"step-chip-next\" />\r\n ) : (\r\n <Box className=\"step-icon step-completed\">\r\n <CheckCircleOutlineOutlined\r\n sx={{ fontSize: 14, color: \"#3F41D1\" }}\r\n />\r\n </Box>\r\n )}\r\n {requestDetails?.levels.length !== level && (\r\n <div className=\"step-line step-line-inactive\"></div>\r\n )}\r\n </>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </Box>\r\n\r\n <div className=\"vertical-separator\"></div>\r\n\r\n {requestDetails?.is_parallel ? (\r\n <>\r\n {allAssignees.length > 1 ? (\r\n <Tooltip\r\n title={\r\n <Box\r\n sx={{\r\n backgroundColor: \"#fff\",\r\n padding: \"10px\",\r\n borderRadius: \"5px\",\r\n }}\r\n >\r\n {allAssignees.map((user: any, index: number) => (\r\n <Typography\r\n className=\"assignee-text\"\r\n key={index}\r\n variant=\"body2\"\r\n >\r\n {user}\r\n </Typography>\r\n ))}\r\n </Box>\r\n }\r\n arrow\r\n placement=\"top\"\r\n >\r\n <Typography\r\n className=\"assignee-text\"\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <span className=\"assignee-label\">\r\n {\"Current Assignee:\"}\r\n </span>{\" \"}\r\n {allAssignees.length > 0\r\n ? `${allAssignees[0]} +${allAssignees.length - 1}`\r\n : allAssignees[0]}\r\n </Typography>\r\n </Tooltip>\r\n ) : (\r\n <Typography\r\n className=\"assignee-text\"\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <span className=\"assignee-label\">{\"Current Assignee:\"}</span>{\" \"}\r\n {allAssignees[0]}\r\n </Typography>\r\n )}\r\n </>\r\n ) : extraCurrentlyAssignedUserCount > 0 ||\r\n (tatExpired && extraCurrentlyEscalatedUserCount > 0) ? (\r\n <Tooltip\r\n title={\r\n <Box\r\n sx={{\r\n backgroundColor: \"#fff\",\r\n padding: \"10px\",\r\n borderRadius: \"5px\",\r\n }}\r\n >\r\n {(tatExpired\r\n ? currentlyEscaltedUserArray\r\n : currentlyAssignedUserArray\r\n ).map((user: any, index: number) => (\r\n <Typography\r\n className=\"assignee-text\"\r\n key={index}\r\n variant=\"body2\"\r\n >\r\n {user}\r\n </Typography>\r\n ))}\r\n </Box>\r\n }\r\n arrow\r\n placement=\"top\"\r\n >\r\n <Typography className=\"assignee-text\" sx={{ cursor: \"pointer\" }}>\r\n <span className=\"assignee-label\">\r\n {tatExpired ? \"Escalated To:\" : \"Current Assignee:\"}\r\n </span>{\" \"}\r\n {(tatExpired\r\n ? extraCurrentlyEscalatedUserCount\r\n : extraCurrentlyAssignedUserCount) > 0\r\n ? `${\r\n tatExpired\r\n ? currentlyEscalatedUser\r\n : currentlyAssignedUser\r\n } +${\r\n tatExpired\r\n ? extraCurrentlyEscalatedUserCount\r\n : extraCurrentlyAssignedUserCount\r\n }`\r\n : tatExpired\r\n ? currentlyEscalatedUser\r\n : currentlyAssignedUser}\r\n </Typography>\r\n </Tooltip>\r\n ) : (\r\n <Typography className=\"assignee-text\" sx={{ cursor: \"pointer\" }}>\r\n <span className=\"assignee-label\">\r\n {tatExpired ? \"Escalated To:\" : \"Current Assignee:\"}\r\n </span>{\" \"}\r\n {tatExpired ? currentlyEscalatedUser : currentlyAssignedUser}\r\n </Typography>\r\n )}\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n {requestDetails?.current_status !== \"completed\" ? (\r\n <Box className=\"action-buttons\">\r\n {filterRejectForLevelZero(statusList, requestDetails).find(\r\n (list: any) => list.status == 3\r\n ) && (\r\n <Button\r\n variant=\"outlined\"\r\n className=\"btn-reject\"\r\n onClick={() =>\r\n handleReject(\r\n `${requestDetails?._id}|${\r\n statusList.find((i: any) => i.status == 3)?.id\r\n }|${requestDetails?.reasons}`\r\n )\r\n }\r\n >\r\n Reject\r\n </Button>\r\n )}\r\n\r\n {!requestDetails?.isLevelZero && (\r\n <Button\r\n variant=\"outlined\"\r\n className=\"btn-send-back\"\r\n onClick={() => handleSendBack(requestDetails._id)}\r\n >\r\n Send Back\r\n </Button>\r\n )}\r\n {filterRejectForLevelZero(statusList, requestDetails).find(\r\n (list: any) => list.status == 1\r\n ) && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"btn-approve\"\r\n onClick={() =>\r\n handleApprove(\r\n `${requestDetails?._id}|${\r\n statusList.find((i: any) => i.status == 1)?.id\r\n }`\r\n )\r\n }\r\n >\r\n Approve\r\n </Button>\r\n )}\r\n {/* Added OnHold if handleOnHold provided, based on original ActionMenu usage but simplified to Buttons as per user's latest edit */}\r\n </Box>\r\n ) : (\r\n <WorkflowButton\r\n variant={\r\n (currentStatus === \"approved\"\r\n ? \"approved\"\r\n : currentStatus === \"rejected\"\r\n ? \"rejected\"\r\n : \"pending\") as any\r\n }\r\n className=\"dialog-close-btn\"\r\n >\r\n {currentStatus.toLocaleLowerCase()}\r\n </WorkflowButton>\r\n )}\r\n </Box>\r\n\r\n {/* Expanded Timeline */}\r\n {expandedId === requestDetails._id && (\r\n <>\r\n <div className=\"horizontal-divider\"></div>\r\n\r\n <WorkFlowTimeline\r\n events={expandedDetails?.map((item: any) => ({\r\n date: moment(item?.created_at).format(\"DD-MM-YYYY\"),\r\n time: moment(item?.created_at).format(\"HH:mm\"),\r\n name:\r\n item?.type === \"create\"\r\n ? item?.created_by_user?.full_name\r\n : item?.created_by_user?.full_name || \"N/A\",\r\n subTitle: item?.comment_reasons?.comment || \"No Comments\",\r\n attachment: item?.comment_reasons?.file || null,\r\n count:\r\n item?.current_level == \"L0\" ? \"L0\" : item?.current_level_count,\r\n status:\r\n item?.type === \"approve\"\r\n ? \"Approved by\"\r\n : item?.type === \"reject\"\r\n ? \"Rejected by\"\r\n : item?.type === \"send_back\"\r\n ? \"Send Back\"\r\n : item?.type === \"onhold\"\r\n ? \"On Hold\"\r\n : \"Created by\",\r\n type: item?.type,\r\n }))}\r\n />\r\n </>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","import React, { useRef, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n InputAdornment,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n};\n\nfunction SendBackDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const [comment, setComment] = useState(\"\");\n const [selectedFile, setSelectedFile] = useState<string | null>(null);\n const [fileName, setFileName] = useState<string>(\"\");\n const [error, setError] = useState<{ comment?: string; file?: string }>({});\n const [loading, setLoading] = useState(false);\n const [fileLoading, setFileLoading] = useState(false);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n\n // ✅ Snackbar state for messages\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const handleAttachment = () => fileInputRef.current?.click();\n\n const handleUpload = async (file: File) => {\n setFileLoading(true);\n const formData = new FormData();\n formData.append(\"file\", file);\n try {\n const response = await api.post({\n url: \"/workflow/upload-document\",\n data: formData,\n serviceURL: \"api\",\n headers: { \"Content-Type\": \"multipart/form-data\" },\n });\n setFileName(response.data.file);\n setSelectedFile(response.data.file);\n setSnackbar({\n open: true,\n message: \"File uploaded successfully!\",\n severity: \"success\",\n });\n } catch (error: any) {\n setSnackbar({\n open: true,\n message: \"File upload failed.\",\n severity: \"error\",\n });\n } finally {\n setFileLoading(false);\n }\n };\n\n const handleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n if (event.target.files && event.target.files.length > 0) {\n const file = event.target.files[0];\n await handleUpload(file);\n setError((prev) => ({ ...prev, file: \"\" }));\n } else {\n setSelectedFile(null);\n setFileName(\"\");\n }\n };\n\n const validateFields = () => {\n let isValid = true;\n const errors = { comment: \"\", file: \"\" };\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n try {\n const res = await api.post({\n url: `/workflow/send-back/${workflowLogId}`,\n data: {\n comment,\n file: selectedFile,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n if (res?.status === 200) {\n setSnackbar({\n open: true,\n message: \"Workflow sent back successfully!\",\n severity: \"success\",\n });\n } else {\n setSnackbar({\n open: true,\n message:\n (res as any)?.error?.message || \"Something went wrong. Try again.\",\n severity: \"error\",\n });\n }\n } catch (e: any) {\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Oops! Something went wrong.\",\n severity: \"error\",\n });\n } finally {\n // ✅ Reset fields after success\n setComment(\"\");\n setSelectedFile(null);\n setFileName(\"\");\n setLoading(false);\n closeModal && closeModal();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n type=\"text\"\n fullWidth\n label=\"Attachment\"\n placeholder=\"Attachment\"\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {fileLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <span\n className=\"icon-export-1\"\n style={{ cursor: \"pointer\" }}\n onClick={handleAttachment}\n ></span>\n )}\n </InputAdornment>\n ),\n }}\n onClick={handleAttachment}\n value={fileName}\n error={!!error.file}\n helperText={error.file}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading || fileLoading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* ✅ Snackbar Popup for messages */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default SendBackDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n};\n\nfunction ApproveDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState<{ comment?: string }>({});\n const [loading, setLoading] = useState(false);\n\n // Snackbar state\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const validateFields = () => {\n let isValid = true;\n const newError: { comment?: string } = {};\n\n if (!comment) {\n newError.comment = \"Please provide a comment\";\n isValid = false;\n }\n\n setError(newError);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n\n setLoading(true);\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // SUCCESS SNACKBAR\n setSnackbar({\n open: true,\n message: \"Approved successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n // ERROR SNACKBAR\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Something unexpected occurred!\",\n severity: \"error\",\n });\n } finally {\n setComment(\"\"); // reset comment\n setLoading(false);\n closeModal && closeModal();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* Snackbar */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default ApproveDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n FormControl,\n Grid,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n Typography,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n rejection_reason_master: string;\n};\n\nfunction RejectDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n rejection_reason_master,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n const DownArrow = () => (\n <span\n style={{ color: theme.palette.customColors?.mainText || \"#333\" }}\n className=\"icon-arrow-down-1\"\n ></span>\n );\n\n const [rejectReasons, setRejectReasons] = useState<string>(\"\");\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState({ reason: \"\", comment: \"\" });\n const [statusApplicableList, setStatusApplicableList] = useState<any>([]);\n const [loading, setLoading] = useState(false);\n\n // ✅ Snackbar state\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n useEffect(() => {\n (async () => {\n try {\n if (!statusApplicableList.length) {\n const res = await api.get({\n url: `/workflow/applicableStatuses?type=${rejection_reason_master}`,\n serviceURL: \"api\",\n });\n setStatusApplicableList(res?.data?.data || []);\n }\n } catch (e) {\n setSnackbar({\n open: true,\n message: \"Failed to load reject reasons.\",\n severity: \"error\",\n });\n }\n })();\n }, [rejection_reason_master]);\n\n const validateFields = () => {\n let isValid = true;\n const errors = { reason: \"\", comment: \"\" };\n if (!rejectReasons) {\n errors.reason = \"Please select a reject reason\";\n isValid = false;\n }\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n reason: rejectReasons,\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // ✅ Success snackbar\n setSnackbar({\n open: true,\n message: \"Rejected successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n const message = e?.response?.data?.message || \"Something went wrong!\";\n console.error(\"❌ Reject Error:\", message);\n setSnackbar({\n open: true,\n message,\n severity: \"error\",\n });\n } finally {\n // ✅ Reset fields\n setComment(\"\");\n setRejectReasons(\"\");\n setLoading(false);\n closeModal && closeModal();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <FormControl fullWidth required error={!!error.reason}>\n <InputLabel required id=\"reject-reason-label\">\n Reject Reasons\n </InputLabel>\n <Select\n IconComponent={DownArrow as any}\n label=\"Reject Reasons\"\n value={rejectReasons}\n id=\"reject-reason\"\n labelId=\"reject-reason-label\"\n onChange={(e) => setRejectReasons(e.target.value as string)}\n >\n {statusApplicableList?.map((reason_: any) => (\n <MenuItem key={reason_?.id} value={reason_?.id}>\n {reason_?.name}\n </MenuItem>\n ))}\n </Select>\n {error.reason && (\n <Typography variant=\"caption\" color=\"error\">\n {error.reason}\n </Typography>\n )}\n </FormControl>\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* ✅ Snackbar for messages */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default RejectDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n};\n\nfunction OnHoldDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState({ comment: \"\" });\n const [loading, setLoading] = useState(false);\n\n // Snackbar State\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const validateFields = () => {\n let isValid = true;\n const errors = { comment: \"\" };\n\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // Show success\n setSnackbar({\n open: true,\n message: \"Moved to On-Hold successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n // Show error\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Failed to submit the form\",\n severity: \"error\",\n });\n } finally {\n setComment(\"\"); // reset comment\n closeModal && closeModal();\n setLoading(false);\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n {/* Header */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n {/* Body */}\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n {/* Actions */}\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* Snackbar */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default OnHoldDialog;\n","import { useEffect, useState } from \"react\";\r\n\r\nconst useDebounce = (value: string, delay: number): string => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const timeoutId = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [value, delay]);\r\n\r\n return debouncedValue;\r\n};\r\n\r\nexport default useDebounce;\r\n","import React from \"react\";\r\nimport { Box, IconButton, InputAdornment, TextField } from \"@mui/material\";\r\n\r\ntype SearchBoxType = {\r\n placeHolderTitle: string;\r\n searchText: string;\r\n handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n handleClearSearch: () => void;\r\n};\r\n\r\nconst SearchBox = ({\r\n placeHolderTitle,\r\n searchText,\r\n handleClearSearch,\r\n handleInputChange,\r\n}: SearchBoxType) => {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <TextField\r\n size=\"small\"\r\n variant=\"outlined\"\r\n value={searchText}\r\n onChange={handleInputChange}\r\n placeholder={placeHolderTitle}\r\n autoComplete=\"off\"\r\n className=\"custom-search\"\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <span className=\"icon-search-normal-1\"></span>\r\n </InputAdornment>\r\n ),\r\n endAdornment: searchText ? (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n disableFocusRipple\r\n disableRipple\r\n disableTouchRipple\r\n onClick={handleClearSearch}\r\n >\r\n <span className=\"icon-close-circle\"></span>\r\n </IconButton>\r\n </InputAdornment>\r\n ) : null,\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default SearchBox;\r\n","import { useState, useEffect } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n TextField,\r\n MenuItem,\r\n Box,\r\n Typography,\r\n IconButton,\r\n} from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport { useWorkflowContext } from \"../context\";\r\n\r\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\r\n \"& .MuiDialog-paper\": {\r\n borderRadius: \"16px\",\r\n boxShadow: \"0px 2px 16px 0px rgba(0,0,0,0.16)\",\r\n padding: \"24px\",\r\n maxWidth: \"640px\",\r\n width: \"100%\",\r\n },\r\n}));\r\n\r\nconst FilterSection = styled(Box)({\r\n border: \"1px solid rgba(146,144,144,0.3)\",\r\n borderRadius: \"12px\",\r\n padding: \"18px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"22px\",\r\n});\r\n\r\nconst StyledTextField = styled(TextField)({\r\n \"& .MuiOutlinedInput-root\": {\r\n borderRadius: \"4px\",\r\n \"& fieldset\": {\r\n borderColor: \"#a3a3a3\",\r\n },\r\n },\r\n \"& .MuiInputLabel-root\": {\r\n fontSize: \"12px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Regular\", sans-serif',\r\n },\r\n \"& .MuiSelect-select\": {\r\n fontSize: \"16px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Regular\", sans-serif',\r\n textTransform: \"capitalize\",\r\n },\r\n \"& .MuiSelect-icon\": {\r\n color: \"#666\",\r\n },\r\n});\r\n\r\ninterface FilterModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n initialFilters?: any;\r\n onApply?: (filters: any) => void;\r\n}\r\n\r\nexport function FilterModal({\r\n open,\r\n onClose,\r\n initialFilters,\r\n onApply,\r\n}: FilterModalProps) {\r\n const { api } = useWorkflowContext();\r\n const [approvalType, setApprovalType] = useState(\r\n initialFilters?.approvalType || \"\"\r\n );\r\n const [approvalStatus, setApprovalStatus] = useState(\r\n initialFilters?.approvalStatus || \"\"\r\n );\r\n const [sortBy, setSortBy] = useState(initialFilters?.sortBy || \"\");\r\n const [approvalTypeOptions, setApprovalTypeOptions] = useState<any[]>([]);\r\n\r\n // Fetch approval types from API\r\n useEffect(() => {\r\n api\r\n .get({ url: \"/workflow/activities?page=1&size=1000\", serviceURL: \"api\" })\r\n .then((res: any) => {\r\n console.log(\"🚀 ~ FilterModal ~ res:\", res);\r\n setApprovalTypeOptions(res?.data?.data || []);\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Failed to fetch approval types:\", err);\r\n });\r\n }, [api]);\r\n\r\n // Reset state when opening with new filters\r\n useEffect(() => {\r\n if (open) {\r\n setApprovalType(initialFilters?.approvalType || \"\");\r\n setApprovalStatus(initialFilters?.approvalStatus || \"\");\r\n setSortBy(initialFilters?.sortBy || \"\");\r\n }\r\n }, [open, initialFilters]);\r\n\r\n const handleReset = () => {\r\n setApprovalType(\"Bus Approval\");\r\n setApprovalStatus(\"Approved\");\r\n setSortBy(\"Expiring Soon\");\r\n };\r\n\r\n const handleClear = () => {\r\n setApprovalType(\"\");\r\n setApprovalStatus(\"\");\r\n setSortBy(\"\");\r\n };\r\n\r\n const handleApply = () => {\r\n if (onApply) {\r\n onApply({ approvalType, approvalStatus, sortBy });\r\n }\r\n onClose();\r\n };\r\n\r\n return (\r\n <StyledDialog open={open} onClose={onClose}>\r\n <Box>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n mb: 3,\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n fontSize: \"20px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n Filter\r\n </Typography>\r\n <Box sx={{ display: \"flex\", gap: \"12px\" }}>\r\n {/* <Button\r\n onClick={handleReset}\r\n sx={{\r\n color: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Reset Filter\r\n </Button> */}\r\n <Button\r\n onClick={handleClear}\r\n sx={{\r\n color: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Clear Filter\r\n </Button>\r\n </Box>\r\n </Box>\r\n\r\n {/* Filter Sections */}\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: \"24px\" }}>\r\n {/* First Section - Approval Type & Status */}\r\n <FilterSection>\r\n <StyledTextField\r\n select\r\n label=\"Approval Type\"\r\n value={approvalType}\r\n onChange={(e) => setApprovalType(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n {approvalTypeOptions.length &&\r\n approvalTypeOptions?.map((option: any) => (\r\n <MenuItem key={option.id} value={option.id}>\r\n {option.activity_name}\r\n </MenuItem>\r\n ))}\r\n </StyledTextField>\r\n\r\n {/* <StyledTextField\r\n select\r\n label=\"Approval Status\"\r\n value={approvalStatus}\r\n onChange={(e) => setApprovalStatus(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n <MenuItem value=\"Approved\">Approved</MenuItem>\r\n <MenuItem value=\"Pending\">Pending</MenuItem>\r\n <MenuItem value=\"Rejected\">Rejected</MenuItem>\r\n </StyledTextField> */}\r\n </FilterSection>\r\n\r\n {/* Second Section - Sort By */}\r\n <FilterSection>\r\n <StyledTextField\r\n select\r\n label=\"Sort By\"\r\n value={sortBy}\r\n onChange={(e) => setSortBy(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n <MenuItem value=\"asc\">Ascending</MenuItem>\r\n <MenuItem value=\"desc\">Descending</MenuItem>\r\n </StyledTextField>\r\n </FilterSection>\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n gap: \"10px\",\r\n mt: 3,\r\n pt: \"10px\",\r\n }}\r\n >\r\n <Button\r\n onClick={onClose}\r\n variant=\"outlined\"\r\n sx={{\r\n color: \"#666\",\r\n borderColor: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n px: \"24px\",\r\n \"&:hover\": {\r\n borderColor: \"#666\",\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n sx={{\r\n backgroundColor: \"#3f41d1\",\r\n color: \"white\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n px: \"24px\",\r\n \"&:hover\": {\r\n backgroundColor: \"#2f31b1\",\r\n },\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n </Box>\r\n </Box>\r\n </StyledDialog>\r\n );\r\n}\r\n","import { Button } from \"@mui/material\";\r\nimport { FilterAlt } from \"@mui/icons-material\";\r\n\r\nexport default function FilterButton({ onClick }: { onClick: () => void }) {\r\n return (\r\n <Button\r\n onClick={onClick}\r\n variant=\"contained\"\r\n startIcon={<FilterAlt sx={{ fontSize: \"18px\" }} />}\r\n sx={{\r\n backgroundColor: \"#f4f0ef\",\r\n color: \"#666\",\r\n fontFamily: \"Poppins, sans-serif\",\r\n fontWeight: 500,\r\n fontSize: \"14px\",\r\n letterSpacing: \"0.1px\",\r\n textTransform: \"none\",\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n paddingLeft: \"16px\",\r\n paddingRight: \"24px\",\r\n paddingTop: \"10px\",\r\n paddingBottom: \"10px\",\r\n gap: \"8px\",\r\n boxShadow: \"none\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ebe7e6\",\r\n boxShadow: \"none\",\r\n },\r\n \"&:active\": {\r\n boxShadow: \"none\",\r\n },\r\n }}\r\n >\r\n Filter\r\n </Button>\r\n );\r\n}\r\n","import \"./style.css\";\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n Chip,\r\n CircularProgress,\r\n Divider,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n styled,\r\n useTheme,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n} from \"@mui/material\";\r\nimport WorkflowRequestCard from \"./WorkflowRequestCard\";\r\nimport { Box } from \"@mui/system\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport React, { useCallback, useEffect, useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport { useWorkflowContext } from \"../context\";\r\nimport type { ApprovalWorkflowProps } from \"../types\";\r\nimport ActionMenu from \"./Statusselector\";\r\nimport SendBackDialog from \"./dialogs/SendBackDialog\";\r\nimport ApproveDialog from \"./dialogs/ApproveDialog\";\r\nimport RejectDialog from \"./dialogs/RejectDialog\";\r\nimport OnHoldDialog from \"./dialogs/OnHoldDialog\";\r\nimport CustomTimelineWithStatus from \"./CustomTimeLineWithStatus\";\r\nimport useDebounce from \"src/hooks/useDebounce\";\r\nimport SearchBox from \"src/common-component/SearchBox\";\r\nimport { CheckCircleOutlineOutlined } from \"@mui/icons-material\";\r\nimport WorkFlowTimeline from \"./WorklfowTimeline\";\r\nimport WorkflowButton from \"src/common-component/WorkflowButton\";\r\nimport { FilterModal } from \"src/common-component/FilterModal\";\r\nimport FilterButton from \"src/common-component/FilterButton\";\r\n\r\nconst StyledChipProps = styled(Chip)(({ theme }) => ({\r\n \"&.MuiChip-colorPrimary\": {\r\n border: `1px solid ${theme.palette.primary.dark}`,\r\n borderRadius: \"8px\",\r\n height: \"36px\",\r\n padding: \"6px 4px\",\r\n background: `${\"rgba(25,118,210,0.1)\"}`,\r\n color: `${theme.palette.primary.dark}`,\r\n width: \"170px\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n \"&.MuiChip-colorDefault\": {\r\n border: `1px solid ${theme.palette.grey[300]} !important`,\r\n borderRadius: \"8px\",\r\n height: \"36px\",\r\n padding: \"6px 4px\",\r\n background: \"none !important\",\r\n color: `${\r\n (theme as any).palette?.customColors?.mainText ??\r\n theme.palette.text.primary\r\n } `,\r\n width: \"170px\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n}));\r\n\r\nexport function ApprovalWorkflow({\r\n selectedWorkflowsList = [],\r\n userInfo,\r\n}: ApprovalWorkflowProps) {\r\n const theme = useTheme();\r\n const { api, urlBuilder, loadingComponent, ENV_VARIABLES } =\r\n useWorkflowContext();\r\n\r\n const [selectedOption, setSelectedOption] = useState<string>(\r\n selectedWorkflowsList.length ? \"selected\" : \"Assign To Me\"\r\n );\r\n const [expandedId, setExpandedId] = useState<string | null>(null);\r\n const [sendDialog, setSendDialog] = React.useState<string | null>(null);\r\n const [approveTarget, setApproveTarget] = React.useState<any>(null);\r\n const [rejectTarget, setRejectTarget] = React.useState<any>(null);\r\n const [onHoldTarget, setOnHoldTarget] = React.useState<any>(null);\r\n const [expandedDetails, setExpandedDetails] = useState<any>([]);\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ expandedDetails:\", expandedDetails);\r\n const [descriptionView, setDescriptionView] = useState<any>(null);\r\n const [urlConfig, setUrlConfig] = useState<any>({});\r\n\r\n const [viewMoreDetails, setViewMoreDetails] = useState<any>(null);\r\n const [isViewMoreOpen, setIsViewMoreOpen] = useState(false);\r\n const [isFilterOpen, setIsFilterOpen] = useState(false);\r\n\r\n const handleOpenViewMore = (details: any) => {\r\n setViewMoreDetails(details);\r\n setIsViewMoreOpen(true);\r\n };\r\n\r\n const handleCloseViewMore = () => {\r\n setIsViewMoreOpen(false);\r\n setViewMoreDetails(null);\r\n };\r\n\r\n // Tabs State\r\n const [tabs, setTabs] = useState<any>({\r\n \"Assign To Me\": {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n \"All Requests\": {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n Completed: {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n selected: {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n });\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ tabs:\", tabs);\r\n\r\n // Search code start\r\n const [searchText, setSearchText] = useState(\"\");\r\n const debouncedSearchTerm = useDebounce(searchText, 500);\r\n\r\n // Sync searchText when switching tabs\r\n useEffect(() => {\r\n setSearchText(tabs[selectedOption]?.search || \"\");\r\n }, [selectedOption]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Trigger search update in tabs state\r\n useEffect(() => {\r\n if (debouncedSearchTerm !== tabs[selectedOption].search) {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n search: debouncedSearchTerm,\r\n page: 1,\r\n hasMore: true,\r\n data: [], // Clear data on new search\r\n },\r\n }));\r\n // Trigger API call with new search term\r\n if (tabs[selectedOption]?.initialized) {\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n debouncedSearchTerm,\r\n tabs[selectedOption]?.filters\r\n );\r\n }\r\n }\r\n }, [debouncedSearchTerm, selectedOption]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Search code start\r\n const handleClearSearch = useCallback(() => {\r\n setSearchText(\"\");\r\n }, []);\r\n\r\n const handleSearchChange = useCallback((value: string) => {\r\n setSearchText(value);\r\n }, []);\r\n\r\n // Infinite scroll observer\r\n const observer = React.useRef<IntersectionObserver | null>(null);\r\n\r\n const lastCardRef = useCallback(\r\n (node: any) => {\r\n const currentTab = tabs[selectedOption];\r\n if (currentTab?.loading || !currentTab?.hasMore) return;\r\n if (observer.current) observer.current.disconnect();\r\n\r\n observer.current = new IntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n page: prev[selectedOption].page + 1,\r\n },\r\n }));\r\n }\r\n });\r\n\r\n if (node) observer.current.observe(node);\r\n },\r\n [tabs, selectedOption]\r\n );\r\n\r\n const handleSendBack = (workflowLogId: string) => {\r\n setSendDialog(workflowLogId);\r\n };\r\n\r\n const handleApprove = (workflowLogId: any) => {\r\n setApproveTarget(workflowLogId);\r\n };\r\n\r\n const handleReject = (workflowLogId: string) => {\r\n setRejectTarget(workflowLogId);\r\n };\r\n\r\n const handleOnHold = (workflowLogId: string) => {\r\n setOnHoldTarget(workflowLogId);\r\n };\r\n\r\n const handleApplyFilter = (filters: any) => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n filters: filters,\r\n page: 1,\r\n hasMore: true,\r\n data: [],\r\n },\r\n }));\r\n setIsFilterOpen(false);\r\n fetchData(selectedOption, 1, tabs[selectedOption].search, filters);\r\n };\r\n\r\n const fetchData = useCallback(\r\n (tab: string, page: number, search: string, filtersOverride?: any) => {\r\n if (!userInfo?.userInfo?.id) return;\r\n\r\n const currentFilters = filtersOverride || tabs[tab]?.filters;\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ currentFilters:\", currentFilters);\r\n let filterQuery = \"\";\r\n if (currentFilters) {\r\n if (currentFilters.approvalType)\r\n filterQuery += `&activityId=${encodeURIComponent(\r\n currentFilters.approvalType\r\n )}`;\r\n if (currentFilters.approvalStatus)\r\n filterQuery += `&approval_status=${encodeURIComponent(\r\n currentFilters.approvalStatus\r\n )}`;\r\n if (currentFilters.sortBy)\r\n filterQuery += `&tat=${encodeURIComponent(currentFilters.sortBy)}`;\r\n }\r\n\r\n let url = \"\";\r\n const query = `paginate=${true}&page=${page}&size=10&search=${encodeURIComponent(\r\n search\r\n )}${filterQuery}`;\r\n\r\n if (tab === \"Assign To Me\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}&type=pending`;\r\n } else if (tab === \"All Requests\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}`;\r\n } else if (tab === \"Completed\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}&type=completed`;\r\n } else if (tab === \"selected\") {\r\n // Handle selected if needed, otherwise skip or implement bulk details logic\r\n if (selectedWorkflowsList.length && !tabs[\"selected\"].initialized) {\r\n api\r\n .post({\r\n url: `/workflow/bulk-details`,\r\n serviceURL: \"api\",\r\n data: { workflowIds: selectedWorkflowsList },\r\n })\r\n .then((res) => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n selected: {\r\n ...prev.selected,\r\n data: res?.data || [],\r\n loading: false,\r\n initialized: true,\r\n hasMore: false, // No pagination for selected for now\r\n },\r\n }));\r\n });\r\n }\r\n return;\r\n }\r\n\r\n if (!url) return;\r\n\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: { ...prev[tab], loading: true },\r\n }));\r\n\r\n api\r\n .get({ url, serviceURL: \"api\" })\r\n .then((res: any) => {\r\n const newItems = res?.data?.activities || [];\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: {\r\n ...prev[tab],\r\n data: page === 1 ? newItems : [...prev[tab].data, ...newItems],\r\n count: res?.data?.totalCount,\r\n loading: false,\r\n hasMore: newItems.length === 10,\r\n initialized: true,\r\n },\r\n }));\r\n })\r\n .catch(() => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: { ...prev[tab], loading: false },\r\n }));\r\n });\r\n },\r\n [api, userInfo, selectedWorkflowsList, tabs]\r\n );\r\n\r\n const handleProfileToggle = (option: string) => {\r\n setSelectedOption(option);\r\n // Fetch if not initialized and not 'selected' (handled separately or via same logic)\r\n // Note: 'selected' is special case in original code too.\r\n if (!tabs[option]?.initialized) {\r\n fetchData(option, 1, tabs[option]?.search || \"\");\r\n }\r\n };\r\n\r\n const handleExpandClick = (id: string | null) => {\r\n setExpandedId((prevId) => (prevId === id ? null : id));\r\n fetchExpandedActivityLogs(id);\r\n };\r\n\r\n const getStatus = (status: string) => {\r\n switch (status.toLowerCase()) {\r\n case \"approved\":\r\n return {\r\n title: \"Approved\",\r\n color: \"#e6f7e9\",\r\n labelColor: \"#389e49\",\r\n };\r\n\r\n case \"rejected\":\r\n return {\r\n title: \"Rejected\",\r\n color: \"#fff1f0\",\r\n labelColor: \"#f5222d\",\r\n };\r\n\r\n case \"onhold\":\r\n return {\r\n title: \"On Hold\",\r\n color: \"#fff7e6\",\r\n labelColor: \"#faad14\",\r\n };\r\n\r\n case \"sendback\":\r\n return {\r\n title: \"Send Back\",\r\n color: \"#e6f7ff\",\r\n labelColor: \"#1890ff\",\r\n };\r\n\r\n case \"completed\":\r\n return {\r\n title: \"Send Back\",\r\n color: \"#e6f7ff\",\r\n labelColor: \"#1890ff\",\r\n };\r\n\r\n case \"pending\":\r\n return {\r\n title: \"Pending\",\r\n color: \"#f0f0f0\",\r\n labelColor: \"#595959\",\r\n };\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const approvalChipLabel = [\r\n {\r\n label: \"Assign To Me\",\r\n icon: <span className=\"icon-document-forward\"></span>,\r\n count: tabs[\"Assign To Me\"]?.count || 0,\r\n },\r\n {\r\n label: \"All Requests\",\r\n icon: <span className=\"icon-document-copy\"></span>,\r\n count: tabs[\"All Requests\"]?.count || 0,\r\n },\r\n {\r\n label: \"Completed\",\r\n icon: <span className=\"icon-tick-circle\"></span>,\r\n count: tabs[\"Completed\"]?.count || 0,\r\n },\r\n ];\r\n\r\n const fetchExpandedActivityLogs = (workflowLogId: string) => {\r\n setExpandedDetails([]);\r\n api\r\n .get({\r\n url: `/workflow/workflow-activity-logs/${workflowLogId}`,\r\n serviceURL: \"api\",\r\n })\r\n .then((res) => setExpandedDetails(res?.data));\r\n };\r\n\r\n // Effects\r\n // Initial fetch for all tabs on mount to show counts\r\n useEffect(() => {\r\n if (userInfo?.userInfo?.id) {\r\n // Fetch data for all tabs on initial load\r\n const tabsToFetch = [\"Assign To Me\", \"All Requests\", \"Completed\"];\r\n tabsToFetch.forEach((tab) => {\r\n if (!tabs[tab]?.initialized) {\r\n fetchData(tab, 1, \"\");\r\n }\r\n });\r\n }\r\n }, [userInfo]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Pagination Effect\r\n useEffect(() => {\r\n const tabState = tabs[selectedOption];\r\n if (tabState?.page > 1) {\r\n fetchData(selectedOption, tabState.page, tabState.search);\r\n }\r\n }, [tabs[selectedOption]?.page]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n if (\r\n Object.keys(urlConfig).length > 0 &&\r\n userInfo &&\r\n !tabs[\"Assign To Me\"].initialized\r\n ) {\r\n // Fetch generic or specific logic if needed on URL config load\r\n // But we already have the main useEffect triggering fetch.\r\n // Assuming this was for module specific urls which might be needed for rendering.\r\n // If we want to re-fetch or ensure fetch:\r\n fetchData(\"Assign To Me\", 1, tabs[\"Assign To Me\"]?.search || \"\");\r\n }\r\n }, [urlConfig, userInfo]);\r\n\r\n const buildRedirectionUrl = (info: any) => {\r\n const { module_name, module_id, reference_id, redirection_link } = info;\r\n\r\n // Direct URL override\r\n if (redirection_link) return redirection_link;\r\n\r\n // Handle known module types\r\n if (module_name === \"route_approval\") {\r\n return `${ENV_VARIABLES?.TRANSPORT_URL}route-listing/view/${reference_id}`;\r\n } else if (module_name === \"update_bus_details_approval\") {\r\n return `${ENV_VARIABLES?.TRANSPORT_URL}bus-listing/view/${reference_id}`;\r\n } else if (module_name === \"kit_handover_approve\") {\r\n return `${ENV_VARIABLES?.FINANCE_URL}fee-collection/?reference_id=${reference_id}&module_name=${module_name}&module_id=${module_id}`;\r\n }\r\n\r\n // Generic fallback — uses urlConfig and optional urlBuilder\r\n if (urlBuilder) {\r\n return urlBuilder(module_name, module_id, urlConfig, reference_id);\r\n }\r\n\r\n const ref = urlConfig?.[module_name];\r\n if (ref?.base_variable && ref?.sub_url) {\r\n const BASE_ENV_VARIABLE =\r\n ENV_VARIABLES[\r\n ref?.base_variable.split(\"_\")[3] +\r\n \"_\" +\r\n ref?.base_variable.split(\"_\")[4]\r\n ];\r\n const qs = new URLSearchParams();\r\n if (reference_id) qs.set(\"reference_id\", String(reference_id));\r\n if (module_name) qs.set(\"module_name\", String(module_name));\r\n if (module_id) qs.set(\"module_id\", String(module_id));\r\n return `${BASE_ENV_VARIABLE}${ref.sub_url}?${qs.toString()}`;\r\n }\r\n\r\n return \"#\";\r\n };\r\n\r\n function timeLeftDHm(targetISO: string) {\r\n const diff = new Date(targetISO).getTime() - Date.now();\r\n if (diff <= 0) return \"0d: 0h: 0m\";\r\n\r\n const totalMinutes = Math.floor(diff / 60000);\r\n\r\n const d = Math.floor(totalMinutes / 1440);\r\n const h = Math.floor((totalMinutes % 1440) / 60);\r\n const m = totalMinutes % 60;\r\n\r\n return `${d}d: ${h}h: ${m}m`;\r\n }\r\n\r\n if (\r\n tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page === 1 &&\r\n loadingComponent\r\n )\r\n return <>{loadingComponent}</>;\r\n console.info(\"LIBRARY RUNNING...\");\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flexWrap: \"nowrap\",\r\n // width:\"1100px\",height:\"90%\",\r\n overflow: \"hidden !important\",\r\n }}\r\n >\r\n <Box\r\n sx={{ width: \"100%\", height: \"100%\", overflow: \"hidden !important\" }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n }}\r\n >\r\n <Box>\r\n {selectedWorkflowsList?.length ? (\r\n <Tooltip title=\"Selected Workflows\">\r\n <StyledChipProps\r\n label={\"Selected\"}\r\n icon={<span className=\"icon-eye\"></span>}\r\n color={\r\n selectedOption?.includes(\"selected\")\r\n ? \"primary\"\r\n : \"default\"\r\n }\r\n variant=\"filled\"\r\n sx={{\r\n mr: 4,\r\n mb: 4,\r\n \"& .MuiChip-icon\": { fontSize: \"18px !important\" },\r\n }}\r\n onClick={() => handleProfileToggle(\"selected\")}\r\n />\r\n </Tooltip>\r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {approvalChipLabel.map(({ label, icon, count }, index) => (\r\n <Tooltip key={index} title={`${count} ${label}`}>\r\n <StyledChipProps\r\n label={`${count} ${label}`}\r\n icon={icon}\r\n color={\r\n selectedOption?.includes(label) ? \"primary\" : \"default\"\r\n }\r\n variant=\"filled\"\r\n sx={{\r\n mr: 4,\r\n mb: 4,\r\n \"& .MuiChip-icon\": { fontSize: \"18px !important\" },\r\n }}\r\n onClick={() => handleProfileToggle(label)}\r\n />\r\n </Tooltip>\r\n ))}\r\n </Box>\r\n <div style={{ display: \"flex\" }}>\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n maxWidth: 295,\r\n ml: \"auto\",\r\n mr: \"10px\",\r\n }}\r\n >\r\n <SearchBox\r\n placeHolderTitle=\"Search\"\r\n searchText={searchText}\r\n handleClearSearch={handleClearSearch}\r\n handleInputChange={(e) => handleSearchChange(e.target.value)}\r\n />\r\n </Box>\r\n <FilterButton onClick={() => setIsFilterOpen((prev) => !prev)} />\r\n </div>\r\n </Box>\r\n\r\n {/* Unified List Rendering */}\r\n <Box\r\n className=\"fixedModal hide-scrollbar\"\r\n sx={{\r\n overflowY: \"auto\",\r\n height: \"calc(100vh - 180px)\",\r\n px: 2,\r\n pb: 3,\r\n }}\r\n >\r\n {tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page === 1 ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n p: 4,\r\n width: \"1100px\",\r\n }}\r\n >\r\n <CircularProgress />\r\n </Box>\r\n ) : tabs[selectedOption]?.data?.length > 0 ? (\r\n tabs[selectedOption].data.map((info: any, index: number) => (\r\n <WorkflowRequestCard\r\n key={index}\r\n requestDetails={info}\r\n index={index}\r\n isLast={index === tabs[selectedOption].data.length - 1}\r\n lastCardRef={lastCardRef}\r\n expandedId={expandedId}\r\n handleExpandClick={handleExpandClick}\r\n handleOpenViewMore={handleOpenViewMore}\r\n handleApprove={handleApprove}\r\n handleReject={handleReject}\r\n handleSendBack={handleSendBack}\r\n handleOnHold={handleOnHold}\r\n expandedDetails={expandedDetails}\r\n userInfo={userInfo}\r\n helpers={{\r\n timeLeftDHm,\r\n getStatus,\r\n buildRedirectionUrl,\r\n }}\r\n />\r\n ))\r\n ) : (\r\n <div\r\n style={{\r\n height: \"100%\",\r\n width: \"1100px\",\r\n color: \"gray\",\r\n fontSize: \"20px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n NO RECORD FOUND\r\n </div>\r\n )}\r\n {tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page > 1 && (\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", p: 2 }}>\r\n <CircularProgress size={24} />\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n {/* Dialogs */}\r\n <SendBackDialog\r\n openModal={!!sendDialog}\r\n closeModal={() => setSendDialog(null)}\r\n header=\"Send Back\"\r\n workflowLogId={sendDialog || \"\"}\r\n />\r\n <ApproveDialog\r\n openModal={!!approveTarget}\r\n closeModal={() => setApproveTarget(null)}\r\n header=\"Approve\"\r\n workflowLogId={approveTarget?.split(\"|\")?.[0]}\r\n statusId={approveTarget?.split(\"|\")?.[1]}\r\n />\r\n <RejectDialog\r\n openModal={!!rejectTarget}\r\n closeModal={() => setRejectTarget(null)}\r\n header=\"Reject\"\r\n workflowLogId={rejectTarget?.split(\"|\")?.[0]}\r\n statusId={rejectTarget?.split(\"|\")?.[1]}\r\n rejection_reason_master={rejectTarget?.split(\"|\")?.[2]}\r\n />\r\n <OnHoldDialog\r\n openModal={!!onHoldTarget}\r\n closeModal={() => setOnHoldTarget(null)}\r\n header=\"On Hold\"\r\n workflowLogId={onHoldTarget?.split(\"|\")?.[0]}\r\n statusId={onHoldTarget?.split(\"|\")?.[1]}\r\n />\r\n <Dialog\r\n open={isViewMoreOpen}\r\n onClose={handleCloseViewMore}\r\n maxWidth=\"sm\"\r\n fullWidth\r\n PaperProps={{\r\n sx: {\r\n borderRadius: \"16px\",\r\n padding: \"10px\",\r\n position: \"relative\", // For absolute close button\r\n },\r\n }}\r\n >\r\n <DialogTitle\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n paddingBottom: \"10px\",\r\n }}\r\n >\r\n <Typography variant=\"h6\" sx={{ fontWeight: 600 }}>\r\n Description Details\r\n </Typography>\r\n <IconButton\r\n onClick={handleCloseViewMore}\r\n sx={{\r\n position: \"absolute\",\r\n right: 8,\r\n top: 8,\r\n color: (theme) => theme.palette.grey[500],\r\n }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers sx={{ borderTop: \"none\" }}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\r\n {viewMoreDetails?.map((data: any, idx: number) => (\r\n <Typography\r\n key={idx}\r\n className=\"detail-item\"\r\n sx={{ fontSize: \"14px\" }}\r\n >\r\n <span style={{ fontWeight: \"bold\", color: \"#666\" }}>\r\n {data[0]\r\n .replace(/_/g, \" \")\r\n .replace(/\\b\\w/g, (c: any) => c.toUpperCase())}\r\n :\r\n </span>{\" \"}\r\n <span style={{ color: \"#000\" }}>{data[1]}</span>\r\n </Typography>\r\n ))}\r\n\r\n {/* <Box\r\n sx={{ marginTop: 2, paddingTop: 2, borderTop: \"1px solid #eee\" }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#3F41D1\",\r\n cursor: \"pointer\",\r\n fontWeight: 600,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"underline\",\r\n }}\r\n >\r\n View Attachment\r\n </Typography>\r\n </Box> */}\r\n </Box>\r\n </DialogContent>\r\n </Dialog>\r\n <FilterModal\r\n open={isFilterOpen}\r\n onClose={() => setIsFilterOpen(false)}\r\n initialFilters={tabs[selectedOption]?.filters}\r\n onApply={handleApplyFilter}\r\n />\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport { DialogTitle, IconButton } from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { ApprovalWorkflow } from \"./ApprovalWorkflow\";\nimport type { DialogOpenerProps } from \"../types\";\nimport WorkflowButton from \"../common-component/WorkflowButton\";\n\nexport function DialogOpener({\n openDialog,\n handleClose,\n userInfoData,\n selectedWorkflowsList = [],\n}: DialogOpenerProps) {\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n const [screenWidth, setScreenWidth] = useState<number>(\n typeof window !== \"undefined\" ? window.innerWidth : 0\n );\n console.log(\"Dialog opener props\", {\n openDialog,\n handleClose,\n userInfoData,\n selectedWorkflowsList,\n });\n useEffect(() => {\n const updateScreenWidth = () => setScreenWidth(window.innerWidth);\n window.addEventListener(\"resize\", updateScreenWidth);\n return () => window.removeEventListener(\"resize\", updateScreenWidth);\n }, []);\n\n return (\n <>\n <Dialog\n fullScreen={false}\n open={openDialog}\n onClose={() => handleClose && handleClose()}\n aria-labelledby=\"responsive-dialog-title\"\n maxWidth=\"lg\"\n sx={{\n \"& .MuiDialog-container\": {\n justifyContent: \"flex-end\",\n alignItems: \"flex-start\",\n },\n \"& .MuiDialog-paper\": {\n position: \"fixed\",\n right: 0,\n top: 0,\n height: \"100vh\",\n maxHeight: \"100vh\",\n margin: 0,\n borderRadius: 0,\n },\n }}\n >\n <DialogTitle>\n Workflow\n <IconButton\n onClick={handleClose}\n disableFocusRipple\n disableRipple\n sx={{ float: \"right\" }}\n >\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n overflow: \"hidden\",\n width: \"100%\",\n height: \"100%\",\n padding: \"0 20px\",\n }}\n >\n <ApprovalWorkflow\n userInfo={userInfoData}\n selectedWorkflowsList={selectedWorkflowsList}\n />\n </DialogContent>\n <DialogActions>\n <WorkflowButton\n variant=\"approve\"\n onClick={handleClose}\n className=\"dialog-close-btn\"\n >\n Close\n </WorkflowButton>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n","import React from \"react\";\r\nimport { WorkflowProvider } from \"./context\";\r\nimport type {\r\n ApiClient,\r\n UrlBuilder,\r\n DialogOpenerProps,\r\n ApprovalWorkflowProps,\r\n} from \"./types\";\r\nimport { DialogOpener as InternalDialogOpener } from \"./ui/DialogOpener\";\r\nimport { ApprovalWorkflow as InternalApprovalWorkflow } from \"./ui/ApprovalWorkflow\";\r\n\r\nexport type { ApiClient, UrlBuilder, DialogOpenerProps, ApprovalWorkflowProps };\r\n\r\nexport function DialogOpener(\r\n props: DialogOpenerProps & {\r\n api: ApiClient;\r\n urlBuilder?: UrlBuilder;\r\n loadingComponent?: React.ReactNode;\r\n ENV_VARIABLES?: any;\r\n }\r\n) {\r\n const {\r\n api,\r\n urlBuilder,\r\n loadingComponent,\r\n userInfoData,\r\n ENV_VARIABLES,\r\n ...rest\r\n } = props;\r\n return (\r\n <WorkflowProvider\r\n value={{\r\n api,\r\n urlBuilder,\r\n userInfo: userInfoData,\r\n loadingComponent,\r\n ENV_VARIABLES,\r\n }}\r\n >\r\n <InternalDialogOpener {...rest} userInfoData={userInfoData} />\r\n </WorkflowProvider>\r\n );\r\n}\r\n\r\nexport function ApprovalWorkflow(\r\n props: ApprovalWorkflowProps & {\r\n api: ApiClient;\r\n urlBuilder?: UrlBuilder;\r\n loadingComponent?: React.ReactNode;\r\n ENV_VARIABLES?: any;\r\n }\r\n) {\r\n const {\r\n api,\r\n urlBuilder,\r\n loadingComponent,\r\n userInfo,\r\n ENV_VARIABLES,\r\n ...rest\r\n } = props;\r\n return (\r\n <WorkflowProvider\r\n value={{ api, urlBuilder, userInfo, loadingComponent, ENV_VARIABLES }}\r\n >\r\n <InternalApprovalWorkflow userInfo={userInfo} {...rest} />\r\n </WorkflowProvider>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/context.tsx","#style-inject:#style-inject","../src/ui/style.css","../src/common-component/index.css","../src/common-component/WorkflowButton.tsx","../src/ui/WorklfowTimeline.tsx","../src/ui/WorkflowRequestCard.tsx","../src/ui/dialogs/SendBackDialog.tsx","../src/ui/dialogs/ApproveDialog.tsx","../src/ui/dialogs/RejectDialog.tsx","../src/ui/dialogs/OnHoldDialog.tsx","../src/hooks/useDebounce.ts","../src/common-component/SearchBox.tsx","../src/common-component/FilterModal.tsx","../src/common-component/FilterButton.tsx","../src/ui/ApprovalWorkflow.tsx","../src/ui/DialogOpener.tsx","../src/index.tsx"],"names":["jsx","_a","statusList","jsxs","Box","Typography","Chip","React","index","_b","_c","_d","error","Fragment","Dialog","IconButton","CircularProgress","Button","useState","DialogTitle","HighlightOffIcon","DialogContent","Grid","TextField","DialogActions","Snackbar","Alert","useTheme","useMediaQuery","useEffect","InputAdornment","MenuItem","styled","Tooltip","theme","DialogOpener","ApprovalWorkflow"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { createContext, useContext } from 'react'\nimport type { WorkflowContextValue } from './types'\n\nconst WorkflowContext = createContext<WorkflowContextValue | null>(null)\n\nexport function WorkflowProvider({\n value,\n children\n}: {\n value: WorkflowContextValue\n children: React.ReactNode\n}) {\n return <WorkflowContext.Provider value={value}>{children}</WorkflowContext.Provider>\n}\n\nexport function useWorkflowContext(): WorkflowContextValue {\n const ctx = useContext(WorkflowContext)\n if (!ctx) {\n throw new Error('useWorkflowContext must be used within WorkflowProvider')\n }\n return ctx\n}\n\n\n","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".hide-scrollbar {\\n overflow: auto !important;\\n -ms-overflow-style: none !important;\\n scrollbar-width: none !important;\\n}\\n.hide-scrollbar::-webkit-scrollbar {\\n display: none !important;\\n}\\n.approval-card {\\n position: relative;\\n background-color: #f5f5f5;\\n border-radius: 8px;\\n width: 1069px;\\n min-height: 250px;\\n height: auto;\\n padding: 24px;\\n font-family:\\n \\\"Graphik Web\\\",\\n -apple-system,\\n BlinkMacSystemFont,\\n \\\"Segoe UI\\\",\\n sans-serif;\\n margin-bottom: 10px;\\n display: flex;\\n flex-direction: column;\\n}\\n.card-title {\\n color: #3f41d1;\\n font-size: 18px;\\n font-weight: 600;\\n text-decoration: underline;\\n text-transform: capitalize;\\n margin-top: -7px;\\n margin-bottom: 24px;\\n}\\n.vertical-divider {\\n position: absolute;\\n left: 884px;\\n top: 24px;\\n width: 1px;\\n height: 128px;\\n background-color: #d9d9d9;\\n}\\n.timer-container {\\n position: absolute;\\n left: 916px;\\n top: 24px;\\n width: 121px;\\n height: 121px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.timer-svg {\\n position: absolute;\\n width: 121px;\\n height: 121px;\\n}\\n.timer-content {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 4px;\\n z-index: 1;\\n}\\n.timer-time {\\n color: #3a9f4b;\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 16px;\\n letter-spacing: 0.5px;\\n}\\n.timer-time-expired {\\n color: #e6393e;\\n}\\n.timer-label {\\n color: #666;\\n font-size: 12px;\\n line-height: 16px;\\n}\\n.details-section {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n padding-right: 185px;\\n margin-bottom: 32px;\\n min-height: 80px;\\n}\\n.details-row {\\n display: flex;\\n gap: 64px;\\n}\\n.details-column {\\n display: flex;\\n flex-direction: column;\\n}\\n.detail-item {\\n color: #666;\\n font-size: 14px;\\n line-height: 21px;\\n text-transform: capitalize;\\n margin: 0;\\n}\\n.detail-label {\\n font-weight: 500;\\n}\\n.view-more-container {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n margin-top: 8px;\\n}\\n.view-more-button {\\n background-color: #f5f5f5;\\n border: 1px solid #e697ab;\\n border-radius: 8px;\\n padding: 4px 12px;\\n color: #3e3e3e;\\n font-size: 14px;\\n font-weight: 500;\\n text-transform: capitalize;\\n cursor: pointer;\\n line-height: 21px;\\n}\\n.expand-icon {\\n color: #666;\\n font-size: 18px;\\n transform: rotate(270deg);\\n}\\n.actions-container {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: 100%;\\n margin-bottom: 18px;\\n}\\n.progress-bar {\\n background-color: white;\\n border: 1px solid #3f41d1;\\n border-radius: 12px;\\n padding: 4px 14px 4px 5px;\\n display: flex;\\n align-items: center;\\n gap: 14px;\\n height: 40px;\\n}\\n.bus-icon {\\n width: 35px;\\n height: 29px;\\n}\\n.progress-steps {\\n display: flex;\\n align-items: center;\\n gap: 2px;\\n}\\n.step-icon {\\n width: 17px;\\n height: 17px;\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.step-completed {\\n background-color: #eaebfa;\\n}\\n.step-approved {\\n background-color: #3a9f4b;\\n}\\n.step-inactive {\\n background-color: #f6f6f6;\\n border: 1px solid #a3a3a3;\\n}\\n.step-line {\\n width: 33px;\\n height: 1px;\\n}\\n.step-line-completed {\\n background-color: #3a9f4b;\\n}\\n.step-line-inactive {\\n background-color: #e3e3e3;\\n}\\n.step-chip-current {\\n background-color: #bef2bf !important;\\n color: #3e3e3e !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n height: 29px !important;\\n border-radius: 14.5px !important;\\n text-transform: capitalize;\\n}\\n.step-chip-next {\\n background-color: #eff4f2 !important;\\n color: #3e3e3e !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n height: 29px !important;\\n border-radius: 14.5px !important;\\n text-transform: capitalize;\\n}\\n.vertical-separator {\\n width: 1px;\\n height: 29px;\\n background-color: #e3e3e3;\\n}\\n.assignee-text {\\n color: #666;\\n font-size: 14px;\\n line-height: 21px;\\n text-transform: capitalize;\\n}\\n.assignee-label {\\n font-weight: 500;\\n}\\n.action-buttons {\\n display: flex;\\n gap: 14px;\\n}\\n.btn-reject,\\n.btn-send-back {\\n border-color: #666 !important;\\n color: #666 !important;\\n border-radius: 100px !important;\\n text-transform: capitalize !important;\\n font-weight: 500 !important;\\n font-size: 14px !important;\\n height: 40px;\\n min-width: 106px;\\n}\\n.btn-approve {\\n background-color: #3f41d1 !important;\\n color: white !important;\\n border-radius: 100px !important;\\n text-transform: capitalize !important;\\n font-weight: 500 !important;\\n font-size: 14px !important;\\n height: 40px;\\n}\\n.btn-approve:hover {\\n background-color: #3436b0 !important;\\n}\\n.horizontal-divider {\\n width: 100%;\\n height: 1px;\\n background-color: #d9d9d9;\\n margin-bottom: 18px;\\n}\\n.timeline-container {\\n display: block;\\n}\\n.timeline-item {\\n width: 215px;\\n height: 157px;\\n position: relative;\\n}\\n.timeline-card {\\n position: absolute;\\n top: 16px;\\n width: 215px;\\n height: 141px;\\n background-color: white;\\n border-radius: 16px;\\n padding: 16px;\\n position: relative;\\n}\\n.timeline-card.active {\\n border: 1px solid #3f41d1;\\n}\\n.timeline-badge {\\n position: absolute !important;\\n top: -16px;\\n left: 8px;\\n width: 32px !important;\\n height: 32px !important;\\n border-radius: 50% !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n text-transform: capitalize !important;\\n border: 3px solid #f6f6f6;\\n}\\n.badge-l0 {\\n background-color: #eaebfa !important;\\n color: #3f41d1 !important;\\n}\\n.badge-l1-bg {\\n background-color: #fbcecf !important;\\n color: #3e3e3e !important;\\n}\\n.badge-l1-approved {\\n background-color: #3a9f4b !important;\\n color: white !important;\\n}\\n.badge-l1-rejected {\\n background-color: #e6393e !important;\\n color: white !important;\\n}\\n.badge-l1-sendback {\\n background-color: #dcecf9 !important;\\n color: #237ecd !important;\\n}\\n.badge-l2-active {\\n background-color: #f4f0ef !important;\\n color: #3e3e3e !important;\\n border: 1px solid #3f41d1 !important;\\n}\\n.timeline-badge-wrapper {\\n position: absolute;\\n top: -16px;\\n left: 8px;\\n width: 32px;\\n height: 32px;\\n}\\n.timeline-badge-wrapper .timeline-badge {\\n position: absolute !important;\\n top: 0;\\n left: 0;\\n}\\n.timeline-badge-wrapper-active {\\n position: absolute;\\n top: -20px;\\n left: 4px;\\n width: 38px;\\n height: 38px;\\n}\\n.timeline-badge-wrapper-active .timeline-badge {\\n position: absolute !important;\\n top: 3px;\\n left: 3px;\\n}\\n.timeline-type {\\n color: #666;\\n font-size: 12px;\\n line-height: 13px;\\n text-transform: capitalize;\\n margin-top: 12px;\\n margin-bottom: 8px;\\n}\\n.timeline-type.approved {\\n color: #3a9f4b;\\n font-weight: 600;\\n}\\n.timeline-type.rejected {\\n color: #e6393e;\\n font-weight: 600;\\n}\\n.timeline-type.sendback {\\n color: #237ecd;\\n font-weight: 600;\\n}\\n.timeline-name {\\n color: #3e3e3e;\\n font-size: 14px;\\n font-weight: 500;\\n line-height: 21px;\\n margin-bottom: 8px;\\n text-transform: capitalize;\\n}\\n.timeline-message {\\n color: #666;\\n font-size: 12px;\\n line-height: 13px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin-bottom: 24px;\\n}\\n.attachments {\\n color: #0612fb;\\n font-size: 12px;\\n line-height: 13px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin-bottom: 24px;\\n cursor: pointer;\\n}\\n.timeline-date {\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n color: #666;\\n font-size: 12px;\\n line-height: 14px;\\n text-align: right;\\n text-transform: capitalize;\\n}\\n.timeline-connector {\\n width: 45px;\\n height: 157px;\\n flex-shrink: 0;\\n}\\n.timeline-connector svg {\\n width: 100%;\\n height: 100%;\\n}\\n@media (max-width: 1200px) {\\n .approval-card {\\n width: 100%;\\n height: auto;\\n min-height: 437px;\\n }\\n}\\n.flag {\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 3px 4px;\\n border: 2px solid #b28900;\\n border-radius: 5px;\\n color: #b28900;\\n font-size: 12px;\\n}\\n\")","import styleInject from '#style-inject';styleInject(\".workflow-btn {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center;\\n padding: 10px 24px;\\n gap: 8px;\\n height: 40px;\\n border-radius: 100px;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Graphik Web\\\", sans-serif;\\n font-style: normal;\\n font-weight: 500;\\n font-size: 14px;\\n line-height: 14px;\\n text-align: center;\\n text-transform: capitalize;\\n background: transparent;\\n outline: none;\\n}\\n.workflow-btn.variant-reject,\\n.workflow-btn.variant-send-back {\\n background: #FFFFFF;\\n border: 1px solid #666666;\\n color: #666666;\\n}\\n.workflow-btn.variant-approve {\\n background: #3F41D1;\\n color: #FFFFFF;\\n}\\n.workflow-btn.variant-status-approved {\\n background: #3A9F4B;\\n color: #CDF3E2;\\n}\\n.workflow-btn.variant-status-sent-back {\\n background: #237ECD;\\n color: #DCECF9;\\n}\\n.workflow-btn.variant-status-rejected {\\n background: #FAD7D8;\\n color: #E6393E;\\n}\\n\")","import React from \"react\";\r\nimport \"./index.css\";\r\n\r\nexport type WorkflowButtonVariant =\r\n | \"reject\"\r\n | \"send-back\"\r\n | \"approve\"\r\n | \"approved\"\r\n | \"pending\"\r\n | \"status-sent-back\"\r\n | \"rejected\";\r\n\r\nexport interface WorkflowButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant: WorkflowButtonVariant;\r\n label?: string;\r\n}\r\n\r\nconst variantClassMap: Record<WorkflowButtonVariant, string> = {\r\n reject: \"variant-reject\",\r\n \"send-back\": \"variant-send-back\",\r\n approve: \"variant-approve\",\r\n approved: \"variant-status-approved\",\r\n \"status-sent-back\": \"variant-status-sent-back\",\r\n pending: \"variant-status-sent-back\",\r\n rejected: \"variant-status-rejected\",\r\n};\r\n\r\nexport const WorkflowButton: React.FC<WorkflowButtonProps> = ({\r\n variant,\r\n label,\r\n className = \"\",\r\n children,\r\n ...props\r\n}) => {\r\n const variantClass = variantClassMap[variant];\r\n\r\n return (\r\n <button className={`workflow-btn ${variantClass} ${className}`} {...props}>\r\n {label || children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default WorkflowButton;\r\n","import \"./style.css\";\r\nimport { Box, Chip, Typography } from \"@mui/material\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport { useWorkflowContext } from \"src/context\";\r\n\r\n/* ============================================================\r\n CONNECTOR CONFIG\r\n ============================================================ */\r\nconst CONNECTOR = {\r\n horizontal: {\r\n thickness: 3,\r\n lengthExtra: 0,\r\n offsetReverseExtra: 0, // Set to 0 if we want perfectly centered, or keep 30 if we want the \"snake\" offset look\r\n color: \"#2C35FF\", // Keeping the color from CustomTimeline logic\r\n },\r\n vertical: {\r\n thickness: 3,\r\n height: 80, // Increased height to cover gap\r\n color: \"#2C35FF\",\r\n },\r\n};\r\n\r\n/* ============================================================ */\r\n\r\nconst CARD_WIDTH = 215; // Matched to style.css .timeline-item width\r\nconst CARD_HEIGHT = 157; // Matched to style.css .timeline-item height\r\nconst GAP = 45;\r\nconst ROW_GAP = 45; // Approximate gap between rows\r\n\r\n/* ============================================================\r\n MAIN COMPONENT\r\n ============================================================ */\r\n\r\nexport default function WorkFlowTimeline({ events }: any) {\r\n const { api } = useWorkflowContext();\r\n\r\n /* Snake layout logic */\r\n const computeColumn = (index: number) => {\r\n const row = Math.floor(index / 4);\r\n const pos = index % 4;\r\n return row % 2 === 0 ? pos : 3 - pos;\r\n };\r\n\r\n const hasNextCard = (i: number) => i + 1 < events.length;\r\n\r\n const getHorizontalY = (rowIndex: number) => {\r\n // Center of the physical content area roughly\r\n // Card height in CSS is 141 (timeline-card) inside 157 (timeline-item)\r\n // Top is 16px. So center is 16 + 141/2 = 16 + 70.5 = 86.5\r\n const centerY = 86.5;\r\n return centerY;\r\n };\r\n\r\n const isVerticalNeeded = (index: number) =>\r\n (index + 1) % 4 === 0 && hasNextCard(index);\r\n\r\n const handleAttachmentClick = (attachment: any) => {\r\n api\r\n .get({\r\n url: `/workflow/uploaded-document-url/${\r\n attachment.split(\"/\").reverse()[0]\r\n }`,\r\n serviceURL: \"api\",\r\n })\r\n .then((res) => {\r\n window.open(res.data, \"_blank\");\r\n });\r\n };\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", overflowX: \"auto\", p: 1 }}>\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n display: \"grid\",\r\n gridTemplateColumns: `repeat(4, ${CARD_WIDTH}px)`,\r\n columnGap: `${GAP}px`,\r\n rowGap: `${ROW_GAP}px`,\r\n width: \"max-content\",\r\n }}\r\n >\r\n {events?.map((item: any, index: number) => {\r\n const row = Math.floor(index / 4);\r\n const col = computeColumn(index);\r\n const isLastInRow = index % 4 === 3;\r\n\r\n return (\r\n <Box\r\n key={index}\r\n sx={{\r\n gridColumn: col + 1,\r\n gridRow: row + 1,\r\n position: \"relative\",\r\n width: `${CARD_WIDTH}px`,\r\n height: `${CARD_HEIGHT}px`,\r\n }}\r\n >\r\n {/* ----------------------------\r\n HORIZONTAL CONNECTOR\r\n ----------------------------- */}\r\n {!isLastInRow && hasNextCard(index) && (\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: getHorizontalY(row),\r\n // If row is Even (LTR), connector goes to RIGHT.\r\n // If row is Odd (RTL), connector goes to LEFT.\r\n left: row % 2 === 0 ? \"100%\" : \"auto\",\r\n right: row % 2 !== 0 ? \"100%\" : \"auto\",\r\n width: GAP + CONNECTOR.horizontal.lengthExtra,\r\n zIndex: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n transform: row % 2 !== 0 ? \"scaleX(-1)\" : \"none\", // Flip for RTL if needed, though line is symmetric\r\n }}\r\n >\r\n {/* Using SVG to match original WorkFlowTimeline style as requested \"perfect styles\" */}\r\n <svg\r\n width=\"65\"\r\n height=\"3\"\r\n viewBox=\"0 0 65 3\"\r\n fill=\"none\"\r\n style={{ width: \"100%\" }}\r\n >\r\n <line\r\n x1=\"0\"\r\n y1=\"1.5\"\r\n x2=\"65\"\r\n y2=\"1.5\"\r\n stroke=\"#3F41D1\"\r\n strokeWidth=\"1\"\r\n strokeDasharray=\"6 6\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n </Box>\r\n )}\r\n\r\n {/* ----------------------------\r\n VERTICAL CONNECTOR\r\n ----------------------------- */}\r\n {isVerticalNeeded(index) && (\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"100%\", // Start at bottom of item\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: CONNECTOR.vertical.thickness,\r\n height: ROW_GAP, // Span the row gap\r\n zIndex: 0,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Vertical SVG Line */}\r\n <svg width=\"3\" height={70} viewBox={`0 0 3 70`} fill=\"none\">\r\n <line\r\n x1=\"1.5\"\r\n y1=\"0\"\r\n x2=\"1.5\"\r\n y2={70}\r\n stroke=\"#3F41D1\"\r\n strokeWidth=\"1\"\r\n strokeDasharray=\"6 6\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n </Box>\r\n )}\r\n\r\n {/* ----------------------------\r\n CARD CONTENT (Original Style)\r\n ----------------------------- */}\r\n <Box\r\n className=\"timeline-item\"\r\n sx={{ width: \"100%\", height: \"100%\" }}\r\n >\r\n <Box\r\n className={`timeline-card ${\r\n events.length - 1 === index ? \"active\" : \"\"\r\n }`}\r\n >\r\n <Chip label=\"\" className=\"timeline-badge badge-l0\" />\r\n\r\n <Chip\r\n label={item?.count}\r\n className={`timeline-badge badge-l1-${\r\n item?.type == \"approve\"\r\n ? \"approved\"\r\n : item?.type == \"reject\"\r\n ? \"rejected\"\r\n : item?.type == \"send_back\"\r\n ? \"sendback\"\r\n : \"\"\r\n }`}\r\n sx={{\r\n \"& .MuiChip-label\": {\r\n padding: \"0px\",\r\n },\r\n }}\r\n />\r\n\r\n <Typography\r\n className={`timeline-type ${\r\n item?.type == \"approve\"\r\n ? \"approved\"\r\n : item?.type == \"reject\"\r\n ? \"rejected\"\r\n : item?.type == \"send_back\"\r\n ? \"sendback\"\r\n : \"\"\r\n }`}\r\n >\r\n {item?.status}\r\n </Typography>\r\n <Typography className=\"timeline-name\">\r\n {item?.name}\r\n </Typography>\r\n <Typography className=\"timeline-message\">\r\n {item?.subTitle}\r\n </Typography>\r\n {item?.attachment && (\r\n <Typography\r\n className=\"attachments\"\r\n onClick={() => handleAttachmentClick(item?.attachment)}\r\n >\r\n Attachments\r\n </Typography>\r\n )}\r\n <Typography className=\"timeline-date\">\r\n {item?.date} {item?.time}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Box,\r\n Typography,\r\n Tooltip,\r\n IconButton,\r\n Button,\r\n Chip,\r\n CircularProgress,\r\n} from \"@mui/material\";\r\nimport { CheckCircleOutlineOutlined } from \"@mui/icons-material\";\r\nimport moment from \"moment\";\r\nimport WorkflowButton from \"src/common-component/WorkflowButton\";\r\nimport WorkFlowTimeline from \"./WorklfowTimeline\";\r\nimport ActionMenu from \"./Statusselector\"; // Ensure correct import path or usage\r\n\r\n// Props Interface\r\ninterface WorkflowRequestCardProps {\r\n requestDetails: any; // Renamed from info\r\n index: number;\r\n isLast: boolean;\r\n lastCardRef: any;\r\n expandedId: string | null;\r\n handleExpandClick: (id: string) => void;\r\n handleOpenViewMore: (details: any) => void;\r\n handleApprove: (id: string) => void;\r\n handleReject: (id: string) => void;\r\n handleSendBack: (id: string) => void;\r\n handleOnHold?: (id: string) => void; // Optional if not always used\r\n expandedDetails: any[];\r\n userInfo: any;\r\n helpers: {\r\n timeLeftDHm: (date: string) => string;\r\n getStatus: (status: string) => any;\r\n buildRedirectionUrl: (info: any) => string;\r\n };\r\n}\r\n\r\nexport default function WorkflowRequestCard({\r\n requestDetails,\r\n index,\r\n isLast,\r\n lastCardRef,\r\n expandedId,\r\n handleExpandClick,\r\n handleOpenViewMore,\r\n handleApprove,\r\n handleReject,\r\n handleSendBack,\r\n handleOnHold,\r\n expandedDetails,\r\n userInfo,\r\n helpers,\r\n}: WorkflowRequestCardProps) {\r\n const { timeLeftDHm, getStatus, buildRedirectionUrl } = helpers;\r\n\r\n const allCurrentAssignees = requestDetails?.levels?.map(\r\n (level: any) => level?.assign_to_name?.[0]\r\n );\r\n\r\n const allCurrentEscalatedAssignees = requestDetails?.levels?.map(\r\n (level: any) =>\r\n timeLeftDHm(level?.tat_expiry) === \"0d: 0h: 0m\"\r\n ? level?.escalate_assign_to_name?.[0]\r\n : \"\"\r\n );\r\n\r\n const allAssignees = [\r\n ...new Set([...allCurrentAssignees, ...allCurrentEscalatedAssignees]),\r\n ].filter((item) => item);\r\n console.log(\"🚀 ~ WorkflowRequestCard ~ allAssignees:\", allAssignees);\r\n\r\n // Logic Extraction\r\n const currentLevel = requestDetails?.levels?.find(\r\n (level_: any) => level_.id === requestDetails?.current_level\r\n );\r\n\r\n const currentlyAssignedUserArray = currentLevel?.assign_to_name || [];\r\n const currentlyEscaltedUserArray =\r\n currentLevel?.escalate_assign_to_name || [];\r\n\r\n const currentlyAssignedUser = currentLevel?.assign_to_name\r\n ? currentLevel?.assign_to_name[0]\r\n : \"NA\";\r\n const currentlyEscalatedUser = currentLevel?.escalate_assign_to_name\r\n ? currentLevel?.escalate_assign_to_name[0]\r\n : \"NA\";\r\n console.log(\r\n \"🚀 ~ WorkflowRequestCard ~ currentlyEscalatedUser:\",\r\n currentLevel?.escalate_assign_to_name\r\n );\r\n\r\n const extraCurrentlyAssignedUserCount = currentlyAssignedUserArray.length - 1;\r\n const extraCurrentlyEscalatedUserCount =\r\n currentlyEscaltedUserArray.length - 1;\r\n\r\n const statusList = currentLevel ? currentLevel.status_list : [];\r\n\r\n const filterRejectForLevelZero = (statusList: any[], info: any) => {\r\n if (!info?.isLevelZero) return statusList;\r\n return statusList?.filter((item) => item.status !== 3);\r\n };\r\n\r\n const redirectionUrl = buildRedirectionUrl(requestDetails); // Renamed from redir\r\n\r\n const currentStatus =\r\n requestDetails?.levels?.find(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n )?.selected_status?.status_id === 1\r\n ? \"approved\"\r\n : requestDetails?.levels?.find(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n )?.selected_status?.status_id === 3\r\n ? \"rejected\"\r\n : \"pending\";\r\n\r\n const statusData = getStatus(currentStatus);\r\n\r\n const descriptionDetails =\r\n requestDetails?.template_variables?.description_variables;\r\n\r\n const formatKey = (key: string) =>\r\n key.replace(/_/g, \" \").replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n\r\n const displayEntries = descriptionDetails\r\n ? Object.entries(descriptionDetails).filter(\r\n ([, value]) => typeof value === \"string\" || typeof value === \"number\"\r\n )\r\n : [];\r\n\r\n const userLevel = requestDetails?.isLevelZero\r\n ? \"L0\"\r\n : \"L\" +\r\n ((requestDetails?.levels?.findIndex(\r\n (lvl: any) => lvl.id === requestDetails?.current_level\r\n ) ?? -1) + 1 || \"\");\r\n\r\n const tatExpired = timeLeftDHm(currentLevel?.tat_expiry) === \"0d: 0h: 0m\";\r\n\r\n // Render\r\n return (\r\n <Box\r\n className={\"approval-card\"}\r\n key={index}\r\n ref={isLast ? lastCardRef : null}\r\n >\r\n {requestDetails?.is_parallel && (\r\n <span className=\"flag\">Parallel Workflow</span>\r\n )}\r\n {/* Header */}\r\n <Typography className=\"card-title\">\r\n <a href={redirectionUrl} target=\"_blank\" rel=\"noreferrer\">\r\n {requestDetails.activity_name}\r\n </a>\r\n </Typography>\r\n\r\n {/* Vertical Divider */}\r\n <div className=\"vertical-divider\"></div>\r\n\r\n {/* Timer Section */}\r\n <Box className=\"timer-container\">\r\n <Box className=\"timer-content\">\r\n <Typography\r\n className={`${\r\n timeLeftDHm(currentLevel?.tat_expiry) === \"0d: 0h: 0m\"\r\n ? \"timer-time-expired\"\r\n : \"timer-time\"\r\n }`}\r\n >\r\n {currentLevel?.tat_expiry\r\n ? timeLeftDHm(currentLevel.tat_expiry)\r\n : \"N/A\"}\r\n </Typography>\r\n <Typography className=\"timer-label\">Time Left</Typography>\r\n </Box>\r\n </Box>\r\n\r\n {/* Bus Details Section */}\r\n <Box className=\"details-section\">\r\n <Box className=\"details-row\">\r\n <Box className=\"details-column\">\r\n {displayEntries.slice(0, 3).map((entry: any, i: number) => (\r\n <Typography key={i} className=\"detail-item\">\r\n <span style={{ fontWeight: \"bold\" }} className=\"detail-label\">\r\n {formatKey(entry[0])}:\r\n </span>{\" \"}\r\n {entry[1]}\r\n </Typography>\r\n ))}\r\n </Box>\r\n <Box className=\"details-column\">\r\n {displayEntries.slice(3, 6).map((entry: any, i: number) => (\r\n <Typography key={i} className=\"detail-item\">\r\n <span style={{ fontWeight: \"bold\" }} className=\"detail-label\">\r\n {formatKey(entry[0])}:\r\n </span>{\" \"}\r\n {entry[1]}\r\n </Typography>\r\n ))}\r\n </Box>\r\n </Box>\r\n\r\n {/* View More Button */}\r\n <Box className=\"view-more-container\">\r\n {displayEntries.length > 0 && (\r\n <button\r\n className=\"view-more-button\"\r\n onClick={() => handleOpenViewMore(displayEntries)}\r\n >\r\n View More\r\n </button>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {/* Progress Bar and Actions */}\r\n <Box className=\"actions-container\">\r\n {/* Step Progress Bar - Keeping logic same as previous component */}\r\n <Box className=\"progress-bar\">\r\n <IconButton\r\n color=\"primary\"\r\n onClick={() => handleExpandClick(requestDetails._id)}\r\n >\r\n {expandedId === requestDetails._id ? (\r\n <span className=\"icon-arrow-down-1\"></span>\r\n ) : (\r\n <span className=\"icon-arrow-right-3\"></span>\r\n )}\r\n </IconButton>\r\n\r\n <Box className=\"progress-steps\">\r\n {userLevel == \"L0\" ? (\r\n <>\r\n <Chip label={\"L0\"} className=\"step-chip-current\" />\r\n <div className=\"step-line step-line-inactive\"></div>\r\n </>\r\n ) : (\r\n <>\r\n <Box className=\"step-icon step-completed\">\r\n <CheckCircleOutlineOutlined\r\n sx={{ fontSize: 14, color: \"#3F41D1\" }}\r\n />\r\n </Box>\r\n <div className=\"step-line step-line-inactive\"></div>\r\n </>\r\n )}\r\n {requestDetails?.levels?.map((_: any, idx: number) => {\r\n const level = idx + 1;\r\n return (\r\n <React.Fragment key={idx}>\r\n {userLevel == \"L\" + level ? (\r\n <>\r\n <Chip label={\"L\" + level} className=\"step-chip-current\" />\r\n {requestDetails?.levels.length !== level && (\r\n <div className=\"step-line step-line-inactive\"></div>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n {level > +userLevel.split(\"\")[1] ? (\r\n // <Box className=\"step-icon step-inactive\"></Box>\r\n <Chip label={\"L\" + level} className=\"step-chip-next\" />\r\n ) : (\r\n <Box className=\"step-icon step-completed\">\r\n <CheckCircleOutlineOutlined\r\n sx={{ fontSize: 14, color: \"#3F41D1\" }}\r\n />\r\n </Box>\r\n )}\r\n {requestDetails?.levels.length !== level && (\r\n <div className=\"step-line step-line-inactive\"></div>\r\n )}\r\n </>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </Box>\r\n\r\n <div className=\"vertical-separator\"></div>\r\n\r\n {requestDetails?.is_parallel ? (\r\n <>\r\n {allAssignees.length > 1 ? (\r\n <Tooltip\r\n title={\r\n <Box\r\n sx={{\r\n backgroundColor: \"#fff\",\r\n padding: \"10px\",\r\n borderRadius: \"5px\",\r\n }}\r\n >\r\n {allAssignees.map((user: any, index: number) => (\r\n <Typography\r\n className=\"assignee-text\"\r\n key={index}\r\n variant=\"body2\"\r\n >\r\n {user}\r\n </Typography>\r\n ))}\r\n </Box>\r\n }\r\n arrow\r\n placement=\"top\"\r\n componentsProps={{\r\n tooltip: {\r\n sx: {\r\n backgroundColor: \"#fff\",\r\n color: \"#000\",\r\n boxShadow: \"0 4px 12px rgba(0,0,0,0.15)\",\r\n borderRadius: \"6px\",\r\n p: 1,\r\n },\r\n },\r\n arrow: {\r\n sx: {\r\n color: \"#fff\",\r\n },\r\n },\r\n }}\r\n >\r\n <Typography\r\n className=\"assignee-text\"\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <span className=\"assignee-label\">\r\n {\"Current Assignee:\"}\r\n </span>{\" \"}\r\n {allAssignees.length > 0\r\n ? `${allAssignees[0]} +${allAssignees.length - 1}`\r\n : allAssignees[0]}\r\n </Typography>\r\n </Tooltip>\r\n ) : (\r\n <Typography\r\n className=\"assignee-text\"\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <span className=\"assignee-label\">{\"Current Assignee:\"}</span>{\" \"}\r\n {allAssignees[0]}\r\n </Typography>\r\n )}\r\n </>\r\n ) : extraCurrentlyAssignedUserCount > 0 ||\r\n (tatExpired && extraCurrentlyEscalatedUserCount > 0) ? (\r\n <Tooltip\r\n title={\r\n <Box\r\n sx={{\r\n backgroundColor: \"#fff\",\r\n padding: \"10px\",\r\n borderRadius: \"5px\",\r\n }}\r\n >\r\n {(tatExpired\r\n ? currentlyEscaltedUserArray\r\n : currentlyAssignedUserArray\r\n ).map((user: any, index: number) => (\r\n <Typography\r\n className=\"assignee-text\"\r\n key={index}\r\n variant=\"body2\"\r\n >\r\n {user}\r\n </Typography>\r\n ))}\r\n </Box>\r\n }\r\n arrow\r\n placement=\"top\"\r\n >\r\n <Typography className=\"assignee-text\" sx={{ cursor: \"pointer\" }}>\r\n <span className=\"assignee-label\">\r\n {tatExpired ? \"Escalated To:\" : \"Current Assignee:\"}\r\n </span>{\" \"}\r\n {(tatExpired\r\n ? extraCurrentlyEscalatedUserCount\r\n : extraCurrentlyAssignedUserCount) > 0\r\n ? `${\r\n tatExpired\r\n ? currentlyEscalatedUser\r\n : currentlyAssignedUser\r\n } +${\r\n tatExpired\r\n ? extraCurrentlyEscalatedUserCount\r\n : extraCurrentlyAssignedUserCount\r\n }`\r\n : tatExpired\r\n ? currentlyEscalatedUser\r\n : currentlyAssignedUser}\r\n </Typography>\r\n </Tooltip>\r\n ) : (\r\n <Typography className=\"assignee-text\" sx={{ cursor: \"pointer\" }}>\r\n <span className=\"assignee-label\">\r\n {tatExpired ? \"Escalated To:\" : \"Current Assignee:\"}\r\n </span>{\" \"}\r\n {tatExpired ? currentlyEscalatedUser : currentlyAssignedUser}\r\n </Typography>\r\n )}\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n {requestDetails?.current_status !== \"completed\" ? (\r\n <Box className=\"action-buttons\">\r\n {filterRejectForLevelZero(statusList, requestDetails).find(\r\n (list: any) => list.status == 3\r\n ) && (\r\n <Button\r\n variant=\"outlined\"\r\n className=\"btn-reject\"\r\n onClick={() =>\r\n handleReject(\r\n `${requestDetails?._id}|${\r\n statusList.find((i: any) => i.status == 3)?.id\r\n }|${requestDetails?.reasons}`\r\n )\r\n }\r\n >\r\n Reject\r\n </Button>\r\n )}\r\n\r\n {!requestDetails?.isLevelZero && (\r\n <Button\r\n variant=\"outlined\"\r\n className=\"btn-send-back\"\r\n onClick={() => handleSendBack(requestDetails._id)}\r\n >\r\n Send Back\r\n </Button>\r\n )}\r\n {filterRejectForLevelZero(statusList, requestDetails).find(\r\n (list: any) => list.status == 1\r\n ) && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"btn-approve\"\r\n onClick={() =>\r\n handleApprove(\r\n `${requestDetails?._id}|${\r\n statusList.find((i: any) => i.status == 1)?.id\r\n }`\r\n )\r\n }\r\n >\r\n Approve\r\n </Button>\r\n )}\r\n {/* Added OnHold if handleOnHold provided, based on original ActionMenu usage but simplified to Buttons as per user's latest edit */}\r\n </Box>\r\n ) : (\r\n <WorkflowButton\r\n variant={\r\n (currentStatus === \"approved\"\r\n ? \"approved\"\r\n : currentStatus === \"rejected\"\r\n ? \"rejected\"\r\n : \"pending\") as any\r\n }\r\n className=\"dialog-close-btn\"\r\n >\r\n {currentStatus.toLocaleLowerCase()}\r\n </WorkflowButton>\r\n )}\r\n </Box>\r\n\r\n {/* Expanded Timeline */}\r\n {expandedId === requestDetails._id && (\r\n <>\r\n <div className=\"horizontal-divider\"></div>\r\n\r\n <WorkFlowTimeline\r\n events={expandedDetails?.map((item: any) => ({\r\n date: moment(item?.created_at).format(\"DD-MM-YYYY\"),\r\n time: moment(item?.created_at).format(\"HH:mm\"),\r\n name:\r\n item?.type === \"create\"\r\n ? item?.created_by_user?.full_name\r\n : item?.created_by_user?.full_name || \"N/A\",\r\n subTitle: item?.comment_reasons?.comment || \"No Comments\",\r\n attachment: item?.comment_reasons?.file || null,\r\n count:\r\n item?.current_level == \"L0\" ? \"L0\" : item?.current_level_count,\r\n status:\r\n item?.type === \"approve\"\r\n ? \"Approved by\"\r\n : item?.type === \"reject\"\r\n ? \"Rejected by\"\r\n : item?.type === \"send_back\"\r\n ? \"Send Back\"\r\n : item?.type === \"onhold\"\r\n ? \"On Hold\"\r\n : \"Created by\",\r\n type: item?.type,\r\n }))}\r\n />\r\n </>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","import React, { useRef, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n InputAdornment,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n onSuccess?: () => void;\n};\n\nfunction SendBackDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n onSuccess,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const [comment, setComment] = useState(\"\");\n const [selectedFile, setSelectedFile] = useState<string | null>(null);\n const [fileName, setFileName] = useState<string>(\"\");\n const [error, setError] = useState<{ comment?: string; file?: string }>({});\n const [loading, setLoading] = useState(false);\n const [fileLoading, setFileLoading] = useState(false);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n\n // ✅ Snackbar state for messages\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const handleAttachment = () => fileInputRef.current?.click();\n\n const handleUpload = async (file: File) => {\n setFileLoading(true);\n const formData = new FormData();\n formData.append(\"file\", file);\n try {\n const response = await api.post({\n url: \"/workflow/upload-document\",\n data: formData,\n serviceURL: \"api\",\n headers: { \"Content-Type\": \"multipart/form-data\" },\n });\n setFileName(response.data.file);\n setSelectedFile(response.data.file);\n setSnackbar({\n open: true,\n message: \"File uploaded successfully!\",\n severity: \"success\",\n });\n } catch (error: any) {\n setSnackbar({\n open: true,\n message: \"File upload failed.\",\n severity: \"error\",\n });\n } finally {\n setFileLoading(false);\n }\n };\n\n const handleFileChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n if (event.target.files && event.target.files.length > 0) {\n const file = event.target.files[0];\n await handleUpload(file);\n setError((prev) => ({ ...prev, file: \"\" }));\n } else {\n setSelectedFile(null);\n setFileName(\"\");\n }\n };\n\n const validateFields = () => {\n let isValid = true;\n const errors = { comment: \"\", file: \"\" };\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n try {\n const res = await api.post({\n url: `/workflow/send-back/${workflowLogId}`,\n data: {\n comment,\n file: selectedFile,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n if (res?.status === 200) {\n setSnackbar({\n open: true,\n message: \"Workflow sent back successfully!\",\n severity: \"success\",\n });\n } else {\n setSnackbar({\n open: true,\n message:\n (res as any)?.error?.message || \"Something went wrong. Try again.\",\n severity: \"error\",\n });\n }\n } catch (e: any) {\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Oops! Something went wrong.\",\n severity: \"error\",\n });\n } finally {\n // ✅ Reset fields after success\n setComment(\"\");\n setSelectedFile(null);\n setFileName(\"\");\n setLoading(false);\n closeModal && closeModal();\n // Call onSuccess to refresh data\n onSuccess && onSuccess();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n type=\"text\"\n fullWidth\n label=\"Attachment\"\n placeholder=\"Attachment\"\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {fileLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <span\n className=\"icon-export-1\"\n style={{ cursor: \"pointer\" }}\n onClick={handleAttachment}\n ></span>\n )}\n </InputAdornment>\n ),\n }}\n onClick={handleAttachment}\n value={fileName}\n error={!!error.file}\n helperText={error.file}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading || fileLoading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* ✅ Snackbar Popup for messages */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default SendBackDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n onSuccess?: () => void;\n};\n\nfunction ApproveDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n onSuccess,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState<{ comment?: string }>({});\n const [loading, setLoading] = useState(false);\n\n // Snackbar state\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const validateFields = () => {\n let isValid = true;\n const newError: { comment?: string } = {};\n\n if (!comment) {\n newError.comment = \"Please provide a comment\";\n isValid = false;\n }\n\n setError(newError);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n\n setLoading(true);\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // SUCCESS SNACKBAR\n setSnackbar({\n open: true,\n message: \"Approved successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n // ERROR SNACKBAR\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Something unexpected occurred!\",\n severity: \"error\",\n });\n } finally {\n setComment(\"\"); // reset comment\n setLoading(false);\n closeModal && closeModal();\n // Call onSuccess to refresh data\n onSuccess && onSuccess();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* Snackbar */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default ApproveDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n FormControl,\n Grid,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n Typography,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n rejection_reason_master: string;\n onSuccess?: () => void;\n};\n\nfunction RejectDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n rejection_reason_master,\n onSuccess,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n const DownArrow = () => (\n <span\n style={{ color: theme.palette.customColors?.mainText || \"#333\" }}\n className=\"icon-arrow-down-1\"\n ></span>\n );\n\n const [rejectReasons, setRejectReasons] = useState<string>(\"\");\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState({ reason: \"\", comment: \"\" });\n const [statusApplicableList, setStatusApplicableList] = useState<any>([]);\n const [loading, setLoading] = useState(false);\n\n // ✅ Snackbar state\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n useEffect(() => {\n (async () => {\n try {\n if (!statusApplicableList.length) {\n const res = await api.get({\n url: `/workflow/applicableStatuses?type=${rejection_reason_master}`,\n serviceURL: \"api\",\n });\n setStatusApplicableList(res?.data?.data || []);\n }\n } catch (e) {\n setSnackbar({\n open: true,\n message: \"Failed to load reject reasons.\",\n severity: \"error\",\n });\n }\n })();\n }, [rejection_reason_master]);\n\n const validateFields = () => {\n let isValid = true;\n const errors = { reason: \"\", comment: \"\" };\n if (!rejectReasons) {\n errors.reason = \"Please select a reject reason\";\n isValid = false;\n }\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n reason: rejectReasons,\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // ✅ Success snackbar\n setSnackbar({\n open: true,\n message: \"Rejected successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n const message = e?.response?.data?.message || \"Something went wrong!\";\n console.error(\"❌ Reject Error:\", message);\n setSnackbar({\n open: true,\n message,\n severity: \"error\",\n });\n } finally {\n // ✅ Reset fields\n setComment(\"\");\n setRejectReasons(\"\");\n setLoading(false);\n closeModal && closeModal();\n // Call onSuccess to refresh data\n onSuccess && onSuccess();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <FormControl fullWidth required error={!!error.reason}>\n <InputLabel required id=\"reject-reason-label\">\n Reject Reasons\n </InputLabel>\n <Select\n IconComponent={DownArrow as any}\n label=\"Reject Reasons\"\n value={rejectReasons}\n id=\"reject-reason\"\n labelId=\"reject-reason-label\"\n onChange={(e) => setRejectReasons(e.target.value as string)}\n >\n {statusApplicableList?.map((reason_: any) => (\n <MenuItem key={reason_?.id} value={reason_?.id}>\n {reason_?.name}\n </MenuItem>\n ))}\n </Select>\n {error.reason && (\n <Typography variant=\"caption\" color=\"error\">\n {error.reason}\n </Typography>\n )}\n </FormControl>\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* ✅ Snackbar for messages */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default RejectDialog;\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport {\n Box,\n Button,\n DialogActions,\n DialogTitle,\n Grid,\n TextField,\n CircularProgress,\n IconButton,\n Snackbar,\n Alert,\n} from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useWorkflowContext } from \"../../context\";\n\ntype Props = {\n openModal: boolean;\n closeModal?: () => void;\n header?: string;\n workflowLogId: string;\n statusId: string;\n onSuccess?: () => void;\n};\n\nfunction OnHoldDialog({\n openModal,\n closeModal,\n header,\n workflowLogId,\n statusId,\n onSuccess,\n}: Props) {\n const { userInfo, api } = useWorkflowContext();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n\n const [comment, setComment] = useState(\"\");\n const [error, setError] = useState({ comment: \"\" });\n const [loading, setLoading] = useState(false);\n\n // Snackbar State\n const [snackbar, setSnackbar] = useState<{\n open: boolean;\n message: string;\n severity: \"success\" | \"error\";\n }>({\n open: false,\n message: \"\",\n severity: \"success\",\n });\n\n const handleCloseSnackbar = () =>\n setSnackbar((prev) => ({ ...prev, open: false }));\n\n const validateFields = () => {\n let isValid = true;\n const errors = { comment: \"\" };\n\n if (!comment) {\n errors.comment = \"Please enter a comment\";\n isValid = false;\n }\n\n setError(errors);\n return isValid;\n };\n\n const onSubmit = async () => {\n if (!validateFields()) return;\n setLoading(true);\n\n try {\n await api.post({\n url: `/workflow/update-status/${workflowLogId}/${statusId}`,\n data: {\n comment,\n created_by: userInfo?.userInfo?.id,\n },\n serviceURL: \"api\",\n });\n\n // Show success\n setSnackbar({\n open: true,\n message: \"Moved to On-Hold successfully!\",\n severity: \"success\",\n });\n } catch (e: any) {\n // Show error\n setSnackbar({\n open: true,\n message: e?.response?.data?.message || \"Failed to submit the form\",\n severity: \"error\",\n });\n } finally {\n setComment(\"\"); // reset comment\n closeModal && closeModal();\n setLoading(false);\n // Call onSuccess to refresh data\n onSuccess && onSuccess();\n }\n };\n\n return (\n <>\n <Dialog\n open={openModal}\n onClose={closeModal}\n aria-labelledby=\"responsive-dialog-title\"\n sx={{ \"& .MuiPaper-root.MuiDialog-paper\": { width: \"550px\" } }}\n >\n {/* Header */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <DialogTitle id=\"responsive-dialog-title\">{header}</DialogTitle>\n <IconButton disableFocusRipple disableRipple onClick={closeModal}>\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </Box>\n\n {/* Body */}\n <DialogContent>\n <Box sx={{ mb: 5 }}>\n <Grid container spacing={5}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Comment\"\n value={comment}\n placeholder=\"Comment Here\"\n onChange={(e) => setComment(e.target.value)}\n required\n error={!!error.comment}\n helperText={error.comment}\n />\n </Grid>\n </Grid>\n </Box>\n </DialogContent>\n\n {/* Actions */}\n <DialogActions>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Button\n onClick={closeModal}\n size=\"large\"\n variant=\"outlined\"\n color=\"primary\"\n sx={{ mr: 2 }}\n >\n Close\n </Button>\n\n <Button\n onClick={onSubmit}\n size=\"large\"\n variant=\"contained\"\n color=\"primary\"\n disabled={loading}\n >\n {loading ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n \"Submit\"\n )}\n </Button>\n </Box>\n </DialogActions>\n </Dialog>\n\n {/* Snackbar */}\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleCloseSnackbar}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n sx={{ zIndex: 9999999 }}\n >\n <Alert\n variant=\"filled\"\n onClose={handleCloseSnackbar}\n severity={snackbar.severity}\n sx={{\n width: \"100%\",\n color: snackbar.severity === \"error\" ? \"#fff\" : \"inherit\",\n bgcolor: snackbar.severity === \"error\" ? \"#d32f2f\" : undefined,\n zIndex: 100000,\n }}\n >\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n}\n\nexport default OnHoldDialog;\n","import { useEffect, useState } from \"react\";\r\n\r\nconst useDebounce = (value: string, delay: number): string => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const timeoutId = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [value, delay]);\r\n\r\n return debouncedValue;\r\n};\r\n\r\nexport default useDebounce;\r\n","import React from \"react\";\r\nimport { Box, IconButton, InputAdornment, TextField } from \"@mui/material\";\r\n\r\ntype SearchBoxType = {\r\n placeHolderTitle: string;\r\n searchText: string;\r\n handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n handleClearSearch: () => void;\r\n};\r\n\r\nconst SearchBox = ({\r\n placeHolderTitle,\r\n searchText,\r\n handleClearSearch,\r\n handleInputChange,\r\n}: SearchBoxType) => {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <TextField\r\n size=\"small\"\r\n variant=\"outlined\"\r\n value={searchText}\r\n onChange={handleInputChange}\r\n placeholder={placeHolderTitle}\r\n autoComplete=\"off\"\r\n className=\"custom-search\"\r\n sx={{\r\n \"& .MuiOutlinedInput-root\": {\r\n height: \"38px\",\r\n borderRadius: \"20px\",\r\n },\r\n }}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <span className=\"icon-search-normal-1\"></span>\r\n </InputAdornment>\r\n ),\r\n endAdornment: searchText ? (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n disableFocusRipple\r\n disableRipple\r\n disableTouchRipple\r\n onClick={handleClearSearch}\r\n >\r\n <span className=\"icon-close-circle\"></span>\r\n </IconButton>\r\n </InputAdornment>\r\n ) : null,\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default SearchBox;\r\n","import { useState, useEffect } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n TextField,\r\n MenuItem,\r\n Box,\r\n Typography,\r\n IconButton,\r\n} from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport { useWorkflowContext } from \"../context\";\r\n\r\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\r\n \"& .MuiDialog-paper\": {\r\n borderRadius: \"16px\",\r\n boxShadow: \"0px 2px 16px 0px rgba(0,0,0,0.16)\",\r\n padding: \"24px\",\r\n maxWidth: \"640px\",\r\n width: \"100%\",\r\n },\r\n}));\r\n\r\nconst FilterSection = styled(Box)({\r\n border: \"1px solid rgba(146,144,144,0.3)\",\r\n borderRadius: \"12px\",\r\n padding: \"18px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"22px\",\r\n});\r\n\r\nconst StyledTextField = styled(TextField)({\r\n \"& .MuiOutlinedInput-root\": {\r\n borderRadius: \"4px\",\r\n \"& fieldset\": {\r\n borderColor: \"#a3a3a3\",\r\n },\r\n },\r\n \"& .MuiInputLabel-root\": {\r\n fontSize: \"12px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Regular\", sans-serif',\r\n },\r\n \"& .MuiSelect-select\": {\r\n fontSize: \"16px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Regular\", sans-serif',\r\n textTransform: \"capitalize\",\r\n },\r\n \"& .MuiSelect-icon\": {\r\n color: \"#666\",\r\n },\r\n});\r\n\r\ninterface FilterModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n initialFilters?: any;\r\n onApply?: (filters: any) => void;\r\n}\r\n\r\nexport function FilterModal({\r\n open,\r\n onClose,\r\n initialFilters,\r\n onApply,\r\n}: FilterModalProps) {\r\n const { api } = useWorkflowContext();\r\n const [approvalType, setApprovalType] = useState(\r\n initialFilters?.approvalType || \"\"\r\n );\r\n const [approvalStatus, setApprovalStatus] = useState(\r\n initialFilters?.approvalStatus || \"\"\r\n );\r\n const [sortBy, setSortBy] = useState(initialFilters?.sortBy || \"\");\r\n const [approvalTypeOptions, setApprovalTypeOptions] = useState<any[]>([]);\r\n\r\n // Fetch approval types from API\r\n useEffect(() => {\r\n api\r\n .get({ url: \"/workflow/activities?page=1&size=1000\", serviceURL: \"api\" })\r\n .then((res: any) => {\r\n console.log(\"🚀 ~ FilterModal ~ res:\", res);\r\n setApprovalTypeOptions(res?.data?.data || []);\r\n })\r\n .catch((err: any) => {\r\n console.error(\"Failed to fetch approval types:\", err);\r\n });\r\n }, [api]);\r\n\r\n // Reset state when opening with new filters\r\n useEffect(() => {\r\n if (open) {\r\n setApprovalType(initialFilters?.approvalType || \"\");\r\n setApprovalStatus(initialFilters?.approvalStatus || \"\");\r\n setSortBy(initialFilters?.sortBy || \"\");\r\n }\r\n }, [open, initialFilters]);\r\n\r\n const handleReset = () => {\r\n setApprovalType(\"Bus Approval\");\r\n setApprovalStatus(\"Approved\");\r\n setSortBy(\"Expiring Soon\");\r\n };\r\n\r\n const handleClear = () => {\r\n setApprovalType(\"\");\r\n setApprovalStatus(\"\");\r\n setSortBy(\"\");\r\n };\r\n\r\n const handleApply = () => {\r\n if (onApply) {\r\n onApply({ approvalType, approvalStatus, sortBy });\r\n }\r\n onClose();\r\n };\r\n\r\n return (\r\n <StyledDialog open={open} onClose={onClose}>\r\n <Box>\r\n {/* Header */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n mb: 3,\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n fontSize: \"20px\",\r\n color: \"#666\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n Filter\r\n </Typography>\r\n <Box sx={{ display: \"flex\", gap: \"12px\" }}>\r\n {/* <Button\r\n onClick={handleReset}\r\n sx={{\r\n color: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Reset Filter\r\n </Button> */}\r\n <Button\r\n onClick={handleClear}\r\n sx={{\r\n color: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Clear Filter\r\n </Button>\r\n </Box>\r\n </Box>\r\n\r\n {/* Filter Sections */}\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: \"24px\" }}>\r\n {/* First Section - Approval Type & Status */}\r\n <FilterSection>\r\n <StyledTextField\r\n select\r\n label=\"Approval Type\"\r\n value={approvalType}\r\n onChange={(e) => setApprovalType(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n {approvalTypeOptions.length &&\r\n approvalTypeOptions?.map((option: any) => (\r\n <MenuItem key={option.id} value={option.id}>\r\n {option.activity_name}\r\n </MenuItem>\r\n ))}\r\n </StyledTextField>\r\n\r\n {/* <StyledTextField\r\n select\r\n label=\"Approval Status\"\r\n value={approvalStatus}\r\n onChange={(e) => setApprovalStatus(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n <MenuItem value=\"Approved\">Approved</MenuItem>\r\n <MenuItem value=\"Pending\">Pending</MenuItem>\r\n <MenuItem value=\"Rejected\">Rejected</MenuItem>\r\n </StyledTextField> */}\r\n </FilterSection>\r\n\r\n {/* Second Section - Sort By */}\r\n <FilterSection>\r\n <StyledTextField\r\n select\r\n label=\"Sort By\"\r\n value={sortBy}\r\n onChange={(e) => setSortBy(e.target.value)}\r\n fullWidth\r\n SelectProps={{\r\n IconComponent: KeyboardArrowDownIcon,\r\n }}\r\n >\r\n <MenuItem value=\"asc\">Ascending</MenuItem>\r\n <MenuItem value=\"desc\">Descending</MenuItem>\r\n </StyledTextField>\r\n </FilterSection>\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n gap: \"10px\",\r\n mt: 3,\r\n pt: \"10px\",\r\n }}\r\n >\r\n <Button\r\n onClick={onClose}\r\n variant=\"outlined\"\r\n sx={{\r\n color: \"#666\",\r\n borderColor: \"#666\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n px: \"24px\",\r\n \"&:hover\": {\r\n borderColor: \"#666\",\r\n backgroundColor: \"rgba(0,0,0,0.04)\",\r\n },\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n sx={{\r\n backgroundColor: \"#3f41d1\",\r\n color: \"white\",\r\n textTransform: \"capitalize\",\r\n fontSize: \"14px\",\r\n fontFamily: '\"Graphik Web:Medium\", sans-serif',\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n px: \"24px\",\r\n \"&:hover\": {\r\n backgroundColor: \"#2f31b1\",\r\n },\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n </Box>\r\n </Box>\r\n </StyledDialog>\r\n );\r\n}\r\n","import { Button } from \"@mui/material\";\r\nimport { FilterAlt } from \"@mui/icons-material\";\r\n\r\nexport default function FilterButton({ onClick }: { onClick: () => void }) {\r\n return (\r\n <Button\r\n onClick={onClick}\r\n variant=\"contained\"\r\n startIcon={<FilterAlt sx={{ fontSize: \"18px\" }} />}\r\n sx={{\r\n backgroundColor: \"#f4f0ef !important\",\r\n color: \"#666 !important\",\r\n fontFamily: \"Poppins, sans-serif\",\r\n fontWeight: 500,\r\n fontSize: \"14px\",\r\n letterSpacing: \"0.1px\",\r\n textTransform: \"none\",\r\n borderRadius: \"100px\",\r\n height: \"40px\",\r\n paddingLeft: \"16px\",\r\n paddingRight: \"24px\",\r\n paddingTop: \"10px\",\r\n paddingBottom: \"10px\",\r\n gap: \"8px\",\r\n boxShadow: \"none\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ebe7e6 !important\",\r\n boxShadow: \"none\",\r\n },\r\n \"&:active\": {\r\n boxShadow: \"none\",\r\n },\r\n }}\r\n >\r\n Filter\r\n </Button>\r\n );\r\n}\r\n","import \"./style.css\";\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n Chip,\r\n CircularProgress,\r\n Divider,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n styled,\r\n useTheme,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n} from \"@mui/material\";\r\nimport WorkflowRequestCard from \"./WorkflowRequestCard\";\r\nimport { Box } from \"@mui/system\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport React, { useCallback, useEffect, useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport { useWorkflowContext } from \"../context\";\r\nimport type { ApprovalWorkflowProps } from \"../types\";\r\nimport ActionMenu from \"./Statusselector\";\r\nimport SendBackDialog from \"./dialogs/SendBackDialog\";\r\nimport ApproveDialog from \"./dialogs/ApproveDialog\";\r\nimport RejectDialog from \"./dialogs/RejectDialog\";\r\nimport OnHoldDialog from \"./dialogs/OnHoldDialog\";\r\nimport CustomTimelineWithStatus from \"./CustomTimeLineWithStatus\";\r\nimport useDebounce from \"src/hooks/useDebounce\";\r\nimport SearchBox from \"src/common-component/SearchBox\";\r\nimport { CheckCircleOutlineOutlined } from \"@mui/icons-material\";\r\nimport WorkFlowTimeline from \"./WorklfowTimeline\";\r\nimport WorkflowButton from \"src/common-component/WorkflowButton\";\r\nimport { FilterModal } from \"src/common-component/FilterModal\";\r\nimport FilterButton from \"src/common-component/FilterButton\";\r\n\r\nconst StyledChipProps = styled(Chip)(({ theme }) => ({\r\n \"&.MuiChip-colorPrimary\": {\r\n border: `1px solid ${theme.palette.primary.dark}`,\r\n borderRadius: \"8px\",\r\n height: \"36px\",\r\n padding: \"6px 4px\",\r\n background: `${\"rgba(25,118,210,0.1)\"}`,\r\n color: `${theme.palette.primary.dark}`,\r\n width: \"170px\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n \"&.MuiChip-colorDefault\": {\r\n border: `1px solid ${theme.palette.grey[300]} !important`,\r\n borderRadius: \"8px\",\r\n height: \"36px\",\r\n padding: \"6px 4px\",\r\n background: \"none !important\",\r\n color: `${\r\n (theme as any).palette?.customColors?.mainText ??\r\n theme.palette.text.primary\r\n } `,\r\n width: \"170px\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n}));\r\n\r\nexport function ApprovalWorkflow({\r\n selectedWorkflowsList = [],\r\n userInfo,\r\n}: ApprovalWorkflowProps) {\r\n const theme = useTheme();\r\n const { api, urlBuilder, loadingComponent, ENV_VARIABLES } =\r\n useWorkflowContext();\r\n\r\n const [selectedOption, setSelectedOption] = useState<string>(\r\n selectedWorkflowsList.length ? \"selected\" : \"Assign To Me\"\r\n );\r\n const [expandedId, setExpandedId] = useState<string | null>(null);\r\n const [sendDialog, setSendDialog] = React.useState<string | null>(null);\r\n const [approveTarget, setApproveTarget] = React.useState<any>(null);\r\n const [rejectTarget, setRejectTarget] = React.useState<any>(null);\r\n const [onHoldTarget, setOnHoldTarget] = React.useState<any>(null);\r\n const [expandedDetails, setExpandedDetails] = useState<any>([]);\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ expandedDetails:\", expandedDetails);\r\n const [descriptionView, setDescriptionView] = useState<any>(null);\r\n const [urlConfig, setUrlConfig] = useState<any>({});\r\n\r\n const [viewMoreDetails, setViewMoreDetails] = useState<any>(null);\r\n const [isViewMoreOpen, setIsViewMoreOpen] = useState(false);\r\n const [isFilterOpen, setIsFilterOpen] = useState(false);\r\n\r\n const handleOpenViewMore = (details: any) => {\r\n setViewMoreDetails(details);\r\n setIsViewMoreOpen(true);\r\n };\r\n\r\n const handleCloseViewMore = () => {\r\n setIsViewMoreOpen(false);\r\n setViewMoreDetails(null);\r\n };\r\n\r\n // Tabs State\r\n const [tabs, setTabs] = useState<any>({\r\n \"Assign To Me\": {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n \"All Requests\": {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n Completed: {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n selected: {\r\n data: [],\r\n page: 1,\r\n search: \"\",\r\n hasMore: true,\r\n loading: false,\r\n initialized: false,\r\n filters: null,\r\n },\r\n });\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ tabs:\", tabs);\r\n\r\n // Search code start\r\n const [searchText, setSearchText] = useState(\"\");\r\n const debouncedSearchTerm = useDebounce(searchText, 500);\r\n\r\n // Sync searchText when switching tabs\r\n useEffect(() => {\r\n setSearchText(tabs[selectedOption]?.search || \"\");\r\n }, [selectedOption]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Trigger search update in tabs state\r\n useEffect(() => {\r\n // Only trigger if search term actually changed for this tab\r\n // Don't trigger on initial tab switch (when syncing searchText)\r\n if (\r\n debouncedSearchTerm !== tabs[selectedOption].search &&\r\n tabs[selectedOption]?.initialized\r\n ) {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n search: debouncedSearchTerm,\r\n page: 1,\r\n hasMore: true,\r\n data: [], // Clear data on new search\r\n },\r\n }));\r\n // Trigger API call with new search term\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n debouncedSearchTerm,\r\n tabs[selectedOption]?.filters\r\n );\r\n }\r\n }, [debouncedSearchTerm]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Search code start\r\n const handleClearSearch = useCallback(() => {\r\n setSearchText(\"\");\r\n }, []);\r\n\r\n const handleSearchChange = useCallback((value: string) => {\r\n setSearchText(value);\r\n }, []);\r\n\r\n // Infinite scroll observer\r\n const observer = React.useRef<IntersectionObserver | null>(null);\r\n\r\n const lastCardRef = useCallback(\r\n (node: any) => {\r\n const currentTab = tabs[selectedOption];\r\n if (currentTab?.loading || !currentTab?.hasMore) return;\r\n if (observer.current) observer.current.disconnect();\r\n\r\n observer.current = new IntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n page: prev[selectedOption].page + 1,\r\n },\r\n }));\r\n }\r\n });\r\n\r\n if (node) observer.current.observe(node);\r\n },\r\n [tabs, selectedOption]\r\n );\r\n\r\n const handleSendBack = (workflowLogId: string) => {\r\n setSendDialog(workflowLogId);\r\n };\r\n\r\n const handleApprove = (workflowLogId: any) => {\r\n setApproveTarget(workflowLogId);\r\n };\r\n\r\n const handleReject = (workflowLogId: string) => {\r\n setRejectTarget(workflowLogId);\r\n };\r\n\r\n const handleOnHold = (workflowLogId: string) => {\r\n setOnHoldTarget(workflowLogId);\r\n };\r\n\r\n const handleApplyFilter = (filters: any) => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [selectedOption]: {\r\n ...prev[selectedOption],\r\n filters: filters,\r\n page: 1,\r\n hasMore: true,\r\n data: [],\r\n },\r\n }));\r\n setIsFilterOpen(false);\r\n fetchData(selectedOption, 1, tabs[selectedOption].search, filters);\r\n };\r\n\r\n const fetchData = useCallback(\r\n (tab: string, page: number, search: string, filtersOverride?: any) => {\r\n if (!userInfo?.userInfo?.id) return;\r\n\r\n const currentFilters = filtersOverride || tabs[tab]?.filters;\r\n console.log(\"🚀 ~ ApprovalWorkflow ~ currentFilters:\", currentFilters);\r\n let filterQuery = \"\";\r\n if (currentFilters) {\r\n if (currentFilters.approvalType)\r\n filterQuery += `&activityId=${encodeURIComponent(\r\n currentFilters.approvalType\r\n )}`;\r\n if (currentFilters.approvalStatus)\r\n filterQuery += `&approval_status=${encodeURIComponent(\r\n currentFilters.approvalStatus\r\n )}`;\r\n if (currentFilters.sortBy)\r\n filterQuery += `&tat=${encodeURIComponent(currentFilters.sortBy)}`;\r\n }\r\n\r\n let url = \"\";\r\n const query = `paginate=${true}&page=${page}&size=10&search=${encodeURIComponent(\r\n search\r\n )}${filterQuery}`;\r\n\r\n if (tab === \"Assign To Me\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}&type=pending`;\r\n } else if (tab === \"All Requests\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}`;\r\n } else if (tab === \"Completed\") {\r\n url = `/workflow/activity-workflow/${userInfo.userInfo.id}?${query}&type=completed`;\r\n } else if (tab === \"selected\") {\r\n // Handle selected if needed, otherwise skip or implement bulk details logic\r\n if (selectedWorkflowsList.length && !tabs[\"selected\"].initialized) {\r\n api\r\n .post({\r\n url: `/workflow/bulk-details`,\r\n serviceURL: \"api\",\r\n data: { workflowIds: selectedWorkflowsList },\r\n })\r\n .then((res) => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n selected: {\r\n ...prev.selected,\r\n data: res?.data || [],\r\n loading: false,\r\n initialized: true,\r\n hasMore: false, // No pagination for selected for now\r\n },\r\n }));\r\n });\r\n }\r\n return;\r\n }\r\n\r\n if (!url) return;\r\n\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: { ...prev[tab], loading: true },\r\n }));\r\n\r\n api\r\n .get({ url, serviceURL: \"api\" })\r\n .then((res: any) => {\r\n const newItems = res?.data?.activities || [];\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: {\r\n ...prev[tab],\r\n data: page === 1 ? newItems : [...prev[tab].data, ...newItems],\r\n count: res?.data?.totalCount,\r\n loading: false,\r\n hasMore: newItems.length === 10,\r\n initialized: true,\r\n },\r\n }));\r\n })\r\n .catch(() => {\r\n setTabs((prev: any) => ({\r\n ...prev,\r\n [tab]: { ...prev[tab], loading: false },\r\n }));\r\n });\r\n },\r\n [api, userInfo, selectedWorkflowsList, tabs]\r\n );\r\n\r\n const handleProfileToggle = (option: string) => {\r\n setSelectedOption(option);\r\n // Fetch if not initialized and not 'selected' (handled separately or via same logic)\r\n // Note: 'selected' is special case in original code too.\r\n if (!tabs[option]?.initialized) {\r\n fetchData(option, 1, tabs[option]?.search || \"\");\r\n }\r\n };\r\n\r\n const handleExpandClick = (id: string | null) => {\r\n setExpandedId((prevId) => (prevId === id ? null : id));\r\n fetchExpandedActivityLogs(id);\r\n };\r\n\r\n const getStatus = (status: string) => {\r\n switch (status.toLowerCase()) {\r\n case \"approved\":\r\n return {\r\n title: \"Approved\",\r\n color: \"#e6f7e9\",\r\n labelColor: \"#389e49\",\r\n };\r\n\r\n case \"rejected\":\r\n return {\r\n title: \"Rejected\",\r\n color: \"#fff1f0\",\r\n labelColor: \"#f5222d\",\r\n };\r\n\r\n case \"onhold\":\r\n return {\r\n title: \"On Hold\",\r\n color: \"#fff7e6\",\r\n labelColor: \"#faad14\",\r\n };\r\n\r\n case \"sendback\":\r\n return {\r\n title: \"Send Back\",\r\n color: \"#e6f7ff\",\r\n labelColor: \"#1890ff\",\r\n };\r\n\r\n case \"completed\":\r\n return {\r\n title: \"Send Back\",\r\n color: \"#e6f7ff\",\r\n labelColor: \"#1890ff\",\r\n };\r\n\r\n case \"pending\":\r\n return {\r\n title: \"Pending\",\r\n color: \"#f0f0f0\",\r\n labelColor: \"#595959\",\r\n };\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const approvalChipLabel = [\r\n {\r\n label: \"Assign To Me\",\r\n icon: <span className=\"icon-document-forward\"></span>,\r\n count: tabs[\"Assign To Me\"]?.count || 0,\r\n },\r\n {\r\n label: \"All Requests\",\r\n icon: <span className=\"icon-document-copy\"></span>,\r\n count: tabs[\"All Requests\"]?.count || 0,\r\n },\r\n {\r\n label: \"Completed\",\r\n icon: <span className=\"icon-tick-circle\"></span>,\r\n count: tabs[\"Completed\"]?.count || 0,\r\n },\r\n ];\r\n\r\n const fetchExpandedActivityLogs = (workflowLogId: string) => {\r\n setExpandedDetails([]);\r\n api\r\n .get({\r\n url: `/workflow/workflow-activity-logs/${workflowLogId}`,\r\n serviceURL: \"api\",\r\n })\r\n .then((res) => setExpandedDetails(res?.data));\r\n };\r\n\r\n // Effects\r\n // Initial fetch for all tabs on mount to show counts\r\n useEffect(() => {\r\n if (userInfo?.userInfo?.id) {\r\n // Fetch data for all tabs on initial load\r\n const tabsToFetch = [\"Assign To Me\", \"All Requests\", \"Completed\"];\r\n tabsToFetch.forEach((tab) => {\r\n if (!tabs[tab]?.initialized) {\r\n fetchData(tab, 1, \"\");\r\n }\r\n });\r\n }\r\n }, [userInfo]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Pagination Effect\r\n useEffect(() => {\r\n const tabState = tabs[selectedOption];\r\n if (tabState?.page > 1) {\r\n fetchData(selectedOption, tabState.page, tabState.search);\r\n }\r\n }, [tabs[selectedOption]?.page]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n if (\r\n Object.keys(urlConfig).length > 0 &&\r\n userInfo &&\r\n !tabs[\"Assign To Me\"].initialized\r\n ) {\r\n // Fetch generic or specific logic if needed on URL config load\r\n // But we already have the main useEffect triggering fetch.\r\n // Assuming this was for module specific urls which might be needed for rendering.\r\n // If we want to re-fetch or ensure fetch:\r\n fetchData(\"Assign To Me\", 1, tabs[\"Assign To Me\"]?.search || \"\");\r\n }\r\n }, [urlConfig, userInfo]);\r\n\r\n const buildRedirectionUrl = (info: any) => {\r\n const { module_name, module_id, reference_id, redirection_link } = info;\r\n\r\n // Direct URL override\r\n if (redirection_link) return redirection_link;\r\n\r\n // Handle known module types\r\n if (module_name === \"route_approval\") {\r\n return `${ENV_VARIABLES?.TRANSPORT_URL}route-listing/view/${reference_id}`;\r\n } else if (module_name === \"update_bus_details_approval\") {\r\n return `${ENV_VARIABLES?.TRANSPORT_URL}bus-listing/view/${reference_id}`;\r\n } else if (module_name === \"kit_handover_approve\") {\r\n return `${ENV_VARIABLES?.FINANCE_URL}fee-collection/?reference_id=${reference_id}&module_name=${module_name}&module_id=${module_id}`;\r\n }\r\n\r\n // Generic fallback — uses urlConfig and optional urlBuilder\r\n if (urlBuilder) {\r\n return urlBuilder(module_name, module_id, urlConfig, reference_id);\r\n }\r\n\r\n const ref = urlConfig?.[module_name];\r\n if (ref?.base_variable && ref?.sub_url) {\r\n const BASE_ENV_VARIABLE =\r\n ENV_VARIABLES[\r\n ref?.base_variable.split(\"_\")[3] +\r\n \"_\" +\r\n ref?.base_variable.split(\"_\")[4]\r\n ];\r\n const qs = new URLSearchParams();\r\n if (reference_id) qs.set(\"reference_id\", String(reference_id));\r\n if (module_name) qs.set(\"module_name\", String(module_name));\r\n if (module_id) qs.set(\"module_id\", String(module_id));\r\n return `${BASE_ENV_VARIABLE}${ref.sub_url}?${qs.toString()}`;\r\n }\r\n\r\n return \"#\";\r\n };\r\n\r\n function timeLeftDHm(targetISO: string) {\r\n const diff = new Date(targetISO).getTime() - Date.now();\r\n if (diff <= 0) return \"0d: 0h: 0m\";\r\n\r\n const totalMinutes = Math.floor(diff / 60000);\r\n\r\n const d = Math.floor(totalMinutes / 1440);\r\n const h = Math.floor((totalMinutes % 1440) / 60);\r\n const m = totalMinutes % 60;\r\n\r\n return `${d}d: ${h}h: ${m}m`;\r\n }\r\n\r\n if (\r\n tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page === 1 &&\r\n loadingComponent\r\n )\r\n return <>{loadingComponent}</>;\r\n console.info(\"LIBRARY RUNNING...\");\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flexWrap: \"nowrap\",\r\n // width:\"1100px\",height:\"90%\",\r\n overflow: \"hidden !important\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n width: \"1141px\",\r\n maxWidth: \"1141px\",\r\n minWidth: \"1141px\",\r\n height: \"100%\",\r\n overflow: \"hidden !important\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n }}\r\n >\r\n <Box>\r\n {selectedWorkflowsList?.length ? (\r\n <Tooltip title=\"Selected Workflows\">\r\n <StyledChipProps\r\n label={\"Selected\"}\r\n icon={<span className=\"icon-eye\"></span>}\r\n color={\r\n selectedOption?.includes(\"selected\")\r\n ? \"primary\"\r\n : \"default\"\r\n }\r\n variant=\"filled\"\r\n sx={{\r\n mr: 4,\r\n mb: 4,\r\n \"& .MuiChip-icon\": { fontSize: \"18px !important\" },\r\n }}\r\n onClick={() => handleProfileToggle(\"selected\")}\r\n />\r\n </Tooltip>\r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {approvalChipLabel.map(({ label, icon, count }, index) => (\r\n <Tooltip key={index} title={`${count} ${label}`}>\r\n <StyledChipProps\r\n label={`${count} ${label}`}\r\n icon={icon}\r\n color={\r\n selectedOption?.includes(label) ? \"primary\" : \"default\"\r\n }\r\n variant=\"filled\"\r\n sx={{\r\n mr: 4,\r\n mb: 4,\r\n \"& .MuiChip-icon\": { fontSize: \"18px !important\" },\r\n }}\r\n onClick={() => handleProfileToggle(label)}\r\n />\r\n </Tooltip>\r\n ))}\r\n </Box>\r\n <div style={{ display: \"flex\" }}>\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n maxWidth: 295,\r\n ml: \"auto\",\r\n mr: \"10px\",\r\n }}\r\n >\r\n <SearchBox\r\n placeHolderTitle=\"Search\"\r\n searchText={searchText}\r\n handleClearSearch={handleClearSearch}\r\n handleInputChange={(e) => handleSearchChange(e.target.value)}\r\n />\r\n </Box>\r\n <FilterButton onClick={() => setIsFilterOpen((prev) => !prev)} />\r\n </div>\r\n </Box>\r\n\r\n {/* Unified List Rendering */}\r\n <Box\r\n className=\"fixedModal hide-scrollbar\"\r\n sx={{\r\n overflowY: \"auto\",\r\n height: \"calc(100vh - 180px)\",\r\n px: 2,\r\n pb: 3,\r\n }}\r\n >\r\n {tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page === 1 ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n p: 4,\r\n width: \"1100px\",\r\n }}\r\n >\r\n <CircularProgress />\r\n </Box>\r\n ) : tabs[selectedOption]?.data?.length > 0 ? (\r\n tabs[selectedOption].data.map((info: any, index: number) => (\r\n <WorkflowRequestCard\r\n key={index}\r\n requestDetails={info}\r\n index={index}\r\n isLast={index === tabs[selectedOption].data.length - 1}\r\n lastCardRef={lastCardRef}\r\n expandedId={expandedId}\r\n handleExpandClick={handleExpandClick}\r\n handleOpenViewMore={handleOpenViewMore}\r\n handleApprove={handleApprove}\r\n handleReject={handleReject}\r\n handleSendBack={handleSendBack}\r\n handleOnHold={handleOnHold}\r\n expandedDetails={expandedDetails}\r\n userInfo={userInfo}\r\n helpers={{\r\n timeLeftDHm,\r\n getStatus,\r\n buildRedirectionUrl,\r\n }}\r\n />\r\n ))\r\n ) : (\r\n <div\r\n style={{\r\n height: \"100%\",\r\n width: \"1100px\",\r\n color: \"gray\",\r\n fontSize: \"20px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n NO RECORD FOUND\r\n </div>\r\n )}\r\n {tabs[selectedOption]?.loading &&\r\n tabs[selectedOption]?.page > 1 && (\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", p: 2 }}>\r\n <CircularProgress size={24} />\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n {/* Dialogs */}\r\n <SendBackDialog\r\n openModal={!!sendDialog}\r\n closeModal={() => setSendDialog(null)}\r\n header=\"Send Back\"\r\n workflowLogId={sendDialog || \"\"}\r\n onSuccess={() =>\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n tabs[selectedOption]?.search,\r\n tabs[selectedOption]?.filters\r\n )\r\n }\r\n />\r\n <ApproveDialog\r\n openModal={!!approveTarget}\r\n closeModal={() => setApproveTarget(null)}\r\n header=\"Approve\"\r\n workflowLogId={approveTarget?.split(\"|\")?.[0]}\r\n statusId={approveTarget?.split(\"|\")?.[1]}\r\n onSuccess={() =>\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n tabs[selectedOption]?.search,\r\n tabs[selectedOption]?.filters\r\n )\r\n }\r\n />\r\n <RejectDialog\r\n openModal={!!rejectTarget}\r\n closeModal={() => setRejectTarget(null)}\r\n header=\"Reject\"\r\n workflowLogId={rejectTarget?.split(\"|\")?.[0]}\r\n statusId={rejectTarget?.split(\"|\")?.[1]}\r\n rejection_reason_master={rejectTarget?.split(\"|\")?.[2]}\r\n onSuccess={() =>\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n tabs[selectedOption]?.search,\r\n tabs[selectedOption]?.filters\r\n )\r\n }\r\n />\r\n <OnHoldDialog\r\n openModal={!!onHoldTarget}\r\n closeModal={() => setOnHoldTarget(null)}\r\n header=\"On Hold\"\r\n workflowLogId={onHoldTarget?.split(\"|\")?.[0]}\r\n statusId={onHoldTarget?.split(\"|\")?.[1]}\r\n onSuccess={() =>\r\n fetchData(\r\n selectedOption,\r\n 1,\r\n tabs[selectedOption]?.search,\r\n tabs[selectedOption]?.filters\r\n )\r\n }\r\n />\r\n <Dialog\r\n open={isViewMoreOpen}\r\n onClose={handleCloseViewMore}\r\n maxWidth=\"sm\"\r\n fullWidth\r\n PaperProps={{\r\n sx: {\r\n borderRadius: \"16px\",\r\n padding: \"10px\",\r\n position: \"relative\", // For absolute close button\r\n },\r\n }}\r\n >\r\n <DialogTitle\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n paddingBottom: \"10px\",\r\n }}\r\n >\r\n <Typography variant=\"h6\" sx={{ fontWeight: 600 }}>\r\n Description Details\r\n </Typography>\r\n <IconButton\r\n onClick={handleCloseViewMore}\r\n sx={{\r\n position: \"absolute\",\r\n right: 8,\r\n top: 8,\r\n color: (theme) => theme.palette.grey[500],\r\n }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers sx={{ borderTop: \"none\" }}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\r\n {viewMoreDetails?.map((data: any, idx: number) => (\r\n <Typography\r\n key={idx}\r\n className=\"detail-item\"\r\n sx={{ fontSize: \"14px\" }}\r\n >\r\n <span style={{ fontWeight: \"bold\", color: \"#666\" }}>\r\n {data[0]\r\n .replace(/_/g, \" \")\r\n .replace(/\\b\\w/g, (c: any) => c.toUpperCase())}\r\n :\r\n </span>{\" \"}\r\n <span style={{ color: \"#000\" }}>{data[1]}</span>\r\n </Typography>\r\n ))}\r\n\r\n {/* <Box\r\n sx={{ marginTop: 2, paddingTop: 2, borderTop: \"1px solid #eee\" }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#3F41D1\",\r\n cursor: \"pointer\",\r\n fontWeight: 600,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"underline\",\r\n }}\r\n >\r\n View Attachment\r\n </Typography>\r\n </Box> */}\r\n </Box>\r\n </DialogContent>\r\n </Dialog>\r\n <FilterModal\r\n open={isFilterOpen}\r\n onClose={() => setIsFilterOpen(false)}\r\n initialFilters={tabs[selectedOption]?.filters}\r\n onApply={handleApplyFilter}\r\n />\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport { DialogTitle, IconButton } from \"@mui/material\";\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\nimport { ApprovalWorkflow } from \"./ApprovalWorkflow\";\nimport type { DialogOpenerProps } from \"../types\";\nimport WorkflowButton from \"../common-component/WorkflowButton\";\n\nexport function DialogOpener({\n openDialog,\n handleClose,\n userInfoData,\n selectedWorkflowsList = [],\n}: DialogOpenerProps) {\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n const [screenWidth, setScreenWidth] = useState<number>(\n typeof window !== \"undefined\" ? window.innerWidth : 0\n );\n console.log(\"Dialog opener props\", {\n openDialog,\n handleClose,\n userInfoData,\n selectedWorkflowsList,\n });\n useEffect(() => {\n const updateScreenWidth = () => setScreenWidth(window.innerWidth);\n window.addEventListener(\"resize\", updateScreenWidth);\n return () => window.removeEventListener(\"resize\", updateScreenWidth);\n }, []);\n\n return (\n <>\n <Dialog\n fullScreen={false}\n open={openDialog}\n onClose={() => handleClose && handleClose()}\n aria-labelledby=\"responsive-dialog-title\"\n maxWidth=\"lg\"\n sx={{\n \"& .MuiDialog-container\": {\n justifyContent: \"flex-end\",\n alignItems: \"flex-start\",\n },\n \"& .MuiDialog-paper\": {\n position: \"fixed\",\n right: 0,\n top: 0,\n height: \"100vh\",\n maxHeight: \"100vh\",\n margin: 0,\n borderRadius: 0,\n },\n }}\n >\n <DialogTitle>\n Workflow\n <IconButton\n onClick={handleClose}\n disableFocusRipple\n disableRipple\n sx={{ float: \"right\" }}\n >\n <HighlightOffIcon style={{ color: \"#666666\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n overflow: \"hidden\",\n width: \"100%\",\n height: \"100%\",\n padding: \"0 20px\",\n }}\n >\n <ApprovalWorkflow\n userInfo={userInfoData}\n selectedWorkflowsList={selectedWorkflowsList}\n />\n </DialogContent>\n <DialogActions>\n <WorkflowButton\n variant=\"approve\"\n onClick={handleClose}\n className=\"dialog-close-btn\"\n >\n Close\n </WorkflowButton>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n","import React from \"react\";\r\nimport { WorkflowProvider } from \"./context\";\r\nimport type {\r\n ApiClient,\r\n UrlBuilder,\r\n DialogOpenerProps,\r\n ApprovalWorkflowProps,\r\n} from \"./types\";\r\nimport { DialogOpener as InternalDialogOpener } from \"./ui/DialogOpener\";\r\nimport { ApprovalWorkflow as InternalApprovalWorkflow } from \"./ui/ApprovalWorkflow\";\r\n\r\nexport type { ApiClient, UrlBuilder, DialogOpenerProps, ApprovalWorkflowProps };\r\n\r\nexport function DialogOpener(\r\n props: DialogOpenerProps & {\r\n api: ApiClient;\r\n urlBuilder?: UrlBuilder;\r\n loadingComponent?: React.ReactNode;\r\n ENV_VARIABLES?: any;\r\n }\r\n) {\r\n const {\r\n api,\r\n urlBuilder,\r\n loadingComponent,\r\n userInfoData,\r\n ENV_VARIABLES,\r\n ...rest\r\n } = props;\r\n return (\r\n <WorkflowProvider\r\n value={{\r\n api,\r\n urlBuilder,\r\n userInfo: userInfoData,\r\n loadingComponent,\r\n ENV_VARIABLES,\r\n }}\r\n >\r\n <InternalDialogOpener {...rest} userInfoData={userInfoData} />\r\n </WorkflowProvider>\r\n );\r\n}\r\n\r\nexport function ApprovalWorkflow(\r\n props: ApprovalWorkflowProps & {\r\n api: ApiClient;\r\n urlBuilder?: UrlBuilder;\r\n loadingComponent?: React.ReactNode;\r\n ENV_VARIABLES?: any;\r\n }\r\n) {\r\n const {\r\n api,\r\n urlBuilder,\r\n loadingComponent,\r\n userInfo,\r\n ENV_VARIABLES,\r\n ...rest\r\n } = props;\r\n return (\r\n <WorkflowProvider\r\n value={{ api, urlBuilder, userInfo, loadingComponent, ENV_VARIABLES }}\r\n >\r\n <InternalApprovalWorkflow userInfo={userInfo} {...rest} />\r\n </WorkflowProvider>\r\n );\r\n}\r\n"]}