@bjsdistribution/dms-client-return 0.1.21-dev → 0.1.21-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.
Files changed (53) hide show
  1. package/dist/common/date-picker/header/ClearDate.d.ts +1 -1
  2. package/dist/components/client-portal/ReturnRTFilters.d.ts +3 -0
  3. package/dist/components/order-daily-overview/header/route-header/ClientRouterHeader.d.ts +11 -0
  4. package/dist/components/order-daily-overview/table-view/TableStyle.d.ts +4 -4
  5. package/dist/components/order-view/types.d.ts +6 -0
  6. package/dist/components/order-view/utils.d.ts +8 -2
  7. package/dist/components/order-view/view-reminder/ViewReminder.d.ts +0 -2
  8. package/dist/components/store.d.ts +1 -1
  9. package/dist/dms-client-return.cjs.development.js +2962 -3216
  10. package/dist/dms-client-return.cjs.development.js.map +1 -1
  11. package/dist/dms-client-return.cjs.production.min.js +1 -1
  12. package/dist/dms-client-return.cjs.production.min.js.map +1 -1
  13. package/dist/dms-client-return.esm.js +2999 -3253
  14. package/dist/dms-client-return.esm.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/components/client-portal/DateFilterStore.ts +45 -0
  17. package/src/components/client-portal/OutstandingTable.tsx +3 -2
  18. package/src/components/client-portal/ReturnAfterSearchBar.tsx +2 -1
  19. package/src/components/client-portal/ReturnOverview.tsx +11 -2
  20. package/src/components/client-portal/ReturnRTFilters.tsx +140 -41
  21. package/src/components/client-portal/ReturnSearchBar.tsx +3 -3
  22. package/src/components/client-portal/ReturnStatus.tsx +4 -2
  23. package/src/components/client-portal/return-confirm/ReturnConfirmedTable.tsx +1 -1
  24. package/src/components/order-daily-overview/header/route-header/ClientRouterHeader.tsx +166 -0
  25. package/src/components/order-daily-overview/header/route-header/RouterHeader.tsx +1 -78
  26. package/src/components/order-daily-overview/header-filters/SelectionFilter.tsx +5 -2
  27. package/src/components/order-daily-overview/index.tsx +3 -3
  28. package/src/components/order-view/order-actions/actions/confirm-order/index.tsx +0 -29
  29. package/src/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.tsx +35 -20
  30. package/src/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.tsx +11 -62
  31. package/src/components/order-view/order-actions/index.tsx +1 -5
  32. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactHome.tsx +102 -45
  33. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactMobile.tsx +93 -34
  34. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactWork.tsx +88 -31
  35. package/src/components/order-view/order-details/expanded-content/footer/index.tsx +52 -83
  36. package/src/components/order-view/order-details/expanded-content/services-section/AssemblyType.tsx +9 -91
  37. package/src/components/order-view/order-details/expanded-content/services-section/OrderServices.tsx +10 -182
  38. package/src/components/order-view/store.ts +6 -0
  39. package/src/components/order-view/types.ts +6 -0
  40. package/src/components/order-view/utils.ts +12 -33
  41. package/src/components/order-view/view-reminder/ViewReminder.tsx +0 -2
  42. package/src/components/store.ts +1 -1
  43. package/src/index.tsx +17 -2
  44. package/dist/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.d.ts +0 -7
  45. package/dist/components/order-view/order-actions/actions/log-service-refusal/Notes.d.ts +0 -7
  46. package/dist/components/order-view/order-actions/actions/log-service-refusal/OrderServices.d.ts +0 -7
  47. package/dist/components/order-view/order-actions/actions/log-service-refusal/helper.d.ts +0 -3
  48. package/dist/components/order-view/order-actions/actions/log-service-refusal/index.d.ts +0 -3
  49. package/src/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.tsx +0 -50
  50. package/src/components/order-view/order-actions/actions/log-service-refusal/Notes.tsx +0 -50
  51. package/src/components/order-view/order-actions/actions/log-service-refusal/OrderServices.tsx +0 -57
  52. package/src/components/order-view/order-actions/actions/log-service-refusal/helper.ts +0 -26
  53. package/src/components/order-view/order-actions/actions/log-service-refusal/index.tsx +0 -130
