@bigbinary/neeto-approvals-frontend 1.0.1 → 1.2.0

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.
@@ -0,0 +1,290 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants-d561fb6c.js');
4
+ var react = require('react');
5
+ var neetoCist = require('@bigbinary/neeto-cist');
6
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
7
+ var EditorContent = require('@bigbinary/neeto-editor/EditorContent');
8
+ var Label = require('@bigbinary/neetoui/Label');
9
+ var Pane = require('@bigbinary/neetoui/Pane');
10
+ var Tag = require('@bigbinary/neetoui/Tag');
11
+ var Textarea = require('@bigbinary/neetoui/Textarea');
12
+ var Typography = require('@bigbinary/neetoui/Typography');
13
+ var reactI18next = require('react-i18next');
14
+ var reactQuery = require('@tanstack/react-query');
15
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
16
+ var axios = require('axios');
17
+ var Button = require('@bigbinary/neetoui/Button');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+ var dayjs = require('dayjs');
20
+ var timezone = require('dayjs/plugin/timezone');
21
+ var utc = require('dayjs/plugin/utc');
22
+ var i18next = require('i18next');
23
+ var constants$1 = require('@bigbinary/neeto-commons-frontend/constants');
24
+ var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
25
+
26
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
+
28
+ var EditorContent__default = /*#__PURE__*/_interopDefaultLegacy(EditorContent);
29
+ var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
30
+ var Pane__default = /*#__PURE__*/_interopDefaultLegacy(Pane);
31
+ var Tag__default = /*#__PURE__*/_interopDefaultLegacy(Tag);
32
+ var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
33
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
34
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
35
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
36
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
37
+ var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
38
+ var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
39
+
40
+ var fetch = function fetch(params, url) {
41
+ return axios__default["default"].get(url, {
42
+ params: params
43
+ });
44
+ };
45
+ var update = function update(_ref) {
46
+ var id = _ref.id,
47
+ payload = _ref.payload;
48
+ return axios__default["default"].put("".concat(constants.BASE_URL, "/requests/").concat(id), {
49
+ request: payload
50
+ });
51
+ };
52
+ var requestsApi = {
53
+ fetch: fetch,
54
+ update: update
55
+ };
56
+
57
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
58
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { constants._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
59
+ var useFetchRequests = function useFetchRequests(_ref) {
60
+ var requestUrl = _ref.requestUrl,
61
+ _ref$params = _ref.params,
62
+ params = _ref$params === void 0 ? {} : _ref$params,
63
+ _ref$options = _ref.options,
64
+ options = _ref$options === void 0 ? {} : _ref$options;
65
+ return reactQuery.useQuery(_objectSpread({
66
+ queryKey: [constants.QUERY_KEYS.REQUESTS, params],
67
+ queryFn: function queryFn() {
68
+ return requestsApi.fetch(params, requestUrl);
69
+ },
70
+ select: function select(response) {
71
+ return response.data || response;
72
+ },
73
+ placeholderData: reactQuery.keepPreviousData
74
+ }, options));
75
+ };
76
+ var useUpdateRequest = function useUpdateRequest(options) {
77
+ return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread({
78
+ keysToInvalidate: [[constants.QUERY_KEYS.REQUESTS], [constants.QUERY_KEYS.VIEWS]]
79
+ }, options));
80
+ };
81
+
82
+ var Footer = function Footer(_ref) {
83
+ var isLoading = _ref.isLoading,
84
+ handleSubmit = _ref.handleSubmit,
85
+ isCurrentUserApprover = _ref.isCurrentUserApprover,
86
+ isCurrentUserRequester = _ref.isCurrentUserRequester;
87
+ var _useTranslation = reactI18next.useTranslation(),
88
+ t = _useTranslation.t;
89
+ if (!isCurrentUserApprover && !isCurrentUserRequester) return null;
90
+ if (isCurrentUserApprover) {
91
+ return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Footer, {
92
+ className: "flex gap-x-2",
93
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
94
+ label: t("neetoApprovals.buttons.approve"),
95
+ loading: isLoading,
96
+ type: "submit",
97
+ onClick: function onClick() {
98
+ return handleSubmit(constants.STATUSES.approved);
99
+ }
100
+ }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
101
+ label: t("neetoApprovals.buttons.decline"),
102
+ loading: isLoading,
103
+ style: "text",
104
+ onClick: function onClick() {
105
+ return handleSubmit(constants.STATUSES.rejected);
106
+ }
107
+ })]
108
+ });
109
+ }
110
+ return /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
111
+ className: "flex gap-x-2",
112
+ children: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
113
+ label: t("neetoApprovals.buttons.cancelRequest"),
114
+ loading: isLoading,
115
+ type: "submit",
116
+ onClick: function onClick() {
117
+ return handleSubmit(constants.STATUSES.cancelled);
118
+ }
119
+ })
120
+ });
121
+ };
122
+
123
+ dayjs__default["default"].extend(utc__default["default"]);
124
+ dayjs__default["default"].extend(timezone__default["default"]);
125
+ var updateApprovalDetails = function updateApprovalDetails(_ref) {
126
+ var requestsData = _ref.requestsData,
127
+ approvalDetails = _ref.approvalDetails;
128
+ if (neetoCist.isPresent(requestsData === null || requestsData === void 0 ? void 0 : requestsData.requests) && neetoCist.isPresent(approvalDetails)) {
129
+ var request = neetoCist.findBy({
130
+ id: approvalDetails.id
131
+ }, requestsData.requests) || {};
132
+ return request;
133
+ }
134
+ return {};
135
+ };
136
+ var timeInZone = function timeInZone(time) {
137
+ var _globalProps$user, _globalProps$user2;
138
+ ((_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.timeZone) && dayjs__default["default"].tz.setDefault((_globalProps$user2 = initializers.globalProps.user) === null || _globalProps$user2 === void 0 ? void 0 : _globalProps$user2.timeZone);
139
+ return dayjs__default["default"](time).tz();
140
+ };
141
+ var getApprovalFilter = function getApprovalFilter() {
142
+ return {
143
+ PENDING: {
144
+ label: i18next.t("neetoApprovals.common.pending"),
145
+ value: "PENDING"
146
+ },
147
+ TEMPLATES: {
148
+ label: i18next.t("neetoApprovals.common.template", constants$1.PLURAL),
149
+ value: "TEMPLATES"
150
+ },
151
+ HISTORY: {
152
+ label: i18next.t("neetoApprovals.common.history"),
153
+ value: "HISTORY"
154
+ }
155
+ };
156
+ };
157
+
158
+ var MemoizedEditorContent = /*#__PURE__*/react.memo(EditorContent__default["default"]);
159
+ var RequestDetailsPane = function RequestDetailsPane(_ref) {
160
+ var _window$globalProps, _window$globalProps2;
161
+ var isOpen = _ref.isOpen,
162
+ onClose = _ref.onClose,
163
+ approvalDetails = _ref.approvalDetails,
164
+ _ref$isPending = _ref.isPending,
165
+ isPending = _ref$isPending === void 0 ? false : _ref$isPending;
166
+ var _useTranslation = reactI18next.useTranslation(),
167
+ t = _useTranslation.t;
168
+ var title = approvalDetails.title,
169
+ _approvalDetails$stat = approvalDetails.status,
170
+ status = _approvalDetails$stat === void 0 ? "" : _approvalDetails$stat,
171
+ message = approvalDetails.message,
172
+ createdAt = approvalDetails.createdAt,
173
+ approverName = approvalDetails.approverName,
174
+ approverEmail = approvalDetails.approverEmail,
175
+ _approvalDetails$note = approvalDetails.note,
176
+ initialNote = _approvalDetails$note === void 0 ? "" : _approvalDetails$note,
177
+ requesterName = approvalDetails.requesterName,
178
+ requesterEmail = approvalDetails.requesterEmail;
179
+ var _useState = react.useState(initialNote),
180
+ _useState2 = constants._slicedToArray(_useState, 2),
181
+ note = _useState2[0],
182
+ setNote = _useState2[1];
183
+ var _useUpdateRequest = useUpdateRequest(),
184
+ updatePendingRequest = _useUpdateRequest.mutate,
185
+ isUpdateRequestPending = _useUpdateRequest.isPending;
186
+ react.useEffect(function () {
187
+ setNote(initialNote);
188
+ }, [initialNote]);
189
+ var requesterOrApproverDetails = status === constants.STATUSES.cancelled ? "".concat(requesterName, " (").concat(requesterEmail, ")") : "".concat(approverName, " (").concat(approverEmail, ")");
190
+ var isCurrentUserApprover = ((_window$globalProps = window.globalProps) === null || _window$globalProps === void 0 || (_window$globalProps = _window$globalProps.user) === null || _window$globalProps === void 0 ? void 0 : _window$globalProps.email) === approverEmail;
191
+ var isCurrentUserRequester = ((_window$globalProps2 = window.globalProps) === null || _window$globalProps2 === void 0 || (_window$globalProps2 = _window$globalProps2.user) === null || _window$globalProps2 === void 0 ? void 0 : _window$globalProps2.email) === requesterEmail;
192
+ var getStatusLabel = function getStatusLabel() {
193
+ if (isPending) {
194
+ return t("neetoApprovals.common.waitingFor");
195
+ }
196
+ return constants.STATUS_UPDATED_BY[status];
197
+ };
198
+ var handleOnClose = function handleOnClose() {
199
+ setNote("");
200
+ onClose();
201
+ };
202
+ var handleSubmit = function handleSubmit(status) {
203
+ return updatePendingRequest({
204
+ id: approvalDetails.id,
205
+ payload: constants._defineProperty({
206
+ status: status,
207
+ note: note
208
+ }, "".concat(status, "At"), new Date())
209
+ }, {
210
+ onSuccess: handleOnClose
211
+ });
212
+ };
213
+ return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
214
+ isOpen: isOpen,
215
+ size: "large",
216
+ onClose: handleOnClose,
217
+ children: [/*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Header, {
218
+ className: "space-y-2",
219
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
220
+ style: "h2",
221
+ children: title
222
+ }), /*#__PURE__*/jsxRuntime.jsx(Tag__default["default"], {
223
+ label: neetoCist.capitalize(status),
224
+ style: constants.STATUS_TAG_STYLE[status]
225
+ })]
226
+ }), /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Body, {
227
+ className: "space-y-6",
228
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
229
+ className: "w-full divide-y border px-3",
230
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
231
+ className: "flex space-x-3 p-2",
232
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
233
+ className: "font-normal",
234
+ children: getStatusLabel()
235
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
236
+ style: "body2",
237
+ weight: "medium",
238
+ children: requesterOrApproverDetails
239
+ })]
240
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
241
+ className: "flex space-x-3 p-2",
242
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
243
+ className: "font-normal",
244
+ children: t("neetoApprovals.common.created")
245
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
246
+ style: "body2",
247
+ weight: "medium",
248
+ children: utils.dateFormat.defaultWithTime(timeInZone(createdAt))
249
+ })]
250
+ })]
251
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
252
+ className: "w-full space-y-2",
253
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
254
+ children: t("neetoApprovals.inputs.labels.message")
255
+ }), /*#__PURE__*/jsxRuntime.jsx(MemoizedEditorContent, {
256
+ className: "neeto-ui-bg-gray-100 p-4",
257
+ content: message
258
+ })]
259
+ }), isPending && isCurrentUserApprover && /*#__PURE__*/jsxRuntime.jsx(Textarea__default["default"], {
260
+ className: "w-full",
261
+ disabled: !isPending,
262
+ label: t("neetoApprovals.common.note"),
263
+ value: note,
264
+ placeholder: t("neetoApprovals.inputs.placeholders.add_", {
265
+ what: t("neetoApprovals.common.note")
266
+ }),
267
+ onChange: utils.withEventTargetValue(setNote)
268
+ }), !isPending && note && /*#__PURE__*/jsxRuntime.jsxs("div", {
269
+ className: "w-full space-y-2",
270
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
271
+ children: t("neetoApprovals.common.note")
272
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
273
+ className: "neeto-ui-bg-gray-100 p-4",
274
+ children: note
275
+ })]
276
+ })]
277
+ }), isPending && /*#__PURE__*/jsxRuntime.jsx(Footer, {
278
+ handleSubmit: handleSubmit,
279
+ isCurrentUserApprover: isCurrentUserApprover,
280
+ isCurrentUserRequester: isCurrentUserRequester,
281
+ isLoading: isUpdateRequestPending
282
+ })]
283
+ });
284
+ };
285
+
286
+ exports.RequestDetailsPane = RequestDetailsPane;
287
+ exports.getApprovalFilter = getApprovalFilter;
288
+ exports.updateApprovalDetails = updateApprovalDetails;
289
+ exports.useFetchRequests = useFetchRequests;
290
+ //# sourceMappingURL=index-c6f5a782.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-c6f5a782.js","sources":["../app/javascript/src/apis/requests.js","../app/javascript/src/hooks/reactQuery/requests/useRequestsApi.js","../app/javascript/src/components/Approvals/RequestDetailsPane/Footer.jsx","../app/javascript/src/components/Approvals/utils.js","../app/javascript/src/components/Approvals/RequestDetailsPane/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nimport { BASE_URL } from \"common/constants\";\n\nconst fetch = (params, url) => axios.get(url, { params });\n\nconst update = ({ id, payload }) =>\n axios.put(`${BASE_URL}/requests/${id}`, { request: payload });\n\nconst requestsApi = { fetch, update };\n\nexport default requestsApi;\n","import { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\n\nimport requestsApi from \"apis/requests\";\nimport { QUERY_KEYS } from \"common/queryConstants\";\n\nconst useFetchRequests = ({ requestUrl, params = {}, options = {} }) =>\n useQuery({\n queryKey: [QUERY_KEYS.REQUESTS, params],\n queryFn: () => requestsApi.fetch(params, requestUrl),\n select: response => response.data || response,\n placeholderData: keepPreviousData,\n ...options,\n });\n\nconst useUpdateRequest = options =>\n useMutationWithInvalidation(requestsApi.update, {\n keysToInvalidate: [[QUERY_KEYS.REQUESTS], [QUERY_KEYS.VIEWS]],\n ...options,\n });\n\nexport { useFetchRequests, useUpdateRequest };\n","import { Button, Pane } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { STATUSES } from \"../constants\";\n\nconst Footer = ({\n isLoading,\n handleSubmit,\n isCurrentUserApprover,\n isCurrentUserRequester,\n}) => {\n const { t } = useTranslation();\n\n if (!isCurrentUserApprover && !isCurrentUserRequester) return null;\n\n if (isCurrentUserApprover) {\n return (\n <Pane.Footer className=\"flex gap-x-2\">\n <Button\n label={t(\"neetoApprovals.buttons.approve\")}\n loading={isLoading}\n type=\"submit\"\n onClick={() => handleSubmit(STATUSES.approved)}\n />\n <Button\n label={t(\"neetoApprovals.buttons.decline\")}\n loading={isLoading}\n style=\"text\"\n onClick={() => handleSubmit(STATUSES.rejected)}\n />\n </Pane.Footer>\n );\n }\n\n return (\n <Pane.Footer className=\"flex gap-x-2\">\n <Button\n label={t(\"neetoApprovals.buttons.cancelRequest\")}\n loading={isLoading}\n type=\"submit\"\n onClick={() => handleSubmit(STATUSES.cancelled)}\n />\n </Pane.Footer>\n );\n};\n\nexport default Footer;\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { t } from \"i18next\";\nimport { findBy, isPresent } from \"neetocist\";\nimport { PLURAL } from \"neetocommons/constants\";\nimport { globalProps } from \"neetocommons/initializers\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const updateApprovalDetails = ({ requestsData, approvalDetails }) => {\n if (isPresent(requestsData?.requests) && isPresent(approvalDetails)) {\n const request =\n findBy({ id: approvalDetails.id }, requestsData.requests) || {};\n\n return request;\n }\n\n return {};\n};\n\nexport const timeInZone = time => {\n globalProps.user?.timeZone && dayjs.tz.setDefault(globalProps.user?.timeZone);\n\n return dayjs(time).tz();\n};\n\nexport const getApprovalFilter = () => ({\n PENDING: { label: t(\"neetoApprovals.common.pending\"), value: \"PENDING\" },\n TEMPLATES: {\n label: t(\"neetoApprovals.common.template\", PLURAL),\n value: \"TEMPLATES\",\n },\n HISTORY: { label: t(\"neetoApprovals.common.history\"), value: \"HISTORY\" },\n});\n","import { memo, useEffect, useState } from \"react\";\n\nimport { capitalize } from \"neetocist\";\nimport { dateFormat, withEventTargetValue } from \"neetocommons/utils\";\nimport { EditorContent } from \"neetoeditor\";\nimport { Label, Pane, Tag, Textarea, Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useUpdateRequest } from \"hooks/reactQuery/requests/useRequestsApi\";\n\nimport Footer from \"./Footer\";\n\nimport { STATUSES, STATUS_TAG_STYLE, STATUS_UPDATED_BY } from \"../constants\";\nimport { timeInZone } from \"../utils\";\n\nconst MemoizedEditorContent = memo(EditorContent);\n\nconst RequestDetailsPane = ({\n isOpen,\n onClose,\n approvalDetails,\n isPending = false,\n}) => {\n const { t } = useTranslation();\n\n const {\n title,\n status = \"\",\n message,\n createdAt,\n approverName,\n approverEmail,\n note: initialNote = \"\",\n requesterName,\n requesterEmail,\n } = approvalDetails;\n\n const [note, setNote] = useState(initialNote);\n\n const { mutate: updatePendingRequest, isPending: isUpdateRequestPending } =\n useUpdateRequest();\n\n useEffect(() => {\n setNote(initialNote);\n }, [initialNote]);\n\n const requesterOrApproverDetails =\n status === STATUSES.cancelled\n ? `${requesterName} (${requesterEmail})`\n : `${approverName} (${approverEmail})`;\n\n const isCurrentUserApprover =\n window.globalProps?.user?.email === approverEmail;\n\n const isCurrentUserRequester =\n window.globalProps?.user?.email === requesterEmail;\n\n const getStatusLabel = () => {\n if (isPending) {\n return t(\"neetoApprovals.common.waitingFor\");\n }\n\n return STATUS_UPDATED_BY[status];\n };\n\n const handleOnClose = () => {\n setNote(\"\");\n onClose();\n };\n\n const handleSubmit = status =>\n updatePendingRequest(\n {\n id: approvalDetails.id,\n payload: { status, note, [`${status}At`]: new Date() },\n },\n { onSuccess: handleOnClose }\n );\n\n return (\n <Pane {...{ isOpen }} size=\"large\" onClose={handleOnClose}>\n <Pane.Header className=\"space-y-2\">\n <Typography style=\"h2\">{title}</Typography>\n <Tag label={capitalize(status)} style={STATUS_TAG_STYLE[status]} />\n </Pane.Header>\n <Pane.Body className=\"space-y-6\">\n <div className=\"w-full divide-y border px-3\">\n <div className=\"flex space-x-3 p-2\">\n <Label className=\"font-normal\">{getStatusLabel()}</Label>\n <Typography style=\"body2\" weight=\"medium\">\n {requesterOrApproverDetails}\n </Typography>\n </div>\n <div className=\"flex space-x-3 p-2\">\n <Label className=\"font-normal\">\n {t(\"neetoApprovals.common.created\")}\n </Label>\n <Typography style=\"body2\" weight=\"medium\">\n {dateFormat.defaultWithTime(timeInZone(createdAt))}\n </Typography>\n </div>\n </div>\n <div className=\"w-full space-y-2\">\n <Label>{t(\"neetoApprovals.inputs.labels.message\")}</Label>\n <MemoizedEditorContent\n className=\"neeto-ui-bg-gray-100 p-4\"\n content={message}\n />\n </div>\n {isPending && isCurrentUserApprover && (\n <Textarea\n className=\"w-full\"\n disabled={!isPending}\n label={t(\"neetoApprovals.common.note\")}\n value={note}\n placeholder={t(\"neetoApprovals.inputs.placeholders.add_\", {\n what: t(\"neetoApprovals.common.note\"),\n })}\n onChange={withEventTargetValue(setNote)}\n />\n )}\n {!isPending && note && (\n <div className=\"w-full space-y-2\">\n <Label>{t(\"neetoApprovals.common.note\")}</Label>\n <div className=\"neeto-ui-bg-gray-100 p-4\">{note}</div>\n </div>\n )}\n </Pane.Body>\n {isPending && (\n <Footer\n {...{\n handleSubmit,\n isCurrentUserApprover,\n isCurrentUserRequester,\n }}\n isLoading={isUpdateRequestPending}\n />\n )}\n </Pane>\n );\n};\n\nexport default RequestDetailsPane;\n"],"names":["fetch","params","url","axios","get","update","_ref","id","payload","put","concat","BASE_URL","request","requestsApi","useFetchRequests","requestUrl","_ref$params","_ref$options","options","useQuery","_objectSpread","queryKey","QUERY_KEYS","REQUESTS","queryFn","select","response","data","placeholderData","keepPreviousData","useUpdateRequest","useMutationWithInvalidation","keysToInvalidate","VIEWS","Footer","isLoading","handleSubmit","isCurrentUserApprover","isCurrentUserRequester","_useTranslation","useTranslation","t","_jsxs","Pane","className","children","_jsx","Button","label","loading","type","onClick","STATUSES","approved","style","rejected","cancelled","dayjs","extend","utc","timezone","updateApprovalDetails","requestsData","approvalDetails","isPresent","requests","findBy","timeInZone","time","_globalProps$user","_globalProps$user2","globalProps","user","timeZone","tz","setDefault","getApprovalFilter","PENDING","value","TEMPLATES","PLURAL","HISTORY","MemoizedEditorContent","memo","EditorContent","RequestDetailsPane","_window$globalProps","_window$globalProps2","isOpen","onClose","_ref$isPending","isPending","title","_approvalDetails$stat","status","message","createdAt","approverName","approverEmail","_approvalDetails$note","note","initialNote","requesterName","requesterEmail","_useState","useState","_useState2","_slicedToArray","setNote","_useUpdateRequest","updatePendingRequest","mutate","isUpdateRequestPending","useEffect","requesterOrApproverDetails","window","email","getStatusLabel","STATUS_UPDATED_BY","handleOnClose","_defineProperty","Date","onSuccess","size","Header","Typography","Tag","capitalize","STATUS_TAG_STYLE","Body","Label","weight","dateFormat","defaultWithTime","content","Textarea","disabled","placeholder","what","onChange","withEventTargetValue"],"mappings":"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"}