@clikvn/agent-widget-embedded 1.1.5-dev-21 → 1.1.5-dev-23

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 (70) hide show
  1. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.d.ts +60 -7
  2. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.d.ts.map +1 -1
  3. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.js +25 -17
  4. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.js.map +1 -1
  5. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.d.ts +1 -1
  6. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.d.ts.map +1 -1
  7. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.js +5 -6
  8. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.js.map +1 -1
  9. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.d.ts +1 -0
  10. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.d.ts.map +1 -1
  11. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.js +30 -22
  12. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.js.map +1 -1
  13. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.d.ts.map +1 -1
  14. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.js +8 -11
  15. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.js.map +1 -1
  16. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js +1 -1
  17. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js.map +1 -1
  18. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.d.ts.map +1 -1
  19. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js +1 -1
  20. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js.map +1 -1
  21. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.d.ts.map +1 -1
  22. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js +1 -1
  23. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js.map +1 -1
  24. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.d.ts.map +1 -1
  25. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js +7 -5
  26. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js.map +1 -1
  27. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts +3 -3
  28. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts.map +1 -1
  29. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js +2 -2
  30. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js.map +1 -1
  31. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js +1 -1
  32. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js.map +1 -1
  33. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.d.ts +1 -0
  34. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.d.ts.map +1 -1
  35. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.js +4 -2
  36. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.js.map +1 -1
  37. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts +4 -1
  38. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts.map +1 -1
  39. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.js.map +1 -1
  40. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.d.ts +2 -1
  41. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.d.ts.map +1 -1
  42. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.js.map +1 -1
  43. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.d.ts +2 -0
  44. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.d.ts.map +1 -0
  45. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.js +15 -0
  46. package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.js.map +1 -0
  47. package/dist/commons/constants/bookMeeting.d.ts +60 -7
  48. package/dist/commons/constants/bookMeeting.d.ts.map +1 -1
  49. package/dist/components/Chat/BookMeetingDetail.d.ts +1 -1
  50. package/dist/components/Chat/BookMeetingDetail.d.ts.map +1 -1
  51. package/dist/components/Chat/BookMeetingForm.d.ts +1 -0
  52. package/dist/components/Chat/BookMeetingForm.d.ts.map +1 -1
  53. package/dist/components/Chat/BookMeetingList.d.ts.map +1 -1
  54. package/dist/components/Chat/Icons.d.ts.map +1 -1
  55. package/dist/components/Chat/Message.d.ts.map +1 -1
  56. package/dist/components/Chat/MultimodalInput.d.ts.map +1 -1
  57. package/dist/components/Chat/ProductList.d.ts +3 -3
  58. package/dist/components/Chat/ProductList.d.ts.map +1 -1
  59. package/dist/components/Chat/ui/PhoneNumberInput.d.ts +1 -0
  60. package/dist/components/Chat/ui/PhoneNumberInput.d.ts.map +1 -1
  61. package/dist/hooks/useConfiguration.d.ts +4 -1
  62. package/dist/hooks/useConfiguration.d.ts.map +1 -1
  63. package/dist/index.html +4 -4
  64. package/dist/types/bookMeeting.type.d.ts +2 -1
  65. package/dist/types/bookMeeting.type.d.ts.map +1 -1
  66. package/dist/wdyr.d.ts +2 -0
  67. package/dist/wdyr.d.ts.map +1 -0
  68. package/dist/web.js +1 -1
  69. package/dist/web.js.map +1 -1
  70. package/package.json +1 -1
@@ -3,12 +3,65 @@ export declare const TIME_OPTIONS: {
3
3
  label: string;
4
4
  }[];
5
5
  export declare const DURATION_OPTIONS: {
6
- value: string;
7
- label: string;
8
- }[];
6
+ FIFTEEN_MINUTES: {
7
+ value: string;
8
+ label: string;
9
+ };
10
+ TWENTY_MINUTES: {
11
+ value: string;
12
+ label: string;
13
+ };
14
+ TWENTY_FIVE_MINUTES: {
15
+ value: string;
16
+ label: string;
17
+ };
18
+ THIRTY_MINUTES: {
19
+ value: string;
20
+ label: string;
21
+ };
22
+ SIXTY_MINUTES: {
23
+ value: string;
24
+ label: string;
25
+ };
26
+ NINETY_MINUTES: {
27
+ value: string;
28
+ label: string;
29
+ };
30
+ ONE_HUNDRED_TWENTY_MINUTES: {
31
+ value: string;
32
+ label: string;
33
+ };
34
+ };
9
35
  export declare const CHANNEL_OPTIONS: {
10
- value: string;
11
- label: string;
12
- icon: import("react/jsx-runtime").JSX.Element;
13
- }[];
36
+ ZOOM: {
37
+ value: string;
38
+ label: string;
39
+ icon: import("react/jsx-runtime").JSX.Element;
40
+ };
41
+ PHONE_CALL: {
42
+ value: string;
43
+ label: string;
44
+ icon: import("react/jsx-runtime").JSX.Element;
45
+ };
46
+ IN_PERSON: {
47
+ value: string;
48
+ label: string;
49
+ icon: import("react/jsx-runtime").JSX.Element;
50
+ };
51
+ GOOGLE_MEET: {
52
+ value: string;
53
+ label: string;
54
+ icon: import("react/jsx-runtime").JSX.Element;
55
+ };
56
+ MICROSOFT_TEAMS: {
57
+ value: string;
58
+ label: string;
59
+ icon: import("react/jsx-runtime").JSX.Element;
60
+ };
61
+ WEBEX: {
62
+ value: string;
63
+ label: string;
64
+ icon: import("react/jsx-runtime").JSX.Element;
65
+ };
66
+ };
14
67
  //# sourceMappingURL=bookMeeting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookMeeting.d.ts","sourceRoot":"","sources":["../../../src/commons/constants/bookMeeting.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;GAiDxB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;GAQ5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;GAO3B,CAAC"}
