@chat21/chat21-ionic 3.0.85 → 3.0.86-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/CHANGELOG.md +116 -4
  2. package/README.md +2 -2
  3. package/deploy_amazon_beta.sh +29 -0
  4. package/deploy_amazon_prod.sh +30 -0
  5. package/package.json +4 -3
  6. package/src/app/app-routing.module.ts +7 -2
  7. package/src/app/app.component.html +7 -1
  8. package/src/app/app.component.scss +20 -2
  9. package/src/app/app.component.ts +130 -19
  10. package/src/app/app.module.ts +8 -3
  11. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +8 -1
  12. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +86 -23
  13. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +188 -88
  14. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +42 -3
  15. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +11 -24
  16. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +6 -10
  17. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.spec.ts +2 -2
  18. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +16 -26
  19. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +5 -1
  20. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +22 -15
  21. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +25 -5
  22. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +2 -1
  23. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +14 -15
  24. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +24 -5
  25. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +6 -1
  26. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +12 -13
  27. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +26 -5
  28. package/src/app/chatlib/conversation-detail/message/frame/frame.component.html +8 -2
  29. package/src/app/chatlib/conversation-detail/message/frame/frame.component.scss +36 -0
  30. package/src/app/chatlib/conversation-detail/message/frame/frame.component.ts +2 -2
  31. package/src/app/chatlib/conversation-detail/message/html/html.component.ts +0 -1
  32. package/src/app/chatlib/conversation-detail/message/image/image.component.html +3 -2
  33. package/src/app/chatlib/conversation-detail/message/image/image.component.scss +17 -5
  34. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +1 -1
  35. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +3 -2
  36. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +16 -6
  37. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -3
  38. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +2 -0
  39. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +78 -52
  40. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +63 -20
  41. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -10
  42. package/src/app/components/canned-response/canned-response.component.html +9 -9
  43. package/src/app/components/canned-response/canned-response.component.scss +14 -7
  44. package/src/app/components/canned-response/canned-response.component.ts +5 -4
  45. package/src/app/components/contacts-directory/contacts-directory.component.html +22 -26
  46. package/src/app/components/contacts-directory/contacts-directory.component.scss +8 -6
  47. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +64 -47
  48. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +98 -61
  49. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +24 -40
  50. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +116 -0
  51. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +39 -42
  52. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +67 -4
  53. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +82 -152
  54. package/src/app/components/conversation-info/info-content/info-content.component.html +23 -2
  55. package/src/app/components/conversation-info/info-content/info-content.component.ts +5 -6
  56. package/src/app/components/conversation-info/info-direct/info-direct.component.html +7 -14
  57. package/src/app/components/conversation-info/info-direct/info-direct.component.scss +23 -0
  58. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +1 -6
  59. package/src/app/components/conversation-info/info-group/info-group.component.html +44 -108
  60. package/src/app/components/conversation-info/info-group/info-group.component.scss +101 -61
  61. package/src/app/components/conversation-info/info-group/info-group.component.ts +1 -0
  62. package/src/app/components/conversation-info/info-support-group/info-support-group.component.html +2 -1
  63. package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +0 -1
  64. package/src/app/components/{ddp-header/ddp-header.component.html → conversations-list/header-conversations-list/header-conversations-list.component.html} +3 -3
  65. package/src/app/components/{ddp-header/ddp-header.component.scss → conversations-list/header-conversations-list/header-conversations-list.component.scss} +16 -4
  66. package/src/app/components/{conversation-detail/bubble-my-message/bubble-my-message.component.spec.ts → conversations-list/header-conversations-list/header-conversations-list.component.spec.ts} +6 -6
  67. package/src/app/components/{ddp-header/ddp-header.component.ts → conversations-list/header-conversations-list/header-conversations-list.component.ts} +7 -16
  68. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +12 -0
  69. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +14 -0
  70. package/src/app/components/{conversation-detail/option-header/option-header.component.spec.ts → conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.spec.ts} +5 -5
  71. package/src/app/components/{conversation-detail/option-header/option-header.component.ts → conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.ts} +5 -4
  72. package/src/app/components/navbar/navbar.component.html +103 -0
  73. package/src/app/components/navbar/navbar.component.scss +249 -0
  74. package/src/app/components/{ddp-header/ddp-header.component.spec.ts → navbar/navbar.component.spec.ts} +6 -6
  75. package/src/app/components/navbar/navbar.component.ts +190 -0
  76. package/src/app/components/project-item/project-item.component.html +98 -149
  77. package/src/app/components/project-item/project-item.component.scss +43 -35
  78. package/src/app/components/project-item/project-item.component.ts +16 -4
  79. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +5 -5
  80. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +24 -13
  81. package/src/app/components/utils/user-presence/user-presence.component.html +7 -2
  82. package/src/app/components/utils/user-presence/user-presence.component.scss +35 -18
  83. package/src/app/components/utils/user-presence/user-presence.component.ts +6 -10
  84. package/src/app/{pages → modals}/create-canned-response/create-canned-response-routing.module.ts +0 -0
  85. package/src/app/{pages → modals}/create-canned-response/create-canned-response.module.ts +0 -0
  86. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.html +0 -0
  87. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.scss +0 -0
  88. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.spec.ts +0 -0
  89. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.ts +13 -13
  90. package/src/app/{pages → modals}/loader-preview/loader-preview-routing.module.ts +0 -0
  91. package/src/app/{pages → modals}/loader-preview/loader-preview.module.ts +0 -0
  92. package/src/app/{pages → modals}/loader-preview/loader-preview.page.html +1 -1
  93. package/src/app/{pages → modals}/loader-preview/loader-preview.page.scss +4 -0
  94. package/src/app/{pages → modals}/loader-preview/loader-preview.page.spec.ts +0 -0
  95. package/src/app/{pages → modals}/loader-preview/loader-preview.page.ts +1 -2
  96. package/src/app/modals/send-email/send-email-routing.module.ts +17 -0
  97. package/src/app/modals/send-email/send-email.module.ts +31 -0
  98. package/src/app/modals/send-email/send-email.page.html +46 -0
  99. package/src/app/modals/send-email/send-email.page.scss +161 -0
  100. package/src/app/modals/send-email/send-email.page.spec.ts +24 -0
  101. package/src/app/modals/send-email/send-email.page.ts +89 -0
  102. package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
  103. package/src/app/pages/contacts-directory/contacts-directory.page.scss +47 -0
  104. package/src/app/pages/contacts-directory/contacts-directory.page.ts +2 -0
  105. package/src/app/pages/conversation-detail/conversation-detail.module.ts +0 -8
  106. package/src/app/pages/conversation-detail/conversation-detail.page.html +48 -27
  107. package/src/app/pages/conversation-detail/conversation-detail.page.scss +45 -254
  108. package/src/app/pages/conversation-detail/conversation-detail.page.ts +325 -135
  109. package/src/app/pages/conversations-list/conversations-list.page.html +11 -8
  110. package/src/app/pages/conversations-list/conversations-list.page.scss +18 -2
  111. package/src/app/pages/conversations-list/conversations-list.page.ts +26 -24
  112. package/src/app/pages/profile-info/profile-info.page.html +2 -4
  113. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
  114. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +42 -0
  115. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +1 -0
  116. package/src/app/services/canned-responses/canned-responses.service.ts +26 -0
  117. package/src/app/services/projects/projects.service.spec.ts +12 -0
  118. package/src/app/services/projects/projects.service.ts +43 -0
  119. package/src/app/services/tiledesk/tiledesk.service.ts +33 -17
  120. package/src/app/services/websocket/websocket.service.ts +1 -1
  121. package/src/app/shared/shared.module.ts +24 -33
  122. package/src/app/utils/toast.spec.ts +7 -0
  123. package/src/app/utils/toast.ts +48 -0
  124. package/src/assets/i18n/ar.json +288 -265
  125. package/src/assets/i18n/az.json +24 -1
  126. package/src/assets/i18n/de.json +25 -2
  127. package/src/assets/i18n/en.json +25 -2
  128. package/src/assets/i18n/es.json +26 -3
  129. package/src/assets/i18n/fr.json +24 -1
  130. package/src/assets/i18n/it.json +24 -1
  131. package/src/assets/i18n/kk.json +25 -2
  132. package/src/assets/i18n/pt.json +25 -2
  133. package/src/assets/i18n/ru.json +24 -1
  134. package/src/assets/i18n/sr.json +287 -264
  135. package/src/assets/i18n/sv.json +25 -2
  136. package/src/assets/i18n/tr.json +25 -2
  137. package/src/assets/i18n/uk.json +25 -2
  138. package/src/assets/i18n/uz.json +24 -1
  139. package/src/assets/js/chat21client.js +1 -1
  140. package/src/assets/sounds/interface-start.mp3 +0 -0
  141. package/src/assets/sounds/wheep-wheep.mp3 +0 -0
  142. package/src/chat-config-mqtt-localhost.json +2 -2
  143. package/src/chat-config-native-mqtt.json +3 -0
  144. package/src/chat21-core/models/conversation.ts +0 -1
  145. package/src/chat21-core/models/projects.ts +27 -0
  146. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +7 -9
  147. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +7 -8
  148. package/src/chat21-core/utils/constants.ts +7 -1
  149. package/src/chat21-core/utils/convertRequestToConversation.ts +41 -0
  150. package/src/chat21-core/utils/user-typing/user-typing.component.html +8 -5
  151. package/src/chat21-core/utils/user-typing/user-typing.component.scss +87 -17
  152. package/src/chat21-core/utils/user-typing/user-typing.component.ts +12 -94
  153. package/src/chat21-core/utils/utils.ts +41 -11
  154. package/src/global.scss +59 -255
  155. package/src/index.html +0 -9
  156. package/src/variables.scss +30 -10
  157. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +0 -3
  158. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +0 -21
  159. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +0 -24
  160. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +0 -14
  161. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +0 -54
  162. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +0 -98
  163. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +0 -84
  164. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +0 -30
  165. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +0 -83
  166. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +0 -24
  167. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +0 -68
  168. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +0 -3
  169. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +0 -10
  170. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +0 -24
  171. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +0 -14
  172. package/src/app/components/conversation-detail/option-header/option-header.component.html +0 -13
  173. package/src/app/components/conversation-detail/option-header/option-header.component.scss +0 -0
