@chat21/chat21-web-widget 5.0.45 → 5.0.46-rc.2

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 (48) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/angular.json +2 -1
  3. package/dist/assets/i18n/en.json +1 -1
  4. package/dist/assets/i18n/es.json +22 -9
  5. package/dist/assets/i18n/fr.json +20 -7
  6. package/dist/assets/i18n/it.json +24 -11
  7. package/dist/assets/twp/index-dev.html +1 -1
  8. package/dist/iframe-style.css +8 -1
  9. package/dist/main.js +1 -1
  10. package/package.json +1 -1
  11. package/src/app/app.component.scss +4 -3
  12. package/src/app/app.component.spec.ts +59 -18
  13. package/src/app/component/conversation-detail/conversation/conversation.component.spec.ts +12 -1
  14. package/src/app/component/conversation-detail/conversation/conversation.component.ts +4 -2
  15. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +7 -4
  16. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.spec.ts +11 -3
  17. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.spec.ts +11 -4
  18. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.spec.ts +9 -59
  19. package/src/app/component/form/form-builder/form-builder.component.spec.ts +9 -1
  20. package/src/app/component/form/inputs/form-textarea/form-textarea.component.html +5 -5
  21. package/src/app/component/form/inputs/form-textarea/form-textarea.component.spec.ts +1 -1
  22. package/src/app/component/form/inputs/form-textarea/form-textarea.component.ts +1 -1
  23. package/src/app/component/home/home.component.spec.ts +12 -3
  24. package/src/app/component/home-conversations/home-conversations.component.spec.ts +9 -1
  25. package/src/app/component/list-all-conversations/list-all-conversations.component.spec.ts +9 -11
  26. package/src/app/component/list-conversations/list-conversations.component.spec.ts +9 -1
  27. package/src/app/component/message/buttons/action-button/action-button.component.scss +1 -0
  28. package/src/app/component/message/buttons/link-button/link-button.component.scss +1 -0
  29. package/src/app/component/message/buttons/text-button/text-button.component.scss +1 -0
  30. package/src/app/component/message/frame/frame.component.spec.ts +16 -3
  31. package/src/app/component/message/frame/frame.component.ts +2 -2
  32. package/src/app/component/message/image/image.component.ts +46 -0
  33. package/src/app/component/message/info-message/info-message.component.spec.ts +9 -1
  34. package/src/app/component/message/return-receipt/return-receipt.component.spec.ts +17 -2
  35. package/src/app/component/message/text/text.component.spec.ts +2 -2
  36. package/src/app/providers/settings-saver.service.ts +1 -1
  37. package/src/app/utils/globals.ts +1 -1
  38. package/src/assets/i18n/en.json +1 -1
  39. package/src/assets/i18n/es.json +22 -9
  40. package/src/assets/i18n/fr.json +20 -7
  41. package/src/assets/i18n/it.json +24 -11
  42. package/src/assets/twp/index-dev.html +1 -1
  43. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +6 -47
  44. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +5 -23
  45. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.spec.ts +29 -19
  46. package/src/chat21-core/utils/utils-message.ts +1 -1
  47. package/src/chat21-core/utils/utils.ts +3 -3
  48. package/src/iframe-style.css +8 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-web-widget",
3
3
  "author": "Tiledesk SRL",
