@chat21/chat21-ionic 3.0.58 → 3.0.59-rc4

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 (80) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +4 -0
  3. package/package.json +1 -1
  4. package/resources/Android/splash/drawable-land-hdpi-screen.png +0 -0
  5. package/resources/Android/splash/drawable-land-ldpi-screen.png +0 -0
  6. package/resources/Android/splash/drawable-land-mdpi-screen.png +0 -0
  7. package/resources/Android/splash/drawable-land-xhdpi-screen.png +0 -0
  8. package/resources/Android/splash/drawable-land-xxhdpi-screen.png +0 -0
  9. package/resources/Android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  10. package/resources/Android/splash/drawable-port-hdpi-screen.png +0 -0
  11. package/resources/Android/splash/drawable-port-ldpi-screen.png +0 -0
  12. package/resources/Android/splash/drawable-port-mdpi-screen.png +0 -0
  13. package/resources/Android/splash/drawable-port-xhdpi-screen.png +0 -0
  14. package/resources/Android/splash/drawable-port-xxhdpi-screen.png +0 -0
  15. package/resources/Android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  16. package/resources/Android/splash.png +0 -0
  17. package/src/app/app-routing.module.ts +21 -17
  18. package/src/app/app.component.html +6 -3
  19. package/src/app/app.component.ts +195 -41
  20. package/src/app/app.module.ts +4 -1
  21. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +4 -4
  22. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +8 -2
  23. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +6 -1
  24. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +7 -2
  25. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +47 -2
  26. package/src/app/chatlib/conversation-detail/message/image/image.component.html +7 -6
  27. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +20 -1
  28. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +34 -5
  29. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +8 -144
  30. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -18
  31. package/src/app/components/authentication/login/login.component.html +2 -2
  32. package/src/app/components/authentication/login/login.component.ts +2 -1
  33. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +1 -1
  34. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +1 -1
  35. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +17 -12
  36. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +12 -0
  37. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +21 -5
  38. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +3 -2
  39. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +22 -17
  40. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +46 -5
  41. package/src/app/components/image-viewer/image-viewer.component.html +23 -0
  42. package/src/app/components/image-viewer/image-viewer.component.scss +107 -0
  43. package/src/app/components/image-viewer/image-viewer.component.spec.ts +24 -0
  44. package/src/app/components/image-viewer/image-viewer.component.ts +38 -0
  45. package/src/app/components/project-item/project-item.component.html +102 -0
  46. package/src/app/components/project-item/project-item.component.scss +542 -0
  47. package/src/app/components/project-item/project-item.component.spec.ts +24 -0
  48. package/src/app/components/project-item/project-item.component.ts +308 -0
  49. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +7 -0
  50. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +22 -5
  51. package/src/app/pages/authentication/login/login.page.ts +1 -1
  52. package/src/app/pages/conversation-detail/conversation-detail.page.html +5 -3
  53. package/src/app/pages/conversation-detail/conversation-detail.page.ts +122 -30
  54. package/src/app/pages/conversations-list/conversations-list.page.html +40 -24
  55. package/src/app/pages/conversations-list/conversations-list.page.scss +146 -1
  56. package/src/app/pages/conversations-list/conversations-list.page.ts +80 -6
  57. package/src/app/pages/unassigned-conversations/unassigned-conversations-routing.module.ts +17 -0
  58. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +22 -0
  59. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +14 -0
  60. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +0 -0
  61. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.spec.ts +24 -0
  62. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +105 -0
  63. package/src/app/services/nav-proxy.service.ts +1 -1
  64. package/src/app/services/tiledesk/tiledesk.service.ts +22 -1
  65. package/src/app/services/websocket/websocket-js.ts +559 -0
  66. package/src/app/services/websocket/websocket.service.spec.ts +12 -0
  67. package/src/app/services/websocket/websocket.service.ts +274 -0
  68. package/src/app/shared/shared.module.ts +7 -1
  69. package/src/assets/i18n/en.json +8 -1
  70. package/src/assets/i18n/it.json +8 -1
  71. package/src/chat21-core/providers/chat-manager.ts +3 -3
  72. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +1 -1
  73. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +6 -6
  74. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  75. package/src/chat21-core/providers/firebase/firebase-notifications.ts +1 -1
  76. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +2 -2
  77. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +1 -1
  78. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +1 -1
  79. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +1 -1
  80. package/src/chat21-core/utils/utils.ts +1 -1
