@chat21/chat21-ionic 3.0.60-rc2 → 3.0.60-rc6

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 (29) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/deploy_pre.sh +45 -6
  3. package/deploy_prod.sh +34 -9
  4. package/package.json +1 -1
  5. package/src/app/app.module.ts +1 -1
  6. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +10 -8
  7. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +10 -6
  8. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +34 -3
  9. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +7 -5
  10. package/src/app/components/image-viewer/image-viewer.component.scss +2 -2
  11. package/src/app/components/project-item/project-item.component.html +114 -114
  12. package/src/app/components/project-item/project-item.component.scss +145 -83
  13. package/src/app/components/project-item/project-item.component.ts +40 -19
  14. package/src/app/pages/conversation-detail/conversation-detail.module.ts +2 -1
  15. package/src/app/pages/conversation-detail/conversation-detail.page.html +7 -3
  16. package/src/app/pages/conversation-detail/conversation-detail.page.ts +53 -33
  17. package/src/app/pages/conversations-list/conversations-list.page.html +11 -5
  18. package/src/app/pages/conversations-list/conversations-list.page.scss +12 -1
  19. package/src/app/pages/conversations-list/conversations-list.page.ts +24 -6
  20. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +16 -11
  21. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +157 -63
  22. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +51 -16
  23. package/src/app/shared/shared.module.ts +3 -3
  24. package/src/assets/i18n/en.json +19 -7
  25. package/src/assets/i18n/es.json +205 -0
  26. package/src/assets/i18n/it.json +37 -33
  27. package/src/chat-config-mqtt.json +2 -1
  28. package/src/chat-config-pre-test.json +1 -0
  29. package/src/global.scss +4 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.60-rc6
4
+ - Fixes the bug: push notifications are initialized even if the "pushEngine" configuration variable is set to "none"
5
+ - Adds spanish language
6
+
7
+ ### 3.0.60-rc5
8
+ - Change the icon and link of the "pin button" in the item at the top of the conversation list (now opens the list of projects and not the list of new conversations)
9
+ - Add a tooltip on the switch button to change the available/unavailable status
10
+ - Adds a link to the to the new conversations at the icon that display the number of new conversations
11
+
12
+ ### 3.0.60-rc4
13
+ - Translates the canned response displayed when there are not canned responses
14
+
15
+ ### 3.0.60-rc3
16
+ - Enhances the item at the top of the conversation list that displays the number of new conversations of a selected project
17
+ - Fixes the bug: the loading spinner is sometimes not displayed when loading the list of unassigned conversations
18
+ - Displays as canned response "Test" when no canned responses are available
19
+ - Adds the cursor to the "Send message" textarea after the "Canned responses" button has been clicked
20
+
3
21
  ### 3.0.60-rc2
4
22
  - Fixes the bug: in AppConfigProvider the "wsUrl" is incorrect (window.location.port is missing)
5
23
 
package/deploy_pre.sh CHANGED
@@ -24,21 +24,60 @@ sed -i -e "s/$URL_VER/g" src/utils/constants.ts
24
24
 
25
25
  # ng build --prod --base-href /$NEW_BUILD/
26
26
  #ionic cordova build browser --prod
27
-
28
- ionic cordova platform add browser --save
29
27
  #ionic cordova build browser --prod --release
30
- ionic cordova build --env=pre browser #--prod --verbose
28
+ # ionic cordova build --env=pre browser --prod #--verbose
31
29
 
30
+ ionic cordova platform add browser --save
31
+ 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 config.xml platforms/browser/www/
36
+
37
+ ######### chat-ionic5 - the good one - publish in pre
36
38
  cd platforms/browser/www
37
39
  aws s3 sync . s3://tiledesk-dashboard-pre/chat-ionic5/$version/
38
40
  aws s3 sync . s3://tiledesk-dashboard-pre/chat-ionic5/
39
41
  cd ../../../
40
42
 
41
- #aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
43
+ aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
42
44
 
43
45
  echo new version deployed on s3://tiledesk-dashboard-pre/chat-ionic5/$version/