@@ -1,3 +1,5 @@
1
+ import { TiledeskService } from 'src/app/services/tiledesk/tiledesk.service';
2
+ import { SendEmailModal } from './../../../modals/send-email/send-email.page';
1
3
  import { UserModel } from 'src/chat21-core/models/user';
2
4
  import { Component, OnInit, Output, EventEmitter, Input, AfterViewInit, ViewChild, ElementRef, OnChanges, HostListener, Renderer2, SimpleChange, SimpleChanges } from '@angular/core';
3
5
 
@@ -5,11 +7,11 @@ import { Chooser } from '@ionic-native/chooser/ngx';
5
7
  import { IonTextarea, ModalController, ToastController } from '@ionic/angular';
6
8
 
7
9
  // Pages
8
- import { LoaderPreviewPage } from 'src/app/pages/loader-preview/loader-preview.page';
10
+ import { LoaderPreviewPage } from 'src/app/modals/loader-preview/loader-preview.page';
9
11
  // Services
10
12
  import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
11
13
  // utils
12
- import { TYPE_MSG_TEXT } from 'src/chat21-core/utils/constants';
14
+ import { TYPE_MSG_EMAIL, TYPE_MSG_TEXT, TYPE_SUPPORT_GROUP } from 'src/chat21-core/utils/constants';
13
15
  // Models
