@bigbinary/neeto-approvals-frontend 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Approvals.js +1088 -0
- package/dist/Approvals.js.map +1 -0
- package/dist/Form.js +219 -0
- package/dist/Form.js.map +1 -0
- package/dist/Public.js +174 -0
- package/dist/Public.js.map +1 -0
- package/dist/RequestDetailsPane.js +26 -0
- package/dist/RequestDetailsPane.js.map +1 -0
- package/dist/cjs/Approvals.js +1136 -0
- package/dist/cjs/Approvals.js.map +1 -0
- package/dist/cjs/Form.js +231 -0
- package/dist/cjs/Form.js.map +1 -0
- package/dist/cjs/Public.js +188 -0
- package/dist/cjs/Public.js.map +1 -0
- package/dist/cjs/RequestDetailsPane.js +32 -0
- package/dist/cjs/RequestDetailsPane.js.map +1 -0
- package/dist/cjs/index.js +62 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/constants-752da2ba.js +158 -0
- package/dist/constants-752da2ba.js.map +1 -0
- package/dist/constants-d561fb6c.js +194 -0
- package/dist/constants-d561fb6c.js.map +1 -0
- package/dist/index-458211fe.js +271 -0
- package/dist/index-458211fe.js.map +1 -0
- package/dist/index-c6f5a782.js +290 -0
- package/dist/index-c6f5a782.js.map +1 -0
- package/dist/index.js +50 -1919
- package/dist/index.js.map +1 -1
- package/dist/useTemplatesApi-5d82bdca.js +107 -0
- package/dist/useTemplatesApi-5d82bdca.js.map +1 -0
- package/dist/useTemplatesApi-dc60dcdd.js +97 -0
- package/dist/useTemplatesApi-dc60dcdd.js.map +1 -0
- package/package.json +24 -12
- package/dist/index.cjs.js +0 -1979
- package/dist/index.cjs.js.map +0 -1
|
@@ -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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"}
|