44
- echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-dashboard-pre/chat-ionic5/$version/index.html
46
+ echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-dashboard-pre/chat-ionic5/$version/index.html
47
+ echo available on https://support-pre.tiledesk.com/chat-ionic5/$version/index.html
48
+ echo available on https://support-pre.tiledesk.com/chat-ionic5/index.html
49
+
50
+ ######### chat-ionic5-test - publish in pre with the projects right panel
51
+ # cd platforms/browser/www
52
+ # aws s3 sync . s3://tiledesk-dashboard-pre/chat-ionic5-test/$version/
53
+ # aws s3 sync . s3://tiledesk-dashboard-pre/chat-ionic5-test/
54
+ # cd ../../../
55
+
56
+ # aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
57
+
58
+ # echo new version deployed on s3://tiledesk-dashboard-pre/chat-ionic5-test/$version/
59
+ # echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-dashboard-pre/chat-ionic5-test/$version/index.html
60
+ # echo available on https://support-pre.tiledesk.com/chat-ionic5-test/$version/index.html
61
+ # echo available on https://support-pre.tiledesk.com/chat-ionic5-test/index.html
62
+
63
+
64
+ ####### chat ionic MQTT in pre da aggiungere in deploy_pre.sh
65
+ # cd platforms/browser/www
66
+ # aws s3 sync . s3://tiledesk-dashboard-pre/native-mqtt/chat-ionic5/
67
+ # aws s3 sync . s3://tiledesk-dashboard-pre/native-mqtt/chat-ionic5/$version
68
+ # cd ../../../
69
+ # echo new version deployed on s3://tiledesk-dashboard-pre/native-mqtt/chat-ionic5/
70
+ # echo new version deployed on s3://tiledesk-dashboard-pre/native-mqtt/chat-ionic5/$version
71
+ # echo http://tiledesk-dashboard-pre.s3-eu-west-1.amazonaws.com/native-mqtt/chat-ionic5/index.html
72
+ # echo http://tiledesk-dashboard-pre.s3-eu-west-1.amazonaws.com/native-mqtt/chat-ionic5/$version/index.html
73
+
74
+
75
+ ####### chat ionic FIREBASE in pre da aggiungere in deploy_pre.sh
76
+ # cd platforms/browser/www
77
+ # aws s3 sync . s3://tiledesk-dashboard-pre/chat5/
78
+ # aws s3 sync . s3://tiledesk-dashboard-pre/chat5/$version
79
+ # cd ../../../
80
+ # echo new version deployed on s3://tiledesk-dashboard-pre/chat5/$version
81
+ # echo new version deployed on s3://tiledesk-dashboard-pre/chat5/
82
+ # echo available on http://support-pre.tiledesk.com/chat5/index.html
83
+ # echo available on http://support-pre.tiledesk.com/chat5/$version/index.html
package/deploy_prod.sh CHANGED
@@ -1,4 +1,4 @@
1
- npm version patch
1
+ # npm version patch
2
2
  version=`node -e 'console.log(require("./package.json").version)'`
3
3
  echo "version $version"
4
4
 
@@ -12,22 +12,47 @@ echo 'URL_VER: ---->'$URL_VER
12
12
  # npm publish
13
13
  # fi
14
14
 
15
- # sed -i -e "s/$start$ver.$build/$start$NEW_VER.$NEW_BUILD/g" src/utils/constants.ts
16
15
  sed -i -e "s/$URL_VER/g" src/utils/constants.ts
16
+
17
17
  ionic cordova platform add browser --save
18
18
  #ionic cordova build --env=prod browser -- --base-href /www/ --prod
19
19
  ionic cordova build --env=prod browser --prod
20
20
  cp -p src/firebase-messaging-sw.js platforms/browser/www/
21
21
  cp -p src/manifest.json platforms/browser/www/
22
22
  cp -p src/chat-config.json platforms/browser/www/
23
+ cp -p config.xml platforms/browser/www/
24
+
23
25
 
26
+ ###### CHAT in prod
24
27
  cd platforms/browser/www
25
- #aws s3 sync . s3://tiledesk-dashboard/chat/
26
- aws s3 sync . s3://tiledesk-console/v2/chat-ionic5/
27
- aws s3 sync . s3://tiledesk-console/v2/chat-ionic5/$version/
28
+ aws s3 sync . s3://tiledesk-console/v2/chat/
29
+ aws s3 sync . s3://tiledesk-console/v2/chat/$version/
28
30
  cd ../../../