4
- "version": "5.0.45",
4
+ "version": "5.0.46-rc.2",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://www.tiledesk.com",
7
7
  "repository": {
@@ -650,10 +650,11 @@ chat-root {
650
650
  justify-content: center;
651
651
  text-align: center;
652
652
  // margin: 0 10px 0 10px;
653
- width: 40px;
654
- height: 40px;
655
- margin: 6px;
653
+ width: 35px;//40px;
654
+ height: 35px;//40px;
655
+ margin: 9px; //6px;
656
656
  padding: 0px;
657
+ border-radius: 8px;
657
658
 
658
659
  cursor: pointer;
659
660
  &.c21-right{
@@ -1,5 +1,5 @@
1
1
  import { Triggerhandler } from './../chat21-core/utils/triggerHandler';
2
- import { TestBed, waitForAsync } from '@angular/core/testing';
2
+ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
3
3
  import { RouterTestingModule } from '@angular/router/testing';
4
4
  import { AppComponent } from './app.component';
5
5
  import { GlobalSettingsService } from './providers/global-settings.service';
@@ -7,20 +7,56 @@ import { HttpClientTestingModule } from '@angular/common/http/testing';
7
7
  import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
8
8
  import { SettingsSaverService } from './providers/settings-saver.service';
9
9
  import { TranslatorService } from './providers/translator.service';
10
-
10
+ import { TranslateModule } from '@ngx-translate/core';
11
+ import { CustomTranslateService } from '../chat21-core/providers/custom-translate.service';
12
+ import { ConversationsHandlerService } from '../chat21-core/providers/abstract/conversations-handler.service';
13
+ import { ArchivedConversationsHandlerService } from '../chat21-core/providers/abstract/archivedconversations-handler.service';
14
+ import { TiledeskRequestsService } from 'src/chat21-core/providers/tiledesk/tiledesk-requests.service';
15
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
16
+ import { MessagingAuthService } from 'src/chat21-core/providers/abstract/messagingAuth.service';
17
+ import { ConversationHandlerBuilderService } from 'src/chat21-core/providers/abstract/conversation-handler-builder.service';
18
+ import { ImageRepoService } from 'src/chat21-core/providers/abstract/image-repo.service';
19
+ import { TypingService } from 'src/chat21-core/providers/abstract/typing.service';
20
+ import { PresenceService } from 'src/chat21-core/providers/abstract/presence.service';
21
+ import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
22
+ import { AppConfigService } from './providers/app-config.service';
23
+ import { ChatManager } from 'src/chat21-core/providers/chat-manager';
24
+ import { NGXLogger } from 'ngx-logger';
25
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
26
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
27
+
11
28
  describe('AppComponent', () => {
29
+ let component: AppComponent;
30
+ let fixture: ComponentFixture<AppComponent>;
31
+ let ngxlogger: NGXLogger;
32
+ let customLogger = new CustomLogger(ngxlogger)
33
+
12
34
  beforeEach(waitForAsync(() => {
13
35
  TestBed.configureTestingModule({
14
36
  imports: [
15
37
  RouterTestingModule,
16
- HttpClientTestingModule
38
+ HttpClientTestingModule,
39
+ TranslateModule.forRoot(),
17
40
  ],
18
41
  providers:[
19
42
  Triggerhandler,
20
43
  GlobalSettingsService,
21
44
  AppStorageService,
45
+ AppConfigService,
22
46
  SettingsSaverService,
23
- TranslatorService
47
+ TranslatorService,
48
+ CustomTranslateService,
49
+ ChatManager,
50
+ ConversationsHandlerService,
51
+ ConversationHandlerBuilderService,
52
+ ArchivedConversationsHandlerService,
53
+ TiledeskRequestsService,
54
+ TiledeskAuthService,
55
+ MessagingAuthService,
56
+ ImageRepoService,
57
+ TypingService,
58
+ PresenceService,
59
+ UploadService
24
60
  ],
25
61
  declarations: [
26
62
  AppComponent
@@ -28,22 +64,27 @@ describe('AppComponent', () => {
28
64
  }).compileComponents();
29
65
  }));
30
66
 
31
- it('should create the app', () => {
32
- const fixture = TestBed.createComponent(AppComponent);
33
- const app = fixture.debugElement.componentInstance;
34
- expect(app).toBeTruthy();
67
+ beforeEach(() => {
68
+ fixture = TestBed.createComponent(AppComponent);
69
+ component = fixture.componentInstance;
70
+ LoggerInstance.setInstance(customLogger)
71
+ let logger = LoggerInstance.getInstance()
72
+ component['logger']= logger
73
+ fixture.detectChanges();
35
74
  });
36
75
 
37
- it(`should have as title 'widget'`, () => {
38
- const fixture = TestBed.createComponent(AppComponent);
39
- const app = fixture.debugElement.componentInstance;
40
- expect(app.title).toEqual('widget');
76
+ it('should create the app', () => {
77
+ expect(component).toBeTruthy();
41
78
  });
42
79
 
43
- it('should render title in a h1 tag', () => {
44
- const fixture = TestBed.createComponent(AppComponent);
45
- fixture.detectChanges();
46
- const compiled = fixture.debugElement.nativeElement;
47
- expect(compiled.querySelector('h1').textContent).toContain('Welcome to widget!');
48
- });
80
+ // it(`should have as title 'widget'`, () => {
81
+ // expect(component.title).toEqual('widget');
82
+ // });
83
+
84
+ // it('should render title in a h1 tag', () => {
85
+ // const fixture = TestBed.createComponent(AppComponent);
86
+ // fixture.detectChanges();
87
+ // const compiled = fixture.debugElement.nativeElement;
88
+ // expect(compiled.querySelector('h1').textContent).toContain('Welcome to widget!');
89
+ // });
49
90
  });
@@ -30,10 +30,15 @@ import { TypingService } from '../../../../chat21-core/providers/abstract/typing
30
30
  import { ImageRepoService } from '../../../../chat21-core/providers/abstract/image-repo.service';
31
31
  import { UploadService } from '../../../../chat21-core/providers/abstract/upload.service';
32
32
  import { TranslateModule } from '@ngx-translate/core';
33
+ import { NGXLogger } from 'ngx-logger';
34
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
35
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
33
36
 
34
37
  describe('ConversationComponent', () => {
35
38
  let component: ConversationComponent;
36
39
  let fixture: ComponentFixture<ConversationComponent>;
40
+ let ngxlogger: NGXLogger;
41
+ let customLogger = new CustomLogger(ngxlogger)
37
42
  class MockElementRef {}
38
43
 
39
44
  beforeEach(waitForAsync(() => {
@@ -66,7 +71,8 @@ describe('ConversationComponent', () => {
66
71
  ImageRepoService,
67
72
  UploadService,
68
73
  StarRatingWidgetService,
69
- TiledeskRequestsService
74
+ TiledeskRequestsService,
75
+ NGXLogger
70
76
  ],
71
77
  schemas: [NO_ERRORS_SCHEMA]
72
78
  })
@@ -76,6 +82,11 @@ describe('ConversationComponent', () => {
76
82
  beforeEach(() => {
77
83
  fixture = TestBed.createComponent(ConversationComponent);
78
84
  component = fixture.componentInstance;
85
+ LoggerInstance.setInstance(customLogger)
86
+ let logger = LoggerInstance.getInstance()
87
+ component['logger']= logger
88
+ let globals = fixture.debugElement.injector.get(Globals) as Globals;
89
+ globals.initDefafultParameters()
79
90
  fixture.detectChanges();
80
91
  });
81
92
 
@@ -198,8 +198,6 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
198
198
  // this.initAll();
199
199
  this.logger.debug('[CONV-COMP] ngOnInit: ', this.senderId);
200
200
  this.showMessageWelcome = false;
201
- this.elementRef.nativeElement.style.setProperty('--themeColor', this.stylesMap.get('themeColor'))
202
- this.elementRef.nativeElement.style.setProperty('--foregroundColor', this.stylesMap.get('foregroundColor'))
203
201
  // const subscriptionEndRenderMessage = this.appComponent.obsEndRenderMessage.subscribe(() => {
204
202
  // this.ngZone.run(() => {
205
203
  // // that.scrollToBottom();
@@ -307,6 +305,10 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
307
305
 
308
306
  ngOnChanges(changes: SimpleChanges) {
309
307
  this.logger.debug('[CONV-COMP] onChagnges', changes)
308
+ if(this.stylesMap){
309
+ this.elementRef.nativeElement.style.setProperty('--themeColor', this.stylesMap.get('themeColor'))
310
+ this.elementRef.nativeElement.style.setProperty('--foregroundColor', this.stylesMap.get('foregroundColor'))
311
+ }
310
312
  if (this.isOpen === true) {
311
313
  //this.updateConversationBadge();
312
314
  // this.scrollToBottom();
@@ -1,6 +1,6 @@
1
1
  import { MomentModule } from 'ngx-moment';
2
2
  import { TooltipModule } from 'ng2-tooltip-directive';
3
- import { async, ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
3
+ import { async, ComponentFixture, TestBed, waitForAsync, inject } from '@angular/core/testing';
4
4
 
5
5
  import { ConversationContentComponent } from './conversation-content.component';
6
6
  import { MarkedPipe } from '../../../directives/marked.pipe';
@@ -8,7 +8,7 @@ import { HtmlEntitiesEncodePipe } from '../../../directives/html-entities-encode
8
8
  import { UploadService } from '../../../../chat21-core/providers/abstract/upload.service';
9
9
  import { CustomLogger } from '../../../../chat21-core/providers/logger/customLogger';
10
10
  import { LoggerInstance } from '../../../../chat21-core/providers/logger/loggerInstance';
11
- import { NO_ERRORS_SCHEMA } from '@angular/core';
11
+ import { NO_ERRORS_SCHEMA, Injectable } from '@angular/core';
12
12
  import { By } from '@angular/platform-browser';
13
13
  import { ImageRepoService } from '../../../../chat21-core/providers/abstract/image-repo.service';
14
14
 
@@ -51,6 +51,8 @@ describe('ConversationContentComponent', () => {
51
51
  beforeEach(() => {
52
52
  fixture = TestBed.createComponent(ConversationContentComponent);
53
53
  component = fixture.componentInstance;
54
+ let upload = fixture.debugElement.injector.get(UploadService) as UploadService
55
+ upload.BSStateUpload.next({ upload: 100, type: 'image' })
54
56
  fixture.detectChanges();
55
57
  });
56
58
 
@@ -117,9 +119,9 @@ describe('ConversationContentComponent', () => {
117
119
  component.baseLocation = 'http://tiledesk-widget-pre.s3-eu-west-1.amazonaws.com'
118
120
  component.translationMap = new Map();
119
121
  component.stylesMap = new Map();
120
- fixture.detectChanges()
121
122
  const nativeEl: HTMLElement = fixture.nativeElement;
122
123
  const baseReceiveEl = nativeEl.querySelector('.message_sender_fullname');
124
+ fixture.detectChanges()
123
125
  expect(baseReceiveEl.textContent).toBe('BOT2');
124
126
  });
125
127
 
@@ -164,11 +166,12 @@ describe('ConversationContentComponent', () => {
164
166
  component.baseLocation = 'http://tiledesk-widget-pre.s3-eu-west-1.amazonaws.com'
165
167
  component.translationMap = new Map();
166
168
  component.stylesMap = new Map();
167
- fixture.detectChanges()
169
+
168
170
  const nativeEl: HTMLElement = fixture.nativeElement;
169
171
  const baseReceiveEl = nativeEl.querySelectorAll('.base_receive')
170
172
  const chatImageComponentChild = baseReceiveEl[0].querySelector('chat-avatar-image')
171
173
  const bubbleMessageComponentChild = baseReceiveEl[0].querySelector('chat-bubble-message.msg_receive')
174
+ fixture.detectChanges()
172
175
  expect(chatImageComponentChild).toBeTruthy();
173
176
  expect(bubbleMessageComponentChild).toBeTruthy();
174
177
  });
@@ -1,7 +1,7 @@
1
1
  import { style } from '@angular/animations';
2
2
  import { ChatManager } from './../../../../chat21-core/providers/chat-manager';
3
3
  import { Globals } from './../../../utils/globals';
4
- import { async, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
4
+ import { async, ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing';
5
5
  import { FormsModule } from '@angular/forms';
6
6
 
7
7
  import { ConversationFooterComponent } from './conversation-footer.component';
@@ -10,12 +10,17 @@ import { TypingService } from '../../../../chat21-core/providers/abstract/typing
10
10
  import { ConversationsHandlerService } from '../../../../chat21-core/providers/abstract/conversations-handler.service';
11
11
  import { ArchivedConversationsHandlerService } from '../../../../chat21-core/providers/abstract/archivedconversations-handler.service';
12
12
  import { By } from '@angular/platform-browser';
13
+ import { NGXLogger } from 'ngx-logger';
14
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
15
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
13
16
 
14
17
  describe('ConversationFooterComponent', () => {
15
18
  let component: ConversationFooterComponent;
16
19
  let fixture: ComponentFixture<ConversationFooterComponent>;
17
-
18
- beforeEach(async(() => {
20
+ let ngxlogger: NGXLogger;
21
+ let customLogger = new CustomLogger(ngxlogger)
22
+
23
+ beforeEach(waitForAsync(() => {
19
24
  TestBed.configureTestingModule({
20
25
  declarations: [
21
26
  ConversationFooterComponent,
@@ -36,6 +41,9 @@ describe('ConversationFooterComponent', () => {
36
41
  beforeEach(() => {
37
42
  fixture = TestBed.createComponent(ConversationFooterComponent);
38
43
  component = fixture.componentInstance;
44
+ LoggerInstance.setInstance(customLogger)
45
+ let logger = LoggerInstance.getInstance()
46
+ component['logger']= logger
39
47
  fixture.detectChanges();
40
48
  });
41
49
 
@@ -2,16 +2,21 @@ import { HttpClientModule } from '@angular/common/http';
2
2
  import { AppConfigService } from './../../../providers/app-config.service';
3
3
  import { Globals } from './../../../utils/globals';
4
4
  import { NO_ERRORS_SCHEMA } from '@angular/core';
5
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
5
+ import { async, ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
6
6
 
7
7
  import { ConversationHeaderComponent } from './conversation-header.component';
8
8
  import { TypingService } from '../../../../chat21-core/providers/abstract/typing.service';
9
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
10
+ import { NGXLogger } from 'ngx-logger';
11
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
9
12
 
10
13
  describe('ConversationHeaderComponent', () => {
11
14
  let component: ConversationHeaderComponent;
12
15
  let fixture: ComponentFixture<ConversationHeaderComponent>;
13
-
14
- beforeEach(async(() => {
16
+ let ngxlogger: NGXLogger;
17
+ let customLogger = new CustomLogger(ngxlogger)
18
+
19
+ beforeEach(waitForAsync(() => {
15
20
  TestBed.configureTestingModule({
16
21
  declarations: [ ConversationHeaderComponent ],
17
22
  imports: [
@@ -30,7 +35,9 @@ describe('ConversationHeaderComponent', () => {
30
35
  beforeEach(() => {
31
36
  fixture = TestBed.createComponent(ConversationHeaderComponent);
32
37
  component = fixture.componentInstance;
33
- fixture.detectChanges();
38
+ LoggerInstance.setInstance(customLogger)
39
+ let logger = LoggerInstance.getInstance()
40
+ component['logger']= logger
34
41
  });
35
42
 
36
43
  it('should create', () => {
@@ -5,62 +5,18 @@ import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
5
5
 
6
6
  import { ConversationPreviewComponent } from './conversation-preview.component';
7
7
  import { LogLevel } from 'src/chat21-core/utils/constants';
8
+ import { NGXLogger } from 'ngx-logger';
9
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
8
10
  const mockService = jasmine.createSpyObj('LoggerService', ['setLoggerConfig', "debug", "log", "warn", "info", "error" ]);
9
11
 
10
- describe('ConversationPreviewImageComponent', () => {
12
+ describe('ConversationPreviewComponent', () => {
11
13
  let component: ConversationPreviewComponent;
12
14
  let fixture: ComponentFixture<ConversationPreviewComponent>;
13
- let spy: jasmine.Spy;
14
- // let mockService = jasmine.Spy<LoggerService>;
15
- let testBedService: LoggerService;
16
-
17
- class MockLoggerService extends LoggerService {
18
-
19
- private logLevel: number = LogLevel.ERROR
20
- private isLogEnabled: boolean = true;
21
-
22
- setLoggerConfig(isLogEnabled: boolean, logLevel: string) {
23
- this.isLogEnabled = isLogEnabled;
24
- if (typeof logLevel === 'string') {
25
- this.logLevel = LogLevel[logLevel.toUpperCase()];
26
- } else {
27
- console.error('logLevel is not a string. See the chat21-ionic README.md')
28
- }
29
- }
30
- debug(...message: any[]) {
31
- if (this.isLogEnabled && this.logLevel >= LogLevel.DEBUG) {
32
- // this.logger.debug(message, ...optionalParams)
33
- console.debug(message)
34
- }
35
- }
36
- log(...message: any[]) {
37
- if (this.isLogEnabled && this.logLevel >= LogLevel.DEBUG) {
38
- // this.logger.log(message, ...optionalParams)
39
- console.log(message);
40
- }
41
- }
42
- warn(...message: any[]) {
43
- throw new Error('Method not implemented.');
44
- }
45
- info(...message: any[]) {
46
- throw new Error('Method not implemented.');
47
- }
48
- error(...message: any[]) {
49
- throw new Error('Method not implemented.');
50
- }
51
-
52
- }
15
+ let ngxlogger: NGXLogger;
16
+ let customLogger = new CustomLogger(ngxlogger)
53
17
 
54
18
  beforeEach(waitForAsync(() => {
55
- TestBed
56
- .overrideComponent(ConversationPreviewComponent, {
57
- set: {
58
- providers: [
59
- { provide: LoggerService, useClass: MockLoggerService }
60
- ]
61
- }
62
- })
63
- .configureTestingModule({
19
+ TestBed.configureTestingModule({
64
20
  declarations: [ ConversationPreviewComponent ],
65
21
  providers: [LoggerService]
66
22
  }).compileComponents();
@@ -69,15 +25,9 @@ describe('ConversationPreviewImageComponent', () => {
69
25
  beforeEach(() => {
70
26
  fixture = TestBed.createComponent(ConversationPreviewComponent);
71
27
  component = fixture.componentInstance;
72
- let testBedService = TestBed.inject(LoggerService);
73
- // spyOn(logger, 'setLoggerConfig').and.callThrough();
74
- // spyOn(logger,"debug").and.callThrough();
75
- // spyOn(logger,"log").and.callThrough();
76
- // const service = TestBed.inject(LoggerService)
77
- // // const service = TestBed.inject(LoggerService) as LoggerService;
78
- console.log('serivceeeeee', testBedService)
79
- // component.logger = service
80
- // component.logger = LoggerInstance.setInstance(service)
28
+ LoggerInstance.setInstance(customLogger)
29
+ let logger = LoggerInstance.getInstance()
30
+ component['logger']= logger
81
31
  fixture.detectChanges();
82
32
  });
83
33
 
@@ -4,11 +4,16 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
4
4
  import { ReactiveFormsModule } from '@angular/forms';
5
5
 
6
6
  import { FormBuilderComponent } from './form-builder.component';
7
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
8
+ import { NGXLogger } from 'ngx-logger';
9
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
7
10
 
8
11
  describe('FormBuilderComponent', () => {
9
12
  let component: FormBuilderComponent;
10
13
  let fixture: ComponentFixture<FormBuilderComponent>;
11
-
14
+ let ngxlogger: NGXLogger;
15
+ let customLogger = new CustomLogger(ngxlogger)
16
+
12
17
  beforeEach(waitForAsync(() => {
13
18
  TestBed.configureTestingModule({
14
19
  declarations: [ FormBuilderComponent ],
@@ -26,6 +31,9 @@ describe('FormBuilderComponent', () => {
26
31
  beforeEach(() => {
27
32
  fixture = TestBed.createComponent(FormBuilderComponent);
28
33
  component = fixture.componentInstance;
34
+ LoggerInstance.setInstance(customLogger)
35
+ let logger = LoggerInstance.getInstance()
36
+ component['logger']= logger
29
37
  fixture.detectChanges();
30
38
  });
31
39
 
@@ -13,12 +13,12 @@
13
13
  </small> - ->
14
14
  </div> -->
15
15
  <div class="form-group label-floating" id="div_input" #div_input
16
- [ngClass]="{'is-empty': !form.controls[element.name]?.value}">
16
+ [ngClass]="{'is-empty': !form?.controls[element.name]?.value}">
17
17
  <label class="control-label">
18
- {{element.text}}
18
+ {{element?.text}}
19
19
  </label>
20
20
  <textarea
21
- [formControlName]="element.name"
21
+ [formControlName]="element?.name"
22
22
  [rows]="rows"
23
23
  [tabIndex]="element?.tabIndex"
24
24
  type="text"
@@ -29,10 +29,10 @@
29
29
  (focusout)="onFocusOut()">
30
30
  </textarea>
31
31
  </div>
32
- <div *ngIf="hasSubmitted && form.controls[element.name].errors && form.controls[element.name].hasError('required')" class="text-danger">
32
+ <div *ngIf="hasSubmitted && form?.controls[element.name].errors && form?.controls[element.name].hasError('required')" class="text-danger">
33
33
  {{translationErrorLabelMap.get('LABEL_ERROR_FIELD_REQUIRED')}}
34
34
  </div>
35
- <div *ngIf="hasSubmitted && form.controls[element.name].errors && form.controls[element.name].hasError('pattern') && element.errorLabel" class="text-danger">
35
+ <div *ngIf="hasSubmitted && form?.controls[element.name].errors && form?.controls[element.name].hasError('pattern') && element?.errorLabel" class="text-danger">
36
36
  {{element.errorLabel}}
37
37
  </div>
38
38
  </form>
@@ -1,5 +1,5 @@
1
1
  import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { FormGroupDirective } from '@angular/forms';
2
+ import { FormGroup, FormGroupDirective } from '@angular/forms';
3
3
 
4
4
  import { FormTextareaComponent } from './form-textarea.component';
5
5
 
@@ -23,7 +23,7 @@ export class FormTextareaComponent implements OnInit {
23
23
 
24
24
  ngOnInit() {
25
25
  this.form = this.rootFormGroup.control as FormGroup;
26
- if(this.form.controls && this.form.controls[this.controlName]){
26
+ if(this.form && this.form.controls && this.form.controls[this.controlName]){
27
27
  this.form.controls[this.controlName].valueChanges.subscribe((value) => {
28
28
  this.hasSubmitted= false;
29
29
  this.setFormStyle();
@@ -1,5 +1,8 @@
1
1
  import { NO_ERRORS_SCHEMA } from '@angular/core';
2
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
3
+ import { NGXLogger } from 'ngx-logger';
4
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
5
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
3
6
  import { Globals } from '../../utils/globals';
4
7
 
5
8
  import { HomeComponent } from './home.component';
@@ -7,12 +10,15 @@ import { HomeComponent } from './home.component';
7
10
  describe('HomeComponent', () => {
8
11
  let component: HomeComponent;
9
12
  let fixture: ComponentFixture<HomeComponent>;
13
+ let ngxlogger: NGXLogger;
14
+ let customLogger = new CustomLogger(ngxlogger)
10
15
 
11
- beforeEach(async(() => {
16
+ beforeEach(waitForAsync(() => {
12
17
  TestBed.configureTestingModule({
13
18
  declarations: [ HomeComponent ],
14
19
  providers: [
15
- Globals
20
+ Globals,
21
+ NGXLogger
16
22
  ],
17
23
  schemas: [NO_ERRORS_SCHEMA]
18
24
  })
@@ -22,6 +28,9 @@ describe('HomeComponent', () => {
22
28
  beforeEach(() => {
23
29
  fixture = TestBed.createComponent(HomeComponent);
24
30
  component = fixture.componentInstance;
31
+ let loggerInstance = LoggerInstance.setInstance(customLogger)
32
+ let logger = LoggerInstance.getInstance()
33
+ component['logger']= logger
25
34
  fixture.detectChanges();
26
35
  });
27
36
 
@@ -13,11 +13,16 @@ import { ImageRepoService } from '../../../chat21-core/providers/abstract/image-
13
13
  import { ConversationsHandlerService } from '../../../chat21-core/providers/abstract/conversations-handler.service';
14
14
  import { ArchivedConversationsHandlerService } from '../../../chat21-core/providers/abstract/archivedconversations-handler.service';
15
15
  import { TranslateModule } from '@ngx-translate/core';
16
+ import { NGXLogger } from 'ngx-logger';
17
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
18
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
16
19
 
17
20
  describe('HomeConversationsComponent', () => {
18
21
  let component: HomeConversationsComponent;
19
22
  let fixture: ComponentFixture<HomeConversationsComponent>;
20
-
23
+ let ngxlogger: NGXLogger;
24
+ let customLogger = new CustomLogger(ngxlogger)
25
+
21
26
  beforeEach(waitForAsync(() => {
22
27
  TestBed.configureTestingModule({
23
28
  declarations: [ HomeConversationsComponent ],
@@ -44,6 +49,9 @@ describe('HomeConversationsComponent', () => {
44
49
  beforeEach(() => {
45
50
  fixture = TestBed.createComponent(HomeConversationsComponent);
46
51
  component = fixture.componentInstance;
52
+ LoggerInstance.setInstance(customLogger)
53
+ let logger = LoggerInstance.getInstance()
54
+ component['logger']= logger
47
55
  fixture.detectChanges();
48
56
  });
49
57
 
@@ -5,21 +5,16 @@ import { Globals } from '../../utils/globals';
5
5
 
6
6
  import { ListAllConversationsComponent } from './list-all-conversations.component';
7
7
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
8
+ import { NGXLogger } from 'ngx-logger';
9
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
10
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
8
11
 
9
12
  describe('ListAllConversationsComponent', () => {
10
13
  let component: ListAllConversationsComponent;
11
14
  let fixture: ComponentFixture<ListAllConversationsComponent>;
15
+ let ngxlogger: NGXLogger;
16
+ let customLogger = new CustomLogger(ngxlogger)
12
17
 
13
- class MockIterableDiffers implements IterableDiffers {
14
- factories: IterableDifferFactory[];
15
- find(iterable: any): IterableDifferFactory {
16
- return
17
- }
18
- create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers {
19
- return
20
- }
21
- }
22
-
23
18
  beforeEach(waitForAsync(() => {
24
19
  TestBed.configureTestingModule({
25
20
  declarations: [ ListAllConversationsComponent ],
@@ -28,7 +23,7 @@ describe('ListAllConversationsComponent', () => {
28
23
  ],
29
24
  providers: [
30
25
  Globals,
31
- { provide: IterableDiffers, useClass: MockIterableDiffers },
26
+ IterableDiffers,
32
27
  CustomTranslateService,
33
28
  TranslateService
34
29
  ],
@@ -40,6 +35,9 @@ describe('ListAllConversationsComponent', () => {
40
35
  beforeEach(() => {
41
36
  fixture = TestBed.createComponent(ListAllConversationsComponent);
42
37
  component = fixture.componentInstance;
38
+ LoggerInstance.setInstance(customLogger)
39
+ let logger = LoggerInstance.getInstance()
40
+ component['logger']= logger
43
41
  fixture.detectChanges();
44
42
  });
45
43
 
@@ -3,11 +3,16 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
4
4
 
5
5
  import { ListConversationsComponent } from './list-conversations.component';
6
+ import { NGXLogger } from 'ngx-logger';
7
+ import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
8
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
6
9
 
7
10
  describe('ListConversationsComponent', () => {
8
11
  let component: ListConversationsComponent;
9
12
  let fixture: ComponentFixture<ListConversationsComponent>;
10
-
13
+ let ngxlogger: NGXLogger;
14
+ let customLogger = new CustomLogger(ngxlogger)
15
+
11
16
  beforeEach(waitForAsync(() => {
12
17
  TestBed.configureTestingModule({
13
18
  declarations: [ ListConversationsComponent ],
@@ -22,6 +27,9 @@ describe('ListConversationsComponent', () => {
22
27
  beforeEach(() => {
23
28
  fixture = TestBed.createComponent(ListConversationsComponent);
24
29
  component = fixture.componentInstance;
30
+ LoggerInstance.setInstance(customLogger)
31
+ let logger = LoggerInstance.getInstance()
32
+ component['logger']= logger
25
33
  fixture.detectChanges();
26
34
  });
27
35
 
@@ -38,6 +38,7 @@
38
38
  &:hover {
39
39
  color: var(--hoverTextColor);
40
40
  background: var(--hoverBackgroundColor);
41
+ transform: scale(1.05);
41
42
  .icon-button-action {
42
43
  svg {
43
44
  fill: var(--hoverTextColor);
@@ -52,6 +52,7 @@
52
52
  &:hover {
53
53
  color: var(--hoverTextColor);
54
54
  background: var(--hoverBackgroundColor);
55
+ transform: scale(1.05);
55
56
  .icon-button-action, .icon-button-action-self {
56
57
  svg {
57
58
  fill: var(--hoverTextColor);
@@ -40,6 +40,7 @@
40
40
  &:hover {
41
41
  color: var(--hoverTextColor);
42
42
  background: var(--hoverBackgroundColor);
43
+ transform: scale(1.05);
43
44
  .icon-button-action {
44
45
  svg {
45
46
  fill: $black;