@bigbinary/neeto-payments-frontend 6.1.11 → 6.1.13

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.
Files changed (221) hide show
  1. package/dist/AccountsDashboard.js +473 -0
  2. package/dist/AccountsDashboard.js.map +1 -0
  3. package/dist/AdminCancelRecurringPaymentButton.js +65 -0
  4. package/dist/AdminCancelRecurringPaymentButton.js.map +1 -0
  5. package/dist/CashPaymentButton.js +58 -0
  6. package/dist/CashPaymentButton.js.map +1 -0
  7. package/dist/ConfirmCashPaymentButton.js +98 -0
  8. package/dist/ConfirmCashPaymentButton.js.map +1 -0
  9. package/dist/CopyButtonWrapper-Bp5IVO76.js +26 -0
  10. package/dist/CopyButtonWrapper-Bp5IVO76.js.map +1 -0
  11. package/dist/CustomerCancelRecurringPaymentForm.js +103 -0
  12. package/dist/CustomerCancelRecurringPaymentForm.js.map +1 -0
  13. package/dist/ExportModal-DyRGg_4o.js +120 -0
  14. package/dist/ExportModal-DyRGg_4o.js.map +1 -0
  15. package/dist/ManualUpiConnect.js +228 -0
  16. package/dist/ManualUpiConnect.js.map +1 -0
  17. package/dist/ManualUpiPayment.js +125 -0
  18. package/dist/ManualUpiPayment.js.map +1 -0
  19. package/dist/ManualUpiPaymentConfirmButton.js +155 -0
  20. package/dist/ManualUpiPaymentConfirmButton.js.map +1 -0
  21. package/dist/ManualUpiPaymentRejectButton.js +126 -0
  22. package/dist/ManualUpiPaymentRejectButton.js.map +1 -0
  23. package/dist/PaymentKindRestrictionAlert.js +31 -0
  24. package/dist/PaymentKindRestrictionAlert.js.map +1 -0
  25. package/dist/PaymentsDashboard.js +555 -0
  26. package/dist/PaymentsDashboard.js.map +1 -0
  27. package/dist/PayoutsDashboard.js +510 -0
  28. package/dist/PayoutsDashboard.js.map +1 -0
  29. package/dist/PayoutsPage.js +158 -0
  30. package/dist/PayoutsPage.js.map +1 -0
  31. package/dist/RazorpayConnect.js +115 -0
  32. package/dist/RazorpayConnect.js.map +1 -0
  33. package/dist/RazorpayLinkedAccountForm.js +201 -0
  34. package/dist/RazorpayLinkedAccountForm.js.map +1 -0
  35. package/dist/RazorpayPaymentButton.js +127 -0
  36. package/dist/RazorpayPaymentButton.js.map +1 -0
  37. package/dist/RecurringPaymentSettings.js +119 -0
  38. package/dist/RecurringPaymentSettings.js.map +1 -0
  39. package/dist/RefundsDashboard.js +484 -0
  40. package/dist/RefundsDashboard.js.map +1 -0
  41. package/dist/SplitTransfersDashboard.js +1042 -0
  42. package/dist/SplitTransfersDashboard.js.map +1 -0
  43. package/dist/StripeCheckoutSetting.js +82 -0
  44. package/dist/StripeCheckoutSetting.js.map +1 -0
  45. package/dist/StripeConnect.js +376 -0
  46. package/dist/StripeConnect.js.map +1 -0
  47. package/dist/StripeManage.js +46 -0
  48. package/dist/StripeManage.js.map +1 -0
  49. package/dist/TaxesDashboard.js +355 -0
  50. package/dist/TaxesDashboard.js.map +1 -0
  51. package/dist/buildStripeTransactionLink.js +12 -0
  52. package/dist/buildStripeTransactionLink.js.map +1 -0
  53. package/dist/cjs/AccountsDashboard.js +475 -0
  54. package/dist/cjs/AccountsDashboard.js.map +1 -0
  55. package/dist/cjs/AdminCancelRecurringPaymentButton.js +67 -0
  56. package/dist/cjs/AdminCancelRecurringPaymentButton.js.map +1 -0
  57. package/dist/cjs/CashPaymentButton.js +60 -0
  58. package/dist/cjs/CashPaymentButton.js.map +1 -0
  59. package/dist/cjs/ConfirmCashPaymentButton.js +100 -0
  60. package/dist/cjs/ConfirmCashPaymentButton.js.map +1 -0
  61. package/dist/cjs/CopyButtonWrapper-I-kdKiiB.js +29 -0
  62. package/dist/cjs/CopyButtonWrapper-I-kdKiiB.js.map +1 -0
  63. package/dist/cjs/CustomerCancelRecurringPaymentForm.js +105 -0
  64. package/dist/cjs/CustomerCancelRecurringPaymentForm.js.map +1 -0
  65. package/dist/cjs/ExportModal-DE-VcN1X.js +122 -0
  66. package/dist/cjs/ExportModal-DE-VcN1X.js.map +1 -0
  67. package/dist/cjs/ManualUpiConnect.js +249 -0
  68. package/dist/cjs/ManualUpiConnect.js.map +1 -0
  69. package/dist/cjs/ManualUpiPayment.js +146 -0
  70. package/dist/cjs/ManualUpiPayment.js.map +1 -0
  71. package/dist/cjs/ManualUpiPaymentConfirmButton.js +176 -0
  72. package/dist/cjs/ManualUpiPaymentConfirmButton.js.map +1 -0
  73. package/dist/cjs/ManualUpiPaymentRejectButton.js +128 -0
  74. package/dist/cjs/ManualUpiPaymentRejectButton.js.map +1 -0
  75. package/dist/cjs/PaymentKindRestrictionAlert.js +33 -0
  76. package/dist/cjs/PaymentKindRestrictionAlert.js.map +1 -0
  77. package/dist/cjs/PaymentsDashboard.js +557 -0
  78. package/dist/cjs/PaymentsDashboard.js.map +1 -0
  79. package/dist/cjs/PayoutsDashboard.js +512 -0
  80. package/dist/cjs/PayoutsDashboard.js.map +1 -0
  81. package/dist/cjs/PayoutsPage.js +160 -0
  82. package/dist/cjs/PayoutsPage.js.map +1 -0
  83. package/dist/cjs/RazorpayConnect.js +117 -0
  84. package/dist/cjs/RazorpayConnect.js.map +1 -0
  85. package/dist/cjs/RazorpayLinkedAccountForm.js +203 -0
  86. package/dist/cjs/RazorpayLinkedAccountForm.js.map +1 -0
  87. package/dist/cjs/RazorpayPaymentButton.js +129 -0
  88. package/dist/cjs/RazorpayPaymentButton.js.map +1 -0
  89. package/dist/cjs/RecurringPaymentSettings.js +140 -0
  90. package/dist/cjs/RecurringPaymentSettings.js.map +1 -0
  91. package/dist/cjs/RefundsDashboard.js +486 -0
  92. package/dist/cjs/RefundsDashboard.js.map +1 -0
  93. package/dist/cjs/SplitTransfersDashboard.js +1063 -0
  94. package/dist/cjs/SplitTransfersDashboard.js.map +1 -0
  95. package/dist/cjs/StripeCheckoutSetting.js +84 -0
  96. package/dist/cjs/StripeCheckoutSetting.js.map +1 -0
  97. package/dist/cjs/StripeConnect.js +397 -0
  98. package/dist/cjs/StripeConnect.js.map +1 -0
  99. package/dist/cjs/StripeManage.js +48 -0
  100. package/dist/cjs/StripeManage.js.map +1 -0
  101. package/dist/cjs/TaxesDashboard.js +376 -0
  102. package/dist/cjs/TaxesDashboard.js.map +1 -0
  103. package/dist/cjs/buildStripeTransactionLink.js +14 -0
  104. package/dist/cjs/buildStripeTransactionLink.js.map +1 -0
  105. package/dist/cjs/constants.js +38 -0
  106. package/dist/cjs/constants.js.map +1 -0
  107. package/dist/cjs/dashboard-BiCB2A6S.js +96 -0
  108. package/dist/cjs/dashboard-BiCB2A6S.js.map +1 -0
  109. package/dist/cjs/exportChannel-BL2RGGhP.js +38 -0
  110. package/dist/cjs/exportChannel-BL2RGGhP.js.map +1 -0
  111. package/dist/cjs/getAddressElementOptions.js +14 -0
  112. package/dist/cjs/getAddressElementOptions.js.map +1 -0
  113. package/dist/cjs/getAmountInLargestCurrencyUnit.js +14 -0
  114. package/dist/cjs/getAmountInLargestCurrencyUnit.js.map +1 -0
  115. package/dist/cjs/getAmountInSmallestCurrencyUnit.js +14 -0
  116. package/dist/cjs/getAmountInSmallestCurrencyUnit.js.map +1 -0
  117. package/dist/cjs/getAmountWithAppliedTax.js +14 -0
  118. package/dist/cjs/getAmountWithAppliedTax.js.map +1 -0
  119. package/dist/cjs/getFormattedAmount.js +14 -0
  120. package/dist/cjs/getFormattedAmount.js.map +1 -0
  121. package/dist/cjs/getFormattedDiscountedAmount.js +14 -0
  122. package/dist/cjs/getFormattedDiscountedAmount.js.map +1 -0
  123. package/dist/cjs/getFormattedDiscountedPercentage.js +14 -0
  124. package/dist/cjs/getFormattedDiscountedPercentage.js.map +1 -0
  125. package/dist/cjs/getFormattedTaxAmount.js +14 -0
  126. package/dist/cjs/getFormattedTaxAmount.js.map +1 -0
  127. package/dist/cjs/getFormattedTipAmount.js +14 -0
  128. package/dist/cjs/getFormattedTipAmount.js.map +1 -0
  129. package/dist/cjs/getQrCodeValue.js +14 -0
  130. package/dist/cjs/getQrCodeValue.js.map +1 -0
  131. package/dist/cjs/getTaxAmount.js +14 -0
  132. package/dist/cjs/getTaxAmount.js.map +1 -0
  133. package/dist/cjs/getTipAmount.js +14 -0
  134. package/dist/cjs/getTipAmount.js.map +1 -0
  135. package/dist/cjs/hasAmountToPay.js +14 -0
  136. package/dist/cjs/hasAmountToPay.js.map +1 -0
  137. package/dist/cjs/index-D6V3Vofs.js +855 -0
  138. package/dist/cjs/index-D6V3Vofs.js.map +1 -0
  139. package/dist/cjs/index.js +121 -0
  140. package/dist/cjs/index.js.map +1 -0
  141. package/dist/cjs/queryConstants-Dc6wh21D.js +35 -0
  142. package/dist/cjs/queryConstants-Dc6wh21D.js.map +1 -0
  143. package/dist/cjs/renderFunctions-DhCwlBWw.js +48 -0
  144. package/dist/cjs/renderFunctions-DhCwlBWw.js.map +1 -0
  145. package/dist/cjs/stripe.esm-CrNYjPcC.js +132 -0
  146. package/dist/cjs/stripe.esm-CrNYjPcC.js.map +1 -0
  147. package/dist/cjs/useAccountsApi-B2MZWHMY.js +42 -0
  148. package/dist/cjs/useAccountsApi-B2MZWHMY.js.map +1 -0
  149. package/dist/cjs/useIntegrationsApi-CVlTmLKc.js +20 -0
  150. package/dist/cjs/useIntegrationsApi-CVlTmLKc.js.map +1 -0
  151. package/dist/cjs/usePaymentApi-BCE_Ql18.js +29 -0
  152. package/dist/cjs/usePaymentApi-BCE_Ql18.js.map +1 -0
  153. package/dist/cjs/usePaymentApi-Bl8jWvnG.js +44 -0
  154. package/dist/cjs/usePaymentApi-Bl8jWvnG.js.map +1 -0
  155. package/dist/cjs/usePaymentApi-CiwXBe90.js +29 -0
  156. package/dist/cjs/usePaymentApi-CiwXBe90.js.map +1 -0
  157. package/dist/cjs/usePlatformApi-CcGVG4Qi.js +55 -0
  158. package/dist/cjs/usePlatformApi-CcGVG4Qi.js.map +1 -0
  159. package/dist/cjs/useRazorpayPayment.js +88 -0
  160. package/dist/cjs/useRazorpayPayment.js.map +1 -0
  161. package/dist/cjs/useStripePromise.js +31 -0
  162. package/dist/cjs/useStripePromise.js.map +1 -0
  163. package/dist/constants.js +8 -0
  164. package/dist/constants.js.map +1 -0
  165. package/dist/dashboard-CwvqEeOl.js +90 -0
  166. package/dist/dashboard-CwvqEeOl.js.map +1 -0
  167. package/dist/exportChannel-Db0U5gc1.js +35 -0
  168. package/dist/exportChannel-Db0U5gc1.js.map +1 -0
  169. package/dist/getAddressElementOptions.js +12 -0
  170. package/dist/getAddressElementOptions.js.map +1 -0
  171. package/dist/getAmountInLargestCurrencyUnit.js +12 -0
  172. package/dist/getAmountInLargestCurrencyUnit.js.map +1 -0
  173. package/dist/getAmountInSmallestCurrencyUnit.js +12 -0
  174. package/dist/getAmountInSmallestCurrencyUnit.js.map +1 -0
  175. package/dist/getAmountWithAppliedTax.js +12 -0
  176. package/dist/getAmountWithAppliedTax.js.map +1 -0
  177. package/dist/getFormattedAmount.js +12 -0
  178. package/dist/getFormattedAmount.js.map +1 -0
  179. package/dist/getFormattedDiscountedAmount.js +12 -0
  180. package/dist/getFormattedDiscountedAmount.js.map +1 -0
  181. package/dist/getFormattedDiscountedPercentage.js +12 -0
  182. package/dist/getFormattedDiscountedPercentage.js.map +1 -0
  183. package/dist/getFormattedTaxAmount.js +12 -0
  184. package/dist/getFormattedTaxAmount.js.map +1 -0
  185. package/dist/getFormattedTipAmount.js +12 -0
  186. package/dist/getFormattedTipAmount.js.map +1 -0
  187. package/dist/getQrCodeValue.js +12 -0
  188. package/dist/getQrCodeValue.js.map +1 -0
  189. package/dist/getTaxAmount.js +12 -0
  190. package/dist/getTaxAmount.js.map +1 -0
  191. package/dist/getTipAmount.js +12 -0
  192. package/dist/getTipAmount.js.map +1 -0
  193. package/dist/hasAmountToPay.js +12 -0
  194. package/dist/hasAmountToPay.js.map +1 -0
  195. package/dist/index-CNouM9_z.js +804 -0
  196. package/dist/index-CNouM9_z.js.map +1 -0
  197. package/dist/index.js +78 -0
  198. package/dist/index.js.map +1 -0
  199. package/dist/queryConstants-C7AqdemO.js +33 -0
  200. package/dist/queryConstants-C7AqdemO.js.map +1 -0
  201. package/dist/renderFunctions-Bx5nzyE_.js +44 -0
  202. package/dist/renderFunctions-Bx5nzyE_.js.map +1 -0
  203. package/dist/stripe.esm-DuZ_gsAa.js +130 -0
  204. package/dist/stripe.esm-DuZ_gsAa.js.map +1 -0
  205. package/dist/useAccountsApi-C9_eNmEZ.js +38 -0
  206. package/dist/useAccountsApi-C9_eNmEZ.js.map +1 -0
  207. package/dist/useIntegrationsApi-D9eA_FrB.js +18 -0
  208. package/dist/useIntegrationsApi-D9eA_FrB.js.map +1 -0
  209. package/dist/usePaymentApi-B98qoM7U.js +26 -0
  210. package/dist/usePaymentApi-B98qoM7U.js.map +1 -0
  211. package/dist/usePaymentApi-DMHHdCK1.js +41 -0
  212. package/dist/usePaymentApi-DMHHdCK1.js.map +1 -0
  213. package/dist/usePaymentApi-DSlW_EBq.js +27 -0
  214. package/dist/usePaymentApi-DSlW_EBq.js.map +1 -0
  215. package/dist/usePlatformApi-sJUY6wju.js +50 -0
  216. package/dist/usePlatformApi-sJUY6wju.js.map +1 -0
  217. package/dist/useRazorpayPayment.js +86 -0
  218. package/dist/useRazorpayPayment.js.map +1 -0
  219. package/dist/useStripePromise.js +29 -0
  220. package/dist/useStripePromise.js.map +1 -0
  221. package/package.json +1 -1