14
16
  import { UploadModel } from 'src/chat21-core/models/upload';
15
17
  import { Observable } from 'rxjs';
@@ -43,37 +45,37 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
43
45
 
44
46
  @Input() loggedUser: UserModel;
45
47
  @Input() conversationWith: string;
48
+ @Input() channelType: string;
46
49
  @Input() tagsCannedFilter: any;
47
50
  @Input() tagsCannedCount: number;
48
51
  @Input() areVisibleCAR: boolean;
49
52
  @Input() supportMode: boolean;
50
- @Input() events: Observable<void>;
53
+ @Input() leadInfo: {lead_id: string, hasEmail: boolean, email: string, projectId: string};
51
54
  @Input() fileUploadAccept: string
52
55
  @Input() isOpenInfoConversation: boolean;
53
56
  @Input() translationMap: Map<string, string>;
54
57
  @Input() dropEvent: any;
55
58
  @Input() disableTextarea: boolean;
56
- @Output() eventChangeTextArea = new EventEmitter<object>();
57
- @Output() eventSendMessage = new EventEmitter<object>();
59
+ @Output() eventChangeTextArea = new EventEmitter<{msg: string, offsetHeight: number}>();
60
+ @Output() eventSendMessage = new EventEmitter<{msg: string, type: string, metadata?: Object, attributes?: Object}>();
58
61
  @Output() onClickOpenCannedResponses = new EventEmitter<boolean>();
59
62
  @Output() onPresentModalScrollToBottom = new EventEmitter<boolean>();
63
+ @Output() onOpenFooterSection = new EventEmitter<string>();
60
64
 
61
65
  public conversationEnabled = false;
62
66
  public messageString: string;
63
67
  public HAS_PASTED: boolean = false;