@@ -0,0 +1,542 @@
1
+ // @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500&display=swap");
2
+
3
+ .main-content-project-for-panel {
4
+ padding-top: 0px;
5
+ margin-top: 0px !important;
6
+ padding-bottom: 0px !important;
7
+ background: #fff;
8
+ padding-left: 0px;
9
+ min-height: 70px;
10
+ height: 70px;
11
+ width: 100%;
12
+ }
13
+
14
+ .main-content-project-for-panel:hover {
15
+ background-color: rgb(244, 243, 244);
16
+ }
17
+ .container-project-for-panel {
18
+ padding: 0px !important;
19
+ width: 296px;
20
+ }
21
+
22
+ /* Hide scrollbar for Chrome, Safari and Opera */
23
+ .main-content-projects-for-panel::-webkit-scrollbar {
24
+ display: none;
25
+ }
26
+
27
+ /* Hide scrollbar for IE, Edge and Firefox */
28
+ .main-content-projects-for-panel {
29
+ -ms-overflow-style: none; /* IE and Edge */
30
+ scrollbar-width: none; /* Firefox */
31
+ }
32
+
33
+ /* Tooltip text */
34
+ .tooltipx .tooltiptext {
35
+ visibility: hidden;
36
+
37
+ // background-color: black;
38
+ /* // background-color: rgba(0,0,0,0.6); */
39
+ color: #fff;
40
+ text-align: center;
41
+ padding: 5px 5px;
42
+ border-radius: 5px;
43
+ font-size: 10px !important;
44
+ text-transform: none !important;
45
+
46
+ /* Position the tooltip text */
47
+ position: absolute;
48
+ z-index: 1;
49
+ /* Position the tooltip text - BOTTOM */
50
+
51
+ width: 120px;
52
+ top: 100%;
53
+ left: 50%;
54
+ /* margin-left: -60px; */
55
+ margin-left: -92px;
56
+
57
+ // NEW
58
+ box-shadow: 0 1em 2em -0.5em rgba(0, 0, 0, 0.35);
59
+ background-color: #394f5a;
60
+ }
61
+
62
+ /* Show the tooltip text when you mouse over the tooltip container */
63
+ .tooltipx:hover .tooltiptext {
64
+ visibility: visible;
65
+ }
66
+ /* // end TOOLTIP */
67
+
68
+ // .isBusyClockHands {
69
+ // background-image: url('../../../assets/img/clock_hands.svg');
70
+ // background-position: center;
71
+ // background-repeat: no-repeat;
72
+ // background-size: cover;
73
+ // }
74
+
75
+ // available status icon infinite color transition
76
+ .isBusyTest {
77
+ // content: url("../../../assets/img/clock_hands.svg");
78
+ // background-image: url('../../../assets/img/clock_hands.svg');
79
+ // background-position: center;
80
+ // background-repeat: no-repeat;
81
+ // background-size: cover;
82
+ color: #fedd00;
83
+ animation: myfirst 5s;
84
+ -moz-animation: myfirst 5s infinite; /* Firefox */
85
+ -webkit-animation: myfirst 5s infinite; /* Safari and Chrome */
86
+ }
87
+
88
+ @keyframes myfirst {
89
+ 0% {
90
+ // background: #4caf50;
91
+ color: rgba(255, 255, 255, 0.5);
92
+ }
93
+ 50% {
94
+ // background: #fedd00;
95
+ color: #fedd00;
96
+ }
97
+ 100% {
98
+ // background: #4caf50;
99
+ // color: #1e2129;
100
+ color: rgba(255, 255, 255, 0.5);
101
+ }
102
+ }
103
+ /* Firefox */
104
+ @-moz-keyframes myfirst {
105
+ 0% {
106
+ // background: #4caf50;
107
+ // color: #1e2129;
108
+ color: rgba(255, 255, 255, 0.5);
109
+ }
110
+ 50% {
111
+ // background: #fedd00;
112
+ color: #fedd00;
113
+ }
114
+ 100% {
115
+ // background: #4caf50;
116
+ // color: #1e2129;
117
+ color: rgba(255, 255, 255, 0.5);
118
+ }
119
+ }
120
+ /* Safari and Chrome */
121
+ @-webkit-keyframes myfirst {
122
+ 0% {
123
+ // background: #4caf50;
124
+ // color: #1e2129;
125
+ color: rgba(255, 255, 255, 0.5);
126
+ }
127
+ 50% {
128
+ // background: #fedd00;
129
+ color: #fedd00;
130
+ }
131
+ 100% {
132
+ // background: #4caf50;
133
+ // color: #1e2129;
134
+ color: rgba(255, 255, 255, 0.5);
135
+ }
136
+ }
137
+
138
+ .is-user-online {
139
+ background-color: #4caf50;
140
+ }
141
+ .is-user-offline {
142
+ background-color: #f44336;
143
+ }
144
+
145
+ .is-desktop-menu {
146
+ margin-top: 40px;
147
+ }
148
+ .is-mobile-menu {
149
+ margin-top: 0px;
150
+ }
151
+
152
+ @-webkit-keyframes bounce {
153
+ 0%,
154
+ 20%,
155
+ 50%,
156
+ 80%,
157
+ 100% {
158
+ -webkit-transform: translateY(0);
159
+ }
160
+ 40% {
161
+ -webkit-transform: translateY(-30px);
162
+ }
163
+ 60% {
164
+ -webkit-transform: translateY(-15px);
165
+ }
166
+ }
167
+
168
+ @-moz-keyframes bounce {
169
+ 0%,
170
+ 20%,
171
+ 50%,
172
+ 80%,
173
+ 100% {
174
+ -moz-transform: translateY(0);
175
+ }
176
+ 40% {
177
+ -moz-transform: translateY(-30px);
178
+ }
179
+ 60% {
180
+ -moz-transform: translateY(-15px);
181
+ }
182
+ }
183
+
184
+ @-o-keyframes bounce {
185
+ 0%,
186
+ 20%,
187
+ 50%,
188
+ 80%,
189
+ 100% {
190
+ -o-transform: translateY(0);
191
+ }
192
+ 40% {
193
+ -o-transform: translateY(-30px);
194
+ }
195
+ 60% {
196
+ -o-transform: translateY(-15px);
197
+ }
198
+ }
199
+ @keyframes bounce {
200
+ 0%,
201
+ 20%,
202
+ 50%,
203
+ 80%,
204
+ 100% {
205
+ transform: translateY(0);
206
+ }
207
+ 40% {
208
+ transform: translateY(-30px);
209
+ }
210
+ 60% {
211
+ transform: translateY(-15px);
212
+ }
213
+ }
214
+
215
+ .flex-container-project-for-panel {
216
+ display: flex;
217
+ width: 100%;
218
+ justify-content: center;
219
+ align-items: center;
220
+ position: relative;
221
+ cursor: pointer;
222
+ -moz-transition: all 0.2s ease-in;
223
+ -o-transition: all 0.2s ease-in;
224
+ -webkit-transition: all 0.2s ease-in;
225
+ transition: all 0.2s ease-in;
226
+ height: 70px;
227
+ }
228
+
229
+ .flex-container:hover {
230
+ background-color: rgba(200, 200, 200, 0.2);
231
+ }
232
+
233
+ .flex-child-left {
234
+ // flex: 0 0 20%;
235
+ width: 60px;
236
+ text-align: center;
237
+ padding: 8px 0px;
238
+ }
239
+ // border: 2px solid yellow;
240
+
241
+ .flex-child-right {
242
+ flex: 1;
243
+ padding: 8px 0px;
244
+ width: 227px;
245
+ }
246
+
247
+ .status--icon-project-for-panel {
248
+ width: 13px;
249
+ height: 13px;
250
+ border-radius: 50%;
251
+ display: inline-block;
252
+ position: relative;
253
+ top: -1px;
254
+ vertical-align: middle;
255
+ border: 1px solid #fff;
256
+ }
257
+
258
+ .status--icon.online {
259
+ background-color: #4caf50;
260
+ }
261
+ .status--icon.offline {
262
+ background-color: #f44336;
263
+ }
264
+
265
+ .status--text {
266
+ color: #7695a5;
267
+ font-size: 12px;
268
+ // font-weight: 300;
269
+ text-transform: capitalize;
270
+ width: fit-content;
271
+ // font-family: "Montserrat", sans-serif;
272
+ font-weight: 400;
273
+ padding-left: 10px;
274
+ padding-top: 5px;
275
+ }
276
+
277
+ .project-name-project-for-panel {
278
+ color: #1e2129;
279
+ font-weight: 400;
280
+ margin-left: 10px;
281
+ width: 220px !important;
282
+ white-space: nowrap !important;
283
+ overflow: hidden !important;
284
+ text-overflow: ellipsis !important;
285
+ font-family: Helvetica, Helvetica, Arial, sans-serif;
286
+ }
287
+
288
+ // .im-available-project-for-panel {
289
+ // color: #1e2129;
290
+ // }
291
+
292
+ .availabily-and-busy-wpr {
293
+ margin-top: 6px;
294
+ margin-left: 11px;
295
+ }
296
+
297
+ .availibility-status-text {
298
+ font-family: Helvetica, Helvetica, Arial, sans-serif;
299
+ font-size: 13px;
300
+ margin-left: 3px;
301
+ position: relative;
302
+ top: -4px;
303
+ display: inline-block;
304
+ min-width: 74px;
305
+ }
306
+
307
+ .online-text-color {
308
+ color: #4caf50;
309
+ // font-weight: 600;
310
+ }
311
+ .offline-text-color {
312
+ color: #f44336;
313
+ // font-weight: 600;
314
+ }
315
+
316
+ .project-item--isBusy-icon-wpr {
317
+ width: 16px;
318
+ height: 16px;
319
+ display: inline-block;
320
+ }
321
+
322
+ .project-item--isBusy-icon {
323
+ border-radius: 50%;
324
+ background-color: #fedd00;
325
+ font-size: 18px;
326
+ color: #fff;
327
+ }
328
+
329
+ .project-item--isBusy-busy-text {
330
+ font-family: Helvetica, Helvetica, Arial, sans-serif;
331
+ font-size: 13px;
332
+ margin-left: 3px;
333
+ position: relative;
334
+ top: -4px;
335
+ }
336
+
337
+ .text-pulse-animation {
338
+ animation: pulse 5s;
339
+ -moz-animation: pulse 5s infinite; /* Firefox */
340
+ -webkit-animation: pulse 5s infinite; /* Safari and Chrome */
341
+ }
342
+
343
+ @keyframes pulse {
344
+ 0% {
345
+ color: transparent;
346
+ }
347
+ 50% {
348
+ color: #fedd00;
349
+ }
350
+ 100% {
351
+ color: transparent;
352
+ }
353
+ }
354
+ /* Firefox */
355
+ @-moz-keyframes pulse {
356
+ 0% {
357
+ color: transparent;
358
+ }
359
+ 50% {
360
+ color: #fedd00;
361
+ }
362
+ 100% {
363
+ color: transparent;
364
+ }
365
+ }
366
+ /* Safari and Chrome */
367
+ @-webkit-keyframes pulse {
368
+ 0% {
369
+ color: transparent;
370
+ }
371
+ 50% {
372
+ color: #fedd00;
373
+ }
374
+ 100% {
375
+ color: transparent;
376
+ }
377
+ }
378
+
379
+ .unassigned-notifications-icon-wpr {
380
+ padding-left: 3px;
381
+ position: relative;
382
+ top: 3px;
383
+ }
384
+
385
+ .unassigned-notifications-badge {
386
+ position: absolute;
387
+ top: 12px;
388
+ border-radius: 50%;
389
+ background: #e41e3f;
390
+ width: 24px;
391
+ height: 24px;
392
+ color: #fff;
393
+ left: 28px;
394
+ border: 2px solid #fff
395
+ }
396
+ .notification-count {
397
+ font-size: 12px;
398
+ font-weight: 500;
399
+ position: relative;
400
+ top: -1px;
401
+ text-align: center;
402
+ }
403
+
404
+ .icon-as-btn {
405
+ font-size: 12px;
406
+ vertical-align: middle;
407
+ background: rgba(255, 255, 255, 0.1);
408
+ border-radius: 50%;
409
+ padding: 5px;
410
+ height: 22px;
411
+ width: 22px;
412
+ }
413
+
414
+ // --------------------------------------------------
415
+ // ANIMATED ARROW https://codepen.io/cbrst/pen/ebxwLJ
416
+ // --------------------------------------------------
417
+ .arrow-wrapper {
418
+ display: flex;
419
+ align-items: center;
420
+ }
421
+
422
+ #arrow_1 .arrow {
423
+ $size: 16px;
424
+ $width: 2px;
425
+
426
+ cursor: pointer;
427
+ display: block;
428
+ width: $size / 1.414;
429
+ height: $size / 1.414 * 2;
430
+ position: relative;
431
+
432
+ & span,
433
+ &:before,
434
+ &:after {
435
+ // background: #fff;
436
+ background: #b1b4b8;
437
+ content: "";
438
+ display: block;
439
+ width: $size;
440
+ height: $width;
441
+ position: absolute;
442
+ top: calc(50% - (#{$width} / 2));
443
+ }
444
+
445
+ &:before {
446
+ transform: rotate(-45deg);
447
+ }
448
+ &:after {
449
+ transform: rotate(45deg);
450
+ }
451
+
452
+ & span {
453
+ width: 0;
454
+ }
455
+ &:hover span {
456
+ width: $size * 1.414;
457
+ }
458
+
459
+ @each $direction in "left" "right" {
460
+ &.arrow--#{$direction} {
461
+ & span,
462
+ &:before,
463
+ &:after {
464
+ #{$direction}: 0;
465
+ transform-origin: #{$direction} 50%;
466
+ }
467
+
468
+ &:before,
469
+ &:after {
470
+ transition: #{$direction} 0.3s 0.05s;
471
+ }
472
+
473
+ & span {
474
+ transition: width 0.3s, #{$direction} 0.3s 0.05s;
475
+ }
476
+
477
+ // &:hover {
478
+ // & span,
479
+ // &:before,
480
+ // &:after {
481
+ // #{$direction}: $size / 1.414 * -1;
482
+ // }
483
+ // }
484
+ }
485
+ }
486
+ }
487
+
488
+ // ------------------------------------------------------------------
489
+ // on-off availability switch btn // https://proto.io/freebies/onoff/
490
+ // ------------------------------------------------------------------
491
+ .onoffswitch {
492
+ display: inline-block;
493
+ position: relative;
494
+ width: 36px;
495
+ -webkit-user-select: none;
496
+ -moz-user-select: none;
497
+ -ms-user-select: none;
498
+ }
499
+ .onoffswitch-checkbox {
500
+ position: absolute;
501
+ opacity: 0;
502
+ pointer-events: none;
503
+ }
504
+ .onoffswitch-label {
505
+ display: block;
506
+ overflow: hidden;
507
+ cursor: pointer;
508
+ height: 18px;
509
+ padding: 0;
510
+ line-height: 18px;
511
+ border: 0px solid #ffffff;
512
+ border-radius: 20px;
513
+ background-color: #eeeeee;
514
+ }
515
+ .onoffswitch-label:before {
516
+ content: "";
517
+ display: block;
518
+ width: 20px;
519
+ margin: -1px;
520
+ background: #f44336;
521
+ position: absolute;
522
+ top: 0;
523
+ bottom: 0;
524
+ // right: 14px;
525
+ border-radius: 20px;
526
+ // box-shadow: 0 6px 12px 0px #757575;
527
+ }
528
+ .onoffswitch-checkbox:checked + .onoffswitch-label {
529
+ background-color: #eeeeee;
530
+ }
531
+ .onoffswitch-checkbox:checked + .onoffswitch-label,
532
+ .onoffswitch-checkbox:checked + .onoffswitch-label:before {
533
+ border-color: #eeeeee;
534
+ }
535
+ .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
536
+ margin-left: 0;
537
+ }
538
+ .onoffswitch-checkbox:checked + .onoffswitch-label:before {
539
+ right: 0px;
540
+ background-color: #4caf50;
541
+ // box-shadow: 3px 6px 18px 0px rgba(0, 0, 0, 0.2);
542
+ }
@@ -0,0 +1,24 @@
1
+ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { IonicModule } from '@ionic/angular';
3
+
4
+ import { ProjectItemComponent } from './project-item.component';
5
+
6
+ describe('ProjectItemComponent', () => {
7
+ let component: ProjectItemComponent;
8
+ let fixture: ComponentFixture<ProjectItemComponent>;
9
+
10
+ beforeEach(async(() => {
11
+ TestBed.configureTestingModule({
12
+ declarations: [ ProjectItemComponent ],
13
+ imports: [IonicModule.forRoot()]
14
+ }).compileComponents();
15
+
16
+ fixture = TestBed.createComponent(ProjectItemComponent);
17
+ component = fixture.componentInstance;
18
+ fixture.detectChanges();
19
+ }));
20
+
21
+ it('should create', () => {
22
+ expect(component).toBeTruthy();
23
+ });
24
+ });