1
+ {"version":3,"file":"bookMeeting.d.ts","sourceRoot":"","sources":["../../../src/commons/constants/bookMeeting.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;GAiDxB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe3B,CAAC"}
@@ -50,21 +50,29 @@ export const TIME_OPTIONS = [
50
50
  { value: '23:00', label: '11:00 PM' },
51
51
  { value: '23:30', label: '11:30 PM' },
52
52
  ];
53
- export const DURATION_OPTIONS = [
54
- { value: '15', label: '15 min' },
55
- { value: '20', label: '20 min' },
56
- { value: '25', label: '25 min' },
57
- { value: '30', label: '30 min' },
58
- { value: '60', label: '60 min' },
59
- { value: '90', label: '90 min' },
60
- { value: '120', label: '120 min' },
61
- ];
62
- export const CHANNEL_OPTIONS = [
63
- { value: 'ZOOM', label: 'Zoom', icon: _jsx(VideoIcon, {}) },
64
- { value: 'PHONE_CALL', label: 'Phone Call', icon: _jsx(PhoneIcon, {}) },
65
- { value: 'IN_PERSON', label: 'In Person', icon: _jsx(MapPinIcon, {}) },
66
- { value: 'GOOGLE_MEET', label: 'Google Meet', icon: _jsx(VideoIcon, {}) },
67
- { value: 'MICROSOFT_TEAMS', label: 'Microsoft Teams', icon: _jsx(VideoIcon, {}) },
68
- { value: 'WEBEX', label: 'Webex', icon: _jsx(VideoIcon, {}) },
69
- ];
53
+ export const DURATION_OPTIONS = {
54
+ FIFTEEN_MINUTES: { value: '15', label: '15 min' },
55
+ TWENTY_MINUTES: { value: '20', label: '20 min' },
56
+ TWENTY_FIVE_MINUTES: { value: '25', label: '25 min' },
57
+ THIRTY_MINUTES: { value: '30', label: '30 min' },
58
+ SIXTY_MINUTES: { value: '60', label: '60 min' },
59
+ NINETY_MINUTES: { value: '90', label: '90 min' },
60
+ ONE_HUNDRED_TWENTY_MINUTES: { value: '120', label: '120 min' },
61
+ };
62
+ export const CHANNEL_OPTIONS = {
63
+ ZOOM: { value: 'ZOOM', label: 'Zoom', icon: _jsx(VideoIcon, {}) },
64
+ PHONE_CALL: { value: 'PHONE_CALL', label: 'Phone Call', icon: _jsx(PhoneIcon, {}) },
65
+ IN_PERSON: { value: 'IN_PERSON', label: 'In Person', icon: _jsx(MapPinIcon, {}) },
66
+ GOOGLE_MEET: {
67
+ value: 'GOOGLE_MEET',
68
+ label: 'Google Meet',
69
+ icon: _jsx(VideoIcon, {}),
70
+ },
71
+ MICROSOFT_TEAMS: {
72
+ value: 'MICROSOFT_TEAMS',
73
+ label: 'Microsoft Teams',
74
+ icon: _jsx(VideoIcon, {}),
75
+ },
76
+ WEBEX: { value: 'WEBEX', label: 'Webex', icon: _jsx(VideoIcon, {}) },
77
+ };
70
78
  //# sourceMappingURL=bookMeeting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookMeeting.js","sourceRoot":"","sources":["../../../src/commons/constants/bookMeeting.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IACrD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IACjE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAC,UAAU,KAAG,EAAE;IAChE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IACnE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IAC3E,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;CACxD,CAAC","sourcesContent":["import { MapPinIcon, PhoneIcon, VideoIcon } from 'components/Chat/Icons';\n\nexport const TIME_OPTIONS = [\n { value: '00:00', label: '12:00 AM' },\n { value: '00:30', label: '12:30 AM' },\n { value: '01:00', label: '01:00 AM' },\n { value: '01:30', label: '01:30 AM' },\n { value: '02:00', label: '02:00 AM' },\n { value: '02:30', label: '02:30 AM' },\n { value: '03:00', label: '03:00 AM' },\n { value: '03:30', label: '03:30 AM' },\n { value: '04:00', label: '04:00 AM' },\n { value: '04:30', label: '04:30 AM' },\n { value: '05:00', label: '05:00 AM' },\n { value: '05:30', label: '05:30 AM' },\n { value: '06:00', label: '06:00 AM' },\n { value: '06:30', label: '06:30 AM' },\n { value: '07:00', label: '07:00 AM' },\n { value: '07:30', label: '07:30 AM' },\n { value: '08:00', label: '08:00 AM' },\n { value: '08:30', label: '08:30 AM' },\n { value: '09:00', label: '09:00 AM' },\n { value: '09:30', label: '09:30 AM' },\n { value: '10:00', label: '10:00 AM' },\n { value: '10:30', label: '10:30 AM' },\n { value: '11:00', label: '11:00 AM' },\n { value: '11:30', label: '11:30 AM' },\n { value: '12:00', label: '12:00 PM' },\n { value: '12:30', label: '12:30 PM' },\n { value: '13:00', label: '01:00 PM' },\n { value: '13:30', label: '01:30 PM' },\n { value: '14:00', label: '02:00 PM' },\n { value: '14:30', label: '02:30 PM' },\n { value: '15:00', label: '03:00 PM' },\n { value: '15:30', label: '03:30 PM' },\n { value: '16:00', label: '04:00 PM' },\n { value: '16:30', label: '04:30 PM' },\n { value: '17:00', label: '05:00 PM' },\n { value: '17:30', label: '05:30 PM' },\n { value: '18:00', label: '06:00 PM' },\n { value: '18:30', label: '06:30 PM' },\n { value: '19:00', label: '07:00 PM' },\n { value: '19:30', label: '07:30 PM' },\n { value: '20:00', label: '08:00 PM' },\n { value: '20:30', label: '08:30 PM' },\n { value: '21:00', label: '09:00 PM' },\n { value: '21:30', label: '09:30 PM' },\n { value: '22:00', label: '10:00 PM' },\n { value: '22:30', label: '10:30 PM' },\n { value: '23:00', label: '11:00 PM' },\n { value: '23:30', label: '11:30 PM' },\n];\n\nexport const DURATION_OPTIONS = [\n { value: '15', label: '15 min' },\n { value: '20', label: '20 min' },\n { value: '25', label: '25 min' },\n { value: '30', label: '30 min' },\n { value: '60', label: '60 min' },\n { value: '90', label: '90 min' },\n { value: '120', label: '120 min' },\n];\n\nexport const CHANNEL_OPTIONS = [\n { value: 'ZOOM', label: 'Zoom', icon: <VideoIcon /> },\n { value: 'PHONE_CALL', label: 'Phone Call', icon: <PhoneIcon /> },\n { value: 'IN_PERSON', label: 'In Person', icon: <MapPinIcon /> },\n { value: 'GOOGLE_MEET', label: 'Google Meet', icon: <VideoIcon /> },\n { value: 'MICROSOFT_TEAMS', label: 'Microsoft Teams', icon: <VideoIcon /> },\n { value: 'WEBEX', label: 'Webex', icon: <VideoIcon /> },\n];\n"]}
1
+ {"version":3,"file":"bookMeeting.js","sourceRoot":"","sources":["../../../src/commons/constants/bookMeeting.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IACjD,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChD,mBAAmB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IACrD,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChD,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/C,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChD,0BAA0B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;CAC/D,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IAC3D,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;IAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAC,UAAU,KAAG,EAAE;IAC3E,WAAW,EAAE;QACX,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,KAAC,SAAS,KAAG;KACpB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,KAAC,SAAS,KAAG;KACpB;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAC,SAAS,KAAG,EAAE;CAC/D,CAAC","sourcesContent":["import { MapPinIcon, PhoneIcon, VideoIcon } from 'components/Chat/Icons';\n\nexport const TIME_OPTIONS = [\n { value: '00:00', label: '12:00 AM' },\n { value: '00:30', label: '12:30 AM' },\n { value: '01:00', label: '01:00 AM' },\n { value: '01:30', label: '01:30 AM' },\n { value: '02:00', label: '02:00 AM' },\n { value: '02:30', label: '02:30 AM' },\n { value: '03:00', label: '03:00 AM' },\n { value: '03:30', label: '03:30 AM' },\n { value: '04:00', label: '04:00 AM' },\n { value: '04:30', label: '04:30 AM' },\n { value: '05:00', label: '05:00 AM' },\n { value: '05:30', label: '05:30 AM' },\n { value: '06:00', label: '06:00 AM' },\n { value: '06:30', label: '06:30 AM' },\n { value: '07:00', label: '07:00 AM' },\n { value: '07:30', label: '07:30 AM' },\n { value: '08:00', label: '08:00 AM' },\n { value: '08:30', label: '08:30 AM' },\n { value: '09:00', label: '09:00 AM' },\n { value: '09:30', label: '09:30 AM' },\n { value: '10:00', label: '10:00 AM' },\n { value: '10:30', label: '10:30 AM' },\n { value: '11:00', label: '11:00 AM' },\n { value: '11:30', label: '11:30 AM' },\n { value: '12:00', label: '12:00 PM' },\n { value: '12:30', label: '12:30 PM' },\n { value: '13:00', label: '01:00 PM' },\n { value: '13:30', label: '01:30 PM' },\n { value: '14:00', label: '02:00 PM' },\n { value: '14:30', label: '02:30 PM' },\n { value: '15:00', label: '03:00 PM' },\n { value: '15:30', label: '03:30 PM' },\n { value: '16:00', label: '04:00 PM' },\n { value: '16:30', label: '04:30 PM' },\n { value: '17:00', label: '05:00 PM' },\n { value: '17:30', label: '05:30 PM' },\n { value: '18:00', label: '06:00 PM' },\n { value: '18:30', label: '06:30 PM' },\n { value: '19:00', label: '07:00 PM' },\n { value: '19:30', label: '07:30 PM' },\n { value: '20:00', label: '08:00 PM' },\n { value: '20:30', label: '08:30 PM' },\n { value: '21:00', label: '09:00 PM' },\n { value: '21:30', label: '09:30 PM' },\n { value: '22:00', label: '10:00 PM' },\n { value: '22:30', label: '10:30 PM' },\n { value: '23:00', label: '11:00 PM' },\n { value: '23:30', label: '11:30 PM' },\n];\n\nexport const DURATION_OPTIONS = {\n FIFTEEN_MINUTES: { value: '15', label: '15 min' },\n TWENTY_MINUTES: { value: '20', label: '20 min' },\n TWENTY_FIVE_MINUTES: { value: '25', label: '25 min' },\n THIRTY_MINUTES: { value: '30', label: '30 min' },\n SIXTY_MINUTES: { value: '60', label: '60 min' },\n NINETY_MINUTES: { value: '90', label: '90 min' },\n ONE_HUNDRED_TWENTY_MINUTES: { value: '120', label: '120 min' },\n};\n\nexport const CHANNEL_OPTIONS = {\n ZOOM: { value: 'ZOOM', label: 'Zoom', icon: <VideoIcon /> },\n PHONE_CALL: { value: 'PHONE_CALL', label: 'Phone Call', icon: <PhoneIcon /> },\n IN_PERSON: { value: 'IN_PERSON', label: 'In Person', icon: <MapPinIcon /> },\n GOOGLE_MEET: {\n value: 'GOOGLE_MEET',\n label: 'Google Meet',\n icon: <VideoIcon />,\n },\n MICROSOFT_TEAMS: {\n value: 'MICROSOFT_TEAMS',\n label: 'Microsoft Teams',\n icon: <VideoIcon />,\n },\n WEBEX: { value: 'WEBEX', label: 'Webex', icon: <VideoIcon /> },\n};\n"]}
@@ -2,7 +2,7 @@ import { FC } from 'react';
2
2
  import { BookMeetingType } from 'types/bookMeeting.type';
3
3
  import { UserContactType } from 'types/userContact.type';
4
4
  interface Props {
5
- hostData?: UserContactType;
5
+ userContact?: UserContactType;
6
6
  booking: BookMeetingType;
7
7
  loading: boolean;
8
8
  theme?: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingDetail.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAyGhC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"BookMeetingDetail.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAwGhC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useMemo } from 'react';
3
3
  import LoadingComponent from './LoadingComponent';
4
4
  import { CHANNEL_OPTIONS, DURATION_OPTIONS, TIME_OPTIONS, } from 'commons/constants';
5
- const BookMeetingDetail = ({ hostData, booking, loading, theme, }) => {
5
+ const BookMeetingDetail = ({ userContact, booking, loading, theme, }) => {
6
6
  const loadingComponent = useMemo(() => _jsx(LoadingComponent, {}), []);
7
7
  const bookMeetingDetailComponent = useMemo(() => {
8
8
  if (!booking) {
@@ -21,15 +21,14 @@ const BookMeetingDetail = ({ hostData, booking, loading, theme, }) => {
21
21
  ?.label
22
22
  : '';
23
23
  const duration = booking?.duration
24
- ? DURATION_OPTIONS.find((option) => option.value === booking?.duration)
24
+ ? DURATION_OPTIONS[booking?.duration]
25
25
  ?.label
26
26
  : '';
27
27
  const channel = booking?.channel
28
- ? CHANNEL_OPTIONS.find((option) => option.value === booking?.channel)
29
- ?.label
28
+ ? CHANNEL_OPTIONS[booking?.channel]?.label
30
29
  : '';
31
- return (_jsxs("div", { className: "bg-white w-full shadow overflow-hidden sm:rounded-lg max-w-[358px] mx-auto border", children: [_jsx("div", { className: "p-3", children: _jsx("h3", { className: "text-[#18181B] text-base font-semibold", children: `${title}${hostData?.name?.firstName ? ` with ${hostData?.name?.firstName}` : ''}` }) }), _jsx("div", { children: _jsxs("dl", { children: [_jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelDate || 'Date' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: startDate })] }), _jsxs("div", { className: "bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelTime || 'Time' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: startTime })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelDuration || 'Duration' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: duration })] }), _jsxs("div", { className: "bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelChannel || 'Channel' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: channel })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelHost || 'Host' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: hostData?.emails?.primaryEmail })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelBrand || 'Brand' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: booking?.brand })] })] }) })] }));
32
- }, [booking, hostData]);
30
+ return (_jsxs("div", { className: "bg-white w-full shadow overflow-hidden sm:rounded-lg max-w-[358px] mx-auto border", children: [_jsx("div", { className: "p-3", children: _jsx("h3", { className: "text-[#18181B] text-base font-semibold", children: `${title}${userContact?.name?.firstName ? ` with ${userContact?.name?.firstName}` : ''}` }) }), _jsx("div", { children: _jsxs("dl", { children: [_jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelDate || 'Date' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: startDate })] }), _jsxs("div", { className: "bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelTime || 'Time' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: startTime })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelDuration || 'Duration' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: duration })] }), _jsxs("div", { className: "bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelChannel || 'Channel' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: channel })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelHost || 'Host' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: userContact?.emails?.primaryEmail })] }), _jsxs("div", { className: "bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6", children: [_jsx("dt", { className: "text-[#00000073] font-medium text-[14px] leading-[14px]", children: theme?.bookMeetingForm?.labelBrand || 'Brand' }), _jsx("dd", { className: "mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2", children: booking?.brand })] })] }) })] }));
31
+ }, [booking, userContact]);
33
32
  return (_jsxs(_Fragment, { children: [loading && loadingComponent, !loading && !!booking && bookMeetingDetailComponent] }));
