@chat21/chat21-ionic 3.0.61-rc7 → 3.0.62-rc2

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 (90) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +6 -0
  3. package/angular.json +2 -0
  4. package/config.xml +0 -1
  5. package/deploy_pre.sh +1 -1
  6. package/deploy_prod.sh +1 -1
  7. package/env.sample +1 -1
  8. package/package.json +4 -4
  9. package/src/app/app-routing.module.ts +15 -0
  10. package/src/app/app.component.ts +12 -9
  11. package/src/app/app.module.ts +11 -3
  12. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +36 -25
  13. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +160 -50
  14. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +108 -18
  15. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +21 -36
  16. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
  17. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +35 -40
  18. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
  19. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
  20. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +7 -1
  21. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +2 -0
  22. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +142 -71
  23. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +57 -20
  24. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +32 -9
  25. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +98 -24
  26. package/src/app/components/ddp-header/ddp-header.component.html +9 -2
  27. package/src/app/components/ddp-header/ddp-header.component.ts +93 -18
  28. package/src/app/components/project-item/project-item.component.html +1 -1
  29. package/src/app/components/project-item/project-item.component.scss +1 -1
  30. package/src/app/components/project-item/project-item.component.ts +3 -3
  31. package/src/app/components/sidebar/sidebar.component.html +70 -58
  32. package/src/app/components/sidebar/sidebar.component.scss +21 -2
  33. package/src/app/components/sidebar/sidebar.component.ts +74 -26
  34. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +20 -9
  35. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +30 -5
  36. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +24 -8
  37. package/src/app/pages/conversation-detail/conversation-detail.module.ts +5 -1
  38. package/src/app/pages/conversation-detail/conversation-detail.page.html +19 -10
  39. package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
  40. package/src/app/pages/conversation-detail/conversation-detail.page.ts +229 -389
  41. package/src/app/pages/conversations-list/conversations-list.page.ts +646 -454
  42. package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
  43. package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
  44. package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
  45. package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
  46. package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
  47. package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
  48. package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
  49. package/src/app/pages/create-requester/create-requester.module.ts +28 -0
  50. package/src/app/pages/create-requester/create-requester.page.html +67 -0
  51. package/src/app/pages/create-requester/create-requester.page.scss +30 -0
  52. package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
  53. package/src/app/pages/create-requester/create-requester.page.ts +138 -0
  54. package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
  55. package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
  56. package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
  57. package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
  58. package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
  59. package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
  60. package/src/app/pages/loader-preview/loader-preview.page.ts +2 -11
  61. package/src/app/pages/profile-info/profile-info.page.html +2 -2
  62. package/src/app/pages/profile-info/profile-info.page.scss +12 -1
  63. package/src/app/services/tiledesk/tiledesk.service.ts +190 -0
  64. package/src/app/shared/shared.module.ts +1 -1
  65. package/src/assets/i18n/de.json +37 -1
  66. package/src/assets/i18n/en.json +37 -1
  67. package/src/assets/i18n/es.json +38 -2
  68. package/src/assets/i18n/fr.json +38 -2
  69. package/src/assets/i18n/it.json +38 -2
  70. package/src/assets/i18n/pt.json +38 -2
  71. package/src/assets/i18n/ru.json +38 -2
  72. package/src/assets/i18n/sr.json +265 -0
  73. package/src/assets/i18n/tr.json +38 -3
  74. package/src/assets/images/default-avatar-x-select.png +0 -0
  75. package/src/assets/images/priority_icons/high.svg +3 -0
  76. package/src/assets/images/priority_icons/high_v2.svg +14 -0
  77. package/src/assets/images/priority_icons/low.svg +10 -0
  78. package/src/assets/images/priority_icons/low_v2.svg +14 -0
  79. package/src/assets/images/priority_icons/medium.svg +16 -0
  80. package/src/assets/images/priority_icons/medium_v2.svg +11 -0
  81. package/src/assets/images/priority_icons/urgent.svg +4 -0
  82. package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
  83. package/src/chat-config-mqtt.json +25 -16
  84. package/src/chat-config-pre-test.json +1 -1
  85. package/src/chat-config-template.json +5 -4
  86. package/src/chat-config.json +1 -0
  87. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +8 -3
  88. package/src/chat21-core/utils/constants.ts +3 -1
  89. package/src/chat21-core/utils/utils-message.ts +19 -0
  90. package/src/global.scss +33 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.62-rc2
