@chat21/chat21-web-widget 5.1.0-rc21 → 5.1.0-rc23

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 (25) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +1 -1
  3. package/src/app/app.component.scss +3 -13
  4. package/src/app/app.component.ts +1 -1
  5. package/src/app/component/conversation-detail/conversation/conversation.component.html +1 -0
  6. package/src/app/component/conversation-detail/conversation/conversation.component.scss +35 -0
  7. package/src/app/component/conversation-detail/conversation/conversation.component.ts +7 -10
  8. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.html +3 -1
  9. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.scss +6 -15
  10. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +13 -8
  11. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +14 -14
  12. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.html +4 -4
  13. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts +1 -1
  14. package/src/app/component/form/prechat-form/prechat-form.component.scss +1 -1
  15. package/src/app/component/list-all-conversations/list-all-conversations.component.scss +2 -2
  16. package/src/app/component/message/buttons/action-button/action-button.component.scss +3 -2
  17. package/src/app/component/message/buttons/link-button/link-button.component.scss +2 -1
  18. package/src/app/component/message/buttons/text-button/text-button.component.scss +2 -1
  19. package/src/app/component/selection-department/selection-department.component.scss +1 -1
  20. package/src/app/providers/global-settings.service.ts +13 -2
  21. package/src/app/sass/_variables.scss +4 -1
  22. package/src/app/utils/constants.ts +1 -1
  23. package/src/app/utils/globals.ts +9 -5
  24. package/src/assets/twp/index-dev.html +17 -0
  25. package/src/iframe-style.css +13 -5
package/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@
6
6
  ### **Copyrigth**:
7
7
  *Tiledesk SRL*
8
8
 
9
+ # 5.1.0-rc23
10
+ - **added**: hideHeaderConversation tiledeskSettings property
11
+
12
+ # 5.1.0-rc22
13
+ - **changed**: footer UI if fullscreenMode is enabled
14
+ - **changed**: buttons alignment if fullscreenMode is enabled
15
+ - **changed**: animation while increase/descrease widget size
16
+
9
17
  # 5.1.0-rc21
10
18
  - **bug-fixed**: shadow is visible while decrease widget size