34
33
  };
35
34
  export default BookMeetingDetail;
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingDetail.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FC, useMemo } from 'react';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { UserContactType } from 'types/userContact.type';\nimport LoadingComponent from './LoadingComponent';\nimport {\n CHANNEL_OPTIONS,\n DURATION_OPTIONS,\n TIME_OPTIONS,\n} from 'commons/constants';\n\ninterface Props {\n hostData?: UserContactType;\n booking: BookMeetingType;\n loading: boolean;\n theme?: Record<string, any>;\n}\n\nconst BookMeetingDetail: FC<Props> = ({\n hostData,\n booking,\n loading,\n theme,\n}) => {\n const loadingComponent = useMemo(() => <LoadingComponent />, []);\n\n const bookMeetingDetailComponent = useMemo(() => {\n if (!booking) {\n return null;\n }\n\n const title = booking?.title || 'Book meeting';\n const startDate = booking?.startDate\n ? new Date(booking?.startDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n : '';\n const startTime = booking?.startTime\n ? TIME_OPTIONS.find((option) => option.value === booking?.startTime)\n ?.label\n : '';\n\n const duration = booking?.duration\n ? DURATION_OPTIONS.find((option) => option.value === booking?.duration)\n ?.label\n : '';\n\n const channel = booking?.channel\n ? CHANNEL_OPTIONS.find((option) => option.value === booking?.channel)\n ?.label\n : '';\n\n return (\n <div className=\"bg-white w-full shadow overflow-hidden sm:rounded-lg max-w-[358px] mx-auto border\">\n <div className=\"p-3\">\n <h3 className=\"text-[#18181B] text-base font-semibold\">\n {`${title}${hostData?.name?.firstName ? ` with ${hostData?.name?.firstName}` : ''}`}\n </h3>\n </div>\n <div>\n <dl>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelDate || 'Date'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {startDate}\n </dd>\n </div>\n <div className=\"bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelTime || 'Time'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {startTime}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelDuration || 'Duration'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {duration}\n </dd>\n </div>\n <div className=\"bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelChannel || 'Channel'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {channel}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelHost || 'Host'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {hostData?.emails?.primaryEmail}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelBrand || 'Brand'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {booking?.brand}\n </dd>\n </div>\n </dl>\n </div>\n </div>\n );\n }, [booking, hostData]);\n\n return (\n <>\n {loading && loadingComponent}\n {!loading && !!booking && bookMeetingDetailComponent}\n </>\n );\n};\n\nexport default BookMeetingDetail;\n"]}
1
+ {"version":3,"file":"BookMeetingDetail.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingDetail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAS3B,MAAM,iBAAiB,GAAc,CAAC,EACpC,WAAW,EACX,OAAO,EACP,OAAO,EACP,KAAK,GACN,EAAE,EAAE;IACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAC,gBAAgB,KAAG,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,cAAc,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS;YAClC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBACvD,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,SAAS;aACf,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS;YAClC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,SAAS,CAAC;gBAChE,EAAE,KAAK;YACX,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ;YAChC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAyC,CAAC;gBAClE,EAAE,KAAK;YACX,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;YAC9B,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,OAAuC,CAAC,EAAE,KAAK;YAC1E,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,CACL,eAAK,SAAS,EAAC,mFAAmF,aAChG,cAAK,SAAS,EAAC,KAAK,YAClB,aAAI,SAAS,EAAC,wCAAwC,YACnD,GAAG,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GACtF,GACD,EACN,wBACE,yBACE,eAAK,SAAS,EAAC,wDAAwD,aACrE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,SAAS,IAAI,MAAM,GACzC,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,SAAS,GACP,IACD,EACN,eAAK,SAAS,EAAC,sDAAsD,aACnE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,SAAS,IAAI,MAAM,GACzC,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,SAAS,GACP,IACD,EACN,eAAK,SAAS,EAAC,wDAAwD,aACrE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,aAAa,IAAI,UAAU,GACjD,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,QAAQ,GACN,IACD,EACN,eAAK,SAAS,EAAC,sDAAsD,aACnE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,YAAY,IAAI,SAAS,GAC/C,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,OAAO,GACL,IACD,EACN,eAAK,SAAS,EAAC,wDAAwD,aACrE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,SAAS,IAAI,MAAM,GACzC,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,WAAW,EAAE,MAAM,EAAE,YAAY,GAC/B,IACD,EACN,eAAK,SAAS,EAAC,wDAAwD,aACrE,aAAI,SAAS,EAAC,yDAAyD,YACpE,KAAK,EAAE,eAAe,EAAE,UAAU,IAAI,OAAO,GAC3C,EACL,aAAI,SAAS,EAAC,kFAAkF,YAC7F,OAAO,EAAE,KAAK,GACZ,IACD,IACH,GACD,IACF,CACP,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,8BACG,OAAO,IAAI,gBAAgB,EAC3B,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,0BAA0B,IACnD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import { FC, useMemo } from 'react';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { UserContactType } from 'types/userContact.type';\nimport LoadingComponent from './LoadingComponent';\nimport {\n CHANNEL_OPTIONS,\n DURATION_OPTIONS,\n TIME_OPTIONS,\n} from 'commons/constants';\n\ninterface Props {\n userContact?: UserContactType;\n booking: BookMeetingType;\n loading: boolean;\n theme?: Record<string, any>;\n}\n\nconst BookMeetingDetail: FC<Props> = ({\n userContact,\n booking,\n loading,\n theme,\n}) => {\n const loadingComponent = useMemo(() => <LoadingComponent />, []);\n\n const bookMeetingDetailComponent = useMemo(() => {\n if (!booking) {\n return null;\n }\n\n const title = booking?.title || 'Book meeting';\n const startDate = booking?.startDate\n ? new Date(booking?.startDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n : '';\n const startTime = booking?.startTime\n ? TIME_OPTIONS.find((option) => option.value === booking?.startTime)\n ?.label\n : '';\n\n const duration = booking?.duration\n ? DURATION_OPTIONS[booking?.duration as keyof typeof DURATION_OPTIONS]\n ?.label\n : '';\n\n const channel = booking?.channel\n ? CHANNEL_OPTIONS[booking?.channel as keyof typeof CHANNEL_OPTIONS]?.label\n : '';\n\n return (\n <div className=\"bg-white w-full shadow overflow-hidden sm:rounded-lg max-w-[358px] mx-auto border\">\n <div className=\"p-3\">\n <h3 className=\"text-[#18181B] text-base font-semibold\">\n {`${title}${userContact?.name?.firstName ? ` with ${userContact?.name?.firstName}` : ''}`}\n </h3>\n </div>\n <div>\n <dl>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelDate || 'Date'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {startDate}\n </dd>\n </div>\n <div className=\"bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelTime || 'Time'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {startTime}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelDuration || 'Duration'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {duration}\n </dd>\n </div>\n <div className=\"bg-white p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelChannel || 'Channel'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {channel}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelHost || 'Host'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {userContact?.emails?.primaryEmail}\n </dd>\n </div>\n <div className=\"bg-gray-50 p-3 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6\">\n <dt className=\"text-[#00000073] font-medium text-[14px] leading-[14px]\">\n {theme?.bookMeetingForm?.labelBrand || 'Brand'}\n </dt>\n <dd className=\"mt-1 text-[#18181B] font-medium text-[14px] leading-[14px] sm:mt-0 sm:col-span-2\">\n {booking?.brand}\n </dd>\n </div>\n </dl>\n </div>\n </div>\n );\n }, [booking, userContact]);\n\n return (\n <>\n {loading && loadingComponent}\n {!loading && !!booking && bookMeetingDetailComponent}\n </>\n );\n};\n\nexport default BookMeetingDetail;\n"]}
@@ -2,6 +2,7 @@ import { FC } from 'react';
2
2
  type PropsType = {
3
3
  chatId: string;
4
4
  brandAlias: string;
5
+ userId: string;
5
6
  };
6
7
  declare const BookMeetingForm: FC<PropsType>;
7
8
  export default BookMeetingForm;
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingForm.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingForm.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAUhD,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,SAAS,CAqWlC,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"BookMeetingForm.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingForm.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAYhD,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,SAAS,CA4XlC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -3,6 +3,7 @@ import { CHANNEL_OPTIONS, DURATION_OPTIONS, TIME_OPTIONS, } from 'commons/consta
3
3
  import { motion } from 'framer-motion';
4
4
  import { useConfiguration } from 'hooks/useConfiguration';
5
5
  import { useEffect, useState } from 'react';
6
+ import { isValidPhoneNumber } from 'react-phone-number-input';
6
7
  import { createBookMeeting } from 'services/bookMeeting.service';
7
8
  import { getUserContact } from 'services/userContact.service';
8
9
  import { isEmptyString } from 'utils/functionUtils';
@@ -10,15 +11,17 @@ import DataPickerCustom from './ui/DataPickerCustom';
10
11
  import { SelectBox } from './ui/SelectBox';
11
12
  import { SelectBoxWithIcon } from './ui/SelectBoxWithIcon';
12
13
  import Spinner from './ui/Spinner';
13
- const BookMeetingForm = ({ chatId, brandAlias }) => {
14
+ import PhoneNumberInput from './ui/PhoneNumberInput';
15
+ const BookMeetingForm = ({ chatId, brandAlias, userId }) => {
14
16
  const { theme, apiHost } = useConfiguration();
15
17
  const [loading, setLoading] = useState(false);
16
18
  const [formData, setFormData] = useState({
17
19
  startDate: new Date().toISOString().split('T')[0],
18
20
  startTime: '',
19
- duration: '30',
21
+ duration: DURATION_OPTIONS.THIRTY_MINUTES.value,
20
22
  channel: '',
21
23
  host: '',
24
+ hostPhoneNumber: '',
22
25
  });
23
26
  const [statusSubmit, setStatusSubmit] = useState();
24
27
  const [errors, setErrors] = useState({});
@@ -74,6 +77,13 @@ const BookMeetingForm = ({ chatId, brandAlias }) => {
74
77
  if (isEmptyString(formData.channel)) {
75
78
  errors.channel = messages?.channelError || 'Channel is required';
76
79
  }
80
+ if (isEmptyString(formData.host)) {
81
+ errors.host = messages?.hostError || 'Host is required';
82
+ }
83
+ if (formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value &&
84
+ !isValidPhoneNumber(formData?.hostPhoneNumber)) {
85
+ errors.host = messages?.invalidPhoneNumber || 'Invalid phone number';
86
+ }
77
87
  return errors;
78
88
  };
79
89
  const handleSubmit = async (e) => {
@@ -85,29 +95,20 @@ const BookMeetingForm = ({ chatId, brandAlias }) => {
85
95
  setErrors(validationErrors);
86
96
  return;
87
97
  }
88
- let userContact;
89
- if (formData?.host) {
90
- const userContacts = await getUserContact(apiHost, {
91
- email: formData?.host,
92
- });
93
- if (!userContacts || !userContacts?.length) {
94
- setErrors({
95
- host: theme?.bookMeetingForm?.messages?.hostNotFound ||
96
- 'Host is not found',
97
- });
98
- return;
99
- }
100
- else {
101
- userContact = userContacts[0];
102
- }
103
- }
104
98
  setErrors({});
99
+ const { startDate, startTime, duration, channel, host, hostPhoneNumber } = formData;
105
100
  const requestData = {
106
- ...formData,
101
+ startDate,
102
+ startTime,
103
+ duration,
104
+ channel,
107
105
  title: 'Book Meeting',
108
- hostId: userContact.id,
109
106
  chatId,
110
107
  brand: `/${brandAlias}`,
108
+ userId,
109
+ host: formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value
110
+ ? hostPhoneNumber
111
+ : host,
111
112
  };
112
113
  const res = await createBookMeeting(requestData, apiHost);
113
114
  if (res?.id) {
@@ -157,8 +158,15 @@ const BookMeetingForm = ({ chatId, brandAlias }) => {
157
158
  ...prevData,
158
159
  startDate: date.toISOString().split('T')[0],
159
160
  }));
160
- }, disabled: disabled, value: new Date(formData?.startDate) }) })] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("div", { className: "flex flex-col gap-2 w-1/2", children: [_jsx("label", { className: "text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "startTime", children: theme?.bookMeetingForm?.labelTime || 'Time' }), _jsx("div", { children: _jsx(SelectBox, { name: "startTime", options: TIME_OPTIONS, optionClassName: "text-[#18181B] h-[40px] py-2 pr-2 pl-3 border rounded-lg bg-white", placeholder: theme?.bookMeetingForm?.labelTime || 'Select Time', onChange: handleChangeSelect, disabled: disabled, className: errors?.startTime ? 'border-red-500' : '' }) })] }), _jsxs("div", { className: "flex flex-col gap-2 w-1/2", children: [_jsx("label", { className: "text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "duration", children: theme?.bookMeetingForm?.labelDuration || 'Duration' }), _jsx("div", { children: _jsx(SelectBox, { name: "duration", options: DURATION_OPTIONS, optionContainerClassName: "gap-4", optionClassName: "!p-0 !h-[24px] hover:bg-transparent hover:!text-[#1E6EB4]", placeholder: theme?.bookMeetingForm?.labelDuration || 'Select Duration', onChange: handleChangeSelect, disabled: disabled, defaultValue: "30", className: errors?.duration ? 'border-red-500' : '' }) })] })] }), errors.startTime && (_jsx("p", { className: "text-red-500 text-sm", children: errors.startTime })), errors.duration && (_jsx("p", { className: "text-red-500 text-sm", children: errors.duration }))] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex gap-2 items-center", children: [_jsx("label", { className: "w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "channel", children: theme?.bookMeetingForm?.labelChannel || 'Channel' }), _jsx("div", { className: "w-full", children: _jsx(SelectBoxWithIcon, { name: "channel", options: CHANNEL_OPTIONS, placeholder: theme?.bookMeetingForm?.labelChannel || 'Select Channel', onChange: handleChangeSelect, disabled: disabled, className: errors?.channel ? 'border-red-500' : '' }) })] }), errors.channel && (_jsx("p", { className: "text-red-500 text-sm", children: errors.channel }))] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex gap-2 items-center", children: [_jsx("label", { className: "w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "host", children: theme?.bookMeetingForm?.labelHost || 'Host' }), _jsx("div", { className: "flex flex-col w-full", children: _jsx("input", { type: "email", name: "host", id: "host", className: `w-full rounded-lg border border-[#e0e0e0] bg-white pt-2 pr-[8px] pb-2 pl-3 text-base font-medium text-[#18181B] outline-none focus:border-[#6A64F1] focus:shadow-md h-[40px]
161
- disabled:cursor-not-allowed disabled:!bg-gray-100 disabled:!text-gray-500 ${errors?.host ? '!border-red-500' : ''}`, placeholder: theme?.bookMeetingForm?.labelHost || 'Email', required: true, disabled: disabled, onChange: handleChange, value: formData?.host }) })] }), errors.host && (_jsx("p", { className: "text-red-500 text-sm", children: errors.host }))] }), _jsxs("div", { className: "flex flex-col items-center justify-center", children: [statusSubmit && (_jsx("div", { className: "flex items-center w-full justify-center mb-2", children: _jsx("p", { className: `text-green-500 text-sm mt-1 ${statusSubmit?.status === 200 ? 'text-green-500' : 'text-red-500'}`, children: statusSubmit.message }) })), _jsx("div", { className: "w-full", children: _jsx("button", { className: `shadow bg-[#1E6EB4] hover:bg-[#4096ff] focus:shadow-outline focus:outline-none text-white font-bold py-2 px-8 rounded-lg w-full h-[40px] disabled:cursor-not-allowed disabled:!bg-[#0000000a] disabled:!text-[#00000040] ${loading ? 'flex items-center justify-center' : ''}`, type: "submit", disabled: disabled, children: loading ? (_jsx(Spinner, {})) : (`${theme?.buttons?.textBtnSubmit || 'Submit'}`) }) })] })] })] }) }));
161
+ }, disabled: disabled, value: new Date(formData?.startDate) }) })] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("div", { className: "flex flex-col gap-2 w-1/2", children: [_jsx("label", { className: "text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "startTime", children: theme?.bookMeetingForm?.labelTime || 'Time' }), _jsx("div", { children: _jsx(SelectBox, { name: "startTime", options: TIME_OPTIONS, optionClassName: "text-[#18181B] h-[40px] py-2 pr-2 pl-3 border rounded-lg bg-white", placeholder: theme?.bookMeetingForm?.labelTime || 'Select Time', onChange: handleChangeSelect, disabled: disabled, className: errors?.startTime ? 'border-red-500' : '' }) })] }), _jsxs("div", { className: "flex flex-col gap-2 w-1/2", children: [_jsx("label", { className: "text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "duration", children: theme?.bookMeetingForm?.labelDuration || 'Duration' }), _jsx("div", { children: _jsx(SelectBox, { name: "duration", options: Object.values(DURATION_OPTIONS), optionContainerClassName: "gap-4", optionClassName: "!p-0 !h-[24px] hover:bg-transparent hover:!text-[#1E6EB4]", placeholder: theme?.bookMeetingForm?.labelDuration || 'Select Duration', onChange: handleChangeSelect, disabled: disabled, defaultValue: "30", className: errors?.duration ? 'border-red-500' : '' }) })] })] }), errors.startTime && (_jsx("p", { className: "text-red-500 text-sm", children: errors.startTime })), errors.duration && (_jsx("p", { className: "text-red-500 text-sm", children: errors.duration }))] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex gap-2 items-center", children: [_jsx("label", { className: "w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "channel", children: theme?.bookMeetingForm?.labelChannel || 'Channel' }), _jsx("div", { className: "w-full", children: _jsx(SelectBoxWithIcon, { name: "channel", options: Object.values(CHANNEL_OPTIONS), placeholder: theme?.bookMeetingForm?.labelChannel || 'Select Channel', onChange: handleChangeSelect, disabled: disabled, className: errors?.channel ? 'border-red-500' : '' }) })] }), errors.channel && (_jsx("p", { className: "text-red-500 text-sm", children: errors.channel }))] }), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex gap-2 items-center", children: [_jsx("label", { className: "w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]", htmlFor: "host", children: theme?.bookMeetingForm?.labelHost || 'Host' }), _jsx("div", { className: "flex flex-col w-full", children: formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value ? (_jsx(PhoneNumberInput, { onChange: (val) => {
162
+ setFormData((prevData) => ({
163
+ ...prevData,
164
+ hostPhoneNumber: val,
165
+ }));
166
+ }, placeholder: theme?.bookMeetingForm?.placeholderPhoneNumber ||
167
+ 'Phone number', value: formData?.hostPhoneNumber, disabled: disabled, numberInputClassName: errors?.host ? '!border-red-500' : '' })) : (_jsx("input", { type: "email", name: "host", id: "host", className: `w-full rounded-lg border border-[#e0e0e0] bg-white pt-2 pr-[8px] pb-2 pl-3 text-base font-medium text-[#18181B] outline-none focus:border-[#6A64F1] focus:shadow-md h-[40px]
168
+ disabled:cursor-not-allowed disabled:!bg-gray-100 disabled:!text-gray-500 ${errors?.host ? '!border-red-500' : ''}`, placeholder: theme?.bookMeetingForm?.placeholderEmail ||
169
+ 'Email address', required: true, disabled: disabled, onChange: handleChange, value: formData?.host })) })] }), errors.host && (_jsx("p", { className: "text-red-500 text-sm", children: errors.host }))] }), _jsxs("div", { className: "flex flex-col items-center justify-center", children: [statusSubmit && (_jsx("div", { className: "flex items-center w-full justify-center mb-2", children: _jsx("p", { className: `text-green-500 text-sm mt-1 ${statusSubmit?.status === 200 ? 'text-green-500' : 'text-red-500'}`, children: statusSubmit.message }) })), _jsx("div", { className: "w-full", children: _jsx("button", { className: `shadow bg-[#1E6EB4] hover:bg-[#4096ff] focus:shadow-outline focus:outline-none text-white font-bold py-2 px-8 rounded-lg w-full h-[40px] disabled:cursor-not-allowed disabled:!bg-[#0000000a] disabled:!text-[#00000040] ${loading ? 'flex items-center justify-center' : ''}`, type: "submit", disabled: disabled, children: loading ? (_jsx(Spinner, {})) : (`${theme?.buttons?.textBtnSubmit || 'Submit'}`) }) })] })] })] }) }));
162
170
  };
