@chat21/chat21-web-widget 5.0.55 → 5.0.56-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.
- package/.github/workflows/build.yml +1 -0
- package/CHANGELOG.md +16 -0
- package/angular.json +6 -7
- package/package.json +5 -4
- package/src/app/app.component.html +1 -11
- package/src/app/app.component.scss +12 -13
- package/src/app/app.component.spec.ts +0 -2
- package/src/app/app.component.ts +29 -35
- package/src/app/app.module.ts +4 -5
- package/src/app/component/conversation-detail/conversation/conversation.component.html +1 -10
- package/src/app/component/conversation-detail/conversation/conversation.component.scss +5 -428
- package/src/app/component/conversation-detail/conversation/conversation.component.ts +23 -25
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.html +7 -66
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.scss +11 -81
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +0 -3
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts +6 -6
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +7 -32
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +11 -11
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +8 -8
- package/src/app/component/conversation-detail/conversation-header/conversation-header.component.html +4 -25
- package/src/app/component/conversation-detail/conversation-header/conversation-header.component.scss +5 -5
- package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts +4 -88
- package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.html +7 -16
- package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts +2 -26
- package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.html +1 -11
- package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.scss +5 -5
- package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts +2 -19
- package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.html +10 -42
- package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.scss +1 -2
- package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts +2 -3
- package/src/app/component/form/form-builder/form-builder.component.html +0 -1
- package/src/app/component/form/form-builder/form-builder.component.scss +1 -1
- package/src/app/component/form/form-builder/form-builder.component.ts +4 -5
- package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.scss +1 -2
- package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts +2 -3
- package/src/app/component/form/inputs/form-label/form-label.component.ts +0 -1
- package/src/app/component/form/inputs/form-text/form-text.component.scss +3 -13
- package/src/app/component/form/inputs/form-text/form-text.component.ts +1 -2
- package/src/app/component/form/inputs/form-textarea/form-textarea.component.html +0 -13
- package/src/app/component/form/inputs/form-textarea/form-textarea.component.scss +4 -4
- package/src/app/component/form/inputs/form-textarea/form-textarea.component.ts +0 -10
- package/src/app/component/form/prechat-form/prechat-form.component.html +0 -2
- package/src/app/component/form/prechat-form/prechat-form.component.scss +2 -2
- package/src/app/component/form/prechat-form/prechat-form.component.ts +2 -2
- package/src/app/component/home/home.component.scss +7 -7
- package/src/app/component/home/home.component.ts +1 -4
- package/src/app/component/home-conversations/home-conversations.component.scss +7 -7
- package/src/app/component/home-conversations/home-conversations.component.ts +9 -12
- package/src/app/component/last-message/last-message.component.scss +4 -4
- package/src/app/component/last-message/last-message.component.ts +4 -7
- package/src/app/component/launcher-button/launcher-button.component.ts +3 -3
- package/src/app/component/list-all-conversations/list-all-conversations.component.scss +2 -2
- package/src/app/component/list-all-conversations/list-all-conversations.component.ts +3 -3
- package/src/app/component/list-conversations/list-conversations.component.html +1 -1
- package/src/app/component/list-conversations/list-conversations.component.scss +3 -3
- package/src/app/component/list-conversations/list-conversations.component.ts +3 -6
- package/src/app/component/menu-options/menu-options.component.html +1 -8
- package/src/app/component/menu-options/menu-options.component.scss +4 -4
- package/src/app/component/menu-options/menu-options.component.ts +1 -1
- package/src/app/component/message/bubble-message/bubble-message.component.html +3 -4
- package/src/app/component/message/bubble-message/bubble-message.component.scss +3 -3
- package/src/app/component/message/bubble-message/bubble-message.component.spec.ts +0 -2
- package/src/app/component/message/bubble-message/bubble-message.component.ts +10 -15
- package/src/app/component/message/buttons/action-button/action-button.component.scss +6 -6
- package/src/app/component/message/buttons/link-button/link-button.component.scss +7 -7
- package/src/app/component/message/buttons/text-button/text-button.component.scss +8 -8
- package/src/app/component/message/frame/frame.component.scss +1 -1
- package/src/app/component/message/frame/frame.component.ts +1 -1
- package/src/app/component/message/html/html.component.scss +4 -4
- package/src/app/component/message/html/html.component.ts +1 -2
- package/src/app/component/message/image/image.component.scss +1 -1
- package/src/app/component/message/image/image.component.ts +2 -3
- package/src/app/component/message/info-message/info-message.component.html +2 -1
- package/src/app/component/message/info-message/info-message.component.scss +6 -6
- package/src/app/component/message/like-unlike/like-unlike.component.scss +1 -1
- package/src/app/component/message/like-unlike/like-unlike.component.ts +2 -2
- package/src/app/component/message/text/text.component.scss +2 -2
- package/src/app/component/message/text/text.component.ts +1 -1
- package/src/app/component/message-attachment/message-attachment.component.ts +1 -1
- package/src/app/component/selection-department/selection-department.component.scss +6 -6
- package/src/app/component/selection-department/selection-department.component.ts +2 -2
- package/src/app/component/send-button/send-button.component.ts +1 -2
- package/src/app/component/star-rating-widget/star-rating-widget.component.scss +6 -6
- package/src/app/component/star-rating-widget/star-rating-widget.component.ts +2 -2
- package/src/app/pipe/date-ago.pipe.spec.ts +8 -0
- package/src/app/pipe/date-ago.pipe.ts +42 -0
- package/src/app/providers/app-config.service.ts +0 -1
- package/src/app/providers/global-settings.service.ts +3 -31
- package/src/app/providers/star-rating-widget.service.ts +4 -4
- package/src/app/providers/translator.service.ts +3 -11
- package/src/app/providers/waiting.service.ts +2 -2
- package/src/app/sass/_variables.scss +29 -26
- package/src/app/utils/globals.ts +4 -34
- package/src/app/utils/rules.ts +5 -7
- package/src/app/utils/utils.ts +47 -37
- package/src/assets/i18n/en.json +0 -2
- package/src/assets/i18n/es.json +0 -2
- package/src/assets/i18n/fr.json +0 -2
- package/src/assets/i18n/it.json +0 -2
- package/src/assets/twp/index.html +6 -60
- package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +15 -23
- package/src/chat21-core/providers/firebase/firebase-auth-service.ts +21 -20
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +15 -13
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +16 -23
- package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +15 -11
- package/src/chat21-core/providers/firebase/firebase-image-repo.ts +13 -4
- package/src/chat21-core/providers/firebase/firebase-init-service.ts +3 -3
- package/src/chat21-core/providers/firebase/firebase-notifications.ts +11 -9
- package/src/chat21-core/providers/firebase/firebase-presence.service.ts +14 -11
- package/src/chat21-core/providers/firebase/firebase-typing.service.ts +17 -11
- package/src/chat21-core/providers/firebase/firebase-upload.service.ts +12 -9
- package/src/chat21-core/providers/localSessionStorage.ts +2 -15
- package/src/chat21-core/providers/mqtt/chat-service.ts +12 -2
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -34
- package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +4 -6
- package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +1 -11
- package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +13 -7
- package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +3 -3
- package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +3 -3
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
- package/src/chat21-core/utils/user-typing/user-typing.component.scss +3 -3
- package/src/chat21-core/utils/utils.ts +47 -163
- package/src/launch.js +42 -12
- package/src/models/message.ts +0 -23
- package/src/test-new.html +0 -6
- package/src/app/providers/settings-saver.service.spec.ts +0 -17
- package/src/app/providers/settings-saver.service.ts +0 -56
- package/src/app/providers/storage.service.spec.ts +0 -16
- package/src/app/providers/storage.service.ts +0 -220
- package/src/app/utils/translations.ts +0 -122
package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges
|
|
1
|
+
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { Globals } from 'src/app//utils/globals';
|
|
3
3
|
import { AppConfigService } from 'src/app/providers/app-config.service';
|
|
4
|
-
import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
|
|
5
4
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
6
5
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
6
|
+
import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
|
|
7
7
|
|
|
8
8
|
@Component({
|
|
9
9
|
selector: 'chat-conversation-header',
|
|
@@ -48,18 +48,15 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
48
48
|
|
|
49
49
|
isButtonsDisabled = true;
|
|
50
50
|
|
|
51
|
-
// public isTypings = false;
|
|
52
51
|
public isDirect = false;
|
|
53
52
|
public writingMessage: string;
|
|
54
|
-
// public nameUserTypingNow: string;
|
|
55
|
-
private setTimeoutWritingMessages;
|
|
56
53
|
|
|
57
54
|
subscriptions = [];
|
|
58
55
|
|
|
59
56
|
membersConversation = ['SYSTEM'];
|
|
60
57
|
heightStatus: string = 'min'
|
|
61
58
|
|
|
62
|
-
|
|
59
|
+
|
|
63
60
|
private API_URL: string;
|
|
64
61
|
private logger: LoggerService = LoggerInstance.getInstance()
|
|
65
62
|
constructor(
|
|
@@ -82,85 +79,12 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
ngAfterViewInit() {
|
|
85
|
-
// this.isShowSpinner();
|
|
86
82
|
this.logger.debug('[CONV-HEADER] --------ngAfterViewInit: conversation-header-------- ');
|
|
87
|
-
|
|
88
|
-
// --------------------------- //
|
|
89
|
-
// after animation intro
|
|
90
|
-
// setTimeout(() => {
|
|
91
|
-
// this.initAll();
|
|
92
|
-
// this.setFocusOnId('chat21-main-message-context');
|
|
93
|
-
|
|
94
|
-
// this.g.currentConversationComponent = this;
|
|
95
|
-
// if (this.g.newConversationStart === true) {
|
|
96
|
-
// this.onNewConversationComponentInit();
|
|
97
|
-
// this.g.newConversationStart = false;
|
|
98
|
-
// }
|
|
99
|
-
//this.subscriptionTyping();
|
|
100
|
-
// if (this.afConversationComponent) {
|
|
101
|
-
// this.afConversationComponent.nativeElement.focus();
|
|
102
|
-
// }
|
|
103
|
-
this.isButtonsDisabled = false;
|
|
104
|
-
// }, 300);
|
|
105
|
-
this.setSubscriptions();
|
|
106
|
-
|
|
83
|
+
this.isButtonsDisabled = false;
|
|
107
84
|
}
|
|
108
85
|
|
|
109
|
-
|
|
110
|
-
// initializeTyping() {
|
|
111
|
-
// this.logger.debug('[CONV-HEADER] membersconversation', this.membersConversation)
|
|
112
|
-
// this.typingService.isTyping(this.idConversation, this.senderId, this.isDirect);
|
|
113
|
-
|
|
114
|
-
// }
|
|
115
|
-
|
|
116
|
-
// /** */
|
|
117
|
-
private setSubscriptions() {
|
|
118
|
-
// const that = this;
|
|
119
|
-
// const conversationSelected = this.subscriptions.find(item => item.key === this.idConversation);
|
|
120
|
-
// if (!conversationSelected) {
|
|
121
|
-
// const subscribeBSIsTyping = this.typingService.BSIsTyping.subscribe((data: any) => {
|
|
122
|
-
// this.logger.debug('[CONV-HEADER] ***** BSIsTyping *****', data);
|
|
123
|
-
// if (data) {
|
|
124
|
-
// const isTypingUid = data.uid; //support-group-...
|
|
125
|
-
// if (this.idConversation === isTypingUid) {
|
|
126
|
-
// that.subscribeTypings(data);
|
|
127
|
-
// }
|
|
128
|
-
// }
|
|
129
|
-
// });
|
|
130
|
-
// const subscribe = {key: this.idConversation, value: subscribeBSIsTyping };
|
|
131
|
-
// this.subscriptions.push(subscribe);
|
|
132
|
-
// }
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** */
|
|
136
|
-
// subscribeTypings(data: any) {
|
|
137
|
-
// const that = this;
|
|
138
|
-
// try {
|
|
139
|
-
// const key = data.uidUserTypingNow;
|
|
140
|
-
// this.nameUserTypingNow = null;
|
|
141
|
-
// if (data.nameUserTypingNow) {
|
|
142
|
-
// this.nameUserTypingNow = data.nameUserTypingNow;
|
|
143
|
-
// }
|
|
144
|
-
// this.logger.debug('[CONV-HEADER] subscribeTypings data:', data);
|
|
145
|
-
// const userTyping = this.membersConversation.includes(key);
|
|
146
|
-
// if ( !userTyping) {
|
|
147
|
-
// this.isTypings = true;
|
|
148
|
-
// clearTimeout(this.setTimeoutWritingMessages);
|
|
149
|
-
// this.setTimeoutWritingMessages = setTimeout(() => {
|
|
150
|
-
// that.isTypings = false;
|
|
151
|
-
// }, 2000);
|
|
152
|
-
// }
|
|
153
|
-
// } catch (error) {
|
|
154
|
-
// this.logger.error('[CONV-HEADER] error: ', error);
|
|
155
|
-
// }
|
|
156
|
-
|
|
157
|
-
// }
|
|
158
|
-
|
|
159
|
-
|
|
160
86
|
// =========== BEGIN: event emitter function ====== //
|
|
161
87
|
returnHome() {
|
|
162
|
-
// this.appStorageService.removeItem('activeConversation');
|
|
163
|
-
// this.g.setParameter('activeConversation', null, false);
|
|
164
88
|
this.onBack.emit();
|
|
165
89
|
}
|
|
166
90
|
|
|
@@ -174,7 +98,6 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
174
98
|
}
|
|
175
99
|
|
|
176
100
|
closeWidget() {
|
|
177
|
-
//this.g.setParameter('activeConversation', null, false);
|
|
178
101
|
this.onCloseWidget.emit();
|
|
179
102
|
}
|
|
180
103
|
// =========== END: event emitter function ====== //
|
|
@@ -183,12 +106,10 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
183
106
|
const url = this.API_URL + 'public/requests/' + this.idConversation + '/messages-user.html';
|
|
184
107
|
const windowContext = this.windowContext;
|
|
185
108
|
windowContext.open(url, '_blank');
|
|
186
|
-
// this.isMenuShow = false;
|
|
187
109
|
this.onMenuOptionShow.emit(false)
|
|
188
110
|
}
|
|
189
111
|
|
|
190
112
|
toggleSound() {
|
|
191
|
-
//this.isMenuShow = false;
|
|
192
113
|
this.onMenuOptionShow.emit(false)
|
|
193
114
|
this.onSoundChange.emit(!this.soundEnabled)
|
|
194
115
|
}
|
|
@@ -199,7 +120,6 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
199
120
|
|
|
200
121
|
toggleMenu() {
|
|
201
122
|
this.onMenuOptionShow.emit(!this.isMenuShow)
|
|
202
|
-
// this.isMenuShow = !this.isMenuShow;
|
|
203
123
|
}
|
|
204
124
|
|
|
205
125
|
/**
|
|
@@ -218,15 +138,11 @@ export class ConversationHeaderComponent implements OnInit, OnChanges {
|
|
|
218
138
|
/**
|
|
219
139
|
* elimino tutte le sottoscrizioni
|
|
220
140
|
*/
|
|
221
|
-
// tslint:disable-next-line:use-life-cycle-interface
|
|
222
141
|
ngOnDestroy() {
|
|
223
142
|
this.logger.debug('[CONV-HEADER] ngOnDestroy ------------------> this.subscriptions', this.subscriptions);
|
|
224
|
-
//this.appStorageService.removeItem('activeConversation');
|
|
225
|
-
// this.unsubscribe();
|
|
226
143
|
this.unsubescribeAll()
|
|
227
144
|
}
|
|
228
145
|
|
|
229
|
-
|
|
230
146
|
/** */
|
|
231
147
|
private unsubescribeAll() {
|
|
232
148
|
this.logger.debug('[CONV-HEADER] unsubescribeAll: ', this.subscriptions);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z" />
|
|
11
11
|
<title id="altIconTitle">{{ translationMap?.get('CLOSE') }}</title>
|
|
12
12
|
</svg>
|
|
13
|
-
|
|
13
|
+
</button>
|
|
14
14
|
|
|
15
15
|
<!-- ICON OPEN EXTERNAL -->
|
|
16
16
|
<button *ngIf="openExternalLinkButton" tabindex="1530" class="c21-header-button c21-right c21-button-clean" (click)="returnOpenExternal()">
|
|
@@ -18,28 +18,19 @@
|
|
|
18
18
|
width="24px" height="24px" viewBox="0 0 24 24">
|
|
19
19
|
<path d="M0 0h24v24H0z" fill="none"/>
|
|
20
20
|
<path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/>
|
|
21
|
-
<!-- <title id="altIconTitle">{{ translationMap?.get('CLOSE') }}</title> -->
|
|
22
21
|
</svg>
|
|
23
|
-
|
|
22
|
+
</button>
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
</div>
|
|
24
|
+
<!-- TITLE HEADER -->
|
|
25
|
+
<div class="c21-title" [ngStyle]="{'color': stylesMap?.get('foregroundColor') }">
|
|
26
|
+
<div class="titleText">{{button?.value}}</div>
|
|
27
|
+
</div>
|
|
29
28
|
</div>
|
|
30
29
|
<div class="c21-iframe">
|
|
31
30
|
<div *ngIf="!hideSpinner" class="lds-roller">
|
|
32
31
|
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
|
|
33
32
|
</div>
|
|
34
|
-
|
|
35
|
-
<div class="chat21-spinner active" id="chat21-spinner">
|
|
36
|
-
<div class="chat21-bounce1"></div>
|
|
37
|
-
<div class="chat21-bounce2"></div>
|
|
38
|
-
<div class="chat21-bounce3"></div>
|
|
39
|
-
<span>loading</span>
|
|
40
|
-
</div>
|
|
41
|
-
</span> -->
|
|
42
|
-
<!-- referrerpolicy="no-referrer" -->
|
|
33
|
+
|
|
43
34
|
<iframe id="contentFrame" #iframe allowfullscreen title="" width="100%" height="100%" style= "border:none;" [src] = "url" (load)="onIframeLoaded($event)" (error)="onError($event)"></iframe>
|
|
44
35
|
</div>
|
|
45
36
|
</div>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
1
2
|
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
|
2
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
-
import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
|
|
4
|
-
import { trigger, style, animate, transition } from '@angular/animations';
|
|
5
4
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
6
5
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
6
|
+
import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
|
|
7
7
|
|
|
8
8
|
@Component({
|
|
9
9
|
selector: 'chat-internal-frame',
|
|
@@ -20,32 +20,8 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
|
20
20
|
style({transform: 'translateX(0)', opacity: 1}),
|
|
21
21
|
animate('400ms', style({transform: 'translateX(100%)', opacity: 0}))
|
|
22
22
|
])
|
|
23
|
-
// state('in', style({
|
|
24
|
-
// transform: 'translateX(100%)',
|
|
25
|
-
// opacity: 0
|
|
26
|
-
// })),
|
|
27
|
-
// state('out', style({
|
|
28
|
-
// transform: 'translateX(0)',
|
|
29
|
-
// opacity: 1
|
|
30
|
-
// })),
|
|
31
|
-
// transition('in => out', animate('400ms', style({transform: 'translateX(0)', opacity: 1}))),
|
|
32
|
-
// transition('out => in', animate('400ms', style({transform: 'translateX(100%)', opacity: 0})))
|
|
33
23
|
]
|
|
34
24
|
)
|
|
35
|
-
// trigger('enterAnimation', [
|
|
36
|
-
// state('open', style({
|
|
37
|
-
// opacity: 1,
|
|
38
|
-
// })),
|
|
39
|
-
// state('closed', style({
|
|
40
|
-
// opacity: 1,
|
|
41
|
-
// })),
|
|
42
|
-
// transition('closed => open', [
|
|
43
|
-
// animate('1s', style({transform: 'translateX(0)', opacity: 1}))
|
|
44
|
-
// ]),
|
|
45
|
-
// transition('open => closed', [
|
|
46
|
-
// animate('0.5s', style({transform: 'translateX(100%)', opacity: 0}))
|
|
47
|
-
// ]),
|
|
48
|
-
// ]),
|
|
49
25
|
]
|
|
50
26
|
})
|
|
51
27
|
export class ConversationInternalFrameComponent implements OnInit {
|
|
@@ -37,8 +37,6 @@
|
|
|
37
37
|
|
|
38
38
|
<div id="c21-footer">
|
|
39
39
|
<div class="visible-text-area">
|
|
40
|
-
<!-- isFilePendingToUpload || -->
|
|
41
|
-
<!-- [attr.disabled] = "isFilePendingToLoad" -->
|
|
42
40
|
<textarea
|
|
43
41
|
start-focus-chat21-conversation-preview-component
|
|
44
42
|
inputTextArea
|
|
@@ -55,18 +53,10 @@
|
|
|
55
53
|
(paste)="onPaste($event)"
|
|
56
54
|
placeholder="{{ translationMap?.get('LABEL_PLACEHOLDER') }}">
|
|
57
55
|
</textarea>
|
|
58
|
-
|
|
59
|
-
<!-- <chat-message-text-area
|
|
60
|
-
[text]="textInputTextArea"
|
|
61
|
-
(onChangeTextArea)="returnText($event)"
|
|
62
|
-
></chat-message-text-area> -->
|
|
63
|
-
|
|
56
|
+
|
|
64
57
|
</div>
|
|
65
58
|
<div tabindex="-1" class="chat21-textarea-button" id="chat21-button-send" [class.active]="!isFilePendingToLoad " (click)="onSendPressed($event)">
|
|
66
59
|
<span class="v-align-center">
|
|
67
|
-
<!-- <svg xmlns="http://www.w3.org/2000/svg" [ngStyle]="{'fill': stylesMap?.get('themeColor') }" width="24" height="24" viewBox="0 0 28 28">
|
|
68
|
-
<path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" />
|
|
69
|
-
</svg> -->
|
|
70
60
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
71
61
|
<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"/>
|
|
72
62
|
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@import 'src/app/sass/variables';
|
|
1
|
+
// @import 'src/app/sass/variables';
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
:host .c21-content ::ng-deep > chat-image {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
--modal-width: 80%;
|
|
23
23
|
|
|
24
24
|
--content-height: 160px;
|
|
25
|
-
--border-radius: #{
|
|
25
|
+
--border-radius: #{var(--chat-footer-border-radius)};
|
|
26
26
|
|
|
27
27
|
background-color: rgba(0,0,0,0.4);
|
|
28
28
|
height: 100%;
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
resize: horizontal;
|
|
195
195
|
overflow-y: auto;
|
|
196
196
|
box-sizing: border-box;
|
|
197
|
-
color:
|
|
197
|
+
color: var(--black);
|
|
198
198
|
min-width: 100%;
|
|
199
199
|
outline: 0;
|
|
200
200
|
resize: none;
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
.visible-text-area {
|
|
248
248
|
pointer-events: auto;
|
|
249
249
|
border-radius: 10px;
|
|
250
|
-
background-color:
|
|
250
|
+
background-color: var(--chat-footer-background-color);
|
|
251
251
|
-webkit-box-flex: 1;
|
|
252
252
|
width: 88%;
|
|
253
253
|
}
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
pointer-events: auto;
|
|
257
257
|
}
|
|
258
258
|
.chat21-textarea-button {
|
|
259
|
-
fill:
|
|
259
|
+
fill: var(--icon-fill-color);
|
|
260
260
|
pointer-events: auto;
|
|
261
261
|
}
|
|
262
262
|
|
package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, OnInit,
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
3
|
import { MIN_WIDTH_IMAGES } from 'src/app/utils/constants';
|
|
4
4
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
@@ -47,7 +47,6 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
47
47
|
ngOnInit() {
|
|
48
48
|
this.logger.log('[LOADER-PREVIEW-PAGE] Hello!', this.textInputTextArea);
|
|
49
49
|
this.setFocusOnId('chat21-main-message-context-preview')
|
|
50
|
-
// tslint:disable-next-line: prefer-for-of
|
|
51
50
|
// this.selectedFiles = this.files;
|
|
52
51
|
for (let i = 0; i < this.attachments.length; i++) {
|
|
53
52
|
this.logger.log('[LOADER-PREVIEW-PAGE] ngOnInit', this.attachments[i])
|
|
@@ -171,15 +170,13 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
171
170
|
onTextAreaChange(){
|
|
172
171
|
this.resizeInputField();
|
|
173
172
|
this.resizeModalHeight()
|
|
174
|
-
// this.setWritingMessages(this.textInputTextArea)
|
|
175
173
|
}
|
|
176
174
|
|
|
177
175
|
setFocusOnId(id) {
|
|
178
176
|
setTimeout(function () {
|
|
179
177
|
const textarea = document.getElementById(id);
|
|
180
178
|
if (textarea) {
|
|
181
|
-
|
|
182
|
-
textarea.setAttribute('value', ' ');
|
|
179
|
+
textarea.setAttribute('value', '');
|
|
183
180
|
textarea.focus();
|
|
184
181
|
}
|
|
185
182
|
}, 500);
|
|
@@ -188,7 +185,6 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
188
185
|
resizeInputField() {
|
|
189
186
|
try {
|
|
190
187
|
const target = document.getElementById('chat21-main-message-context-preview') as HTMLInputElement;
|
|
191
|
-
// that.logger.debug('[CONV-FOOTER] H:: this.textInputTextArea', (document.getElementById('chat21-main-message-context') as HTMLInputElement).value , target.style.height, target.scrollHeight, target.offsetHeight, target.clientHeight);
|
|
192
188
|
target.style.height = '100%';
|
|
193
189
|
if (target.value === '\n') {
|
|
194
190
|
target.value = '';
|
|
@@ -198,18 +194,11 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
198
194
|
target.style.minHeight = this.HEIGHT_DEFAULT;
|
|
199
195
|
|
|
200
196
|
} else {
|
|
201
|
-
// that.logger.debug('[CONV-FOOTER] PASSO 3');
|
|
202
197
|
target.style.height = this.HEIGHT_DEFAULT;
|
|
203
|
-
// segno sto scrivendo
|
|
204
|
-
// target.offsetHeight - 15 + 'px';
|
|
205
198
|
}
|
|
206
|
-
//this.setWritingMessages(target.value);
|
|
207
|
-
// this.onChangeTextArea.emit({textAreaEl: target, minHeightDefault: this.HEIGHT_DEFAULT})
|
|
208
199
|
} catch (e) {
|
|
209
200
|
this.logger.error('[LOADER-PREVIEW-PAGE] > Error :' + e);
|
|
210
201
|
}
|
|
211
|
-
// tslint:disable-next-line:max-line-length
|
|
212
|
-
// that.logger.debug('[CONV-FOOTER] H:: this.textInputTextArea', this.textInputTextArea, target.style.height, target.scrollHeight, target.offsetHeight, target.clientHeight);
|
|
213
202
|
}
|
|
214
203
|
|
|
215
204
|
|
|
@@ -235,7 +224,6 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
235
224
|
}
|
|
236
225
|
|
|
237
226
|
private restoreTextArea() {
|
|
238
|
-
// that.logger.debug('[CONV-FOOTER] AppComponent:restoreTextArea::restoreTextArea');
|
|
239
227
|
this.resizeInputField();
|
|
240
228
|
const textArea = (<HTMLInputElement>document.getElementById('chat21-main-message-context-preview'));
|
|
241
229
|
this.textInputTextArea = ''; // clear the textarea
|
|
@@ -257,11 +245,6 @@ export class ConversationPreviewComponent implements OnInit {
|
|
|
257
245
|
this.textInputTextArea = ((document.getElementById('chat21-main-message-context-preview') as HTMLInputElement).value);
|
|
258
246
|
if (keyCode === 13) {
|
|
259
247
|
if (this.textInputTextArea && this.textInputTextArea.trim() !== '') {
|
|
260
|
-
// that.logger.debug('[CONV-FOOTER] sendMessage -> ', this.textInputTextArea);
|
|
261
|
-
// this.resizeInputField();
|
|
262
|
-
// this.messagingService.sendMessage(msg, TYPE_MSG_TEXT);
|
|
263
|
-
// this.setDepartment();
|
|
264
|
-
// this.textInputTextArea = replaceBr(this.textInputTextArea);
|
|
265
248
|
this.onSendAttachment.emit(this.textInputTextArea);
|
|
266
249
|
this.restoreTextArea();
|
|
267
250
|
}
|
|
@@ -1,45 +1,23 @@
|
|
|
1
1
|
|
|
2
2
|
<!-- ******* EYE-CATCHER CARD - DISPLAYED ONLY IS-MOBILE IS FALSE ******** -->
|
|
3
3
|
<div *ngIf="!g.isOpenNewMessage" class="eye-catcher-card scale-in-center"
|
|
4
|
-
[class.mobile]="g.isMobile"
|
|
5
|
-
[ngClass]="{'c21-align-left' : g.align === 'left', 'c21-align-right' : g.align !== 'left'}"
|
|
6
|
-
[ngStyle]="{ 'display':g.displayEyeCatcherCard, 'bottom': g.marginY+'px', 'left':(g.align==='left')?g.marginX+'px':'', 'right':(g.align==='right')?g.marginX+'px':'' }"
|
|
7
|
-
(mouseenter) ="mouseEnter()" (mouseleave) ="mouseLeave()">
|
|
4
|
+
[class.mobile]="g.isMobile"
|
|
5
|
+
[ngClass]="{'c21-align-left' : g.align === 'left', 'c21-align-right' : g.align !== 'left'}"
|
|
6
|
+
[ngStyle]="{ 'display':g.displayEyeCatcherCard, 'bottom': g.marginY+'px', 'left':(g.align==='left')?g.marginX+'px':'', 'right':(g.align==='right')?g.marginX+'px':'' }">
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<!-- ******* EYE-CATCHER CLOSE BTN IF IS-MOBILE IS TRUE ******* -->
|
|
12
|
-
<!-- <div *ngIf="!g.isMobile">
|
|
13
|
-
<div class="eye-catcher-card-close-btn-img-is-mobile-wrapper" (click)="closeEyeCatcherCardWhenMobile()"
|
|
14
|
-
[ngStyle]="{'display':displayEyeCatcherCardCloseBtnIsMobileWrapper}">
|
|
15
|
-
<img class="eye-catcher-card-close-btn-img-is-mobile" src="{{g.baseLocation}}/assets/images/tiledesk-chat-close-dark-gray.svg"/>
|
|
16
|
-
</div>
|
|
17
|
-
</div> -->
|
|
18
|
-
|
|
19
|
-
<!-- <button (click)="rotate()">Press me to rotate</button> -->
|
|
20
|
-
<!-- <div class="eye-catcher_row" (mouseenter) ="mouseEnter()" (mouseleave) ="mouseLeave()" (click)="openChatFromEyeCatcherCard()"> -->
|
|
21
8
|
<div class="eye-catcher_row">
|
|
22
9
|
|
|
23
10
|
<!-- ******* EYE-CATCHER CLOSE BTN IF IS-MOBILE IS FALSE ******** -->
|
|
24
|
-
|
|
25
|
-
<div class="eye-catcher-card-close-btn
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<svg class="eye-catcher-card-close-btn-img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="24px" height="24px">
|
|
31
|
-
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
32
|
-
<path d="M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"/>
|
|
33
|
-
</svg>
|
|
34
|
-
<!-- <img class="eye-catcher-card-close-btn-img" src="{{g.baseLocation}}/assets/images/tiledesk-chat-close.svg"/> -->
|
|
35
|
-
</div>
|
|
11
|
+
<div class="eye-catcher-card-close-btn-wrapper">
|
|
12
|
+
<div class="eye-catcher-card-close-btn" (click)="closeEyeCatcherCard()">
|
|
13
|
+
<svg class="eye-catcher-card-close-btn-img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="24px" height="24px">
|
|
14
|
+
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
15
|
+
<path d="M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"/>
|
|
16
|
+
</svg>
|
|
36
17
|
</div>
|
|
37
|
-
|
|
18
|
+
</div>
|
|
38
19
|
|
|
39
20
|
<div class="eye-catcher_column ec_left" (click)="openChatFromEyeCatcherCard()">
|
|
40
|
-
<!-- <div class="eye-catcher-card-img-wrapper" [ngStyle]="{'background-color': g.themeColor }">
|
|
41
|
-
<img class="chat21-card-img" src="{{g.baseLocation}}/assets/images/tiledesk-chat-ballon-big-badge.svg"/>
|
|
42
|
-
</div> -->
|
|
43
21
|
<div [@rotatedState]='state' class="eye-catcher-card-emoticons-wrapper">
|
|
44
22
|
<span *ngIf="emoticon" class="chat21-card-emoticons">{{emoticon}}</span>
|
|
45
23
|
</div>
|
|
@@ -49,16 +27,6 @@
|
|
|
49
27
|
<div class="eye-catcher-card-text-wrapper">
|
|
50
28
|
<p class="eye-catcher-card-title">{{title}}</p>
|
|
51
29
|
|
|
52
|
-
<!-- Need Help? -->
|
|
53
|
-
<!-- <p *ngIf="g.calloutTitle !== ''; else calloutTitle_placeholder" class="eye-catcher-card-title">
|
|
54
|
-
{{ g.calloutTitle }}
|
|
55
|
-
</p>
|
|
56
|
-
<ng-template #calloutTitle_placeholder>
|
|
57
|
-
<p class="eye-catcher-card-title">
|
|
58
|
-
{{ g.CALLOUT_TITLE_PLACEHOLDER }}
|
|
59
|
-
</p>
|
|
60
|
-
</ng-template> -->
|
|
61
|
-
|
|
62
30
|
<!-- Click here and start chatting with us! -->
|
|
63
31
|
<p *ngIf="g.calloutMsg !== ''; else calloutMsg_placeholder" class="eye-catcher-card-msg">
|
|
64
32
|
{{ g.calloutMsg }}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Component, OnInit, Output
|
|
1
|
+
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
|
|
2
2
|
import { Globals } from '../../utils/globals';
|
|
3
|
-
import { isEmoji } from '../../utils/utils';
|
|
4
3
|
|
|
5
4
|
|
|
6
|
-
import { trigger
|
|
5
|
+
import { trigger } from '@angular/animations';
|
|
7
6
|
import { LoggerService } from '../../../chat21-core/providers/abstract/logger.service';
|
|
8
7
|
import { LoggerInstance } from '../../../chat21-core/providers/logger/loggerInstance';
|
|
9
8
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component, EventEmitter, Input, OnInit, Output, SimpleChange } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import * as parser from 'accept-language-parser';
|
|
2
4
|
import { FormArray } from 'src/chat21-core/models/formArray';
|
|
3
|
-
import { Component, OnInit, SimpleChange, EventEmitter, Output, Input, ChangeDetectorRef } from '@angular/core';
|
|
4
|
-
import { isString } from 'util';
|
|
5
5
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
6
|
+
import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
|
|
6
7
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
7
8
|
import { validateRegex } from 'src/chat21-core/utils/utils';
|
|
8
|
-
import * as parser from 'accept-language-parser'
|
|
9
|
-
import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
|
|
10
9
|
|
|
11
10
|
@Component({
|
|
12
11
|
selector: 'chat-form-builder',
|
|
@@ -32,10 +32,9 @@ input[type="checkbox"] {
|
|
|
32
32
|
border: 1px solid var(--themeColor);
|
|
33
33
|
border-radius:3px;
|
|
34
34
|
-webkit-border-radius:3px;
|
|
35
|
-
|
|
35
|
+
appearance: none;
|
|
36
36
|
-webkit-transition: box-shadow 200ms;
|
|
37
37
|
transition: box-shadow 200ms;
|
|
38
|
-
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import { FormGroupDirective } from '@angular/forms';
|
|
3
|
-
import { FormGroup } from '@angular/forms';
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { FormGroup, FormGroupDirective } from '@angular/forms';
|
|
4
3
|
import { FormArray } from '../../../../../chat21-core/models/formArray';
|
|
5
4
|
|
|
6
5
|
@Component({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@import 'src/app/sass/variables';
|
|
1
|
+
// @import 'src/app/sass/variables';
|
|
2
2
|
|
|
3
3
|
:host {
|
|
4
4
|
--foregroundColor: #0000;
|
|
@@ -30,16 +30,6 @@
|
|
|
30
30
|
background-color: #ffffff;
|
|
31
31
|
vertical-align: middle;
|
|
32
32
|
}
|
|
33
|
-
// input {
|
|
34
|
-
// display: block;
|
|
35
|
-
// padding: 11px 10px 8px 10px;
|
|
36
|
-
// color: #616161;
|
|
37
|
-
// font-size: 1.3em;
|
|
38
|
-
// font-weight: 300;
|
|
39
|
-
// line-height: 1.2em;
|
|
40
|
-
// -webkit-box-shadow: none;
|
|
41
|
-
// box-shadow: none;
|
|
42
|
-
// }
|
|
43
33
|
input::placeholder {
|
|
44
34
|
color: rgb(179, 182, 184);
|
|
45
35
|
font-weight: initial;
|
|
@@ -102,11 +92,11 @@ input {
|
|
|
102
92
|
background-size: 0 2px,100% 1px;
|
|
103
93
|
background-repeat: no-repeat;
|
|
104
94
|
background-position: center bottom,center calc(100% - 1px);
|
|
105
|
-
background-color
|
|
95
|
+
background-color: var(--chat-footer-background-color);
|
|
106
96
|
transition: background 0s ease-out;
|
|
107
97
|
float: none;
|
|
108
98
|
box-shadow: none;
|
|
109
|
-
border-radius:
|
|
99
|
+
border-radius: var(--chat-footer-border-radius);
|
|
110
100
|
font-weight: 400;
|
|
111
101
|
height: 48px;
|
|
112
102
|
padding: 0px 16px;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, ElementRef, Input, OnInit, SimpleChange, ViewChild, OnChanges, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChange, ViewChild } from '@angular/core';
|
|
3
2
|
import { FormGroup, FormGroupDirective } from '@angular/forms';
|
|
4
3
|
import { FormArray } from '../../../../../chat21-core/models/formArray';
|
|
5
4
|
|
|
@@ -1,17 +1,4 @@
|
|
|
1
1
|
<form [formGroup]="form">
|
|
2
|
-
<!-- <div class="c21-input-container" >
|
|
3
|
-
<input
|
|
4
|
-
class="form-control"
|
|
5
|
-
tabindex="1411"
|
|
6
|
-
type="text"
|
|
7
|
-
id="form-field-name"
|
|
8
|
-
[formControlName]="element.name"
|
|
9
|
-
[placeholder]="element.label"
|
|
10
|
-
[ngClass]="{'errors': form.controls[element.name].errors && form.controls[element.name].touched }">
|
|
11
|
-
<!- - <small [hidden]="form.controls[element.name].valid || form.controls[element.name].pristine">
|
|
12
|
-
Field required
|
|
13
|
-
</small> - ->
|
|
14
|
-
</div> -->
|
|
15
2
|
<div class="form-group label-floating" id="div_input" #div_input
|
|
16
3
|
[ngClass]="{'is-empty': !form?.controls[element.name]?.value}">
|
|
17
4
|
<label class="control-label">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@import 'src/app/sass/variables';
|
|
1
|
+
// @import 'src/app/sass/variables';
|
|
2
2
|
|
|
3
3
|
:host {
|
|
4
4
|
--foregroundColor: #0000;
|
|
@@ -96,14 +96,14 @@ textarea {
|
|
|
96
96
|
background-size: 0 2px,100% 1px;
|
|
97
97
|
background-repeat: no-repeat;
|
|
98
98
|
background-position: center bottom,center calc(100% - 1px);
|
|
99
|
-
background-color:
|
|
99
|
+
background-color: var(--chat-footer-background-color);
|
|
100
100
|
transition: background 0s ease-out;
|
|
101
101
|
float: none;
|
|
102
102
|
box-shadow: none;
|
|
103
|
-
border-radius:
|
|
103
|
+
border-radius: var(--chat-footer-border-radius);
|
|
104
104
|
font-weight: 400;
|
|
105
105
|
// height: 36px;
|
|
106
|
-
padding:
|
|
106
|
+
padding: 8px 16px;
|
|
107
107
|
font-size: 14px;
|
|
108
108
|
line-height: 1.42857143;
|
|
109
109
|
display: block;
|