64
68
  public toastMsg: string;
65
- public TEXAREA_PLACEHOLDER: string;
66
- public LONG_TEXAREA_PLACEHOLDER: string;
67
- public SHORT_TEXAREA_PLACEHOLDER: string;
68
- public SHORTER_TEXAREA_PLACEHOLDER: string;
69
- public currentWindowWidth: any;
70
69
  private logger: LoggerService = LoggerInstance.getInstance();
71
70
  public countClicks: number = 0;
72
- public IS_SUPPORT_GROUP_CONVERSATION: boolean;
73
71
  public IS_ON_MOBILE_DEVICE: boolean;
72
+
73
+ TYPE_SUPPORT_GROUP = TYPE_SUPPORT_GROUP;
74
74
  TYPE_MSG_TEXT = TYPE_MSG_TEXT;
75
75
  msg: string
76
76
 
77
+ section: string= 'chat'
78
+
77
79
  tooltipOptions = {
78
80
  'show-delay': 500,
79
81
  'tooltip-class': 'chat-tooltip',
@@ -88,7 +90,26 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
88
90
  addWhiteSpaceBefore: boolean;
89
91
  emojiPerLine: number = 9
90
92
  emojiColor: string ="#3880ff"
91
- emojiiCategories = [ 'recent', 'people', 'nature', 'activity']
93
+ emojiiCategories = [ 'recent', 'people', 'nature', 'activity'] //, 'custom']
94
+
95
+ customEmojis = [
96
+ {
97
+ name: 'Customer-Service',
98
+ shortNames: ['customer'],
99
+ text: 'ee',
100
+ emoticons: [],
101
+ keywords: ['github'],
102
+ imageUrl: 'https://tiledesk.com/wp-content/uploads/2022/11/Customer-Service.png',
103
+ },
104
+ {
105
+ name: 'Octocat',
106
+ shortNames: ['octocat'],
107
+ text: 'rr',
108
+ emoticons: [],
109
+ keywords: ['github'],
110
+ imageUrl: 'https://tiledesk.com/wp-content/uploads/2022/11/FAQ-Chatbot.png',
111
+ }
112
+ ];
92
113
  /**
93
114
  * Constructor
94
115
  * @param chooser
@@ -117,15 +138,8 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
117
138
  if (this.areVisibleCAR === false) {
118
139
  this.emojiPerLine = 7
119
140
  }
120
- // this.events.subscribe((cannedmessage) => {
121
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] events.subscribe cannedmessage ", cannedmessage);
122
- // })
123
141
 
124
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] LONG_TEXAREA_PLACEHOLDER ", this.LONG_TEXAREA_PLACEHOLDER);
125
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] SHORT_TEXAREA_PLACEHOLDER ", this.SHORT_TEXAREA_PLACEHOLDER);
126
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] SHORTER_TEXAREA_PLACEHOLDER ", this.SHORTER_TEXAREA_PLACEHOLDER);
127
142
  this.listenToNewCannedResponseCreated()
128
- this.getWindowWidth();
129
143
  this.isOnMobileDevice()
130
144
  }
131
145
 
@@ -146,32 +160,14 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
146
160
  // this.SHORT_TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORT')
147
161
  // this.SHORTER_TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORTER')
148
162
 
149
- this.TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORT')
150
-
151
- }
152
-
153
- if (this.conversationWith.startsWith("support-group")) {
154
- this.IS_SUPPORT_GROUP_CONVERSATION = true
155
- } else {
156
- this.IS_SUPPORT_GROUP_CONVERSATION = false
157
163
  }
158
- // this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges supportMode ', this.supportMode)
159
- // this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges disableTextarea ', this.disableTextarea)
160
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges DROP EVENT ", this.dropEvent);
161
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges tagsCannedFilter ", this.tagsCannedFilter);
162
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges areVisibleCAR; ", this.areVisibleCAR);
163
-
164
-
165
164
  this.logger.log('[CONVS-DETAIL] - returnChangeTextArea ngOnChanges in [MSG-TEXT-AREA] this.tagsCannedFilter.length ', this.tagsCannedFilter.length)
166
165
 
167
166
  // use case drop
168
167
  if (this.dropEvent) {
169
168
  this.presentModal(this.dropEvent)
170
169
  }
171
- // if (this.isOpenInfoConversation === true) {
172
- // this.getIfTexareaIsEmpty('ngOnChanges')
173
- // this.getWindowWidth();
174
- // }
170
+
175
171
  }
176
172
 
177
173
  // ngAfterViewInit() {
@@ -205,36 +201,6 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
205
201
  }
206
202
  }
207
203
 
208
-
209
- getWindowWidth(): any {
210
- this.currentWindowWidth = window.innerWidth;
211
-
212
-
213
- // if (this.currentWindowWidth >= 844 && this.isOpenInfoConversation === false && this.conversationWith.startsWith("support-group")) {
214
- // this.TEXAREA_PLACEHOLDER = this.LONG_TEXAREA_PLACEHOLDER;
215
- // this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] currentWindowWidth', this.currentWindowWidth, ' - DISPLAY LONG_TEXAREA_PLACEHOLDER ');
216
- // } else if (this.currentWindowWidth >= 844 && this.isOpenInfoConversation === true && this.conversationWith.startsWith("support-group")) {
217
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
218
- // } else if (this.currentWindowWidth < 844 && this.isOpenInfoConversation === false && this.conversationWith.startsWith("support-group")) {
219
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
220
- // } else if (this.currentWindowWidth < 844 && this.isOpenInfoConversation === true && this.conversationWith.startsWith("support-group")) {
221
- // this.TEXAREA_PLACEHOLDER = this.SHORTER_TEXAREA_PLACEHOLDER;
222
- // } else if (!this.conversationWith.startsWith("support-group")) {
223
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
224
- // }
225
-
226
- // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] checkPlatformIsMobile() ", checkPlatformIsMobile());
227
- if (checkPlatformIsMobile() === true) {
228
-
229
- if (this.currentWindowWidth <= 430 && this.currentWindowWidth >= 274) {
230
- this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
231
-
232
- } else if (this.currentWindowWidth <= 273) {
233
- this.TEXAREA_PLACEHOLDER = this.SHORTER_TEXAREA_PLACEHOLDER;
234
- }
235
- }
236
- }
237
-
238
204
  // -------------------------------------------------------------------------------------------
239
205
  // Change the placeholder of the 'send message' textarea according to the width of the window
240
206
  // -------------------------------------------------------------------------------------------
@@ -242,42 +208,9 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
242
208
  onResize(event) {
243
209
  // this.getIfTexareaIsEmpty('onResize')
244
210
  // console.log("[CONVS-DETAIL][MSG-TEXT-AREA] event.target.innerWidth; ", event.target.innerWidth);
245
-
246
-
247
-
248
- // if (event.target.innerWidth >= 844 && this.isOpenInfoConversation === false && this.conversationWith.startsWith("support-group")) {
249
- // this.TEXAREA_PLACEHOLDER = this.LONG_TEXAREA_PLACEHOLDER;
250
- // } else if (event.target.innerWidth >= 844 && this.isOpenInfoConversation === true && this.conversationWith.startsWith("support-group")) {
251
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
252
- // } else if (event.target.innerWidth < 844 && this.isOpenInfoConversation === false && this.conversationWith.startsWith("support-group")) {
253
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
254
- // } else if (event.target.innerWidth < 844 && this.isOpenInfoConversation === true && this.conversationWith.startsWith("support-group")) {
255
- // this.TEXAREA_PLACEHOLDER = this.SHORTER_TEXAREA_PLACEHOLDER;
256
- // } else if (!this.conversationWith.startsWith("support-group")) {
257
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
258
- // }
259
-
260
- // this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] checkPlatformIsMobile() ', checkPlatformIsMobile());
261
- if (checkPlatformIsMobile() === true) {
262
-
263
- if (event.target.innerWidth <= 430 && event.target.innerWidth >= 274) {
264
- this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
265
- } else if (this.currentWindowWidth <= 273) {
266
- this.TEXAREA_PLACEHOLDER = this.SHORTER_TEXAREA_PLACEHOLDER;
267
- }
268
-
269
- }
270
-
271
- // if (checkPlatformIsMobile && event.target.innerWidth <= 430) {
272
- // this.TEXAREA_PLACEHOLDER = this.SHORT_TEXAREA_PLACEHOLDER;
273
- // } else if (checkPlatformIsMobile && event.target.innerWidth > 430) {
274
- // this.TEXAREA_PLACEHOLDER = this.LONG_TEXAREA_PLACEHOLDER;
275
- // }
276
211
  }
277
212
 
278
213
 
279
-
280
-
281
214
  onPaste(event: any) {
282
215
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] onPaste DROP EVENT ", this.dropEvent);
283
216
 
@@ -338,6 +271,16 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
338
271
 
339
272
  }
340
273
 
274
+ onOpenSection(section:string){
275
+ this.section = section
276
+ this.onOpenFooterSection.emit(section)
277
+ }
278
+
279
+ onOpenEmailModal(){
280
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] - onOpenEmailModal');
281
+ this.presentEmailModal()
282
+ }
283
+
341
284
 
342
285
  /**
343
286
  *
@@ -438,7 +381,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
438
381
  // messageString = metadata.name
439
382
  // }
440
383
 
441
- that.eventSendMessage.emit({ message: messageString, type: type, metadata: metadata });
384
+ that.eventSendMessage.emit({ msg: messageString, type: type, metadata: metadata });
442
385
 
443
386
  that.fileInput.nativeElement.value = '';
444
387
  this.dropEvent = null
@@ -458,6 +401,37 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
458
401
  return await modal.present();
459
402
  }
460
403
 
404
+ private async presentEmailModal(): Promise<any>{
405
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] openEmailModal');
406
+ const attributes = {
407
+ enableBackdropDismiss: false,
408
+ conversationWith: this.conversationWith,
409
+ msg: this.messageString,
410
+ email: this.leadInfo.email,
411
+ projectId: this.leadInfo.projectId,
412
+ translationMap: this.translationMap};
413
+ const modal: HTMLIonModalElement =
414
+ await this.modalController.create({
415
+ component: SendEmailModal,
416
+ componentProps: attributes,
417
+ swipeToClose: false,
418
+ backdropDismiss: true
419
+ });
420
+ modal.onDidDismiss().then((detail: any) => {
421
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] send Email detail returned-->', detail);
422
+ const form = detail.data.form
423
+ if (form&& form.message && form.message.trim() !== '') {
424
+ const text = '**' + form.subject + '**\r\n' + form.message
425
+ const attributes = {
426
+ channel: TYPE_MSG_EMAIL
427
+ }
428
+ this.eventSendMessage.emit({ msg: text, type: TYPE_MSG_TEXT, metadata: null, attributes: attributes });
429
+ }
430
+ });
431
+
432
+ return await modal.present();
433
+ }
434
+
461
435
 
462
436
  ionChange(e: any) {
463
437
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ionChange event ", e);
@@ -466,7 +440,8 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
466
440
  const message = e.detail.value
467
441
  this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange message ", message);
468
442
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange this.messageString ", this.messageString);
469
- const height = e.target.offsetHeight + 20; // nk added +20
443
+ const footerSelectionHeight = 33
444
+ const height = e.target.offsetHeight + footerSelectionHeight + 20; // nk added +20
470
445
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange text-area height ", height);
471
446
  // this.getIfTexareaIsEmpty('ionChange')
472
447
  try {
@@ -590,7 +565,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
590
565
  this.messageString = '';
591
566
  // text = text.replace(/(\r\n|\n|\r)/gm, '');
592
567
  if (text && text.trim() !== '') {
593
- this.eventSendMessage.emit({ message: text, type: TYPE_MSG_TEXT });
568
+ this.eventSendMessage.emit({ msg: text, type: TYPE_MSG_TEXT });
594
569
  }
595
570
  }
596
571
 
@@ -696,15 +671,14 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
696
671
 
697
672
  @HostListener('document:keydown', ['$event'])
698
673
  handleKeyboardEvent(event: KeyboardEvent) {
699
- this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] handleKeyboardEvent event.key ", event);
674
+ // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] handleKeyboardEvent event.key ", event);
700
675
  // Note: on mac keyboard "metakey" matches "cmd"
701
-
676
+
702
677
  //do not move cursor on ArrowDown/ArrowUp
703
- if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && !event.shiftKey) {
678
+ if ((event.key === 'ArrowDown' || event.key === 'ArrowUp')&& !event.shiftKey) {
704
679
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] HAS PRESSED event.key', event.key);
705
680
  event.preventDefault();
706
681
  }
707
-
708
682
  if (event.key === 'Enter' && event.altKey || event.key === 'Enter' && event.ctrlKey || event.key === 'Enter' && event.metaKey) {
709
683
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] HAS PRESSED COMBO KEYS this.messageString', this.messageString);
710
684
  if (this.messageString !== undefined && this.messageString.trim() !== '') {
@@ -715,48 +689,4 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
715
689
 
716
690
  }
717
691
 
718
-
719
- /* NOT USED */
720
- // getIfTexareaIsEmpty(calledby: string) {
721
- // let elemTexarea = <HTMLElement>document.querySelector('#ion-textarea');
722
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] elemTexarea ", elemTexarea)
723
- // if (this.messageString == null || this.messageString == '') {
724
-
725
-
726
- // if (elemTexarea) {
727
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] messageString is empty - called By ", calledby)
728
- // elemTexarea.style.height = "30px !important";
729
- // elemTexarea.style.overflow = "hidden !important";
730
- // }
731
- // } else {
732
-
733
- // if (elemTexarea) {
734
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] messageString not empty - called By ", calledby)
735
- // elemTexarea.style.height = null;
736
- // elemTexarea.style.overflow = null;
737
- // }
738
- // }
739
- // }
740
-
741
-
742
-
743
-
744
- // attualmente non usata
745
- // dovrebbe scattare quando termina il caricamento dell'immagine per inviare il messaggio
746
- // private setSubscriptions() {
747
- // const that = this;
748
- // const subscribeBSStateUpload = this.uploadService.BSStateUpload.subscribe((data: any) => {
749
- // this.logger.log('***** BSStateUpload *****', data);
750
- // if (data) {
751
- // let message = data.message;
752
- // let type_message = data.type_message;
753
- // let metadata = data.metadata;
754
- // this.logger.log('***** message *****', message);
755
- // this.logger.log('***** type_message *****', type_message);
756
- // this.logger.log('***** metadata *****', metadata);
757
- // //this.eventSendMessage.emit({ message: messageString, type: TYPE_MSG_TEXT });
758
- // }
759
- // });
760
- // }
761
-
762
692
  }