11
19
 
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.1.0-rc21",
4
+ "version": "5.1.0-rc23",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.tiledesk.com",
7
7
  "repository": {
@@ -515,16 +515,6 @@ chat-root {
515
515
  border-radius: 16px;
516
516
  }
517
517
 
518
- .chat21-fullscreen {
519
- width: 100%;
520
- height: 100%;
521
- right: 0px;
522
- left: 0px;
523
- bottom: 0px;
524
- border-radius: 0px;
525
- max-height: none;
526
- }
527
-
528
518
 
529
519
  /***************************
530
520
  ******** PAGE MODAL ********
@@ -596,7 +586,7 @@ chat-root {
596
586
  .c21-header {
597
587
  overflow: hidden;
598
588
  width: 100%;
599
- height: 52px;
589
+ height: var(--chat-header-height);
600
590
  position: relative;
601
591
  margin: 0;
602
592
  padding: 0;
@@ -617,7 +607,7 @@ chat-root {
617
607
 
618
608
  .c21-header-container{
619
609
  position: relative;
620
- height: 52px;
610
+ height: 100%;
621
611
  width: 100%;
622
612
  margin: 0 auto;
623
613
 
@@ -688,7 +678,7 @@ chat-root {
688
678
  }
689
679
  .c21-body {
690
680
  position: absolute;
691
- top: 52px;
681
+ top: var(--chat-header-height);
692
682
  bottom: 0;
693
683
  left: 0;
694
684
  right: 0;
@@ -2122,7 +2122,7 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
2122
2122
  this.el.nativeElement.style.setProperty('--font-family-bubble-message', this.g.fontFamily)
2123
2123
  this.el.nativeElement.style.setProperty('--button-in-msg-font-family', this.g.fontFamily)
2124
2124
 
2125
-
2125
+ this.el.nativeElement.style.setProperty('--chat-header-height', this.g.hideHeaderConversation? '0px': null)
2126
2126
  }
2127
2127
 
2128
2128
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  <!-- HEADER -->
10
10
  <chat-conversation-header
11
+ *ngIf="!g?.hideHeaderConversation"
11
12
  [idConversation]= "conversationWith"
12
13
  [senderId]="senderId"
13
14
  [soundEnabled]="g?.soundEnabled"
@@ -13,6 +13,40 @@
13
13
  bottom: var(--chat-footer-height) !important
14
14
  }
15
15
 
16
+ @media(min-width:688px){
17
+ :host-context(#chat21-conversations.full-screen-mode){
18
+ --button-in-msg-padding: 10px 16px;
19
+ #chat21-footer{
20
+ left: 20%;
21
+ right: 20%;
22
+ }
23
+
24
+ chat-conversation-content ::ng-deep{
25
+ .attachment_container,
26
+ .buttons-wrapper {
27
+ justify-content: flex-start;
28
+ }
29
+
30
+ .button-in-message{
31
+ padding: 14px 22px !important
32
+ }
33
+
34
+ }
35
+
36
+ chat-conversation-footer ::ng-deep {
37
+ .textarea-container {
38
+ padding: 8px 24px;
39
+ background-color: var(--chat-footer-background-color);
40
+ border-radius: 28px;
41
+ }
42
+ #hiddenFooter,
43
+ #emoji-mart-container {
44
+ bottom: calc(100% + 10px)
45
+ }
46
+ }
47
+ }
48
+ }
49
+
16
50
  // ============= CSS #chat21-conversation-component ================= //
17
51
  #chat21-conversation-component {
18
52
  // background-color: #ffffff;
@@ -89,6 +123,7 @@
89
123
  left: 0px;
90
124
  right: 0px;
91
125
  margin: 0px;
126
+ margin: 12px 8px;
92
127
  // padding: 0;
93
128
 
94
129
  // box-shadow: 0 -1px 0px 0px $trasp-light-gray;
@@ -1022,7 +1022,7 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
1022
1022
  var tiledeskDiv = this.g.windowContext.window.document.getElementById('tiledeskdiv')
1023
1023
  tiledeskDiv.classList.remove('increaseSize')
1024
1024
  tiledeskDiv.classList.remove('decreaseSize')
1025
- tiledeskDiv.classList.remove('fullscreen')
1025
+ tiledeskDiv.classList.remove('top')
1026
1026
 
1027
1027
  this.onCloseWidget.emit();
1028
1028
  }
@@ -1078,18 +1078,15 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
1078
1078
  if(mode==='max'){
1079
1079
  tiledeskDiv.classList.add('increaseSize')
1080
1080
  tiledeskDiv.classList.remove('decreaseSize')
1081
- tiledeskDiv.classList.remove('fullscreen')
1082
- this.g.fullscreenMode = false
1081
+ tiledeskDiv.classList.remove('top')
1083
1082
  }else if(mode==='min'){
1084
1083
  tiledeskDiv.classList.add('decreaseSize')
1085
1084
  tiledeskDiv.classList.remove('increaseSize')
1086
- tiledeskDiv.classList.remove('fullscreen')
1087
- this.g.fullscreenMode = false
1088
- }else if(mode=== 'fullscreen'){
1089
- tiledeskDiv.classList.add('fullscreen')
1085
+ tiledeskDiv.classList.remove('top')
1086
+ }else if(mode=== 'top'){
1087
+ tiledeskDiv.classList.add('top')
1090
1088
  tiledeskDiv.classList.remove('increaseSize')
1091
1089
  tiledeskDiv.classList.remove('decreaseSize')
1092
- this.g.fullscreenMode = true
1093
1090
 
1094
1091
  }
1095
1092
  this.isMenuShow = false;
@@ -1132,8 +1129,8 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
1132
1129
  case HEADER_MENU_OPTION.MINIMIZE:
1133
1130
  this.onWidgetSizeChange('min')
1134
1131
  break;
1135
- case HEADER_MENU_OPTION.FULLSCREEN:
1136
- this.onWidgetSizeChange('fullscreen')
1132
+ case HEADER_MENU_OPTION.TOP:
1133
+ this.onWidgetSizeChange('top')
1137
1134
  break;
1138
1135
  }
1139
1136
  }
@@ -1,7 +1,9 @@
1
1
  <div class="audio-recorder">
2
2
  <button *ngIf="audioUrl" (click)="deleteRecording()">
3
3
  <span class="v-align-center">
4
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm80-160h80v-360h-80v360Zm160 0h80v-360h-80v360Z"/></svg>
4
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px">
5
+ <path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm80-160h80v-360h-80v360Zm160 0h80v-360h-80v360Z"/>
6
+ </svg>
5
7
  <!-- <i class="material-icons">delete_outline</i> -->
6
8
  </span>
7
9
  </button>
@@ -1,19 +1,10 @@
1
-
2
- @font-face {
3
- font-family: 'Material Icons';
4
- src: url('https://fonts.googleapis.com/icon?family=Material+Icons');
5
- }
6
-
7
- .material-icons.mic_none::before {
8
- content: 'mic_none';
9
- }
10
-
11
1
  .audio-recorder {
12
2
  text-align: center;
13
3
  margin: 0px;
14
4
  display: inline-flex;
15
5
  align-items: center;
16
- justify-content: center;
6
+ // justify-content: center;
7
+ justify-content: space-between;
17
8
  height: 100%;
18
9
  width: 100%;
19
10
  float: left;
@@ -22,8 +13,8 @@
22
13
 
23
14
  ::ng-deep chat-audio.test {
24
15
  display: flex;
25
- width: 80%;
26
- margin: 8px 0;
16
+ width: 90%;
17
+ // margin: 8px 0;
27
18
  pointer-events: auto;
28
19
  border-radius: var(--chat-footer-border-radius);
29
20
  background-color: var(--chat-footer-background-color);
@@ -52,10 +43,9 @@ button {
52
43
  background-color: transparent;
53
44
  color: var(--icon-fill-color);
54
45
  fill: var(--icon-fill-color);
55
- height: var(--chat-footer-height);
46
+ // height: var(--chat-footer-height);
56
47
 
57
48
  display: flex;
58
- align-self: flex-end;
59
49
  // margin: 0 8px;
60
50
  width: 34px;
61
51
  text-align: center;
@@ -75,6 +65,7 @@ button {
75
65
  justify-content: center;
76
66
  align-items: center;
77
67
  padding: 0px;
68
+ z-index: 0;
78
69
  }
79
70
 
80
71
  .mic-button svg {
@@ -27,8 +27,8 @@
27
27
  <!-- ICON ATTACHMENT -->
28
28
  <label *ngIf="showAttachmentFooterButton" tabindex="1502" aria-label="allegati" for="chat21-file" class="chat21-textarea-button" [class.active]="!isFilePendingToUpload && !hideTextReply" id="chat21-start-upload-doc">
29
29
  <span class="v-align-center">
30
- <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24" viewBox="0 0 24 24" >
31
- <path d="M18.4,13.2l-2.6,4.5c-1.5,2.6-4.9,3.6-7.6,2c-2.6-1.5-3.6-4.9-2-7.6l3.9-6.7c1.1-1.9,3.6-2.6,5.5-1.5 c1.9,1.1,2.6,3.6,1.5,5.5l-3.3,5.7c-0.7,1.3-2.3,1.7-3.6,1c-1.3-0.7-1.7-2.3-1-3.6l2-3.4c0.2-0.3,0.6-0.5,1-0.3s0.5,0.6,0.3,1 l-2,3.4c-0.3,0.5-0.2,1.1,0.3,1.5c0.4,0.4,1.1,0.4,1.5,0c0.1-0.1,0.2-0.2,0.2-0.3l3.3-5.7c0.7-1.2,0.3-2.8-1-3.5 c-1.2-0.7-2.8-0.3-3.5,1l-3.9,6.7C6.4,14.9,7,17.4,9,18.5c1.9,1.1,4.4,0.5,5.6-1.5l2.6-4.5c0.2-0.3,0.6-0.5,1-0.3 C18.5,12.5,18.6,12.9,18.4,13.2L18.4,13.2z"/>
30
+ <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24" viewBox="0 0 24 24" fill="currentColor">
31
+ <path d="M9.9,22.7c0,0-.1,0-.2,0-1.9.3-3.7-.2-5.2-1.4-3-2.3-3.6-6.4-1.4-9.5L9.5,2.5c.4-.5,1.1-.6,1.6-.3.5.4.6,1.1.3,1.6l-6.5,9.4c-1.4,2-1,4.8.9,6.3,1,.8,2.2,1.1,3.5.9,1.3-.2,2.4-.9,3.1-1.9l6-8.7c.9-1.2.6-3-.6-3.9-.6-.5-1.4-.6-2.1-.5-.8.1-1.4.5-1.9,1.1l-5.8,8.2c-.3.5-.2,1.1.2,1.5.2.2.5.3.8.2.3,0,.6-.2.7-.4l4.7-6.2c.4-.5,1.1-.6,1.6-.2.5.4.6,1.1.2,1.6l-4.7,6.2c-.5.7-1.4,1.2-2.3,1.3-.9.1-1.8-.2-2.5-.7-1.4-1.1-1.6-3.1-.6-4.6l5.8-8.2c.8-1.1,2-1.9,3.4-2.1,1.4-.2,2.7.1,3.8,1,2.2,1.7,2.7,4.8,1.1,7.1l-6,8.7c-1.1,1.5-2.6,2.5-4.4,2.8h0Z"/>
32
32
  </svg>
33
33
  </span>
34
34
  <input
@@ -47,11 +47,16 @@
47
47
  <!-- ICON EMOJII -->
48
48
  <label *ngIf="showEmojiFooterButton" tabindex="1504" aria-label="emojii" for="chat21-emojii" class="chat21-textarea-button" [class.active]="!isFilePendingToUpload && !hideTextReply" id="chat21-emoticon-picker" (click)="onEmojiiPickerClicked()">
49
49
  <span class="v-align-center">
50
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
51
- <path d="M0,0H20.57V20.57H0V0Z" fill="none"/>
50
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
51
+ <path stroke-width=".4px" stroke="currentColor" d="M12,20.8c-5.1,0-9.3-4.2-9.3-9.3S6.9,2.2,12,2.2s9.3,4.2,9.3,9.3-4.2,9.3-9.3,9.3ZM12,3.6c-4.4,0-7.9,3.6-7.9,7.9s3.6,7.9,7.9,7.9,7.9-3.6,7.9-7.9-3.6-7.9-7.9-7.9Z"/>
52
+ <path stroke-width=".4px" stroke="currentColor" d="M12,17.2c-2.7,0-4.3-1.9-4.6-2.3-.2-.3-.2-.7.1-1s.7-.2,1,.1c.1.2,1.4,1.8,3.5,1.8s2.2,0,3.5-1.8c.2-.3.7-.4,1-.1s.4.7.1,1c-1.7,2.2-4.1,2.3-4.6,2.3Z"/>
53
+ <path d="M8.7,10.9c-.9,0-1.6-.7-1.6-1.6s.7-1.6,1.6-1.6,1.6.7,1.6,1.6-.7,1.6-1.6,1.6Z"/>
54
+ <path d="M15.5,10.9c-.9,0-1.6-.7-1.6-1.6s.7-1.6,1.6-1.6,1.6.7,1.6,1.6-.7,1.6-1.6,1.6Z"/>
55
+
56
+ <!-- <path d="M0,0H20.57V20.57H0V0Z" fill="none"/>
52
57
  <circle cx="15.02" cy="9.86" r="1.29"/>
53
58
  <circle cx="9.02" cy="9.86" r="1.29"/>
54
- <path d="M12.02,15.43c-1.27,0-2.36-.69-2.96-1.71h-1.43c.69,1.76,2.39,3,4.39,3s3.7-1.24,4.39-3h-1.43c-.6,1.02-1.69,1.71-2.96,1.71Zm0-12C7.28,3.43,3.45,7.27,3.45,12s3.83,8.57,8.56,8.57,8.58-3.84,8.58-8.57S16.75,3.43,12.01,3.43Zm0,15.43c-3.79,0-6.86-3.07-6.86-6.86s3.07-6.86,6.86-6.86,6.86,3.07,6.86,6.86-3.07,6.86-6.86,6.86Z"/>
59
+ <path d="M12.02,15.43c-1.27,0-2.36-.69-2.96-1.71h-1.43c.69,1.76,2.39,3,4.39,3s3.7-1.24,4.39-3h-1.43c-.6,1.02-1.69,1.71-2.96,1.71Zm0-12C7.28,3.43,3.45,7.27,3.45,12s3.83,8.57,8.56,8.57,8.58-3.84,8.58-8.57S16.75,3.43,12.01,3.43Zm0,15.43c-3.79,0-6.86-3.07-6.86-6.86s3.07-6.86,6.86-6.86,6.86,3.07,6.86,6.86-3.07,6.86-6.86,6.86Z"/> -->
55
60
  </svg>
56
61
  </span>
57
62
  </label>
@@ -85,8 +90,8 @@
85
90
  <!-- ICON SEND -->
86
91
  <div *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton" tabindex="-1" class="chat21-textarea-button" [class.disabled]="showAlertEmoji || showAlertUrl" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
87
92
  <span class="v-align-center">
88
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="24" width="24" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
89
- <path d="M1.8,18.9V1.7L22,10.3L1.8,18.9z M3.9,15.6l12.6-5.4L3.9,4.9v3.7l6.4,1.6l-6.4,1.6V15.6z M3.9,15.6V4.9v7V15.6z"/>
93
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="24" width="24" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" fill="currentColor">
94
+ <path class="cls-1" d="M1.8,20.6V3.4l20.2,8.6L1.8,20.6ZM3.9,17.3l12.6-5.4L3.9,6.6v3.7l6.4,1.6-6.4,1.6v3.8ZM3.9,17.3V6.6v10.7Z"/>
90
95
  </svg>
91
96
  </span>
92
97
  </div>
@@ -107,7 +112,7 @@
107
112
  <!-- EMOJII PICKER-->
108
113
  <div [style.visibility]="isEmojiiPickerShow?'visible':'hidden'" class="emoji-container" id="emoji-mart-container" #emoji_mart_container>
109
114
  <!-- <ng-container #emojii_container></ng-container> -->
110
- <emoji-mart id="emoji-mart"
115
+ <emoji-mart id="emoji-mart"
111
116
  *ngIf="showEmojiPicker"
112
117
  class="emoji-mart"
113
118
  [showPreview]="emojiiOptions?.showPreview"
@@ -6,9 +6,8 @@
6
6
  display: flex;
7
7
  // width: 100%;
8
8
  align-items: center;
9
- gap: 8px;
10
9
  justify-content: space-between;
11
- margin: 0px 8px;
10
+ gap: 8px;
12
11
 
13
12
  //if attachment icon OR emoji icon is not in DOM -> increment textarea width
14
13
  &:has(:not(#chat21-start-upload-doc), :not(#chat21-emoticon-picker)) .visible-text-area {
@@ -23,15 +22,15 @@
23
22
 
24
23
  .icons-container{
25
24
  display: flex;
26
- align-self: flex-end;
25
+ // align-self: flex-end;
27
26
  // margin-left: 8px;
28
27
  // margin-right: 8px;
29
- gap: 8px;
28
+ gap: 4px;
30
29
  }
31
30
 
32
31
  .visible-text-area {
33
32
  width: 70%;
34
- margin: 8px 0px;
33
+ // margin: 12px 0px;
35
34
  pointer-events: auto;
36
35
  border-radius: var(--chat-footer-border-radius);
37
36
  background-color: var(--chat-footer-background-color);
@@ -44,9 +43,10 @@
44
43
  }
45
44
 
46
45
  .chat21-textarea-button {
47
- fill: var(--icon-fill-color);
46
+ // fill: var(--icon-fill-color);
47
+ color: var(--icon-fill-color);
48
48
  pointer-events: auto;
49
- height: var(--chat-footer-height);
49
+ // height: var(--chat-footer-height);
50
50
  bottom: 22px;
51
51
  opacity: 0.3;
52
52
  cursor: initial;
@@ -206,7 +206,7 @@ textarea:active{
206
206
 
207
207
  #chat21-button-send {
208
208
  display: flex;
209
- align-self: flex-end;
209
+ // align-self: flex-end;
210
210
  // margin: 0 8px;
211
211
  width: 34px;
212
212
  text-align: center;
@@ -218,7 +218,7 @@ textarea:active{
218
218
  width: 34px;
219
219
  text-align: center;
220
220
  justify-content: center;
221
- height: var(--chat-footer-height);
221
+ // height: var(--chat-footer-height);
222
222
  &.active{
223
223
  width: 100%;
224
224
  }
@@ -392,20 +392,20 @@ textarea:active{
392
392
 
393
393
 
394
394
  .emoji-container {
395
- height: 312px;
395
+ height: 319px;
396
396
  position: absolute;
397
397
  overflow: hidden;
398
- width: 89%;
398
+ width: 338px;
399
399
  bottom: 100%;
400
400
  z-index: 10;
401
401
  left: 10px;
402
- box-shadow: 0px -15px 20px -13px rgba(0, 0, 0 , 0.38);
403
- -webkit-box-shadow: 0px -15px 20px -13px rgba(0, 0, 0 , 0.38);
402
+ box-shadow: 0 -4px 14px -13px rgba(0, 0, 0 , 0.38);
403
+ -webkit-box-shadow: 0 -4px 14px -13px rgba(0, 0, 0 , 0.38);
404
404
  }
405
405
  .emoji-mart {
406
406
  position: absolute;
407
407
  // bottom: 40px;
408
408
  // left: 10px;
409
409
  border: none;
410
- margin: -2px -2px 0px;
410
+ // margin: -2px -2px 0px;
411
411
  }
@@ -132,7 +132,7 @@
132
132
  <span class="label-menu-item">{{ translationMap?.get('MAXIMIZE') }}</span>
133
133
  </div>
134
134
  <!-- ICON MINIMIZE -->
135
- <div class="c21-header-button c21-right" *ngIf="heightStatus==='max' || heightStatus==='full' || fullscreenMode" (click)="onChangeSize('min')">
135
+ <div class="c21-header-button c21-right" *ngIf="heightStatus==='max' || heightStatus==='top' || fullscreenMode" (click)="onChangeSize('min')">
136
136
  <svg role="img" aria-labelledby="altIconTitle" class="icon-menu" fill="none" xmlns="http://www.w3.org/2000/svg" transform="matrix(-1,0,0,1,0,0)"
137
137
  width="17" height="17" viewBox="0 0 17 17">
138
138
  <path d="M13.59 5.31h-1.7l3.3-3.3-1.2-1.2-3.3 3.3v-1.7a.85.85 0 1 0-1.7 0v4.6h4.6a.85.85 0 1 0 0-1.7M1.57 9.84c0 .47.38.85.85.85h1.7l-3.3 3.3 1.2 1.2 3.3-3.3v1.7a.85.85 0 1 0 1.7 0v-4.6h-4.6a.85.85 0 0 0-.85.85" fill="currentColor"></path>
@@ -141,8 +141,8 @@
141
141
  <span class="label-menu-item">{{ translationMap?.get('MINIMIZE') }}</span>
142
142
  </div>
143
143
 
144
- <!-- FULLSCREEN -->
145
- <div class="c21-header-button c21-right" *ngIf="heightStatus!=='full' && !fullscreenMode" (click)="onChangeSize('full')">
144
+ <!-- ICON TOP -->
145
+ <!-- <div class="c21-header-button c21-right" *ngIf="heightStatus!=='top' && !fullscreenMode" (click)="onChangeSize('top')">
146
146
  <svg role="img" aria-labelledby="altIconTitle" fill="none" xmlns="http://www.w3.org/2000/svg" transform="matrix(-1,0,0,1,0,0)"
147
147
  width="17" height="17" viewBox="0 0 17 17">
148
148
  <path fill="currentColor" d="M6.5,8.3l-2.8,2.8v-1.7c0-.5-.4-.9-.9-.9s-.8.4-.8.9v4.6h4.6c.5,0,.8-.4.8-.9s-.4-.8-.8-.8h-1.7l2.8-2.8-1.2-1.2ZM9.4,2c-.5,0-.8.4-.8.8s.4.9.8.9h1.7l-2.8,2.8,1.2,1.2,2.8-2.8v1.7c0,.5.4.8.8.8s.9-.4.9-.8V2h-4.6Z"/>
@@ -150,7 +150,7 @@
150
150
  <title id="altIconTitle">{{ translationMap?.get('FULLSCREEN') }}</title>
151
151
  </svg>
152
152
  <span class="label-menu-item">{{ translationMap?.get('FULLSCREEN') }}</span>
153
- </div>
153
+ </div> -->
154
154
 
155
155
  <!-- ICON LOGOUT -->
156
156
  <div class="c21-header-button c21-right" *ngIf="!hideSignOutOptionMenu" (click)="signOut()">
@@ -110,7 +110,7 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
110
110
  this.heightStatus = status
111
111
  if(status === 'min') this.onMenuOptionClick.emit(HEADER_MENU_OPTION.MINIMIZE)
112
112
  if(status === 'max') this.onMenuOptionClick.emit(HEADER_MENU_OPTION.MAXIMIZE)
113
- if(status === 'full') this.onMenuOptionClick.emit(HEADER_MENU_OPTION.FULLSCREEN)
113
+ if(status === 'top') this.onMenuOptionClick.emit(HEADER_MENU_OPTION.TOP)
114
114
  this.onMenuOptionShow.emit(false)
115
115
  }
116
116
  toggleSound() {
@@ -6,7 +6,7 @@
6
6
  .c21-header {
7
7
  overflow: hidden;
8
8
  width: 100%;
9
- height: 52px;
9
+ height: var(--chat-header-height);
10
10
  .c21-header-button {
11
11
  .c21-close-button.c21-small {
12
12
  width: 31px;
@@ -15,7 +15,7 @@
15
15
  .c21-header {
16
16
  overflow: hidden;
17
17
  width: 100%;
18
- height: 52px;
18
+ height: var(--chat-header-height);
19
19
  position: relative;
20
20
  margin: 0;
21
21
  padding: 0;
@@ -64,7 +64,7 @@
64
64
 
65
65
  .c21-header-container{
66
66
  position: relative;
67
- height: 52px;
67
+ height: 100%;
68
68
  width: 100%;
69
69
  margin: 0 auto;
70
70
 
@@ -5,12 +5,13 @@
5
5
  --hoverTextColor: #{var(--blue)};
6
6
  --buttonFontSize: #{var(--button-in-msg-font-size)};
7
7
  --max-width: #{var(--button-in-msg-max-width)};
8
+ --padding: #{var(--button-in-msg-padding)};
8
9
  --fontFamily: #{var(--button-in-msg-font-family)};
9
10
  }
10
11
 
11
12
  .button-in-msg {
12
- padding: 8px 16px!important;
13
- position: relative;
13
+ padding: var(--padding);
14
+ // position: relative;
14
15
  max-width: var(--max-width);
15
16
  min-width: inherit;
16
17
  cursor: pointer;
@@ -5,11 +5,12 @@
5
5
  --hoverTextColor: #{var(--blue)};
6
6
  --buttonFontSize: #{var(--button-in-msg-font-size)};
7
7
  --max-width: #{var(--button-in-msg-max-width)};
8
+ --padding: #{var(--button-in-msg-padding)};
8
9
  --font-family: #{var(--button-in-msg-font-family)};
9
10
  }
10
11
 
11
12
  .button-in-msg {
12
- padding: 8px 16px!important;
13
+ padding: var(--padding);
13
14
  position: relative;
14
15
  max-width: var(--max-width);
15
16
  min-width: inherit;
@@ -5,13 +5,14 @@
5
5
  --hoverTextColor: #{var(--blue)};
6
6
  --buttonFontSize: #{var(--button-in-msg-font-size)};
7
7
  --max-width: #{var(--button-in-msg-max-width)};
8
+ --padding: #{var(--button-in-msg-padding)};
8
9
  --font-family: #{var(--button-in-msg-font-family)};
9
10
  }
10
11
 
11
12
 
12
13
  .button-in-msg {
13
14
 
14
- padding: 8px 16px!important;
15
+ padding: var(--padding);
15
16
  position: relative;
16
17
  max-width: var(--max-width);
17
18
  min-width: inherit;
@@ -12,7 +12,7 @@
12
12
  .c21-header {
13
13
  overflow: hidden;
14
14
  width: 100%;
15
- height: 52px;
15
+ height: var(--chat-header-height);
16
16
  .c21-header-button {
17
17
  .c21-close-button.c21-small {
18
18
  width: 31px;
@@ -760,13 +760,19 @@ export class GlobalSettingsService {
760
760
  TEMP = tiledeskSettings['fullscreenMode'];
761
761
  // this.logger.debug('[GLOBAL-SET] setVariablesFromSettings > fullscreenMode:: ', TEMP);
762
762
  if (TEMP !== undefined) {
763
- globals.fullscreenMode = TEMP;
763
+ globals.fullscreenMode = (TEMP === true) ? true : false;
764
764
  // globals.setParameter('fullscreenMode', TEMP);
765
765
  }
766
766
  TEMP = tiledeskSettings['hideHeaderCloseButton'];
767
767
  // this.logger.debug('[GLOBAL-SET] setVariablesFromSettings > hideHeaderCloseButton:: ', TEMP);
768
768
  if (TEMP !== undefined) {
769
- globals.hideHeaderCloseButton = TEMP;
769
+ globals.hideHeaderCloseButton = (TEMP === true) ? true : false;
770
+ // globals.setParameter('hideHeaderCloseButton', TEMP);
771
+ }
772
+ TEMP = tiledeskSettings['hideHeaderConversation'];
773
+ // this.logger.debug('[GLOBAL-SET] setVariablesFromSettings > hideHeaderCloseButton:: ', TEMP);
774
+ if (TEMP !== undefined) {
775
+ globals.hideHeaderConversation = (TEMP === true) ? true : false;
770
776
  // globals.setParameter('hideHeaderCloseButton', TEMP);
771
777
  }
772
778
  TEMP = tiledeskSettings['themeColor'];
@@ -1510,6 +1516,11 @@ export class GlobalSettingsService {
1510
1516
  globals.hideHeaderCloseButton = stringToBoolean(TEMP);
1511
1517
  }
1512
1518
 
1519
+ TEMP = getParameterByName(windowContext, 'tiledesk_hideHeaderConversation');
1520
+ if (TEMP) {
1521
+ globals.hideHeaderConversation = stringToBoolean(TEMP);
1522
+ }
1523
+
1513
1524
  TEMP = getParameterByName(windowContext, 'tiledesk_themeColor');
1514
1525
  if (TEMP) {
1515
1526
  const themecolor = stringToBoolean(TEMP);
@@ -22,12 +22,15 @@
22
22
  --button-in-msg-font-size: 15px;
23
23
  --button-in-msg-font-family: 'Roboto','Google Sans', Helvetica, Arial, sans-serif;
24
24
  --button-in-msg-max-width: 280px;
25
+ --button-in-msg-padding: 8px 16px;
25
26
 
26
27
  --max-width-images: 230px; //change also MAX_WIDTH_IMAGES in constants.ts
27
28
 
28
29
  --bkg-color-info-message: rgba(24, 119, 242, 0.1);
29
30
 
30
- --chat-footer-height: 56px;
31
+ --chat-header-height: 52px;
32
+
33
+ --chat-footer-height: 64px;
31
34
  --chat-footer-logo-height: 30px;
32
35
  --chat-footer-border-radius: 16px;
33
36
  --chat-footer-background-color: #f6f7fb;
@@ -74,6 +74,6 @@ export const HEADER_MENU_OPTION = {
74
74
  RESTART : 'restart',
75
75
  MAXIMIZE : 'maximize',
76
76
  MINIMIZE : 'minimize',
77
- FULLSCREEN : 'fullscreen'
77
+ TOP : 'top'
78
78
  }
79
79
 
@@ -135,7 +135,6 @@ export class Globals {
135
135
  userEmail: string;
136
136
  widgetTitle: string;
137
137
  fullscreenMode: boolean;
138
- hideHeaderCloseButton: boolean;
139
138
  themeColor: string;
140
139
  themeColorOpacity: number;
141
140
  themeForegroundColor: string;
@@ -161,6 +160,8 @@ export class Globals {
161
160
  baloonShape: string;
162
161
  isLogEnabled: boolean;
163
162
  openExternalLinkButton: boolean;
163
+ hideHeaderConversation: boolean
164
+ hideHeaderCloseButton: boolean;
164
165
  hideHeaderConversationOptionsMenu: boolean;
165
166
  hideCloseConversationOptionMenu: boolean;
166
167
  hideSettings: boolean;
@@ -291,9 +292,6 @@ export class Globals {
291
292
  * average response time of his team (if 'dynamicWaitTimeReply' is
292
293
  * false the WAITING_TIME_NOT_FOUND will always be displayed)
293
294
  * is set to true for backward compatibility with old projects */
294
- this.hideHeaderCloseButton = false;
295
- /** Hide the close button in the widget header. Permitted values: true,
296
- false. The default value is false. */
297
295
  this.fullscreenMode = false;
298
296
  /** if it is true, the chat window is open in fullscreen mode. Permitted
299
297
  values: true, false. Default value : false */
@@ -336,6 +334,12 @@ export class Globals {
336
334
  this.isLogEnabled = false;
337
335
  // this.parameters['isLogEnabled'] = false;
338
336
  this.openExternalLinkButton = true;
337
+ /** Hide the header conversation Permitted values: true,
338
+ false. The default value is false. */
339
+ this.hideHeaderConversation= false;
340
+ /** Hide the close button in the widget header. Permitted values: true,
341
+ false. The default value is false. */
342
+ this.hideHeaderCloseButton = false;
339
343
  /** enable to hide/show upper-right header conversation options menu */
340
344
  this.hideHeaderConversationOptionsMenu = false;
341
345
  /** enable to close a conversation from upper-right header menu */
@@ -534,7 +538,7 @@ export class Globals {
534
538
  'fullscreenMode': this.fullscreenMode,
535
539
  'filterByRequester': this.filterByRequester,
536
540
  'hideHeaderConversationOptionsMenu': this.hideHeaderConversationOptionsMenu, 'hideHeaderCloseButton': this.hideHeaderCloseButton,
537
- 'hideCloseConversationOptionMenu': this.hideCloseConversationOptionMenu,
541
+ 'hideCloseConversationOptionMenu': this.hideCloseConversationOptionMenu, 'hideHeaderConversation': this.hideHeaderConversation,
538
542
  'hideSettings': this.hideSettings,
539
543
  'isLogEnabled': this.isLogEnabled,
540
544
  'isOpen': this.isOpen, 'isShown': this.isShown,
@@ -1249,6 +1249,13 @@
1249
1249
  window.Tiledesk('restart')
1250
1250
  }
1251
1251
 
1252
+ function onClickHideHeaderConversation(){
1253
+ let status = document.querySelector('input[name="hideHeaderConversation"]:checked').value
1254
+ window.tiledeskSettings['hideHeaderConversation'] = stringToBoolean(status)
1255
+ console.log('onClickHideHeaderConversation: status-->',window.tiledeskSettings);
1256
+ window.Tiledesk('restart')
1257
+ }
1258
+
1252
1259
  function onClickHideHeaderCloseButton(){
1253
1260
  let status = document.querySelector('input[name="hideHeaderCloseButton"]:checked').value
1254
1261
  window.tiledeskSettings['hideHeaderCloseButton'] = stringToBoolean(status)
@@ -2245,6 +2252,16 @@
2245
2252
 
2246
2253
 
2247
2254
  <div><h3 style="line-height: 0.3;">MANAGE <em><strong>CONVERSATION DETAIL</strong></em></h3></div>
2255
+ <div class="row">
2256
+ <div class="col-md-5 formElement"><span><em><strong>hideHeaderConversation</strong></em></span></div>
2257
+ <div class="col-md-5">
2258
+ <input class="form-check-input" type="radio" name="hideHeaderConversation" value="true"><label>True</label>
2259
+ <input class="form-check-input" type="radio" name="hideHeaderConversation" value="false" checked><label>False</label>
2260
+ </div>
2261
+ <div class="col-md-2">
2262
+ <button class="btn btn-light" onclick="onClickHideHeaderConversation()">Test this setting <i class="fa fa-magic" aria-hidden="true"></i></button>
2263
+ </div>
2264
+ </div>
2248
2265
  <div class="row">
2249
2266
  <div class="col-md-5 formElement"><span><em><strong>hideHeaderCloseButton</strong></em></span></div>
2250
2267
  <div class="col-md-5">
@@ -34,10 +34,7 @@
34
34
 
35
35
  }
36
36
 
37
-
38
37
  #tiledeskdiv.fullscreen {
39
- /* transition: width 1s, height 1s; */
40
- /* transition: all 0.5s ease-in !important; */
41
38
  right: 0px;
42
39
  left: 0px;
43
40
  top: 0px;
@@ -45,6 +42,17 @@
45
42
  width: 100%;
46
43
  height: 100%;
47
44
  }
45
+
46
+ #tiledeskdiv.top {
47
+ /* transition: width 1s, height 1s; */
48
+ /* transition: all 0.5s ease-in !important; */
49
+ position: fixed;
50
+ top: 50%;
51
+ left: 50%;
52
+ width: var(--iframeMaxWidth);
53
+ height: var(--iframeMaxHeight);
54
+ transform: translate(-50%, -50%);
55
+ }
48
56
 
49
57
 
50
58
  @keyframes right-animate {
@@ -106,14 +114,14 @@
106
114
  }
107
115
 
108
116
  #tiledesk-container.open #tiledeskdiv.decreaseSize {
109
- transition: all 0.5s ease-in;
117
+ transition: width 200ms, height 200ms, max-height 200ms, transform 300ms cubic-bezier(0, 1.2, 1, 1), opacity 83ms ease-out;
110
118
  width: var(--iframeMinWidth);
111
119
  height: var(--iframeMinHeight);
112
120
  }
113
121
 
114
122
  #tiledesk-container.open #tiledeskdiv.increaseSize {
115
123
  /* transition: width 1s, height 1s; */
116
- transition: all 0.5s ease-in;
124
+ transition: width 200ms, height 200ms, max-height 200ms, transform 300ms cubic-bezier(0, 1.2, 1, 1), opacity 83ms ease-out;
117
125
  width: var(--iframeMaxWidth);
118
126
  height: var(--iframeMaxHeight);
119
127
  }