163
171
  export default BookMeetingForm;
164
172
  //# sourceMappingURL=BookMeetingForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingForm.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n CHANNEL_OPTIONS,\n DURATION_OPTIONS,\n TIME_OPTIONS,\n} from 'commons/constants';\nimport { FormErrors, StatusSubmitType } from 'constants/form';\nimport { motion } from 'framer-motion';\nimport { useConfiguration } from 'hooks/useConfiguration';\nimport { FC, useEffect, useState } from 'react';\nimport { createBookMeeting } from 'services/bookMeeting.service';\nimport { getUserContact } from 'services/userContact.service';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { isEmptyString } from 'utils/functionUtils';\nimport DataPickerCustom from './ui/DataPickerCustom';\nimport { SelectBox } from './ui/SelectBox';\nimport { SelectBoxWithIcon } from './ui/SelectBoxWithIcon';\nimport Spinner from './ui/Spinner';\n\ntype PropsType = {\n chatId: string;\n brandAlias: string;\n};\n\nconst BookMeetingForm: FC<PropsType> = ({ chatId, brandAlias }) => {\n const { theme, apiHost } = useConfiguration();\n\n const [loading, setLoading] = useState(false);\n const [formData, setFormData] = useState({\n startDate: new Date().toISOString().split('T')[0],\n startTime: '',\n duration: '30',\n channel: '',\n host: '',\n });\n const [statusSubmit, setStatusSubmit] = useState<StatusSubmitType>();\n const [errors, setErrors] = useState<FormErrors>({});\n const [disabled, setDisabled] = useState(false);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n setFormData((prevData) => ({\n ...prevData,\n [name]: value,\n }));\n };\n\n const handleChangeSelect = (value: string, name: string) => {\n setFormData((prevData) => ({\n ...prevData,\n [name]: value,\n }));\n };\n\n const parseTimeToDate = (timeStr: string, dateStr: string) => {\n const now = new Date(dateStr);\n const [hours, minutes] = timeStr.split(':').map(Number);\n\n if (\n isNaN(hours) ||\n isNaN(minutes) ||\n hours < 0 ||\n hours > 23 ||\n minutes < 0 ||\n minutes > 59\n ) {\n throw new Error(`Invalid time format: ${timeStr}`);\n }\n\n const date = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n hours,\n minutes\n );\n return date;\n };\n\n const validateForm = () => {\n const errors: FormErrors = {};\n const messages = theme?.bookMeetingForm?.messages;\n\n if (isEmptyString(formData.startTime)) {\n errors.startTime = messages?.startTimeError || 'Time is required';\n } else if (formData?.startDate) {\n try {\n const parsedDate = parseTimeToDate(\n formData.startTime,\n formData.startDate\n );\n if (parsedDate < new Date()) {\n errors.startTime =\n messages?.startTimeInThePast || 'Time is in the past';\n }\n } catch (e: any) {\n errors.startTime = e.message;\n }\n }\n\n if (isEmptyString(formData.duration)) {\n errors.duration = messages?.durationError || 'Duration is required';\n }\n\n if (isEmptyString(formData.channel)) {\n errors.channel = messages?.channelError || 'Channel is required';\n }\n\n return errors;\n };\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setLoading(true);\n try {\n const validationErrors = validateForm();\n if (Object.keys(validationErrors)?.length) {\n setErrors(validationErrors);\n return;\n }\n\n let userContact;\n if (formData?.host) {\n const userContacts = await getUserContact(apiHost, {\n email: formData?.host,\n });\n\n if (!userContacts || !userContacts?.length) {\n setErrors({\n host:\n theme?.bookMeetingForm?.messages?.hostNotFound ||\n 'Host is not found',\n });\n return;\n } else {\n userContact = userContacts[0];\n }\n }\n\n setErrors({});\n const requestData: BookMeetingType = {\n ...formData,\n title: 'Book Meeting',\n hostId: userContact.id,\n chatId,\n brand: `/${brandAlias}`,\n };\n\n const res = await createBookMeeting(requestData, apiHost);\n\n if (res?.id) {\n localStorage.setItem('bookMeetingId', res.id);\n setDisabled(true);\n setStatusSubmit({\n message:\n theme?.bookMeetingForm?.messages?.submitSuccess ||\n 'Submit successful',\n status: 200,\n });\n }\n } catch (error) {\n console.error(error);\n setDisabled(false);\n setStatusSubmit({\n message:\n theme?.bookMeetingForm?.messages?.submitError || 'Failed to submit',\n status: 500,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const getUserContactData = async (userId: string) => {\n if (!userId) return;\n\n const res = await getUserContact(apiHost, { id: userId });\n if (!res || !res?.length) {\n return;\n }\n\n setFormData((prevData) => ({\n ...prevData,\n host: res[0]?.emails?.primaryEmail,\n }));\n };\n\n useEffect(() => {\n const userId = localStorage.getItem('userId');\n if (userId) {\n getUserContactData(userId);\n }\n }, []);\n\n return (\n <motion.div\n className=\"w-full mx-auto max-w-[358px] group/message\"\n initial={{ y: 5, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n >\n <form\n className=\"flex flex-col gap-3 bg-white px-3 py-3 pb-4 rounded-lg w-full\"\n onSubmit={handleSubmit}\n >\n <div className=\"text-[#18181B] font-semibold text-base\">\n {theme?.bookMeetingForm?.title || 'Book meeting'}\n </div>\n\n <div className=\"flex flex-col gap-3\">\n {/* Date */}\n <div className=\"flex items-center gap-2\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"startDate\"\n >\n {theme?.bookMeetingForm?.labelDate || 'Date'}\n </label>\n\n <div className=\"w-full\">\n <DataPickerCustom\n onChange={(date: Date | null) => {\n if (!date) return;\n\n setFormData((prevData) => ({\n ...prevData,\n startDate: date.toISOString().split('T')[0],\n }));\n }}\n disabled={disabled}\n value={new Date(formData?.startDate)}\n />\n </div>\n </div>\n\n {/* Time and Duration */}\n <div className=\"flex flex-col\">\n <div className=\"flex items-center gap-3\">\n {/* Time */}\n <div className=\"flex flex-col gap-2 w-1/2\">\n <label\n className=\"text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"startTime\"\n >\n {theme?.bookMeetingForm?.labelTime || 'Time'}\n </label>\n\n <div>\n <SelectBox\n name=\"startTime\"\n options={TIME_OPTIONS}\n optionClassName=\"text-[#18181B] h-[40px] py-2 pr-2 pl-3 border rounded-lg bg-white\"\n placeholder={\n theme?.bookMeetingForm?.labelTime || 'Select Time'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n className={errors?.startTime ? 'border-red-500' : ''}\n />\n </div>\n </div>\n {/* Duration */}\n <div className=\"flex flex-col gap-2 w-1/2\">\n <label\n className=\"text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"duration\"\n >\n {theme?.bookMeetingForm?.labelDuration || 'Duration'}\n </label>\n\n <div>\n <SelectBox\n name=\"duration\"\n options={DURATION_OPTIONS}\n optionContainerClassName=\"gap-4\"\n optionClassName=\"!p-0 !h-[24px] hover:bg-transparent hover:!text-[#1E6EB4]\"\n placeholder={\n theme?.bookMeetingForm?.labelDuration || 'Select Duration'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n defaultValue=\"30\"\n className={errors?.duration ? 'border-red-500' : ''}\n />\n </div>\n </div>\n </div>\n\n {errors.startTime && (\n <p className=\"text-red-500 text-sm\">{errors.startTime}</p>\n )}\n {errors.duration && (\n <p className=\"text-red-500 text-sm\">{errors.duration}</p>\n )}\n </div>\n\n {/* Channel */}\n <div className=\"flex flex-col\">\n <div className=\"flex gap-2 items-center\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"channel\"\n >\n {theme?.bookMeetingForm?.labelChannel || 'Channel'}\n </label>\n\n <div className=\"w-full\">\n <SelectBoxWithIcon\n name=\"channel\"\n options={CHANNEL_OPTIONS}\n placeholder={\n theme?.bookMeetingForm?.labelChannel || 'Select Channel'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n className={errors?.channel ? 'border-red-500' : ''}\n />\n </div>\n </div>\n {errors.channel && (\n <p className=\"text-red-500 text-sm\">{errors.channel}</p>\n )}\n </div>\n\n {/* Host */}\n <div className=\"flex flex-col\">\n <div className=\"flex gap-2 items-center\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"host\"\n >\n {theme?.bookMeetingForm?.labelHost || 'Host'}\n </label>\n\n <div className=\"flex flex-col w-full\">\n <input\n type=\"email\"\n name=\"host\"\n id=\"host\"\n className={`w-full rounded-lg border border-[#e0e0e0] bg-white pt-2 pr-[8px] pb-2 pl-3 text-base font-medium text-[#18181B] outline-none focus:border-[#6A64F1] focus:shadow-md h-[40px] \n disabled:cursor-not-allowed disabled:!bg-gray-100 disabled:!text-gray-500 ${errors?.host ? '!border-red-500' : ''}`}\n placeholder={theme?.bookMeetingForm?.labelHost || 'Email'}\n required\n disabled={disabled}\n onChange={handleChange}\n value={formData?.host}\n />\n </div>\n </div>\n {errors.host && (\n <p className=\"text-red-500 text-sm\">{errors.host}</p>\n )}\n </div>\n\n <div className=\"flex flex-col items-center justify-center\">\n {statusSubmit && (\n <div className=\"flex items-center w-full justify-center mb-2\">\n <p\n className={`text-green-500 text-sm mt-1 ${statusSubmit?.status === 200 ? 'text-green-500' : 'text-red-500'}`}\n >\n {statusSubmit.message}\n </p>\n </div>\n )}\n <div className=\"w-full\">\n <button\n className={`shadow bg-[#1E6EB4] hover:bg-[#4096ff] focus:shadow-outline focus:outline-none text-white font-bold py-2 px-8 rounded-lg w-full h-[40px] disabled:cursor-not-allowed disabled:!bg-[#0000000a] disabled:!text-[#00000040] ${loading ? 'flex items-center justify-center' : ''}`}\n type=\"submit\"\n disabled={disabled}\n >\n {loading ? (\n <Spinner />\n ) : (\n `${theme?.buttons?.textBtnSubmit || 'Submit'}`\n )}\n </button>\n </div>\n </div>\n </div>\n </form>\n </motion.div>\n );\n};\n\nexport default BookMeetingForm;\n"]}