29
- # aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
31
+ echo new version deployed on s3://tiledesk-console/v2/chat/
32
+ echo available on https://console.tiledesk.com/v2/chat/$version/index.html
33
+ echo available on https://console.tiledesk.com/v2/chat/index.html
34
+
35
+
36
+ ###### CHAT-IONIC5
37
+ # cd platforms/browser/www
38
+ # #aws s3 sync . s3://tiledesk-dashboard/chat/
39
+ # aws s3 sync . s3://tiledesk-console/v2/chat-ionic5/
40
+ # aws s3 sync . s3://tiledesk-console/v2/chat-ionic5/$version/
41
+ # cd ../../../
42
+ # # aws cloudfront create-invalidation --distribution-id E2DTAKWHWQ7C3J --paths "/*"
43
+
44
+ # # echo new version deployed on s3://tiledesk-dashboard/chat/$NEW_BUILD/
45
+ # echo new version deployed on s3://tiledesk-console/v2/chat-ionic5/$version/
46
+ # echo available on https://console.tiledesk.com/v2/chat-ionic5/$version/index.html
47
+
48
+
30
49
 
31
- # echo new version deployed on s3://tiledesk-dashboard/chat/$NEW_BUILD/
32
- echo new version deployed on s3://tiledesk-console/v2/chat-ionic5/$version/
33
- echo available on https://console.tiledesk.com/v2/chat-ionic5/$version/index.html
50
+ ####### chat ionic FIREBASE in PROD IN SUBFOLDER
51
+ # cd platforms/browser/www
52
+ # aws s3 sync . s3://tiledesk-console/v2/chat5-dev/
53
+ # aws s3 sync . s3://tiledesk-console/v2/chat5-dev/$version
54
+ # cd ../../../
55
+ # echo new version deployed on s3://console.tiledesk.com/v2/chat5-dev/$version
56
+ # echo new version deployed on s3://console.tiledesk.com/v2/chat5-dev/
57
+ # echo available on http://console.tiledesk.com/v2/chat5-dev/index.html
58
+ # echo available on http://console.tiledesk.com/v2/chat5-dev/$version/index.html
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
- "version": "3.0.60-rc2",
3
+ "version": "3.0.60-rc6",
4
4
  "author": "Tiledesk SRL",
5
5
  "homepage": "https://ionicframework.com/",
