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

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 (171) hide show
  1. package/CHANGELOG.md +121 -4
  2. package/README.md +2 -2
  3. package/package.json +4 -3
  4. package/src/app/app-routing.module.ts +7 -2
  5. package/src/app/app.component.html +7 -1
  6. package/src/app/app.component.scss +20 -2
  7. package/src/app/app.component.ts +131 -20
  8. package/src/app/app.module.ts +8 -3
  9. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +11 -4
  10. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +86 -23
  11. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +188 -88
  12. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +42 -3
  13. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +11 -24
  14. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +6 -10
  15. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.spec.ts +2 -2
  16. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +16 -26
  17. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +5 -1
  18. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +22 -15
  19. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +25 -5
  20. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +2 -1
  21. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +14 -15
  22. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +24 -5
  23. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +6 -1
  24. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +12 -13
  25. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +26 -5
  26. package/src/app/chatlib/conversation-detail/message/frame/frame.component.html +8 -2
  27. package/src/app/chatlib/conversation-detail/message/frame/frame.component.scss +36 -0
  28. package/src/app/chatlib/conversation-detail/message/frame/frame.component.ts +2 -2
  29. package/src/app/chatlib/conversation-detail/message/html/html.component.ts +0 -1
  30. package/src/app/chatlib/conversation-detail/message/image/image.component.html +3 -2
  31. package/src/app/chatlib/conversation-detail/message/image/image.component.scss +17 -5
  32. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +1 -1
  33. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +3 -2
  34. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +16 -6
  35. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -3
  36. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +2 -0
  37. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +78 -52
  38. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +63 -20
  39. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -10
  40. package/src/app/components/canned-response/canned-response.component.html +9 -9
  41. package/src/app/components/canned-response/canned-response.component.scss +14 -7
  42. package/src/app/components/canned-response/canned-response.component.ts +5 -4
  43. package/src/app/components/contacts-directory/contacts-directory.component.html +22 -26
  44. package/src/app/components/contacts-directory/contacts-directory.component.scss +8 -6
  45. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +64 -47
  46. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +98 -61
  47. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +24 -44
  48. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +116 -0
  49. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +39 -42
  50. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +67 -4
  51. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +82 -154
  52. package/src/app/components/conversation-info/info-content/info-content.component.html +23 -2
  53. package/src/app/components/conversation-info/info-content/info-content.component.ts +5 -6
  54. package/src/app/components/conversation-info/info-direct/info-direct.component.html +7 -14
  55. package/src/app/components/conversation-info/info-direct/info-direct.component.scss +23 -0
  56. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +1 -6
  57. package/src/app/components/conversation-info/info-group/info-group.component.html +44 -108
  58. package/src/app/components/conversation-info/info-group/info-group.component.scss +101 -61
  59. package/src/app/components/conversation-info/info-group/info-group.component.ts +1 -0
  60. package/src/app/components/conversation-info/info-support-group/info-support-group.component.html +2 -1
  61. package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +0 -1
  62. package/src/app/components/{ddp-header/ddp-header.component.html → conversations-list/header-conversations-list/header-conversations-list.component.html} +3 -3
  63. package/src/app/components/{ddp-header/ddp-header.component.scss → conversations-list/header-conversations-list/header-conversations-list.component.scss} +16 -4
  64. 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
  65. package/src/app/components/{ddp-header/ddp-header.component.ts → conversations-list/header-conversations-list/header-conversations-list.component.ts} +7 -16
  66. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +12 -0
  67. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +14 -0
  68. 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
  69. 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
  70. package/src/app/components/navbar/navbar.component.html +103 -0
  71. package/src/app/components/navbar/navbar.component.scss +249 -0
  72. package/src/app/components/{ddp-header/ddp-header.component.spec.ts → navbar/navbar.component.spec.ts} +6 -6
  73. package/src/app/components/navbar/navbar.component.ts +195 -0
  74. package/src/app/components/project-item/project-item.component.html +98 -149
  75. package/src/app/components/project-item/project-item.component.scss +43 -35
  76. package/src/app/components/project-item/project-item.component.ts +16 -4
  77. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +5 -5
  78. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +24 -13
  79. package/src/app/components/utils/user-presence/user-presence.component.html +7 -2
  80. package/src/app/components/utils/user-presence/user-presence.component.scss +35 -18
  81. package/src/app/components/utils/user-presence/user-presence.component.ts +6 -10
  82. package/src/app/{pages → modals}/create-canned-response/create-canned-response-routing.module.ts +0 -0
  83. package/src/app/{pages → modals}/create-canned-response/create-canned-response.module.ts +0 -0
  84. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.html +0 -0
  85. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.scss +0 -0
  86. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.spec.ts +0 -0
  87. package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.ts +13 -13
  88. package/src/app/{pages → modals}/loader-preview/loader-preview-routing.module.ts +0 -0
  89. package/src/app/{pages → modals}/loader-preview/loader-preview.module.ts +0 -0
  90. package/src/app/{pages → modals}/loader-preview/loader-preview.page.html +1 -1
  91. package/src/app/{pages → modals}/loader-preview/loader-preview.page.scss +4 -0
  92. package/src/app/{pages → modals}/loader-preview/loader-preview.page.spec.ts +0 -0
  93. package/src/app/{pages → modals}/loader-preview/loader-preview.page.ts +1 -2
  94. package/src/app/modals/send-email/send-email-routing.module.ts +17 -0
  95. package/src/app/modals/send-email/send-email.module.ts +31 -0
  96. package/src/app/modals/send-email/send-email.page.html +46 -0
  97. package/src/app/modals/send-email/send-email.page.scss +161 -0
  98. package/src/app/modals/send-email/send-email.page.spec.ts +24 -0
  99. package/src/app/modals/send-email/send-email.page.ts +89 -0
  100. package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
  101. package/src/app/pages/contacts-directory/contacts-directory.page.scss +47 -0
  102. package/src/app/pages/contacts-directory/contacts-directory.page.ts +2 -0
  103. package/src/app/pages/conversation-detail/conversation-detail.module.ts +0 -8
  104. package/src/app/pages/conversation-detail/conversation-detail.page.html +48 -27
  105. package/src/app/pages/conversation-detail/conversation-detail.page.scss +45 -254
  106. package/src/app/pages/conversation-detail/conversation-detail.page.ts +330 -138
  107. package/src/app/pages/conversations-list/conversations-list.page.html +11 -8
  108. package/src/app/pages/conversations-list/conversations-list.page.scss +18 -2
  109. package/src/app/pages/conversations-list/conversations-list.page.ts +26 -24
  110. package/src/app/pages/profile-info/profile-info.page.html +2 -4
  111. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
  112. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +42 -0
  113. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +1 -0
  114. package/src/app/services/canned-responses/canned-responses.service.ts +26 -0
  115. package/src/app/services/projects/projects.service.spec.ts +12 -0
  116. package/src/app/services/projects/projects.service.ts +43 -0
  117. package/src/app/services/tiledesk/tiledesk.service.ts +33 -17
  118. package/src/app/shared/shared.module.ts +24 -33
  119. package/src/app/utils/toast.spec.ts +7 -0
  120. package/src/app/utils/toast.ts +48 -0
  121. package/src/assets/i18n/ar.json +288 -265
  122. package/src/assets/i18n/az.json +24 -1
  123. package/src/assets/i18n/de.json +25 -2
  124. package/src/assets/i18n/en.json +25 -2
  125. package/src/assets/i18n/es.json +26 -3
  126. package/src/assets/i18n/fr.json +24 -1
  127. package/src/assets/i18n/it.json +24 -1
  128. package/src/assets/i18n/kk.json +25 -2
  129. package/src/assets/i18n/pt.json +25 -2
  130. package/src/assets/i18n/ru.json +24 -1
  131. package/src/assets/i18n/sr.json +287 -264
  132. package/src/assets/i18n/sv.json +25 -2
  133. package/src/assets/i18n/tr.json +25 -2
  134. package/src/assets/i18n/uk.json +25 -2
  135. package/src/assets/i18n/uz.json +24 -1
  136. package/src/assets/js/chat21client.js +1 -1
  137. package/src/assets/sounds/interface-start.mp3 +0 -0
  138. package/src/assets/sounds/wheep-wheep.mp3 +0 -0
  139. package/src/chat-config-mqtt-localhost.json +2 -2
  140. package/src/chat-config-native-mqtt.json +3 -0
  141. package/src/chat21-core/models/conversation.ts +0 -1
  142. package/src/chat21-core/models/projects.ts +27 -0
  143. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +7 -9
  144. package/src/chat21-core/providers/logger/customLogger.ts +1 -1
  145. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +7 -8
  146. package/src/chat21-core/utils/constants.ts +7 -1
  147. package/src/chat21-core/utils/convertRequestToConversation.ts +41 -0
  148. package/src/chat21-core/utils/user-typing/user-typing.component.html +8 -5
  149. package/src/chat21-core/utils/user-typing/user-typing.component.scss +87 -17
  150. package/src/chat21-core/utils/user-typing/user-typing.component.ts +12 -94
  151. package/src/chat21-core/utils/utils.ts +41 -11
  152. package/src/global.scss +59 -255
  153. package/src/index.html +0 -9
  154. package/src/variables.scss +30 -10
  155. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +0 -3
  156. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +0 -21
  157. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +0 -24
  158. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +0 -14
  159. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +0 -54
  160. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +0 -98
  161. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +0 -84
  162. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +0 -30
  163. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +0 -83
  164. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +0 -24
  165. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +0 -68
  166. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +0 -3
  167. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +0 -10
  168. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +0 -24
  169. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +0 -14
  170. package/src/app/components/conversation-detail/option-header/option-header.component.html +0 -13
  171. 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,15 +7,13 @@ 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