@@ -0,0 +1,1063 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var constants$1 = require('neetocommons/constants');
5
+ var utils = require('neetocommons/utils');
6
+ var neetoFiltersFrontend = require('@bigbinary/neeto-filters-frontend');
7
+ var neetoui = require('@bigbinary/neetoui');
8
+ var ramda = require('ramda');
9
+ var reactRouterDom = require('react-router-dom');
10
+ var ExportModal = require('./ExportModal-DE-VcN1X.js');
11
+ var reactQuery = require('@tanstack/react-query');
12
+ var reactUtils = require('neetocommons/react-utils');
13
+ var axios = require('axios');
14
+ var constants = require('./index-D6V3Vofs.js');
15
+ var queryConstants = require('./queryConstants-Dc6wh21D.js');
16
+ var formik = require('@bigbinary/neetoui/formik');
17
+ var reactI18next = require('react-i18next');
18
+ var i18next = require('i18next');
19
+ var yup = require('yup');
20
+ var jsxRuntime = require('react/jsx-runtime');
21
+ var neetocist = require('neetocist');
22
+ var Columns = require('@bigbinary/neeto-molecules/Columns');
23
+ var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
24
+ var exportChannel = require('./exportChannel-BL2RGGhP.js');
25
+ var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
26
+ var DateFormat = require('@bigbinary/neeto-molecules/DateFormat');
27
+ var CopyButtonWrapper = require('./CopyButtonWrapper-I-kdKiiB.js');
28
+ var Header = require('@bigbinary/neeto-molecules/Header');
29
+ var SubHeader = require('@bigbinary/neeto-molecules/SubHeader');
30
+ require('@bigbinary/neeto-icons');
31
+ require('decimal.js');
32
+ require('@bigbinary/neeto-molecules/CopyToClipboardButton');
33
+
34
+ function _interopNamespaceDefault(e) {
35
+ var n = Object.create(null);
36
+ if (e) {
37
+ Object.keys(e).forEach(function (k) {
38
+ if (k !== 'default') {
39
+ var d = Object.getOwnPropertyDescriptor(e, k);
40
+ Object.defineProperty(n, k, d.get ? d : {
41
+ enumerable: true,
42
+ get: function () { return e[k]; }
43
+ });
44
+ }
45
+ });
46
+ }
47
+ n.default = e;
48
+ return Object.freeze(n);
49
+ }
50
+
51
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
52
+
53
+ const list = payload => axios.get(`${constants.BASE_URL}/api/v1/split_transfers`, {
54
+ params: payload
55
+ });
56
+ const show = id => axios.get(`${constants.BASE_URL}/api/v1/split_transfers/${id}`);
57
+ const bulkUpdate = payload => axios.post(`${constants.BASE_URL}/api/v1/split_transfers/bulk_update`, {
58
+ splitTransfer: payload
59
+ });
60
+ const splitTransfersApi = {
61
+ list,
62
+ show,
63
+ bulkUpdate
64
+ };
65
+
66
+ const useFetchSplitTransfers = (payload = {}, options = {}) => reactQuery.useQuery({
67
+ queryKey: [queryConstants.QUERY_KEYS.SPLIT_TRANSFERS_LIST, payload],
68
+ queryFn: () => splitTransfersApi.list(payload),
69
+ ...options
70
+ });
71
+ const useShowSplitTransfers = (id, options) => reactQuery.useQuery({
72
+ queryKey: [queryConstants.QUERY_KEYS.SPLIT_TRANSFERS_DETAILS, id],
73
+ queryFn: () => splitTransfersApi.show(id),
74
+ ...options
75
+ });
76
+ const useBulkUpdateSplitTransfers = options => reactUtils.useMutationWithInvalidation(splitTransfersApi.bulkUpdate, {
77
+ keysToInvalidate: [queryConstants.QUERY_KEYS.SPLIT_TRANSFERS_LISTw],
78
+ ...options
79
+ });
80
+
81
+ const SPLIT_TRANSFERS_DASHBOARD_TAB = {
82
+ all: "all",
83
+ successful: "successful",
84
+ cancelled: "cancelled",
85
+ pending: "pending"
86
+ };
87
+ const SEARCH_PROPS = {
88
+ node: "identifier,",
89
+ key: "search_term",
90
+ model: "NeetoPaymentsEngine::Payments::Split,"
91
+ };
92
+ const FILTER_COLUMNS = [{
93
+ key: "amount",
94
+ label: i18next.t("neetoPayments.common.amount"),
95
+ node: "amount",
96
+ type: "decimal"
97
+ }, {
98
+ key: "payment_at",
99
+ label: i18next.t("neetoPayments.common.transferTime"),
100
+ node: "payment_at",
101
+ type: "date"
102
+ }];
103
+ const INITIAL_TRANSFER_DETAILS = {
104
+ id: null,
105
+ isPaneOpen: false
106
+ };
107
+ const VALIDATION_SCHEMA = yup__namespace.object().shape({
108
+ reason: yup__namespace.string().required(i18next.t("neetoPayments.cancelSplitTransfers.reasonRequired"))
109
+ });
110
+
111
+ const CancelModal = ({
112
+ isOpen,
113
+ onClose,
114
+ handleSplitTransfersUpdate
115
+ }) => {
116
+ const {
117
+ t
118
+ } = reactI18next.useTranslation();
119
+ const handleSubmit = ({
120
+ reason
121
+ }) => {
122
+ handleSplitTransfersUpdate("cancelled", reason);
123
+ };
124
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoui.Modal, {
125
+ isOpen,
126
+ onClose,
127
+ size: "large",
128
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Header, {
129
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
130
+ style: "h2",
131
+ weight: "medium",
132
+ children: t("neetoPayments.cancelSplitTransfers.modal.title")
133
+ })
134
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Form, {
135
+ formikProps: {
136
+ initialValues: {
137
+ reason: ""
138
+ },
139
+ validationSchema: VALIDATION_SCHEMA,
140
+ onSubmit: handleSubmit
141
+ },
142
+ children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
143
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Body, {
144
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
145
+ className: "flex flex-col space-y-4",
146
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.Textarea, {
147
+ required: true,
148
+ label: t("neetoPayments.cancelSplitTransfers.modal.reason"),
149
+ name: "reason"
150
+ })
151
+ })
152
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Footer, {
153
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.ActionBlock, {
154
+ position: "right",
155
+ cancelButtonProps: {
156
+ onClick: onClose,
157
+ style: "tertiary"
158
+ },
159
+ submitButtonProps: {
160
+ disabled: false,
161
+ label: t("neetoPayments.common.submit")
162
+ }
163
+ })
164
+ })]
165
+ })
166
+ })]
167
+ });
168
+ };
169
+
170
+ const Status = ({
171
+ type,
172
+ status = ""
173
+ }) => {
174
+ const {
175
+ t
176
+ } = reactI18next.useTranslation();
177
+ const processedStatus = constants.preProcessStatus(type, status);
178
+ if (neetocist.isNotPresent(status)) {
179
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
180
+ style: "body2",
181
+ children: t("neetoPayments.common.notAvailable")
182
+ });
183
+ }
184
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Tooltip, {
185
+ content: t(`neetoPayments.tooltipContent.${type}.${processedStatus}`),
186
+ position: "top",
187
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
188
+ className: "w-fit",
189
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Tag, {
190
+ style: constants.getTagStyle(processedStatus),
191
+ label: neetocist.humanize(t(`neetoPayments.tagLabels.${type}.${processedStatus}`))
192
+ })
193
+ })
194
+ });
195
+ };
196
+
197
+ const Date = ({
198
+ date,
199
+ isTimeVisible = false
200
+ }) => {
201
+ const {
202
+ t
203
+ } = reactI18next.useTranslation();
204
+ if (neetocist.isNotPresent(date)) {
205
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
206
+ style: "body2",
207
+ children: t("neetoPayments.common.notAvailable")
208
+ });
209
+ }
210
+ if (isTimeVisible) {
211
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
212
+ className: "flex items-center",
213
+ children: /*#__PURE__*/jsxRuntime.jsx(DateFormat.DateTime, {
214
+ date
215
+ })
216
+ });
217
+ }
218
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
219
+ className: "flex items-center",
220
+ children: /*#__PURE__*/jsxRuntime.jsx(DateFormat.Date, {
221
+ date
222
+ })
223
+ });
224
+ };
225
+
226
+ const DiscountCode = ({
227
+ discountCode,
228
+ currency
229
+ }) => {
230
+ const {
231
+ t
232
+ } = reactI18next.useTranslation();
233
+ const {
234
+ code,
235
+ value,
236
+ kind
237
+ } = discountCode;
238
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
239
+ style: "body2",
240
+ children: kind === "percentage" ? t("neetoPayments.splitTransferDetails.discountCodeOfPercentageApplied", {
241
+ code,
242
+ percentage: value.toFixed(1)
243
+ }) : t("neetoPayments.splitTransferDetails.discountCodeOfAmountApplied", {
244
+ code,
245
+ amount: utils.currencyFormat.withSymbol(value, currency.toUpperCase(), {
246
+ maximumFractionDigits: 2,
247
+ minimumFractionDigits: 2
248
+ })
249
+ })
250
+ });
251
+ };
252
+
253
+ const Details = ({
254
+ selectedTransfer,
255
+ setSelectedTransfer
256
+ }) => {
257
+ const {
258
+ t
259
+ } = reactI18next.useTranslation();
260
+ const {
261
+ isPending,
262
+ data: {
263
+ splitTransfer
264
+ } = {}
265
+ } = useShowSplitTransfers(selectedTransfer["id"], {
266
+ enabled: neetocist.isPresent(selectedTransfer["id"])
267
+ });
268
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoui.Pane, {
269
+ isOpen: selectedTransfer["isPaneOpen"],
270
+ size: "large",
271
+ onClose: () => setSelectedTransfer(ramda.mergeLeft({
272
+ isPaneOpen: false
273
+ }, selectedTransfer)),
274
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Pane.Header, {
275
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
276
+ style: "h2",
277
+ children: t("neetoPayments.splitTransferDetails.title")
278
+ })
279
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Pane.Body, {
280
+ children: isPending ? /*#__PURE__*/jsxRuntime.jsx("div", {
281
+ className: "flex h-full w-full items-center justify-center",
282
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Spinner, {})
283
+ }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
284
+ className: "space-y-4 p-3",
285
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
286
+ className: "flex grid-cols-2 flex-col gap-3 lg:grid",
287
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
288
+ style: "body1",
289
+ weight: "medium",
290
+ children: t("neetoPayments.common.identifier")
291
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Button, {
292
+ href: splitTransfer.transferUrl,
293
+ label: splitTransfer.identifier,
294
+ size: "small",
295
+ style: "link",
296
+ target: "_blank"
297
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
298
+ style: "body1",
299
+ weight: "medium",
300
+ children: t("neetoPayments.common.status")
301
+ }), /*#__PURE__*/jsxRuntime.jsx(Status, {
302
+ status: splitTransfer.status,
303
+ type: "splitTransfers"
304
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
305
+ style: "body1",
306
+ weight: "medium",
307
+ children: t("neetoPayments.common.transferTime")
308
+ }), /*#__PURE__*/jsxRuntime.jsx(Date, {
309
+ isTimeVisible: true,
310
+ date: splitTransfer.paymentAt
311
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
312
+ style: "body1",
313
+ weight: "medium",
314
+ children: t("neetoPayments.common.paymentAmount")
315
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
316
+ style: "body2",
317
+ children: utils.currencyFormat.withCode(splitTransfer.sourcePayment?.amount, splitTransfer.currency?.toUpperCase())
318
+ }), neetocist.isPresent(splitTransfer.discountCode) && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
319
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
320
+ style: "body1",
321
+ weight: "medium",
322
+ children: t("neetoPayments.common.discountCode")
323
+ }), /*#__PURE__*/jsxRuntime.jsx(DiscountCode, {
324
+ currency: splitTransfer.currency,
325
+ discountCode: splitTransfer.discountCode
326
+ })]
327
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
328
+ className: "flex items-center space-x-1",
329
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
330
+ style: "body1",
331
+ weight: "medium",
332
+ children: t("neetoPayments.common.netAmount")
333
+ }), /*#__PURE__*/jsxRuntime.jsx(HelpPopover, {
334
+ popoverProps: {
335
+ position: "right"
336
+ },
337
+ description: t("neetoPayments.splitTransferDetails.netAmountDescription"),
338
+ title: t("neetoPayments.splitTransferDetails.netAmountHelpTitle")
339
+ })]
340
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
341
+ style: "body2",
342
+ children: utils.currencyFormat.withCode(splitTransfer.sourcePayment?.netAmount, splitTransfer.currency?.toUpperCase())
343
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
344
+ className: "flex space-x-1",
345
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
346
+ style: "body1",
347
+ weight: "medium",
348
+ children: t("neetoPayments.common.platformShare")
349
+ }), /*#__PURE__*/jsxRuntime.jsx(HelpPopover, {
350
+ popoverProps: {
351
+ position: "right"
352
+ },
353
+ description: t("neetoPayments.splitTransferDetails.platformShareDescription"),
354
+ title: t("neetoPayments.splitTransferDetails.platformShareHelpTitle")
355
+ })]
356
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
357
+ style: "body2",
358
+ children: utils.currencyFormat.withCode(splitTransfer.platformShare, splitTransfer.currency?.toUpperCase())
359
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
360
+ style: "body1",
361
+ weight: "medium",
362
+ children: t("neetoPayments.common.transferredAmount")
363
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
364
+ style: "body2",
365
+ children: utils.currencyFormat.withCode(splitTransfer.amount, splitTransfer.currency?.toUpperCase())
366
+ })]
367
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
368
+ style: "h3",
369
+ children: t("neetoPayments.splitTransferDetails.destinationDetails")
370
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
371
+ className: "flex grid-cols-2 flex-col gap-3 lg:grid",
372
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
373
+ style: "body1",
374
+ weight: "medium",
375
+ children: t("neetoPayments.common.destinationAccountIdentifier")
376
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Button, {
377
+ href: splitTransfer.destinationAccount.dashboardUrl,
378
+ label: splitTransfer.destinationAccount.identifier,
379
+ size: "small",
380
+ style: "link",
381
+ target: "_blank"
382
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
383
+ style: "body1",
384
+ weight: "medium",
385
+ children: t("neetoPayments.common.destinationAccountName")
386
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
387
+ style: "body2",
388
+ children: splitTransfer.destinationAccount.userName
389
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
390
+ style: "body1",
391
+ weight: "medium",
392
+ children: t("neetoPayments.common.destinationAccountEmail")
393
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
394
+ style: "body2",
395
+ children: splitTransfer.destinationAccount.userEmail
396
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
397
+ style: "body1",
398
+ weight: "medium",
399
+ children: t("neetoPayments.common.payoutStatus")
400
+ }), /*#__PURE__*/jsxRuntime.jsx(Status, {
401
+ status: splitTransfer.destinationPayout?.status,
402
+ type: "payout"
403
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
404
+ style: "body1",
405
+ weight: "medium",
406
+ children: t("neetoPayments.splitTransferDetails.payoutInitiatedDate")
407
+ }), /*#__PURE__*/jsxRuntime.jsx(Date, {
408
+ date: splitTransfer.destinationPayout?.createdAt
409
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
410
+ style: "body1",
411
+ weight: "medium",
412
+ children: t("neetoPayments.splitTransferDetails.payoutArrivalDate")
413
+ }), /*#__PURE__*/jsxRuntime.jsx(Date, {
414
+ date: splitTransfer.destinationPayout?.arrivalDate
415
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {})]
416
+ })]
417
+ })
418
+ })]
419
+ });
420
+ };
421
+
422
+ const renderIdentifier = ramda.curry((setSelectedTransfer, identifier, {
423
+ id
424
+ }) => {
425
+ if (neetocist.isNotPresent(identifier)) {
426
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Tooltip, {
427
+ content: i18next.t("neetoPayments.tooltipContent.identifierUnavailable"),
428
+ position: "top",
429
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
430
+ className: "text-center",
431
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
432
+ style: "body2",
433
+ children: i18next.t("neetoPayments.common.notAvailable")
434
+ })
435
+ })
436
+ });
437
+ }
438
+ return /*#__PURE__*/jsxRuntime.jsx(CopyButtonWrapper.CopyButtonWrapper, {
439
+ content: identifier,
440
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Button, {
441
+ label: identifier,
442
+ size: "small",
443
+ style: "link",
444
+ onClick: () => setSelectedTransfer({
445
+ id,
446
+ isPaneOpen: true
447
+ })
448
+ })
449
+ });
450
+ });
451
+ const renderPlatformPaymentIdentifier = ({
452
+ identifier,
453
+ receiptUrl,
454
+ kind
455
+ }) => {
456
+ if (kind === constants.PAYMENT_KIND.temporary) {
457
+ return /*#__PURE__*/jsxRuntime.jsx(CopyButtonWrapper.CopyButtonWrapper, {
458
+ content: identifier,
459
+ children: identifier
460
+ });
461
+ }
462
+ return /*#__PURE__*/jsxRuntime.jsx(CopyButtonWrapper.CopyButtonWrapper, {
463
+ content: identifier,
464
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Button, {
465
+ href: receiptUrl,
466
+ label: identifier,
467
+ size: "small",
468
+ style: "link",
469
+ target: "_blank"
470
+ })
471
+ });
472
+ };
473
+ const renderDestinationAccountIdentifier = ({
474
+ identifier,
475
+ dashboardUrl
476
+ }) => /*#__PURE__*/jsxRuntime.jsx(CopyButtonWrapper.CopyButtonWrapper, {
477
+ content: identifier,
478
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Button, {
479
+ href: dashboardUrl,
480
+ label: identifier,
481
+ size: "small",
482
+ style: "link",
483
+ target: "_blank"
484
+ })
485
+ });
486
+ const renderStatus = ramda.curry((type, status) => /*#__PURE__*/jsxRuntime.jsx(Status, {
487
+ status,
488
+ type
489
+ }));
490
+ const renderDate = date => {
491
+ if (neetocist.isNotPresent(date)) {
492
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Tooltip, {
493
+ content: i18next.t("neetoPayments.tooltipContent.dateUnavailable"),
494
+ position: "top",
495
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
496
+ className: "text-center",
497
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
498
+ style: "body2",
499
+ children: i18next.t("neetoPayments.common.notAvailable")
500
+ })
501
+ })
502
+ });
503
+ }
504
+ return /*#__PURE__*/jsxRuntime.jsx(DateFormat.DateTime, {
505
+ date
506
+ });
507
+ };
508
+ const renderPlatformShare = amount => {
509
+ if (neetocist.isNotPresent(amount)) {
510
+ return /*#__PURE__*/jsxRuntime.jsx(neetoui.Tooltip, {
511
+ content: i18next.t("neetoPayments.tooltipContent.platformShareUnavailable"),
512
+ position: "top",
513
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
514
+ style: "body2",
515
+ children: i18next.t("neetoPayments.common.notCalculated")
516
+ })
517
+ });
518
+ }
519
+ return constants.formatAmount(amount);
520
+ };
521
+ const getDefaultColumns = setSelectedTransfer => [{
522
+ title: i18next.t("neetoPayments.common.id"),
523
+ dataIndex: "rowId",
524
+ key: "rowId",
525
+ width: 85,
526
+ position: 0,
527
+ isHidable: false
528
+ }, {
529
+ title: i18next.t("neetoPayments.common.identifier"),
530
+ dataIndex: "identifier",
531
+ key: "identifier",
532
+ width: 300,
533
+ render: renderIdentifier(setSelectedTransfer),
534
+ position: 1,
535
+ isHidable: false
536
+ }, {
537
+ title: i18next.t("neetoPayments.common.status"),
538
+ dataIndex: "status",
539
+ key: "status",
540
+ width: 150,
541
+ render: renderStatus("splitTransfers"),
542
+ sorter: true,
543
+ position: 2,
544
+ isHidable: false
545
+ }, {
546
+ title: i18next.t("neetoPayments.common.amount"),
547
+ dataIndex: "amount",
548
+ key: "amount",
549
+ width: 150,
550
+ sorter: true,
551
+ render: constants.formatAmount,
552
+ position: 3
553
+ }, {
554
+ title: i18next.t("neetoPayments.common.currency"),
555
+ dataIndex: "currency",
556
+ key: "currency",
557
+ width: 160,
558
+ sorter: true,
559
+ render: constants.formatCurrency,
560
+ position: 3
561
+ }, {
562
+ title: i18next.t("neetoPayments.common.platformShare"),
563
+ dataIndex: "platformShare",
564
+ key: "platformShare",
565
+ width: 205,
566
+ render: renderPlatformShare,
567
+ sorter: true,
568
+ position: 3
569
+ }, {
570
+ title: i18next.t("neetoPayments.common.transferTime"),
571
+ dataIndex: "paymentAt",
572
+ key: "paymentAt",
573
+ width: 190,
574
+ render: renderDate,
575
+ sorter: true,
576
+ position: 10
577
+ }, {
578
+ title: i18next.t("neetoPayments.common.platformPayment"),
579
+ dataIndex: "sourcePayment",
580
+ key: "sourcePayment",
581
+ render: renderPlatformPaymentIdentifier,
582
+ width: 300,
583
+ position: 19
584
+ }, {
585
+ title: i18next.t("neetoPayments.common.accountIdentifier"),
586
+ dataIndex: "destinationAccount",
587
+ key: "destinationAccount",
588
+ render: renderDestinationAccountIdentifier,
589
+ width: 320,
590
+ position: 20
591
+ }];
592
+
593
+ const buildSearchProps = (searchProps, searchTerm) => ramda.mergeDeepWith(ramda.concat, SEARCH_PROPS, ramda.mergeLeft({
594
+ value: searchTerm.trim()
595
+ }, searchProps));
596
+ const buildFilterColumns = (payableEntityColumns = []) => ramda.reject(ramda.isNil, ramda.concat(FILTER_COLUMNS, ramda.map(ramda.prop("filterProps"), payableEntityColumns)));
597
+ const buildTableColumns = ({
598
+ tab,
599
+ payableEntityColumns = [],
600
+ setSelectedTransfer
601
+ }) => {
602
+ const filteredColumns = ramda.sortBy(ramda.prop("position"), ramda.concat(getDefaultColumns(setSelectedTransfer), payableEntityColumns));
603
+ if (tab === SPLIT_TRANSFERS_DASHBOARD_TAB.all) return filteredColumns;
604
+ return neetocist.removeBy({
605
+ key: "status"
606
+ }, filteredColumns);
607
+ };
608
+ const buildRowData = ({
609
+ splitTransfers,
610
+ pageProperties = {}
611
+ }) => splitTransfers?.map((element, index) => ({
612
+ ...element,
613
+ rowId: ramda.isEmpty(pageProperties) ? index + 1 : pageProperties.pageSize * (pageProperties.page - 1) + index + 1
614
+ }));
615
+
616
+ const List = ({
617
+ isFetching,
618
+ splitTransfers,
619
+ selectedRows,
620
+ views,
621
+ payableEntityColumns,
622
+ pageProperties,
623
+ onRowSelect,
624
+ setSortProperties,
625
+ handleTablePagination,
626
+ setHasBulkSelectedAllRows
627
+ }) => {
628
+ const [selectedTransfer, setSelectedTransfer] = react.useState(INITIAL_TRANSFER_DETAILS);
629
+ const {
630
+ t
631
+ } = reactI18next.useTranslation();
632
+ const {
633
+ tab = SPLIT_TRANSFERS_DASHBOARD_TAB.all
634
+ } = utils.getQueryParams();
635
+ const splitTransfersCount = views[tab];
636
+ const getRowSelection = () => {
637
+ if (tab === SPLIT_TRANSFERS_DASHBOARD_TAB.successful) return false;
638
+ if (tab === SPLIT_TRANSFERS_DASHBOARD_TAB.all) {
639
+ return {
640
+ getCheckboxProps: record => ({
641
+ disabled: record.status === SPLIT_TRANSFERS_DASHBOARD_TAB.successful
642
+ })
643
+ };
644
+ }
645
+ return true;
646
+ };
647
+ const allColumns = buildTableColumns({
648
+ tab,
649
+ payableEntityColumns,
650
+ setSelectedTransfer
651
+ });
652
+ const {
653
+ isTableConfigurationLoading,
654
+ customizedColumns,
655
+ hideColumn
656
+ } = Columns.useTableConfigurations(`${exportChannel.TABLE_KEYS.SPLIT_TRANSFERS_TABLE}-${tab}`, allColumns);
657
+ const handleTableChange = (_, __, sorter) => {
658
+ setSortProperties(neetocist.isPresent(sorter?.column) ? {
659
+ sortBy: neetocist.camelToSnakeCase(constants.processDataIndex(sorter.field)),
660
+ orderBy: sorter.order === "ascend" ? "ASC" : "DESC"
661
+ } : constants.DEFAULT_SORT_PROPERTIES);
662
+ };
663
+ if (neetocist.isNotPresent(splitTransfers)) {
664
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
665
+ className: "flex h-full w-full items-center justify-center",
666
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.NoData, {
667
+ title: tab === SPLIT_TRANSFERS_DASHBOARD_TAB.all ? t("neetoPayments.emptyState.splitTransfers") : t("neetoPayments.emptyState.splitTransfersWithStatus", {
668
+ status: tab
669
+ })
670
+ })
671
+ });
672
+ }
673
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
674
+ children: [/*#__PURE__*/jsxRuntime.jsx(TableWrapper, {
675
+ hasPagination: splitTransfersCount > pageProperties?.pageSize,
676
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Table, {
677
+ onRowSelect,
678
+ fixedHeight: true,
679
+ allowRowClick: false,
680
+ columnData: customizedColumns,
681
+ currentPageNumber: pageProperties?.page,
682
+ handlePageChange: handleTablePagination,
683
+ loading: isFetching || isTableConfigurationLoading,
684
+ rowData: buildRowData({
685
+ splitTransfers,
686
+ pageProperties,
687
+ tab
688
+ }),
689
+ rowSelection: getRowSelection(),
690
+ selectedRowKeys: selectedRows,
691
+ sortDirections: constants.SORT_DIRECTIONS,
692
+ totalCount: splitTransfersCount,
693
+ bulkSelectAllRowsProps: {
694
+ selectAllRowMessage: t("neetoPayments.splitTransferDetails.selectedSplitTransfers", {
695
+ count: selectedRows.length
696
+ }),
697
+ selectAllRowButtonLabel: t("neetoPayments.splitTransferDetails.selectAll", {
698
+ count: views[SPLIT_TRANSFERS_DASHBOARD_TAB.pending]
699
+ }),
700
+ setBulkSelectedAllRows: setHasBulkSelectedAllRows
701
+ },
702
+ paginationProps: {
703
+ showSizeChanger: true,
704
+ hideOnSinglePage: true,
705
+ pageSize: pageProperties?.pageSize,
706
+ total: splitTransfersCount
707
+ },
708
+ onChange: handleTableChange,
709
+ onColumnHide: ({
710
+ key
711
+ }) => hideColumn(key)
712
+ })
713
+ }), /*#__PURE__*/jsxRuntime.jsx(Details, {
714
+ selectedTransfer,
715
+ setSelectedTransfer
716
+ })]
717
+ });
718
+ };
719
+
720
+ const ResumeModal = ({
721
+ isOpen,
722
+ onClose,
723
+ handleSplitTransfersUpdate
724
+ }) => {
725
+ const {
726
+ t
727
+ } = reactI18next.useTranslation();
728
+ const handleSubmit = ({
729
+ reason
730
+ }) => {
731
+ handleSplitTransfersUpdate("pending", reason);
732
+ };
733
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoui.Modal, {
734
+ isOpen,
735
+ onClose,
736
+ size: "large",
737
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Header, {
738
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
739
+ style: "h2",
740
+ weight: "medium",
741
+ children: t("neetoPayments.resumeSplitTransfers.modal.title")
742
+ })
743
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Form, {
744
+ formikProps: {
745
+ initialValues: {
746
+ reason: ""
747
+ },
748
+ validationSchema: VALIDATION_SCHEMA,
749
+ onSubmit: handleSubmit
750
+ },
751
+ children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
752
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Body, {
753
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
754
+ className: "flex flex-col space-y-4",
755
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.Textarea, {
756
+ required: true,
757
+ label: t("neetoPayments.resumeSplitTransfers.modal.reason"),
758
+ name: "reason"
759
+ })
760
+ })
761
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoui.Modal.Footer, {
762
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.ActionBlock, {
763
+ position: "right",
764
+ cancelButtonProps: {
765
+ onClick: onClose,
766
+ style: "tertiary"
767
+ },
768
+ submitButtonProps: {
769
+ disabled: false,
770
+ label: t("neetoPayments.common.submit")
771
+ }
772
+ })
773
+ })]
774
+ })
775
+ })]
776
+ });
777
+ };
778
+
779
+ const {
780
+ Menu,
781
+ MenuItem
782
+ } = neetoui.Dropdown;
783
+ const TopSection = ({
784
+ views,
785
+ filters,
786
+ setIsCancelModalOpen,
787
+ setIsResumeModalOpen,
788
+ selectedRows,
789
+ selectedRowData,
790
+ setFilters,
791
+ hasBulkSelectedAllRows,
792
+ filterableColumns,
793
+ searchKeywordProps,
794
+ payableEntityColumns,
795
+ setIsExportModalOpen
796
+ }) => {
797
+ const [isFilterPaneOpen, setIsFilterPaneOpen] = react.useState(false);
798
+ const {
799
+ t
800
+ } = reactI18next.useTranslation();
801
+ const history = reactRouterDom.useHistory();
802
+ const {
803
+ tab = SPLIT_TRANSFERS_DASHBOARD_TAB.all
804
+ } = utils.getQueryParams();
805
+ const splitTransfersCount = views?.[tab];
806
+ const splitTransfersCountVisible = splitTransfersCount > 0 || splitTransfersCount === 0 && neetocist.isPresent(filters);
807
+ const isFilterButtonVisible = splitTransfersCount || neetocist.isPresent(filters);
808
+ const isDropdownVisible = neetocist.isNotEmpty(selectedRows);
809
+ const isCancelButtonDisabled = neetocist.existsBy({
810
+ status: SPLIT_TRANSFERS_DASHBOARD_TAB.cancelled
811
+ }, selectedRowData);
812
+ const isResumeButtonDisabled = neetocist.existsBy({
813
+ status: SPLIT_TRANSFERS_DASHBOARD_TAB.pending
814
+ }, selectedRowData);
815
+ const selectedRecordsCount = hasBulkSelectedAllRows ? splitTransfersCount : selectedRows.length;
816
+ const handleFiltersChange = filters => {
817
+ react.startTransition(() => {
818
+ setFilters(filters);
819
+ });
820
+ };
821
+ const handleTabChange = tab => {
822
+ const queryParams = utils.getQueryParams({
823
+ toCamelCase: false
824
+ });
825
+ const newParams = {
826
+ tab,
827
+ page: constants$1.DEFAULT_PAGE_INDEX,
828
+ page_size: constants$1.DEFAULT_PAGE_SIZE
829
+ };
830
+ history.push(utils.buildUrl(window.location.pathname, ramda.mergeLeft(newParams, queryParams)));
831
+ };
832
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
833
+ children: [/*#__PURE__*/jsxRuntime.jsx(Header, {
834
+ title: t("neetoPayments.title.splitTransfers"),
835
+ searchProps: isFilterButtonVisible && {
836
+ placeholder: searchKeywordProps.placeholder,
837
+ className: "w-96"
838
+ }
839
+ }), constants.shouldTabsVisible(views) && /*#__PURE__*/jsxRuntime.jsx(neetoui.Tab, {
840
+ children: Object.keys(SPLIT_TRANSFERS_DASHBOARD_TAB).map(item => /*#__PURE__*/jsxRuntime.jsx(neetoui.Tab.Item, {
841
+ active: tab === item,
842
+ onClick: () => handleTabChange(item),
843
+ children: t(`neetoPayments.common.${item}`)
844
+ }, item))
845
+ }), /*#__PURE__*/jsxRuntime.jsx(SubHeader, {
846
+ className: "my-4",
847
+ leftActionBlock: splitTransfersCountVisible && /*#__PURE__*/jsxRuntime.jsx("div", {
848
+ className: "w-100 flex items-center space-x-3",
849
+ children: isDropdownVisible ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
850
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
851
+ className: "neeto-ui-gray-800 me-2 font-semibold",
852
+ component: "h4",
853
+ children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
854
+ count: selectedRecordsCount,
855
+ i18nKey: "neetoPayments.splitTransferDetails.recordWithCount",
856
+ components: {
857
+ span: /*#__PURE__*/jsxRuntime.jsx("span", {
858
+ className: "neeto-ui-text-gray-600"
859
+ })
860
+ },
861
+ values: {
862
+ count: selectedRecordsCount,
863
+ recordsCount: splitTransfersCount
864
+ }
865
+ })
866
+ }), /*#__PURE__*/jsxRuntime.jsxs(neetoui.Dropdown, {
867
+ buttonStyle: "secondary",
868
+ label: t("neetoPayments.common.takeAction"),
869
+ children: [/*#__PURE__*/jsxRuntime.jsx(Menu, {
870
+ children: /*#__PURE__*/jsxRuntime.jsx(MenuItem.Button, {
871
+ isDisabled: isCancelButtonDisabled,
872
+ tooltipProps: isCancelButtonDisabled ? {
873
+ content: t("neetoPayments.tooltipContent.splitTransfers.cancelledRecordsSelected")
874
+ } : "",
875
+ onClick: () => setIsCancelModalOpen(true),
876
+ children: t("neetoPayments.common.cancel")
877
+ })
878
+ }), /*#__PURE__*/jsxRuntime.jsx(Menu, {
879
+ children: /*#__PURE__*/jsxRuntime.jsx(MenuItem.Button, {
880
+ isDisabled: isResumeButtonDisabled,
881
+ tooltipProps: isResumeButtonDisabled ? {
882
+ content: t("neetoPayments.tooltipContent.splitTransfers.pendingRecordsSelected")
883
+ } : "",
884
+ onClick: () => setIsResumeModalOpen(true),
885
+ children: t("neetoPayments.common.resume")
886
+ })
887
+ })]
888
+ })]
889
+ }) : /*#__PURE__*/jsxRuntime.jsx(neetoui.Typography, {
890
+ className: "neeto-ui-gray-800 me-2 font-semibold",
891
+ component: "h4",
892
+ children: tab === SPLIT_TRANSFERS_DASHBOARD_TAB.all ? t("neetoPayments.countOf.splitTransfer", {
893
+ count: splitTransfersCount
894
+ }) : t("neetoPayments.countOf.splitTransferWithStatus", {
895
+ count: splitTransfersCount,
896
+ status: tab
897
+ })
898
+ })
899
+ }),
900
+ rightActionBlock: isFilterButtonVisible && /*#__PURE__*/jsxRuntime.jsx(SubHeader.RightBlock, {
901
+ columnsButtonProps: {
902
+ columnData: buildTableColumns({
903
+ tab,
904
+ payableEntityColumns,
905
+ setSelectedTransfer: () => {}
906
+ }).map(ramda.modify("dataIndex", constants.processDataIndex)),
907
+ fixedColumns: constants.UN_HIDEABLE_COLUMNS,
908
+ tableKey: `${exportChannel.TABLE_KEYS.SPLIT_TRANSFERS_TABLE}-${tab}`
909
+ },
910
+ downloadButtonProps: {
911
+ onClick: () => setIsExportModalOpen(true)
912
+ },
913
+ filterProps: {
914
+ columns: filterableColumns,
915
+ isOpen: isFilterPaneOpen,
916
+ keyword: searchKeywordProps,
917
+ setIsOpen: setIsFilterPaneOpen,
918
+ onChange: handleFiltersChange
919
+ }
920
+ })
921
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoFiltersFrontend.Bar, {
922
+ columns: filterableColumns,
923
+ keyword: searchKeywordProps,
924
+ setIsPaneOpen: setIsFilterPaneOpen,
925
+ onChange: handleFiltersChange
926
+ })]
927
+ });
928
+ };
929
+
930
+ const SplitTransfersDashboard = ({
931
+ searchProps,
932
+ payableEntityColumns
933
+ }) => {
934
+ const {
935
+ searchTerm = ""
936
+ } = utils.getQueryParams();
937
+ const filterableColumns = buildFilterColumns(payableEntityColumns);
938
+ const searchKeywordProps = buildSearchProps(searchProps, searchTerm);
939
+ const [selectedRows, setSelectedRows] = react.useState([]);
940
+ const [selectedRowData, setSelectedRowData] = react.useState([]);
941
+ const [isExportModalOpen, setIsExportModalOpen] = react.useState(false);
942
+ const [isCancelModalOpen, setIsCancelModalOpen] = react.useState(false);
943
+ const [isResumeModalOpen, setIsResumeModalOpen] = react.useState(false);
944
+ const [hasBulkSelectedAllRows, setHasBulkSelectedAllRows] = react.useState(false);
945
+ const [sortProperties, setSortProperties] = react.useState(constants.DEFAULT_SORT_PROPERTIES);
946
+ const [pageProperties, setPageProperties] = react.useState(constants.DEFAULT_PAGE_VALUES);
947
+ const [filters, setFilters] = react.useState(neetoFiltersFrontend.buildFiltersFromURL([...filterableColumns, searchKeywordProps]));
948
+ const history = reactRouterDom.useHistory();
949
+ const {
950
+ tab = SPLIT_TRANSFERS_DASHBOARD_TAB.all
951
+ } = utils.getQueryParams();
952
+ const payload = {
953
+ tab,
954
+ filters,
955
+ ...pageProperties,
956
+ ...sortProperties
957
+ };
958
+ const {
959
+ data: {
960
+ splitTransfers,
961
+ views
962
+ } = {},
963
+ isFetching,
964
+ isPending: isSplitTransfersLoading
965
+ } = useFetchSplitTransfers(payload);
966
+ const {
967
+ mutate: updateSplitTransfers,
968
+ isPending: isCancelling
969
+ } = useBulkUpdateSplitTransfers({
970
+ onSuccess: () => {
971
+ setSelectedRowData([]);
972
+ setSelectedRows([]);
973
+ }
974
+ });
975
+ const handleSplitTransfersUpdate = (status, reason) => {
976
+ const ids = ramda.pluck("id", selectedRowData);
977
+ updateSplitTransfers({
978
+ ids,
979
+ status,
980
+ reason,
981
+ isApplyChangesToAllRequired: hasBulkSelectedAllRows
982
+ });
983
+ setIsCancelModalOpen(false);
984
+ setIsResumeModalOpen(false);
985
+ };
986
+ const handleTablePagination = (page, pageSize) => {
987
+ const queryParams = utils.getQueryParams({
988
+ toCamelCase: false
989
+ });
990
+ history.push(utils.buildUrl(window.location.pathname, ramda.mergeLeft({
991
+ page,
992
+ page_size: pageSize
993
+ }, queryParams)));
994
+ setPageProperties({
995
+ page,
996
+ pageSize
997
+ });
998
+ };
999
+ const handleRowSelect = (keys, rowData) => {
1000
+ setSelectedRows(keys);
1001
+ setSelectedRowData(rowData);
1002
+ };
1003
+ react.useEffect(() => {
1004
+ handleTablePagination(constants$1.DEFAULT_PAGE_INDEX, constants$1.DEFAULT_PAGE_SIZE);
1005
+ setSortProperties(constants.DEFAULT_SORT_PROPERTIES);
1006
+ setSelectedRowData([]);
1007
+ setSelectedRows([]);
1008
+ }, [filters, tab]);
1009
+ if (isSplitTransfersLoading || isCancelling) {
1010
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1011
+ className: "flex h-full w-full items-center justify-center",
1012
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoui.Spinner, {})
1013
+ });
1014
+ }
1015
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1016
+ children: [/*#__PURE__*/jsxRuntime.jsx(TopSection, {
1017
+ filterableColumns,
1018
+ filters,
1019
+ hasBulkSelectedAllRows,
1020
+ pageProperties,
1021
+ payableEntityColumns,
1022
+ searchKeywordProps,
1023
+ selectedRowData,
1024
+ selectedRows,
1025
+ setFilters,
1026
+ setIsCancelModalOpen,
1027
+ setIsExportModalOpen,
1028
+ setIsResumeModalOpen,
1029
+ setPageProperties,
1030
+ setSortProperties,
1031
+ views
1032
+ }), /*#__PURE__*/jsxRuntime.jsx(List, {
1033
+ handleTablePagination,
1034
+ isFetching,
1035
+ pageProperties,
1036
+ payableEntityColumns,
1037
+ selectedRows,
1038
+ setHasBulkSelectedAllRows,
1039
+ setSelectedRows,
1040
+ setSortProperties,
1041
+ splitTransfers,
1042
+ views,
1043
+ onRowSelect: handleRowSelect
1044
+ }), /*#__PURE__*/jsxRuntime.jsx(ExportModal.ExportModal, {
1045
+ filters,
1046
+ isExportModalOpen,
1047
+ setIsExportModalOpen,
1048
+ sortProperties,
1049
+ dashboardKind: constants.DASHBOARD_KIND.splitTransfers
1050
+ }), /*#__PURE__*/jsxRuntime.jsx(CancelModal, {
1051
+ handleSplitTransfersUpdate,
1052
+ isOpen: isCancelModalOpen,
1053
+ onClose: () => setIsCancelModalOpen(false)
1054
+ }), /*#__PURE__*/jsxRuntime.jsx(ResumeModal, {
1055
+ handleSplitTransfersUpdate,
1056
+ isOpen: isResumeModalOpen,
1057
+ onClose: () => setIsResumeModalOpen(false)
1058
+ })]
1059
+ });
1060
+ };
1061
+
1062
+ module.exports = SplitTransfersDashboard;
1063
+ //# sourceMappingURL=SplitTransfersDashboard.js.map