6
6
  "scripts": {
@@ -114,7 +114,7 @@ export function authenticationFactory(http: HttpClient, appConfig: AppConfigProv
114
114
 
115
115
  auth.setBaseUrl(appConfig.getConfig().apiUrl);
116
116
 
117
- if (config.pushEngine = PUSH_ENGINE_MQTT) {
117
+ if (config.pushEngine === PUSH_ENGINE_MQTT) {
118
118
  // FOR PUSH NOTIFICATIONS INIT FIREBASE APP
119
119
  FirebaseInitService.initFirebase(config.firebaseConfig);
120
120
  }
@@ -55,14 +55,16 @@ export class IonListConversationsComponent extends ListConversationsComponent im
55
55
  super(iterableDiffers, kvDiffers)
56
56
  this.browserLang = this.translate.getBrowserLang();
57
57
  if (this.browserLang) {
58
- if (this.browserLang === 'it') {
59
- // this.translate.use('it');
60
- moment.locale('it')
61
-
62
- } else {
63
- // this.translate.use('en');
64
- moment.locale('en')
65
- }
58
+
59
+ moment.locale(this.browserLang)
60
+ // if (this.browserLang === 'it') {
61
+ // // this.translate.use('it');
62
+ // moment.locale('it')
63
+
64
+ // } else {
65
+ // // this.translate.use('en');
66
+ // moment.locale('en')
67
+ // }
66
68
  }
67
69
 
68
70
  this.currentYear = moment().format('YYYY');
@@ -39,16 +39,20 @@
39
39
  <ion-col col-auto>
40
40
 
41
41
  <div class="start-buttons" style="position: absolute;display: flex;">
42
-
43
- <div class="canned-responses-btn-wpr" style="margin-left: -5px;" tooltip="{{translationMap?.get('CANNED_RESPONSES')}}" [options]="tooltipOptions" placement="top">
44
-
42
+
43
+ <div class="canned-responses-btn-wpr" style="margin-left: -5px;" tooltip="{{translationMap?.get('CANNED_RESPONSES')}}" [options]="tooltipOptions" placement="top">
45
44
  <ion-button ion-button fill="clear" class="canned-responses-btn" (click)="openCannedResponses()" [disabled]="!IS_SUPPORT_GROUP_CONVERSATION">
46
45
  <ion-icon slot="icon-only" lazy="true" name="flash-outline" style="font-size: 24px;"></ion-icon>
47
46
  </ion-button>
48
-
49
47
  </div>
50
-
51
- <div class="upload-image-btn-wpr" tooltip="{{translationMap?.get('UPLOAD')}}" [options]="tooltipOptions">
48
+ <div *ngIf="IS_SUPPORT_GROUP_CONVERSATION && tagsCannedCount === 0" tooltip="{{translationMap?.get('NO_CANNED_RESPONSES')}}" [options]="tooltipOptions" placement="top" class="no-canned-responses-btn-badge">
49
+ <ion-icon name="alert-sharp" style="vertical-align: middle;"></ion-icon>
50
+ </div>
51
+ <div *ngIf="IS_SUPPORT_GROUP_CONVERSATION && tagsCannedCount > 0" tooltip="{{translationMap?.get('YES_CANNED_RESPONSES')}}" [options]="tooltipOptions" placement="top" class="canned-responses-btn-badge">
52
+ <ion-icon name="information-sharp" style="vertical-align: middle;"></ion-icon>
53
+ </div>
54
+
55
+ <div class="upload-image-btn-wpr" tooltip="{{translationMap?.get('UPLOAD')}}" [options]="tooltipOptions" placement="top">
52
56
  <ion-button ion-button fill="clear" class="upload-image-btn">
53
57
  <ion-icon slot="icon-only" lazy="true" name="attach-outline"
54
58
  style="font-size: 30px;transform: rotate(42deg);"></ion-icon>
@@ -107,12 +107,43 @@
107
107
  --padding-bottom: 0px;
108
108
  --padding-top: 0px;
109
109
  --border-radius: 50%;
110
- --padding-end: 1px;
111
- --padding-start: 1px;
110
+ --padding-end: 2px;
111
+ --padding-start: 2px;
112
112
  height: 33px !important;
113
- width: 30px;
113
+ width: 33px;
114
114
  }
115
115
 
116
+ .no-canned-responses-btn-badge {
117
+ position: absolute;
118
+ font-size: 12px;
119
+ background-color: transparent;
120
+ border-radius: 50%;
121
+ padding: 1px 2px;
122
+ top: 4px;
123
+ color: red;
124
+ left: -3px;
125
+ cursor: pointer;
126
+ }
127
+ .no-canned-responses-btn-badge:hover {
128
+ background-color: rgba(0, 0, 0, 0.05);;
129
+ }
130
+
131
+ .canned-responses-btn-badge {
132
+ position: absolute;
133
+ font-size: 12px;
134
+ background-color: transparent;
135
+ border-radius: 50%;
136
+ padding: 1px 2px;
137
+ top: 4px;
138
+ color: #92949c;
139
+ left: -3px;
140
+ cursor: pointer;
141
+ }
142
+
143
+ .canned-responses-btn-badge:hover {
144
+ background-color: rgba(0, 0, 0, 0.05);;
145
+ }
146
+
116
147
 
117
148
  .upload-image-btn .button-native {
118
149
  border-radius: 50%;
@@ -43,6 +43,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
43
43
  @Input() loggedUser: UserModel;
44
44
  @Input() conversationWith: string;
45
45
  @Input() tagsCannedFilter: any = [];
46
+ @Input() tagsCannedCount: number;
46
47
 
47
48
  @Input() events: Observable<void>;
48
49
  @Input() fileUploadAccept: string
@@ -132,6 +133,9 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
132
133
 
133
134
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges DROP EVENT ", this.dropEvent);
134
135
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges tagsCannedFilter ", this.tagsCannedFilter);
136
+ // console.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges tagsCannedCount ", this.tagsCannedCount);
137
+
138
+
135
139
  this.logger.log('[CONVS-DETAIL] - returnChangeTextArea ngOnChanges in [MSG-TEXT-AREA] this.tagsCannedFilter.length ', this.tagsCannedFilter.length)
136
140
 
137
141
  // use case drop
@@ -202,9 +206,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
202
206
  } else if (this.currentWindowWidth <= 273) {
203
207
  this.TEXAREA_PLACEHOLDER = this.SHORTER_TEXAREA_PLACEHOLDER;
204
208
  }
205
-
206
209
  }
207
-
208
210
  }