- import { Observable } from 'rxjs';
16
- import { checkPlatformIsMobile } from 'src/chat21-core/utils/utils';
17
17
 
18
18
  // Logger
19
19
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
@@ -43,37 +43,37 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
43
43
 
44
44
  @Input() loggedUser: UserModel;
45
45
  @Input() conversationWith: string;
46
+ @Input() channelType: string;
46
47
  @Input() tagsCannedFilter: any;
47
48
  @Input() tagsCannedCount: number;
48
49
  @Input() areVisibleCAR: boolean;
49
50
  @Input() supportMode: boolean;
50
- @Input() events: Observable<void>;
51
+ @Input() leadInfo: {lead_id: string, hasEmail: boolean, email: string, projectId: string};
51
52
  @Input() fileUploadAccept: string
52
53
  @Input() isOpenInfoConversation: boolean;
53
54
  @Input() translationMap: Map<string, string>;
54
55
  @Input() dropEvent: any;
55
56
  @Input() disableTextarea: boolean;
56
- @Output() eventChangeTextArea = new EventEmitter<object>();
57
- @Output() eventSendMessage = new EventEmitter<object>();
57
+ @Output() eventChangeTextArea = new EventEmitter<{msg: string, offsetHeight: number}>();
58
+ @Output() eventSendMessage = new EventEmitter<{msg: string, type: string, metadata?: Object, attributes?: Object}>();
58
59
  @Output() onClickOpenCannedResponses = new EventEmitter<boolean>();
