@chat21/chat21-ionic 3.0.61-rc8 → 3.0.61

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 (89) hide show
  1. package/CHANGELOG.md +71 -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 +3 -2
  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 +65 -52
  32. package/src/app/components/sidebar/sidebar.component.scss +23 -0
  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 +20 -3
  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 +38 -2
  73. package/src/assets/i18n/tr.json +37 -1
  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-template.json +5 -4
  85. package/src/chat-config.json +1 -0
  86. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +8 -3
  87. package/src/chat21-core/utils/constants.ts +2 -0
  88. package/src/chat21-core/utils/utils-message.ts +19 -0
  89. package/src/global.scss +33 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.61
4
+ - Deploys in production
5
+
6
+ ### 3.0.61-rc26
7
+ - Fixes the bug: the conversation detail is not opened if the URL contains round brackets
8
+
9
+ ### 3.0.61-rc25
10
+ - Handles the case that in the storage the value of the "last_project" key is undefined
11
+
12
+ ### 3.0.61-rc24
13
+ - Handles the "writeToButton" and the 'archivedButton' environment variables if are returned as a string
14
+ - Adds the "authPersistence" key in the chat-config-template.json, chat-config.json and env.sample files
15
+
16
+ ### 3.0.61-rc23
17
+ - 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)
18
+ - Fixes the position of the emoji selection window pop up when the canned responses button is not visible
19
+
20
+ ### 3.0.61-rc22
21
+ - Minor improvements
22
+
23
+ ### 3.0.61-rc21
24
+ - Removes cordova-plugin-device
25
+
26
+ ### 3.0.61-rc20
27
+ - Updates dependencies
28
+
29
+ ### 3.0.61-rc19
30
+ - Merge branch 'features/new-sidebar'
31
+
32
+ ### 3.0.61-rc18
33
+ - Fix bugs: in the teammate settings drawer the logout button area is too large
34
+ - Fixed the bug: in the detail of the conversation the button messages are not aligned with the other messages
35
+
36
+ ### 3.0.61-rc16
37
+ - Does not allow teammates with agent role to access the "settings sidebar"
38
+
39
+ ### 3.0.61-rc15
40
+ - Increase the size of the emoji and remove the background color when it is sent or received without text
41
+ - Adds the ability to open sidebar menu items in a new tab by combining left mouse button + CMD keyboard key
42
+
43
+ ### 3.0.61-rc14
44
+ - Fixes the bug: the page to which the sidebar Settings menu item redirects is not correct for team members with agent role
45
+ - Fixes the bug: right clicking on the sidebar menu items doesn't show the context menu
46
+
47
+ ### 3.0.61-rc12
48
+ - Improves the alignment of left sidebar menu item icons
49
+ - Adds the ability to add a message as a canned response
50
+ - Hides the "Open canned responses" button if the "supportMode" environment variable is set to false
51
+ - Fixes the bug: "Settings" menu item in the left sidebar redirects to the "Canned responses" page instead of the "Widget" page
52
+ - Adds the ability to add a new canned response
53
+ - Fixes the bug: "Resolve conversation" from conversation detail header doesn't work on mobile
54
+ - Adds the ability to insert emoji in the message text
55
+ - Fixes the bug: on iOS mobile devices in the conversation detail the requester's avatar is not vertically aligned
56
+ - 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
57
+ - Fixes the bug: in the "Create canned response" modal window the "Add personalisation" menu does not always work
58
+ - Adds the chat version number to the teammate details drawer
59
+ - Makes the right sidebar "Settings" menu item visible to teammates with agent role
60
+
61
+ ### 3.0.61-rc11
62
+ - Fixed the bug: the "Resolve" button is displayed in the header of the details of the archived conversations
63
+ - Fixed the bug: in the header of the conversation detail the "Resolve" button remains active even after resolving the conversation
64
+ - Adds the ability to create a ticket
65
+ - Adds tooltips to the buttons available in the header of the conversation list
66
+ - Change the text of the "Conversations" menu item in the left sidebar to "Monitor"
67
+
68
+ ### 3.0.61-rc10
69
+ - Fixes the bug: the Analytics icon of the left sidebar is not displayed
70
+
71
+ ### 3.0.61-rc9
72
+ - Fixes the bug: the Apps icon of the left sidebar is not displayed
73
+
3
74
  ### 3.0.61-rc8
4
75
  - Changes the icon of the "Conversations" menu item to the left sidebar
5
76
  - Adds Serbian language
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-rc8",
3
+ "version": "3.0.61",
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>