209
211
 
210
212
  // -------------------------------------------------------------------------------------------
@@ -429,7 +431,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
429
431
  // this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ionChange detail.value ", e.detail.value);
430
432
 
431
433
  const message = e.detail.value
432
- // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange message ", message);
434
+ this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange message ", message);
433
435
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange this.messageString ", this.messageString);
434
436
  const height = e.target.offsetHeight + 20; // nk added +20
435
437
  // this.logger.log("[CONVS-DETAIL] [MSG-TEXT-AREA] ionChange text-area height ", height);
@@ -556,12 +558,12 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
556
558
 
557
559
 
558
560
  sendMessage(text: string) {
559
- this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] sendMessage', text);
561
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] sendMessage text', text);
560
562
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] sendMessage conve width', this.conversationWith);
561
563
  // text.replace(/\s/g, "")
562
564
  this.messageString = '';
563
565
  // text = text.replace(/(\r\n|\n|\r)/gm, '');
564
- if (text.trim() !== '') {
566
+ if (text && text.trim() !== '') {
565
567
  this.eventSendMessage.emit({ message: text, type: TYPE_MSG_TEXT });
566
568
  }
567
569
  }
@@ -70,7 +70,7 @@
70
70
  text-decoration: none;
71
71
  cursor: pointer;
72
72
  svg {
73
- fill: rgba(255,255,255);
73
+ fill: rgba(255,255,255, 1);
74
74
  }
75
75
  }
76
76
 
@@ -95,7 +95,7 @@
95
95
  text-decoration: none;
96
96
  cursor: pointer;
97
97
  svg {
98
- fill: rgba(255,255,255);
98
+ fill: rgba(255,255,255, 1);
99
99
  }
100
100
  }
101
101
 
@@ -7,140 +7,140 @@
7
7
  <!-- *ngIf="!showSpinner" -->
8
8
  <div class="left-sidebar-project" style="margin-right: -10px;">
9
9
 
