diff --git a/assets/approval-requests-bundle.js b/assets/approval-requests-bundle.js index ee26b3936..a3b51779d 100644 --- a/assets/approval-requests-bundle.js +++ b/assets/approval-requests-bundle.js @@ -184,7 +184,7 @@ const DetailRow = styled(Row$1) ` } `; function ApprovalRequestDetails({ approvalRequest, baseLocale, }) { - return (jsxRuntimeExports.jsxs(Container$1, { children: [jsxRuntimeExports.jsx(ApprovalRequestHeader, { isBold: true, children: "Approval request details" }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Sent by" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: approvalRequest.created_by_user.name }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Sent on" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: formatApprovalRequestDate(approvalRequest.created_at, baseLocale) }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Approver" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: approvalRequest.assignee_user.name }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Status" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: jsxRuntimeExports.jsx(ApprovalStatusTag$1, { status: approvalRequest.status }) }) })] })] })); + return (jsxRuntimeExports.jsxs(Container$1, { children: [jsxRuntimeExports.jsx(ApprovalRequestHeader, { isBold: true, children: "Approval request details" }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Sent by" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: approvalRequest.created_by_user.name }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Sent on" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: formatApprovalRequestDate(approvalRequest.created_at, baseLocale) }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Approver" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: approvalRequest.assignee_user.name }) })] }), jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Status" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: jsxRuntimeExports.jsx(ApprovalStatusTag$1, { status: approvalRequest.status }) }) })] }), approvalRequest.decided_at && (jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Decided" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: formatApprovalRequestDate(approvalRequest.decided_at, baseLocale) }) })] })), approvalRequest.decision_notes.length > 0 && (jsxRuntimeExports.jsxs(DetailRow, { children: [jsxRuntimeExports.jsx(Col, { size: 4, children: jsxRuntimeExports.jsx(FieldLabel$1, { children: "Comment" }) }), jsxRuntimeExports.jsx(Col, { size: 8, children: jsxRuntimeExports.jsx(MD, { children: approvalRequest.decision_notes[0] }) })] }))] })); } var ApprovalRequestDetails$1 = reactExports.memo(ApprovalRequestDetails); @@ -213,7 +213,11 @@ const CustomFieldsGrid = styled.div ` grid-template-columns: repeat(2, 1fr); } `; +const NULL_VALUE_PLACEHOLDER = "-"; function CustomFieldValue({ value, }) { + if (!value) { + return jsxRuntimeExports.jsx(MD, { children: NULL_VALUE_PLACEHOLDER }); + } if (Array.isArray(value)) { return (jsxRuntimeExports.jsx(MD, { children: value.map((val) => (jsxRuntimeExports.jsx(MultiselectTag, { hue: "grey", children: val }, val))) })); } diff --git a/src/modules/approval-requests/components/approval-request/ApprovalRequestDetails.tsx b/src/modules/approval-requests/components/approval-request/ApprovalRequestDetails.tsx index 6b73d226a..111905943 100644 --- a/src/modules/approval-requests/components/approval-request/ApprovalRequestDetails.tsx +++ b/src/modules/approval-requests/components/approval-request/ApprovalRequestDetails.tsx @@ -79,7 +79,31 @@ function ApprovalRequestDetails({ - {/* MKTODO: need to add decided at and decision notes when returning from the API */} + {approvalRequest.decided_at && ( + + + Decided + + + + {formatApprovalRequestDate( + approvalRequest.decided_at, + baseLocale + )} + + + + )} + {approvalRequest.decision_notes.length > 0 && ( + + + Comment + + + {approvalRequest.decision_notes[0]} + + + )} ); } diff --git a/src/modules/approval-requests/components/approval-request/ApprovalTicketDetails.tsx b/src/modules/approval-requests/components/approval-request/ApprovalTicketDetails.tsx index c42f54225..87cb4d0fb 100644 --- a/src/modules/approval-requests/components/approval-request/ApprovalTicketDetails.tsx +++ b/src/modules/approval-requests/components/approval-request/ApprovalTicketDetails.tsx @@ -3,8 +3,8 @@ import styled from "styled-components"; import { MD } from "@zendeskgarden/react-typography"; import { getColorV8 } from "@zendeskgarden/react-theming"; import { Grid } from "@zendeskgarden/react-grid"; -import type { MockTicket } from "../../types"; import { Tag } from "@zendeskgarden/react-tags"; +import type { ApprovalRequestTicket } from "../../types"; const TicketContainer = styled(Grid)` padding: ${(props) => props.theme.space.md}; /* 20px */ @@ -36,11 +36,16 @@ const CustomFieldsGrid = styled.div` } `; +const NULL_VALUE_PLACEHOLDER = "-"; + function CustomFieldValue({ value, }: { value: string | boolean | Array | undefined; }) { + if (!value) { + return {NULL_VALUE_PLACEHOLDER}; + } if (Array.isArray(value)) { return ( @@ -61,7 +66,7 @@ function CustomFieldValue({ } interface ApprovalTicketDetailsProps { - ticket: MockTicket; + ticket: ApprovalRequestTicket; } function ApprovalTicketDetails({ ticket }: ApprovalTicketDetailsProps) { diff --git a/src/modules/approval-requests/types.ts b/src/modules/approval-requests/types.ts index 29064998d..a0cfbef56 100644 --- a/src/modules/approval-requests/types.ts +++ b/src/modules/approval-requests/types.ts @@ -21,8 +21,10 @@ export interface ApprovalRequest { message: string; status: ApprovalRequestStatus; created_at: string; - assignee_user: ApprovalRequestUser; created_by_user: ApprovalRequestUser; + decided_at: string | null; + decision_notes: string[]; + assignee_user: ApprovalRequestUser; ticket_details: ApprovalRequestTicket; }