@@ -1,4 +1,23 @@
1
- <ion-content [style.display]="openInfoConversation ? 'block' : 'none'">
1
+ <!-- <ion-content [style.display]="openInfoConversation ? 'block' : 'none'"> -->
2
+ <ion-content>
3
+
4
+ <!-- <app-info-direct
5
+ [style.display]="panelType === 'direct-panel' ? 'content' : 'none'"
6
+ [member]=member
7
+ [translationMap]=translationMap
8
+ [conversationWith]= "conversationWith">
9
+ </app-info-direct>
10
+
11
+ <app-info-group
12
+ [style.display]="panelType === 'group-panel' && IS_GROUP_PANEL === true ? 'content' : 'none'"
13
+ [groupDetail]="groupDetail"
14
+ [isMobile]="isMobile">
15
+ </app-info-group>
16
+
17
+ <app-info-support-group
18
+ *ngIf="panelType === 'support-group-panel'"
19
+ [urlConversationSupportGroup]="urlConversationSupportGroup">
20
+ </app-info-support-group> -->
2
21
 
3
22
  <app-info-direct *ngIf="panelType === 'direct-panel'"
4
23
  [member]=member
@@ -7,12 +26,14 @@
7
26
  </app-info-direct>
8
27
 
9
28
  <app-info-group *ngIf="panelType === 'group-panel' && IS_GROUP_PANEL === true"