10
- <!-- *ngFor="let project of projects; let i = index" -->
11
- <div style="cursor:pointer">
12
- <!-- (click)='goToUnservedRequests(project?.id_project?._id, project?.id_project?.name, project?.id_project?.profile?.name, project?.id_project?.trialExpired, project?.id_project?.trialDaysLeft, project?.id_project?.status)' -->
13
- <div class="small-projects-sidebar">
14
- <div *ngIf="project?.id_project?.status !== 0" class="flex-container-project-for-panel project-row">
15
- <div class="flex-child-left">
16
- <!-- padding:6px; background: rgb(31,107,192); -->
17
- <div class="unassigned-notifications-icon-wpr">
18
- <!-- <svg viewBox="0 0 28 28" alt="" class="a8c37x1j ms05siws hwsy1cff b7h9ocf4 fzdkajry" height="40"
19
- width="40"
20
- style="vertical-align: middle;border-radius: 50%;">
21
- <style type="text/css">
22
- .notifications-icons {
23
- fill: #050505;
24
- }
25
- </style>
26
- <path class="notifications-icons"
27
- d="M7.847 23.488C9.207 23.488 11.443 23.363 14.467 22.806 13.944 24.228 12.581 25.247 10.98 25.247 9.649 25.247 8.483 24.542 7.825 23.488L7.847 23.488ZM24.923 15.73C25.17 17.002 24.278 18.127 22.27 19.076 21.17 19.595 18.724 20.583 14.684 21.369 11.568 21.974 9.285 22.113 7.848 22.113 7.421 22.113 7.068 22.101 6.79 22.085 4.574 21.958 3.324 21.248 3.077 19.976 2.702 18.049 3.295 17.305 4.278 16.073L4.537 15.748C5.2 14.907 5.459 14.081 5.035 11.902 4.086 7.022 6.284 3.687 11.064 2.753 15.846 1.83 19.134 4.096 20.083 8.977 20.506 11.156 21.056 11.824 21.986 12.355L21.986 12.356 22.348 12.561C23.72 13.335 24.548 13.802 24.923 15.73Z">
28
- </path>
29
- </svg> -->
30
-
31
- <!-- <svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="bell"
32
- class="svg-inline--fa fa-bell fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg"
33
- viewBox="0 0 448 512" height="auto" width="24px">
34
- <path fill="currentColor"
35
- d="M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z">
36
- </path>
37
- </svg> -->
38
-
39
- <svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false"
40
- class="style-scope yt-icon"
41
- style="pointer-events: none; width: 37px; height:auto; fill: rgb(107,107,107);margin-left:4px">
42
- <g class="style-scope yt-icon">
43
- <path
44
- d="M10,20h4c0,1.1-0.9,2-2,2S10,21.1,10,20z M20,17.35V19H4v-1.65l2-1.88v-5.15c0-2.92,1.56-5.22,4-5.98V3.96 c0-1.42,1.49-2.5,2.99-1.76C13.64,2.52,14,3.23,14,3.96l0,0.39c2.44,0.75,4,3.06,4,5.98v5.15L20,17.35z M19,17.77l-2-1.88v-5.47 c0-2.47-1.19-4.36-3.13-5.1c-1.26-0.53-2.64-0.5-3.84,0.03C8.15,6.11,7,7.99,7,10.42v5.47l-2,1.88V18h14V17.77z"
45
- class="style-scope yt-icon"></path>
46
- </g>
47
- </svg>
10
+ <div class="small-projects-sidebar">
11
+ <!-- <div class="pinned-project">Pinned project </div> margin-left:4px -->
12
+ <div *ngIf="project?.id_project?.status !== 0" class="flex-container-project-for-panel project-row">
13
+ <div class="flex-child-left" [tooltip]="conversationsInQueue" [options]="tooltipOptions" placement="top"
14
+ content-type="template" (click)="openUnservedConvs()">
15
+ <div class="unassigned-notifications-icon-wpr">
16
+ <svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false"
17
+ class="style-scope yt-icon"
18
+ style="pointer-events: none; width: 37px; height:auto; fill: rgb(107,107,107);margin-top: 9px;">
19
+ <g class="style-scope yt-icon">
20
+ <path
21
+ d="M10,20h4c0,1.1-0.9,2-2,2S10,21.1,10,20z M20,17.35V19H4v-1.65l2-1.88v-5.15c0-2.92,1.56-5.22,4-5.98V3.96 c0-1.42,1.49-2.5,2.99-1.76C13.64,2.52,14,3.23,14,3.96l0,0.39c2.44,0.75,4,3.06,4,5.98v5.15L20,17.35z M19,17.77l-2-1.88v-5.47 c0-2.47-1.19-4.36-3.13-5.1c-1.26-0.53-2.64-0.5-3.84,0.03C8.15,6.11,7,7.99,7,10.42v5.47l-2,1.88V18h14V17.77z"
22
+ class="style-scope yt-icon"></path>
23
+ </g>
24
+ </svg>
25
+ </div>
26
+ <div class="unassigned-notifications-badge">
27
+ <!-- || currentUserRequestCount > 0 -->
28
+ <!-- <span *ngIf="unservedRequestCount > 0 "> -->
29
+ <!-- + currentUserRequestCount -->
30
+ <span class="notification-count">{{ unservedRequestCount }}</span>
31
+ </div>
32
+ </div>
48
33
 
49
- </div>
50
- <div class="unassigned-notifications-badge">
51
- <!-- || currentUserRequestCount > 0 -->
52
- <!-- <span *ngIf="unservedRequestCount > 0 "> -->
53
- <!-- + currentUserRequestCount -->
54
- <span class="notification-count">{{ unservedRequestCount }}</span>
55
- <!-- </span> -->
34
+ <ng-template #conversationsInQueue>
35
+ <span>{{ unservedRequestCount }} {{translationMap?.get('CONVERSATIONS_IN_QUEUE') }}</span>
36
+ </ng-template>
56
37
 
57
- </div>
58
38
 