4
+ - Fixed bug: in the teammate drawer if the full name is too long it overlaps the email
5
+ - Fixed bug: in the teammate drawer if the email is too long it exceeds the width of the drawer
6
+
7
+ ### 3.0.62-rc1
8
+ - Change the URL of the environment variable "dashboardUrl" from absolute to relative
9
+
10
+ ### 3.0.61
11
+ - Deploys in production
12
+
13
+ ### 3.0.61-rc26
14
+ - Fixes the bug: the conversation detail is not opened if the URL contains round brackets
15
+
16
+ ### 3.0.61-rc25
17
+ - Handles the case that in the storage the value of the "last_project" key is undefined
18
+
19
+ ### 3.0.61-rc24
20
+ - Handles the "writeToButton" and the 'archivedButton' environment variables if are returned as a string
21
+ - Adds the "authPersistence" key in the chat-config-template.json, chat-config.json and env.sample files
22
+
23
+ ### 3.0.61-rc23
24
+ - Handles the "supportMode" environment variable if returned as a string (fixes the Docker image bugs: part of the conversation details go under the sidebar in mobile mode, the "add message as canned response" button is not displayed)
25
+ - Fixes the position of the emoji selection window pop up when the canned responses button is not visible
26
+
27
+ ### 3.0.61-rc22
28
+ - Minor improvements
29
+
30
+ ### 3.0.61-rc21
31
+ - Removes cordova-plugin-device
32
+
33
+ ### 3.0.61-rc20
34
+ - Updates dependencies
35
+
36
+ ### 3.0.61-rc19
37
+ - Merge branch 'features/new-sidebar'
38
+
39
+ ### 3.0.61-rc18
40
+ - Fix bugs: in the teammate settings drawer the logout button area is too large
41
+ - Fixed the bug: in the detail of the conversation the button messages are not aligned with the other messages
42
+
43
+ ### 3.0.61-rc16
44
+ - Does not allow teammates with agent role to access the "settings sidebar"
45
+
46
+ ### 3.0.61-rc15
47
+ - Increase the size of the emoji and remove the background color when it is sent or received without text
48
+ - Adds the ability to open sidebar menu items in a new tab by combining left mouse button + CMD keyboard key
49
+
50
+ ### 3.0.61-rc14
51
+ - Fixes the bug: the page to which the sidebar Settings menu item redirects is not correct for team members with agent role
52
+ - Fixes the bug: right clicking on the sidebar menu items doesn't show the context menu
53
+
54
+ ### 3.0.61-rc12
55
+ - Improves the alignment of left sidebar menu item icons
56
+ - Adds the ability to add a message as a canned response
57
+ - Hides the "Open canned responses" button if the "supportMode" environment variable is set to false
58
+ - Fixes the bug: "Settings" menu item in the left sidebar redirects to the "Canned responses" page instead of the "Widget" page
59
+ - Adds the ability to add a new canned response
60
+ - Fixes the bug: "Resolve conversation" from conversation detail header doesn't work on mobile
61
+ - Adds the ability to insert emoji in the message text
62
+ - Fixes the bug: on iOS mobile devices in the conversation detail the requester's avatar is not vertically aligned
63
+ - Fixes the bug: on mobile devices in the "info profile" modal window the version number is not visible because it is on a white background
64
+ - Fixes the bug: in the "Create canned response" modal window the "Add personalisation" menu does not always work
65
+ - Adds the chat version number to the teammate details drawer
66
+ - Makes the right sidebar "Settings" menu item visible to teammates with agent role
67
+
68
+ ### 3.0.61-rc11
69
+ - Fixed the bug: the "Resolve" button is displayed in the header of the details of the archived conversations
70
+ - Fixed the bug: in the header of the conversation detail the "Resolve" button remains active even after resolving the conversation
71
+ - Adds the ability to create a ticket
72
+ - Adds tooltips to the buttons available in the header of the conversation list
73
+ - Change the text of the "Conversations" menu item in the left sidebar to "Monitor"
74
+
75
+ ### 3.0.61-rc10
76
+ - Fixes the bug: the Analytics icon of the left sidebar is not displayed
77
+
78
+ ### 3.0.61-rc9
79
+ - Fixes the bug: the Apps icon of the left sidebar is not displayed
80
+
81
+ ### 3.0.61-rc8
82
+ - Changes the icon of the "Conversations" menu item to the left sidebar
83
+ - Adds Serbian language
84
+
3
85
  ### 3.0.61-rc7