59
60
  @Output() onPresentModalScrollToBottom = new EventEmitter<boolean>();
61
+ @Output() onOpenFooterSection = new EventEmitter<string>();
60
62
 
61
63
  public conversationEnabled = false;
62
64
  public messageString: string;
63
65
  public HAS_PASTED: boolean = false;
64
66
  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
67
  private logger: LoggerService = LoggerInstance.getInstance();
71
68
  public countClicks: number = 0;
72
- public IS_SUPPORT_GROUP_CONVERSATION: boolean;
73
69
  public IS_ON_MOBILE_DEVICE: boolean;
70
+
71
+ TYPE_SUPPORT_GROUP = TYPE_SUPPORT_GROUP;
74
72
  TYPE_MSG_TEXT = TYPE_MSG_TEXT;
75
73
  msg: string
76
74
 
75
+ section: string= 'chat'
76
+
77
77
  tooltipOptions = {
78
78
  'show-delay': 500,
79
79
  'tooltip-class': 'chat-tooltip',
@@ -88,7 +88,26 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
88
88
  addWhiteSpaceBefore: boolean;
89
89
  emojiPerLine: number = 9
90
90
  emojiColor: string ="#3880ff"
91
- emojiiCategories = [ 'recent', 'people', 'nature', 'activity']
91
+ emojiiCategories = [ 'recent', 'people', 'nature', 'activity'] //, 'custom']
92
+
93
+ customEmojis = [
94
+ {
95
+ name: 'Customer-Service',
96
+ shortNames: ['customer'],
97
+ text: 'ee',
98
+ emoticons: [],
99
+ keywords: ['github'],
100
+ imageUrl: 'https://tiledesk.com/wp-content/uploads/2022/11/Customer-Service.png',
101
+ },
102
+ {
103
+ name: 'Octocat',
104
+ shortNames: ['octocat'],
105
+ text: 'rr',
106
+ emoticons: [],
107
+ keywords: ['github'],
108
+ imageUrl: 'https://tiledesk.com/wp-content/uploads/2022/11/FAQ-Chatbot.png',
109
+ }
110
+ ];
92
111
  /**
93
112
  * Constructor
94
113
  * @param chooser
@@ -117,15 +136,8 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
117
136
  if (this.areVisibleCAR === false) {
118
137
  this.emojiPerLine = 7
119
138
  }
120
- // this.events.subscribe((cannedmessage) => {
121
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] events.subscribe cannedmessage ", cannedmessage);
122
- // })
123
139
 
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
140
  this.listenToNewCannedResponseCreated()
128
- this.getWindowWidth();
129
141
  this.isOnMobileDevice()
130
142
  }
131
143
 
@@ -146,32 +158,14 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
146
158
  // this.SHORT_TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORT')
147
159
  // this.SHORTER_TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORTER')
148
160
 
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
161
  }
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
162
  this.logger.log('[CONVS-DETAIL] - returnChangeTextArea ngOnChanges in [MSG-TEXT-AREA] this.tagsCannedFilter.length ', this.tagsCannedFilter.length)
166
163
 
167
164
  // use case drop
168
165
  if (this.dropEvent) {
169
166
  this.presentModal(this.dropEvent)
170
167
  }
171
- // if (this.isOpenInfoConversation === true) {
172
- // this.getIfTexareaIsEmpty('ngOnChanges')
173
- // this.getWindowWidth();
174
- // }
168
+
175
169
  }
176
170
 
177
171
  // ngAfterViewInit() {
@@ -205,36 +199,6 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
205
199
  }
206
200
  }
207
201
 
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
202
  // -------------------------------------------------------------------------------------------
239
203
  // Change the placeholder of the 'send message' textarea according to the width of the window
240
204
  // -------------------------------------------------------------------------------------------
@@ -242,42 +206,9 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
242
206
  onResize(event) {
243
207
  // this.getIfTexareaIsEmpty('onResize')
244
208
  // 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
209
  }
277
210
 
278
211
 
279
-
280
-
281
212
  onPaste(event: any) {
282
213
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] onPaste DROP EVENT ", this.dropEvent);
283
214
 
@@ -338,6 +269,16 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
338
269
 
339
270
  }
340
271
 
272
+ onOpenSection(section:string){
273
+ this.section = section
274
+ this.onOpenFooterSection.emit(section)
275
+ }
276
+
277
+ onOpenEmailModal(){
278
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] - onOpenEmailModal');
279
+ this.presentEmailModal()
280
+ }
281
+
341
282
 
342
283
  /**
343
284
  *
@@ -438,7 +379,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
438
379
  // messageString = metadata.name
439
380
  // }
440
381
 
441
- that.eventSendMessage.emit({ message: messageString, type: type, metadata: metadata });
382
+ that.eventSendMessage.emit({ msg: messageString, type: type, metadata: metadata });
442
383
 
443
384
  that.fileInput.nativeElement.value = '';
444
385
  this.dropEvent = null
@@ -458,6 +399,37 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
458
399
  return await modal.present();
459
400
  }
460
401
 
402
+ private async presentEmailModal(): Promise<any>{
403
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] openEmailModal');
404
+ const attributes = {
405
+ enableBackdropDismiss: false,
406
+ conversationWith: this.conversationWith,
407
+ msg: this.messageString,
408
+ email: this.leadInfo.email,
409
+ projectId: this.leadInfo.projectId,
410
+ translationMap: this.translationMap};
411
+ const modal: HTMLIonModalElement =
412
+ await this.modalController.create({
413
+ component: SendEmailModal,
414
+ componentProps: attributes,
415
+ swipeToClose: false,
416
+ backdropDismiss: true
417
+ });
418
+ modal.onDidDismiss().then((detail: any) => {
419
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] send Email detail returned-->', detail);
420
+ const form = detail.data.form
421
+ if (form&& form.message && form.message.trim() !== '') {
422
+ const text = '**' + form.subject + '**\r\n' + form.message
423
+ const attributes = {
424
+ channel: TYPE_MSG_EMAIL
425
+ }
426
+ this.eventSendMessage.emit({ msg: text, type: TYPE_MSG_TEXT, metadata: null, attributes: attributes });
427
+ }
428
+ });
429
+
430
+ return await modal.present();
431
+ }
432
+
461
433
 
462
434
  ionChange(e: any) {
463
435
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ionChange event ", e);
@@ -466,7 +438,8 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
466
438
  const message = e.detail.value
467
439
  this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange message ", message);
468
440
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange this.messageString ", this.messageString);
469
- const height = e.target.offsetHeight + 20; // nk added +20
441
+ const footerSelectionHeight = 33
442
+ const height = e.target.offsetHeight + footerSelectionHeight + 20; // nk added +20
470
443
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange text-area height ", height);
471
444
  // this.getIfTexareaIsEmpty('ionChange')
472
445
  try {
@@ -590,7 +563,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
590
563
  this.messageString = '';
591
564
  // text = text.replace(/(\r\n|\n|\r)/gm, '');
592
565
  if (text && text.trim() !== '') {
593
- this.eventSendMessage.emit({ message: text, type: TYPE_MSG_TEXT });
566
+ this.eventSendMessage.emit({ msg: text, type: TYPE_MSG_TEXT });
594
567
  }
595
568
  }
596
569
 
@@ -696,15 +669,14 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
696
669
 
697
670
  @HostListener('document:keydown', ['$event'])
698
671
  handleKeyboardEvent(event: KeyboardEvent) {
699
- this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] handleKeyboardEvent event.key ", event);
672
+ // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] handleKeyboardEvent event.key ", event);
700
673
  // Note: on mac keyboard "metakey" matches "cmd"
701
-
674
+
702
675
  //do not move cursor on ArrowDown/ArrowUp
703
- if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && !event.shiftKey) {
676
+ if ((event.key === 'ArrowDown' || event.key === 'ArrowUp')&& !event.shiftKey) {
704
677
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] HAS PRESSED event.key', event.key);
705
678
  event.preventDefault();
706
679
  }
707
-
708
680
  if (event.key === 'Enter' && event.altKey || event.key === 'Enter' && event.ctrlKey || event.key === 'Enter' && event.metaKey) {
709
681
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] HAS PRESSED COMBO KEYS this.messageString', this.messageString);
710
682
  if (this.messageString !== undefined && this.messageString.trim() !== '') {
@@ -715,48 +687,4 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
715
687
 
716
688
  }
717
689
 
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
690
  }
@@ -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
  }