@@ -4,16 +4,12 @@ import ServiceSlider from '../../../../../common/services-slider/ServiceSlider';
4
4
  import {
5
5
  useOrderDetails,
6
6
  useOrderStaticData,
7
- usePrevOrderDetails,
8
7
  } from '../../../store';
9
- import { OrderServiceType } from '../../../types';
8
+ import { OrdersType } from '../../../types';
10
9
 
11
10
  function OrderServices() {
12
11
  const [orderStaticData] = useOrderStaticData();
13
12
  const [orderDetails, setOrderDetails] = useOrderDetails();
14
- const [prevOrderDetails] = usePrevOrderDetails();
15
- const orderServices = orderDetails?.order_services;
16
- const prevOrderServices = prevOrderDetails?.order_services;
17
13
 
18
14
  const orderServicesOptions = orderStaticData?.order_service_list;
19
15
 
@@ -30,190 +26,22 @@ function OrderServices() {
30
26
  });
31
27
 
32
28
  const toggleServices = (id: number) => {
33
- const clone = [...orderServices];
34
- const selectedService = clone?.find(
35
- (s: OrderServiceType) => s?.order_service_list_id === id
29
+ const selectedService = orderServicesOptions?.find(
30
+ (item: any) => item.id === id
36
31
  );
37
- const assembleOrderService = orderStaticData?.order_service_list?.find(
38
- (x: any) => x?.type?.toLowerCase() === 'assemble'
39
- );
40
- const disassembleOrderService = orderStaticData?.order_service_list?.find(
41
- (x: any) => x?.type?.toLowerCase() === 'disassemble'
42
- );
43
-
44
- const assemblyTypeService = clone?.find(
45
- (x: any) => x?.order_service_list_id === assembleOrderService?.id
46
- );
47
-
48
- const disassemblyTypeService = clone?.find(
49
- (x: any) => x?.order_service_list_id === disassembleOrderService?.id
50
- );
51
-
52
- if (selectedService !== undefined) {
53
- const isAssembleService =
54
- assembleOrderService?.id === selectedService?.order_service_list_id;
55
-
56
- const isDisassembleService =
57
- disassembleOrderService?.id === selectedService?.order_service_list_id;
58
-
59
- if (selectedService.new_id) {
60
- const updatedOrderServices = clone.filter(
61
- (service: OrderServiceType) => service.id !== selectedService.id
62
- );
63
- const newData = {
64
- ...orderDetails,
65
- order_services: updatedOrderServices,
66
- };
67
- setOrderDetails(newData);
68
- } else {
69
- let updatedSelectedService = {
70
- ...selectedService,
71
- is_deleted: !selectedService.is_deleted,
72
- };
73
-
74
- let updatedOrderServices = [];
75
- let newUpdatedOrderServices: any = [];
76
-
77
- updatedOrderServices = clone.filter(
78
- (service: OrderServiceType) => service.id !== selectedService.id
79
- );
80
-
81
- updatedOrderServices.push(updatedSelectedService);
82
- if (
83
- (isAssembleService &&
84
- updatedSelectedService?.is_deleted === true &&
85
- (disassemblyTypeService?.is_deleted === true ||
86
- disassemblyTypeService === undefined ||
87
- disassemblyTypeService === null)) ||
88
- (isDisassembleService &&
89
- updatedSelectedService?.is_deleted === true &&
90
- (assemblyTypeService?.is_deleted === true ||
91
- assemblyTypeService === undefined ||
92
- assemblyTypeService === null))
93
- ) {
94
- const prevSelectedService = prevOrderServices?.find(
95
- (s: OrderServiceType) => s?.order_service_list_id === id
96
- );
97
- updatedSelectedService = {
98
- ...selectedService,
99
- is_deleted: true,
100
- service_category_id: prevSelectedService?.service_category_id,
101
- };
102
- updatedOrderServices = clone.filter(
103
- (service: OrderServiceType) => service.id !== selectedService.id
104
- );
105
-
106
- updatedOrderServices.push(updatedSelectedService);
107
- // new cases
108
- if (
109
- isAssembleService &&
110
- disassemblyTypeService?.is_deleted === true &&
111
- disassemblyTypeService !== undefined &&
112
- disassemblyTypeService !== null
113
- ) {
114
- const newUpdatedSelectedService = {
115
- ...disassemblyTypeService,
116
- is_deleted: true,
117
- service_category_id: prevSelectedService?.service_category_id,
118
- };
119
- newUpdatedOrderServices = updatedOrderServices?.filter(
120
- (service: OrderServiceType) =>
121
- service.id !== disassemblyTypeService.id
122
- );
123
- newUpdatedOrderServices?.push(newUpdatedSelectedService);
124
- }
125
- // new cases
126
- if (
127
- isDisassembleService &&
128
- assemblyTypeService?.is_deleted === true &&
129
- assemblyTypeService !== undefined &&
130
- assemblyTypeService !== null
131
- ) {
132
- const newUpdatedSelectedService = {
133
- ...assemblyTypeService,
134
- is_deleted: true,
135
- service_category_id: prevSelectedService?.service_category_id,
136
- };
137
- newUpdatedOrderServices = updatedOrderServices?.filter(
138
- (service: OrderServiceType) =>
139
- service.id !== assemblyTypeService.id
140
- );
141
- newUpdatedOrderServices?.push(newUpdatedSelectedService);
142
- }
143
- }
144
-
145
- const newData = {
146
- ...orderDetails,
147
- order_services:
148
- newUpdatedOrderServices.length > 0
149
- ? newUpdatedOrderServices
150
- : updatedOrderServices,
151
- };
152
- setOrderDetails(newData);
153
- }
154
- } else {
155
- // service not exist case
156
- // if not matched then treat it as an new service
157
- let largestId: number;
158
- if (clone === undefined || clone.length === 0) {
159
- largestId = 0;
160
- } else {
161
- largestId = Math.max(
162
- ...clone?.map((o: OrderServiceType) => +o?.order_service_list_id!)
163
- );
164
- }
165
-
166
- let service: OrderServiceType = {};
167
- // Normal service addition
168
- service = {
169
- is_deleted: false,
170
- order_service_list_id: id,
171
- new_id:
172
- largestId !== undefined && largestId !== null ? largestId + 1 : 1,
173
- id: largestId !== undefined && largestId !== null ? largestId + 1 : 1,
174
- };
175
- // special case if assembly already exist and we are adding disassemble service and vice-versa
176
- if (
177
- assemblyTypeService?.is_deleted === false &&
178
- disassembleOrderService?.id === id
179
- ) {
180
- service = {
181
- is_deleted: false,
182
- order_service_list_id: id,
183
- new_id:
184
- largestId !== undefined && largestId !== null ? largestId + 1 : 1,
185
- id: largestId !== undefined && largestId !== null ? largestId + 1 : 1,
186
- service_category_id: assemblyTypeService?.service_category_id,
187
- };
188
- }
189
-
190
- if (
191
- disassemblyTypeService?.is_deleted === false &&
192
- assembleOrderService?.id === id
193
- ) {
194
- service = {
195
- is_deleted: false,
196
- order_service_list_id: id,
197
- new_id:
198
- largestId !== undefined && largestId !== null ? largestId + 1 : 1,
199
- id: largestId !== undefined && largestId !== null ? largestId + 1 : 1,
200
- service_category_id: disassemblyTypeService?.service_category_id,
201
- };
202
- }
203
- clone.push(service);
204
- const newData = { ...orderDetails, order_services: clone };
205
- setOrderDetails(newData);
206
- }
32
+ const key = selectedService?.type;
33
+ const value = !orderDetails[key as keyof OrdersType];
34
+ setOrderDetails(prev => ({
35
+ ...prev,
36
+ [key]: value,
37
+ }));
207
38
  };
208
39
  const isDisabled = true;
209
40
 
210
41
  return (
211
42
  <Container disabled={isDisabled}>
212
43
  {sortedServices?.map((service: any) => {
213
- const selected = !!orderServices?.find(
214
- (s: OrderServiceType) =>
215
- s?.order_service_list_id === service?.id && s.is_deleted === false
216
- );
44
+ const selected = orderDetails[service?.type as keyof OrdersType];
217
45
  return (
218
46
  <ServiceSlider
219
47
  serviceName={service?.type?.replaceAll('_', ' ')}
@@ -113,6 +113,12 @@ export const ordersInitialValue: OrdersType = {
113
113
  order_type: {
114
114
  type: null,
115
115
  },
116
+ assemble: false,
117
+ disassemble: false,
118
+ unpack_items: false,
119
+ take_packaging_away: false,
120
+ collect_disposal: false,
121
+ assembly_type: null,
116
122
  };
117
123
 
118
124
  export const orderProductInitialvalue: CreateProduct = {
@@ -174,6 +174,12 @@ export interface OrdersType {
174
174
  postcode: any;
175
175
  carrier_id: number | null;
176
176
  order_type: orderType;
177
+ assemble: boolean;
178
+ disassemble: boolean;
179
+ unpack_items: boolean;
180
+ take_packaging_away: boolean;
181
+ collect_disposal: boolean;
182
+ assembly_type: string | null;
177
183
  }
178
184
 
179
185
  export type DeleteProds = {
@@ -2,7 +2,6 @@ import {
2
2
  OrderRecipientType,
3
3
  OrderRouteType,
4
4
  OrderServicesDetailType,
5
- OrderServiceType,
6
5
  OrdersType,
7
6
  } from './types';
8
7
 
@@ -146,6 +145,18 @@ export const getCookie = (name: string): string | null => {
146
145
  };
147
146
 
148
147
  export const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
148
+ // Allow common shortcuts like Ctrl+V, Ctrl+C, Ctrl+A, etc.
149
+ if (e.ctrlKey || e.metaKey) {
150
+ if (
151
+ e.key.toLowerCase() === 'v' || // Paste
152
+ e.key.toLowerCase() === 'c' || // Copy
153
+ e.key.toLowerCase() === 'x' || // Cut
154
+ e.key.toLowerCase() === 'a' // Select All
155
+ ) {
156
+ return;
157
+ }
158
+ }
159
+
149
160
  // Allowed keys: numbers (0-9), '.', '-', '+'
150
161
  const allowedKeys = [
151
162
  '0',
@@ -277,14 +288,12 @@ export const compareOrderDetailsStates = (
277
288
  order_recipient: oldOrderRecipient,
278
289
  order_routes: oldOrderRoutes,
279
290
  order_services_detail: oldOrderServicesDetail,
280
- order_services: oldOrderServices,
281
291
  ...oldRequiredData
282
292
  } = oldData;
283
293
  const {
284
294
  order_recipient: newOrderRecipient,
285
295
  order_routes: newOrderRoutes,
286
296
  order_services_detail: newOrderServicesDetail,
287
- order_services: newOrderServices,
288
297
  ...newRequiredData
289
298
  } = newData;
290
299
 
@@ -307,33 +316,6 @@ export const compareOrderDetailsStates = (
307
316
  newOrderServicesDetail
308
317
  );
309
318
 
310
- // need to remove id and new_id from new order_services
311
- const filteredNewOrderServices = newOrderServices?.map((item: any) => {
312
- if (item.new_id) {
313
- const { id, new_id, ...newItem } = item;
314
- return newItem;
315
- } else {
316
- return item;
317
- }
318
- });
319
-
320
- const newOrderServicesWithoutId = filteredNewOrderServices.filter(
321
- (service: OrderServiceType) => !service.id
322
- );
323
- const newOrderServicesWithId = filteredNewOrderServices.filter(
324
- (service: OrderServiceType) => service.id
325
- );
326
-
327
- const payloadOrderServices: OrderServiceType[] = compareArrays(
328
- oldOrderServices,
329
- newOrderServicesWithId
330
- );
331
-
332
- const finalPayloadOrderServices = [
333
- ...payloadOrderServices,
334
- ...newOrderServicesWithoutId,
335
- ];
336
-
337
319
  const finalPayload = {
338
320
  ...payloadWithId,
339
321
  ...(!isObjectEmpty(payloadOrderRecipient) && {
@@ -345,9 +327,6 @@ export const compareOrderDetailsStates = (
345
327
  ...(!isObjectEmpty(payloadOrderServicesDetail) && {
346
328
  order_services_detail: payloadOrderServicesDetail,
347
329
  }),
348
- ...(finalPayloadOrderServices.length > 0 && {
349
- order_services: finalPayloadOrderServices,
350
- }),
351
330
  };
352
331
 
353
332
  return finalPayload;
@@ -30,8 +30,6 @@ import { useReminderData } from '../../store';
30
30
 
31
31
  export interface IProps {
32
32
  callReminderApi: any;
33
- callReminderForCount: any;
34
- callReminderTableApi: any;
35
33
  }
36
34
 
37
35
  const ViewReminderModal = (props: IProps) => {
@@ -263,7 +263,7 @@ export function useNewReturnOrderData() {
263
263
  return useAtom(newReturnOrderData);
264
264
  }
265
265
 
266
- const isClientPortalAtom = atom<boolean>(false);
266
+ const isClientPortalAtom = atom<boolean | undefined>(undefined);
267
267
  function useClientPortal() {
268
268
  return useAtom(isClientPortalAtom);
269
269
  }
package/src/index.tsx CHANGED
@@ -1,5 +1,11 @@
1
1
  import React, { Suspense, useEffect } from 'react';
2
- import { Navigate, Route, Routes, useSearchParams } from 'react-router-dom';
2
+ import {
3
+ Navigate,
4
+ Route,
5
+ Routes,
6
+ useLocation,
7
+ useSearchParams,
8
+ } from 'react-router-dom';
3
9
  import ReturnTable from './components/order-daily-overview/return-order-table/ReturnTable';
4
10
  import ReturnAfterTable from './components/order-daily-overview/return-after-table/ReturnAfterTable';
5
11
  import {
@@ -28,6 +34,7 @@ import OrderViewQueryHandler from './OrderViewQueryHandler';
28
34
  import OrderView from './components/order-view';
29
35
  import ReturnOverview from './components/client-portal/ReturnOverview';
30
36
  import RouterHeader from './components/order-daily-overview/header/route-header/RouterHeader';
37
+ import ClientRouterHeader from './components/order-daily-overview/header/route-header/ClientRouterHeader';
31
38
  function ReturnClient() {
32
39
  notification.config({
33
40
  top: 80,
@@ -46,7 +53,7 @@ function ReturnClient() {
46
53
  const [, setVisibilityData] = useVisibilityData();
47
54
  const [, setOrderStaticData] = useOrderStaticData();
48
55
  const [clientPortal, setClientPortal] = useClientPortal();
49
-
56
+ const location = useLocation();
50
57
  const userType = JSON.parse(localStorage.getItem('user_type')!);
51
58
 
52
59
  useEffect(() => {
@@ -117,14 +124,22 @@ function ReturnClient() {
117
124
  }
118
125
  }, [locationloading]);
119
126
 
127
+ const pathname = location.pathname;
128
+ const isViewPath = /^\/return\/view\/\d+$/.test(pathname);
129
+
120
130
  return (
121
131
  <>
132
+ {clientPortal && isViewPath && <ClientRouterHeader />}{' '}
122
133
  {!clientPortal && <RouterHeader />}
123
134
  <Suspense fallback={<LoadingMessage />}>
124
135
  {clientPortal ? (
125
136
  <Routes>
126
137
  <Route path="" element={<Navigate to={'outstanding_return'} />} />
127
138
  <Route path=":status" element={<ReturnOverview />} />
139
+ <Route
140
+ path="view/:id"
141
+ element={<OrderView locationloading={locationloading} />}
142
+ />
128
143
  </Routes>
129
144
  ) : (
130
145
  <Routes>
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- interface IProps {
3
- refusedDelPointService: any;
4
- setRefusedDelPointService: React.Dispatch<React.SetStateAction<any>>;
5
- }
6
- declare function DeliveryPoint(props: IProps): React.JSX.Element;
7
- export default DeliveryPoint;
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- interface IProps {
3
- refusedReason: string;
4
- setRefusedReason: React.Dispatch<React.SetStateAction<string>>;
5
- }
6
- declare function Notes(props: IProps): React.JSX.Element;
7
- export default Notes;
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- interface IProps {
3
- refusedServices: string[];
4
- setRefusedServices: React.Dispatch<React.SetStateAction<string[]>>;
5
- }
6
- declare function OrderServices(props: IProps): React.JSX.Element;
7
- export default OrderServices;
@@ -1,3 +0,0 @@
1
- export declare const paths: Record<number, string>;
2
- export declare const getSubPath: (input: number) => string;
3
- export declare const getIcon: (input: number) => string;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare function LogServiceRefusal(props: any): React.JSX.Element;
3
- export default LogServiceRefusal;
@@ -1,50 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import RadioButtonGroup from '../../../../../common/radio-group/RadioButtonGroup';
4
- import { StandardOptionsType } from '@bjsdistribution/dms-component-library';
5
-
6
- interface IProps {
7
- refusedDelPointService: any;
8
- setRefusedDelPointService: React.Dispatch<React.SetStateAction<any>>;
9
- }
10
-
11
- const deliveryPoints: StandardOptionsType[] = [
12
- {
13
- label: 'Hallway',
14
- value: 'hallway',
15
- },
16
- {
17
- label: 'ROC',
18
- value: 'room_of_choice',
19
- },
20
- ];
21
-
22
- function DeliveryPoint(props: IProps) {
23
- const radioGroupHandler = (event: React.ChangeEvent<HTMLInputElement>) => {
24
- const service = event.target.value;
25
- props?.setRefusedDelPointService(service);
26
- };
27
-
28
- return (
29
- <Container>
30
- <RadioButtonGroup
31
- heading="Delivery Point"
32
- options={deliveryPoints || []}
33
- onChange={radioGroupHandler}
34
- direction="horizontal"
35
- selectedValue={props?.refusedDelPointService}
36
- required={false}
37
- />
38
- </Container>
39
- );
40
- }
41
-
42
- const Container = styled.div`
43
- display: flex;
44
- /* height: 30px; */
45
- padding: 1px;
46
- align-items: flex-start;
47
- align-self: stretch;
48
- `;
49
-
50
- export default DeliveryPoint;
@@ -1,50 +0,0 @@
1
- import styled from 'styled-components';
2
- import React from 'react';
3
- import { TextArea } from '@bjsdistribution/dms-component-library';
4
-
5
- interface IProps {
6
- refusedReason: string;
7
- setRefusedReason: React.Dispatch<React.SetStateAction<string>>;
8
- }
9
-
10
- function Notes(props: IProps) {
11
- const handleTextChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {
12
- props?.setRefusedReason(event.target.value);
13
- };
14
-
15
- return (
16
- <Container>
17
- <div style={{ display: 'flex', flexDirection: 'row' }}>
18
- <Label>Notes</Label> <RequiredAsterisk>*</RequiredAsterisk>
19
- </div>
20
- <TextArea
21
- rows={15}
22
- onChange={handleTextChange}
23
- placeholder="Why did the customer refuse the selected service(s)? Add notes..."
24
- value={props?.refusedReason}
25
- />
26
- </Container>
27
- );
28
- }
29
-
30
- const RequiredAsterisk = styled.span`
31
- color: red;
32
- margin-left: 2px;
33
- font-size: x-small;
34
- `;
35
- const Label = styled.span`
36
- color: #6a7378;
37
- font-family: 'Lato', sans-serif;
38
- font-size: 14px;
39
- font-style: normal;
40
- font-weight: 500;
41
- `;
42
-
43
- const Container = styled.div`
44
- display: flex;
45
- gap: 5px;
46
- flex-direction: column;
47
- width: 100%;
48
- `;
49
-
50
- export default Notes;
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import Checkbox from '../../../../../common/checkbox';
4
- import { getIcon } from './helper';
5
- import { useOrderDetails, useOrderStaticData } from '../../../store';
6
- import { OrderServiceType } from '../../../types';
7
- interface IProps {
8
- refusedServices: string[];
9
- setRefusedServices: React.Dispatch<React.SetStateAction<string[]>>;
10
- }
11
-
12
- function OrderServices(props: IProps) {
13
- const [orderStaticData] = useOrderStaticData();
14
- const [orderDetails] = useOrderDetails();
15
- const orderServices = orderDetails?.order_services;
16
- const orderServicesOptions = orderStaticData?.order_service_list;
17
-
18
- const onClick = (service: string) => {
19
- if (props?.refusedServices?.includes(service)) {
20
- const filteredServices = props?.refusedServices?.filter(
21
- (item: string) => item !== service
22
- );
23
- props?.setRefusedServices(filteredServices);
24
- } else {
25
- props?.setRefusedServices((prev: string[]) => [...prev, service]);
26
- }
27
- };
28
-
29
- return (
30
- <Container>
31
- {orderServicesOptions.map((service: any) => {
32
- const selected = !!orderServices?.find(
33
- (s: OrderServiceType) =>
34
- s?.order_service_list_id === service?.id && s.is_deleted === false
35
- );
36
- const isRefused = props?.refusedServices?.includes(service?.type);
37
- return (
38
- <Checkbox
39
- checked={isRefused}
40
- label={service?.type}
41
- imageSrc={getIcon(service?.id)}
42
- enabled={selected}
43
- onClickCheckbox={onClick}
44
- />
45
- );
46
- })}
47
- </Container>
48
- );
49
- }
50
-
51
- const Container = styled.div`
52
- display: flex;
53
- gap: 15px;
54
- flex-wrap: wrap;
55
- `;
56
-
57
- export default OrderServices;
@@ -1,26 +0,0 @@
1
- const baseURL = "/assets/images/";
2
-
3
- // export type ServiceOffered =
4
- // | "Assemble"
5
- // | "Take Packaging Away"
6
- // | "Disassemble"
7
- // | "Collect Disposal"
8
- // | "Unpack Items";
9
-
10
- export const paths: Record<number, string> = {
11
- 1: 'assembly.svg', //1
12
- 2: 'disassembly.svg', //2
13
- 3: 'unpack_items.svg', //3
14
- 4: 'packaging_removal.svg', //4
15
- 5: 'collect_disposal.svg', //5
16
- };
17
-
18
- export const getSubPath = (input: number): string => {
19
- const result = paths[input];
20
- return result;
21
- };
22
-
23
- export const getIcon = (input: number): string => {
24
- const subPath = getSubPath(input);
25
- return `${baseURL}${subPath}`;
26
- };