4
86
  - Fixes the bug: while loading the app, the conversation list changes size and becomes wider
5
87
  - Changes the style of the left sidebar
package/README.md CHANGED
@@ -36,6 +36,12 @@ In progress git
36
36
  * A Firebase project. Create one free on `https://firebase.google.com`
37
37
  * "Chat21 Firebase cloud functions" installed. Instructions:`https://github.com/chat21/chat21-cloud-functions`
38
38
 
39
+ # Run Tiledesk with Docker Compose
40
+
41
+ Do you want to install all the Tiledesk components on your server with just one click?
42
+ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/tiledesk-deployment/blob/master/docker-compose/README.md)
43
+
44
+
39
45
  # Installation #
40
46
  * Install the latest stable release. Check on Github page the last release under the Releases tab and then run
41
47
  - `git clone https://github.com/frontiere21/chat21-ionic.git --branch <LATEST-RELEASE-VERSION>`
package/angular.json CHANGED
@@ -43,6 +43,8 @@
43
43
  "styles": [
44
44
  "node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css",
45
45
  "node_modules/roboto-fontface/css/roboto/roboto-fontface.css",
46
+ "node_modules/@ng-select/ng-select/themes/default.theme.css",
47
+ "node_modules/@ctrl/ngx-emoji-mart/picker.css",
46
48
  {
47
49
  "input": "src/theme/variables.scss"
48
50
  },
package/config.xml CHANGED
@@ -106,7 +106,6 @@
106
106
  <variable name="ANDROID_SUPPORT_VERSION" value="27.+" />
107
107
  </plugin>
108
108
  <plugin name="cordova-plugin-chooser" spec="^1.3.2" />
109
- <plugin name="cordova-plugin-device" spec="^2.0.3" />
110
109
  <plugin name="cordova-plugin-ionic-keyboard" spec="^2.2.0" />
111
110
  <plugin name="cordova-plugin-ionic-webview" spec="^4.2.1">
112
111
  <variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
package/deploy_pre.sh CHANGED
@@ -32,7 +32,7 @@ ionic cordova build -c=pre browser --prod
32
32
  cp -p src/firebase-messaging-sw.js platforms/browser/www/
33
33
  cp -p src/manifest.json platforms/browser/www/
34
34
  cp -p src/chat-config.json platforms/browser/www/
35
-
35
+ # cp -p config.xml platforms/browser/www/
36
36
 
37
37
  ######### chat-ionic5 - the good one - publish in pre
38
38
  cd platforms/browser/www
package/deploy_prod.sh CHANGED
@@ -25,7 +25,7 @@ cp -p config.xml platforms/browser/www/
25
25
 
26
26
  ###### CHAT in prod
27
27
  cd platforms/browser/www
28
- aws s3 sync . s3://tiledesk-dashboard/v2/chat/
28
+ aws s3 sync . s3://tiledesk-console/v2/chat/
29
29
  aws s3 sync . s3://tiledesk-console/v2/chat/$version/
30
30
  cd ../../../
31
31
  # aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
package/env.sample CHANGED
@@ -13,7 +13,7 @@ LOG_LEVEL=INFO
13
13
  SUPPORT_MODE=false
14
14
  WRITE_TO_BUTTON=false,
15
15
  ARCHIVED_BUTTON=false,
16
-
16
+ AUTH_PERSISTENCE=LOCAL
17
17
  # For MQTT Chat Engine
18
18
  MQTT_APPID=tilechat
19
19
  MQTT_ENDPOINT=mqtt://localhost:15675/ws
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
- "version": "3.0.61-rc7",
3
+ "version": "3.0.62-rc2",
4
4
  "author": "Tiledesk SRL",
5
- "homepage": "https://ionicframework.com/",
5
+ "homepage": "https://tiledesk.com/",
6
6
  "scripts": {
7
7
  "ng": "ng",
8
8
  "start": "ng serve",
@@ -23,6 +23,7 @@
23
23
  "@angular/platform-browser": "~8.2.14",
24
24
  "@angular/platform-browser-dynamic": "~8.2.14",
25
25
  "@angular/router": "~8.2.14",
26
+ "@ctrl/ngx-emoji-mart": "^1.0.6",
26
27
  "@ionic-native/chooser": "^5.29.0",
27
28
  "@ionic-native/core": "^5.0.7",
28
29
  "@ionic-native/globalization": "^5.28.0",
@@ -33,6 +34,7 @@
33
34
  "@ionic/angular": "^5.0.7",
34
35
  "@ionic/storage": "^2.2.0",
35
36
  "@mdi/font": "^5.1.45",
37
+ "@ng-select/ng-select": "^3.7.3",
36
38
  "@ngx-translate/core": "^12.1.2",
37
39
  "@ngx-translate/http-loader": "^4.0.0",
38
40
  "angular2-moment": "^1.9.0",
@@ -42,7 +44,6 @@
42
44
  "cordova-browser": "^5.0.4",
43
45
  "cordova-ios": "6.1.1",
44
46
  "cordova-plugin-chooser": "^1.3.2",
45
- "cordova-plugin-device": "^2.0.3",
46
47
  "cordova-plugin-ionic-keyboard": "^2.2.0",
47
48
  "cordova-plugin-ionic-webview": "^4.2.1",
48
49
  "cordova-plugin-network-information": "^2.0.2",
@@ -95,7 +96,6 @@
95
96
  "plugins": {
96
97
  "cordova-plugin-whitelist": {},
97
98
  "cordova-plugin-statusbar": {},
98
- "cordova-plugin-device": {},
99
99
  "cordova-plugin-splashscreen": {},
100
100
  "cordova-plugin-ionic-webview": {
101
101
  "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
@@ -48,9 +48,24 @@ const routes: Routes = [
48
48
  {
49
49
  path: 'unassigned-conversations',
50
50
  loadChildren: () => import('./pages/unassigned-conversations/unassigned-conversations.module').then( m => m.UnassignedConversationsPageModule)
51
+ },
52
+ {
53
+ path: 'create-ticket',
54
+ loadChildren: () => import('./pages/create-ticket/create-ticket.module').then( m => m.CreateTicketPageModule)
55
+ },
56
+ {
57
+ path: 'create-requester',
58
+ loadChildren: () => import('./pages/create-requester/create-requester.module').then( m => m.CreateRequesterPageModule)
59
+ },
60
+ {
61
+ path: 'create-canned-response',
62
+ loadChildren: () => import('./pages/create-canned-response/create-canned-response.module').then( m => m.CreateCannedResponsePageModule)
51
63
  }
52
64
 
53
65
 
66
+
67
+
68
+
54
69
  // {
55
70
  // path: 'conversation-detail/:IDConv',
56
71
  // loadChildren: () => import('./pages/conversation-detail/conversation-detail.module').then( m => m.ConversationDetailPageModule)
@@ -268,7 +268,7 @@ export class AppComponent implements OnInit {
268
268
 
269
269
 
270
270
  saveInStorageNumberOfOpenedChatTab() {
271
- this.logger.log('Calling saveInStorageChatOpenedTab!');
271
+ // this.logger.log('Calling saveInStorageChatOpenedTab!');
272
272
 
273
273
  // https://jsfiddle.net/jjjs5wd3/3/å
274
274
  if (+localStorage.tabCount > 0) {
@@ -298,12 +298,13 @@ export class AppComponent implements OnInit {
298
298
  */
299
299
  ngOnInit() {
300
300
  const appconfig = this.appConfigProvider.getConfig();
301
- // console.log('[APP-COMP] appconfig', appconfig)
302
- if (appconfig && appconfig.supportMode) {
303
- this.SUPPORT_MODE = appconfig.supportMode
304
- // console.log('[APP-COMP] appconfig > SUPPORT_MODE', this.SUPPORT_MODE)
301
+ this.logger.log('[APP-COMP] ngOnInit appconfig', appconfig)
302
+ if (appconfig && appconfig.supportMode && (appconfig.supportMode === true || appconfig.supportMode === 'true' )) {
303
+ this.SUPPORT_MODE = true;
304
+ this.logger.log('[APP-COMP] appconfig > SUPPORT_MODE', this.SUPPORT_MODE)
305
305
  } else {
306
306
  this.SUPPORT_MODE = false;
307
+ this.logger.log('[APP-COMP] appconfig > SUPPORT_MODE', this.SUPPORT_MODE)
307
308
  }
308
309
  this.persistence = appconfig.authPersistence;
309
310
  this.appStorageService.initialize(environment.storage_prefix, this.persistence, '')
@@ -435,7 +436,7 @@ export class AppComponent implements OnInit {
435
436
  // this.logger.log('[APP-COMP] - X - initializeApp !!! CALLED-BY: ', calledby);
436
437
  // console.log('[APP-COMP] appconfig platform is cordova: ', this.platform.is('cordova'))
437
438
 
438
- if (!this.platform.is('cordova')) {
439
+ if (!this.platform.is('desktop')) {
439
440
  this.splashScreen.show();
440
441
  }
441
442
  this.tabTitle = document.title;
@@ -723,6 +724,7 @@ export class AppComponent implements OnInit {
723
724
 
724
725
  this.logger.log('[APP-COMP] checkPlatformIsMobile', checkPlatformIsMobile());
725
726
  this.platformIs = PLATFORM_MOBILE;
727
+ this.logger.log('[APP-COMP] this.platformIs', this.platformIs);
726
728
  const IDConv = this.route.snapshot.firstChild.paramMap.get('IDConv');
727
729
 
728
730
  // console.log('[APP-COMP] platformIs', this.platformIs);
@@ -736,7 +738,7 @@ export class AppComponent implements OnInit {
736
738
  this.chatManager.startApp();
737
739
  this.logger.log('[APP-COMP] checkPlatformIsMobile', checkPlatformIsMobile());
738
740
  this.platformIs = PLATFORM_DESKTOP;
739
- // console.log('[APP-COMP] platformIs', this.platformIs);
741
+ this.logger.log('[APP-COMP] platformIs', this.platformIs);
740
742
  // console.log('[APP-COMP] PLATFORM', PLATFORM_DESKTOP, 'route.snapshot', this.route.snapshot);
741
743
  this.logger.log('[APP-COMP] PLATFORM_DESKTOP ', this.navService);
742
744
 
@@ -752,8 +754,8 @@ export class AppComponent implements OnInit {
752
754
  if (IDConv && FullNameConv) {
753
755
  pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
754
756
  }
755
-
756
- this.router.navigateByUrl(pageUrl);
757
+ // replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
758
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
757
759
 
758
760
 
759
761
  // const DASHBOARD_URL = this.appConfigProvider.getConfig().DASHBOARD_URL;
@@ -1005,6 +1007,7 @@ export class AppComponent implements OnInit {
1005
1007
  let platformIsNow = PLATFORM_DESKTOP;
1006
1008
  if (checkPlatformIsMobile()) {
1007
1009
  platformIsNow = PLATFORM_MOBILE;
1010
+ this.logger.log('onResize platformIsNow ', platformIsNow)
1008
1011
  }
1009
1012
  if (!this.platformIs || this.platformIs === '') {
1010
1013
  this.platformIs = platformIsNow;
@@ -82,7 +82,9 @@ import { ConversationListPageModule } from './pages/conversations-list/conversat
82
82
  import { ConversationDetailPageModule } from './pages/conversation-detail/conversation-detail.module';
83
83
  import { LoginPageModule } from './pages/authentication/login/login.module';
84
84
  import { LoaderPreviewPageModule } from './pages/loader-preview/loader-preview.module';
85
-
85
+ import { CreateTicketPageModule } from './pages/create-ticket/create-ticket.module';
86
+ import { CreateRequesterPageModule } from './pages/create-requester/create-requester.module';
87
+ import { CreateCannedResponsePageModule } from './pages/create-canned-response/create-canned-response.module';
86
88
  // UTILS
87
89
  import { ScrollbarThemeModule } from './utils/scrollbar-theme.directive';
88
90
  import { SharedModule } from 'src/app/shared/shared.module';
@@ -90,6 +92,8 @@ import { ConversationInfoModule } from 'src/app/components/conversation-info/con
90
92
 
91
93
 
92
94
  // Directives
95
+ // import { HtmlEntitiesEncodePipe } from './directives/html-entities-encode.pipe';
96
+ // import { MarkedPipe } from './directives/marked.pipe';
93
97
 
94
98
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
95
99
  import { Network } from '@ionic-native/network/ngx';
@@ -97,6 +101,7 @@ import { ConnectionService } from 'ng-connection-service';
97
101
  import { WebSocketJs } from './services/websocket/websocket-js';
98
102
  import { UnassignedConversationsPageModule } from './pages/unassigned-conversations/unassigned-conversations.module';
99
103
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
104
+
100
105
  // FACTORIES
101
106
  export function createTranslateLoader(http: HttpClient) {
102
107
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
@@ -245,7 +250,7 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
245
250
 
246
251
  @NgModule({
247
252
  declarations: [
248
- AppComponent,
253
+ AppComponent
249
254
  ],
250
255
  entryComponents: [
251
256
  ],
@@ -280,7 +285,10 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
280
285
  SharedModule,
281
286
  ConversationInfoModule,
282
287
  NgxLinkifyjsModule.forRoot(),
283
- LoaderPreviewPageModule
288
+ LoaderPreviewPageModule,
289
+ CreateTicketPageModule,
290
+ CreateRequesterPageModule,
291
+ CreateCannedResponsePageModule
284
292
  ],
285
293
  bootstrap: [AppComponent],
286
294
 
@@ -54,12 +54,23 @@
54
54
  <!-- ----------------------------------------------------------- -->
55
55
 
56
56
  <div class="conversation-wpr" style="height: 100%;">
57
- <div *ngFor="let message of messages; let i = index">
57
+ <div *ngFor="let message of messages; let i = index; let first = first; trackBy: trackByFn">
58
+
59
+ <ng-container *ngIf="first || (messages[i - 1].timestamp | date:'d') !== (message.timestamp | date:'d')">
60
+ <div class="long-date-divider-wpr">
61
+ <div class="long-date-divider-border-b"></div>
62
+ <div class="long-date-divider">
63
+ <!-- {{message.timestamp | date: 'longDate' : 'it'}} -->
64
+ {{message.timestamp | amDateFormat:'LL'}}
65
+
66
+ </div>
67
+ <div class="long-date-divider-border-b"></div>
68
+ </div>
69
+ </ng-container>
58
70
 
59
71
  <div class="align-center" class="ion-text-center" *ngIf="messageType(MESSAGE_TYPE_INFO, message)"
60
72
  class="msg_info_container">
61
- <chat-info-message class="messages"
62
- [message]="message">
73
+ <chat-info-message class="messages" [message]="message">
63
74
  </chat-info-message>
64
75
  </div>
65
76
 
@@ -67,13 +78,15 @@
67
78
  <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_MINE, message)" class="msg_container base_sent">
68
79
 
69
80
  <!--backgroundColor non viene ancora usato -->
70
- <chat-bubble-message [ngClass]="{'has-metadata': (isImage(message) || isFrame(message))}"
71
- class="messages msg_sent" id="message_msg_sent"
72
- [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}" [message]="message"
73
- [textColor]="'col-msg-sent'"
74
- (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
75
- (onAfterMessageRender)="returnOnAfterMessageRender($event)"
76
- (onImageRendered)="onImageRenderedFN($event)">
81
+
82
+ <chat-bubble-message style="position: relative;"
83
+ [ngClass]="{'has-metadata': (isImage(message) || isFrame(message))}" class="messages msg_sent"
84
+ id="message_msg_sent" [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}"
85
+ [message]="message" [textColor]="'col-msg-sent'" (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
86
+ (onAfterMessageRender)="returnOnAfterMessageRender($event)" (onImageRendered)="onImageRenderedFN($event)"
87
+ [addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText" [areVisibleCAR]="areVisibleCAR"
88
+ [support_mode]="support_mode"
89
+ [class.emoticon]="message?.emoticon">
77
90
  </chat-bubble-message>
78
91
 
79
92
  <!-- icon status message -->
@@ -98,32 +111,30 @@
98
111
  </chat-avatar-image> -->
99
112
 
100
113
  <!--backgroundColor non viene ancora usato -->
101
-
102
- <chat-bubble-message [ngClass]="{'has-metadata': (isImage(message) || isFrame(message))}" class="messages msg_receive" id="message_msg_receive"
103
- [message]="message"
104
- [textColor]="'black'"
114
+
115
+ <chat-bubble-message style="position: relative;"
116
+ [ngClass]="{'has-metadata': (isImage(message) || isFrame(message))}" class="messages msg_receive"
117
+ id="message_msg_receive" [message]="message" [textColor]="'black'"
105
118
  (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
106
- (onAfterMessageRender)="returnOnAfterMessageRender($event)"
107
- (onImageRendered)="onImageRenderedFN($event)">
119
+ (onAfterMessageRender)="returnOnAfterMessageRender($event)" (onImageRendered)="onImageRenderedFN($event)"
120
+ [addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText" [areVisibleCAR]="areVisibleCAR"
121
+ [support_mode]="support_mode"
122
+ [class.emoticon]="message?.emoticon">
108
123
  </chat-bubble-message>
109
124
  </div>
110
125
 
111
126
  <!-- message type:: button && -->
112
- <div *ngIf="message?.attributes && message?.attributes?.attachment " class="slide-in-left" >
113
- <chat-message-attachment
114
- style="height: 100%; display: block;"
115
- [message]="message"
116
- [isLastMessage] = "isLastMessage(message?.uid)"
117
- [stylesMap]="stylesMap"
118
- (onAttachmentButtonClicked)="returnOnAttachmentButtonClicked($event)">
127
+ <div *ngIf="message?.attributes && message?.attributes?.attachment " class="slide-in-left">
128
+ <chat-message-attachment style="height: 100%; display: block;" [message]="message"
129
+ [isLastMessage]="isLastMessage(message?.uid)" [stylesMap]="stylesMap"
130
+ (onAttachmentButtonClicked)="returnOnAttachmentButtonClicked($event)">
119
131
  </chat-message-attachment>
120
132
  </div>
121
133
  </div>
122
134
  <!-- (fileType === 'file' && uploadProgress !== 100) -->
123
135
 
124
136
  <!-- uploadProgress -> {{ uploadProgress }} -->
125
- <div *ngIf="uploadProgress !== 100" class="msg_container base_sent"
126
- style="margin-right: 20px;">
137
+ <div *ngIf="uploadProgress !== 100" class="msg_container base_sent" style="margin-right: 20px;">
127
138
  <div class="messages msg_sent">
128
139
  <div class="spinner">
129
140
  <div class="bounce1"></div>