1
+ {"version":3,"file":"BookMeetingForm.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n CHANNEL_OPTIONS,\n DURATION_OPTIONS,\n TIME_OPTIONS,\n} from 'commons/constants';\nimport { FormErrors, StatusSubmitType } from 'constants/form';\nimport { motion } from 'framer-motion';\nimport { useConfiguration } from 'hooks/useConfiguration';\nimport { FC, useEffect, useState } from 'react';\nimport { isValidPhoneNumber, Value } from 'react-phone-number-input';\nimport { createBookMeeting } from 'services/bookMeeting.service';\nimport { getUserContact } from 'services/userContact.service';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { isEmptyString } from 'utils/functionUtils';\nimport DataPickerCustom from './ui/DataPickerCustom';\nimport { SelectBox } from './ui/SelectBox';\nimport { SelectBoxWithIcon } from './ui/SelectBoxWithIcon';\nimport Spinner from './ui/Spinner';\nimport PhoneNumberInput from './ui/PhoneNumberInput';\n\ntype PropsType = {\n chatId: string;\n brandAlias: string;\n userId: string;\n};\n\nconst BookMeetingForm: FC<PropsType> = ({ chatId, brandAlias, userId }) => {\n const { theme, apiHost } = useConfiguration();\n\n const [loading, setLoading] = useState(false);\n const [formData, setFormData] = useState({\n startDate: new Date().toISOString().split('T')[0],\n startTime: '',\n duration: DURATION_OPTIONS.THIRTY_MINUTES.value,\n channel: '',\n host: '',\n hostPhoneNumber: '' as Value,\n });\n const [statusSubmit, setStatusSubmit] = useState<StatusSubmitType>();\n const [errors, setErrors] = useState<FormErrors>({});\n const [disabled, setDisabled] = useState(false);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n setFormData((prevData) => ({\n ...prevData,\n [name]: value,\n }));\n };\n\n const handleChangeSelect = (value: string, name: string) => {\n setFormData((prevData) => ({\n ...prevData,\n [name]: value,\n }));\n };\n\n const parseTimeToDate = (timeStr: string, dateStr: string) => {\n const now = new Date(dateStr);\n const [hours, minutes] = timeStr.split(':').map(Number);\n\n if (\n isNaN(hours) ||\n isNaN(minutes) ||\n hours < 0 ||\n hours > 23 ||\n minutes < 0 ||\n minutes > 59\n ) {\n throw new Error(`Invalid time format: ${timeStr}`);\n }\n\n const date = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n hours,\n minutes\n );\n return date;\n };\n\n const validateForm = () => {\n const errors: FormErrors = {};\n const messages = theme?.bookMeetingForm?.messages;\n\n if (isEmptyString(formData.startTime)) {\n errors.startTime = messages?.startTimeError || 'Time is required';\n } else if (formData?.startDate) {\n try {\n const parsedDate = parseTimeToDate(\n formData.startTime,\n formData.startDate\n );\n if (parsedDate < new Date()) {\n errors.startTime =\n messages?.startTimeInThePast || 'Time is in the past';\n }\n } catch (e: any) {\n errors.startTime = e.message;\n }\n }\n\n if (isEmptyString(formData.duration)) {\n errors.duration = messages?.durationError || 'Duration is required';\n }\n\n if (isEmptyString(formData.channel)) {\n errors.channel = messages?.channelError || 'Channel is required';\n }\n if (isEmptyString(formData.host)) {\n errors.host = messages?.hostError || 'Host is required';\n }\n\n if (\n formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value &&\n !isValidPhoneNumber(formData?.hostPhoneNumber as Value)\n ) {\n errors.host = messages?.invalidPhoneNumber || 'Invalid phone number';\n }\n\n return errors;\n };\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setLoading(true);\n try {\n const validationErrors = validateForm();\n if (Object.keys(validationErrors)?.length) {\n setErrors(validationErrors);\n return;\n }\n\n setErrors({});\n const { startDate, startTime, duration, channel, host, hostPhoneNumber } =\n formData;\n const requestData: BookMeetingType = {\n startDate,\n startTime,\n duration,\n channel,\n title: 'Book Meeting',\n chatId,\n brand: `/${brandAlias}`,\n userId,\n host:\n formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value\n ? hostPhoneNumber\n : host,\n };\n\n const res = await createBookMeeting(requestData, apiHost);\n\n if (res?.id) {\n localStorage.setItem('bookMeetingId', res.id);\n setDisabled(true);\n setStatusSubmit({\n message:\n theme?.bookMeetingForm?.messages?.submitSuccess ||\n 'Submit successful',\n status: 200,\n });\n }\n } catch (error) {\n console.error(error);\n setDisabled(false);\n setStatusSubmit({\n message:\n theme?.bookMeetingForm?.messages?.submitError || 'Failed to submit',\n status: 500,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const getUserContactData = async (userId: string) => {\n if (!userId) return;\n\n const res = await getUserContact(apiHost, { id: userId });\n if (!res || !res?.length) {\n return;\n }\n\n setFormData((prevData) => ({\n ...prevData,\n host: res[0]?.emails?.primaryEmail,\n }));\n };\n\n useEffect(() => {\n const userId = localStorage.getItem('userId');\n if (userId) {\n getUserContactData(userId);\n }\n }, []);\n\n return (\n <motion.div\n className=\"w-full mx-auto max-w-[358px] group/message\"\n initial={{ y: 5, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n >\n <form\n className=\"flex flex-col gap-3 bg-white px-3 py-3 pb-4 rounded-lg w-full\"\n onSubmit={handleSubmit}\n >\n <div className=\"text-[#18181B] font-semibold text-base\">\n {theme?.bookMeetingForm?.title || 'Book meeting'}\n </div>\n\n <div className=\"flex flex-col gap-3\">\n {/* Date */}\n <div className=\"flex items-center gap-2\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"startDate\"\n >\n {theme?.bookMeetingForm?.labelDate || 'Date'}\n </label>\n\n <div className=\"w-full\">\n <DataPickerCustom\n onChange={(date: Date | null) => {\n if (!date) return;\n\n setFormData((prevData) => ({\n ...prevData,\n startDate: date.toISOString().split('T')[0],\n }));\n }}\n disabled={disabled}\n value={new Date(formData?.startDate)}\n />\n </div>\n </div>\n\n {/* Time and Duration */}\n <div className=\"flex flex-col\">\n <div className=\"flex items-center gap-3\">\n {/* Time */}\n <div className=\"flex flex-col gap-2 w-1/2\">\n <label\n className=\"text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"startTime\"\n >\n {theme?.bookMeetingForm?.labelTime || 'Time'}\n </label>\n\n <div>\n <SelectBox\n name=\"startTime\"\n options={TIME_OPTIONS}\n optionClassName=\"text-[#18181B] h-[40px] py-2 pr-2 pl-3 border rounded-lg bg-white\"\n placeholder={\n theme?.bookMeetingForm?.labelTime || 'Select Time'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n className={errors?.startTime ? 'border-red-500' : ''}\n />\n </div>\n </div>\n {/* Duration */}\n <div className=\"flex flex-col gap-2 w-1/2\">\n <label\n className=\"text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"duration\"\n >\n {theme?.bookMeetingForm?.labelDuration || 'Duration'}\n </label>\n\n <div>\n <SelectBox\n name=\"duration\"\n options={Object.values(DURATION_OPTIONS)}\n optionContainerClassName=\"gap-4\"\n optionClassName=\"!p-0 !h-[24px] hover:bg-transparent hover:!text-[#1E6EB4]\"\n placeholder={\n theme?.bookMeetingForm?.labelDuration || 'Select Duration'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n defaultValue=\"30\"\n className={errors?.duration ? 'border-red-500' : ''}\n />\n </div>\n </div>\n </div>\n\n {errors.startTime && (\n <p className=\"text-red-500 text-sm\">{errors.startTime}</p>\n )}\n {errors.duration && (\n <p className=\"text-red-500 text-sm\">{errors.duration}</p>\n )}\n </div>\n\n {/* Channel */}\n <div className=\"flex flex-col\">\n <div className=\"flex gap-2 items-center\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"channel\"\n >\n {theme?.bookMeetingForm?.labelChannel || 'Channel'}\n </label>\n\n <div className=\"w-full\">\n <SelectBoxWithIcon\n name=\"channel\"\n options={Object.values(CHANNEL_OPTIONS)}\n placeholder={\n theme?.bookMeetingForm?.labelChannel || 'Select Channel'\n }\n onChange={handleChangeSelect}\n disabled={disabled}\n className={errors?.channel ? 'border-red-500' : ''}\n />\n </div>\n </div>\n {errors.channel && (\n <p className=\"text-red-500 text-sm\">{errors.channel}</p>\n )}\n </div>\n\n {/* Host */}\n <div className=\"flex flex-col\">\n <div className=\"flex gap-2 items-center\">\n <label\n className=\"w-1/4 text-[#18181B] font-medium text-[14px] leading-[14px]\"\n htmlFor=\"host\"\n >\n {theme?.bookMeetingForm?.labelHost || 'Host'}\n </label>\n\n <div className=\"flex flex-col w-full\">\n {formData?.channel === CHANNEL_OPTIONS.PHONE_CALL.value ? (\n <PhoneNumberInput\n onChange={(val: Value) => {\n setFormData((prevData) => ({\n ...prevData,\n hostPhoneNumber: val,\n }));\n }}\n placeholder={\n theme?.bookMeetingForm?.placeholderPhoneNumber ||\n 'Phone number'\n }\n value={formData?.hostPhoneNumber}\n disabled={disabled}\n numberInputClassName={errors?.host ? '!border-red-500' : ''}\n />\n ) : (\n <input\n type=\"email\"\n name=\"host\"\n id=\"host\"\n className={`w-full rounded-lg border border-[#e0e0e0] bg-white pt-2 pr-[8px] pb-2 pl-3 text-base font-medium text-[#18181B] outline-none focus:border-[#6A64F1] focus:shadow-md h-[40px] \n disabled:cursor-not-allowed disabled:!bg-gray-100 disabled:!text-gray-500 ${errors?.host ? '!border-red-500' : ''}`}\n placeholder={\n theme?.bookMeetingForm?.placeholderEmail ||\n 'Email address'\n }\n required\n disabled={disabled}\n onChange={handleChange}\n value={formData?.host}\n />\n )}\n </div>\n </div>\n {errors.host && (\n <p className=\"text-red-500 text-sm\">{errors.host}</p>\n )}\n </div>\n\n <div className=\"flex flex-col items-center justify-center\">\n {statusSubmit && (\n <div className=\"flex items-center w-full justify-center mb-2\">\n <p\n className={`text-green-500 text-sm mt-1 ${statusSubmit?.status === 200 ? 'text-green-500' : 'text-red-500'}`}\n >\n {statusSubmit.message}\n </p>\n </div>\n )}\n <div className=\"w-full\">\n <button\n className={`shadow bg-[#1E6EB4] hover:bg-[#4096ff] focus:shadow-outline focus:outline-none text-white font-bold py-2 px-8 rounded-lg w-full h-[40px] disabled:cursor-not-allowed disabled:!bg-[#0000000a] disabled:!text-[#00000040] ${loading ? 'flex items-center justify-center' : ''}`}\n type=\"submit\"\n disabled={disabled}\n >\n {loading ? (\n <Spinner />\n ) : (\n `${theme?.buttons?.textBtnSubmit || 'Submit'}`\n )}\n </button>\n </div>\n </div>\n </div>\n </form>\n </motion.div>\n );\n};\n\nexport default BookMeetingForm;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingList.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAQzD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAgG9B,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"BookMeetingList.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAQzD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CA4F9B,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -7,14 +7,14 @@ import { getBookMeeting } from 'services/bookMeeting.service';
7
7
  const BookMeetingList = ({ apiHost, userId, theme }) => {
8
8
  const [loading, setLoading] = useState(false);
9
9
  const [bookings, setBookings] = useState([]);
10
- const [hostData, setHostData] = useState();
10
+ const [userContactData, setUserContactData] = useState();
11
11
  const loadingComponent = useMemo(() => _jsx(LoadingComponent, {}), []);
12
- const fetchHostData = async (hostId) => {
13
- const hostData = await getUserContact(apiHost, { id: hostId });
14
- if (!hostData || !hostData?.length) {
12
+ const fetchUserContactDetail = async (userId) => {
13
+ const userContactData = await getUserContact(apiHost, { id: userId });
14
+ if (!userContactData || !userContactData?.length) {
15
15
  return;
16
16
  }
17
- setHostData(hostData[0]);
17
+ setUserContactData(userContactData[0]);
18
18
  };
19
19
  const handleFetchBookingOfUser = async () => {
20
20
  if (!userId)
@@ -28,10 +28,7 @@ const BookMeetingList = ({ apiHost, userId, theme }) => {
28
28
  return;
29
29
  }
30
30
  setBookings(bookMeetingData);
31
- const hostId = bookMeetingData[0]?.hostId;
32
- if (hostId) {
33
- fetchHostData(hostId);
34
- }
31
+ fetchUserContactDetail(userId);
35
32
  }
36
33
  catch (err) {
37
34
  console.error('Error fetching book meeting details:', err);
@@ -56,8 +53,8 @@ const BookMeetingList = ({ apiHost, userId, theme }) => {
56
53
  alignItems: 'flex-start',
57
54
  }, children: [_jsx("div", { className: "text-[#18181B] font-semibold text-base", children: theme?.bookMeetingForm?.labelBookingList || 'Booking List' }), _jsx("div", { className: "flex flex-col w-full", style: {
58
55
  gap: '12px',
59
- }, children: bookings.map((booking) => (_jsx("div", { children: _jsx(BookMeetingDetail, { booking: booking, loading: loading, hostData: hostData, theme: theme }) }, booking.id))) })] }) }));
60
- }, [bookings, hostData, loading]);
56
+ }, children: bookings.map((booking) => (_jsx("div", { children: _jsx(BookMeetingDetail, { booking: booking, loading: loading, userContact: userContactData, theme: theme }) }, booking.id))) })] }) }));
57
+ }, [bookings, userContactData, loading]);
61
58
  return (_jsxs(_Fragment, { children: [loading && loadingComponent, !loading && !!bookings && bookMeetingListComponent] }));