10
- [groupDetail]="groupDetail">
29
+ [groupDetail]="groupDetail"
30
+ [isMobile]="isMobile">
11
31
  </app-info-group>
12
32
 
13
33
  <app-info-support-group *ngIf="panelType === 'support-group-panel'"
14
34
  [urlConversationSupportGroup]="urlConversationSupportGroup">
15
35
  </app-info-support-group>
36
+
16
37
 
17
38
 
18
39
  </ion-content>
@@ -28,11 +28,12 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
28
28
 
29
29
  export class InfoContentComponent implements OnInit {
30
30
  @Input() openInfoConversation: boolean;
31
- @Input() translationMap: Map<string, string>;
32
31
  // @Input() member: UserModel;
33
32
  @Input() loggedUser: UserModel
34
33
  @Input() tenant: string
35
- @Input() groupDetail: any
34
+ @Input() groupDetail: any;
35
+ @Input() isMobile: boolean;
36
+ @Input() translationMap: Map<string, string>;
36
37
 
37
38
 
38
39
  public member: UserModel;
@@ -52,6 +53,8 @@ export class InfoContentComponent implements OnInit {
52
53
  public IS_GROUP_PANEL: boolean = false
53
54
 
54
55
  constructor(
56
+ public archivedConversationsHandlerService: ArchivedConversationsHandlerService,
57
+ public conversationsHandlerService: ConversationsHandlerService,
55
58
  public tiledeskAuthService: TiledeskAuthService,
56
59
  private route: ActivatedRoute,
57
60
  public contactsService: ContactsService,
@@ -60,9 +63,6 @@ export class InfoContentComponent implements OnInit {
60
63
  public tiledeskService: TiledeskService
61
64
 
62
65
  ) {
63
- this.logger.log('[INFO-CONTENT-COMP] HELLO (CONSTUCTOR) !!!!!');
64
- // this.loggedUser = this.authService.getCurrentUser();
65
- // this.logger.log('INFO-CONTENT-COMP loggedUser: ', this.loggedUser);
66
66
 
67
67
  const appconfig = appConfigProvider.getConfig()
68
68
  // this.tenant = appconfig.tenant;
@@ -73,7 +73,6 @@ export class InfoContentComponent implements OnInit {
73
73
  this.route.paramMap.subscribe(params => {
74
74
  this.logger.log('[INFO-CONTENT-COMP] initialize params: ', params);
75
75
  this.conversationWith = params.get('IDConv');
76
- this.logger.log('[INFO-CONTENT-COMP] - paramMap.subscribe conversationWith: ', this.conversationWith);
77
76
  this.conversationWithFullname = params.get('FullNameConv');
78
77
  this.conv_type = params.get('Convtype');
79
78
 
@@ -8,16 +8,7 @@
8
8
  <div class="image-profile">
9
9
  <app-avatar-profile [itemAvatar]='member'></app-avatar-profile>
10
10
  </div>
11
-
12
- <div class="user-presence">
13
- <app-user-presence
14
- [idUser]='member.uid'
15
- [translationMap]='translationMap'
16
- [borderColor]='borderColor'
17
- [fontColor]='fontColor'>
18
- </app-user-presence>
19
- </div>
20
- <!-- -> {{member |json}} -->
11
+
21
12
  <div class="info-profile">
22
13
  <div class="name">
23
14
  <span class="read">{{member.fullname}}</span>
@@ -37,10 +28,12 @@
37
28
 
38
29
 
39
30
 
40
- <app-advanced-info-accordion
41
- [advancedAttributes]="advancedAttributes"
42
- [translationMap]="translationMap">
43
- </app-advanced-info-accordion>
31
+ <div class="info-accordion-container">
32
+ <app-advanced-info-accordion class="info-accordion"
33
+ [advancedAttributes]="advancedAttributes"
34
+ [translationMap]="translationMap">
35
+ </app-advanced-info-accordion>
36
+ </div>
44
37
 
45
38
 
46
39
  </ion-content>
@@ -59,4 +59,27 @@
59
59
  .member-email {
60
60
  text-align: center;
61
61
  margin-top: 8px;
62
+ }
63
+
64
+ .info-accordion-container{
65
+ margin-left: 8px !important;
66
+ margin-right: 8px !important;
67
+
68
+ margin-top: 12px !important;
69
+ background-color: #fff;
70
+ border-radius: 4px;
71
+ box-shadow: rgba(0, 27, 71, 0.08) 0px 3px;
72
+
73
+ display: flex;
74
+ .info-accordion{
75
+ padding: 16px 12px !important;
76
+ cursor: pointer;
77
+ position: relative;
78
+ transition: all 0.2s ease-in-out 0s;
79
+
80
+ &:hover{
81
+ background-color: #f5f7f9;
82
+ }
83
+ }
84
+
62
85
  }
@@ -15,8 +15,6 @@ export class InfoDirectComponent implements OnInit, AfterViewInit, OnChanges {
15
15
  @Input() translationMap: Map<string, string>;
16
16
  @Input() conversationWith: string;
17
17
 
18
- borderColor = '#ffffff';
19
- fontColor = '#949494';
20
18
  advancedAttributes: Array<any> = [];
21
19
  private logger: LoggerService = LoggerInstance.getInstance();
22
20
 
@@ -28,8 +26,6 @@ export class InfoDirectComponent implements OnInit, AfterViewInit, OnChanges {
28
26
 
29
27
  ngOnInit() {
30
28
  this.logger.log('InfoDirectComponent - ngOnInit');
31
-
32
- this.initialize();
33
29
  }
34
30
 
35
31
  ngAfterViewInit() {
@@ -43,12 +39,11 @@ export class InfoDirectComponent implements OnInit, AfterViewInit, OnChanges {
43
39
  this.logger.log('InfoDirectComponent - ngOnDestroy ' );
44
40
  // this.unsubscribe$.next();
45
41
  // this.unsubscribe$.complete();
46
-
47
-
48
42
  }
49
43
 
50
44
  ngOnChanges(){
51
45
  if(this.member){
46
+ this.initialize();
52
47
  this.member.imageurl = this.imageRepoService.getImagePhotoUrl(this.conversationWith)
53
48
  }
54
49
  }