@chat21/chat21-ionic 3.0.58 → 3.0.59-rc15

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