@bjsdistribution/dms-client-return 0.1.22-prod → 0.1.23-prod

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
1
  import React from 'react';
2
2
  declare function SendSmsModal(): React.JSX.Element;
3
+ export declare const ContentContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
3
4
  export default SendSmsModal;
@@ -62,5 +62,6 @@ declare function useSelectedProducts(): [any, (args_0: any) => void];
62
62
  export declare function useSelectedData(): [any, (args_0: any) => void];
63
63
  export declare function useNewReturnOrderData(): [any, (args_0: any) => void];
64
64
  declare function useClientPortal(): [boolean | undefined, (args_0: boolean | ((prev: boolean | undefined) => boolean | undefined) | undefined) => void];
65
+ declare function useClientLoading(): [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
65
66
  export declare const useActiveCardId: () => [number, (args_0: number | ((prev: number) => number)) => void];
66
- export { useAtom, useFilter, useStaticData, useRowCollectedCount, useRowDeliveredCount, useReminderData, useInQueueData, useEmailInvoice, useCustomerData, useActionType, useLocationData, useSelectedOrders, useReturnPayload, useNewReturnPayload, useGroupedPayload, useStatusOrderData, useSelectedConfirmLoc, useSelectAll, usePostLoading, useFinalPayload, useClearState, useAssignData, useAssignPayload, useCallApiAgain, useActionTypeOptions, useLocationOptions, useSelectedProducts, useVisibilityData, useClientPortal, useSelectedClientPortOrders, useStartDate, useEndDate, useSelectedClientAfterOrders, };
67
+ export { useAtom, useFilter, useStaticData, useRowCollectedCount, useRowDeliveredCount, useReminderData, useInQueueData, useEmailInvoice, useCustomerData, useActionType, useLocationData, useSelectedOrders, useReturnPayload, useNewReturnPayload, useGroupedPayload, useStatusOrderData, useSelectedConfirmLoc, useSelectAll, usePostLoading, useFinalPayload, useClearState, useAssignData, useAssignPayload, useCallApiAgain, useActionTypeOptions, useLocationOptions, useSelectedProducts, useVisibilityData, useClientPortal, useSelectedClientPortOrders, useStartDate, useEndDate, useSelectedClientAfterOrders, useClientLoading, };
@@ -18,6 +18,7 @@ var dayjs = _interopDefault(require('dayjs'));
18
18
  var reactTable = require('@tanstack/react-table');
19
19
  var Scrollbars = _interopDefault(require('react-custom-scrollbars-2'));
20
20
  var reactDom = require('react-dom');
21
+ var TextArea = _interopDefault(require('antd/es/input/TextArea'));
21
22
  require('tippy.js/dist/tippy.css');
22
23
  var Tippy = _interopDefault(require('@tippyjs/react'));
23
24
  require('react-datepicker/dist/react-datepicker.css');
@@ -562,10 +563,15 @@ function useSelectedData() {
562
563
  function useNewReturnOrderData() {
563
564
  return jotai.useAtom(newReturnOrderData);
564
565
  }
566
+ //call
565
567
  var isClientPortalAtom = /*#__PURE__*/jotai.atom(undefined);
566
568
  function useClientPortal() {
567
569
  return jotai.useAtom(isClientPortalAtom);
568
570
  }
571
+ var isClientLoading = /*#__PURE__*/jotai.atom(true);
572
+ function useClientLoading() {
573
+ return jotai.useAtom(isClientLoading);
574
+ }
569
575
  var activeCardIdAtom = /*#__PURE__*/jotai.atom(1);
570
576
  var useActiveCardId = function useActiveCardId() {
571
577
  return jotai.useAtom(activeCardIdAtom);
@@ -1206,6 +1212,8 @@ function SelectionFilter() {
1206
1212
  var _useClientPortal = useClientPortal(),
1207
1213
  clientPortal = _useClientPortal[0];
1208
1214
  var navigate = reactRouterDom.useNavigate();
1215
+ var _useClientLoading = useClientLoading(),
1216
+ clientLoading = _useClientLoading[0];
1209
1217
  //API for client data
1210
1218
  var _useAxios = dmsComponentLibrary.useAxios({
1211
1219
  endpoint: "/v1/return/product/customers/",
@@ -1218,11 +1226,12 @@ function SelectionFilter() {
1218
1226
  fetchedCustomerData = _useAxios.data,
1219
1227
  loading = _useAxios.loading,
1220
1228
  fetchData = _useAxios.fetchData;
1229
+ //need to fix
1221
1230
  React.useEffect(function () {
1222
- if (!clientPortal) {
1231
+ if (!clientPortal && !clientLoading) {
1223
1232
  fetchData();
1224
1233
  }
1225
- }, []);
1234
+ }, [clientLoading]);
1226
1235
  React.useEffect(function () {
1227
1236
  if (fetchedCustomerData && fetchedCustomerData != null && fetchedCustomerData.data) {
1228
1237
  setCustomers(fetchedCustomerData == null ? void 0 : fetchedCustomerData.data);
@@ -1529,19 +1538,33 @@ var overviewFilterReducer = function overviewFilterReducer(state, action) {
1529
1538
  startDate = _action$payload.startDate,
1530
1539
  endDate = _action$payload.endDate;
1531
1540
  var filters = [];
1532
- if (startDate) {
1541
+ if (startDate && !endDate) {
1542
+ var nextDay = dayjs(startDate).add(1, 'day').format('YYYY-MM-DD');
1533
1543
  filters.push({
1534
1544
  field: 'created_at',
1535
1545
  op: '>=',
1536
1546
  value: startDate + "T00:00:00+00:00"
1537
1547
  });
1538
- }
1539
- if (endDate) {
1540
1548
  filters.push({
1541
1549
  field: 'created_at',
1542
1550
  op: '<=',
1543
- value: endDate + "T23:59:59+00:00"
1551
+ value: nextDay + "T00:00:00+00:00"
1544
1552
  });
1553
+ } else {
1554
+ if (startDate) {
1555
+ filters.push({
1556
+ field: 'created_at',
1557
+ op: '>=',
1558
+ value: startDate + "T00:00:00+00:00"
1559
+ });
1560
+ }
1561
+ if (endDate) {
1562
+ filters.push({
1563
+ field: 'created_at',
1564
+ op: '<=',
1565
+ value: endDate + "T23:59:59+00:00"
1566
+ });
1567
+ }
1545
1568
  }
1546
1569
  return _extends({}, state, {
1547
1570
  'x-filters': [].concat(state['x-filters'].filter(function (f) {
@@ -4997,12 +5020,15 @@ function ContactHome() {
4997
5020
  hrefPrefix = '+44';
4998
5021
  }
4999
5022
  var finalHref = "tel:" + hrefPrefix + numberPart;
5000
- return React__default.createElement("a", {
5023
+ return React__default.createElement(antd.Tooltip, {
5024
+ placement: "top",
5025
+ title: React__default.createElement("span", null, "Zoom")
5026
+ }, React__default.createElement("a", {
5001
5027
  href: finalHref,
5002
5028
  style: {
5003
5029
  cursor: 'pointer'
5004
5030
  }
5005
- }, React__default.createElement(CallCustomer, null));
5031
+ }, React__default.createElement(CallCustomer, null)));
5006
5032
  }()), errors.homeContactError && React__default.createElement(ErrorText$1, null, errors.homeContactError));
5007
5033
  }
5008
5034
  var InputContainer = /*#__PURE__*/styled__default.div(_templateObject$q || (_templateObject$q = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 7px;\n align-items: center;\n"])));
@@ -5020,6 +5046,8 @@ function ContactWork() {
5020
5046
  var _useOrderDetails = useOrderDetails(),
5021
5047
  orderDetails = _useOrderDetails[0],
5022
5048
  setOrderDetails = _useOrderDetails[1];
5049
+ var _useClientPortal = useClientPortal(),
5050
+ isClientPortal = _useClientPortal[0];
5023
5051
  var orderRecipient = orderDetails == null ? void 0 : orderDetails.order_recipient;
5024
5052
  var _usePrevOrderDetails = usePrevOrderDetails(),
5025
5053
  prevOrderDetails = _usePrevOrderDetails[0];
@@ -5075,7 +5103,10 @@ function ContactWork() {
5075
5103
  placeholder: "Work Number",
5076
5104
  onKeyDown: handleKeyDown,
5077
5105
  value: (orderRecipient == null ? void 0 : orderRecipient.contact_work) || '',
5078
- onChange: onChange
5106
+ onChange: onChange,
5107
+ // minLength={10}
5108
+ // maxLength={10}
5109
+ disabled: isClientPortal
5079
5110
  }), apiContactWork && function () {
5080
5111
  var rawNumber = apiContactWork.replace(/\s+/g, '');
5081
5112
  var formattedNumber = rawNumber.replace(/\D/g, '');
@@ -5111,12 +5142,15 @@ function ContactWork() {
5111
5142
  hrefPrefix = '+44';
5112
5143
  }
5113
5144
  var finalHref = "tel:" + hrefPrefix + numberPart;
5114
- return React__default.createElement("a", {
5145
+ return React__default.createElement(antd.Tooltip, {
5146
+ placement: "top",
5147
+ title: React__default.createElement("span", null, "Zoom")
5148
+ }, React__default.createElement("a", {
5115
5149
  href: finalHref,
5116
5150
  style: {
5117
5151
  cursor: 'pointer'
5118
5152
  }
5119
- }, React__default.createElement(CallCustomer, null));
5153
+ }, React__default.createElement(CallCustomer, null)));
5120
5154
  }()), errors.workCOntanctError && React__default.createElement(ErrorText$2, null, errors.workCOntanctError));
5121
5155
  }
5122
5156
  var InputContainer$1 = /*#__PURE__*/styled__default.div(_templateObject$r || (_templateObject$r = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 7px;\n align-items: center;\n"])));
@@ -5233,12 +5267,15 @@ function ContactMobile() {
5233
5267
  hrefPrefix = '+44';
5234
5268
  }
5235
5269
  var finalHref = "tel:" + hrefPrefix + numberPart;
5236
- return React__default.createElement("a", {
5270
+ return React__default.createElement(antd.Tooltip, {
5271
+ placement: "top",
5272
+ title: React__default.createElement("span", null, "Zoom")
5273
+ }, React__default.createElement("a", {
5237
5274
  href: finalHref,
5238
5275
  style: {
5239
5276
  cursor: 'pointer'
5240
5277
  }
5241
- }, React__default.createElement(CallCustomer, null));
5278
+ }, React__default.createElement(CallCustomer, null)));
5242
5279
  }()), errors.mobileError && React__default.createElement(ErrorText$3, null, errors.mobileError));
5243
5280
  }
5244
5281
  var InputContainer$2 = /*#__PURE__*/styled__default.div(_templateObject$s || (_templateObject$s = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 7px;\n align-items: center;\n"])));
@@ -9888,22 +9925,20 @@ var HoldDatePickerWrap = /*#__PURE__*/styled__default.div(_templateObject18$1 ||
9888
9925
  var DatePickerWrap = /*#__PURE__*/styled__default.div(_templateObject19$1 || (_templateObject19$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n\n border-radius: 66px;\n border: 1px solid #e0e2e7;\n box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05);\n\n input[type='text'] {\n border-radius: 20px;\n background: #fff;\n border: none;\n color: #6a7378;\n font-size: 14px;\n font-weight: 400;\n line-height: 18px;\n padding: 10px 0;\n padding-left: 33px;\n min-width: 18vw;\n &:focus-visible {\n outline: none;\n }\n }\n svg {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n }\n .react-datepicker-wrapper {\n background-color: white;\n border-radius: 66px;\n }\n .ant-picker-outlined {\n border-style: none;\n border-radius: 66px;\n outline: none;\n width: 100%;\n }\n"])));
9889
9926
 
9890
9927
  var _templateObject$1F, _templateObject2$1h;
9891
- var CustomTextArea$3 = /*#__PURE__*/styled__default(dmsComponentLibrary.TextArea)(_templateObject$1F || (_templateObject$1F = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 700px;\n height: 140px;\n resize: none;\n"])));
9892
- var ErrorText$9 = /*#__PURE__*/styled__default.div(_templateObject2$1h || (_templateObject2$1h = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: red;\n font-size: 12px;\n margin-top: 4px;\n"])));
9893
9928
  function SendSmsModal() {
9894
- var _orderDetails$order_r, _formData$to$trim;
9929
+ var _orderDetails$order_r, _orderDetails$order_r2, _orderDetails$order_r3, _formData$to$trim;
9895
9930
  var _useCurrentAction = useCurrentAction(),
9896
9931
  setCurrentAction = _useCurrentAction[1];
9897
9932
  var _useOrderDetails = useOrderDetails(),
9898
9933
  orderDetails = _useOrderDetails[0];
9899
9934
  var _useOrderId = useOrderId(),
9900
9935
  orderId = _useOrderId[0];
9901
- var initialTo = (orderDetails == null || (_orderDetails$order_r = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r.contact_home) || '';
9936
+ var VALID_UK_MOBILE_REGEX = /^(07\d{8,12}|447\d{7,11})$/;
9902
9937
  var _useState = React.useState(''),
9903
9938
  toError = _useState[0],
9904
9939
  setToError = _useState[1];
9905
9940
  var _useState2 = React.useState({
9906
- to: initialTo,
9941
+ to: [orderDetails == null || (_orderDetails$order_r = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r.contact_mobile, orderDetails == null || (_orderDetails$order_r2 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r2.contact_home, orderDetails == null || (_orderDetails$order_r3 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r3.contact_work].filter(Boolean).join(', '),
9907
9942
  body: ''
9908
9943
  }),
9909
9944
  formData = _useState2[0],
@@ -9919,17 +9954,21 @@ function SendSmsModal() {
9919
9954
  name = _e$target.name,
9920
9955
  value = _e$target.value;
9921
9956
  if (name === 'to') {
9922
- var digitsOnly = value.replace(/\D/g, '');
9923
- var error = '';
9924
- if (digitsOnly.length < 10) {
9925
- error = 'Phone number must be exactly 10 digits';
9926
- } else if (digitsOnly.length > 10) {
9927
- error = 'Phone number cannot exceed 10 digits';
9957
+ var rawValue = value;
9958
+ var numbers = rawValue.split(',').map(function (num) {
9959
+ return num.trim();
9960
+ });
9961
+ var invalids = numbers.filter(function (num) {
9962
+ return !VALID_UK_MOBILE_REGEX.test(num);
9963
+ });
9964
+ if (invalids.length === numbers.length) {
9965
+ setToError('Enter at least one valid UK mobile number.');
9966
+ } else {
9967
+ setToError('');
9928
9968
  }
9929
- setToError(error);
9930
9969
  setFormData(function (prev) {
9931
9970
  return _extends({}, prev, {
9932
- to: digitsOnly.slice(0, 10)
9971
+ to: rawValue
9933
9972
  });
9934
9973
  });
9935
9974
  } else {
@@ -9941,50 +9980,86 @@ function SendSmsModal() {
9941
9980
  };
9942
9981
  var handleSubmit = /*#__PURE__*/function () {
9943
9982
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
9944
- var _formData$to, _formData$body;
9945
- var trimmedTo, trimmedBody, payload;
9983
+ var _formData$body;
9984
+ var trimmedBody, rawContacts, validContacts, _iterator, _step, number, payload, response, _err$response, _err$response2, err, errMsg;
9946
9985
  return _regeneratorRuntime().wrap(function _callee$(_context) {
9947
9986
  while (1) switch (_context.prev = _context.next) {
9948
9987
  case 0:
9949
- trimmedTo = formData == null || (_formData$to = formData.to) == null ? void 0 : _formData$to.trim();
9950
9988
  trimmedBody = formData == null || (_formData$body = formData.body) == null ? void 0 : _formData$body.trim();
9951
- if (!(trimmedTo.length !== 10)) {
9952
- _context.next = 5;
9989
+ if (trimmedBody) {
9990
+ _context.next = 3;
9953
9991
  break;
9954
9992
  }
9955
- setToError('Phone number must be exactly 10 digits');
9956
9993
  return _context.abrupt("return");
9957
- case 5:
9958
- payload = {
9959
- order_id: +orderId,
9960
- receiver: trimmedTo,
9961
- message: trimmedBody,
9962
- notification_type: 'Send SMS'
9963
- };
9964
- if (!(!trimmedTo || !trimmedBody)) {
9994
+ case 3:
9995
+ rawContacts = formData.to.split(',').map(function (num) {
9996
+ return num.trim();
9997
+ });
9998
+ validContacts = rawContacts.filter(function (num) {
9999
+ return VALID_UK_MOBILE_REGEX.test(num);
10000
+ });
10001
+ if (!(validContacts.length === 0)) {
9965
10002
  _context.next = 8;
9966
10003
  break;
9967
10004
  }
10005
+ antd.notification.warning({
10006
+ message: 'No Valid UK Mobile Numbers',
10007
+ description: 'Please provide at least one valid UK mobile number (e.g., 07123...).'
10008
+ });
9968
10009
  return _context.abrupt("return");
9969
10010
  case 8:
9970
10011
  _context.prev = 8;
9971
- _context.next = 11;
10012
+ _iterator = _createForOfIteratorHelperLoose(validContacts);
10013
+ case 10:
10014
+ if ((_step = _iterator()).done) {
10015
+ _context.next = 19;
10016
+ break;
10017
+ }
10018
+ number = _step.value;
10019
+ payload = {
10020
+ order_id: +orderId,
10021
+ receiver: number,
10022
+ message: trimmedBody,
10023
+ notification_type: 'Send SMS'
10024
+ };
10025
+ _context.next = 15;
9972
10026
  return callSendSms({
9973
10027
  payload: payload
9974
10028
  });
9975
- case 11:
10029
+ case 15:
10030
+ response = _context.sent;
10031
+ if (response.code === 200) {
10032
+ antd.notification.success({
10033
+ message: 'SMS Sent',
10034
+ description: "Message sent to " + number
10035
+ });
10036
+ } else {
10037
+ antd.notification.error({
10038
+ message: 'SMS Failed',
10039
+ description: "Failed to send to " + number + ": " + ((response == null ? void 0 : response.error) || 'Unknown error')
10040
+ });
10041
+ }
10042
+ case 17:
10043
+ _context.next = 10;
10044
+ break;
10045
+ case 19:
9976
10046
  closeModal();
9977
- _context.next = 17;
10047
+ _context.next = 27;
9978
10048
  break;
9979
- case 14:
9980
- _context.prev = 14;
10049
+ case 22:
10050
+ _context.prev = 22;
9981
10051
  _context.t0 = _context["catch"](8);
9982
- console.error('Error sending SMS:', _context.t0);
9983
- case 17:
10052
+ err = _context.t0;
10053
+ errMsg = (err == null || (_err$response = err.response) == null || (_err$response = _err$response.data) == null ? void 0 : _err$response.error) || (err == null || (_err$response2 = err.response) == null || (_err$response2 = _err$response2.data) == null ? void 0 : _err$response2.message) || (err == null ? void 0 : err.message) || 'An unexpected error occurred.';
10054
+ antd.notification.error({
10055
+ message: 'Request Failed',
10056
+ description: errMsg
10057
+ });
10058
+ case 27:
9984
10059
  case "end":
9985
10060
  return _context.stop();
9986
10061
  }
9987
- }, _callee, null, [[8, 14]]);
10062
+ }, _callee, null, [[8, 22]]);
9988
10063
  }));
9989
10064
  return function handleSubmit() {
9990
10065
  return _ref.apply(this, arguments);
@@ -9993,29 +10068,45 @@ function SendSmsModal() {
9993
10068
  var closeModal = function closeModal() {
9994
10069
  setCurrentAction(undefined);
9995
10070
  };
9996
- var isFormValid = (formData == null || (_formData$to$trim = formData.to.trim()) == null ? void 0 : _formData$to$trim.length) === 10 && !toError && (formData == null ? void 0 : formData.body.trim().length) > 0;
10071
+ var isFormValid = (formData == null || (_formData$to$trim = formData.to.trim()) == null ? void 0 : _formData$to$trim.length) > 0 && !toError && (formData == null ? void 0 : formData.body.trim().length) > 0;
9997
10072
  return React__default.createElement(OrderActionModal, {
9998
10073
  headerTitle: "Send SMS",
9999
10074
  onCloseHeader: closeModal,
10000
10075
  onSubmit: handleSubmit,
10001
10076
  submitBtnTitle: loading ? 'Sending...' : 'Send SMS',
10002
10077
  isSubmitDisabled: !isFormValid || loading
10003
- }, React__default.createElement(ContentContainer$4, null, React__default.createElement(Label$c, null, "To"), React__default.createElement(StyledInput, {
10078
+ }, React__default.createElement(ContentContainer$5, null, React__default.createElement(Label$c, null, "To"), React__default.createElement(StyledInput, {
10004
10079
  type: "text",
10005
10080
  name: "to",
10006
10081
  value: formData.to,
10007
10082
  onChange: handleInputChange,
10008
10083
  required: true,
10009
- placeholder: "Enter the number",
10010
- maxLength: 10
10011
- }), toError && React__default.createElement(ErrorText$9, null, toError), React__default.createElement(Label$c, null, "Body"), React__default.createElement(CustomTextArea$3, {
10084
+ placeholder: "Enter the number"
10085
+ }), toError && React__default.createElement(ErrorText$9, null, toError), React__default.createElement(Label$c, null, "Body"), React__default.createElement(TextArea, {
10086
+ style: {
10087
+ width: '700px',
10088
+ height: '140px',
10089
+ resize: 'none'
10090
+ },
10012
10091
  name: "body",
10013
10092
  value: formData.body,
10014
10093
  onChange: handleInputChange,
10015
10094
  required: true,
10016
- placeholder: "Write here..."
10095
+ placeholder: "Write here...",
10096
+ maxLength: 500,
10097
+ count: {
10098
+ show: true,
10099
+ max: 500
10100
+ }
10017
10101
  })));
10018
10102
  }
10103
+ var ContentContainer$5 = /*#__PURE__*/styled__default.div(_templateObject$1F || (_templateObject$1F = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 20px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 15px;\n flex: 1 0 0;\n border-radius: 15px;\n"])));
10104
+ // const CustomTextArea = styled(TextArea)`
10105
+ // width: 700px;
10106
+ // height: 140px;
10107
+ // resize: none;
10108
+ // `;
10109
+ var ErrorText$9 = /*#__PURE__*/styled__default.div(_templateObject2$1h || (_templateObject2$1h = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: red;\n font-size: 12px;\n margin-top: 4px;\n"])));
10019
10110
 
10020
10111
  function SendEmailModal() {
10021
10112
  var _orderDetails$order_r;
@@ -12154,7 +12245,7 @@ function UncancelOrder(props) {
12154
12245
  display: 'flex',
12155
12246
  flexDirection: 'row'
12156
12247
  }
12157
- }, React__default.createElement(Label$c, null, "Un-cancel Note"), ' ', React__default.createElement(RequiredAsterisk$3, null, "*")), React__default.createElement(CustomTextArea$4, {
12248
+ }, React__default.createElement(Label$c, null, "Un-cancel Note"), ' ', React__default.createElement(RequiredAsterisk$3, null, "*")), React__default.createElement(CustomTextArea$3, {
12158
12249
  rows: 5,
12159
12250
  onChange: onChange
12160
12251
  }))), React__default.createElement(UnCancelOrderTable, null)));
@@ -12162,7 +12253,7 @@ function UncancelOrder(props) {
12162
12253
  var RequiredAsterisk$3 = /*#__PURE__*/styled__default.span(_templateObject$1U || (_templateObject$1U = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: red;\n margin-left: 2px;\n font-size: x-small;\n"])));
12163
12254
  var Container$14 = /*#__PURE__*/styled__default.div(_templateObject2$1t || (_templateObject2$1t = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: space-between;\n padding: 15px;\n gap: 30px;\n border-radius: 16px;\n border: 1px solid#edebe8;\n background: #f8fafc;\n\n .uncancelReasonDropdown {\n flex: 1;\n }\n"])));
12164
12255
  var MainContainer$8 = /*#__PURE__*/styled__default.div(_templateObject3$Q || (_templateObject3$Q = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n padding: 20px;\n gap: 10px;\n"])));
12165
- var CustomTextArea$4 = /*#__PURE__*/styled__default(dmsComponentLibrary.TextArea)(_templateObject4$t || (_templateObject4$t = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 346px;\n"])));
12256
+ var CustomTextArea$3 = /*#__PURE__*/styled__default(dmsComponentLibrary.TextArea)(_templateObject4$t || (_templateObject4$t = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 346px;\n"])));
12166
12257
 
12167
12258
  var _templateObject$1V;
12168
12259
  function RemoveFromRoute(props) {
@@ -12252,7 +12343,7 @@ var Wrapper$i = /*#__PURE__*/styled__default.div(_templateObject$1W || (_templat
12252
12343
  var SplitContainer = /*#__PURE__*/styled__default.div(_templateObject3$R || (_templateObject3$R = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n /* width: 95%; */\n min-width: 25vw;\n display: flex;\n flex-direction: column;\n gap: 10px;\n"])));
12253
12344
  var StyledAntSelect$7 = /*#__PURE__*/styled__default(antd.Select)(_templateObject4$u || (_templateObject4$u = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n .ant-select-selector {\n /* width: 22vw; */\n border-radius: 22px;\n }\n"])));
12254
12345
  var Label$d = /*#__PURE__*/styled__default.label(_templateObject5$k || (_templateObject5$k = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: #6a7378;\n font-family: 'Lato', sans-serif;\n font-size: 14px;\n font-weight: 500;\n"])));
12255
- var ContentContainer$5 = /*#__PURE__*/styled__default.div(_templateObject7$a || (_templateObject7$a = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 12px 12px;\n margin: 5px 14px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 15px;\n background: #f8fafc;\n border-radius: 15px;\n"])));
12346
+ var ContentContainer$6 = /*#__PURE__*/styled__default.div(_templateObject7$a || (_templateObject7$a = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 12px 12px;\n margin: 5px 14px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 15px;\n background: #f8fafc;\n border-radius: 15px;\n"])));
12256
12347
  var Row$6 = /*#__PURE__*/styled__default.div(_templateObject8$8 || (_templateObject8$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 10px;\n"])));
12257
12348
  var DoubleDropdownContainer = /*#__PURE__*/styled__default.div(_templateObject9$7 || (_templateObject9$7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 10px;\n width: 100%;\n"])));
12258
12349
  var FormRow = function FormRow(_ref) {
@@ -12886,7 +12977,7 @@ function ReminderModal(props) {
12886
12977
  submitBtnTitle: 'Save Reminder',
12887
12978
  isSubmitDisabled: isSubmitDisabled(),
12888
12979
  footerActions: ''
12889
- }, React__default.createElement(ContentContainer$5, null, React__default.createElement(CreateReminderModal, null))));
12980
+ }, React__default.createElement(ContentContainer$6, null, React__default.createElement(CreateReminderModal, null))));
12890
12981
  }
12891
12982
  var OrderModal = /*#__PURE__*/styled__default(OrderActionModal)(_templateObject$1_ || (_templateObject$1_ = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 70%;\n"])));
12892
12983
 
@@ -15173,7 +15264,7 @@ function ForceDebriefModal(props) {
15173
15264
  headerActions: React__default.createElement(ForceDebriefSelector, {
15174
15265
  onSwitchChange: handleSwitchChange
15175
15266
  })
15176
- }, React__default.createElement(MainContainer$b, null, React__default.createElement(FDNotification, null), React__default.createElement(ContentContainer$6, null, React__default.createElement(OrderInfo$1, null)), React__default.createElement(ContentContainer$6, null, React__default.createElement(Container$1h, null, React__default.createElement(dmsComponentLibrary.Label, {
15267
+ }, React__default.createElement(MainContainer$b, null, React__default.createElement(FDNotification, null), React__default.createElement(ContentContainer$7, null, React__default.createElement(OrderInfo$1, null)), React__default.createElement(ContentContainer$7, null, React__default.createElement(Container$1h, null, React__default.createElement(dmsComponentLibrary.Label, {
15177
15268
  label: "Delivery Instructions",
15178
15269
  htmlFor: "deliveryInstruction"
15179
15270
  }), React__default.createElement(Text$c, null, (orderDetails == null ? void 0 : orderDetails.delivery_instructions) || 'N/A')), React__default.createElement(Container$1h, null, React__default.createElement(dmsComponentLibrary.Label, {
@@ -15184,7 +15275,7 @@ function ForceDebriefModal(props) {
15184
15275
  return React__default.createElement(ProductContainer, {
15185
15276
  key: index
15186
15277
  }, React__default.createElement(Status$1, null, '*'), React__default.createElement(Status$1, null, (item == null ? void 0 : item.status_value) || 'N/A'), React__default.createElement(Status$1, null, (item == null || (_item$order_product_t = item.order_product_type) == null ? void 0 : _item$order_product_t.type) || 'N/A'), React__default.createElement(Status$1, null, (item == null ? void 0 : item.sku) || 'N/A'), React__default.createElement(Status$1, null, "Part 1 of 1"), React__default.createElement(Status$1, null, 'Weight' + ':' + (item == null ? void 0 : item.weight) || 'N/A'), React__default.createElement(Status$1, null, 'Cube' + ':' + (item == null ? void 0 : item.cube) || 'N/A'));
15187
- }))), React__default.createElement(ContentContainer$6, null, React__default.createElement(ContainerInner, null, React__default.createElement(BaseCharges, {
15278
+ }))), React__default.createElement(ContentContainer$7, null, React__default.createElement(ContainerInner, null, React__default.createElement(BaseCharges, {
15188
15279
  inputValue: inputValue,
15189
15280
  setInputValue: setInputValue,
15190
15281
  staticData: staticData
@@ -15200,7 +15291,7 @@ function ForceDebriefModal(props) {
15200
15291
  })), React__default.createElement(OrderCharges, {
15201
15292
  inputValue: inputValue,
15202
15293
  setInputValue: setInputValue
15203
- }), React__default.createElement(AdhocSection, null)), activeTab === 'failure' && React__default.createElement(ContentContainer$6, {
15294
+ }), React__default.createElement(AdhocSection, null)), activeTab === 'failure' && React__default.createElement(ContentContainer$7, {
15204
15295
  style: {
15205
15296
  flexDirection: 'column',
15206
15297
  gap: '10px'
@@ -15226,7 +15317,7 @@ var MainContainer$b = /*#__PURE__*/styled__default.div(_templateObject3$12 || (_
15226
15317
  var ContainerInner = /*#__PURE__*/styled__default.div(_templateObject4$C || (_templateObject4$C = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 16px;\n"])));
15227
15318
  var Container$1h = /*#__PURE__*/styled__default.div(_templateObject5$s || (_templateObject5$s = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 100%;\n"])));
15228
15319
  var Text$c = /*#__PURE__*/styled__default.div(_templateObject6$e || (_templateObject6$e = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: #363a30;\n font-size: 14px;\n white-space: break-spaces;\n"])));
15229
- var ContentContainer$6 = /*#__PURE__*/styled__default.div(_templateObject7$f || (_templateObject7$f = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 12px;\n flex-direction: row;\n align-items: flex-start;\n gap: 40px;\n flex: 1 0 0;\n border-radius: 15px;\n background: #f8fafc;\n width: 100%;\n white-space: nowrap;\n"])));
15320
+ var ContentContainer$7 = /*#__PURE__*/styled__default.div(_templateObject7$f || (_templateObject7$f = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 12px;\n flex-direction: row;\n align-items: flex-start;\n gap: 40px;\n flex: 1 0 0;\n border-radius: 15px;\n background: #f8fafc;\n width: 100%;\n white-space: nowrap;\n"])));
15230
15321
  var ProductDiv = /*#__PURE__*/styled__default.div(_templateObject8$b || (_templateObject8$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n padding: 12px;\n flex-direction: row;\n align-items: flex-start;\n gap: 40px;\n flex: 1 0 0;\n border-radius: 15px;\n background: #f8fafc;\n width: 100%;\n white-space: nowrap;\n min-height: 60px;\n overflow: scroll;\n max-height: 150px;\n"])));
15231
15322
  var ForceDebriefModal$1 = /*#__PURE__*/React__default.memo(ForceDebriefModal);
15232
15323
 
@@ -15843,29 +15934,65 @@ var StyledSpace$2 = /*#__PURE__*/styled__default(antd.Space)(_templateObject$2q
15843
15934
  var _templateObject$2r, _templateObject2$1N;
15844
15935
  // components
15845
15936
  function DropDowns$1() {
15846
- var _orderDetails$order_r, _orderDetails$order_r2;
15937
+ var _orderDetails$order_r, _orderDetails$order_r2, _orderDetails$order_r3, _orderDetails$order_r4;
15847
15938
  var _useOrderDetails = useOrderDetails(),
15848
15939
  orderDetails = _useOrderDetails[0];
15849
15940
  var _useCurrentAction = useCurrentAction(),
15850
15941
  setCurrentAction = _useCurrentAction[1];
15942
+ var _useAtom = jotai.useAtom(errorAtom),
15943
+ errors = _useAtom[0];
15944
+ var _useState = React.useState(false),
15945
+ hasNotifiedMobile = _useState[0],
15946
+ setHasNotifiedMobile = _useState[1];
15947
+ var _useState2 = React.useState(false),
15948
+ hasNotifiedEmail = _useState2[0],
15949
+ setHasNotifiedEmail = _useState2[1];
15851
15950
  var isEmailId = orderDetails == null || (_orderDetails$order_r = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r.contact_email;
15852
- var isContactNum = orderDetails == null || (_orderDetails$order_r2 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r2.contact_home;
15951
+ // const isContactNum = orderDetails?.order_recipient?.contact_home;
15952
+ var VALID_UK_MOBILE_REGEX = /^(07\d{8,12}|447\d{7,11})$/;
15953
+ var VALID_IRISH_MOBILE_REGEX = /^(08[35679]\d{7}|3538[35679]\d{7}|\+3538[35679]\d{7})$/;
15954
+ var isValidUKMobile = function isValidUKMobile(number) {
15955
+ return typeof number === 'string' && VALID_UK_MOBILE_REGEX.test(number);
15956
+ };
15957
+ var isValidIrishMobile = function isValidIrishMobile(number) {
15958
+ return typeof number === 'string' && VALID_IRISH_MOBILE_REGEX.test(number);
15959
+ };
15960
+ var isValidMobile = function isValidMobile(number) {
15961
+ return isValidUKMobile(number) || isValidIrishMobile(number);
15962
+ };
15963
+ var contactMobile = orderDetails == null || (_orderDetails$order_r2 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r2.contact_mobile;
15964
+ var contactHome = orderDetails == null || (_orderDetails$order_r3 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r3.contact_home;
15965
+ var contactWork = orderDetails == null || (_orderDetails$order_r4 = orderDetails.order_recipient) == null ? void 0 : _orderDetails$order_r4.contact_work;
15966
+ var allContacts = [contactMobile, contactHome, contactWork];
15967
+ var hasValidMobile = allContacts.some(isValidMobile);
15853
15968
  var actions = [];
15854
- if (isContactNum) {
15855
- actions == null || actions.push({
15856
- label: 'Send SMS',
15857
- onClick: function onClick() {
15858
- return setCurrentAction('send-sms');
15969
+ if (hasValidMobile) {
15970
+ if (errors != null && errors.mobileError) {
15971
+ if (!hasNotifiedMobile) {
15972
+ setHasNotifiedMobile(true);
15859
15973
  }
15860
- });
15974
+ } else {
15975
+ actions.push({
15976
+ label: 'Send SMS',
15977
+ onClick: function onClick() {
15978
+ return setCurrentAction('send-sms');
15979
+ }
15980
+ });
15981
+ }
15861
15982
  }
15862
15983
  if (isEmailId) {
15863
- actions == null || actions.push({
15864
- label: 'Send Email',
15865
- onClick: function onClick() {
15866
- return setCurrentAction('send-email');
15984
+ if (errors != null && errors.emailError) {
15985
+ if (!hasNotifiedEmail) {
15986
+ setHasNotifiedEmail(true);
15867
15987
  }
15868
- });
15988
+ } else {
15989
+ actions.push({
15990
+ label: 'Send Email',
15991
+ onClick: function onClick() {
15992
+ return setCurrentAction('send-email');
15993
+ }
15994
+ });
15995
+ }
15869
15996
  }
15870
15997
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(DashBoardWrapper$2, null, React__default.createElement(BjsMenuDropDown, null), React__default.createElement(Options$1, null), React__default.createElement(Print, null), actions == null ? void 0 : actions.map(function (action, index) {
15871
15998
  return React__default.createElement(FontContainer, {
@@ -17717,6 +17844,8 @@ function ReturnMainTable() {
17717
17844
  var queryParams = new URLSearchParams(location.search);
17718
17845
  var _useClientPortal = useClientPortal(),
17719
17846
  clientPortal = _useClientPortal[0];
17847
+ var _useClientLoading = useClientLoading(),
17848
+ clientLoading = _useClientLoading[0];
17720
17849
  var customerId = queryParams.get('customerId');
17721
17850
  var handlePageChange = function handlePageChange(page) {
17722
17851
  setCurrentPage(page);
@@ -17738,10 +17867,10 @@ function ReturnMainTable() {
17738
17867
  loading = _useAxios.loading,
17739
17868
  fetchData = _useAxios.fetchData;
17740
17869
  React.useEffect(function () {
17741
- if (!clientPortal) {
17870
+ if (!clientPortal && !clientLoading) {
17742
17871
  fetchData();
17743
17872
  }
17744
- }, []);
17873
+ }, [clientLoading]);
17745
17874
  React.useEffect(function () {
17746
17875
  if (fetchedCustomerData && fetchedCustomerData != null && fetchedCustomerData.data) {
17747
17876
  setCustomers(fetchedCustomerData == null ? void 0 : fetchedCustomerData.data);
@@ -17760,10 +17889,10 @@ function ReturnMainTable() {
17760
17889
  paginationData = _useAxios2.paginationData,
17761
17890
  fetchProductStats = _useAxios2.fetchData;
17762
17891
  React.useEffect(function () {
17763
- if (!clientPortal) {
17892
+ if (!clientPortal && !clientLoading) {
17764
17893
  fetchProductStats();
17765
17894
  }
17766
- }, []);
17895
+ }, [clientLoading]);
17767
17896
  React.useEffect(function () {
17768
17897
  setLoading(statsDataLoading);
17769
17898
  if (fetchedClientData && fetchedClientData.data) {
@@ -18770,7 +18899,19 @@ var ClientRouterHeader = function ClientRouterHeader(_ref) {
18770
18899
  }
18771
18900
  }, [startDate, endDate]);
18772
18901
  var handleStartDateChange = function handleStartDateChange(date) {
18773
- setStartDate(date != null ? date : null);
18902
+ if (!date) {
18903
+ setStartDate(null);
18904
+ setEndDate(null);
18905
+ dispatch({
18906
+ type: 'SET_CP_DATE_FILTER',
18907
+ payload: {
18908
+ startDate: null,
18909
+ endDate: null
18910
+ }
18911
+ });
18912
+ } else {
18913
+ setStartDate(date);
18914
+ }
18774
18915
  };
18775
18916
  var handleEndDateChange = function handleEndDateChange(date) {
18776
18917
  setEndDate(date);
@@ -18788,7 +18929,7 @@ var ClientRouterHeader = function ClientRouterHeader(_ref) {
18788
18929
  value: startDate ? dayjs(startDate) : null,
18789
18930
  onChange: handleStartDateChange,
18790
18931
  format: 'MMMM D, YYYY',
18791
- allowClear: false,
18932
+ allowClear: true,
18792
18933
  disabledDate: function disabledDate(current) {
18793
18934
  return !!endDate && current.isAfter(dayjs(endDate), 'day');
18794
18935
  }
@@ -18858,6 +18999,7 @@ var RouterHeader = function RouterHeader(_ref) {
18858
18999
  };
18859
19000
 
18860
19001
  function ReturnClient() {
19002
+ var _localStorage$getItem;
18861
19003
  antd.notification.config({
18862
19004
  top: 80
18863
19005
  });
@@ -18892,9 +19034,12 @@ function ReturnClient() {
18892
19034
  clientPortal = _useClientPortal[0],
18893
19035
  setClientPortal = _useClientPortal[1];
18894
19036
  var location = reactRouterDom.useLocation();
18895
- var userType = JSON.parse(localStorage.getItem('user_type'));
19037
+ var userType = JSON.parse((_localStorage$getItem = localStorage.getItem('user_type')) != null ? _localStorage$getItem : 'null');
19038
+ var _useClientLoading = useClientLoading(),
19039
+ setLoading = _useClientLoading[1];
18896
19040
  React.useEffect(function () {
18897
- setClientPortal((userType == null ? void 0 : userType.is_customer) || false); // change it to false bydefault
19041
+ setClientPortal(userType != null && userType.is_customer ? true : false); // change it to false bydefault
19042
+ setLoading(false);
18898
19043
  }, []);
18899
19044
  var splitPath = function splitPath(str) {
18900
19045
  var _str$split;