62
59
  };
63
60
  export default BookMeetingList;
@@ -1 +1 @@
1
- {"version":3,"file":"BookMeetingList.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FC, useEffect, useMemo, useState } from 'react';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { UserContactType } from 'types/userContact.type';\nimport BookMeetingDetail from './BookMeetingDetail';\nimport LoadingComponent from './LoadingComponent';\nimport { getUserContact } from 'services/userContact.service';\nimport { getBookMeeting } from 'services/bookMeeting.service';\n\ninterface Props {\n apiHost: string;\n userId?: string;\n theme?: Record<string, any>;\n}\n\nconst BookMeetingList: FC<Props> = ({ apiHost, userId, theme }) => {\n const [loading, setLoading] = useState<boolean>(false);\n const [bookings, setBookings] = useState<BookMeetingType[]>([]);\n const [hostData, setHostData] = useState<UserContactType>();\n\n const loadingComponent = useMemo(() => <LoadingComponent />, []);\n\n const fetchHostData = async (hostId: string) => {\n const hostData = await getUserContact(apiHost, { id: hostId });\n\n if (!hostData || !hostData?.length) {\n return;\n }\n\n setHostData(hostData[0]);\n };\n\n const handleFetchBookingOfUser = async () => {\n if (!userId) return;\n\n setLoading(true);\n try {\n const bookMeetingData = await getBookMeeting(apiHost, {\n userId,\n });\n\n if (!bookMeetingData || !bookMeetingData?.length) {\n return;\n }\n\n setBookings(bookMeetingData);\n\n const hostId = bookMeetingData[0]?.hostId;\n if (hostId) {\n fetchHostData(hostId);\n }\n } catch (err) {\n console.error('Error fetching book meeting details:', err);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n handleFetchBookingOfUser();\n }, [userId]);\n\n const bookMeetingListComponent = useMemo(() => {\n if (!bookings || !bookings?.length) {\n return;\n }\n\n return (\n <div className=\"py-4\">\n <div\n className=\"bg-white rounded-lg overflow-hidden w-full max-w-[358px] mx-auto\"\n style={{\n padding: '12px',\n gap: '12px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <div className=\"text-[#18181B] font-semibold text-base\">\n {theme?.bookMeetingForm?.labelBookingList || 'Booking List'}\n </div>\n <div\n className=\"flex flex-col w-full\"\n style={{\n gap: '12px',\n }}\n >\n {bookings.map((booking) => (\n <div key={booking.id}>\n <BookMeetingDetail\n booking={booking}\n loading={loading}\n hostData={hostData}\n theme={theme}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }, [bookings, hostData, loading]);\n\n return (\n <>\n {loading && loadingComponent}\n {!loading && !!bookings && bookMeetingListComponent}\n </>\n );\n};\n\nexport default BookMeetingList;\n"]}
1
+ {"version":3,"file":"BookMeetingList.js","sourceRoot":"","sources":["../../../src/components/Chat/BookMeetingList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FC, useEffect, useMemo, useState } from 'react';\nimport { BookMeetingType } from 'types/bookMeeting.type';\nimport { UserContactType } from 'types/userContact.type';\nimport BookMeetingDetail from './BookMeetingDetail';\nimport LoadingComponent from './LoadingComponent';\nimport { getUserContact } from 'services/userContact.service';\nimport { getBookMeeting } from 'services/bookMeeting.service';\n\ninterface Props {\n apiHost: string;\n userId?: string;\n theme?: Record<string, any>;\n}\n\nconst BookMeetingList: FC<Props> = ({ apiHost, userId, theme }) => {\n const [loading, setLoading] = useState<boolean>(false);\n const [bookings, setBookings] = useState<BookMeetingType[]>([]);\n const [userContactData, setUserContactData] = useState<UserContactType>();\n\n const loadingComponent = useMemo(() => <LoadingComponent />, []);\n\n const fetchUserContactDetail = async (userId: string) => {\n const userContactData = await getUserContact(apiHost, { id: userId });\n\n if (!userContactData || !userContactData?.length) {\n return;\n }\n\n setUserContactData(userContactData[0]);\n };\n\n const handleFetchBookingOfUser = async () => {\n if (!userId) return;\n\n setLoading(true);\n try {\n const bookMeetingData = await getBookMeeting(apiHost, {\n userId,\n });\n\n if (!bookMeetingData || !bookMeetingData?.length) {\n return;\n }\n\n setBookings(bookMeetingData);\n fetchUserContactDetail(userId);\n } catch (err) {\n console.error('Error fetching book meeting details:', err);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n handleFetchBookingOfUser();\n }, [userId]);\n\n const bookMeetingListComponent = useMemo(() => {\n if (!bookings || !bookings?.length) {\n return;\n }\n\n return (\n <div className=\"py-4\">\n <div\n className=\"bg-white rounded-lg overflow-hidden w-full max-w-[358px] mx-auto\"\n style={{\n padding: '12px',\n gap: '12px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <div className=\"text-[#18181B] font-semibold text-base\">\n {theme?.bookMeetingForm?.labelBookingList || 'Booking List'}\n </div>\n <div\n className=\"flex flex-col w-full\"\n style={{\n gap: '12px',\n }}\n >\n {bookings.map((booking) => (\n <div key={booking.id}>\n <BookMeetingDetail\n booking={booking}\n loading={loading}\n userContact={userContactData}\n theme={theme}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }, [bookings, userContactData, loading]);\n\n return (\n <>\n {loading && loadingComponent}\n {!loading && !!bookings && bookMeetingListComponent}\n </>\n );\n};\n\nexport default BookMeetingList;\n"]}