39
+ <div class="flex-child-right">
40
+ <div class="project-name-project-for-panel" [tooltip]="conversationsInQueueOnProjectName" [options]="tooltipOptions"
41
+ placement="top" content-type="template" (click)="openUnservedConvs()">
42
+ <div class="project---name"> {{ project?.id_project?.name }} </div>
59
43
  </div>
44
+ <ng-template #conversationsInQueueOnProjectName>
45
+ <span>{{ unservedRequestCount }} {{translationMap?.get('CONVERSATIONS_IN_QUEUE') }}</span>
46
+ </ng-template>
60
47
 
61
-
62
- <div class="flex-child-right">
63
- <div class="project-name-project-for-panel">
64
- {{ project?.id_project?.name }}
65
- </div>
66
-
67
- <!-- <div class="status--text"
68
- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)"
69
- [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
70
- <span *ngIf="project?.ws_projct_user_available === true">
71
- Online
72
- </span>
73
- <span *ngIf="project?.ws_projct_user_available === false">
74
- Offline
75
- </span>
76
- <span class="status--icon-project-for-panel"
77
- [ngStyle]="{ 'background-color':(project?.ws_projct_user_available)?'#4caf50':'#f44336' }">
78
- </span>
79
- <span class="status--icon-project-for-panel busy--icon"
80
- *ngIf="project?.ws_projct_user_isBusy === true">
81
- </span>
82
- </div> -->
83
- <div class="availabily-and-busy-wpr">
84
- <!-- <div class="onoffswitch"
48
+ <div class="availabily-and-busy-wpr">
49
+ <div class="availabily---wpr" tooltip="{{avaialble_status_for_tooltip}}" [options]="tooltipOptions">
50
+ <div class="onoffswitch"
85
51
  (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
86
- <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch"
52
+ <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="switchavailableunavailablestatus"
87
53
  tabindex="0" [checked]="project?.ws_projct_user_available">
88
- <label class="onoffswitch-label" for="myonoffswitch"></label>
89
- </div> -->
90
- <div class="availabily---wpr">
91
- <!-- <div class="i_onoffswitch"
92
- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
93
- <input type="checkbox" name="i_onoffswitch" class="i_onoffswitch-checkbox"
94
- id="i_switch_availability" tabindex="0" [checked]="project?.ws_projct_user_available">
95
- <label style="margin-bottom: 0px" class="i_onoffswitch-label" for="i_switch_availability"></label>
96
- </div> -->
97
-
98
-
99
- <div class="onoffswitch"
100
- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
101
- <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch"
102
- tabindex="0" [checked]="project?.ws_projct_user_available">
103
- <label class="onoffswitch-label" for="myonoffswitch"></label>
104
- </div>
54
+ <label class="onoffswitch-label" for="switchavailableunavailablestatus"></label>
105
55
  </div>
56
+ </div>
57
+
106
58
 
107
- <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
108
- <span *ngIf="project?.ws_projct_user_available === true" class="availibility-status-text"
109
- [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
110
- {{translationMap?.get('Available') }}
111
- </span>
112
- <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
113
- <span *ngIf="project?.ws_projct_user_available === false" class="availibility-status-text"
114
- [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
115
- {{translationMap?.get('Unavailable')}}
116
- </span>
117
- <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true">
118
- <!-- <span class="material-icons project-item--isBusy-icon">
59
+ <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
60
+ <span *ngIf="project?.ws_projct_user_available === true" class="availibility-status-text"
61
+ [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
62
+ {{translationMap?.get('Available') }}
63
+ </span>
64
+ <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
65
+ <span *ngIf="project?.ws_projct_user_available === false" class="availibility-status-text"
66
+ [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
67
+ {{translationMap?.get('Unavailable')}}
68
+ </span>
69
+ <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true">
70
+ <!-- <span class="material-icons project-item--isBusy-icon">
119
71
  access_time
120
72
  </span> -->
121
- <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="16px"
122
- viewBox="0 0 24 24" width="16px" fill="#FEB92C">
123
- <g>
124
- <path d="M0,0h24v24H0V0z" fill="none" />
125
- </g>
126
- <g>
127
- <path
128
- d="M11.99,2C6.47,2,2,6.48,2,12s4.47,10,9.99,10C17.52,22,22,17.52,22,12S17.52,2,11.99,2z M15.29,16.71L11,12.41V7h2v4.59 l3.71,3.71L15.29,16.71z" />
129
- </g>
73
+ <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="16px"
74
+ viewBox="0 0 24 24" width="16px" fill="#FEB92C">
75
+ <g>
76
+ <path d="M0,0h24v24H0V0z" fill="none" />
77
+ </g>
78
+ <g>
79
+ <path
80
+ d="M11.99,2C6.47,2,2,6.48,2,12s4.47,10,9.99,10C17.52,22,22,17.52,22,12S17.52,2,11.99,2z M15.29,16.71L11,12.41V7h2v4.59 l3.71,3.71L15.29,16.71z" />
81
+ </g>
82
+ </svg>
83
+ </div>
84
+ <span *ngIf="project?.ws_projct_user_isBusy === true"
85
+ class="project-item--isBusy-busy-text text-pulse-animation">
86
+ {{translationMap?.get('Busy')}}
87
+ </span>
88
+ </div>
89
+ </div>
90
+
91
+ <div class="flex-child-view-all-convs">
92
+ <div class="view-all-convs-icon-wpr" style="cursor: pointer;" [tooltip]="viewAllConvs"
93
+ [options]="tooltipOptions" placement="top" content-type="template">
94
+
95
+ <ion-button ion-button fill="clear" class="open-unserved-convs-btn" (click)="openUnservedConvsAndGoToProjectList()">
96
+
97
+ <span class="push-icon-and-list-wpr">
98
+ <!-- <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg"
99
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 24 24"
100
+ style="enable-background:new 0 0 24 24;" xml:space="preserve" style="width: 20px;">
101
+ <style type="text/css">
102
+ .st0 {
103
+ fill: #3880ff;
104
+ }
105
+ </style>
106
+ <path class="st0"
107
+ d="M22.8,15v-2c-1.7,0-3-1.3-3-3V5h1c0.5,0,1-0.5,1-1s-0.5-1-1-1h-10c-0.5,0-1,0.5-1,1s0.5,1,1,1h1v5
108
+ c0,1.7-1.3,3-3,3v2h6v5c0.6,0,1.4,0,2,0v-5H22.8z M12.8,13c0.7-0.9,1-1.9,1-3V5h4v5c0,1.1,0.4,2.2,1,3H12.8z" />
109
+ <rect x="1.2" y="13" class="st0" width="6.3" height="2" />
110
+ <rect x="1.2" y="18" class="st0" width="12.1" height="2" />
111
+ <rect x="1.2" y="7.6" class="st0" width="9.2" height="2" />
112
+ </svg> -->
113
+
114
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg"
115
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 24 24"
116
+ style="enable-background:new 0 0 24 24;" xml:space="preserve" style="width: 16px;">
117
+ <style type="text/css">
118
+ .st0 {
119
+ fill: #165CEE;
120
+ }
121
+ </style>
122
+ <path class="st0" d="M20.6,16.3v-2.4c-2.1,0-3.7-1.6-3.7-3.7V4h1.2c0.6,0,1.2-0.6,1.2-1.2s-0.6-1.2-1.2-1.2H5.9
123
+ c-0.6,0-1.2,0.6-1.2,1.2S5.3,4,5.9,4h1.2v6.1c0,2.1-1.6,3.7-3.7,3.7v2.4h7.3v6.1c0.7,0,1.7,0,2.4,0v-6.1H20.6z M8.3,13.8
124
+ c0.9-1.1,1.2-2.3,1.2-3.7V4h4.9v6.1c0,1.3,0.5,2.7,1.2,3.7H8.3z" />
130
125
  </svg>
131
- </div>
132
- <span *ngIf="project?.ws_projct_user_isBusy === true" class="project-item--isBusy-busy-text text-pulse-animation">
133
- {{translationMap?.get('Busy')}}
134
126
  </span>
135
- </div>
136
127
 
128
+
129
+
130
+ </ion-button>
137
131
  </div>
132
+ <ng-template #viewAllConvs>
133
+ <span>
138
134
 
135
+ {{translationMap?.get('CHANGE_PINNED_PROJECT') }}</span>
136
+ </ng-template>
139
137
  </div>
140
- </div>
141
138
 
139
+ </div>
142
140
  </div>
143
141
 
142
+ <!-- </div> -->
143
+
144
144
  </div>
145
145
  </div>
146
146
  </div>